2

我使用 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 ether,但它显示相同的错误。

> eth.getBalance(eth.accounts[0]);
315000000000000000000

问题是什么?

4

1 回答 1

-1

如果您使用 remix 进行部署,则会有一个名为gas limit. 如果你的 gas 限制是 3000000 应该足够了,当我在 remix 上部署你的合约时,它的成本要低得多。

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

于 2019-01-27T17:32:55.863 回答