假设我有一个具有一系列函数和修饰符的令牌智能合约,以及另一个众销智能合约。在我的众销智能合约中引用令牌智能合约允许我调用令牌函数。然而..。我不能使用令牌智能合约中的修饰符。
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 {
}
}这正常吗?如果是这样的话,有什么变通的办法吗?
发布于 2019-03-25 23:41:19
我目前的解决方法如下:-在我的令牌智能合约中,我添加了一个“中间”函数。该函数直接在我的标记中的修饰符中调用。-在我的众销智能合约中,我复制了修饰符,调用了其中的中间函数。
这样,每当我想要更新来自原始智能合约的所有修饰符时,我所要做的就是编辑"intermediate“函数。
该方法的默认设置是“中间函数”需要设置为public才能从任何其他智能合约中调用,因此在选择该方法时要小心。
https://stackoverflow.com/questions/55327233
复制相似问题