什么是DAG
DAG:Directed Acyclic Graph,中文意为“有向无环图”
DAG原本是计算机领域一种常用数据结构,因为独特的拓扑结构所带来的优异特性,经常被用于处理动态规划,导航中寻求最短路径,数据压缩……等多种算法场景。
再看传统区块链和DAG的区别,简单的说:
1 单元:区块链组成单元是Block(区块),DAG组成单元是TX(交易);
2 拓扑:区块链是由Block区块组成的单链,只能按出块时间同步依次写入,好像单核单线程CPU; DAG是由交易单元组成的网络,可以异步并发写入交易,好像多核多线程CPU;
3 粒度:区块链每个区块单元记录多个用户的多笔交易,DAG每个单元记录单个用户交易。
传统区块链技术的几个问题
1 效率问题:传统区块链技术基于Block区块,比特币的效率一直比较低,由于BlockChain链式的存储结构,整个网络同时只能有一条单链,基于POW共识机制出块无法并发执行;例如比特币每十分钟出一个块,6个出块才能确认,大约需要一个小时;以太坊大幅改善,出块速度也要十几秒。
2 确定性问题:比特币和以太坊存在51%算力攻击问题,基于POW共识的最大问题隐患,就是没有一个确定的不可更改的最终状态;如果某群体控制51%算力,并发起攻击,比特币体系一定会崩溃;考虑到现实世界中的矿工集团,以及正在快速发展量子计算机的逆天算力,这种危险现实存在。
3 中心化问题:基于区块的POW共识中, 矿工一方面可以形成集中化的矿场集团,另一方面,获得打包交易权的矿工拥有巨大权力,可以选择哪些交易进入区块,哪些交易不被处理,甚至可以只打包符合自己利益的交易,这样的风险目前已经是事实存在。
4 能耗问题:由于传统区块链基于POW算力工作量证明,达成共识机制, 比特币的挖矿能耗已经与阿根廷一个国家耗电量持平,IMF和多国*对虚拟货币挖矿能源消耗持批评态度。
Digiconomist 数据表明:全球挖矿业务总计,每年产生约2.9亿吨碳排放
由于以上问题,所以有人提出疑问:“为什么一定需要区块呢?”,DAG技术被用于尝试解决区块链的上述问题。
DAG起源
最早在区块链中引入DAG概念作为共识算法的是2013年,bitcointalik.org上由ID为avivz78的以色列希伯来大学学者提出,也就是GHOST协议,作为比特币的交易处理能力扩容解决方案;Vitalik在以太坊紫皮书描述的POS共识协议Casper,也是基于GHOST POW协议的POS变种。
后来NXT社区有人提出用DAG的拓扑结构来存储区块,解决区块链的效率问题。区块链只有一条单链,打包出块无法并发执行。如果改变区块的链式存储结构,变成DAG的网状拓扑可以并发写入。在区块打包时间不变的情况下,网络中可以并行打包N个区块,网络中的交易就可以容纳N倍。
此时DAG跟区块链的结合依旧停留在类似侧链的解决思路,交易打包可以并行在不同的分支链条进行,达到提升性能的目的。此时DAG还是有区块的概念。
2015年9月,Sergio Demian Lerner发表了 《DagCoin: a cryptocurrency without blocks》一文,提出了DAG-Chain的概念,首次把DAG网络从区块打包这样粗粒度提升到了基于交易层面,但DagCoin本身是一篇论文,没有代码实现。
DagCoin的思路,让每一笔交易都直接参与维护全网的交易顺序。交易发起后,直接广播全网,跳过打包区块阶段,达到所谓的Blockless。这样省去了打包交易出块的时间。如前文提到的,DAG最初跟区块链的结合就是为了解决效率问题,现在不用打包确认,交易发起后直接广播网络确认,理论上效率得到了质的飞跃。DAG进一步演变成了完全抛弃区块链的一种解决方案。
2016年7月,基于Bitcointalk论坛公布的创世贴,IOTA横空出世,随后ByteBall也闪亮登场,IOTA和Byteball是头一次DAG网络真正技术实现,也是此领域最耀眼的领军者;此时,号称无块之链(Block Less)、独树一帜的DAG链家族雏形基本形成。
一句话来概括:DAG是面向未来的新一代区块链,从图论拓扑模型宏观的看,从单链进化到树状和网状、从区块粒度细化到交易粒度、从单点跃迁到并发写入;是区块链从容量到速度的一次革新。