当我从remix部署合同时,geth显示“合同创建代码存储不足”

时间:2019-01-27 02:08:59

标签: ethereum solidity remix

我使用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

出什么问题了?

1 个答案:

答案 0 :(得分:0)

如果使用remix进行部署,则存在一个名为gas limit的字段。如果您的汽油限额为3000000,那应该足够了,当我在混音中部署您的合同时,费用远不止于此。

此外,由于您说过要在私有区块链上部署,因此这可能与那里的天然气成本有关。尝试在remix JavascriptVM中进行部署,以查看其是否有效(在我的情况下有效)。如果可行,请尝试在您的私有区块链上部署时增加气体限制。