Synchronization

同步失敗,丟棄對等體;err=‘檢索到的雜湊鏈無效’;消息循環

  • November 18, 2020

我有集團私人權威證明鏈。

我已將所有簽名者節點(目前我有 3 個簽名者節點)的 geth 版本更新為最低Version: 1.8.16-stable. 我還更新了另一個給出錯誤的節點v1.8.16

在此處輸入圖像描述

我執行的方式geth也嘗試過沒有--syncmode fast標誌。

geth --syncmode fast --cache=1024 --shh --datadir $DATADIR/private --rpcaddr 127.0.0.1 --rpc --rpcport 8545 --rpccorsdomain="*" --networkid 12345 --rpcapi admin,eth,net,web3,debug,personal,shh


我在連接到網路的多個節點上遇到錯誤。

########## BAD BLOCK #########
Chain config: {ChainID: 23422 Homestead: 1 DAO: <nil> DAOSupport: false EIP150: 2 EIP155: 3 EIP158: 3 Byzantium: 4 Constantinople: <nil> Engine: clique}

Number: 1260001
Hash: 0x659e96f35e1fa1c39fc3b8370a336f78787e482aef44e56bbe6dd9e10bb06bdc


Error: recently signed
##############################

WARN [10-05|15:49:57.694] Synchronisation failed, dropping peer    peer=ae57fcb24c19102e err="retrieved hash chain is invalid"
INFO [10-05|15:49:57.694] message loop                             peer=ae57fcb24c19102e err=EOF
ERROR[10-05|15:50:07.707]
########## BAD BLOCK #########
Chain config: {ChainID: 23422 Homestead: 1 DAO: <nil> DAOSupport: false EIP150: 2 EIP155: 3 EIP158: 3 Byzantium: 4 Constantinople: <nil> Engine: clique}

Number: 1260001
Hash: 0x659e96f35e1fa1c39fc3b8370a336f78787e482aef44e56bbe6dd9e10bb06bdc

  • 我已將區塊鏈恢復為之前的某個塊號debug.setHead("0x124F80")(第 1200000 個塊),但它沒有幫助。
  • 請注意,我必須geth removedb從一開始就刪除我的鏈數據和同步,這也沒有幫助。

可能的解決方案:

  • 我應該取回簽名者節點的區塊鏈數據以指出沒有使用錯誤發生的地方debug.setHead()嗎?這可能是一個短期解決方案,可能會再次發生相同的錯誤。

**=>**打開問題

問題是簽名者不承認某些過去的塊變得無效。

作為解決方案,首先我將geth簽名者節點的版本更新為等於或高於v1.8.16. 稍後,我使用(第 1200000 個塊)將鏈回退到所有簽名者節點的故障快照塊(紀元轉換debug.setHead("0x124F80"))。 網站將十進制值轉換為十六進制值,不要忘記0x在開頭添加廣告。


來自@karalabe對已打開問題的回答:

在一個 Geth 版本 (v1.8.14/v1.8.15) 中存在一個錯誤,它違反了 Clique 共識規範,導致一些簽名者在不允許創建塊時創建塊(紀元轉換)。Geth 的所有先前和後續版本(除了錯誤版本)都正確拒絕了這些塊,因此您無法將新節點同步到您已經開采的鏈上。

然而,當你更新一個節點時,它不會重新驗證區塊,所以即使你更新了你的簽名者,他們也沒有註意到一個錯誤的區塊已經在他們的鏈中。當你重繞鏈條時,簽名者必須重新探勘有缺陷的部分,以糾正問題。

只要您不使用錯誤版本的 Geth,這絕對不會再次發生。任何等於或高於 v1.8.16 的版本都可以正常工作。

引用自:https://ethereum.stackexchange.com/questions/60023