PBFT算法的相关问题

Posted keichiu.cheong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PBFT算法的相关问题相关的知识,希望对你有一定的参考价值。

PBFT(99、02年发了两篇论文)-从开始的口头算法(指数级)到多项式级

要求 n>3f

why:

  个人简单理解:注意主节点是可以拜占庭的,从节点对于(n,v,m)的投票最开始也是基于主节点给的(n,v,m)。那么N个中其实有f个拜占庭,以及f个可能被拜占庭节点影响的好节点(好节点可能没收到所有应答或者收到了来自拜占庭的错误应答,为什么不能超过f?因为超过f+1可以触发视图更改),所以最后只剩下N-2f,必须大于f(f个可能的来自拜占庭节点的决策)

 

  prepare阶段保障的是safety,确保至少有f+1个好节点收到了同样的(n,v,m)的投票,commit阶段其实为了保障liveness,保证至少f+1个好节点对于同样的(n,v,m)已经达到了确认提交,提交意味着执行,所以视图变更时,这些已经提交的操作必须传递到下一个视图,不然就得回滚(回滚是复杂的)。所以viewchange的quorum也是2f+1,保证了f+1个好节点与之相交至少存在1个好节点会正确传递上一视图的所有已提交信息,保证了liveness。

  所以quorum都是2f+1是因为这里面f个应答可能是来自拜占庭节点的

以上是关于PBFT算法的相关问题的主要内容,如果未能解决你的问题,请参考以下文章

共识算法系列之一:raft和pbft算法

PBFT && RBFT算法流程

共识算法系列之一:私链的raft算法和联盟链的 pbft 算法

PBFT算法java实现

深入剖析区块链的共识算法 Raft & PBFT

RAFT与PBFT