我使用geth创建了一个专用网络。 并从remix(浏览器)部署合同。 它显示以下错误。
genesis.json是这个。
{
"config": {
"homesteadBlock": 0
},
"nonce": "0x0000000000000042",
"timestamp": "0x0",
"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"gasLimit": "0x8000000",
"difficulty": "0x4000",
"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
"alloc": {}
}
然后我创建了2个帐户,并通过此代码运行网络。
geth --identity "sampleNode" --rpc --rpcport 8545 --rpcapi "web3,eth,net,personal" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --datadir "~/eth-private-net/" --nodiscover --networkid 10 --unlock 0,1 --verbosity 6
我部署了合同。
pragma solidity ^0.5.0;
contract SingleNumRegister {
uint storedData;
function set(uint x) public{
storedData = x;
}
function get() public view returns (uint retVal){
return storedData;
}
}
之后,它会在geth控制台日志上显示错误。
DEBUG[01-27|11:05:50.009] VM returned with error err="contract creation code storage out of gas"
我通过挖矿获得了eth,并且该帐户的专用网络上有315个以太币,但是显示了相同的错误。
> eth.getBalance(eth.accounts[0]);
315000000000000000000
出什么问题了?
答案 0 :(得分:0)
如果使用remix进行部署,则存在一个名为gas limit
的字段。如果您的汽油限额为3000000,那应该足够了,当我在混音中部署您的合同时,费用远不止于此。
此外,由于您说过要在私有区块链上部署,因此这可能与那里的天然气成本有关。尝试在remix JavascriptVM中进行部署,以查看其是否有效(在我的情况下有效)。如果可行,请尝试在您的私有区块链上部署时增加气体限制。