• 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:如果这篇文章对你有帮助,请顶一下,或者说点什么吧。

  • 相关阅读:
    Koa初探
    npm 安装electron 失败的问题和解决办法
    vscode常用快捷键
    docker 执行TP 的 migrate数据库迁移报错2002
    git删除历史记录中的大文件详解
    js replace 替换路径无效的问题
    window.prompt()方法数据类型问题
    scorecardpy 介绍
    CatBoost 使用
    webgl
  • 原文地址:https://www.cnblogs.com/myseochina/p/9122261.html
Copyright © 2020-2023  润新知