图片来源:u.today
何为DAG
DAG是Directed Acyclic Graph的缩写,是一种运用拓扑排序的直接图像数据结构。这种数据结构能够在数据压缩中找到最优解,因此在实际中被广泛地运用于数据处理等领域。总体而言,DAG结构中的每个节点通过一个具有特定方向的edge连接在一起,以此来排除任何回路的可能性。因此,DAG可以直观地理解为一个没有回路的有向图。
图:DAG的直观解释,图片来源:Medium
DAG的原理
在DAG的结构中,每一笔交易在自身被处理、确认之前,必须对另外两笔交易进行确认。当然,任何一笔交易的处理和确认由所有的节点进行负责。这种方式不仅使每一笔新的交易得到了确认,同时也使所有的交易都间接地得到了验证。每一位交易发起者不需要为自身交易的确认付出成本,因为该交易者也需要消耗自身的计算力来验证其他的交易。
在整个网络中,未被确认的交易通常被称作tip。一种名为马可夫链蒙特卡罗的算法确保了每个tip不能进行自我验证。因此,要想自身得到确认,这些tip不得不去确认其他的交易。
DAG与区块链的区别
如果说区块链技术是建立在一个垂直型结构上的话,那么DAG可以想象成建立在一个水平结构上。在区块链的工作量证明机制中,只有矿工才通过挖矿的方式来确定新的区块,并将新的区块附在最新的链上。并且,区块不可以同时创立,每一个区块的创立大约需要10分钟。
相比之下,DAG的体系中根本没有“区块”这一概念:交易与交易之间无需通过区块便可直接联系在一起。一旦没有了区块,挖矿这一过程也失去了意义,矿工在DAG体系中也相应地“失业”了。相较于区块链,DAG的结构更像是一幅多方交易的迷宫网络图。
图:DAG与区块链的区别,图片来源:Medium
DAG与区块链的共性
虽然DAG与区块链存在一些差异,但是从本质上讲,DAG来源于侧链的理念,仍然具备区块链的属性。因此,作为一个基于点对点网络的分布式数据库, DAG依然是一个对分布式决策验证的机制。
确认区间
确认区间(confirmation confidence)在DAG结构是一个非常重要的概念,是衡量一笔交易接受程度的重要指标。其具体的计算分为3个过程:1) 运行tip筛选算法100次 2) 计算出同意该交易的tip个数 3)用该个数除以100得到的百分比即为确认区间。换句话说,确认区间就是一笔交易确认过程中tip所占的百分比。
DAG正是基于确认区间这一概念很大程度上解决了比特币区块链的一个难题:可扩展性问题。理论上讲,在DAG结构中,随着网络节点和已处理交易量的增加,未来交易量处理的速度会更快。
结语
DAG作为一种运用拓扑排序的直接图像数据结构,很大程度上解决了比特币区块链所面临的可扩展性问题。目前而言,物联网链(IoT Chain)是基于DAG技术的一个很好实例,每秒交易量可达1万次。因此,随着DAG技术的不断发展,“交易速度”和“交易费用”对于区块链而言,将不再会是一个两难的局面。