区块不再排成一条线:PHANTOM 与 GHOSTDAG 怎么给区块图排序 图 1
区块不再排成一条线:PHANTOM 与 GHOSTDAG 怎么给区块图排序 · 图 1

在比特币里,两个矿工几乎同时出块,注定有一个变成孤块:它的工作被丢弃,里面打包的交易全部作废重来。网络越大、出块越密,这种碰撞越频繁,协议只能靠把出块间隔拉得远大于传播时间来保安全——这正是中本聪规则对吞吐的隐形天花板。2018 年 Sompolinsky、Wyborski 与 Zohar 发表的 PHANTOM 论文(IACR 2018/104)换了一个思路:与其丢掉并发区块,不如承认它们,把账本从一条链推广成一张区块的有向无环图(blockDAG),再用一条明确的规则给图里的块排序。

孤块从浪费变成信息

论文的核心观察是:一个孤块并不是废块,它携带了真金白银的算力和一条真实存在的证据——它的父块、它验证过的历史、它与谁并发。最长链规则把这些证据直接扔掉,等于白白烧掉安全预算。blockDAG 让每个块都挂进图里继续被引用,图的结构本身就编码了谁先谁后:一个块的算力会传导给它的祖先。于是两条直觉同时成立——出块频率可以提高而不制造大规模孤儿,同时确认速度也更快,因为不用等一个块证明自己比孤块竞争者更强。

区块不再排成一条线:PHANTOM 与 GHOSTDAG 怎么给区块图排序 图 2
区块不再排成一条线:PHANTOM 与 GHOSTDAG 怎么给区块图排序 · 图 2

排序问题:从最优解到可算解

图有了,还差一个致命问题:所有诚实节点必须对同一套排序达成一致,否则双花。论文的做法是给图挑一个蓝块集合:集合内部两两之间的冲突程度受一个参数 k 约束——k 越大,越宽容并发;k 等于零时,蓝块集合退化成一条单链,回到中本聪规则。把所有块分成蓝与灰,再按祖先关系与蓝块字典序排序,双花裁决就有了统一答案。作者证明挑选最优蓝块集合这个问题是 NP-hard 的——图一大,穷举不可行。于是论文给出 GHOSTDAG:从创世区出发,每一步把与前驱冲突不超过 k 个的块逐个染蓝,运行时间是多项式的,所有节点各自计算都能得到同一答案。PHANTOM 是理想基准,GHOSTDAG 是可部署的现实版本,这一层区别在很多讨论里被混为一谈。

和最长链规则比什么

三点对比值得记住。其一,孤块处理:最长链丢弃,DAG 吸收并复用其算力。其二,参数含义:最长链用出块间隔对传播时间做安全裕量,DAG 用 k 值对图内冲突做容忍上限,本质上是同一件事的两种表达。其三,安全性来源:二者都建立在算力诚实假设上,DAG 没有发明新的安全模型,只是不再浪费算力。它也改变打包经济——并发块不再需要像以太坊工作量证明时代那样靠叔块奖励激励引用,图结构本身就是引用。

还有一条容易被忽略的顺序问题:图里同时存在的冲突块怎么排先后,直接决定双花裁决,所以排序规则必须对所有诚实节点确定性一致——同一个图进来,任何节点跑完 GHOSTDAG 都得给出同一份蓝块名单,差一个块就可能让两半网络对同一笔交易给出不同结论。论文把这一点当作与吞吐同等级的要求来对待:排序规则先于性能,因为账本的分歧比账本的慢更致命。理解了这条优先级,就能理解为什么宁可用一个近似算法,也不保留需要指数搜索的最优定义。

快速问答

问:这跟以太坊的叔块是一个思路吗?答:动机相似(给并发块一条出路),机制完全不同:叔块仍挂在一条主链旁,blockDAG 则是所有块地位平等的图。

问:谁把它落地了?答:公开资料里 Kaspa 是把 GHOSTDAG 带进主网运行的代表项目,本文只讨论论文机制,不评价任何项目表现。

问:DAG 会牺牲最终性吗?答:排序是确定的,但每个块从进图到被普遍接受仍需时间窗口,排序确定性与经济最终性是两件事。

风险提示:本文为共识算法科普,不构成对任何公链或资产的价值判断;相关项目现状请以各自官方文档与当期数据为准。