例如,这里有两个合同:
因此,问题是,我应该在第二个智能契约中更改什么,以便我可以使用在第一个智能契约中创建的令牌?
我的想法是有一个“国家”(工厂)智能合同,创造自己的令牌,并产生其他“城市”合同。我的目标是,“城市”合同能够买卖在“国家”合同中创造的代币。下面是一个示例代码。
import "./ERC20.sol";
contract SmartContract1 {
ERC20Basic private token;
constructor () public {
token = new ERC20Basic(10000);
owner = msg.sender;
}
function Factory() public {
address new_contract_address = address (new SmartContract2(msg.sender));
}
}
contract SmartContract2 {
address public owner;
constructor (address _direccion) public {
owner = _direccion;
}
}
发布于 2023-01-19 08:13:14
取决于你所说的“使用”是什么意思。如果只想调用其函数,可以导入IERC20接口并按如下方式调用其函数:
(smartContract1Address).transferFrom(from,to,amount);
链接:
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/IERC20.sol
发布于 2023-01-19 11:14:42
您可以创建一个修饰符来访问这些令牌契约。您需要的是它的接口和工厂合同中的一些功能来管理子合同的状态。
contract Factory {
event NewToken(address)
function createToken() returns bool{
Token token = new Token(address(this))
emit NewToken(address(token))
}
}
contract Token {
address factory;
constructor(address _factory){
factory = _factory;
}
modifier isFactory {
if(msg.sender !== factory){
revert("Only the factory can access this");
}
_;
}
}
https://ethereum.stackexchange.com/questions/143262
复制相似问题