美文网首页
PBFT协议为什么要求N>3f+1

PBFT协议为什么要求N>3f+1

作者: Simth | 来源:发表于2017-11-03 17:06 被阅读923次

最坏的情况是:f个节点是有问题的,由于到达顺序的问题,有可能f个有问题的节点比正常的f个节点先返回消息,又要保证收到的正常的节点比有问题的节点多,所以需要满足N-f-f>f => N>3f,所以至少3f+1个节点

为什么至少要2f个prepare (包括自己的pre-prepare共2f+1). 这是因为之前论证的如果有f个fault 节点, 那么节点总数至少是N=3f+1. 简单说一下论证过程, 假设总数N个节点, f个fault节点, 那么必须接收到N-f个消息应答, 就能够判断出结果(因为fault节点可能不发送应答). N-f个应答中有f个可能是假的(fault节点发出的), 那么真实的是N-f-f, 要求真实的应答大于假的应答, 即N-f-f > f ==> N > 3f. 所以: N_min = 3f + 1所以在prepare和commit两个阶段必须收到2f+1(包括自己) 的应答消息, 才能证明有f+1非fault节点发送了应答.(注意前提是非fault对于相同的消息, 会产生相同的消息应答)那么这里也有个问题: 就是接收2f+1个消息的时, 判断是否一致, 是否需要对比数据的的签名. 我的看法是, 如果2f+1个v,n都相同, d(m)只需要f+1相同就可以了. 否则就共识失败了.

作者:wchh
链接:https://www.zhihu.com/question/59868717/answer/227016901
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章

  • PBFT协议为什么要求N>3f+1

    最坏的情况是:f个节点是有问题的,由于到达顺序的问题,有可能f个有问题的节点比正常的f个节点先返回消息,又要保证收...

  • MOAC墨客问答:子链

    综合 为什么我们需要子链?子链可以有自己的协议,比如POS、PBFT或任何用户自定义协议,以满足用户的需求。此外,...

  • PBFT N=3f+1 threshold的理解 [转]

    The resiliency of our algorithm is optimal: 3f + 1 is the...

  • 区块链笔记——PBFT

    PBFT是实用拜占庭容错的简称,是解决拜占庭将军问题的一种方案。比起最开始的BFT算法,PBFT额外要求网络封闭,...

  • PBFT详细分析n大于3f+1

    Practical Byzantine Fault Tolerance Suppose you have N re...

  • 实用拜占庭容错算法

    实用拜占庭容错系统(PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别(Polynomial),使...

  • 3.2 共识算法 - PBFT

    共识算法 - PBFT 本文翻译自博客 - Introduction to Sawtooth PBFT 和 pBF...

  • 初链-混合共识协议PBFT和PoW的结合 -解读truechai

    初链-混合共识协议PBFT和PoW的结合 -解读truechain黄皮书 区块链架构是一种分布式的架构,多个主...

  • 协议(protocol)

    协议语法 遵守协议的格式 属性要求 例子 协议中定义类型属性 例子 方法要求 例子 Mutating方法要求 例子...

  • PBFT

    HydraChain ConsensusTendermint Byzantine Consensus Algori...

网友评论

      本文标题:PBFT协议为什么要求N>3f+1

      本文链接:https://www.haomeiwen.com/subject/rintmxtx.html