一文讀懂實用拜占庭容錯(PBFT)算法


 

   在區塊鏈中有一個著名的問題,就是拜占庭將軍問題,對於拜占庭將軍問題,網上的文章已經多得不要不要了,今天和大家分享的是其相關的實用拜占庭容錯算法,一起來看看吧。

  實用拜占庭容錯算法(Practical Byzantine Fault Tolerance)剛開始是在MITMiguel Barbara Liskov1999年的學術論文中提出的,他們的本意是為設計一個低延遲存儲系統設計系統,將算法復雜度由指數級降低到多項式級,使得拜占庭容錯算法在實際系統應用中變得可行,主要是為了應用於不需要大交易量但需要處理許多事件的數字資產平台,每個節點都可以發布公鑰,這是被允許的。節點將簽名所有通過節點的消息,以驗證其准確性。當得到一定數量的簽名想用,此交易就被認定為有效。

  PBFT算法的運作步驟為:

  (1)取一個副本作為主節點,其他的副本作為備份;

  (2)用戶端向主節點發送使用服務操作的請求;

  (3)主節點通過廣播將請求發送給其他副本;

  (4)所有副本執行請求並將結果發回用戶端;

  (5)用戶端需要等待F+1個不同副本節點發回相同的結果,作為整個操作的最終結果。

  PBFT對每個副本節點提出了兩個限定條件:

  (1)所有節點必須是確定性的。也就是說,在給定狀態和參數相同的情況下,操作執行的結果必須相同;

  (2)所有節點必須從相同的狀態開始執行。

  PBFT算法包含三個重要階段,分別是預准備(pre-prepare)、准備(prepare)和確認(commit)pre-prepare階段和prepare階段用來把在同一個view里發送的請求給確定下序列,就是排好序,讓各個replicas節點都認可這個序列,照序執行。prepare階段和commit階段用來確保那些已經達到commit狀態的請求即使在發生view change后在新的view里依然保持原有的序列不變

  PBFT算法存在的問題:

  · 計算效率依賴於參與協議的節點數量,不適用於節點數量過大的區塊鏈系統,擴展性差。

  · 系統節點是固定的,無法應對公有鏈的開放環境,只適用於聯盟鏈或私有鏈環境。

  · PBFT算法要求總節點數n>=3f+1(其中,f代表作惡節點數)。系統的失效節點數量不得超過全網節點的1/3,容錯率相對較低。

  另外PBFT算法有一個弱點,其不能很好的存貯記錄其交易信息,黑客能夠截取一些失效的副本,這會讓信息外漏。

  本質上來說,拜占庭容錯方案就是少數服從多數。目前有一些機構正在關注實用拜占庭容錯算法,比如中國ChinaLedger 聯盟和HyperLedger聯盟就在研究探討其的實際應用。迅雷發布的迅雷鏈也是使用的這一共識算法。

 

原文鏈接:https://www.kg.com/article/495651121931620352


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM