DAG 只是组建区块链数据结构的一种替代方式。

Taraxa 创始人 Steven:破解有关 DAG 的三大误解
本文的灵感来源于 Taraxa 见面会、AMA 以及其他社区活动中观众提出的问题。

前言
Taraxa 采用的是 Zohar 和 Sompolinsky 最先提出的区块 DAG 拓扑结构。但是,最近我们注意到,每次介绍项目时,听众似乎总会对 DAG 是什么或者其与区块链技术的关系产生很多误解。
本文我们会针对一些常见问题进行解答,希望能够帮助大家消除一些误解。

误解 1: DAG 有别于区块链
简单来说,DAG 和区块链是完全不同的概念,因此根本不能放在一起比较。我们来看看他们到底是什么。

DAG (有向无环图)是应用于数据结构的数学模型。它由与单向边相连的顶点组成,且没有一条路线是从某个顶点开始沿着这些边走最后再回到同一顶点的——也就是说,它是非循环的。
本质上,DAG 是一种低级数据结构,可用于对多种类型的数据进行建模(尤其是具有依赖关系的网络),例如对电子表格单元格的依赖,数字电路的组合逻辑,亦或是诸如贝叶斯网络的因果系统。DAG 数据结构具有许多有趣的数学属性,有助于简化与这些类型数据相关的问题。
而关于区块链的更多信息,可以阅读我之前写的文章“什么是区块链?”。不过,区块链本质上是一个网络化系统,它能够让实体提交语句,就现实达成一致,并复制记录。虽然这些功能本身各自并没有独特之处,但结合起来就能创造出一些有趣的属性,而这些属性在区块链技术中是独一无二的,例如不可变性以及有保证的排序等。
这样一来,我们立马就能看出这两者是不匹配的。DAG 是数据结构,而区块链是系统。或者说,DAG 是一个抽象模型,而区块链是一个应用程序。将这两者放在一起比较,就好比将三角形与摩天大楼进行比较。在设计摩天大楼时或许会在几何计算中用到三角形的概念,但两者根本不同,所以无法进行比较。
那么,这个误解从何而来?这是因为在区块链的设计中,基于 DAG 的拓扑结构与基于单链的拓扑是完全不同的。DAG 只是组建区块链数据结构的一种替代方式。
Taraxa 也采用了区块 DAG 的拓扑结构,下图是我们白皮书中的一张图解。
Taraxa 创始人 Steven:破解有关 DAG 的三大误解
区块链系统中的单链结构区块 vs 区块 DAG 拓扑

但是,所有采用 DAG 拓扑的区块链都一样吗?这就引出了关于 DAG 的第二大误解。

误解 2: 所有基于 DAG 的区块链系统都是一样的
Taraxa 创始人 Steven:破解有关 DAG 的三大误解
我们经常会遇到一些社区成员,他们对同样采用 DAG 拓扑的另一个区块链系统也有所了解,于是他们就会将另一个系统的所有特征叠加到 Taraxa 上,包括一些技术缺陷或挑战。
在这里,我们简要介绍下其他几个采用 DAG 拓扑结构的早期区块链项目,以及它们与 Taraxa 设计上的不同。
IOTA 可能是第一个向市场展现了区块链技术如何让物联网设备受益的项目,同时他们还提出了一种截然不同的共识算法来利用 DAG。IOTA 通过随机进入 DAG 来验证交易,这个方法最终使得网络要依赖于中央协调者来维持顺序和正确性,否则该网络将无法正确处理双花等问题。而 Taraxa 的排序机制定义很明确,且不依赖于中心化协调。
Byteball (字节雪球)采用的是没有区块的 DAG 拓扑结构。该项目与众不同之处在于其共识功能,也就是在 DAG 内寻找主链从而确定排序,并通过定期快照(ball)来限制排序的计算复杂性。但是,它需要依靠 12 位“受信任”的见证人,所以被认为是高度中心化的。同样的,Taraxa 的排序机制已经很好的实现了去中心化。
Nano 和 IOTA 或 Byteball 不太一样。在这个项目里,每个帐户都有其自己的链(区块格),每个链的排序由链的所有者确定,且每个交易都需要分成收款-付款两笔款项并由双方分别记录。从某种意义上说,Nano 是一个您可以在不同链上的交易之间绘制有方向的边的“DAG”,但它在结构上与 IOTA 或 Byteball 有很大不同。不过,Nano 的块格结构设计高度优化了代币交易,而非智能合约。相比之下,Taraxa 则具备通用的并发智能合约系统,可在交易处理期间最大化垂直并发。
那么为什么要采用 DAG,或者说 Taraxa 为什么要完全采用区块 DAG 呢?

误解 3: DAG 区块链是物联网的最佳拍档
Taraxa 创始人 Steven:破解有关 DAG 的三大误解
Taraxa 的主要目标是让物联网生态系统变得更可信、更自主、更有价值。但是,这与其区块 DAG 拓扑关系并不大。
Taraxa 之所以选择块 DAG 拓扑,是因为它能够在不牺牲安全性的情况下提高吞吐量(更多信息请参见之前写的文章“单链的艰难权衡”和“区块 DAG 与 PoS”)。区块 DAG 的结构具有包容性,它能够接受所有分支,所以提高了总吞吐量。 而安全性难题则是通过查看每个区块用来指向多个父块的指针(pointer)来解决——指针作为投票会转化为一个权重评级,称为 GHOST 规则。通过此规则,我们可以计算出区块 DAG 中的一条锚定链,然后根据锚定链上每个锚定块推出的时间来建立一个确定的顺序。

所以,区块 DAG 是因其高吞吐的特性而被选用为拓扑结构,但这绝不意味着它就是物联网或任何其他用例的“理想选择”——它确实适用于所有用例,因为没有用例会需要低吞吐。但与此同时,物联网数据的锚定(在我们物联网应用中是很关键的用例)确实需要很高的吞吐量,而区块 DAG 拓扑结构就很适合构建高吞吐量的区块链系统。

希望这篇文章能够帮助大家解除一些对 DAG 和区块链的常见误解。

未来我们还会继续更新,敬请期待!