PBFT(拜占庭容錯)

PBFT(拜占庭容錯)

基於拜占庭將軍問題,一致性的確保主要分爲這三個階段:預準備(pre-prepare)、準備(prepare)和確認(commit)。流程如下圖所示:
其中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 11
B1 1 1 11
C1 1 1 11
D1 1 1 11

 

N=4 F=1 時:

 


得到數據最終數據
A1 1 1 01
B1 1 0 11
C1 0 1 11
D0 1 1 11

 


N=4 F=2 時:

 


得到數據最終數據
A1 1 0 0NA
B1 0 0 1NA
C0 0 1 1NA
D0 1 1 0NA

 

由此可以看出,拜占庭容錯能夠容納將近1/3的錯誤節點誤差,IBM創建的Hyperledger就是使用了該算法作爲共識算法。
發佈了21 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章