一、什么是DAG有向无环图共识算法?
DAG:Directed Acyclic Graph,中文意为「有向无环图」。
DAG原本是计算机领域一种常用数据结构,因为独特的拓扑结构所带来的优异特性,经常被用于处理动态规划、导航中寻求最短路径、数据压缩等多种算法场景。
DAG模式说白了就是多条链跟随主链,这些链之间大方向相同且不存在环路。
二、DAG技术与区块链有什么不同?
在DAG中,没有区块的概念,他的组成单元是一笔笔的交易,每个单元记录的是单个用户的交易,这样就省去了打包出块的时间。
验证手段则依赖于后一笔交易对前一笔交易的验证,换句话说,你要想进行一笔交易,就必须要验证前面的交易,具体验证几个交易,根据不同的规则来进行。
这种验证手段,使得DAG可以异步并发的写入很多交易,并最终构成一种拓扑的树状结构,能够极大地提高扩展性。
上图左右这两张图都是DAG。但他们是不一样的。左边这张图是IOTA的"缠结Tangle",使用者每发起一笔交易,需要验证前面两笔交易,后面这张图是普通的DAG,对验证次数没有限制。
区块链组成单元是Block(区块),DAG组成单元是TX(交易)。
区块链是单线程,DAG是多线程。
区块链所有交易记录记在同一个区块中,DAG每笔交易单独记录在每笔交易中。
区块链需要矿工,DAG不需要矿工。
从理论上看,DAG技术在加密货币市场有着明显优势;但其仍处于发展阶段,无论是技术还是市场方面,都存在着很大的不确定性。
DAG也有自身的缺陷性。
1:交易时长不可控。DAG的验证规则是后面的交易验证前面的交易,这就很容易出现最后的交易迟迟无法被验证的情况,尤其是在整个网络发展的初期节点数量比较少的情况下,造成交易时长无法预测。当然,解决方法也是有的,但是不管是见证人还是其他超级节点机制,都在一定程度上违背了去中心化。
2:不支持强一致性。DAG作为一种谣言传播算法,其异步通讯机制在提高了扩展性的同时也带来了一致性的不可控问题。区块链是同步操作的验证机制,能够保证较高的一致性。但是DAG作为异步操作,它不存在一个全局的排序机制,在运行智能合约时,这就很可能会出现节点间所存储的数据在运行一段时间以后出现偏差的情况。
3:安全性还没有得到大规模的验证。DAG技术并不新鲜,但是应用到去中心化账本领域确是近几年的事情。他没有像比特币那般经历过长达10年的安全验证。这是他目前大规模的部署DAPP的最大障碍。
三、DAG目前解决了哪些问题
目前限制区块链发展的核心技术问题就是效率问题,而DAG模式为区块链提升效率提供了可能性。DAG主要解决了区块链系统中的三大问题。
提高交易速度:DAG可以多线程交易,而区块链只能单线程交易,而且DAG中交易者越多速度越快。
节省成本:DAG把交易确认的环境直接下放给交易本身,因此不需要手续费。
节约资源:DAG中没有矿工角色,所以不需要消耗社会资源。
四、DAG局限性
没有完美的人,也没有完美的区块链,DAG本身存在很多问题。
交易时间难确定:DAG是一种异步通讯模式,异步通讯所带来最大的问题在于一致性不可控,因此确认时间会更长。
双花问题难解决:DAG是多链结构,因此很容易出现双花问题,并且这个问题目前还没有很好地解决方案。
交易冗余:很容易出现多条链处理同一交易的情况、从而造成系统压力指数增长。
以上这些问题就是为什么DAG得出现并没有产生很大影响的原因。