论文分享 _ Ladder:一种基于收敛的结构化图区块链_2025-06-10
有向无环图可以提升区块链的性能,但是对图进行排序确认需要高昂的计算开销。分享一篇发表于 2025 年 USENIX 会议的论文 Ladder,它提出一种双链结构的图区块链,通过收敛机制有效优化了并行区块处理。
猴先生说:这篇论文的标题其实有点平平无奇,但毕竟是顶会所以很认真地研究了一下。刚开始看的时候,感觉用双链结构也不是啥新鲜的,一个做交易,另一个做区块。但是越往后看,情况变得复杂了。论文的写作严谨,形式化定义清晰,系统解构合理,数学化的分析,充足的实验验证。论文的数学功底很有说服力,所以一定要分享一下这篇好文章。
1 背景介绍
在区块链网络中,节点处理传入的交易,并共同参与共识协议,将交易组装成一个区块,并通过哈希指针将其安全地链接到分布式账本中。在传统的链式结构中,如果不同节点同时生成多个区块,只有一个会被接受,其余的将被丢弃,从而浪费了生成这些区块所耗费的计算资源。相比之下,基于有向无环图(Directed Acyclic Graph, DAG)的结构允许这些区块成为区块链的一部分,使得在生成账本时包含所有区块。
DAG 结构可以大致分为两类:tx-DAG(节点代表交易)和 block-DAG(节点代表由多笔交易组成的区块)。论文关注 block-DAG,因为它们与现有协议的兼容性更好,并且比 tx-DAG 具有更强的可扩展性。尽管 block-DAG 区块链的更广泛结构可以通过并行区块生成直观地提高性能,但也存在如下的安全风险。
- 排序成本较高:当多个有效区块同时生成时,节点需要独立对区块进行排序以保持一致性。
- 确认过程复杂:单笔交易的有效性取决于其相应区块的确认,通常需要复杂的跨区块验证过程。
- 易受平衡攻击:当出现多个候选主链时,缺乏协调导致节点独立做出决策,阻碍了对单一主链的及时收敛。
2 系统模型
论文提出了一种基于 block-DAG 的区块链系统,取名为 Ladder。它由上链(Upper-chain
)和下链(Lower-chain
)两条链组成,如图 1 所示。上链包含交易区块,而下链负责协调上链中分叉区块的收敛。在每一轮中,节点使用工作量证明(Proof of Work, PoW)为上链生成区块。当一轮中生成多个区块时,它们形成一个区块集合。选择其中一个区块作为标准(Standard
)区块,其余的则被指定为分叉(Forked
)区块。上链从标准区块继续延伸,但所有分叉区块都被保留,以保留它们生成过程中所耗费的计算工作。每轮负责的收敛节点默认为上一轮被指定为标准区块的创建节点,由它在下链中记录分叉区块的顺序。如果检测到故障或者在预定义的持续时间内没有生成下链区块,系统将组建委员会并使用拜占庭容错(Byzantine Fault Tolerance, BFT)的共识机制来生成超级(Super
)区块。
下图 2 展示了 Ladder 节点的系统级参与过程。Ladder 运行在一个 δ \delta δ-同步网络假设下,即在正常情况下,诚实节点之间的消息传递在有界时间 δ \delta δ 内完成。系统可以容忍临时中断,例如消息延迟或节点崩溃,只要网络最终能够稳定下来。假设攻击者最多控制总计算能力的 p p p 百分比,其中 p < 30 p < 30% p<30,从而以高概率确保上链 PoW 和下链 BFT 共识的安全性。在 Ladder 中,节点可以作为上链矿工、下链矿工或 BFT 委员会成员参与,并因对区块生成的贡献而获得激励。上链矿工使用 PoW 生成区块。下链矿工负责处理交易排序并生成下链区块。在等待时长超时或出现故障的情况下,BFT 委员会生成超级区块,以确保共识的连续性并维护系统的完整性。
3 符号表示
论文使用有向无环图 G = ( B , V , E ) \mathcal{G}=(\mathcal{B},\mathcal{V},\mathcal{E}) G=(B,V,E) 来建模 Ladder 系统。
区块:用 B \mathcal{B} B 表示所有有效区块的集合。集合 B \mathcal{B} B 包含三种类型的区块:
- B u B^u Bu 表示上链中的所有有效区块;
- B l B^l Bl 表示下链中的所有有效区块;
- B s B^s Bs 表示所有超级区块。
在介绍这三种区块之前,首先引入轮次(round
)的概念。轮次定义了一个区块在上链和下链中的位置。*每一轮从上一轮下链区块的生成开始,到当前轮次下链区块的生成结束。*在每一轮中,下链会新增一个区块,而上链至少新增一个区块。将第 r r r 轮生成的上链区块和下链区块分别记作 B r u B^u_r Bru 和 B r l B^l_r Brl。
Ladder 并不要求所有诚实节点具有相同的轮次编号,因为网络延迟可能导致下链区块在不同时间被接收。轮次编号仅用于跟踪区块顺序并维护本地账本。即使节点暂时处于不同的轮次,系统也会通过区块传播和验证确保最终一致性,这在 δ \delta δ-同步网络模型的范围内是可行的。
上链区块:由节点通过 PoW 共识机制生成,进一步分为标准上链区块和分叉上链区块。链仅从标准上链区块延续,而不是从任何分叉上链区块延续。如图 3 所示。
- 标准上链区块:成为上链一部分的区块被称为标准上链区块。将第 r r r 轮的标准上链区块记作 B r , 0 u B^u_{r,0} Br,0u。 B r , 0 u B^u_{r,0} Br,0u 包含两个哈希指针,一个指向上一轮的标准上链区块 B r − 1 , 0 u B^u_{r-1,0} Br−1,0u,另一个指向下一轮的下链区块 B r − 1 l B^l_{r-1} Br−1l。这一过程如图 3(a) 所示。
- 分叉上链区块:分叉上链区块是由一些节点在标准上链区块生成的同一轮中生成的合法区块。将第 r r r 轮的分叉上链区块记作 B r , i u B^u_{r,i} Br,iu,其中 i = 1 , 2 , 3 , . . . i=1,2,3,... i=1,2,3,...,具体取决于在第 r r r 轮中创建了多少个分叉上链区块。分叉上链区块 B r , i u B^u_{r,i} Br,iu 也包含两个哈希指针,一个指向上一轮的标准上链区块 B r − 1 , 0 u B^u_{r-1,0} Br−1,0u,另一个指向下一轮的下链区块 B r − 1 l B^l_{r-1} Br−1l。这一过程如图 3(b) 所示。
下链区块:下链区块包含有关标准上链区块、任何分叉区块及其相应序列号的信息。下链区块 B r l B^l_r Brl 由在前一轮中生成标准上链区块 B r − 1 , 0 u B^u_{r-1,0} Br−1,0u 的节点在第 r r r 轮中生成。下链区块 B r l B^l_r Brl 包含两个哈希指针,一个指向上一轮的标准上链区块 B r , 0 u B^u_{r,0} Br,0u,另一个指向下一轮的下链区块 B r − 1 l B^l_{r-1} Br−1l。它还包含对第 r r r 轮中所有分叉上链区块的引用链接,有助于收敛上链中的分叉。
- 超级区块 B s B^s Bs:当引用的上链区块包含当前轮或前一轮的无效交易,或者尽管存在有效的上链区块,但在预定义的时间持续内未收到下链区块时,超级区块将被添加到下链中。在 Ladder 中,超级区块通过 HotStuff 共识机制生成。
节点:用 V \mathcal{V} V 表示所有节点的集合。节点 v v v 的计算能力相对于所有节点总计算能力的比例用 P ( v ) P(v) P(v) 表示,使得 ∑ v ∈ V P ( v ) = 1 \sum_{v \in \mathcal{V}}{ P(v) }= 1 ∑v∈VP(v)=1。
边:用 E \mathcal{E} E 表示所有区块之间的链接关系集合。例如,如果区块 B r , 0 u B^u_{r,0} Br,0u 指向区块 B r − 1 l B^l_{r-1} Br−1l,则 ( B r , 0 u , B r − 1 l ) ∈ E (B^u_{r,0}, B^l_{r-1}) \in \mathcal{E} (Br,0u,Br−1l)∈E 表示从 B r , 0 u B^u_{r,0} Br,0u 到 B r − 1 l B^l_{r-1} Br−1l 的有向链接。
- 序列号:在任何给定的第 r 轮中,下链区块的序列号为 2 r + 1 2r+1 2r+1,标准上链区块的序列号为 2 r 2r 2r。如果第 r r r 轮有分叉上链区块,则分叉区块的序列号表示为在值 2 r 2r 2r 后添加下标 i i i,其中 i = 1 , 2 , 3 , . . . i=1,2,3,... i=1,2,3,...。用 O ( B ) O(B) O(B) 表示任何区块 B B B 的序列号。例如,如果 B u B^u Bu 是第 3 轮的标准上链区块,则 O ( B u ) = 6 O(B^u)=6 O(Bu)=6。如果 B u B^u Bu 是第 3 轮的第二个分叉上链区块,则 O ( B u ) = 6 2 O(B^u)=6_2 O(Bu)=62。同样,如果 B l B^l Bl 是第 3 轮的下链区块,则 O ( B l ) = 7 O(B^l)=7 O(Bl)=7。
- 账本:上链区块将按照以下顺序排列: 0 , 2 , 4 , 4 1 , 6 , 6 1 , 6 2 , 6 3 , 8 , 10 0,2,4,4_1,6,6_1,6_2,6_3,8,10 0,2,4,41,6,61,62,63,8,10。上链区块包含交易,形成了最终的账本。
4 区块生成
上链区块:在每一轮 r 中,每个节点都会尝试找到一个满足区块生成所需难度目标的随机数。一旦节点找到一个有效的随机数,它就会将生成的区块广播到网络中的所有节点。第 r r r 轮在下链区块 B r l B^l_r Brl 生成时结束。
在本轮结束之前,通常会有多个上链区块由不同节点生成。在这种情况下,其中一个区块被指定为标准上链区块,其余的则被归类为分叉上链区块。如果适用,第 r r r 轮中标准和分叉区块的信息将存储在对应的下链区块 B r l B^l_r Brl 中。
下链区块:假设目前处于第 r r r 轮。这意味着第 r − 1 r-1 r−1 轮的标准上链区块和任何分叉上链区块已经确定,并且这些信息存储在前一轮的下链区块 B r − 1 l B^l_{r-1} Br−1l 中。在当前第 r r r 轮中,负责生成下链区块的节点是其区块在第 r − 1 r-1 r−1 轮中被指定为标准上链区块的节点。该节点收集上链区块一段时间,丢弃故障区块,并根据 最困难链原则
选择第 r r r 轮的标准上链区块 B r , 0 u B^u_{r,0} Br,0u。该区块必须具有指向标准上链区块 B r − 1 , 0 u B^u_{r-1,0} Br−1,0u 和下链区块 B r − 1 l B^l_{r-1} Br−1l 的哈希指针。它将剩余的上链区块标记为分叉区块,并为它们分配序列号 ( 2 r ) 1 (2r)_1 (2r)1, ( 2 r ) 2 (2r)_2 (2r)2 等,将这些信息插入到第 r r r 轮的下链区块 B r l B^l_r Brl 中。
通过生成下链区块,收敛节点独家记录分叉区块并确保全局一致的交易顺序。上链区块在第 r r r 轮中可能引用 B r − 1 , 0 u B^u_{r-1,0} Br−1,0u 和 B r − 1 l B^l_{r-1} Br−1l,但未能及时到达下链区块生成器。相反,它可能在第 r + e r+e r+e 轮( e ≥ 1 e \geq 1 e≥1)之前到达其下链区块的生成器。因此,该区块将在第 r + e r+e r+e 轮中排序,并被归类为分叉上链区块,而不是标准区块。
超级区块:假设节点 v v v 处于第 r r r 轮。如果出现以下两种情况之一,则节点会检测到故障。
- 节点 v v v 收到第 r r r 轮的下链区块,但引用的上链区块包含与当前轮或前一轮冲突的交易。
- 尽管收到多个有效的上链区块,但节点 v v v 在预定义的时间持续内未收到第 r r r 轮的下链区块。
为了解决此类故障,Ladder 采用 BFT 共识机制。由于下链区块必须是唯一的,BFT 共识保证所有节点就单个规范的下链区块达成一致。HotStuff 共识是基于 BFT 的共识,由生成最近 n n n 个标准上链区块的节点组成的委员会执行。在委员会形成后,领导者通过 VRF 选出。
在 Ladder 的运行过程中,如果节点检测到问题,它会通知委员会成员。委员会验证故障,丢弃冲突的上链区块,并根据 最困难链原则
重新选择标准上链区块。然后,委员会领导者生成超级区块,替换下链区块,如图 4 中的六边形区块 B r + 1 s B^s_{r+1} Br+1s 所示。这个超级区块包含指向前一轮下链区块和当前轮上链区块的哈希指针,以及对任何分叉上链区块的引用,随后的上链和下链区块将通过前面描述的标准过程生成。在每一轮结束时,根据节点在该轮中的角色,节点将获得奖励,激励其持续参与。
5 异常处理
上链区块中的异常:对于无效区块,指包含重复或冲突交易的区块,这些交易可能与自身或前一个上链区块冲突,创建此类区块的节点将不会获得任何奖励。
上链中可能出现两种类型的分叉:尖端分叉(tip forks
)和链分叉(chain forks
)。尖端分叉是指在第 r r r 轮中生成了多个有效的上链区块。在这种情况下,收敛节点会选择其中一个区块作为标准区块,并将其他区块标记为分叉区块,如图 5(a) 所示。链分叉是指在第 r r r 轮中生成的有效上链区块未能及时到达负责生成第 r r r 轮下链区块的节点,而是到达了负责第 r + 1 r+1 r+1 轮的节点。在这种情况下,下链区块 B r + 1 l B^l_{r+1} Br+1l 将包含一个指向该上链区块的指针,将其标记为分叉区块,如图 5(b) 所示。此类上链区块永远不会被用作标准上链区块。
下链区块中的异常:当委员会成员节点在指定时间内未收到下链区块时,会发生区块超时。如果下链区块包含错误信息或由未经授权的节点生成,则该下链区块被视为无效。在这两种情况下,委员会将启动 HotStuff 共识并生成一个超级区块。
如果在任何给定轮次中,下链区块不是由收敛节点生成的,那么它将被节点简单地忽略。下链分叉也可以分为尖端分叉和链分叉。尖端分叉发生在下链中,当负责生成下链区块的节点出现故障,并在给定轮次中生成了多个下链区块时,如图 6(a) 所示。这将触发 HotStuff 共识以生成一个超级区块 B r s B^s_r Brs,其中出现故障的节点不允许参与。链分叉发生在下链中,当不同节点在给定轮次中接受不同的上链区块作为标准区块,随后在下一轮中接受来自不同节点的下链区块时。这导致网络中传播了两个不同的 Ladder,如图 6(b) 所示。当任何给定节点最终检测到多个 Ladder 的存在时,它将使用 最困难链原则
来选择一个并丢弃其余的。
最困难链原则:根据子树中区块的累积难度选择主链。区块 B i B_i Bi 的难度 D ( B i ) \mathcal{D}(B_i) D(Bi) 由其哈希中的前导零数量以及其子树中所有区块的哈希计算得出,定义如下:
D ( B i ) : = Z ( B i ) + ∑ B j ∈ S i D ( B j ) \mathcal{D}(B_i) := \sqrt{\mathcal{Z}(B_i)} + \sum_{B_j \in S_i}{\mathcal{D}(B_j)} D(Bi):=Z(Bi)+Bj∈Si∑D(Bj)
这里, Z ( B i ) \mathcal{Z}(B_i) Z(Bi) 表示区块 B i B_i Bi 哈希中的前导零数量, S i S_i Si 表示所有具有指向区块 B i B_i Bi 的哈希指针的合法区块集合。将 Z ( B i ) \mathcal{Z}(B_i) Z(Bi) 置于平方根下实现了两个属性。首先,在分叉的情况下,跟随分叉区块的合法区块数量较多的一方具有更高的难度,因此更容易选择。其次,如果跟随分叉区块的合法区块数量相等,只要所有子区块中的前导零数量不同,那么两方的难度就不会相等,从而能够选择其中一方。这显著降低了平衡攻击的可能性。
6 分析评估
在吞吐量方面,选择主链提高了效率,同时保持了相当的计算开销。在延迟方面,对比特币最长链原则和确认规则的分析仍然适用于最困难链原则。在可扩展性方面,允许节点自由加入或离开系统,而不会影响其他节点的 PoW。
论文实现了 Ladder 的原型,并且与 GHOST、Inclusive、Phantom 和 Conflux 方案进行了对比,实验在一个由 80 个节点组成的局域网测试平台上完成。详细的结果和分析可以去阅读原始论文,比较可惜的是作者没有公开源码。
最后,附上文献引用及论文链接:Hu D, Wang J, Liu X, et al. Ladder: A Convergence-based Structured {DAG} Blockchain for High Throughput and Low Latency[C]. 22nd USENIX Symposium on Networked Systems Design and Implementation (NSDI 25). 2025: 779-794.
https://www.usenix.org/conference/nsdi25/presentation/hu