當你使用Geth同步以太坊區塊鍊時,可能會遇到這個 invalid difficulty
錯誤:
WARN [03-01|11:17:41] Synchronisation failed, dropping peer peer=68677387327cf808
err="retrieved hash chain is invalid"
ERROR[03-01|11:17:58]
########## BAD BLOCK #########
Chain config: {ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000
EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000
Constantinople: <nil> Engine: ethash}
Number: 7280000
Hash: 0xeddb0590e1095fbe51205a51a297daef7259e229af0432214ae6cb2c1f750750
Error: invalid difficulty: have 2957101900364072, want 2958201410943272
##############################
故障原因
這是因為使用的Geth版本不支援康斯坦丁堡分叉(Constantinople Fork),例如上面錯誤日志中的
Constantinople: <nil>
;或者雖然使用了支援康斯坦丁堡分叉的新版本Geth,但本地區塊鍊中包含了舊版本産生的區塊,進而導緻同步失敗。
解決方案
如果使用的不是最新版本的Geth,那麼可以更新到最新的穩定版本。官網下載下傳位址:
Geth Releases。
如果Geth已經更新到最新版本,啟動後還是出現
invalid difficulty
錯誤,那麼可以讓Geth運作一會進行本地區塊的重組,或者清空本地的區塊鍊資料從頭重新同步。
原文連結:
Geth Invalid Difficulty錯誤 - 彙智網