0

我正在尝试使用 Ethereum Wallet client (mist) 在专用网络中部署智能合约。虽然我有足够的资金,但应用程序抱怨我没有足够的资金来支付 * gas price+value。

智能合约代码:

pragma solidity ^0.4.18;

contract HelloWorld {
  uint256 counter = 0;

  /* Constructor */
  function Increase() public {
    counter++;
  }

  function Decrease() public {
    counter--;
  }

  function GetCounter() public constant returns(uint256){
    return counter;
  }
}

** Genesis.json **

{ 
  "config": { 
    "chainId": 0, 
    "homesteadBlock": 0, 
    "eip155Block": 0, 
    "eip158Block": 0 
  }, 
  "alloc" : {}, 
  "coinbase" : "0x0000000000000000000000000000000000000000", 
  "difficulty" : "0x20000", 
  "extraData" : "", 
  "gasLimit" : "0x2fefd8", 
  "nonce" : "0x0000000000000041", 
  "mixhash" : "0x000000000000000000000000000000000000000000000000000000000‌​0000000", 
  "parentHash" : "0x000000000000000000000000000000000000000000000000000000000‌​0000000", 
  "timestamp" : "0x00"
}

Geth 命令:

geth --datadir=./chaindata

注意:我是以太坊区块链开发的新手,所以试图通过创建私人网络来获得经验

4

1 回答 1

0

有几个问题...

您提到您的帐户有资金。你是如何将以太币添加到你在私有区块链上的账户的?没有迹象表明 genesis.json 配置中正在初始化资金。你应该有这样的东西:

{
  ...
  "alloc": {
        "ACCOUNT_ADDRESS": {
            "balance": "30000000000000000000000000000"
        }
    }
}

这将为您的帐户播种 300 以太币。您需要首先在私有区块链上创建一个帐户并在配置文件中使用它。

其次,您在 genesis.json 中将网络 ID 设置为 0。选择不同的 ID。

第三,正如我在评论中提到的,您没有连接到您的专用网络。您需要--networkid在启动 geth 时添加选项,传入您在 genesis.json 中设置的网络 ID。启动 geth 时,您应该在输出中看到如下内容:

INFO [01-11|14:21:03] 初始化以太坊协议
版本="[63 62]" network=1

网络 ID 是您在 genesis.json 中设置的任何内容。如果您看到network=1,则您正在连接到主网络。

如果您刚开始使用 Solidity,您可能需要考虑暂时不要创建私有区块链。您可以将 Remix 用于完全沙盒化的开发环境,或使用 Ropsten 测试网络。

于 2018-01-11T22:25:46.073 回答