自2008年比特幣作為一種作為點對點的電子現金系統出現開始,許多加密貨幣都被創造出來,每個加密貨幣都有其特定的機制。但幾乎所有的加密貨幣都有一個共同點,那就是區塊鍊是他們架構的核心。
除了少數例外情況外,區塊鏈都是被有意設計成去中心化的,由分佈式計算機節點網絡維護的數字賬本。出於這個原因,區塊鏈技術允許建立無信任的經濟系統,在其中可以執行透明和可靠的金融交易而無需中間人。加密貨幣正在被採用作為傳統銀行和支付系統的可行替代方案,這些系統嚴重依賴信任。
正如大多數分佈式計算系統一樣,加密貨幣網絡的參與者需要定期就區塊鏈的當前狀態達成一致,這就是我們所說的達成共識。但是,以安全和可信的方式就分佈式網絡達成共識絕非一項容易的任務。
那麼,如果某些節點可能出現故障或不誠實行為,分佈式計算機節點網絡如何就決策達成一致?這就是所謂的拜占庭將軍問題的根本問題,它產生了拜占庭容錯的概念。
什麼是拜占庭將軍問題?
簡單來說,拜占庭將軍問題在1982年被認為是一個邏輯上的困境,它說明了一群拜占庭將軍在試圖同意下一步行動時可能會遇到溝通問題。
困境假設每個將軍都有自己的軍隊,每支軍隊都位於他們打算攻擊的城市周圍不同位置。將軍需要就攻擊或撤退達成一致。只要所有將軍達成共識,即協調後決定共同執行,無論是攻擊還是撤退都無關緊要。
因此,我們可以考慮以下目標:
每個將軍必須作出決定:攻擊或撤退(是或否);
一旦做出決定後無法改變;
所有將軍都必須就同一決定達成一致,並以同步方式執行。
上述通信問題涉及這樣一個事實,即一個將軍只能通過信使發送的信息與另一個人進行通信。因此,拜占庭將軍問題的核心挑戰是信息可能以某種方式被延遲,破壞或丟失。
此外,即使消息成功傳遞,一個或多個將軍也可以選擇(出於任何原因)惡意行動並發送欺詐性消息以混淆其他將軍,導致行動的完全失敗。
如果我們將這個困境對應到區塊鏈上,則每個將軍代表一個網絡節點,而節點需要就係統的當前狀態達成共識。換句話來說,分佈式網絡中的大多數參與者必須同意並執行相同的操作以避免失敗。
因此,在這些類型的分佈式系統中達成共識的唯一方法是至少擁有2/3以上的可靠和誠實的網絡節點。這意味著如果大多數網絡決定採取惡意行為,則係統容易受到故障和攻擊(例如51%攻擊)。
拜占庭容錯(BFT)
拜占庭將軍的問題有多種可能的解決方案,因此,有多種方法可以構建拜占庭容錯系統。同樣地,區塊鏈有各種不同的方法來實現拜占庭容錯,這就是我們說的共識算法。
區塊鏈共識算法
雖然比特幣協議規定了系統的主要規則,但工作量證明共識算法定義瞭如何遵循這些規則以達成共識(例如,在交易的驗證和驗證期間)。
請注意,拜占庭容錯算法不能100%容忍拜占庭故障,但由於成本密集型的挖礦和底層加密技術,工作量證明已被證明是區塊鍊網絡最安全可靠的實現之一。從這個意義上說,由中本聰設計的工作量證明共識算法被許多人認為是拜占庭容錯最天才的解決方案之一。
結論
在加密貨幣領域中,擁有有效的網絡通信以及良好的共識機制對於任何區塊鏈生態系統都至關重要。保護這些系統需要持續的努力,但是現有的共識算法尚未克服一些限制(例如可擴展性)。儘管如此,工作量證明和權益證明作為拜占庭容錯系統來說都是有趣的方法,其潛在的應用會激發更有趣的創新。