Chitu: Avoiding Unnecessary Fallback in Byzantine Consensus (ATC 2025)

一句话总结:基于 Fair-Fallback 框架的异步 DAG-based BFT 协议,最佳情况下 4 个 message delay 提交、绕过 leader/random coin 等 fallback,相比 Tusk 端到端延迟降低最多 82.5%。

问题

BFT 共识两条主流路径都有缺陷:1) 部分同步协议(PBFT、HotStuff、BullShark)依赖单一 leader 与同步假设,leader 故障要走昂贵的 view change,WAN 上网络抖动可能陷入连环换主;2) 异步协议(Tusk、DAG-Rider、Honeybadger)靠随机硬币(threshold signature)保证概率 termination,但 coin-flipping 永远在关键路径上,比同步对应物多几轮通信。一次提议是否需要 fallback(leader/coin)应当取决于运行时——若 correct nodes 对某 proposal 已无分歧,就不该走 fallback。

核心方法

  • Fair-Fallback 框架:correct nodes 先尝试纯消息交换达成共识(fast path 无 leader、无同步假设),仅当对某 proposal 出现分歧时才回退到 leader 选举或 random coin。fast path 与 fallback 在统一的 DAG 上并发推进,无显式切换。形式化两个 invariant 保证 fast path 与 fallback 的提交集合一致。
  • Chitu 协议:基于 Tusk/DAG-Rider 的 DAG,每节点每 round 提议一个 vertex 经 BRB(Byzantine Reliable Broadcast,2 阶段)分发,每个 vertex 连 ≥ 条边到上一 round。一个 round-r vertex u 的状态:被 round 中 ≥ 个 vertex observe → 1-valent;被 ≥ 个不 observe → 0-valent;中间 → bivalent。Fast path:若 round r 所有 vertex 都已 univalent,立即 commit 1-valent 集合,比 Tusk 节省至少 4 轮。Normal path:用 random coin 在偶数(奇数)round 选 leader vertex 决定之前未决 round。
  • Adaptive wait 机制:节点在 deliver 个 vertex 后不立即进入下一 round,而是继续等待 pre-accepted(被 个节点收到)的 vertex 到达,并主动转发其 VAL/PREPARE 消息。这增加 round 间边的数量,让更多 vertex 落入 1-valent 区间,大幅提升 fast path 命中率。

实现:Golang,BLS 阈值签名做随机硬币。深度细节回 atc2025-huang-rongji

关键结果

  • AWS EC2 跨 5 区域,n=4 时端到端延迟比 Tusk 降低 82.5%(440ms vs 2519ms),n=10 降低 82.2%
  • 最优情况 4 message delays 提交(Tusk 14.5);正常 9 个、最坏 15 个;期望复杂度仍
  • n=4 fault-free 下 99.5% vertex 走 fast path(无 wait 机制只有 12%)
  • crash fault 下仍稳定走 fast path,BullShark 性能受影响显著
  • 即便强制走 random coin,性能 graceful degrade
  • 局限:fast-path 命中率随节点数 衰减
  • 开源:https://github.com/Decentralized-Computing-Lab/ChituBFT

相关