N. Shrestha, R. Shrothrium, A. Kate and K. Nayak, “Sailfish: Towards Improving the Latency of DAG-Based BFT,” 2025 IEEE Symposium on Security and Privacy (SP), San Francisco, CA, USA, 2025, pp. 1928-1946, doi: 10.1109/SP61157.2025.00021. keywords: {Privacy;Fault tolerance;Directed acyclic graph;Protocols;Fault tolerant systems;Throughput;Complexity theory;Proposals;Security;byzantine fault tolerance;dag-based consensus;partial synchrony;latency},
一、动机
现有 DAG-based BFT 共识协议吞吐高,但确认(commit)延迟很大;尤其是无法做到“每一轮都有 leader 且低延迟提交”。
在区块链 / BFT 共识里,有两个关键性能指标:
- 吞吐量(throughput):单位时间处理多少交易
- 延迟(latency):一笔交易多久能最终确定(commit)
现有的DAG-based BFT(如 Bullshark、Shoal、Mysticeti)吞吐高(所有节点并行提议)但延迟高(leader 提交慢)。
Sailfish 的目标就是:在保持 DAG-based 高吞吐的同时,把提交延迟降到和“传统 leader-based BFT”一样低
二、现有DAG-based BFT为什么延迟高?
为什么 DAG-based BFT 天生延迟高
1、DAG-based BFT 的基本结构
- 系统按 round(轮)运行
- 每一轮:
- 所有节点都提议一个 vertex(区块)
- vertex 指向上一轮 ≥2f+1 个 vertex(形成 DAG)
- 真正决定顺序的不是所有 vertex,而是 leader vertex
2、现有协议的关键限制
以 Bullshark / Shoal 为代表:
- leader 不是每轮都有
- Bullshark:每 2 轮一个 leader
- leader 提交要等“投票轮”
- leader 在 r 轮提出
- r+1 轮大家“投票”
- r+2 才安全提交
- 每轮无法有多个leader
- leader 的 commit 规则依赖于“每个 proposer slot 都要和其它 slot 有链接”
这在 每轮多个 proposer 的 DAG 中是做不到的。
- leader 的 commit 规则依赖于“每个 proposer slot 都要和其它 slot 有链接”
三、Sailfish 的核心突破。
允许 leader 每一轮出现,但要求:要么“明确链接前一个 leader”,要么“证明前一个 leader 不可能被提交”。

图一、DAG-based BFT 协议效果对比图
四、关键创新:No-Vote Certificate(NVC)
1、什么是 No-Vote Certificate?
- NVC = 2f+1 个节点的“我没给上一轮 leader 投票”证明
- 含义: 上一轮 leader 不可能被提交
2、 Sailfish 对 leader 的强制约束
每一轮的 leader vertex 必须满足:
| 情况 | 要求 |
|---|---|
| 上一轮 leader 可见 | strong path 指向它 |
| 上一轮 leader 不可见 | 携带 NVC 证明它死了 |
五、Sailfish 的提交规则为什么更快?
1、Sailfish 观察到:RBC 的第一个消息(first message)如果 sender 是诚实的,它一定等于最终 deliver 的值。
2、Sailfish 的提交条件只要看到:2f+1 个“下一轮 vertex 的首消息”且它们都 strong-path 指向当前 leader, 可以直接提交。
提交的安全性分析:2f+1 中至少 f+1 来自诚实节点。这些值最终一定 deliver,后续 leader 必然能“看到”当前 leader。
六、Multi-leader Sailfish:拓展到每轮多领导者进一步加速
1、思路
- 每轮选:
- 1 个 main leader
- 多个 secondary leader
- main leader:
- 负责保证安全(链接 / NVC)
- secondary leader:
- 在“乐观条件”下可以同轮提交
2、结果
- 多个 leader vertex
- 都能在 1 RBC + δ 内提交
- 非乐观情况:
- 退化为 Sailfish,不破坏安全
七、实验结果

图二、实验结果图
关键结论
- 延迟降低
- 比 Bullshark 低 ≈ 25%
- 比 Shoal 低 ≈ 20%
- 吞吐不降,略有提升
- 在 单个 Byzantine leader 故障下仍优于现有方案
本文主要参考和使用了论文中展示的图片,以下给出相关链接。