使用私有网络中的ehereum钱包部署智能合约的问题

时间:2018-01-11 13:45:57

标签: ethereum go-ethereum

我正在尝试使用以太坊钱包客户端(雾)在专用网络中部署智能合约。虽然我有足够的资金申请,但我仍然没有足够的资金用于*汽油价格+价值。

智能合约代码:

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

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

1 个答案:

答案 0 :(得分:0)

有一些问题......

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

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

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

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

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

  

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

网络ID是你在genesis.json中设置的。如果您看到network=1,则表示您正在连接到主网络。

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