Ethereum 坚固性:来自其他智能合约的调用修饰符

Ethereum 坚固性:来自其他智能合约的调用修饰符,ethereum,solidity,Ethereum,Solidity,假设我有一个带有一系列函数和修改器的代币智能合约,还有另一个众筹智能合约。 在我的众筹智能合约中引用代币智能合约允许我调用代币功能。 然而。。。我无法使用令牌智能合约中的修饰符 contract Crowdsale is Token { token private _token; constructor (ERC20 token) public { require(address(token) != address(0)); _token =

假设我有一个带有一系列函数和修改器的代币智能合约,还有另一个众筹智能合约。 在我的众筹智能合约中引用代币智能合约允许我调用代币功能。 然而。。。我无法使用令牌智能合约中的修饰符

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 {

    }

}

这正常吗?如果有,是否有解决办法?

我当前的解决办法如下: -在我的令牌智能合约中,我添加了一个“中间”函数。该函数直接从我的令牌在修饰符中调用。 -在我的众筹智能合约中,我复制了修饰符,调用其中的中间函数

这样,每当我想更新来自原始智能合约的所有修改器时,我所要做的就是编辑“中间”函数


该方法的默认设置是“中间函数”需要设置为public,以便从任何其他智能合约调用,因此在选择该方法时要小心。

我当前的解决方法如下: -在我的令牌智能合约中,我添加了一个“中间”函数。该函数直接从我的令牌在修饰符中调用。 -在我的众筹智能合约中,我复制了修饰符,调用其中的中间函数

这样,每当我想更新来自原始智能合约的所有修改器时,我所要做的就是编辑“中间”函数


该方法的默认设置是“中间函数”需要设置为public,以便从任何其他智能合约调用,因此在选择该方法时要小心。

是否使用了继承?你能显示代码吗?@AbdullahAziz我刚刚在那里添加了一点代码,谢谢你的帮助!还显示令牌的代码。让我看看修饰符。我认为令牌的代码并不重要,因为错误是“未声明的标识符”。似乎修饰符是严格私有的,而函数的范围可以设置为public或任何我们想要的。您使用了继承吗?你能显示代码吗?@AbdullahAziz我刚刚在那里添加了一点代码,谢谢你的帮助!还显示令牌的代码。让我看看修饰符。我认为令牌的代码并不重要,因为错误是“未声明的标识符”。似乎修饰符是严格私有的,而函数的范围可以设置为public或任何我们想要的。