Block-Header

獲取標頭時處理重組的正確方法是什麼

  • August 4, 2020

我在bitcoin-s工作,我們發現了一個問題,如果一個節點停止並且它的鏈尖是一個稍後被重組的節點,它將無法繼續同步標頭。

發生這種情況是因為我們使用帶有 hashes=<current chain tip>和 stopHash=的 get headers 消息來請求 headers <00000..0000>。因為,我們的鏈提示被重組了,我們將收到網路的前 2000 個區塊頭。

我目前的解決方案是退回我們的鏈尖,每次迭代檢查是否沒有得到前 2k 個塊。但是,我承認這是一個糟糕的解決方案,GetHeadersMessage我應該在這裡使用它還是更好的選擇?

謝謝

getheaders消息允許您列出多個塊雜湊。因此,您可以插入多個區塊雜湊,而不是僅僅放置目前鏈提示。響應節點將查看這些雜湊中是否有任何散列在其主鏈中,並開始從那裡發送標頭。由於重組往往很小,您可以放置​​最近的 10 個塊雜湊,它應該足以處理重組。

請注意,您可以在getheaders消息中放入的最大雜湊數為 101。

引用自:https://bitcoin.stackexchange.com/questions/98376