I deployed a ERC20Mintable token in truffle environment(the source file is ERC20Mintable.sol).
The mint function is declared with onlyMinter modifer:
contract ERC20Mintable is ERC20, MinterRole { function mint(address account, uint256 amount) public onlyMinter returns (bool) { _mint(account, amount); return true; } } Minter role info is:
truffle(develop)> instance.isMinter(accounts[0]) true truffle(develop)> instance.isMinter(accounts[1]) false truffle(develop)> instance.isMinter(accounts[2]) false truffle(develop)> instance.isMinter(accounts[3]) false However,when I try to mint token, I found the modifier can not take effect to control the function call right:
For the first account:
truffle(develop)> instance.mint(accounts[0],1000) { tx: '0x323ff19c7b79cbe545914465c9bda87aa5169cdaa3be6f4ccbebcd7e7eb76617', receipt: { transactionHash: ... truffle(develop)> instance.totalSupply() <BN: 3e8>//1000 For the second account:
truffle(develop)> instance.mint(accounts[1],1000) { tx: '0xc13da9ca6ba8b74e998b4b158eb1be02208e2bc8f08c789f4a6a306bedadc7a1', receipt: { transactionHash: truffle(develop)> instance.totalSupply() <BN: 7d0>//2000 truffle(develop)> instance.balanceOf(accounts[0]) <BN: 3e8>//1000 truffle(develop)> instance.balanceOf(accounts[1]) <BN: 3e8>//1000 truffle(develop)> instance.balanceOf(accounts[2]) <BN: 0> From the result, every account is able to mint token, onlyMinter has no capability to control function call role.
How can I fix the problem? Thanks.