十问PBFT算法

(1) 什么是PBFT算法?

PBFT是BFT类中首个工作在弱同步网络下的实用算法,该算法是基于消息传递的一致性算法,在弱同步网络下,算法经过三阶段(两次投票)可以达成一致性,算法复杂度为O(N^2),在无法达成一致性时,重复执行这些阶段,直至超时。PBFT算法由一致性协议,检查点协议,视图更换协议组成。PBFT是很多区块链项目【Tendermint,hashgraph等】共识算法的基础。

其他实用的BFT算法
十问PBFT算法_第1张图片

(2) 大家脱口而出的公式N=3f+1是怎么得来的?

记系统中拜占庭节点数为f,记N为系统中总的节点数,其中non-faulty节点的数量需满足:#(non-faulty)=N-f-f>f,这个不等式的含义是正常运作【即遵守协议步骤,及时响应相关消息】的节点数需要大于拜占庭节点数。不等式左边的2个f分别表示f个faulty节点【不响应1】和f个non-faulty节点【不响应2】。显然,N>3f。因此N的最小取值是N_min=3f+1。

不响应1:faulty节点不响应很正常,有可能宕机或存心不响应

f个non-faulty不响应可能是1)pre-prepare阶段没有收到primary的消息【可能是faulty节点延迟消息,也可能是消息丢失,…】;2)prepared阶段没有收到(至少)2f+1个一致的投票(其中包括自己的投票)。
##(3) 系统中总的节点数最好满足N=3f+1。
因为多余的节点并没有提升容错能力,反倒是因为需要交换更多的消息降低了性能。因此,建议在拜占庭容错的场景中,系统中总的节点数满足等式N=3f+1。

(4) 为什么客户端需要从不同节点等待(f+1)个相同的reply? 只要f个不行吗?

假设只需要从f个不同的节点那里拿到相同的reply,但我们不得不考虑一种情况,即这f个相同的reply全是来自f个faulty节点【系统中至多有f个faulty节点】。如果真是这样的话,很有可能客户端就得到错误的结果。因此为了进一步增强reply的可信度,我们需要来自不同节点的总计(f+1)个相同reply。多出的那一个可以作为对比!

(5) PBFT经过几轮可以达成一致性?

首先我们来说一下问题中轮的含义。

如果轮是指客户端发起一次请求到收到(f+1)个reply,那(至少)需要1轮就可以达成一致【因为有可能重复进行三阶段直到超时】。

如果轮是指通信轮数,那从备份节点(replica)接收到主节点(primary)的pre-prepare消息开始算起,到备份节点收到(至少)2f+1个commit【包括自己的commit】为止,进行了三轮通信。也就常说的经过3轮达成一致。

(6) prepare(或commit)阶段为何都要(至少)2f+1个备份节点的prepares(或commits)【包括自己的】?

某备份节点i收到来自faulty的f+1个相同的prepares(或commits),如果这f+1个prepares(或commits)中包含的f个faulty备份节点的消息,这是不能达成一致的。因为这f个faulty备份节点可以完全给备份节点j发送另外的不一致(相对于节点i来讲)的消息,这样系统中就存在两种投票结果,不能达成一致。因此,必须(至少)2f+1个相同的prepares(或commits)才能保证f+1个non-faulty备份节点正常。此时,即便f个faulty备份节点给其他节点发不同的消息也没戏【至多只有2f个相同的prepares或commits】,f+1个non-faulty备份节点已经达成一致,在数量上占多数【2f+1>2f】。

理解这个问题的核心是要记住faulty备份节点的行为是任意的,他可以延迟消息到达non-faulty的时间【最终会到达】,重发消息,对消息乱序,给不同的备份节点交付不一样的消息等等。

(7) 在一个节点数为N的系统中,诚实节点数有多少?

#(non-faulty)=(2/3)*N+1

(8) CAP定理在PBFT算法中是如何取舍的?

PBFT算法将一致性(C)摆在首位,对可用性(A)作了妥协。一旦faulty节点的数量超过f,该系统就不能继续执行客户端的请求【系统会卡住,不能做写操作】。此外,分区容忍是必须要保证的。

(9) PBFT算法是如何绕过FLP不可能结论?

【FLP impossibility result】在异步网络中,即便只存在一个faulty进程,也不存在解决一致性的确定性算法。

这个结论有两个地方可以做文章,1)异步网络;2)确定性算法。PBFT在网络上做了文章,PBFT是工作于弱同步网络下的的一致性算法,它假设客户端发起的请求到达备份节点的延时不是无限的。

(10) 能不能不要commit阶段?

Todo

你可能感兴趣的:(concensus,science)