Solidity
僅在專用網路上出現 OpenZeppelin MintableToken 錯誤
我通過 geth 命令啟動了一個新的專用網路。
geth --networkid "198" --nodiscover --datadir "~/test-geth" --rpc --rpcaddr "0.0.0.0" --rpcport "8545" --rpccorsdomain "*" --rpcvhosts "*" --rpcapi web3,eth,personal,miner,net,txpool,debug --unlock 0,1 --password /home/user/.gethpasswd --mine --minerthreads 1 --targetgaslimit 6721975 --gasprice "100000"
並將我的令牌部署到這個網路。“松露編譯”和“松露遷移”成功。但是 sendTransaction 每次都失敗……
我用松露調試器進行了調試。這是“sendTransaction”的結果。
MintedCrowdsale.sol: 24: { 25: // Potentially dangerous assumption about the type of the token. 26: require(MintableToken(address(token)).mint(_beneficiary, _tokenAmount)); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ debug(development:0xb76ce508...)> i Transaction halted with a RUNTIME ERROR. This is likely due to an intentional halting expression, like assert(), require() or revert(). It can also be due to out-of-gas exceptions. Please inspect your transaction parameters and contract code to determine the meaning of this error.
我認為這個錯誤可能是由於“transferOwnership”失敗而發生的,但是松露調試器說“transferOwnership”成功了。
而且,奇怪的是,使用 ganache-cli 或 Ropsten 測試網時沒有出現錯誤……
我只在 geth 命令建立的專用網路上收到錯誤。
請告訴我是否有人對這個問題有建議。
現在我有一個解決方案。
我的創世區塊設置錯誤。
這個設置對我來說很好。
{ "config": { "chainId": 198, "HomesteadBlock": 0, "DAOForkBlock": 0, "DAOForkSupport": true, "EIP150Block": 0, "EIP155Block": 0, "EIP158Block": 0, "ByzantiumBlock": 0 }, "nonce": "0x0000000000000042", "timestamp": "0x0", "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "extraData": "", "gasLimit": "0x8000000", "difficulty": "0x4000", "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000", "coinbase": "0x3333333333333333333333333333333333333333", "alloc": {} }
而且,在 migrations/2_deploy_contracts.js
module.exports = function(deployer, network, accounts) { const wallet = accounts[0];
導致gaslimit錯誤。
module.exports = function(deployer, network, accounts) { const wallet = "<your address>";
沒關係。