鲸准研究院丨DAG技术解析(一)
DAG(有向无环图)技术是区块链领域的技术热点之一。DAG技术相比于原来的区块+链的数据结构有更快的交易速度以及更强的可扩展性,但由于其技术门槛和开发难度较高,在DAG技术上深耕的项目并不多见。我们希望能通过对具体项目原理的解析向读者呈现出DAG技术的全貌,本期选定了XDAG作为分析案例。
作者:王帆 陈泓伊
指导:谭莹
本期受访者:XDAG核心开发者Frozen
支持机构(排名不分先后):
星球日报、火星财经、金色财经、陀螺财经、金牛财经、嘻哈财经、耳朵财经、零壹财经、巴比特、荣格财经、金塔财经、币圈邦德、区块财经、链条ChainHeadline
. 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网络开发出智能合约的项目。
. 05 .DAG公链代表项目
5.1 XDAG
XDAG是一个可实现每秒成千上万笔交易的去中心化支付系统,也是目前唯一一个DAG+POW项目,具有高性能和高安全性。XDAG项目是一个完全由社群驱动的项目,目前拥有三位核心开发者,约三万社区成员。近期社区的几位核心开发者对于旧版本进行了大量的优化,已于上周上线新版本,并且针对原程序的c语言版本,开发者正在着力开发C++,Go,Python版本,预计在一两个月内完成。
XDAG当前价格:约0.488元
挖矿规则:总共挖矿160年,每四年减半,前一个四年每年挖出4亿;每64s出一个块,一个块奖励1024的xdag。
矿池介绍:目前XDAG有三个比较老牌的大型矿池,分别是胖池、vspool、飞池, 在XDAG发展初期,由于国内矿池频繁遭遇DDOS,广大矿工不得已出海挖矿,限于网速以及矿池费率等因素,收益不理想。抱着给国内矿工提供更加稳定,透明的服务信念,胖子决定搭建一个属于国内人的专属矿池(胖池)。胖池采用高防主机,针对国内矿工进行线路优化及调整,能承受18T流量攻击,费率公开透明,有着完善的界面和查询功能,并支持微信公众号掉线提醒收益查询等。
5.2 IOTA
IOTA是一种开源性的底层基础协议,是一个专为物联网设计的新型交易结算和数据转移层,使用基于DAG的Tangle技术,社区成员或者相关企业可以自发的在协议之上开发相应的软件应用,代表性的应用案例如下:Qubic、Elaadn、data.iota.org、IoTipBot。
5.3 Byteball
Byteball是一种基于DAG技术的新型数字资产平台,通过设置转账前必须包含之前的交易记录来防止双花,采用新型的见证人模式来保证主链选择过程的安全性,因为存在见证人,Byteball会收取手续费用来奖励,从这个角度出发,Byteball不适用于物联网和小额交易领域。
5.4 Nano
一种基于区块点阵(BlockLattice)结构的新型加密货币,具有无交易手续费、瞬时交易的特性,其中每个账户都有自己的区块链,允许其异步地更新到网络的其余部分,从而以极小的资源开销获得快速的交易确认。
. 06 .总结
随着社区对DAG技术的认知和普及、开发人员逐渐变多、DAG技术的完善和发展,DAG项目的优势会逐渐凸显,其性能优越和扩展性强对现有的区块链项目是一个巨大冲击,从技术角度来看,DAG带给我们的是一场新的区块链实验。
编辑: 陈文洋
【转载须知】
1、本报告为Jingdata旗下专业的数据研究分析机构【鲸准研究院】原创作品,受《著作权法》保护,依法享有汇编权及注释权;
2、转载请留言后台,取得授权后方可转载;
3、禁止商用转载,禁止二次编辑转载。