Go-Ethereum

同步完整的geth節點時持續的“深度事務重組”

  • December 30, 2018

在使用 geth 命令“geth –syncmode full”同步一個新的完整節點時,在幾百個塊之後每隔一行我看到以下內容:

WARN [12-02|02:30:46] Skipping deep transaction reorg          depth=2048

這一直持續到同步的約 160 萬塊。

終端截圖: 終端顯示警告資訊的截圖

這是一個問題嗎?是安全問題嗎?它是代表“壞”對等點、女巫攻擊還是更溫和的東西?

僅供參考,我在 Ubuntu 17.10 上使用最新的 geth 版本(Geth/v1.7.2-stable-1db4ecdc/linux-amd64/go1.9)。

手動添加一些信譽良好的對等點/引導節點。以下指南通過 IPC 或配置文件介紹瞭如何使用 geth 執行此操作:https ://github.com/ethereum/go-ethereum/wiki/Connecting-to-the-network

僅當在側分叉上導入的塊導致該特定分叉上的總難度高於規範分叉時,才會進行重組。儘管如此,這些塊仍然需要有效。

正如乙太坊部落格中所寫的那樣,當乙太坊網路上的一個節點意識到它認為是規範鏈的結果並非如此時,就會發生鏈重組。發生這種情況時,其鏈的後半部分(即最近的交易)中的交易將被還原,而新替換中的交易將被執行。

由於乙太坊的目標阻塞時間很短,只有 15 秒,這實際上自然而然地經常發生。因為區塊通過網路滲透需要時間,所以網路的不同部分很容易在正常執行中擁有不同的最終區塊(或兩個,甚至三個),因為礦工通常會在大約同時。這就是我們所說的臨時分叉。

當重組發生時,或者換句話說,當網路達成更早的全球共識並解決分叉時,擁有現在過時的鏈的節點“重組”他們的鏈,丟棄最近的和不再規範的塊。交易被還原,其他交易被執行以與分叉的另一條路徑保持一致。

當乙太坊發生鏈重組時,常用的方法是先找到公共塊,插入總難度較大的塊,並將交易保留在舊鏈內而不是新鏈內返回到 txpool。您也可以在此處閱讀有關鏈重組問題的更多資訊。

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