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+1 的 quorum 至少共享 f+1 个副本,其中至少一个正确;配合 view-change 证据选择规则,可阻止同一视图与序号上的冲突请求被提交。

直觉

多一轮全体确认把“大家看到 primary 的提案”升级为“大家知道足够多副本也看到了同一提案”,使视图更换时能安全继承已接近提交的请求。

例子与边界

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

推论与应用

PBFT 把拜占庭共识落地为可线性化服务复制,并引入 checkpoint、日志截断和 view change 等完整机制。它的正常路径通信为副本间二次量级,后续 BFT 协议大量研究降低通信、延迟和副本开销。

参考资料
  • 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。