【问题标题】:Issue with deployment of a smart contract using ehereum wallet in private network在专用网络中使用以太坊钱包部署智能合约的问题
【发布时间】:2018-06-20 20:52:01
【问题描述】:

我正在尝试使用以太坊钱包客户端 (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

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

【问题讨论】:

  • 您能提供您的gethmist 启动脚本吗?我怀疑您的 Mist 实例正在连接到不同的网络,而不是您的私有区块链。另外,请包括您的创世配置。
  • { "config": { "chainId": 0, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : “0x0000000000000000000000000000000000000000”, “看病难”: “地址0x20000”, “而额外”: “”, “gasLimit”: “0x2fefd8”, “随机数”: “0x0000000000000041”, “mixhash”: “0x0000000000000000000000000000000000000000000000000000000000000000”, “parentHash”: “0x0000000000000000000000000000000000000000000000000000000000000000” , "时间戳" : "0x00" }
  • 打开geth客户端和区块链的步骤1:geth --datadir=./chaindata 打开新客户端的步骤2:geth attach 打开钱包的步骤3:Ehereum wallet(MIST) GUI

标签: ethereum go-ethereum


【解决方案1】:

有几个问题...

您提到您的帐户有资金。你是如何将以太币添加到你在私有区块链上的账户的?没有迹象表明 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] 初始化以太坊协议
版本="[63 62]" 网络=1

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

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

【讨论】:

  • 感谢您的建议!我使用 miner.start(3) 开采了一些以太币;使用带有 geth attach 命令的另一个控制台。此时我打开了 MIST,它自动连接到专用网络并显示了开采的以太币数量。在我尝试使用上述 HelloWorld 代码添加合同后
猜你喜欢
  • 2019-04-07
  • 2018-08-09
  • 1970-01-01
  • 2020-03-09
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2023-03-14
  • 2020-03-14
相关资源
最近更新 更多