形式陈述
PBFT 是在认证异步网络中实现确定性状态机复制的经典拜占庭容错协议。系统以 pre-prepare;某副本在日志中已有该消息,并收集来自不同备份的 prepare 后达到 prepared,随后广播 commit;它在自身已 prepared 且收到来自不同副本的 commit 后达到 committed-local,再按序执行。任意两个大小为
直觉
多一轮全体确认把“大家看到 primary 的提案”升级为“大家知道足够多副本也看到了同一提案”,使视图更换时能安全继承已接近提交的请求。
例子与边界
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。