當前位置:首頁 » 操作系統 » bft演算法

bft演算法

發布時間: 2023-07-26 15:05:46

㈠ 共識演算法4 (BFT)

拜占庭將軍問題(Byzantine Generals Problem),由Leslie Lamport、Robert Shostak和Marshall Pease,在其同名論文中提出(1982年)。拜占庭將軍問題現在主要指分布式對等網路節點間的通信容錯問題。在分布式網路中,不同的計節點通過交換信息達成共識。但有時候,系統中的成員節點可能出錯而發送錯誤的信息,用於傳遞信息的通訊網路也可能導致信息損壞,也可能存在惡意節點或被黑客攻破的節點故意發送錯誤的信息,從而導致系統無法達成共識或者達成錯誤的共識。(參考: BFT Wikipedia )

拜占庭將軍問題提出後,有很多的演算法被提出用於解決這個問題。這類演算法統稱拜占庭容錯演算法(BFT: Byzantine Fault Tolerance)。BFT從上世紀80年代開始被研究,目前已經是一個被研究得比較透徹的理論,具體實現都已經有現成的演算法。

BFT演算法中最典型的是PBFT(Practical BFT)。PBFT是由Miguel Castro和Barbara Liskov於1999年提出。PBFT演算法解決了之前拜占庭容錯演算法效率不高的問題,將演算法復雜度由指數級降低到多項式級,使得拜占庭容錯演算法在實際系統應用中變得可行。PBFT在保證安全性和可用性的前提下,提供了 (n-1)/3 的容錯性。(細節請參考: PBFT )

PBFT之後,很多進一步提升性能或魯棒性的BFT演算法先後被提出,例如Zyzzyva、ABsTRACTs、Aardvark、RBFT等等。近幾年,由於區塊鏈的熱度,無數針對區塊鏈應用場景優化過的BFT演算法也不斷涌現出來。雖然目前PBFT已經不能說是最好的,或最適合區塊鏈的BFT演算法。但是PBFT已經足夠好了,而且在實際應用中已經非常成熟。

在BFT共識機制中,網路中節點的數量和身份必須是提前確定好的。BFT共識機制無法做到PoW共識機制中實現的任何人都可以隨時加入挖礦。另外,BFT演算法無法應用到大量的節點,業內普遍認為100個節點是BFT演算法的上限。所以BFT演算法無法直接用於公有鏈,BFT演算法適合的場景是私有鏈和聯盟鏈。業內大名鼎鼎的聯盟鏈Hyperledger fabric v0.6採用的是PBFT,v1.0又推出PBFT的改進版本SBFT。這里再順便提一句,在可信環境下共識演算法一般使用傳統的分布式一致演算法PAXOS或者RAFT。

公有鏈使用BFT的一個例外是NEO,NEO使用了DBFT(delegated BFT)共識機制。DBFT共識機制下投票選出7個共識節點。這些代理節點是通過靜態選出的,並完全由項目方部署。這也是NEO被外界質疑過於中心化的原因。(參考: 早期公有鏈明星項目-NEO )

BFT演算法和公有鏈合適的結合點在於基於BFT的PoS共識演算法(BFT based PoS)。基於BFT的PoS共識演算法要點有:一,網路節點通過鎖定虛擬資產申請成為區塊鏈系統的驗證者(或礦工)。系統驗證者的數量是動態變化的。二,系統從當前驗證者中隨機選擇一個人作為區塊提案人。三,系統驗證者對區塊提案進行投票表決,投票可能要進行多輪才能達成共識。每個人的投票比重與鎖定的虛擬資產成比例。

基於BFT的PoS的典型例子是tendermint(Cosmos採用了tendermint作為共識核心)。

熱點內容
安卓哪裡下游戲大廳 發布:2025-03-15 04:08:35 瀏覽:827
鴻蒙編譯後的45款軟體 發布:2025-03-15 04:06:18 瀏覽:638
jetsql 發布:2025-03-15 03:59:30 瀏覽:203
程序常用演算法 發布:2025-03-15 03:47:16 瀏覽:6
雷速安卓版本怎麼不推送 發布:2025-03-15 03:42:57 瀏覽:18
nodejs搭建視頻伺服器 發布:2025-03-15 03:37:54 瀏覽:106
編譯器將固定字元串放在固定位置 發布:2025-03-15 03:36:11 瀏覽:364
高中生電腦編程培訓 發布:2025-03-15 03:11:04 瀏覽:50
蘋果和安卓5g哪個比較值得 發布:2025-03-15 03:05:11 瀏覽:905
台式電腦連接伺服器的線叫什麼線 發布:2025-03-15 03:02:21 瀏覽:980