PBFT 为什么PBFT 需要2次Prepare

主题:“PBFT” 对于区块链从业者而言都很是耳熟能详的名词了,大家也都知道PBFT是拜占庭容错算法

但是有没有人想过为什么PBFT 需要2次Prepare?

对于 这个知识点,我们需要了解PBFT pre_ prepare和 prepare是干嘛的.

先用一个例子解释PBFT工作原理

故事:某公司远程开会,需要投票表决某一个事项,但是开会的成员不一定在听,投票表决只有Yes和No,那么假设有b(bad boy)个人没有认真听,那么需要多少人投票表决才可以算通过呢?计算过程:先假定人数n,我们看看n至少是多少。那么正常的收到消息n-b,判断标准,我们至少需要b+1 个人通过(b+1说明,在以知的b个拜占庭节点后,还收到b+1个一致的节点,说明这个消息是正确的),但是不确定里面的n-b个人是不是也是有没有认真听的人,所以我们最终的结论是:n-b-b>b,所以,n>3b, 这也就是为什么pbft需要保证。

那为什么需要pre_prepare 和 prepare 这两次呢?

那就需要了解pre_prepare和prepare是干嘛的和整个算法有什么关联就好了。

先看看pre_prepare:

pre_prepare 工作:  

      leader节点:向所有节点发出pre_prepare消息,进入prepare阶段。

      普通节点:收到Pre_prepare消息,进入prepare阶段

再看看prepare阶段:

      所有节点都会验证pre_prepare 消息(massage)然后验证消息是否合法,然后将自己的 节点信息和投票结果封装进 massage,并且向其他节点广播。然后统计收到的其他节点发送的(封装后的massage结果),如果统计投票赞成的投票数量大于(2n/3)接着进入commit阶段。

PBFT 为什么PBFT 需要2次Prepare_第1张图片 泰岳PBFT

 

      以上是个人理解。欢迎讨论。

 

 

 

你可能感兴趣的:(泰岳区块链)