每个备份/节点如何在PBFT中获得2f回复?

时间:2018-05-04 08:20:13

标签: hyperledger-fabric blockchain fault-tolerance

在实际的拜占庭容错(PBFT)中,我理解的方式需要3f+1的原因是为了允许最坏的情况:

1. f+1 nodes are normal
2. f nodes are unresponsive
3. f nodes are faulty

因此,在PREPARE阶段,每个节点如何从其他节点接收2f个类似PREPARE个消息以启动COMMIT阶段?

由于只有f+1个节点可以可靠地发送相同的PREPARE消息,因此每个节点只应接收相同f消息的PREPARE(不计算自己的消息)。那么他们如何才能收到2f PREPARE消息以启动法定人数并进入下一阶段?

1 个答案:

答案 0 :(得分:2)

以下断言不正确

1. f+1 nodes are normal
2. f nodes are unresponsive
3. f nodes are faulty

3f + 1 表示PBFT仅容忍 f 故障节点,其中故障表示不可用,无响应或恶意。

PBFT专注于满足安全性(结果在所有节点上都是有效且相同的)和活跃度(不会失败的节点始终产生结果)属性。< / p>

要实现活跃,必须有一个未失败的法定人数(Q)。因此,给定N个节点和f个故障节点,最终得到

Q&lt; = N-f

对于安全,两个法定数量的交集必须包含至少一个非故障节点。因此,给定N个节点和仲裁大小Q,对于两个相交的仲裁,必须满足以下条件:

2Q - N&gt; f =&gt; N + f < 2Q(因为所有f节点都可能是恶意的) 召回活跃度Q&lt; = N-f,所以

2(N-f)-N> f =&gt; N> 3F

假设N = 3f + 1并且再次对于活跃度N + f <1。 2Q =&gt; (3f + 1)+ f&lt; 2Q这意味着拜占庭案件中安全的最低法定人数现在是2f + 1。并且由于在存在f个故障节点(2f + 1 + f)的情况下必须有法定数量,因此得到3f + 1。

有更多正式的方式来证明这个证据,但希望这会有所帮助。