WF曲速未來:區塊鏈核心算法之拜占庭容錯算法區塊鏈
曲速未來:在上兩篇文章中有介紹到拜占庭將軍問題,于戰爭時,拜占庭帝國軍隊的將軍們必須全體一致的決定是否攻擊某一支敵軍,因為唯有達成一致的行動才能獲致勝利。將軍中若存在叛徒,叛徒可以采取行動以欺騙某些將軍進行進攻行動,或致使他們無法做出決定,缺乏一致行動的結果則將注定戰事的失利。
在上兩篇文章中有介紹到拜占庭將軍問題,于戰爭時,拜占庭帝國軍隊的將軍們必須全體一致的決定是否攻擊某一支敵軍,因為唯有達成一致的行動才能獲致勝利。將軍中若存在叛徒,叛徒可以采取行動以欺騙某些將軍進行進攻行動,或致使他們無法做出決定,缺乏一致行動的結果則將注定戰事的失利。
什么是拜占庭容錯
拜占庭容錯( Byzantine Fault Tolerance)稱為BFT。拜占庭容錯技術是一類分布式計算領域的容錯技術,用于更好的進行工作證明和驗證算法。拜占庭假設是對現實世界的模型化,由于硬件錯誤、網絡擁塞或中斷以及遭到惡意攻擊等原因,計算機和網絡可能出現不可預料的行為。拜占庭容錯技術被設計用來處理這些異常行為,并滿足所要解決的問題的規范要求。
安全的共識算法
拜占庭容錯(BFT)就是為了解決即使出現一定數量的叛徒,整個作戰計劃也依然可以達成一致。我們需要一種安全的共識,并且不會給我們的地球施加巨大的能源成本。這種方法就是基于拜占庭容錯(BFT)的權益證明(POS)。我們稱之為BFT-PoS。
BFT是針對狀態機副本復制為主的分布式系統執行環境開發的算法,旨在 讓系統中大部分的誠實節點來覆蓋惡意節點或無效節點的行為。BFT算法的節 點數量是固定的,節點身份提前確定,無法動態添加或刪除,只能適用于節點數 目固定的聯盟鏈或私有鏈場景中。
標準的容錯共識算法(如Raft和Paxos)假設當一個節點出現故障時,它只是停止工作而不回復消息。谷歌,Facebook和一些現有的數據庫產品已經在他們的防火墻內使用了這一系列的共識算法,使機器有故障產生時也能確保服務仍然可用。
但這些算法不適用于公有區塊鏈,因為公有區塊鏈中沒有防火墻。任何擁有算力(PoW)或代幣(PoS)的人都可以參與,甚至可以試圖破壞網絡。為了達成共識,我們需要拜占庭的容錯能力。在拜占庭故障中,故障節點能以完全任意的方式運行。節點甚至可以串通來嘗試作惡,并最大限度地發揮其破壞力。
因此,本質上,BFT共識算法的目的是在不信任網絡(如萬維網)中的節點間建立信任。但是只在同步環境中(所有的消息總是及時到達)演示了算法的理論可行性。但在現實世界中,你不能真正地相信互聯網能及時交付任何東西。
雖然該理論可能難以解釋或理解,但適當的BFT算法提供的最終結果很容易掌握。 與PoW區塊鏈不同,BFT-PoS塊鏈根本不分叉。對于雙花攻擊,除非1/3或更多的驗證者協調進行此類攻擊。而且,當1/3或更多的驗證者確實導致雙重花費攻擊時,我們可以計算確定哪些驗證者需要對攻擊負責,進而可以摧毀它們的權益代幣并將其從網絡中剔除,就好像礦工聯合起來控制整個鏈一樣。
雖然PoW在比特幣方面表現很好,但代價昂貴,速度慢,環境不友好。現在最好的選擇是BFT-PoS。它是一種持久、節能的解決方案,在異步環境中運行良好。
實用拜占庭容錯算法PBFT
實用拜占庭容錯算法PBFT(Practical Byzantine Fault Tolerance)是針對狀態機副本復制為主的分布式系統執行環境開發的算法,旨在讓系統中大部分的誠實節點來覆蓋惡意節點或無效節點的行為。PBFT算法的節點數量是固定的,一個節點代表一票,以少數服從多數的方式實現了拜占庭的容錯演算。至多容錯量以不超過全部節點數的1/3,意即如果有超過2/3的正常節點,整個系統就便可正常運作(R ≥ 3F 1; R:節點總數,F:有問題節點總數)。節點身份提前確定,無法動態添加或刪除,只能適用于節點數目固定的聯盟鏈或私有鏈場景中。
PBFT算法的運作步驟為:
(1)取一個副本作為主節點,其他的副本作為備份;
(2)用戶端向主節點發送使用服務操作的請求;
(3)主節點通過廣播將請求發送給其他副本;
(4)所有副本執行請求并將結果發回用戶端;
(5) 用戶端需要等待F 1個不同副本節點發回相同的結果,作為整個操作的最終結果。
PBFT算法存在的問題:
計算效率依賴于參與協議的節點數量,不適用于節點數量過大的區塊鏈
1.系統,擴展性差。
2.系統節點是固定的,無法應對公有鏈的開放環境,只適用于聯盟鏈或私
3.有鏈環境。
4.PBFT算法要求總節點數n>=3f 1(其中,f代表作惡節點數)。系統的失效節點數量不得超過全網節點的1/3,容錯率相對較低。
代理拜占庭容錯算法DBFT
考慮到BFT算法存在的擴容性問題,NEO采用了一種代理拜占庭容錯算法— —DBFT(Delegated Byzantine Fault Tolerant)。它與EOS的DPOS共識機制一樣,由權益持有者投票選舉產生代理記賬人,由代理人驗證和生成區塊,以此 大幅度降低共識過程中的節點數量,解決了BFT算法固有的擴容性問題。
DBFT的算法中,參與記賬的是超級節點,普通節點可以看到共識過程,并同步賬本信息,但不參與記賬。總共n個超級節點分為一個議長和 n-1 個議員,議長會輪流當選。每次記賬時,先有議長發起區塊提案(擬記賬的區塊內容),一旦有至少(2n 1)/3個記賬節點(議長加議員)同意了這個提案,那么這個 提案就成為最終發布的區塊,并且該區塊是不可逆的,所有里面的交易都是百分之百確認的,區塊不會分叉。
DBFT的優點一方面是效率高,NEO每15~20秒生成一個區塊,交易吞吐量可達到約1000TPS,通過適當優化,性能可達10000TPS;另一方面是其良好的最終性,區塊不會分叉,以此來驗證參與者的身份,保護網絡安全,使區塊鏈能夠適用于對交易確認實時性要求高的真實金融場景。
DBFT的缺點也不容忽視,一方面體現在較低的容錯率,當有1/3或以上超級節點為惡意節點或宕機后,系統將無法提供服務;另一方面體現在超級節點數量過少,中心化程度高。
區塊鏈安全公司WF曲速未來表示:類比到區塊鏈系統中,其實是一樣的。區塊鏈中的共識節點(挖礦)相當于其中的將軍,記賬節點可能會發生故障或者被惡意控制而發送錯誤的消息,通常這些發生故障的節點被稱為拜占庭節點,而正常的節點即為非拜占庭節點。
1.TMT觀察網遵循行業規范,任何轉載的稿件都會明確標注作者和來源;
2.TMT觀察網的原創文章,請轉載時務必注明文章作者和"來源:TMT觀察網",不尊重原創的行為TMT觀察網或將追究責任;
3.作者投稿可能會經TMT觀察網編輯修改或補充。