Nxt中国社区

区块链技术DAG(定向无环图)

By zhang at 2018-06-19 • 0人收藏 • 200人看过

从15年开始,区块链概念被单拎出来,这之前区块链还只是比特币技术里的一个数据结构,中本村白皮书里把block和chain连一起的时候也只是a chain of blocks 。随着以太坊去中心化计算机的概念提出来,很多人开始把以太坊称作区块链2.0,而比特币被归到了区块链1.0。


DAG(Directed acyclic graph),有向无环图,是计算机领域一个常用的数据结构,因为独特的拓扑结构所带来的一些特性,经常被用到处理动态规划,导航中寻求最短路径,数据压缩等场景中。


第DAG(Directed acyclic graph),有向无环图,是计算机领域一个常用的数据结构,因为独特的拓扑结构所带来的一些特性,经常被用到处理动态规划,导航中寻求最短路径,数据压缩等场景中。 第一次提出DAG跟区块链结合是在Nxt社区,可以发现DAG最初出现就是为了解决区块链的效率问题。比特币的效率一直比较低,基于工作量证明共识下的出块机制是一个原因,由于链式的存储结构,整个网络中同时只能有一条链,导致出块无法并发执行。社区有人提出DAG的拓扑结构来存储区块,这个时候更多还是类似侧链的解决思路,不同的链条存储不同类型的交易,这样降低出现双花的可能,在之后某个节点需要合并的时候,几个分支再归并到一个区块。


简单介绍下,目前比特币区块链存储结构如下,每个区块存储着当前时间段所有的交易,矿工一直在拼命争夺某个时段交易的打包权利,把当前时间段所有的交易打成一个区块。目前比特币网络平均出块时间在10分钟



比特币区块链存储结构


而Nxt社区提出,改变区块的链式存储结构,变成区块DAG。在区块打包时间不变的情况下,网络中可以并行的打包N个区块,网络中的交易就可以容纳N倍。



Nxt社区提出的DAG of blocks


发现这个时候DAG跟区块链的结合还是停留在侧链的思路,不同类型的交易可以并行在不同的链条进行,达到提升性能的目的。这时候的DAG还是有区块的概念。


我们发现不管是最近风头正盛的iota,还是也备受瞩目的byteball,都提出了blockless无区块的概念。不管是比特币还是以太坊,我们总会提到出块速度这样的概念,比特币每十分钟才出一个块,6个出块确认就要一个小时,以太坊好很多,但是出块速度也要十几秒。为什么一定需要区块呢?15年社区有提出DAGCoin的概念,DagCoin: a cryptocurrency without blocks。这里把区块和交易融合到了一起。我们回想下比特币网络中区块和交易的概念,很多笔交易先打包到区块中,区块和区块之间通过prehash来维护全网的交易顺序。而DAGCoin的思路,让每一笔交易直接参与维护全网的交易顺序。这样交易被发起后直接跳过打包区块的阶段,直接融入全网,如此达到所谓的blockless效果。这样确实连打包交易出块的时间都省去了,DAG最初跟区块链的结合就是为了解决效率问题,现在不用打包确认,交易发起后直接进入确认网络,理论上效率自然提高很多。


自此,以blockless独树一帜的DAG区块链雏形基本形成。又以IOTA和Byteball在市场上的表现最为耀眼。


DAG系的区块链有些概念很有趣,了解这些概念更容易理解DAG技术。


1.从概率的角度来看双花问题。


在比特币网络中,通过UTXO模型,一个用户对自己可以解锁的UTXO只能发起一次转账,如此解决双花问题。比特币白皮书中也有提到,有可能多个矿工会同时解决哈希难题,获得同一时间段的交易打包权就是出块权,会有临时分叉的可能性。从这个角度来看,比特币网络中所谓的"global ledger state"也是一个不确定的状态。某一笔交易状态的确认是由其后挂靠交易的数量决定的,其后挂靠的交易越多,交易状态回滚的概率越低,这笔交易越安全。


2.网络宽度


iota的tangle网络

DAG网络一个重要的问题就是解决网络宽度,DAG网络中,每笔交易被确认,需要链接到已经在网络中存在的并且比较新的交易,如果都选择网络中比较早的交易,会导致网络宽度过宽,新的交易难以得到确认。理想的状态是,新的交易发起时,选择网络中已经存在的并且比较新的交易做链接确认,这样网络的宽度保持在一定范围,能让新的交易有足够快的确认时间。在IOTA中,tangle也提出了自己控制交易宽度的算法.


那么DAG究竟有哪些特点呢,阐述如下:


1.交易速度快


如上文提到,由于DAG摒弃了区块概念,交易直接进入全网中(需要指出,iota网络中每发起一笔交易,会类似hashcash一样的机制做简单的pow证明),所以交易速度预期比基于pow和pos的需要出块的区块链会快不少。


2.无需挖矿


DAG把交易确认的环境直接下放给交易本身,无需由矿工打包成区块后同意交易顺序。所以DAG网络中没有矿工的角色。


3.无手续费


iota的tangle网路中,交易发起只需要做简单的POW工作量证明,整个网络中的POW都是发起交易者自己做的,而不是交给矿工。发起交易无需手续费。


4.需要见证节点


不管是iota还是byteball,目前的网络结构中,还是需要见证人机制的存在。这一部分不管是DPOS、POS、PBFT,大家最终都会在效率、安全性上寻求一种平衡。市场上iota和byteball的市值已经引起了很多关注,相信对DAG的技术讨论也会变多。从技术角度来看,DAG给我们提供了完全不一样的区块链实现,高性能和无手续费这些点确实引人注目


登录后方可回帖

Loading...