DAG简介

基于DAG技术的分布式账本(distributed ledger)系统与比特币(bitcion),以太坊(ethereum)等主流数字货币系统和传统区块链(blockchain)系统不同。其特色是使用DAG(Directed Acyclic Graph,有向无环图)来组织交易(transaction)。

传统的区块链技术,以比特币为例,使用的基本方式是矿工通过POW(工作量证明)共识,(即网络认为最⻓的链为真实链,因为最⻓的链拥有最大的工作量证明),将交易打包到区块(block)中,而每一个区块通过在区块头记录前一个区块的hash值来链接到前一个区块上。通过这种方式,后一个区块直接或者间接的确认了前面所有区块的交易,这样通过POW共识解决了双花问题。

与基于区块链的传统分布式账本技术(基于POW和单链式数据结构)不同,基于DAG技术的分布式账本技术,去掉了区块的限制,通过有向无环图的数据结构,允许后一交易同时连接到多个父亲交易,将交易通过有向图的方式直接连接在一起。 在DAG中,交易构成了图中所有的节点。而带有方向的图的边(edge)表达了交易之间的先后确认关系。箭头由子节点指向父节点,表示了子交易直接或间接地确认了父交易的这种关系,同时也说明了子交易和父交易确认的先后顺序,即子交易一定被确认在父交易之后。这种父子关系是DAG确认机制和抵抗双花的核心。当一个交易产生时,该新产生的交易需要选取某些当前待确实交易来作为该交易的父交易(一个子交易可以有多个父交易)。子交易总是希望连接到包含更多的先辈节点的父交易上。对于一个新交易,在可选有限个父交易的情况下,为了直接或者间接的确认更多的祖先节点,子交易总是试图连接无孩交易(即tips)做为他的父交易,这样使得DAG的方向性得以建立。

DAG技术的优势

  • DAG技术对于高并发具有先天的优势。
  • DAG技术交易确认快,网络可实现即时确认的。不需要向比特币那样需要等待10分钟左右的出块时间,或者像以太坊那样等待15到16秒。
  • DAG技术不受区块大小的限制,不存在区块扩容问题。所以其可伸缩性只取决于网络带宽,CPU处理速度(例 如数字签名加密算法的处理速度)和存储容量的限制。

DAG技术的难点

  • 由于DAG技术这种允许先连接,再判断的方式,对于双花处理则需要更加复杂的设计,从而解决基于DAG的双花问题,这就给如何实现基于DAG技术的区块链系统带来了很多复杂性,这也是目前基于DAG系统的区块链系统还极为少⻅的原因。
  • 目前还没有完美的基于DAG技术的分布式共识算法。
  • 技术还不够成熟,市场接受程度低。

DAG技术的未来

  • DAG技术将是未来区块链和分布式账本技术发展的一种核心趋势。(如Spectre协议和以太的Casper协议)
  • 基于DAG技术的分布式账本技术有可能广泛的应用于金融交易系统和企业资产管理系统中。(如Ripple,Corda,hyperledger等系统的有力竞争者)
  • 基于DAG技术的智能合约能有效解决智能合约的可扩展性(scalability),并且降低合约执行成本。

注释

  • 目前比特币的区块容量是1M,实际情况约能容纳2000多个交易。而以太坊区块大约能容纳200多个交易。比特币社区因为扩容问题带来的争议而严重影响了客戶体验,使得比特币的发展陷入一个瓶颈。同时以太坊试图以分片(sharding)的方式解决扩容的问题,但分片的方式将增加跨区智能合约的事务复杂度,对如何实现分片和分片环境下智能合约的开发都带来很多新的挑战,是否可以解决问题还有待时间去验证。
  • 目前世界上主要有两个有名项目使用DAG技术:IOTA 项目和字节雪球(byteball)项目。相信未来有更多的项目使用DAG技术。