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:如果這篇文章對你有幫助,請頂一下,或者說點什么吧。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM