每个 backup/nodes 如何在 PBFT 中获得 2f 回复?

How does each backup/nodes get 2f replies in PBFT?

在实用拜占庭容错 (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 消息(不算自己的) .那么他们怎么可能收到2fPREPARE消息来启动quorum并进入下一阶段呢?

以下说法不正确

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

3f+1 意味着 PBFT 最多只能容忍 f 个故障节点,其中故障意味着不可用、无响应或恶意。

PBFT 专注于满足 safety(结果在所有节点上有效且相同)和 liveness(不会失败的节点)总是产生一个结果)属性。

要实现活跃度,必须有可用的非故障仲裁 (Q)。所以给定 N 个节点和 f 个故障节点,你最终得到

Q <= N-f

为了安全,两个仲裁的交集必须包含至少一个非故障节点。因此,给定 N 个节点和群体大小 Q,对于两个相交的群体,以下必须成立:

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

2(N-f) - N > f => N > 3f

假设 N = 3f + 1 并再次假设活性 N + f < 2Q => (3f + 1) + f < 2Q 这意味着在拜占庭情况下安全的最小法定人数现在是 2f+1。由于在存在 f 个故障节点 (2f+1+f) 的情况下必须有一个法定人数可用,所以你得到 3f+1.

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