什么是DAG技术
DAG 技术即 Directed AcyclicGraph (DAG),也叫有向无环图,是在分布式的分散环境中人们发送数据的另一种方法,不是区块链技术。它原本是计算机的一种数据结构,一般用来处理动态规划问题。最早提出这个概念的是 Sergio Demian Lerner,在 2015 年 9 月发表了《DAG Coin Draft》的文章,最早提出了 DAG-chain (DAG 链)的概念。可以这样理解它的运行原理:“偷懒的教授嫌麻烦,让学生互评作业,规则是每一个学生在交作业前,要去批一份之前已经交过的别人的作业,批改完之后,自己的作业才可以递交。”
越多的人同时交作业,意味着他们批的作业也越多,在这里只要尽量保证他们拿到的作业是没批过的,那么效率会非常高,由于作业是无尽的,所以永远不用担心作业没有人批。当然,为了防止有学生胡乱打分,教授也要做必要的检查来确保分数的严谨性。
工作原理
-
DAG技术如何在作为一个分布式账本进行应用呢?IOTA是应用DAG技术较为知名的一个项目,它将DAG进行了改进,并提出Tangle(缠结)方案。这里以IOTA作为例子来说明DAG的运行原理。
-
在DAG的网络中,每一个节点都可以是交易者和验证者,因为DAG中的交易处理,正是由交易节点本身来共同完成。
-
而且,IOTA的Tangle账本在保证高速处理交易的同时,并不需要支付交易费用。不过,这并不代表上面的交易时免费的,这是因为在这个账本中,每一笔交易的发起都需要线验证另外两笔随机交易,并将自己发起的交易指向这两笔交易,这样在区块链上矿工所承担的责任就分配给了所有的交易者。
-
DAG这种处理交易的方式,可称作为异步处理模式。
-
Tangle账本是建立在DAG网络拓扑结构上的去中心化账本,利用这一结构,所有点都能成为“矿工”,而且每个节点所承担的交易数量并不会超负荷,这样就使得交易量越大效率越高。
-
如果像IOTA一样,将其运用于微小交易,那么可参与的节点将会更多。区块链承担的交易量每秒可以万计算,而理论上DAG却能够达到每秒以亿计算。
DAG技术的特点
-
DAG相比于目前的公链技术,其实是图和链的区别,对于链而言,无法只处理一个局部,因为链的入度和出度只有一个,不能把链上的节点拆成好几个节点去处理,但是对于图却可以,因为图可以有多个出度,那么可以同时处理多个出度连接的节点。所以,它的特点是:
-
1、交易速度块,DAG实现的局部处理和并行结算可以使得交易速度大幅度提升。
-
2、拓展性强,因为各个节点无需等待同步其他的节点的数据就可计算使得记账节点很容易答复延展,因此DAG很适用于物联网类项目,例如机器微支付。
-
3、作恶难度更大,相比于链式结构,在DAG中恶意修改的难度会大很多,因为DAG拥有着很多的出度和入度,假如要修改某一个节点,那么对应的出入度都要进行修改。
-
-
对于链式网络而言,不是节点的处理能力不强,只是链式结构不能并行计算,浪费的时间其实主要为等待时间:一个是发起交易,需要将交易同步所有节点,另一个是当有一个节点确认,需要向全网同步。
-
对于DAG而言则不存在这样的问题,钱包发起交易时不需要等待自己之前有多少交易,只需要经历局部校验、全网广播、其他局部校验,相当于是把交易确认分散化,每一个节点都在做类似于拼图的工作,把自己的和别人确认的交易拼接起来。
DAG技术的现状
-
运用DAG技术的代表项目,最知名的无疑是DAG三架马车—— IOTA、Byteball、Nano,作为最新的分布式账本主力竞争技术,DAG开始引发大量关注始于IOTA在2017年下半年市值冲入币值排行榜第四名,之后基于DAG的新项目不断进入人们的视野。
-
DAG在快速的发展与革新,除了三驾马车之外,新出现的DAG项目在共识算法、去中心化机制、速度与并发上,都取得了更新的进展,近期引发大家重点关注的项目包括HashGraph、Algorand、Nerthus、Mixin等等,具体介绍请感兴趣的同学自行Google或者百度。
-
另外,每个使用DAG的项目都有一定的区别,比如IOTA使用的结构叫“tangle”,Byteball使用的则是“witness”……随着越来越多的人和项目参与到DAG的生态发展中来,DAG应用的可能性也越来越大。
-
目前,有越来越多的DAG项目正在发展,有乐观者认为DAG才是真正的区块链3.0,也有人认为区块链才是更加完善的去中心化账本。不可否认的是,DAG的确是区块链在去中心化和拓展问题上的强劲对手。