DAG(有向无环图)是不同于主流区块链的一种分布式账本技术,把同步记账提升为异步记账,被不少人认为可以解决传统区块链的高并发问题,是区块链从容量到速度的一次革新。
DAG:Directed Acyclic Graph,中文意为「有向无环图」。DAG原本是计算机领域一种常用数据结构,因为*的拓扑结构所带来的优异特性,经常被用于处理动态规划、导航中寻求短路径、数据压缩等多种算法场景。
DAG技术的起源
早在区块链中引入DAG概念作为共识算法是在2013年,bitcointalik.org由ID为avivz78的以色列希伯来大学学者提出,也就是GHOST协议,作为比特币的交易处理能力扩容解决方案;Vitalik在以太坊紫皮书描述的POS共识协议Casper,也是基于GHOST POW协议的POS变种。
后来NXT社区有人提出用DAG的拓扑结构来存储区块,解决区块链的效率问题。区块链只有一条单链,打包出块无法并发执行。如果改变区块的链式存储结构,变成DAG的网状拓扑可以并发写入。在区块打包时间不变的情况下,网络中可以并行打包N个区块,网络中的交易就可以容纳N倍。
Nxt社区提出的DAG of blocks
2015年9月,Sergio Demian Lerner发表了 《DagCoin: a cryptocurrency without blocks》一文,提出了DAG-Chain的概念,把DAG网络从区块打包这样粗粒度提升到了基于交易层面,但DagCoin本身是一篇论文,没有代码实现。
DagCoin的思路,让每一笔交易都直接参与维护全网的交易顺序。交易发起后,直接广播全网,跳过打包区块阶段,达到所谓的Blockless。这样省去了打包交易出块的时间。如前文提到的,DAG初跟区块链的结合就是为了解决效率问题,现在不用打包确认,交易发起后直接广播网络确认,理论上效率得到了质的飞跃。DAG进一步演变成了*抛弃区块链的一种解决方案。
一句话来概括:DAG是面向未来的新一代区块链,从图论拓扑模型宏观看,从单链进化到树状和网状、从区块粒度细化到交易粒度、从单点跃迁到并发写入,这是区块链从容量到速度的一次革新。
DAG技术的优势
传统区块链和DAG的区别,简单的说:
1)单元:区块链组成单元是Block,DAG组成单元是TX(交易);
2)拓扑:区块链是由Block区块组成的单链,只能按出块时间同步依次写入,好像单核单线程CPU;DAG是由交易单元组成的网络,可以异步并发写入交易,好像多核多线程CPU;
3)粒度:区块链每个区块单元记录多个用户的多笔交易,DAG每个单元记录单个用户交易。
那么相比于比特币等传统的区块链,这种机制有什么好处?
数据结构:通过DAG,每一笔交易就可以看作是一个区块,没有容量限制的问题,每一个区块有多个指向,拓展性强,因此能够实现数字货币较高的交易吞吐量(通过平行验证)。并且参与者越多,整个系统也会变得越来越安全和快速,确认时间会缩短,交易也完成的越来越快。
共识机制:区块链中添加下一个区块需要多方进行竞争,并获取区块奖励或交易手续费。正因如此,共识和交易生成是分离开的,并且由网络的一小部分人来完成,通常会设置较高门槛(就像比特币一样),这样会导致进一步的中心化(算力垄断)。
在DAG系统中,交易者本身就是矿工,网络中的每位参与者都能进行交易并且积极参与共识。通过这种方式,验证就能同步进行,网络能够保持*去中心化,不需要矿工传递信任,也不需要支付交易手续费。
DAG的速度快,吞吐量高,但作为一个很年轻的数据结构,DAG技术的优势和创新速度已经崭露头角,越来越多后继基于DAG的创新项目和DAPP正*的迅速涌现。