BFT 模型
拜占庭容错允许部分参与者任意偏离协议,包括停机、发送矛盾消息和伪造自身状态。复制状态机要求诚实副本在相同历史上执行相同操作,并在网络与故障假设满足时持续推进。
故障模型与法定人数
| 模型 | 故障行为 | 常见配置 | 法定人数 |
|---|---|---|---|
| CFT | 停机、重启、暂时失联,非恶意协议执行 | n = 2f + 1 | 多数,即 f + 1 |
| BFT | CFT 故障及任意恶意行为 | n = 3f + 1 | 常见阈值 2f + 1 |
这里 n 是参与副本数,f 是容忍故障数。对一般 n,CFT 多数应写为 floor(n/2)+1;不能在 n≥2f+1 时仍把 f+1 一律称为多数。
BFT 的阈值也需匹配委员会规模。两个大小为 q 的投票集合至少相交 2q-n 个节点;若最多 f 个节点作恶,保证交集中有诚实节点需要:
$$ 2q-n>f $$
当 n=3f+1、q=2f+1 时,交集至少 f+1 人。任意 n≥3f+1 的配置不能不加分析地沿用相同 2f+1 门槛。按权益投票的协议使用权重,而非简单节点人数。
CFT:Raft 与 Paxos
Raft 通过任期、领导者选举和日志匹配约束复制日志。持久化规则要求投票及日志等必要状态在响应相关请求前保存;已经提交的日志不会因协议允许的正常崩溃恢复而任意丢失。
未提交日志可能在新领导者下被覆盖。多数复制与提交规则还涉及日志任期条件,因此“收到多数响应”不能脱离协议上下文直接解释为任何条目都已提交。
Paxos 同样依靠法定人数与跨轮承诺维持一致性。二者的 CFT 保证不覆盖恶意参与者谎报、双发或违背持久化约束。应用背书或交易校验不能自动将 CFT 排序转换为 BFT 排序。
Safety 与 Liveness
- Safety(一致性):诚实副本不会最终提交互相冲突的值或历史。
- Liveness(活性):在协议要求的参与和网络条件下,合法输入最终得到处理。
在纯异步网络中,即使仅允许一个崩溃故障,确定性共识也无法无条件保证终止。部分同步协议通常在任意延迟期间维持安全,并在网络稳定后恢复活性;随机化异步协议使用不同的终止条件。
网络模型
| 模型 | 时间假设 | 影响 |
|---|---|---|
| 同步 | 消息延迟有已知上界 | 可按上界设计轮次 |
| 部分同步 | 存在稳定时刻 GST,之后延迟满足上界 | 稳定前可能停滞,稳定后满足活性条件 |
| 异步 | 没有消息延迟上界 | 超时不能证明对方故障;活性通常需随机化等条件 |
身份认证、消息可验证性和委员会变更规则也是安全假设的一部分。不同 BFT 协议不能只按投票数量比较其保证。
证书相交与跨轮安全
同一轮中,若诚实节点对冲突提案最多投一次票,法定人数相交可排除两个冲突证书。但不同轮次的冲突证书可能出现,节点也可能在不同阶段对不同提案投票。
跨轮安全依赖锁定、证书选择、视图切换和提交规则。例如 PBFT 转移准备证据,HotStuff 约束可扩展的证书链,CometBFT 通过锁定及有效轮信息限制投票。单独一个 QC 不等同于最终提交。
Streamlet 根据连续三个 epoch 的相邻已公证块终局中间块及其祖先,不能概括为两轮投票即可提交,见 Streamlet。
协议阶段
- 领导者提出操作或区块,副本验证其内容及父历史。
- 副本按本地证据和投票规则签署消息,形成法定人数证书。
- 达到具体协议的提交条件后,按序应用到状态机。
- 领导者失效时推进轮次,并保留安全所需的证据。
PoW 的链权重与概率确认、PoS 的参与权重,以及 BFT 的证书和提交机制属于不同维度。开放参与系统可以用质押建立委员会,再在委员会内运行 BFT。