首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

DAG技术解析,发现分布式账本领域下一个独角兽

DAG(有向无环图)技术是区块链领域的技术热点之一。DAG技术相比于原来的区块+链的数据结构有更快的交易速度以及更强的可扩展性,但由于其技术门槛和开发难度较高,在DAG技术上深耕的项目并不多见。我们希望能通过对具体项目原理的解析向读者呈现出DAG技术的全貌,本期选定了XDAG作为分析案例。

01 .什么是DAG

在图论中,如果一个有向图从任意顶点出发无法经过若干条边回到该点,则这个图是一个有向无环图。

图和树一样,都是一种数据结构,图可以分为有向图和无向图,对有向图进一步约束则形成有向无环图,有向图由有限个顶点和有向边组成,每条有向边都从一个顶点指向另一个顶点,无环则指的是从任意一个顶点出发都不能通过这些有向边回到原来的顶点。

因为有向图中一个点经过两种路线到达另一个点未必形成环,因此有向无环图未必能转化成树,但任何有向树均为有向无环图。

02 .DAG原理-以XDAG项目为例

在XDAG的网络中,其实是一个个动态的“局域网”的组合,所有的交易用户隶属于不同的“局域网”,不同的“局域网”联合起来构成整个XDAG的网络。“局域网”建立的基础是具有验证交易(挖矿)能力的节点(这个节点可以是单个矿工,也有可能是矿场或矿池),当用户发起交易时,会将交易发送到自己所在“局域网”的矿工,矿工会验证数字签名、资产余额、数据格式、数据完整性等信息,当遇到无效交易后,便会进行标记,然后矿工会打包确认好的信息并向全网发送,其他“局域网”的矿工收到后会验证自己收到的这个数据包是不是合法的,如果都没有问题,那么这些交易就会被承认。

在XDAG的网络,主节点组成主链,主链是所有节点难度加和最高的一条。和比特币网络一样,所有的交易都需要排序,那么也就是所有的节点是需要排序的,主节点的功能就是确定顺序,除此之外,主节点还负责记录挖矿收益,在XDAG中,每64s出一个块,出块同时奖励矿工1024个xdag,但是主节点不记录其他任何交易,因此可以将主节点看成是一个空块,而其他的节点才负责记录交易。主节点的产生需要挖矿,交易节点是系统自动生成。

03 .DAG的优势

DAG相比于区块链来说,其实是图和链的区别,对于链而言,无法只处理一个局部,因为链的入度和出度只有一个,不能把链上的节点拆成好几个节点去处理,但是对于图却可以,因为图可以有多个出度,那么可以同时处理多个出度连接的节点。

对于链式网络而言,不是节点的处理能力不强,只是链式结构不能并行计算,浪费的时间其实主要为等待时间:一个是发起交易,需要将交易同步所有节点,另一个是当有一个节点确认,需要向全网同步。对于DAG而言则不存在这样的问题,钱包发起交易时不需要等待自己之前有多少交易,只需要经历局部校验、全网广播、其他局部校验,相当于是把交易确认分散化,每一个节点都在做类似于拼图的工作,把自己的和别人确认的交易拼接起来。

因此总结发现DAG有着以下几个优势:

3.1交易速度块

DAG实现的局部处理和并行结算可以使得交易速度大幅度提升。

3.2.拓展性强

因为各个节点无需等待同步其他的节点的数据就可计算使得记账节点很容易答复延展,因此DAG很适用于物联网类项目,例如机器微支付。

3.3.作恶难度更大

相比于链式结构,在DAG中恶意修改的难度会大很多,因为DAG拥有着很多的出度和入度,假如要修改某一个节点,那么对应的出入度都要进行修改。

04 .DAG的问题

尽管在前文中阐述了诸多DAG的优点,但事实上,DAG也有自身的缺陷,DAG类项目也在各自使用不同的技术手段进行解决。

4.1 交易时长不可控

DAG本质是一种异步通讯,异步通讯所带来最大的问题在于一致性不可控,在DAG模型中则在于交易确认时间完全未知。当然,某种程度上同样可以认为在链式模型中,一个区块被超过2/3以上节点数接受才算全网最终确认,因此最终确认时间同样无法准确判断。针对以上问题,XDAG采用了POW+64s固定出块的方式。

4.2 网络传输数据量大幅度增加

链式结构中仅仅账本节点记账,大量的钱包节点仅仅向一个账本节点通讯即可,因此全网络账本节点的数量远远小于钱包节点。在这种情况下,所有的数据同步均在账本节点之间完成,假设网络中有M个账本节点,每一条记录在网络中传输的次数为M+1。

DAG结构,在全网存在N个设备节点时(N成千上万倍大于M),每一个消息都需要在设备间进行点对点通讯,因此对于任何消息的发送,网络中都会存在N^2次数据发送(每一个节点都尝试将信息发送给其他邻居节点)。在未来DAG接入大量的物联网节点后,这会对于记账节点产生很高的要求。

4.3 影子链攻击

DAG 允许多重并行交易的特征,导致攻击者可能暗中生成一条影子链,并且时不时地将影子链跟主链进行对接以逃避检测算法。极端情况下,这条影子链有可能代替主链成为全网的共识。XDAG本身机制决定了不会出现影子链攻击,Byteball则是通过见证人模式来解决。

4.4 智能合约开发难度大

DAG的异步操作使得在运行智能合约时,节点间所存储的数据在运行一段时间后可能出现偏差,从现实情况来看,目前还没有能真正基于DAG网络开发出智能合约的项目。

下一篇文章将介绍DAG公链的代表项目并进行综合对比分析帮你发现分布式账本技术领域的独角兽

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181119B1XLXE00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券