zoukankan      html  css  js  c++  java
  • geth配置中,genesis.json的几个问题

    通过geth来配置以太坊私有链,是学习以太坊的入门步骤。而其中,如何配置genesis.json,又是最关键的一步。如果在其中产生错误,有些会导致无法初期化私有链,有些却会导致在以后的学习过程中发生各种莫名其妙的错误。

    但是,现在网上能找到的配置内容,很多只适用于v1.4之前的版本,甚至连geth自身在github上的genesis.json,其中的chainId配置,也有问题。

    基于笔者自身实践,以下genesis.json可以适用于现在的geth版本(v1.6.6)

    {
      "config": {
            "chainId": 10,
            "homesteadBlock": 0,
            "eip155Block": 0,
            "eip158Block": 0
        },
      "alloc"      : {},
      "coinbase"   : "0x0000000000000000000000000000000000000000",
      "difficulty" : "0x02000000",
      "extraData"  : "",
      "gasLimit"   : "0x2fefd8",
      "nonce"      : "0x0000000000000042",
      "mixhash"    : "0x0000000000000000000000000000000000000000000000000000000000000000",
      "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
      "timestamp"  : "0x00"
    }

    常遇到的几个错误:

    • Fatal: invalid genesis file: missing 0x prefix for hex data:这个错误信息意思很明白,就是你的json文件中,对于16进制数据,需要加上0x前缀

    • Fatal: invalid genesis file: hex string has odd length: 从v1.6开始,设置的十六进制数值,不能是奇数位, 比如不能是0x0,而应该是0x00。

    • Fatal: failed to write genesis block: genesis has no chain configuration :这个错误信息,就是说,你的json文件中,缺少config部分。看到这个信息,我们不需要把geth退回到v1.5版本,而是需要加上config部分。

    • Error: invalid sender undefined: 这个错误不会导致初始化失败,但是会在以后的转账(eth.sendTransaction),或者部署智能合约的时候产生。解决方法就是chainId 不能设置为0。 如果你完全按照github上给的官方配置文件,就会产生这个错误。

    PS:如果这篇文章对你有帮助,请顶一下,或者说点什么吧。

  • 相关阅读:
    [Linux/Apache Http]Apache Http(d)服务访问时报: 403 Forbidden You don't have permission to access /cdh/ on this server.
    [Linux]常用命令之【YUM】
    .Netcore HttpClient源码探究
    echarts使用多图的表达
    记录composer 安装 yii2项目
    IE浏览器js parseInt("08")返回值不是8
    将一个条件从else语句中拆分出来导致的bug
    我的第一次WebService接口开发教程
    Oracle以逗号分隔的字符串拆分为多行数据
    JS 小技巧
  • 原文地址:https://www.cnblogs.com/myseochina/p/9122261.html
Copyright © 2011-2022 走看看