BlockDAG与区块链:真正改变了什么
区块链只保留一条链并丢弃冲突区块,BlockDAG则保留每一个区块。看看两者如何运作、GHOSTDAG解决了什么问题,又付出了什么代价。
Bruma
作者
简而言之
区块链把每个区块只连接到一个父区块,并丢弃同时出现的区块,因此出块时间必须很长。BlockDAG 允许一个区块引用多个父区块,并行区块会被保留,其工作量也会计入。Kaspa 的 GHOSTDAG 等协议再把它们排成统一顺序,代价是更高的带宽需求和复杂度。
把有效的工作扔掉,问题就在这里
时不时地,两个比特币矿工会在几乎同一时刻找到一个有效区块。在短时间内,网络上会同时存在两个版本的最新区块,然后其中一个胜出。另一个,连同为找到它而耗费的电力,就这样被丢弃了。
在比特币上这种情况很少发生,因为区块每十分钟才出一个。但这正是区块链无法简单提速的主要原因。在这篇文章里,我们会比较两种结构,即经典区块链和BlockDAG,看看GHOSTDAG这样的协议如何让DAG保持一致,并坦率地说明更快的设计要付出什么代价。
区块链如何判定什么是真的
区块链是一串区块,每个区块都包含前一个区块的指纹(哈希)。改动一个旧区块,之后所有的指纹都会失效,这就是历史记录一旦被篡改就会露出痕迹的原因。
当两个区块出现在同一高度时,节点会暂时保留两条分支,并跟随累积工作量证明最多的那一条。比特币的“最重链”规则会在一两个区块内决出胜负。落选的区块被称为孤块(以太坊在工作量证明时代把它们叫作叔块,并给予部分奖励)。
这种设计简单且久经考验,但它自带一个速度上限:
- 一个区块传遍全球需要时间,通常是几百毫秒甚至更长。
- 如果新区块到达的速度比这还快,冲突就会频繁发生,更多的挖矿工作量会变成孤块。
- 规模大、连接好的矿池最先得知新区块,所以频繁出现孤块会悄悄让它们比小矿工更占优势。
- 浪费的工作量还会降低链的实际安全性,因为攻击者的区块并不会以同样的方式被浪费。
这就是比特币坚持十分钟间隔的原因,也是大多数快速区块链干脆放弃工作量证明的原因。
BlockDAG改变了什么
DAG,即有向无环图,是一组由单向箭头连接、永不绕回的点。在BlockDAG中,点是区块,箭头是对更早区块的引用。关键区别说起来很简单:一个新区块可以引用多个父区块,而不是恰好一个。

所以当两个矿工同时找到区块时,谁也不必落选。下一个区块会同时引用两者。并行区块成为记录的一部分,它们的工作量证明计入安全性,其中的交易也能被收录。
等等,如果两个并行区块花费了同一笔币,哪一笔花费有效?BlockDAG本身回答不了这个问题。它需要一套排序规则。
GHOSTDAG:Kaspa如何为并行区块排序
人们提出过好几种为BlockDAG排序的协议。Kaspa采用的是GHOSTDAG,它是Yonatan Sompolinsky、Shai Wyborski和Aviv Zohar所描述的PHANTOM协议的实用版本。它的名字来自GHOST,一种针对链的协议,但机制并不相同。
核心思路是把诚实区块和可疑区块区分开来。诚实矿工会立即发布区块,并引用自己知道的一切,所以他们的区块最终会紧密相连。而被扣留的区块,比如攻击者秘密挖出的区块,与其余部分的连接就会很弱。
- 参数k描述在给定出块速率和典型网络延迟下,可以诚实地并行产生多少个区块。
- 符合这一限制的区块被标为蓝色。连接过弱的区块被标为红色。
- 每个区块从过去的区块中选出蓝色工作量最多的那个作为选定父区块。沿着选定父区块追溯,就得到一条主干,即选定链。
- 每个链上区块按确定性的方式为它合并进来的其他区块排序,交易按这个顺序执行。当两笔交易冲突时,靠前的那笔胜出。
一个有趣的细节:当k设为零时,GHOSTDAG的表现就和比特币的最重链规则一样。从某种意义上说,区块链就是同一思路的一个特例,只是没有给并行区块留出空间。
一张表看懂链与DAG
下面以比特币和Kaspa为参照,看看两种设计在实践中的对比。
| 方面 | 经典区块链(比特币) | BlockDAG(Kaspa) |
|---|---|---|
| 每个区块的父区块数 | 一个 | 多个 |
| 同时找到的区块 | 保留一个,其余成为孤块 | 全部保留并排序 |
| 出块间隔 | 约10分钟 | 100毫秒(每秒10个区块) |
| 排序规则 | 最重链 | GHOSTDAG(蓝/红集合,选定链) |
| 浪费的挖矿工作量 | 低,因为区块稀少 | 低,即使出块非常快 |
| 节点负载 | 轻 | 带宽和处理需求更高 |
| 设计成熟度 | 始于2009年,研究非常充分 | Kaspa主网始于2021年 |
BlockDAG解决不了的问题
看完这张表,人们很容易得出DAG就是更好的结论。但它并非没有代价,公平的比较必须把成本说清楚。
每个节点仍要做全部工作。 BlockDAG并不会在节点之间分摊负载。每个节点都要验证每一个区块和每一笔交易,在每秒10个区块的速度下,这意味着要下载和处理的数据比慢速链更多。Kaspa通过修剪旧的区块主体来限制磁盘占用,但带宽需求是实实在在的。
并行区块可能重复包含交易。 当两个矿工收录同一笔交易时,第二份副本毫无用处。这就是为什么从每秒一个区块提升到十个区块,并没有让Kaspa的吞吐量恰好翻十倍。开发者预计的提升大约是八到九倍。
安全性仍然建立在假设之上。 GHOSTDAG的保证取决于k是否足够大,能否适应真实的网络状况。如果延迟增长到超出k允许的范围,诚实区块就可能被错误分类。这正是Kaspa计划中的后继协议DAGKnight要解决的问题,它能自动适应延迟。而且,和任何工作量证明系统一样,控制大部分算力的攻击者仍然可以改写近期的历史。
快速出块不等于即时终局性。 确认时间受限于信息穿越网络所需的时间,而这一点并没有改变。Kaspa自己的开发者估计,提升到每秒10个区块让确认时间改善了约30%,而不是十倍。
复杂度更高。 为一张图排序,比沿着一条链走下去更难推理、实现和分析。区块浏览器和钱包等工具要处理的情况也更多。
BlockDAG如今用在哪里
Kaspa是基于BlockDAG构建的最大的工作量证明网络。自2025年5月Crescendo升级以来,它每秒产出10个区块,迈向每秒100个区块的计划已列入2027年的路线图。你可以在我们的文章什么是Kaspa?中阅读完整概览。
其他项目也使用DAG结构,但方式往往截然不同。例如IOTA、Hedera和Nano以类似图的结构组织交易或事件,却没有工作量证明挖矿,因此它们的取舍无法直接比较。至于BlockDAG Network代币(BDAG),它是一个独立项目,只是名字相同。
简而言之
经典区块链简单、被研究得极为透彻,而且是有意放慢的:它接受十分钟的节奏,好让冲突保持罕见。BlockDAG则把冲突视为常态,转而为它们排序,这让工作量证明网络能快上数百倍,同时不会浪费大部分挖矿工作量。
它做不到的,是让运行节点变得更轻松,或者免去精心设计协议的必要。如果你在评估一个自称BlockDAG的项目,值得问的问题是:它用什么排序协议?它对延迟做了什么假设?一个节点需要什么条件才能跟上?这些答案告诉你的远比名字多。
常见问题
关于本主题读者最常问的问题的简要解答。
在区块链中,每个区块只指向一个父区块,所以同时找到的区块会相互竞争,落选者被丢弃。在BlockDAG中,一个区块可以指向多个父区块,因此并行区块都会被保留,再由共识协议把它们全部排成一个公认的顺序。
它可以更频繁地出块,而不会浪费挖矿工作量。Kaspa是最知名的工作量证明BlockDAG,每秒产出10个区块,而比特币每十分钟才出一个区块。不过确认时间仍取决于网络延迟,所以不会按同样比例缩短。
GHOSTDAG是Kaspa用来为其DAG中的区块排序的协议。它把连接良好的区块标为蓝色、孤立的区块标为红色,沿着蓝色工作量最多的区块构建主链,再以这条链为参照为其他所有区块排序。
不会。每个节点仍然要验证每一个区块和每一笔交易。快速出块的BlockDAG实际上比慢速区块链需要更多的带宽和处理能力。它的收益在于浪费的挖矿工作量少得多,从而让网络在不偏向大矿工的前提下运行得更快。
不是。BlockDAG是一种通用的数据结构,包括Kaspa在内的多个项目都在使用。BlockDAG Network(BDAG)是另一个项目,只是恰好用了这个名字。本文讨论的是这种数据结构。

作者
Bruma- 发布日期
- 最后更新