为什么PBFT中需要2f+1
作者:互联网
文章目录
0. 写在前面
关于PBFT
中为什么需要2f+1个Prepare
/Commit
的问题,网上其实有很多博客和文献来阐述,如这篇博客PBFT中的几个重要参数以及这本书"Introduction to reliable and secure distributed programming"。
这些博客和文献大都采用了比较理论的证明方式,使用了Quorum
的概念。即拜占庭网络中的Quorum
值是2f+1,因此PBFT
中必须使用2f+1这个参数。这种证明方式总的来说是比较抽象的。
本文和上面那些博客和文献不同,打算用通俗易懂的例子进行说明。具体来说,是通过举一些反例,即:如果少于2f+1会怎么样?
1. Prepare阶段为何需要2f+1?
Prepare
阶段时,为何要确认接收到了2f+1条消息
答:
主要是考虑到Primary
节点的作恶问题。
- 若
Primary
节点是诚实的,f+1就足够了 - 考虑到
Primary
节点可能会作恶,必须要收到2f+1条消息。假如只要求收到2f条消息:Primary
节点是作恶的,另外还有f-1个节点也是作恶的(假设这f个恶意节点构成集群B
),剩下的2f+1个节点都是正确的。那么Primary
节点坑会给f个正确节点发送a=1
的PrePrepare
消息(假设这f个正确节点构成集群C
),给另外f+1个正确节点发送a=2
的PrePrepare
消息(假设这f个正确节点构成集群D
)。同时,另外集群B
中的恶意节点也会给集群C
中的正确节点发送a=1
的Prepare
消息,给集群D
中的f+1个正确节点发送a=2
的Prepare
消息。集群C
和集群D
中的节点也都会向彼此发送Prepare
消息。此时,对于集群C
中的节点,其可能收到1个a=1
的PrePrepare
消息,f-1个a=1
的Prepare
消息(从集群B
收到),和f个a=1
的Prepare
消息(从集群C
中收到,包括自己的)。总计2f条消息,从而得到a=1
的结论。另一方面,对于集群D
中的节点,其可能收到1个a=2
的PrePrepare
消息,f-1个a=2
的Prepare
消息(从集群B
收到),和f+1个a=2
的Prepare
消息(从集群D
中收到,包括自己的)。总计2f+1条消息,从而得到a=2
的结论。也即集群C
和集群D
中的节点得出了不一样的结论,没能达成共识。
2. Commit阶段为何需要2f+1?
说到这里,另外一个疑问是:既然Prepare
阶段已经去除了Primary
作恶的影响了,为什么到了Commit
阶段还是要求2f+1呢?
答:这需要首先回顾一下上一篇博客中关于Commit
阶段必要性的分析。简而言之:Commit
阶段配合View Change
机制保证了节点状态在不同的View
中也可以保持一致。
基于该理解,之所以Commit
阶段也要求收到2f+1个Prepared
消息,是因为恶意节点可能在当前View
中发送了Prepared
数据,但在View Change
的时候故意不发送该Prepared
数据。
举例来说:假设PBFT
集群中有4个节点:A
、B
、C
、D
,其中节点D
是恶意节点,并且假设上一轮View
中,A
是主节点。如果只需要2f个Prepared
数据,节点C
在收到D
的Prepared
数据后,加上自己的Prepared
数据就达到了2f个的计数,从而提交了(也即执行了相应的交易)。此时A
和B
都还没有到达Prepared
状态。并且,在此时发生了View
切换的操作,下一个主节点是B
。B
节点收到了包括自己
、A
和D
的VIEW-CHANGE
消息后,就发起了NEW-VIEW
消息。但由于A
和B
都未在上一轮View
中到达Prepared
状态,因而其VIEW-CHANGE
消息中不包含相应的Prepared
数据;而D
是恶意节点,故意在VIEW-CHANGE
消息中不包含相应的Prepared
数据。因此,上一轮在节点C
中Commit
了的数据在新的View
中,未能被NEW-VIEW
包含,从而可能在后期被其他节点执行矛盾交易,造成集群中节点状态的不一致。
参考文献
- 实用拜占庭容错算法(PBFT)
- PBFT中的几个重要参数
- Cachin C, Guerraoui R, Rodrigues L. Introduction to reliable and secure distributed programming[M]. Springer Science & Business Media, 2011.
标签:PBFT,为什么,Prepare,Prepared,2f,集群,消息,节点 来源: https://blog.csdn.net/u014633283/article/details/112517885