自2008年,比特幣作為一種點對點的電子現金系統誕生以來,許多其他的數位貨幣也逐漸興起,且每個數位貨幣都有其特定的機制。但幾乎所有的數位貨幣都有一個共同點,就是以區塊鏈為核心架構。
絕大多數情況下,區塊鏈都是被設計成去中心化的,由分散式節點網路維護的電子帳本。因此,區塊鏈系統可以讓金融交易在沒有中間人的情況下完全透明且可靠地執行。數位貨幣正逐步取代需要高可信度的傳統銀行支付系統。
正如大多數分散式運算系統一樣,數位貨幣網路的參與者需要定期就區塊鏈的當前狀態進行討論並達成一致,這就是我們所說的達成共識。但是,在分散式網路中以安全且有效率的方式達成共識絕非易事。
那麼,在某些節點可能出現故障或不誠實行為的情況下,分散式電腦節點網路如何就決策達成一致?這就是所謂的拜占庭將軍問題的根本,它產生了拜占庭容錯的概念。
簡單來說,在1982年,拜占庭將軍問題被認為是一個邏輯上的困境,它說明了一群拜占庭將軍在試圖就下一步行動達成統一意見時可能存在的溝通問題。
這個困境假設每個將軍都有自己的軍隊,每支軍隊都位於他們打算攻擊的城市周圍的不同位置。這些將軍需要就攻擊或撤退達成協議。只要所有將軍達成共識,即協調後決定共同執行,無論是攻擊或撤退都無關緊要。
因此,我們可以考慮以下條件:
上述溝通問題涉及這樣一個事實,即一個將軍只能透過情報員發送的訊息與另一個將軍進行通信。因此,拜占庭將軍問題的核心挑戰是訊息可能以某種方式被延遲傳達,破壞或遺失。
此外,即使訊息成功傳遞,一個或多個將軍也可以選擇(出於任何原因)惡意行動並發送欺詐性訊息以混淆其他將軍,導致行動失敗。
如果我們將這個困境對應到區塊鏈上,則每個將軍代表一個網路節點,而節點需要就係統的當前狀態達成共識。換句話說,分散式網路中的大多數參與者必須同意並執行相同的操作以避免失敗。
因此,在這些類型的分散式系統中達成共識的唯一方法是至少擁有三分之二以上的可靠和誠實的網路節點。這意味著如果網路中的大多數節點決定採取惡意行為,系統就很容易受到故障和攻擊(例如51%攻擊)。
簡單來說,拜占庭容錯(BFT)是能夠抵抗拜占庭將軍問題所導致的一系列失敗的系統屬性。這意味著即使某些節點發生故障或惡意行為,拜占庭容錯系統也能夠繼續運作。
拜占庭將軍問題有多種可能的解決方案,因此,有多種方法可以建構拜占庭容錯系統。同樣地,區塊鏈有各種不同的方法來實現拜占庭容錯,這就是我們所說的共識演算法。
我們可以將共識演算法定義為區塊鏈網路達成共識的機制。最常見的例子是工作量證明(PoW)和權益證明(PoS)。這裡我們以比特幣為例。
比特幣協議規定了系統的主要規則,工作量證明共識演算法說明瞭如何遵循這些規則以達成共識(例如,在交易的驗證和驗證期間)。
雖然工作量證明的概念比數位貨幣更早,但中本聰在原版本上進行了修改,並開發了一種改進後的工作量證明演算法,可以將比特幣的產生作為一種拜占庭容錯系統。
請注意,此工作量證明演算法不能完全抵抗拜占庭故障,但由於高成本的挖礦過程和底層加密技術,工作量證明已被證明是區塊鏈網路中的一種最安全可靠的方法。從這個意義上說,由中本聰設計的工作量證明共識演算法被許多人認為是拜占庭容錯最高明的解決方案之一。
拜占庭將軍問題是一個有趣的困境,最終產生了拜占庭容錯系統,這些系統正在各種場景中得到廣泛應用。除區塊鏈產業外,拜占庭容錯系統的一些使用案例也包括航空,航太和核電產業。
在數位貨幣領域中,擁有高效的網路通訊以及良好的共識機制對於任何區塊鏈生態系統都至關重要。保護這些系統需要持續的努力,現有的共識演算法尚未能克服一些限制(例如可擴展性)。儘管如此,工作量證明和權益證明作為拜占庭容錯系統來說都是有效的方法,其潛在的應用會激發更多的創新。