比特家 > 名词 > 正文

名词解析 | 什么是DAG?区块链可以无区块?

DAG(Directed acyclic graph),有向无环图,是计算机领域一个常用的数据结构。

从15年开始,区块链概念被单拎出来,这之前区块链还只是比特币技术里的一个数据结构,中本村白皮书里把block和chain连一起的时候也只是a chain of blocks。随着以太坊去中心化计算机的概念提出来,很多人开始把以太坊称作区块链2.0,而比特币被归到了区块链1.0。至于区块链3.0,市场上为了抢夺区块链3.0的冠名权打的不可开交,没准会是DAG。 

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

第一次提出DAG跟区块链结合是在Nxt社区,可以发现DAG最初出现就是为了解决区块链的效率问题。比特币的效率一直比较低,基于工作量证明共识下的出块机制是一个原因,由于链式的存储结构,整个网络中同时只能有一条链,导致出块无法并发执行。社区有人提出DAG的拓扑结构来存储区块,这个时候更多还是类似侧链的解决思路,不同的链条存储不同类型的交易,这样降低出现双花的可能,在之后某个节点需要合并的时候,几个分支再归并到一个区块。 
简单介绍下,目前比特币区块链存储结构如下,每个区块存储着当前时间段所有的交易,矿工一直在拼命争夺某个时段交易的打包权利,把当前时间段所有的交易打成一个区块。目前比特币网络平均出块时间在10分钟。 
而Nxt社区提出,改变区块的链式存储结构,变成区块DAG。在区块打包时间不变的情况下,网络中可以并行的打包N个区块,网络中的交易就可以容纳N倍。 
发现这个时候DAG跟区块链的结合还是停留在侧链的思路,不同类型的交易可以并行在不同的链条进行,达到提升性能的目的。这时候的DAG还是有区块的概念。 
我们发现不管是最近风头正盛的iota,还是也备受瞩目的byteball,都提出了blockless无区块的概念。不管是比特币还是以太坊,我们总会提到出块速度这样的概念,比特币每十分钟才出一个块,6个出块确认就要一个小时,以太坊好很多,但是出块速度也要十几秒。为什么一定需要区块呢?15年社区有提出DAGCoin的概念,DagCoin:acryptocurrencywithoutblocks。这里把区块和交易融合到了一起。我们回想下比特币网络中区块和交易的概念,很多笔交易先打包到区块中,区块和区块之间通过prehash来维护全网的交易顺序。而DAGCoin的思路,让每一笔交易直接参与维护全网的交易顺序。这样交易被发起后直接跳过打包区块的阶段,直接融入全网,如此达到所谓的blockless效果。这样确实连打包交易出块的时间都省去了,如前文提到的,DAG最初跟区块链的结合就是为了解决效率问题,现在不用打包确认,交易发起后直接进入确认网络,理论上效率自然提高很多。 
自此,以blockless独树一帜的DAG区块链雏形基本形成。又以IOTA和Byteball在市场上的表现最为耀眼。 

DAG系的区块链有些概念很有趣,了解这些概念更容易理解DAG技术。 
1、双花问题
在比特币网络中,通过UTXO模型,一个用户对自己可以解锁的UTXO只能发起一次转账,如此解决双花问题。比特币白皮书中也有提到,有可能多个矿工会同时解决哈希难题,获得同一时间段的交易打包权就是出块权,会有临时分叉的可能性。从这个角度来看,比特币网络中所谓的"globalledgerstate"也是一个不确定的状态。某一笔交易状态的确认是由其后挂靠交易的数量决定的,其后挂靠的交易越多,交易状态回滚的概率越低,这笔交易越安全。 
2、网络宽度
DAG网络一个重要的问题就是解决网络宽度,DAG网络中,每笔交易被确认,需要链接到已经在网络中存在的并且比较新的交易,如果都选择网络中比较早的交易,会导致网络宽度过宽,新的交易难以得到确认。理想的状态是,新的交易发起时,选择网络中已经存在的并且比较新的交易做链接确认,这样网络的宽度保持在一定范围,能让新的交易有足够快的确认时间。在IOTA中,tangle也提出了自己控制交易宽度的算法,有兴趣可以参考tangle白皮书。 
那么DAG究竟有哪些特点?居然让iota市值一度排到了虚拟货币第四的位置。 
1交易速度快 
如上文提到,由于DAG摒弃了区块概念,交易直接进入全网中(需要指出,iota网络中每发起一笔交易,会类似hashcash一样的机制做简单的pow证明),所以交易速度预期比基于pow和pos的需要出块的区块链会快不少。 
2无需挖矿 
DAG把交易确认的环境直接下放给交易本身,无需由矿工打包成区块后同意交易顺序。所以DAG网络中没有矿工的角色。 
3无手续费 
iota的tangle网路中,交易发起只需要做简单的POW工作量证明,整个网络中的POW都是发起交易者自己做的,而不是交给矿工。发起交易无需手续费。 
4智能合约支持 
目前iota还不支持智能合约,但是官方roadmap中有计划在18年开始实现对智能合约的支持。而byteball也还不支持智能合约。 
5需要见证节点 
不管是iota还是byteball,目前的网络结构中,还是需要见证人机制的存在。这一部分不管是DPOS、POS、PBFT,大家最终都会在效率、安全性上寻求一种平衡。 
市场上iota和byteball的市值已经引起了很多关注,相信对DAG的技术讨论也会变多。
从技术角度来看,DAG给我们提供了完全不一样的区块链实现,高性能和无手续费这些点确实引人注目。随着社区对DAG技术的进一步完善和发展,也许,DAG会是真正的区块链3.0呢。  

关于DAG,IOTA,区块链,byteball,中本聪的相关新闻

区块链入门很简单 看这5份白皮书就懂了

一句话记住市值前100的加密货币

小白问答 | 区块链为什么需要跨链技术?

名词解析 | 什么是分片?

从尼克萨博被自动售货机“砸中” 到智能合约

主流货币

货币市值最高 24H涨幅最高

主流钱包

币信钱包 轻钱包 教程下载
Jaxx 轻钱包 教程下载
比特派 轻钱包 教程下载
IMTOKEN 轻钱包 教程下载
MyEtherWallet 网页钱包 教程下载

主流交易所

中文 人民币 交易方式
OKEX 币币法币
OTCBTC 币币法币
币安 币币法币
BitMEX 币币法币
火币Pro 币币法币