区块链是一个去中心化的数据库,但是去中心化的数据库却不仅仅指区块链,因为还有一种技术叫做DAG,它也是分布式账本技术。

1:什么是DAG

DAG(Directed Acyclic Graph),中文名"有向无环图"。"有向"指的是有方向,准确的说应该是同一个方向,"无环"则指够不成闭环。在DAG中,没有区块的概念,他的组成单元是一笔笔的交易,每个单元记录的是单个用户的交易,这样就省去了打包出块的时间。验证手段则依赖于后一笔交易对前一笔交易的验证,换句话说,你要想进行一笔交易,就必须要验证前面的交易,具体验证几个交易,根据不同的规则来进行。这种验证手段,使得DAG可以异步并发的写入很多交易,并最终构成一种拓扑的树状结构,能够极大地提高扩展性。

上面这张图是区块链,其中黑色的是最长链,也是全网的唯一主链。紫色的是分叉链,随着出块数量的增多,由于没有得到认可,最终被抛弃。

上图左右这两张图都是DAG。但他们是不一样的。左边这张图是IOTA的"缠结Tangle",使用者每发起一笔交易,需要验证前面两笔交易,后面这张图是普通的DAG,对验证次数没有限制。

2:DAG与区块链相比的优缺点

DAG系的区块链有些概念很有趣,了解这些概念更容易理解DAG技术。

1从概率的角度来看双花问题。

在比特币网络中,通过UTXO模型,一个用户对自己可以解锁的UTXO只能发起一次转账,如此解决双花问题。比特币白皮书中也有提到,有可能多个矿工会同时解决哈希难题,获得同一时间段的交易打包权就是出块权,会有临时分叉的可能性。从这个角度来看,比特币网络中所谓的"global ledger state"也是一个不确定的状态。某一笔交易状态的确认是由其后挂靠交易的数量决定的,其后挂靠的交易越多,交易状态回滚的概率越低,这笔交易越安全。

2网络宽度

iota的tangle网络

DAG网络一个重要的问题就是解决网络宽度,DAG网络中,每笔交易被确认,需要链接到已经在网络中存在的并且比较新的交易,如果都选择网络中比较早的交易,会导致网络宽度过宽,新的交易难以得到确认。理想的状态是,新的交易发起时,选择网络中已经存在的并且比较新的交易做链接确认,这样网络的宽度保持在一定范围,能让新的交易有足够快的确认时间。在IOTA中,tangle也提出了自己控制交易宽度的算法,有兴趣可以参考tangle白皮书。

那么DAG究竟有哪些特点,居然让iota市值一度排到了虚拟货币第四的位置。

1交易速度快

如上文提到,由于DAG摒弃了区块概念,交易直接进入全网中(需要指出,iota网络中每发起一笔交易,会类似hashcash一样的机制做简单的pow证明),所以交易速度预期比基于pow和pos的需要出块的区块链会快不少。

2无需挖矿

DAG把交易确认的环境直接下放给交易本身,无需由矿工打包成区块后同意交易顺序。所以DAG网络中没有矿工的角色。

3无手续费

iota的tangle网路中,交易发起只需要做简单的POW工作量证明,整个网络中的POW都是发起交易者自己做的,而不是交给矿工。发起交易无需手续费。

4智能合约支持

目前iota还不支持智能合约,但是官方roadmap中有计划在18年开始实现对智能合约的支持。而byteball也还不支持智能合约。

5需要见证节点

不管是iota还是byteball,目前的网络结构中,还是需要见证人机制的存在。这一部分不管是DPOS、POS、PBFT,大家最终都会在效率、安全性上寻求一种平衡。

市场上iota和byteball的市值已经引起了很多关注,相信对DAG的技术讨论也会变多。从技术角度来看,DAG给我们提供了完全不一样的区块链实现,高性能和无手续费这些点确实引人注目。随着社区对DAG技术的进一步完善和发展,也许,DAG会是真正的区块链3.0呢。

区块链目前有什么问题呢,说白了就是一句话,在保证去中心化和安全性的前提下无法大幅度的提高扩展性,导致难以商业化运用。而DAG,理论状态下是去中心化的、如果网络足够强大,安全性也可以保证,更重要的是能够大幅度的提高扩展性,采用DAG技术的分布式数据库,起步就可以把TPS做到10万+,还能把交易费用做到极低。

既然DAG这么完美,是不是就可以完全替代区块链呢?当然不是,事实上,DAG也有自身的缺陷性。

1:交易时长不可控。DAG的验证规则是后面的交易验证前面的交易,这就很容易出现最后的交易迟迟无法被验证的情况,尤其是在整个网络发展的初期节点数量比较少的情况下,造成交易时长无法预测。当然,解决方法也是有的,但是不管是见证人还是其他超级节点机制,都在一定程度上违背了去中心化。

2:不支持强一致性。DAG作为一种谣言传播算法,其异步通讯机制在提高了扩展性的同时也带来了一致性的不可控问题。区块链是同步操作的验证机制,能够保证较高的一致性。但是DAG作为异步操作,它不存在一个全局的排序机制,在运行智能合约时,这就很可能会出现节点间所存储的数据在运行一段时间以后出现偏差的情况。

3:安全性还没有得到大规模的验证。DAG技术并不新鲜,但是应用到去中心化账本领域确是近几年的事情。他没有像比特币那般经历过长达10年的安全验证。这是他目前大规模的部署DAPP的最大障碍。

DAG技术作为区块链的一个有益补充,其异步通讯机制在提高扩展性、缩短确认时间和降低支付费用方面优势明显,未来在去中心化技术领域将来也会有一席之地。但其安全性和一致性的问题也亟待解决。相信随着以后技术的发展,这些问题也会得到逐步改善。老马也比较看着这方面的发展。

五分钟讲明白DAG(有向无环图)的优缺点相关推荐

  1. 算法精解:DAG有向无环图

    DAG是公认的下一代区块链的标志.本文从算法基础去研究分析DAG算法,以及它是如何运用到区块链中,解决了当前区块链的哪些问题. 关键字:DAG,有向无环图,算法,背包,深度优先搜索,栈,BlockCh ...

  2. 流程图形化-流程拆分(DAG(有向无环图)计算所有的路径)

    题记: 今天在工作中,实现业务流程图中流程图形化 Node & Flow的计算方式,其中大概是将大的流程图集合拆解成若干个小的子流程,这样在计算的时候,只需要计算子流程的结果就可以实现流程自动 ...

  3. 数据结构笔记-DAG有向无环图

    一 图的基本概念 图(Graph):是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合. 无向边:若顶点Vi和Vj之间 ...

  4. Spark构建DAG(有向无环图)

    文章目录 前言 一.构建RDD有向无环图 二.RDD有向无环图拆分 三. DAGScheduler 四. Task调度 五. Task执行 前言 有向无环图(Directed Acyclic Grap ...

  5. 有向无环图Directed Acyclic Graph(DAG)

    1.DAG 有向无环图Directed Acyclic Graph(DAG) DAG是一个没有 有向循环的.有限的有向图 . 它由有限个顶点和有向边组成,每条有向边都从一个顶点指向另一个顶点: 从任意 ...

  6. ardl模型stata命令_Stata新命令快讯:有向无环图、模糊倍分法等

    Stata 连享会   主页 || 视频 || 推文 温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验. 编者按: 定期递送 SSC 网站上发布的最新命令,对于我们认为重要的命令进行标注. 对于 ...

  7. 数据结构(六):图的概念、存储方式、基本操作、最小生成树、最短路径、有向无环图、关键路径 | Prim、Kruskal算法 | BFS、Dijkstra、Floyd算法 | 拓扑排序 | 求关键路径

    文章目录 第六章 图 一.图 (一)图的定义 (二)图逻辑结构的应用 (三)无向图.有向图 (四)简单图.多重图 (五)顶点的度.入度.出度 (六)顶点-顶点的关系描述 (七)连通图.强连通图 (八) ...

  8. 打印一种拓扑排序(假定给的是有向无环图时)DFS+栈

    一.定义: 在计算机科学领域,有向图的拓扑排序是其顶点的线性排序,使得对于从顶点u 到顶点v的每个有向边uv,u在排序中都在v之前. 例如,图形的顶点可以表示要执行的任务,并且边可以表示一个任务必须在 ...

  9. ardl模型stata命令_Stata新命令快讯: 有向无环图、模糊倍分法等

    编者按: 自今日起,Stata 连享会 (公众号 StataChina) 将开设「Stata新命令快讯」专栏,定期推送 SSC 网站上发布的最新命令,对于我们认为重要的命令进行标注. 对于您感兴趣的命 ...

最新文章

  1. Javascript的this用法
  2. 记录JS event Loop机制及Node v8事件执行机制
  3. Scala基础教程(二):数据类型、变量
  4. DYNP_VALUES_READ
  5. H5新增的标签和属性
  6. 运行Gazebo出现[Err] [REST.cc:205] Error in REST reques
  7. 单片机原理及应用pdf_单片机原理及应用课程设计
  8. C# WinForm开发系列 - Regular Expression
  9. 阶段1 语言基础+高级_1-3-Java语言高级_09-基础加强_第3节 注解_18_注解_案例_简单的测试框架...
  10. 推荐 四种优秀的数据库设计工具
  11. 第三方模块:Python3 OS 文件/目录方法
  12. C++ cout的使用,看这一篇就够了
  13. CSS颜色和背景详解- 背景颜色 - 背景图片 - (color background-color background-image...)
  14. python解析mht文件_php解析mht文件转换成html
  15. 生命与负熵---宇宙的心弦
  16. html怎么将背景设为黑色,文字设为白色
  17. 国产安卓和原生android,定制安卓和原生Android到底有哪些不同?真相了!
  18. 简单的解决textarea文本框内容换行,对应到页面的内容也换行的问题
  19. clear:both 的作用
  20. 蜀门linux服务端架设,蜀门私服常用修改配置大全

热门文章

  1. 示波器RIGOL DS1102E
  2. linux怎么远程取文件大小,Linux shell自动读mongo数据、远程获取文件大小示例脚本...
  3. 进销存管理(FIFO,LIFO)
  4. Anaconda找回默认源
  5. Jenkins常用插件之email-ext
  6. 数字集成电路低功耗技术
  7. [转载]JDO之前世今生
  8. 成为精英中的精英的五个重要思想
  9. 河北专接本计算机各学校分数线,2018年河北省专接本各学校录取分数线录取率...
  10. 【人工智能】揭秘华为云EI:华为人工智能发展路线与BAT大不相同