『Odaily星球日报』DAG的前世今生 (一)( 二 )


本文插图
以上就是一个DAG — 有向无环图
我们回到比特币区块链
在区块链中 , 每一个块都是链接到前一个块 , 一直延伸到Genesis (创世块) 。 经常会有些小的分支(side-chains)出现 , 但是最终会被剪掉 。 在区块链技术中 , 有向无环图意味着块与块之间的链接会更加自由 , 一个块可以有不止一个父辈(parent block) , 父辈还可以在不同的区块高度 (height) 。
在Soteria项目中 , 我们称BlockDAG为区块图
就是说 , 在Soteria DAG 的有向无环图里 , 图的节点是区块 , 这是很重要的一个设定 , 因为后面我们会讲到 , 其他一些区块链DAG的实现里 , 图的节点不是区块 , 而是交易 。
区块图长什么样子?
下面是一个很活跃的区块图 , Genesis Block就是最下方没有颜色的块 , tips是最上面的块(没有任何其他的块链接“到”这个块) 。 在这个例子中 , 不同miner产生的块被染成不同的颜色 , 以便直观的看到每一个miner对网络的贡献 。
『Odaily星球日报』DAG的前世今生 (一)
本文插图
『Odaily星球日报』DAG的前世今生 (一)
本文插图
上图就是测试网的实时区块图
那么Soteria DAG 采用区块图 , 有什么优势呢?就是说:
为什么我们需要区块图(blockDAG)?
区块图(blockDAG)是中本聪共识的延续 , 在原有的特性基础之上 , 提供了更强的包容性+安全性+可扩展性 。
包容性:
在区块图的设计理念中 , 所有有效的区块都会被接受 , 被连接到blockDAG 。 对比起区块链 , 区块图会接受所有有效的区块 , 而区块链只保留最长的链 , 所有侧链上的区块都会被抛弃 。
通过接受更多的区块到整个网络 , 会有更多的人参与到网络建设 , 比如mining 。 比较小的miner也可以从网络中获取利益 , 区块图还可以使用一种比现有SHA256(bitcoin use it) 更公平的POW算法 , 具体算法我们将在以后的章节中讲解 。
既然我们会接受所有有效的区块 , 一个区块的合法性就变得非常重要 , 尤其是从整个网络的视角来看 , 以防止恶意攻击(比如双花) 。
实际上 , 区块图的状态 , 就是比特币网络里的实时状态 , 比特币的区块链是达到共识后的状态 , 并不是网络的实时状态
扩展性
在Soteria DAG的设计中 , 整体网络吞吐量的瓶颈不再被共识协议层所限制 。 通过调整区块大小和出块速度, 我们可以灵活的设计网络的性能和吞吐量 。 交易的吞吐量不再是一个被协议所限制的常量 , 而是一个可以根据不同需求和具体应用场景变化的参数组 。
安全性
Soteria DAG 优化了基于 Phantom 的“染色”算法 , 为区块图blockDAG 提供了可确定性的排序 , 有效的避免了网络中常见的“双花”问题 。 Soteria DAG还引入一系列的行为分析机制 , 针对区块和交易的时间序列进行异常检测 , 以防止其他的未知攻击 。
总结:Soteria DAG 实际上是比特币中本聪共识算法的扩展 , 使其具有包容性 , 并在保证安全性的基础上提供了灵活弹性的可扩展特性 。
关健是Soteria DAG 在保证可扩展性的同时严格遵循了中本聪共识 。
现在我们来比较一下其他的DAG实现方式
目前DAG项目有3类
其中两类是“交易DAG” , 即DAG的节点是交易Transaction , 不是区块block.
交易DAG 的第一类有 IOTA , xDAG, Raiblock (NANO)等 , 他们可以认为是“没有”严格共识的“交易DAG” , 特点是没有确定的“终局性” — Finality, 也就是没有共识 。
交易DAG的第二类有 Hashgraph | Avalanche, 他们实现分布式系统的“经典共识” , 即“拜占庭容错共识” 。