DAG(Directed Acyclic Graph)又称“有向无环图”
即是由集合的顶点和有向边构成,每条边连接一个顶点到另一个,这样,从某个顶点V开始,沿着有序的边,最终循环回再次到V是不可能的
以下是二叉树,DAG和有向图的区别 (摘自网上资源)
基于DAG数据结构的区块链网络如何运行呢?
目前采用DAG作为存储结构的代表项目有dagcoin、Byteball、IOTA。以IOTA的底层数据结构Tangle为例,通过节点发出的所有交易构成了这个有向无环图的集合。当一个新的交易发生后,它必须验证之前的两个交易,这些验证关系就表示为有方向的边。
如下图(图中,时间走向总是从左到右,一个小方框代表一笔交易)。
Tangle的数据结构图(DAG)
关于DAG的几个概念:
交易的自身权重
与发送这笔交易的节点所投入的工作量成正比。节点的工作量越大,这个节点发出交易的权重就越大
交易的累计权重
是这个交易的自身权重与直接及间接验证这个交易的所有交易的自身权重之和
Tip
没有被验证的交易
交易的高度
从创世交易到当前这个交易的最长路径
交易的深度
从当前这个交易到某个tip(未被验证的交易)的最长路径
交易的积分
当前这笔交易的自身权重与所有它验证的那些交易的自身权重之和
例子
DAG结构范例
如上图,一个小方框代表一笔交易,方框右下角较小的数字表示这笔交易的自身权重,方框中字体较大的数字代表这笔交易的累计权重。
交易F经过交易A、B、C、E四个交易直接或者间接被验证。交易F的累计权重就是交易A、B、C、E四个交易的各自自身权重之和,即 9=3+1+3+1+1。
一开始的Tips是交易A和交易C。当一个新的交易X被添加到网络中,并对交易A和交易C进行了验证之后,交易X就成为了网络中唯一的Tip。同时,整个网络中的其他所有交易的累计权重都增加3(即交易X的自身权重)。
DAG的高度与深度
交易G的高度为1,深度为4(最长路径为:G-F-D-B-A)。而交易F的高度为2(最长路径为:创始交易-G-F),深度为3(最长路径为:F-D-B-A)。
交易A直接或间接验证了交易B、D、F、G,因此交易A的积分=1+3+1+3+1=9。同样的,交易C直接或间接验证了D、E、F、G,因此交易C的积分=1+1+1+3+1=7。
DAG相比于传统区块链的优势
1)数据结构保证了较强的可扩展性
DAG中,每笔交易都能看作一个区块,每个区块有多个指向。拓展性强,无容量限制。随着 参与者的增多,网络也会趋向稳定,区块确认时间也越来越快。
2)共识机制带来的零手续费
传统的区块链中,交易者和矿工是分开的,这样就容易导致算力中心化和高昂的手续费等问题;而DAG中,交易者本身也是矿工,这样网络能完全去中心和,也无需支付手续费。
本文作者为U赞发烧友何怡彬
领取专属 10元无门槛券
私享最新 技术干货