比方说,我有一个带有一系列功能和修饰符的令牌智能合约,还有另一个众包智能合约。 在我的众包智能合约中引用令牌智能合约可让我调用令牌功能。 但是...我无法使用令牌智能合约中的修饰符。
contract Crowdsale is Token {
token private _token;
constructor (ERC20 token) public {
require(address(token) != address(0));
_token = token;
}
// this one works
function test(address account) public view returns (uint256) {
_token.functionFromToken(account);
}
// This does not work because of modifierInToken
function test2(address account) public modifierInToken {
}
}
正常吗?如果是这样,是否有解决方法?
答案 0 :(得分:0)
我当前的解决方法是: -在令牌智能合约中,我添加了“中间”功能。该函数在我的令牌中直接在修饰符中调用。 -在我的智能销售合约中,我复制了修饰符,并在其中调用了中间函数。
这样,每当我要更新来自原始智能合约的所有修改器时,我要做的就是编辑“中间”功能。
该方法的默认设置是需要将“中间功能”设置为public才能从其他智能合约中调用,因此请谨慎选择该方法。