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

DAG-BFT

把数据传播和排序拆开:验证者并发广播交易批次,用证书(或无证书的引用)织成 DAG,共识只在 DAG 上选一刀切齐的提交切面。数据面解决可用性,排序面解决最终性。模型仍是 BFT 的 \(n \ge 3f+1\)。

Narwhal(数据面)

每个验证者跑若干 worker:

  1. Worker 收集交易,打成 batch,广播。
  2. 其它验证者存储后回签名。
  3. \(2f+1\) 个签名形成 certificate,证明该 batch 可用(至少 \(f+1\) 个诚实节点持有)。
  4. Primary 把证书广播。新证书引用上一轮若干证书,形成 round 索引的 DAG。

诚实验证者每 round 至少一个证书(自己的或超时后的空块)。DAG 边是可用性证明,不是执行顺序。通信与存储随 worker 数水平扩展,共识消息只搬运证书哈希。

排序面

协议网络做法
Tusk异步随机选锚点,递归提交因果前驱
Bullshark部分同步固定 round 的锚点,GST 后无额外随机延迟
Jolteon + Quorum Store部分同步数据面 Narwhal 化,排序仍用 HotStuff 两链

提交规则(Bullshark 形状):在偶数 round 的锚点证书获得足够子引用后,其因果历史一次性 commit。已提交证书不再回滚。应用按确定性拓扑序(作者、round、哈希)把 DAG 线性化成交易流。

形状示例:round 索引的证书互相引用,箭头表示对证书的引用关系:

flowchart LR
  A1[A1] --> B2[B2] --> A3[A3]
  B1[B1] --> A2[A2] --> C3[C3]
  C1[C1] --> C2[C2] --> B3[B3]
  C1 --> B2
  A2 --> B3
  B1 --> C2
  C2 --> A3

若 \(A3\) 是偶数 round 锚点且获得足够子引用,则 commit 其因果前驱 \(A1,B1,C1\) 及 \(A2,B2\) 等可到达集——排序面只看引用闭合,不看交易内容。

Sui:Mysticeti

Sui 先用 Narwhal-Bullshark,后换 Mysticeti:无证书 DAG,块直接引用 \(2f+1\) 个前驱。少一轮签名聚合,提交延迟降到 2–3 次广播。隐式 commit 规则在 DAG 图案上识别,不跑独立的 HotStuff 视图。对象级因果允许无冲突交易并行提交,这是执行模型,不是共识阈值的放宽。

Aptos:Quorum Store

Aptos 排序仍是 AptosBFT(HotStuff 两链 + 超时证书)。Narwhal 思想用在 Quorum Store:交易批次先散到验证者并收集签名,提案只带批次证明,领导者不再塞满交易体。共识带宽与 mempool 解耦。

对照

经典 HotStuffNarwhal + BullsharkMysticeti
数据传播跟提案走证书 DAG无证书块 DAG
排序领导者 QC 链锚点切面DAG 图案隐式 commit
领导者瓶颈出块与带宽仅证书弱化
最终性\(k\)-chain QC切面确定切面确定

与 Avalanche Snow 的差别:DAG-BFT 仍收集 \(2f+1\) 可用性或引用,提交是确定的;Snow 用 \(k\)-抽样,提交是高概率的。