跳转至

共识算法⚓︎

问题导航
  1. 分布式系统中的超过半数规则与拜占庭将军问题(BFT)有何关系?
  2. PBFT 算法的执行阶段为什么需要 Prepare 和 Commit 两次完整的超过 ⅔ 节点确认?

分布式系统中的超过半数规则与拜占庭将军问题(BFT)有何关系?⚓︎

  1. 鸽巢原理与法定人数: 设定读写节点数均超过半数(W+R>N),保证读写集合必有交集,从而实现线性一致性。同时在网络分区时避免脑裂(只允许一个包含多数节点的子网推进状态)。
  2. CFT 模型(崩溃容错): 假设节点仅宕机不说谎,超过半数(N \ge 2f+1)即可容忍 f 个节点故障。
  3. BFT 模型(拜占庭容错): 节点可能发送恶意伪造数据。为确保响应中的诚实节点数压倒恶意节点数,需要满足 N - 2f > f,即系统总节点数必须达到 N \ge 3f+1。因此 BFT 的容错确认阈值提升至超过三分之二。

PBFT 算法的执行阶段为什么需要 Prepare 和 Commit 两次完整的超过 ⅔ 节点确认?⚓︎

  1. Prepare 阶段: 解决视图内一致性。确保在当前视图下,没有任何两个诚实节点会对同一序号接受不同的请求,防止主节点进行分叉攻击。
  2. Commit 阶段: 解决跨视图一致性。进入 Prepared 是局部状态,二次广播 Commit 消息确保全网至少有 f+1 个诚实节点达到 Prepared 状态。若主节点宕机触发视图切换,新主节点收集状态的 2f+1 集合必然包含至少 1 个已 Prepared 的诚实节点,从而保证该状态被新视图严格继承且不可逆转。

评论