Skip to content

实用拜占庭容错

Practical Byzantine Fault Tolerance · PBFT

在部分同步网络与至多 f 个拜占庭副本下使用 3f+1 副本实现状态机复制的协议。

条目类型
模型

形式陈述

PBFT 是在认证异步网络中实现确定性状态机复制的经典拜占庭容错协议。系统以 n3f+1 个副本容忍至多 f 个拜占庭故障。正常视图由 primary 为客户端请求分配序号并发送 pre-prepare;某副本在日志中已有该消息,并收集来自不同备份的 2f 条匹配 prepare 后达到 prepared,随后广播 commit;它在自身已 prepared 且收到来自不同副本的 2f+1 条匹配 commit 后达到 committed-local,再按序执行。大小为 2f+1Byzantine quorum交叠出至少一个正确见证者;配合 view-change 证据选择规则,可阻止同一视图与序号上的冲突请求被提交。

直觉

PBFT 的两轮副本投票分别建立“足够多节点接受同一序号—摘要”与“足够多节点知道该接受状态已广泛形成”。quorum 计数保证证书交叠,协议规则则保证交集中的正确节点不为同一视图、序号支持冲突值;view change 再携带 prepared 证据,使新 primary 不能遗忘已经获得安全锁定的请求。

PBFT 正常路径与证书阈值
例子与边界

f=1 时需 4 个副本:达到 prepared 需要一条匹配 pre-prepare 与来自两个不同备份的 prepare,本地提交还需三条匹配 commit。primary 停顿或作恶会触发 view change,由新 primary 依据带证据的历史继续。PBFT 的 safety 不依赖已知消息延迟界;liveness 需要网络最终足够及时且正确 primary 最终稳定。消息认证阻止冒充正确副本,但故障副本仍能签发冲突消息。协议假设副本执行确定性操作或以受控方式处理非确定性。

f=1 时四副本中的任意三个提交 quorum 相交至少两副本,其中至少一个正确;因此两份冲突提交证书不可能同时形成。恶意 primary 可向不同备份发送不同摘要,但正确备份只对与其 pre-prepare 匹配的值 prepare,无法凑出两组合法证书。客户端通常等待 f+1 个相同回复,保证其中至少一个来自正确副本;只收到单个签名回复不足以排除 Byzantine 欺骗。

推论与应用

拜占庭故障下的状态机复制由认证消息与 quorum 证书实现,底层是消息传递。PBFT 的正常路径、checkpoint 与 view change 成为后续 BFT 协议的基线;经典正常路径需要副本间二次量级通信,后续协议常围绕降低消息数、延迟和副本开销改进。安全性依赖交集与锁定规则,活性则依赖部分同步和正确主节点,二者不能用“有 3f+1 副本”一句话同时推出。

参考资料
  • Miguel Castro and Barbara Liskov, “Practical Byzantine Fault Tolerance,” OSDI 1999,Full paper, §§2–4, system model, normal-case protocol, checkpoints, and view changes。
  • Nancy A. Lynch, Distributed Algorithms, Morgan Kaufmann, 1996,Chs. 14–17, Byzantine agreement and state-machine replication context。
关系图谱11 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系

实现的抽象