自 2008 年比特幣作爲點對點電子支付系統誕生以來,許多其他加密貨幣也被創建,每種加密貨幣都有特定的運行機制。但幾乎所有加密貨幣都有一個共同點,那就是區塊鏈,這是其架構的核心元素。

除了少數例外,區塊鏈被有意設計爲去中心化的,並作爲由分佈式計算機節點網絡管理的數字分類賬運行。在此背景下,區塊鏈技術使得無需信任的經濟系統的創建成爲可能,在該系統中透明且可靠的金融交易可以在不使用中介機構的情況下執行。加密貨幣正在被用作傳統銀行和支付系統的可行替代品,而傳統銀行和支付系統嚴重依賴信任。

就像大多數分佈式計算系統一樣,加密貨幣網絡的參與者必須定期就區塊鏈的狀態達成一致,這稱爲達成共識。然而,以安全可靠的方式在分佈式網絡上達成共識絕非易事。

那麼,如果某些節點可能出現故障或不誠實行爲,分佈式計算機節點網絡如何才能就決策達成一致呢?這就是所謂的拜占庭將軍問題的根本問題,從而產生了拜占庭容錯的概念。


拜占庭將軍怎麼了?

簡而言之,拜占庭將軍問題於 1982 年被設想爲一個邏輯困境,描述了一羣拜占庭將軍在試圖就下一步戰略行動達成一致時如何出現溝通問題。

這種困境假設每個將軍都有自己的軍隊,並且每個武裝團體位於他們想要圍攻的城市周圍的不同位置。將軍必須同意進攻或撤退。無論進攻還是撤退,所有將領都必須達成共識,即達成共同的決定,才能協同執行。

因此,我們可以考慮以下目標:

  • 每位將軍必須做出決定:進攻或撤退(是或否);

  • 一旦做出決定,就不能改變。

  • 所有將軍必須就同一決定達成一致並同步執行。

上述通信問題與這樣一個事實有關:一個將軍只能通過密使傳遞的消息與另一個將軍進行通信。因此,拜占庭將軍問題的核心挑戰是:消息可能被延遲、破壞或丟失。

另外,即使消息成功傳遞,一名或多位將軍也可能會選擇(無論出於何種原因)惡意行事併發送欺詐性消息,以迷惑其他將軍,從而導致徹底失敗。

如果我們將困境應用到區塊鏈的背景下,每個將軍代表一個網絡節點,並且節點必須就係統的當前狀態達成共識。換句話說,分佈式網絡中的大多數參與者必須同意並執行相同的操作,以避免完全失敗。

因此,在這些類型的分佈式系統中達成共識的唯一方法是擁有至少⅔個可靠且誠實的網絡節點。這意味着,如果大多數網絡決定進行惡意行爲,系統很容易出現故障和受到攻擊(如 51% 攻擊)。


拜占庭容錯 (BFT)

簡而言之,拜占庭容錯(BFT)表徵了一個能夠承受拜占庭將軍問題衍生的一系列故障的系統。這意味着即使某些節點發生故障或惡意行爲,BFT 系統也能夠繼續運行。

拜占庭將軍問題有不止一種可能的解決方案,因此構建 BFT 系統的方法也有多種。同樣,區塊鏈有不同的方法來實現拜占庭容錯,這導致我們使用共識算法。


區塊鏈共識算法

我們可以將共識算法定義爲區塊鏈網絡達成共識的機制。最常見的實現是工作量證明和權益證明。但我們以比特幣爲例。

雖然比特幣協議規定了系統的主要規則,但 PoW 共識算法定義瞭如何遵循這些規則以達成共識(例如,在驗證和驗證交易時)。

儘管工作量證明的概念比加密貨幣更古老,但中本聰開發了它的修改版本作爲 BFT 算法和系統,從而實現了比特幣的創建。

請注意,PoW 算法不能 100% 容忍拜占庭錯誤,但由於昂貴的挖礦過程和底層加密技術,PoW 已被證明是區塊鏈網絡最安全、最可靠的實現之一。從這個意義上說,由中本聰設計的工作量證明共識算法被許多人認爲是解決拜占庭錯誤最相關的解決方案之一。


結論

拜占庭將軍問題是一個有趣的困境,最終催生了 BFT 系統,並廣泛應用於各種場景。除了區塊鏈領域之外,BFT 系統的一些用例還包括航空、航天和核能領域。

在加密貨幣的背景下,有效的網絡通信加上良好的共識機制對於任何區塊鏈生態系統都是至關重要的。確保這些系統的安全是一項持續的工作,現有的共識算法仍然需要克服一些限制(例如可擴展性)。儘管如此,PoW 和 PoS 作爲 BFT 系統都是非常有趣的方法,它們的潛在應用肯定需要廣泛的創新。