Tech Blog

SmartX智图:为什么选择DAG技术?

By 2019年12月6日 十二月 13th, 2019 No Comments

传统区块链以其去中心化,分布式记账这两大革命性优势,引起了各界的强烈关注。但是传统区块链依然存在有交易确认缓慢,分叉消耗算力等不足。这使传统区块链还没能到成熟的商业运用阶段。而DAG技术的出现,却带来了新的可能。

什么是DAG?

DAG原本是计算机领域一种常用数据结构,因为独特的拓扑结构所带来的优异特性,经常被用于处理动态规划、导航中寻求最短路径、数据压缩等多种算法场景。

https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=1465157798,3704805403&fm=173&app=25&f=JPG?w=553&h=311&s=0AAA7A224BC05CCA1C7511DA030080B1

再看传统区块链和DAG的区别,简单的说有几点:

  • 单元:区块链组成单元是Block,DAG组成单元是TX(交易); 
  • 拓扑:区块链是由Block区块组成的单链,只能按出块时间同步依次写入,好像单核单线程CPU;DAG是由交易单元组成的网络,可以异步并发写入交易,好像多核多线程CPU;
  • 粒度:区块链每个区块单元记录多个用户的多笔交易,DAG每个单元记录单个用户交易。

目前的DAG技术有哪些优劣点?

最知名的三个DAG项目是IOTA,ByteBall还有Nano。IOTA在2017年下半年市值进入第四名之后,DAG技术就引起了广泛的关注。这三个知名的DAG项目,能够反映出DAG目前技术成果的部分优劣点。

  • IOTA

IOTA背后最主要的创新Tangle(纠缠),是一个基于DAG全新设计的分布式账簿结构,是一个既没有块也没有链的区块链。在Tangle中,每一个节点代表的是一个交易。IOTA里没有区块的概念,也没有挖矿和矿工的概念,这就代表没有交易费,整个网络的吞吐量也很高,这是IOTA的最吸引人的亮点之处。在IOTA里没有区块的概念,取而代之的是交易网络,每一个交易都会引用过去的两条交易记录Hash,这样前一交易会证明过去两条交易的合法性,以及间接证明之前所有交易的合法性。

The Tangle另外一个强大之处,就是可以随意的让交易从网络中剥离出来或者合并回去。这种离线异步处理的能力在物联网领域应用中尤为重要。

  • MIT报告指出,IOTA使用了自己开发的哈希算法curl,但是curl算法的哈希值极易发生碰撞,于是就能伪造数字签名。
  • 因为共识是由全网交易确定的,那么理论上来说,如果有人能够产生1/3的交易量,他就可以将无效交易变成有效交易。另一方面,由于IOTA无手续费,所以没有矿工激励,IOTA面临着拒绝服务攻击和垃圾信息攻击可能,就像不收物业费的小区,靠业主自治很难扫清不法份子。
  • IOTA引入闭源的中心化组件Coordinator来对全网交易进行检查(例如双花),如何有效移除Coordinator并建立一个具有良性激励机制的去中心化「Coordinator群体」,IOTA还没有给出解决方案。

ByteBall

Byteball在DAGCoin的基础上,创新性引入主链与见证人概念,鼓励验证多个父辈交易单元,形成一个随着交易增长、相互验证、安全性不断加强的数字签名Hash网络,Byteball创造性的发明了”主链”概念,也就是经过见证人认定的最短路径MC的Parents优选算法。主链创造了一个全网共识确定的交易时间序列,优雅地避免了双花问题。

Byteball的问题是

  • 由于主链算法和见证人发布频率有关系,交易确认的时间是不确定的
  • 由于Byteball基于关系数据库来存储数据,SQL语言过于紧耦合算法逻辑,在一定程度上限制了Byteball目前的扩展能力和速度

Nano

Nano创新性地采用了一个用户一条链的方式,只记录自己的交易,也只有自己可以修改记录,不与其它帐户共享数据,从而使所有的交易都可以并行执行,能提供秒级的交易速度和无限可扩展性,并且允许他们异步地更新到网络的其余部分,从而以极小的资源开销获得快速的交易确认。

Nano一个节点可以存贮所有账户的历史账本,也可以只存贮每个账户的最后修剪记录。当一笔交易发生的时候,发出金额的一方会生成一个send tx的区块,包含记录扣除的金额;而收款账户则生成receive tx区块记录对应获得的金额。交易数据的收发是可以异步进行的,所以就算同时有多笔金额汇入一个账户也没有问题,最终的金额是收到的金额的加法。如果接收方不在线也没关系,未到账的金额会单独标记,等到接收账户上线之后,这笔金额就会从未结算区打入接收区块,完成交易。

Nano的问题是:

  • 没有被充分测试、缺乏同行评议,共识算法可能有严重缺陷的风险。

吸取前辈经验,SmartX的B-DAG有什么特点?

一个典型的 B-DAG 结构如下:

  • G 为创世块
  • M 为矿池产生的主块
  • MC也是矿池产生的主块,但是是算力最大的主块,该块产生后,在该EPOCH周期的M主块都无法成为MC块
  • TX为交易块

SmartX 区块 Block 即交易 TX,交易 TX 即区块 Block。除TX 交易单元外,SmartX 系统还存在 MC 主单元,MC 主单元根据一定周期 Epoch 随机产生用于引用之前产生的所未引用有交易。虽然直观看,MC 和 TX 组成 DAG 结构,单从每个Epoch 看,随着时间流逝,如果只保留主链引用(后面有介绍),其他 MC 引用线去掉,则接近于打散了交易的 BTC 链式结构。该结构结合 BlockChain 和 DAG 技术部分优点,SmartX的开发者将其命名为B-DAG。

B-DAG有如下几个优点:

  • 很容易做到强一致性。因为只保留主链引用,所有产生的新EPOCH周期的主块都必须引用上一个周期的EPOCH周期的MC块,如果未能引用上一周期的MC块,则会被认为是非法主块
  • 由于 B-DAG 技术模型不需要全网 Pending 打包一大区块,即无法控制交易量,交易量到达巨高点而引发雪崩。解决此类问题方法即把控制交易量阀门交给主节点手里。主节点根据自身节点性能指标去动态设置阀门而从达到动态扩容的目标

SmartX在技术上做到了可以完全运行到商用的突破,这是SmartX选择DAG作为技术背景,并且进行深度研究后正确使用的结果,SmartX具有无限可能!