在实际的拜占庭容错(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
消息以启动法定人数并进入下一阶段?
答案 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。
有更多正式的方式来证明这个证据,但希望这会有所帮助。