最長鏈原則
最長鏈原則是區塊鏈節點選擇「正確」鏈的基本規則:累積最多工作量的鏈就是主鏈。
Last updated
最長鏈原則是區塊鏈節點選擇「正確」鏈的基本規則:累積最多工作量的鏈就是主鏈。
在去中心化網路中,可能會同時出現多個版本的區塊鏈:
區塊 100
↓
┌─────┴─────┐
↓ ↓
區塊 101A 區塊 101B
↓ ↓
區塊 102A 區塊 102B
↓
區塊 103A
哪條是「正確」的?答案:選擇最長的那條(上例中是 A 鏈)。
「最長」的真正含義
嚴格來說,比特幣選擇的不是「區塊數最多」的鏈,而是「累積工作量最大」的鏈。在正常情況下,兩者是一樣的。但如果難度不同,累積工作量才是真正的判斷標準。
所有礦工都在同一條鏈上延伸,沒有爭議。
兩個礦工幾乎同時挖到區塊:
最長鏈原則確保網路最終會收斂到同一條鏈:
分叉發生
網路出現兩條競爭鏈
繼續挖礦
礦工各選一條鏈繼續
其中一條變長
獲得更多算力支持
全網切換
節點切換到最長鏈
分叉結束
網路重新統一
礦工會選擇最長鏈,因為:
在最長鏈上挖礦才有獎勵
在短鏈上的工作會被浪費
理性礦工自然聚集到最長鏈
最長鏈 = 最多算力支持的鏈 = 最安全的鏈
中本聰的設計
最長鏈原則是中本聰解決「拜占庭將軍問題」的關鍵。它讓分散的節點在沒有中央協調者的情況下,自動達成共識。
這就是為什麼交易需要多次「確認」:
0 確認
交易還在交易池,可能被取消
1 確認
交易被打包進區塊,但可能被孤塊
3 確認
較安全,小額交易通常夠用
6 確認
比特幣的標準安全門檻
更多
大額交易建議等待更多確認
雙花攻擊的原理
攻擊者在一條鏈上花錢,同時在另一條「私密鏈」上不花這筆錢。如果私密鏈變得更長,就能取代原本的鏈,撤銷已完成的交易。這就是為什麼等待多次確認很重要。
最長鏈
比特幣(簡化說法)
區塊數最多
最重鏈
比特幣(精確說法)
累積工作量最大
最重子樹
以太坊(PoW 時期)
GHOST 協議變體
以太坊(在 PoW 時期)使用 GHOST 協議,考慮的不只是最長鏈,還包括「叔塊」的貢獻。
當某條鏈被拋棄時:
該鏈上的區塊成為「孤塊」
孤塊中的交易回到交易池(如果還沒在主鏈上)
挖到孤塊的礦工失去區塊獎勵
這是礦工的風險之一——你的工作可能白費。
Last updated
時間 T:
礦工 A 挖到區塊 → 廣播給周圍節點
礦工 B 挖到區塊 → 廣播給周圍節點
時間 T+1:
部分網路認 A 的區塊
部分網路認 B 的區塊
時間 T+10分鐘:
有人在 A 的區塊上挖到新區塊
A 鏈變成最長鏈
所有節點切換到 A 鏈
B 的區塊被拋棄(成為孤塊)