【區塊鏈】geth配置中,genesis.json的幾個問題

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"
}

常遇到的幾個錯誤:

  1. Fatal: invalid genesis file: missing 0x prefix for hex data

    這個錯誤信息意思很明白,就是你的json文件中,對於16進制數據,需要加上0x前綴
    
  2. Fatal: invalid genesis file: hex string has odd length

    從v1.6開始,設置的十六進制數值,不能是奇數位, 比如不能是0x0,而應該是0x00。
    
  3. Fatal: failed to write genesis block: genesis has no chain configuration

    這個錯誤信息,就是說,你的json文件中,缺少config部分。看到這個信息,我們不需要把geth退回到v1.5版本,而是需要加上config部分。
    
  4. Error: invalid sender undefined

    這個錯誤不會導致初始化失敗,但是會在以後的轉賬(eth.sendTransaction),或者部署智能合約的時候產生。解決方法就是chainId 不能設置爲0。 如果你完全按照github上給的官方配置文件,就會產生這個錯誤。
    

轉載自:here

發佈了361 篇原創文章 · 獲贊 75 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章