權益證明與拜占庭共識

拜占庭將軍問題

想像幾支軍隊圍著敵城紮營,每支由一位將軍率領,彼此只能靠信使傳訊。他們必須對單一計畫達成一致——要嘛全體進攻、要嘛全體撤退——因為三心二意、各自為政的攻擊註定失敗。麻煩在於,有些將軍可能是叛徒,會發出互相矛盾的命令,挑撥忠誠的將軍陷入分歧。拜占庭將軍問題由 Leslie Lamport、Robert Shostak 與 Marshall Pease 於 1982 年提出,探討的是:在一群行為任意(說謊、兩面三刀、或保持沉默)且身分未知的成員之中,誠實的參與者要如何仍能收斂到相同的決定。

這是「拜占庭」故障的典型模型——不是單純當機的節點,而是可能做出最壞之事的節點,包括對不同對象傳送不同訊息。經典結論給出一道明確的門檻。若使用可被偽造或竄改的未認證(口頭)訊息,唯有當超過三分之二的成員誠實時才可能達成一致:系統要容忍 f 個叛徒,總數至少須有 n = 3f + 1 位將軍,誠實的法定人數為 2f + 1。若改用無法偽造的密碼學簽署訊息,忠誠的將軍便能證明別人說了什麼,原則上可容忍多得多的故障,儘管實務上關於訊息送達的同步性假設仍然重要。

每一條區塊鏈都是在開放網路上對此問題的工程化解答,而網路上的「將軍」是化名的、可隨意大量產生的。工作量證明與權益證明讓偽造大批假將軍變得昂貴,而其上的共識協議(中本聰式的最長鏈,或明確的 BFT 投票)才是真正驅使誠實節點走向同一份帳本的東西。3f + 1 這道界線會在本領域反覆出現,化身為 PBFT、Tendermint 與以太坊 Casper 都要求的三分之二超級多數。

n ≥ 3f + 1 (tolerate f Byzantine faults; honest quorum = 2f + 1)

常見的誤讀是以為 3f+1 講的是單純過半數。它其實更嚴格:你需要超過三分之二誠實,而不僅是過半,正因為拜占庭節點可以兩面說詞——對一群人說「進攻」、對另一群人說「撤退」——這是單純多數決無法消歧的。