每个 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
消息(不算自己的) .那么他们怎么可能收到2f
PREPARE
消息来启动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.
有更正式的方法来证明证明,但希望这会有所帮助。
在实用拜占庭容错 (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
消息来启动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.
有更正式的方法来证明证明,但希望这会有所帮助。