Blockchain-Fork
比特幣客戶端如何有效地改變分叉?
有時,比特幣客戶端會遇到比其目前所在鏈更長的區塊分叉。根據孤立塊發生的頻率,這可能非常頻繁。發生這種情況時,任何與區塊鏈“目前”狀態相關的內部資料結構(例如,未使用輸出的雜湊表)都需要更新,以反映新的更長分叉的狀態。
這是如何實現的?歷史是否“倒退”到最近的共同祖先,然後“前進”到新的頂塊?這一切都是從頭開始重建的嗎?
UXTO 集當然不是從頭開始重建的,如果這樣做的話,那將是一個令人難以置信的 DoS 向量。即使在速度較快的機器上,在較慢的磁碟和處理器上,完整的重建也需要數小時甚至數天的時間。
通過查看 github 上的原始碼,我們可以看出您的假設是正確的。UXTO 集向後重建到鏈分叉的點,然後像往常一樣繼續向下。
客戶似乎認為區塊的大規模(100+)重組是不可能的,這就是為什麼硬幣需要“成熟”以避免出現交易花費鏈中不再存在的硬幣的情況。