区块链技术非常热门,但随着越来越多人使用比特币、以太坊等区块链,使得效率低下的问题越来越突出。尤其是2017年6月以来,ICO市场爆炸式增长,人们疯狂的购买以太坊用于投资ICO,导致以太坊网络经常严重延迟。有些人为了能加快以太坊上的转账,甚至将手续费(Gas费用)调高到几百美金。这已经严重违背了区块链作为去中心化支付手段的初衷。

为此,扩容已经成了当前区块链技术发展的重要议题。并出现了分片、侧链、DPoS等扩容解决方案。

除了这些对现有区块链改进的方案之外,还出现了一项受到广泛关注的技术:有向无环图,即Directed Acyclic Graph(DAG)。

网上关于DAG的资料并不很多,仅有的一些资料也非常学术性,较难理解。本文尝试用较易理解的方式来解释下什么是DAG技术。

我们知道,区块链技术是一种链式数据库结构,每个区块就像铁链一样,环环相扣。

DAG其实与数组、排列、区块链一样,也是一种数据结构。

但与区块链不同,DAG将最长链共识改成最重链共识。传统区块链上,新发布的区块会加入到原先的最长链之上,并且以所有节点都认为最长的链为准,依次无限蔓延。而DAG中,每个新加入的单元,不仅仅只加入到长链里的一个区块,而是加入到之前的所有区块。假设当你发布新交易时,前面有两个有效区块,那么你的区块会主动同时链接到前面两个之中,DAG 中的每个新单元,验证并确认其父单元,以及父单元的父单元,慢慢可达创世单元,并将其父单元的哈希包含到自己的单元里面。随着时间递增,所有交易的区块链相互连接,形成图状结构,如若要更改数据,那就不仅仅是几个区块的问题了,而是整个区块图的数据更改。DAG这个模式相比来说,要进行的复杂度更高,更难以被更改。下图是一个网状的DAG结构:

最著名的应用DAG技术的项目是IOTA,IOTA改进了DAG,并提出了Tangle(缠绕)方案。即要验证新的交易前,只要直接验证之前的两个交易,这也使得在这两个交易之前所有被验证过的交易得到间接验证。在IOTA的Tangle中,有一个权重积分的概念,所谓权重积分是指它自身的权重与它验证过的所有交易的自身权重之和。在DAG 结构中,交易总是自己创建并发布。从理论上看,攻击者总是可以建构比它要推翻掉的那个交易权重更高的交易用以双花。

看了以上文字后,是否有点晕了,没关系,下面,我通过图形来形象的解释一下:

首先来看区块链,区块链是一种链式数据结构,如下图:

而DAG的数据结构则可以用下图来表示:

在上图中,1和2号是创世节点;第3个节点产生时,只需要确认1号和2号的交易;第4个节点产生时,只需要确认2号和3号,以此类推。

上图是已经经过拓扑排序后的图,比较好理解。它也可以表示成网络图结构,如下图:

如果还没搞懂,那我们再用服装缝制工艺来表示区块链和DAG数据结构(虽然比方不是很合适,但便于普通人理解):

下图是平针针法,就好像区块链,是一个单链的结构。

下图是回针针法,每次产生新的节点(针眼)后,需要往回走一针,就好比DAG,需要有之前的两个节点同时进行确认。

DAG不是区块链技术,但是现在通过DAG技术实现的去中心化网络仍旧被归在区块链板块中。目前比较流行的除了上文提到的IOTA外,还有ByteBall(字节球),xDAG,以及SPECTRE。这些项目都在基础的DAG结构上做了优化处理。

DAG技术才刚刚起步,有很多不完善的地方,但我相信该技术的发展前景会非常良好。目前IOTA的TPS(每秒交易次数)可以达到600-900笔,已经超过paypal的交易能力。随着应用的人更多,执行效率会更高。这是DAG技术与区块链技术最大的不同:区块链技术的效率会随着应用的增加而降低,而DAG却恰恰相反。

(本文尽量用浅显的比方解释DAG,不当之处望谅解,我们正在做相关产品开发,有兴趣可关注)

http://www.bcfans.com/zhuanlan/kuankecaijing/23777.html

有向无环图(DAG)技术白话解读相关推荐

  1. 数据驱动应用(三):异构数据服务(基于有向无环图DAG)

    概述 主要概念 数据服务(Data Service):对异构数据源,基于有向无环图,提供异构数据的查询和推送能力. 指标:用于衡量事物发展程度的单位或方法,它还有个IT上常用的名字,也就是度量.例如: ...

  2. 后端 绘制有向无环图(DAG图)

    因为公司的某个系统比较古老,里面的 job 的管理几乎都是直接通过操作数据库来实现的,对于一般的操作还可以忍受,但是每次想知道 job 之间的依赖关系的时候,就会相当难受,于是便脑袋很抽地一定要写一个 ...

  3. Apache Spark中的有向无环图DAG

    Apache Spark中的有向无环图DAG 由DATAFLAIR TEAM ·更新· 2018年11月21日 1.目的 在本Apache Spark教程中,我们将了解Apache Spark中的DA ...

  4. 大数据工作流任务调度--有向无环图(DAG)之拓扑排序

    拓扑排序(Topological Sorting) 回顾基础知识: 1.图的遍历: 图的遍历是指从图中的某一个顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次.注意树是一种特 ...

  5. C#实现有向无环图(DAG)拓扑排序

    对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在 ...

  6. 有向无环图DAG 拓扑排序 代码解释

    目录: DAG定义 举例描述 实际运用 算法描述 算法实战 算法可视化 定义 在图论中,由一个有向无环图的顶点组成的序列,当且仅当满足下列条件时,称为该图的一个拓扑排序(英语:Topological ...

  7. `Computer-Algorithm` 有向无环图DAG

    Contents 有向无环图 定义 性质 应用 最小路径点覆盖 最小路径重复点覆盖 路径独立集 至少新添加几条边,使得DAG成为SCC 有向无环图 定义 性质 + let HHH be the set ...

  8. 有向无环图(DAG)拓扑排序的两种方法

    如下图的DAG: 第一种: (1)从AOV网中选择一个没有前驱的顶点并且输出它: (2)从AOV网中删除该顶点,并且上去所有该顶点为尾的弧: (3)重复上述两步,直到全部顶点都被输出,或者AOV网中不 ...

  9. 有向无环图(DAG)的温故知新

    当我们学习数据结构的时候,总是觉得很枯燥,而当我们解决实际问题的时候,又往往因为对数据结构了解的匮乏而束手无策.从问题中来,到问题中去,在某一点上的深入思考并且不断的实践积累,或许是个笨办法,但笨办法 ...

  10. java 有向无环图 树_拓扑排序-有向无环图(DAG, Directed Acyclic Graph)

    条件: 1.每个顶点出现且只出现一次. 2.若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面. 有向无环图(DAG)才有拓扑排序,非DAG图没有拓扑排序一说. 一 ...

最新文章

  1. eclipse安装一直卡在安装中_Eclipse软件安装包+安装教程
  2. 【华为大咖分享】8.Focus on Value 的思考与实践精粹(后附PPT下载地址)
  3. python程序扩展名主要有-python文件的后缀名都有哪些?
  4. button的格式的问题
  5. 单片机加减法计算器_单片机简易加法计算器程序
  6. 控制输入,非法字符不能输入到TextBox.
  7. linux中什么是进程名,Linux进程是什么
  8. 小甲鱼Python学习
  9. DCDC电源芯片的引脚功能及应用-BUCK芯片和BOOST芯片
  10. 计算机病毒进化趋势,人类进化趋势是什么?
  11. 中国顶级CEO经典语录
  12. APP设计之启动页和广告页
  13. vue+elementUI+vue-i18n实现中英文切换。
  14. SpringBoot+MangoDB查询操作(MongoTemplate)总结
  15. 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
  16. 关于babel配置使用可选链
  17. Agile EC3010 MCAD UserGuide-1
  18. 对 Xml 文件的操作
  19. H5幸运盒子幸运砸金蛋微信盲盒游戏网站源码
  20. Android Camera模块(一)

热门文章

  1. Multi-Chat发布!科研工具大升级!太太太太强了!
  2. javascript 链式调用实现原理
  3. @Resource与@Autowire
  4. 此文献给正打算入门大数据的朋友:大数据学习笔记1000条(2)
  5. 乐迪智能陪伴机器人_乐迪陪伴机器人 孩童在智能时代的新玩具
  6. 自学前端第十九天:云道页面综合练习
  7. 《大话数据结构》框要
  8. 原生html中modal,基于原生JS封装的Modal对话框插件
  9. sqlserver 删除重复数据,保留一条
  10. 去雨方向工作概述(二)