Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

BFT 模型

拜占庭容错允许部分参与者任意偏离协议,包括停机、发送矛盾消息和伪造自身状态。复制状态机要求诚实副本在相同历史上执行相同操作,并在网络与故障假设满足时持续推进。

故障模型与法定人数

模型故障行为常见配置法定人数
CFT停机、重启、暂时失联,非恶意协议执行n = 2f + 1多数,即 f + 1
BFTCFT 故障及任意恶意行为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。

协议阶段

  1. 领导者提出操作或区块,副本验证其内容及父历史。
  2. 副本按本地证据和投票规则签署消息,形成法定人数证书。
  3. 达到具体协议的提交条件后,按序应用到状态机。
  4. 领导者失效时推进轮次,并保留安全所需的证据。

PoW 的链权重与概率确认、PoS 的参与权重,以及 BFT 的证书和提交机制属于不同维度。开放参与系统可以用质押建立委员会,再在委员会内运行 BFT。

参考资料