自 2008 年比特幣作爲點對點電子現金系統誕生以來,許多其他加密貨幣也相繼誕生,每種加密貨幣都有其獨特的機制。但幾乎所有加密貨幣都有一個共同點,那就是區塊鏈,這是它們架構的核心元素。
除少數例外,區塊鏈被有意設計爲去中心化,作爲由分佈式計算機節點網絡維護的數字賬本。因此,區塊鏈技術允許創建無需信任的經濟系統,無需中介即可執行透明可靠的金融交易。加密貨幣被視爲傳統銀行和支付系統的可行替代方案,而傳統銀行和支付系統嚴重依賴信任。
和大多數分佈式計算系統一樣,加密貨幣網絡的參與者需要定期就區塊鏈的當前狀態達成一致,這就是我們所說的達成共識。然而,在分佈式網絡上以安全有效的方式達成共識並非易事。
那麼,如果一些節點可能會失敗或不誠實,分佈式計算機節點網絡如何才能就決策達成一致呢?這就是所謂的拜占庭將軍問題的基本問題,由此催生了拜占庭容錯的概念。
什麼是拜占庭將軍問題?
簡而言之,拜占庭將軍問題於 1982 年被提出,它是一種邏輯困境,說明一羣拜占庭將軍在試圖就下一步行動達成一致時可能遇到的溝通問題。
這個難題假設每個將軍都有自己的軍隊,並且每個軍隊都位於他們打算攻擊的城市周圍的不同位置。將軍們需要就進攻或撤退達成一致。進攻或撤退並不重要,只要所有將軍達成共識,即同意一個共同的決定,以便協調執行。
因此,我們可以考慮以下要求:
每個將軍必須決定:進攻還是撤退(是或否);
決定一旦作出,不可改變;
所有將軍必須同意同一決定,並以同步的方式執行。
上述通信問題與將軍之間只能通過信使轉發消息這一事實有關。因此,拜占庭將軍問題的核心挑戰在於消息可能會以某種方式延遲、損壞或丟失。
此外,即使消息成功傳遞,一個或多個將軍也可能選擇(無論出於何種原因)採取惡意行動併發送欺詐性消息以混淆其他將軍,從而導致徹底失敗。
如果我們將這個困境應用到區塊鏈的背景下,每個將軍都代表一個網絡節點,節點需要就係統的當前狀態達成共識。換句話說,分佈式網絡中的大多數參與者必須同意並執行相同的操作,以避免徹底失敗。
因此,在這些類型的分佈式系統中達成共識的唯一方法是擁有至少 ⅔ 或更多可靠且誠實的網絡節點。這意味着,如果大多數網絡決定採取惡意行動,系統很容易受到故障和攻擊(例如 51% 攻擊)。
拜占庭容錯(BFT)
簡而言之,拜占庭容錯 (BFT) 是系統能夠抵抗拜占庭將軍問題導致的故障類型的屬性。這意味着即使某些節點發生故障或惡意行爲,BFT 系統也能夠繼續運行。
拜占庭將軍問題有多種可能的解決方案,因此構建拜占庭容錯系統的方法也多種多樣。同樣,區塊鏈也有不同的方法來實現拜占庭容錯,這就引出了所謂的共識算法。
區塊鏈共識算法
我們可以將共識算法定義爲區塊鏈網絡達成共識的機制。最常見的實現是工作量證明 (PoW) 和權益證明 (PoS)。但我們以比特幣爲例。
雖然比特幣協議規定了系統的主要規則,但 PoW 共識算法定義瞭如何遵循這些規則以達成共識(例如,在交易的驗證和確認過程中)。
儘管工作量證明的概念比加密貨幣更古老,但中本聰 (Satoshi Nakamoto) 開發了它的修改版本作爲算法,從而可以創建比特幣作爲 BFT 系統。
請注意,PoW 算法並非 100% 容忍拜占庭錯誤,但由於成本密集型的挖礦過程和底層加密技術,PoW 已被證明是區塊鏈網絡最安全、最可靠的實現之一。從這個意義上講,中本聰設計的工作量證明共識算法被許多人視爲解決拜占庭錯誤的最天才的解決方案之一。
最後的想法
拜占庭將軍問題是一個有趣的難題,最終催生了拜占庭容錯系統,該系統被廣泛應用於各種場景。除了區塊鏈行業,拜占庭容錯系統的一些用例還包括航空、航天和核電行業。
在加密貨幣環境中,擁有高效的網絡通信以及良好的共識機制對於任何區塊鏈生態系統都至關重要。保護這些系統是一項持續不斷的努力,現有的共識算法尚未克服一些限制(例如可擴展性)。儘管如此,PoW 和 PoS 作爲 BFT 系統是非常有趣的方法,潛在的應用肯定會激發廣泛的創新。

