什麼是拜占庭將軍問題?

  • 2025-07-28

 

我們之前講過,分散式帳本可以說是區塊鏈的框架,每個人都可以自由參與,共同處理區塊鏈中的數據。基於這一點,區塊鏈實際上就是一個大型的分散式計算網絡。

它沒有一個類似中央指揮室的東西來發號施令,整個網絡是完全分散的,必須依靠不同節點之間彼此交換資訊、達成共識,才能統一行動。整個過程就像無領導小組討論一樣。
對此,有人提出了疑問:萬一有節點發送了錯誤的資訊,干擾網絡正常運行,或者大家產生了分歧怎麼辦?於是,學者們建立了一個模型,將這類用來描述分散式系統一致性的問題,統稱為「拜占庭將軍問題」。

所謂拜占庭將軍問題是這樣的:

拜占庭帝國想要攻打一個國家,它派出了多支軍隊進行圍攻,但敵國軍事實力也很強,將軍們必須在同一時間一起發動進攻才能獲取勝利。

現在的問題在於,每個將軍都分散在敵國四周,只能依靠通信兵騎馬相互通信,確定進攻的時間。可是一方面,通信兵可能會在送信過程中被敵方擊殺;另一方面,根據不可靠消息,這些將軍中可能有叛徒存在。叛徒可能會擅自變更進攻意向或進攻時間,從而向其他將軍傳達虛假指令,影響他人判斷。

如果整個分散式網絡相當於拜占庭帝國,而每個節點相當於裡面的將軍,那麼在這種狀態下,該怎麼做才能保證網絡中的全部節點對某件事情達成一致?(即將軍們在同一時間一起發起進攻,從而贏得戰鬥)這就是拜占庭將軍問題。

簡單來說,拜占庭將軍問題描述的是分散式網絡會面臨的兩個問題:

1)如何解決各個節點之間的同步問題。例如,在沒有叛徒的情況下,將軍 A 向其他將軍傳遞進攻方案時(如:明日下午 2 點進攻),可能將軍 B 也在傳遞進攻方案(如:明日下午 3 點進攻)。

2)如何解決惡意節點故意發送錯誤資訊干擾網絡運行的問題。例如,在有叛徒的情況下,叛徒會向不同的將軍發出不同的進攻提議,干擾其他將軍們達成一致。

後來大家發現,想要在分散式網絡中讓每一個節點都不出錯是不可能的,於是有人提出了「拜占庭容錯」的觀點來解決拜占庭將軍問題。這個解決辦法的核心是:資訊的偽造或錯誤並不重要,只要誠實的將軍數量超過總數的三分之二,即使有少數不誠實的將軍存在,整個系統仍然可以達成一致。

於是,大家以此為基礎,設計出了許多解決方案。區塊鏈四大核心技術中的「共識機制」,就是為了解決這個問題。

Go Back Top