LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > 一文诠释什么是DAG

一文诠释什么是DAG

2019-12-27 流浪诗人 来源:区块链网络

一、什么是DAG?

有向无环图(Direct Acyclic Graph或DAG)是可以说是近几年区块链项目的技术热点之一。不少业内人士都认为这项技术有可能在根本上解决区块链的扩容问题,因此相关的项目都有较高的热度。然而,由于其更高的技术门槛和开发难度,采用这项技术的区块链项目仍然非常少。目前上线的DAG公链,相对成熟的IOTA,Byteball和Nano。

首先简单和Blockchain比较一下。下面这张图是一条典型的blockchain:

这里写图片描述

下面是一个DAG的大概模样:

这里写图片描述

DAG:Directed Acyclic Group,中文译为"有向无环图"。如果一个有向图从任意顶点出发,都无法经过若干条边回到该点,则这个图是一个有向无环图。DAG不一定能转化成为树,但是树一定是一个DAG。所以Blockchain可以被认为是DAG的一个特殊树形结构。

在区块链的应用上,DAG图的每个顶点代表在某一个时间新挖出的区块。一般的线性区块链是DAG的一种特殊情况,也即每个时间段整个系统只能产生一个区块。不同的是,DAG允许不同节点按自己的节奏生成区块,只需要每个区块选择一个或多个区块作为自己的子块。DAG本身是一个已经在大规模应用的技术,包括Big Data, Apache Spark之类。所以从基本结构上可以看出来,相对传统的Blockchain技术,DAG的网络延展性和吞吐量都可以做到非常大。

不过DAG技术在区块链里应用的时候, 其实各家的技术实现都会有一点点区别。包括IOTA,Byteball和Nano,算是目前主要的几种模式。不过在大概在区块链里的实现中, 共同的一点是一条transcation(交易)被分为send(送出)和receive(收回)两条记录来异步处理,所以就避免了区块这个问题。和BCH之类不同,目前要做1GB block。未来1TB block避免了区块的臃肿,也减少了block producer的时间。DAG的尾端可以平行增加任意多的新数据,因此天生具有很强的交易吞吐量。这一点是完胜线性区块链。

二、DAG常见问题

  1. DAG异步处理数据的特征导致攻击者可能利用节点间的信息差进行双花。如果两个顶点间没有明确的父子关系,攻击者可以分别在只看到这两个顶点中的一个的不同节点处,对同一笔存款进行双花。

  2. 第二就是影子链的问题,DAG允许多重并行交易的特征。攻击者可能暗中让多节点共谋生成一条高权重的影子链,并且时不时地将影子链跟主链进行对接以逃避检测算法。这样子在极端情况下,影子链可以代替主链作为全网共识。

  3. 第三点,目前DAG的模式,导致很多边缘节点的交易,可能没法得到足够多的确认。

除了这三点,还有很多安全问题,比如IOTA也是多次被攻击。

三、安全问题

目前上线的DAG公链,相对成熟的IOTA,Byteball和Nano。

  1. Byteball

Byteball本身指定了12个见证人节点,由见证人来确定主链选择,来防止影子链问题。同时它要求从创始块开始确定一条所有参与者公认的主链,而将其他的顶点看做是附属在这条主链上。每一条主链对应着一种不同的主观上的时间顺序,从而对应着不同的双花交易的确认。

  1. IOTA

IOTA的方式有些区别。把主链的概念以tangle(扭结)的形式来描述。扭结实际上代表厚度任意的主链。在新顶点产生的时候,每个新顶点会选择2个旧顶点作为父顶点,并进行PoW挖矿。IOTA在确定扭结时,按照所有的父顶点关系进行权重计算,给予较多子顶点支持的父顶点更多的权重。 IOTA对于影子链攻击的防范主要是通过算法来排除和概率计算,不过这个算法并没有很好的理论证明。

  1. Nano

Nano的DAG架构比较特别,每个账户是一条单独的链。这些链只有每当有发送或者接受转账时会更新相关交易的信息,这样每条链都只处理跟自己账户有关的交易。Nano采用的共识是DPoS+PoW。交易出现争议就用DPoS解决争端,用PoW来抵御垃圾交易。一般交易所就一个Nano钱包账户,进出的交易量比较大,导致交易所必须进行大量的PoW挖矿。目前的解决方案是Nano会手动免除交易所的PoW挖矿。

这三条公链,Byteball可以实现有限的智能合约,主要是针对各种支付场景;IOTA应该会在年内由第三方实现;Nano只做支付。

此外,另一个已经上交易所并声称支持智能合约的DAG公链是Constellation。Constellation已经上线测试。应该是使用的交易序列,来支持智能合约的实现。同时其智能合约使用的是Scala语言。

四、总结

总的来说, DAG结构目前只适合特定方向的应用场景,自身也有非常多的问题需要解决,共识机制也才刚刚开始完善,很有发展空间。目前我觉得对DAG做进一步的优化是一个趋势,即所谓的路由。我个人认为在一个网络里,路由最重要,路由最主要的作用一个是防止环路,一个是找到最优路径。有了路由,整个网络才能比较优化地处理更大的数据量,更加稳定和安全.

由于IOTA是为了规模应用而建立的,因此出于安全原因,采用了一种自主的和临时性的共识机制:协调器。每隔两分钟,IOTA基金会创建一笔里程碑(milestone)交易,所有经它确认的交易立即被认为具有100%的确认置信度。协调器在IOTA网络早期发展阶段充当了一种保护机制,直到完整的Tangle分布式共识算法开始发挥作用时,IOTA基金会将关闭协调器,让Tangle完全依靠自身来演变和发展。这将在迭代阶段发生,当网络成熟到可以摆脱协调员时,网络本身也会立即变得更加效率。


—-

编译者/作者:流浪诗人

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...