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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章