Mining

挖礦導致節點停止在 Besu 上同步

  • October 26, 2021

我正在嘗試通過一次執行多個節點來測試我的專用網路。我正在使用一個配置文件,其中列出了引導節點以及相同的創世文件。引導節點在 linux 伺服器上,對等節點在我的 Windows 桌面上。

在啟動節點執行的情況下,如果我在沒有挖礦的情況下啟動對等節點,它會很好地同步到網路並繼續導入塊。但是,一旦同步,如果我停止對等節點,並將其作為挖礦節點重新啟動,對等節點將立即與啟動節點不同步,並且不會嘗試同步。然後兩個節點都在探勘同一個區塊,或者一個節點不同步,啟動節點通常開始拋出異常。

如果我刪除對等節點上的數據庫,然後從一開始就作為探勘節點啟動,它永遠不會嘗試同步到引導節點,而只是從塊 #1 開始探勘,就好像它是唯一的節點一樣。

這個問題似乎與採礦過程有關,因為這是引發問題的原因。我不明白為什麼添加對等探勘節點會導致該節點與其他現有節點不同步。兩個節點都使用相同的配置和創世文件。

配置文件:

#TOML config file for starting a node

#Network
bootnodes=["enode://251bb2dd27c06f92dca73dcd56ccd3f6c8044dd542597eacc727c70217e7e34e2c04df5c8d57a4200c9fb8336bd13e9caa28761997b3ff48114fe0bc81e80ee3@IP:30303"]

p2p-host="0.0.0.0"
host-allowlist=["https://IP"]

rpc-http-enabled=true
rpc-http-host="0.0.0.0"
rpc-http-cors-origins=["all"]
rpc-ws-enabled=true

#Other settings
min-gas-price=0
revert-reason-enabled=true

創世紀:

{
 "config": {
     "byzantiumBlock":0,
     "constantinopleBlock":0,
     "constantinopleFixBlock":0,
     "ethash": {
       "fixeddifficulty": 1000
     },
      "chainID": 2021
  },
 "nonce": "0x0",
 "gasLimit": "0x1fffffffffffff",
 "difficulty": "0x10000"
}

該錯誤與時間戳有關。事實證明,託管私有區塊鏈的伺服器沒有正確同步到 NIST 原子鐘,因為它位於防火牆後面並且沒有 100% 連接網際網路。本地 Windows 機器與 NIST 原子鐘同步,因此時間戳已關閉。伺服器當時落後於 NIST 大約 31 秒。

我的同事在兩台完全連接網際網路的機器上執行相同的鏈,沒有任何問題。

TL;博士; 確保你執行鏈的所有機器都同步到 NIST 原子鐘。

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