PBFT(拜占庭容錯)簡述

2021-09-07 18:16:01 字數 1829 閱讀 6089

區塊鏈中最重要的便是共識演算法,位元幣使用的是pow(proof of work,工作量證明),以太幣使用的是pos(proof of stake,股權證明)使得算力變的不怎麼重要了,而今pos的變體dpos(delegated proof of stake,股份授權證明)進一步削減算力的浪費,同時也加強了區塊鏈的安全性。

不過,對於不需要貨幣體系的許可鏈或者私有鏈而言,絕對信任的節點,以及高效的需求上述共識演算法並不能夠提供,因此對於這樣的區塊鏈,傳統的一致性演算法成為首選,pbft(拜占庭容錯)、paxos、raft。

這是一種基於訊息傳遞的一致性演算法,演算法經過三個階段達成一致性,這些階段可能因為失敗而重複進行。

假設節點總數為3f+1,f為拜贊庭錯誤節點:

1、當節點發現leader作惡時,通過演算法選舉其他的replica為leader。

2、leader通過pre-prepare 訊息把它選擇的 value廣播給其他replica節點,其他的replica節點如果接受則傳送 prepare,如果失敗則不傳送。

3、一旦2f個節點接受prepare訊息,則節點傳送commit訊息。

4、當2f+1個節點接受commit訊息後,代表該value值被確定

如下圖表示了4個節點,0為leader,同時節點3為fault節點,該節點不響應和發出任何訊息。最終節點狀態達到commited時,表示該輪共識成功達成。

其中c為傳送請求端,0123為服務端,3為宕機的服務端,具體步驟如下:

1. request:請求端c傳送請求到任意一節點,這裡是0

2. pre-prepare:服務端0收到c的請求後進行廣播,擴散至123

3. prepare:123,收到後記錄並再次廣播,1->023,2->013,3因為宕機無法廣播

4. commit:0123節點在prepare階段,若收到超過一定數量的相同請求,則進入commit階段,廣播commit請求

5.reply:0123節點在commit階段,若收到超過一定數量的相同請求,則對c進行反饋

根據上述流程,在 n ≥ 3f + 1 的情況下一致性是可能解決,n為總計算機數,f為有問題的計算機總數

n=4 f=0 時:

得到資料

最終資料

a1 1 1 11b

1 1 1 11c

1 1 1 11d

1 1 1 11

n=4 f=1 時:

得到資料

最終資料

a1 1 1 01b

1 1 0 11c

1 0 1 11d

0 1 1 11

n=4 f=2 時:

得到資料

最終資料

a1 1 0 0nab

1 0 0 1nac

0 0 1 1nad

0 1 1 0

na

由此可以看出,拜占庭容錯能夠容納將近1/3的錯誤節點誤差,ibm建立的hyperledger就是使用了該演算法作為共識演算法。

優點:上述共識演算法都脫離不了幣的存在,系統的正常運轉必須有幣的獎勵機制,系統的安全性實際上是由系統幣的持有者維護保證。當我們區塊鏈系統實際運用到商業應用時,由其承載的資產價值可能遠遠超出系統發行的幣的價值,如果由幣的持有者保證系統的安全及穩定性將是不可靠的 。

1)系統運轉可以脫離幣的存在,pbft演算法共識各節點由業務的參與方或者監管方組成,安全性與穩定性由業務相關方保證。

2)共識的時延大約在2~5秒鐘,基本達到商用實時處理的要求。

3)共識效率高,可滿足高頻交易量的需求。

應用:央行的數字貨幣、布萌區塊鏈。

PBFT 拜占庭容錯演算法

根據 practical byzantine fault tolerance and proactive recovery 整理 practical byzantine fault tolerance and proactive recoverym.castro and b.liskov.2002....

PBFT 拜占庭共識演算法

pbft演算法是根據拜占庭問題演變而來的拜占庭共識演算法。在拜占庭問題被提出後一直有各種共識演算法來解決拜占庭問題,但是無論從執行流程的複雜度還是演算法效率來說,pbft是目前公認效率最好的演算法。該演算法是miguel castro 卡斯楚 和barbara liskov 利斯科夫 在1999年提...

解釋拜占庭容錯

拜占庭將軍問題很多人可能聽過,但不知道是什麼意思,本文從非專業的角度來講講,拜占庭將軍問題到底是說什麼的。拜占庭將軍問題 byzantine generals problem 首先由leslie lamport與另外兩人在1982年提出,很簡單的故事模型,卻困擾了計算機科學家們數十年。故事大概是這麼...