DAG(Directed Acyclic Graph),有向无环图,是计算机领域一个常用的数据结构,因为独特的拓扑结构所带来的一些特性,经常被用到处理动态规划,导航中寻求最短路径,数据压缩等场景中。
第一次提出DAG跟区块链结合是在Nxt社区,DAG最初出现就是为了解决区块链的效率问题。
例如比特币的效率一直比较低,基于工作量证明共识下的出块机制是一个原因。由于链式的存储结构,整个网络中同时只能有一条链,导致出块无法并发执行。
社区有人提出DAG的拓扑结构来存储区块,这个时候更多还是类似侧链的解决思路,不同的链条存储不同类型的交易,这样降低出现双花的可能,在之后某个节点需要合并的时候,几个分支再归并到一个区块。
DAG 的 诞 生
作为一种计算机领域的拓扑数据结构,DAG(Directed Acyclic Graph,有向无环图)在第一次被提出来结合应用在区块链时,是为了解决比特币区块生成效率低下的问题。
基于链式的存储结构,比特币网络平均的出块时间在十分钟左右。而变成区块DAG后,在区块打包时间不变的情况下,可以在网络中并行打包区块,在网络中容纳更多的交易同时进行。
对于普罗大众来说,在接触到虚拟加密货币的时候,就能感受到其显现出区块链相关的技术趋势。在其中最为显著的成果是比特币,同时以太坊也因其独特的技术优势获得不少关注,但实际上,区块链的发展前景远远比这辽阔得多。
比特币在资本市场呼风唤雨之前,已经有几个版本不同的虚拟加密货币诞生了。但是比特币拥有它们所没有的,就是去中心化的伟大梦想。引入了不可篡改等区块链特性的分布式分类账本,比特币在全球范围内迅速风靡,获得了许多推崇。
然而,随着时间的推移,我们的确看到了在比特币和区块链中出现了一些问题。尽管它依然保持了不可篡改和去中心化的特性,一个巨大的问题已然凸显出来:由于区块链先天运作机制而产生的交易时间过长的问题。
一项新技术通过在顶层设计中增添新的特性,来为这个比特币中产生的问题提供了解决方案。
这个新技术即为Directed Acyclic Graph (DAG)有向无环图组织模型。
与区块链的工作机制不同的是,区块链需要矿工来完成工作量证明(PoW)来执行每一笔交易,而DAG能摆脱区块链的限制来完成这样的操作。相反的是,在DAG中一笔交易接着另外一笔,这意味着一笔交易能够对下一笔交易提供证明,由此一直排序下去。这些交易之间的连接就是DAG,就像区块通过哈希值来向整条区块链提供它们的名字一样。
DAG 的 优 势
通过使用DAG,交易时间将会变得微不足道,比特币也能得到良好的运作环境。
在区块链的运营机制中,每笔交易要花费十分钟的时间。而通过DAG,由于每笔交易都与下一笔交易相连,且矿工被排除在外,交易时长会随着越来越多用户加入系统而缩短。
在DAG系统中,剔除矿工的设置能够避免像区块链系统中某一个矿池集合全网50%算力的威胁与双重攻击的隐忧。
那么,DAG是如何规避这样的威胁的呢?
没有了区块链中的工作量证明共识机制,DAG的交易指令能够通过这么多起交易向外扩散,正因为每一笔交易都已经极快地扩散通知至全网,大部分双重支付的攻击尝试将会被系统捕捉到并立即拒绝执行。
那么相比于比特币等传统的区块链,这种机制有什么好处?
我们将从两个主要方面进行比较:
数据结构:通过DAG,每一笔交易就可以看作是一个区块,没有容量限制的问题,每一个区块有多个指向,拓展性强,因此能够实现数字货币较高的交易吞吐量(通过平行验证)。并且参与者越多,整个系统也会变得越来越安全和快速,确认时间会缩短,交易也完成的越来越快。
共识机制:区块链中添加下一个区块需要多方进行竞争,并获取区块奖励或交易手续费。正因如此,共识和交易生成是分离开的,并且由网络的一小部分人来完成,通常会设置较高门槛(就像比特币一样),这样会导致进一步的中心化(算力垄断)。
在DAG系统中,交易者本身就是矿工,网络中的每位参与者都能进行交易并且积极参与共识。通过这种方式,验证就能同步进行,网络能够保持完全去中心化,不需要矿工传递信任,也不需要支付交易手续费。
和以太坊相比较,DAG网络虽然不具备智能合约强制执行的特性,但它能为用户提供一个相对简单、清晰易辨的架构,以太坊的系统则要更为复杂许多。这不仅使得用户能更容易去理解他们的虚拟货币什么时候和怎么样进行支付,而非依靠着一个满是程序员和合约的世界。
从这个角度来看,可以把DAG网络看作是一个智能合约缺席执行者和旁观者的版本。
DAG 的 结 构
DAG不是把所有数据打包成区块,再用区块链接区块;而是每个用户都可以提交一个数据单元,这个数据单元里可以有很多东西,比如交易、消息等等。数据单元间通过引用关系链接起来,从而形成具有半序关系的DAG,因此可以支持极大的并发量和极高的速度。
DAG在交易吞吐量方面理论上没有限制。再者,传统区块链在节点储存方面也有较大限制,除非在使用轻客户端的情况下,节点一般需要同步全网的所有交易,才能使用智能合约等功能,而节点需要同步的数据正在快速的增加。
DAG在储存方面也有优势,用户只需要维护自己跟自己有关的交易单元以及其父辈等即可,在单节点上无需拥有全网交易数据。
结合DAG的区块链仍来自链这个概念,即所谓的侧链(side-chain)。
不同类型的交易/事务同时在不同的链上运行。区块DAG仍依赖区块概念。oT Chain(ITC)、IOTA、Nano(之前的Raiblocks)和Byteball是目前市场上大放异彩的几个无区块项目。
如果是比特币或以太坊,区块创建速度是个瓶颈。比特币每10分钟生成一个新的区块。以太坊比较快,但需要大约15秒至20秒来验证区块。
但为什么我们需要区块?在比特币网络上,许多交易被挖掘成区块,交易顺序由区块之间的预哈希(prehash)来维护。如果将区块和交易组合起来,会怎么样?使每个交易直接参与顺序维护。交易完成后,你可以跳过挖矿过程。这让它无区块、更高效。
DAG没有挖矿,没有区块,没有交易费。网络的安全和一致性并不在矿工、验证者和用户之间划分。网络用户验证许多旧的交易(通过工作证明来验证),目的是为了能够进行自己的交易。没人获得回报,也没人要支付交易费。因此,像比特币或以太坊网络中的矿工集中化是不可能的。
DAG应用领域局限于物联网,这是为工业设备确保数据完整性的技术。今后可应用于按需支付、小额支付、机器对机器通信(比如传感器技术)、智慧城市和自适应系统等。作为清算层,它旨在实现许多现有系统之间的互操作性。常见的区块链无法针对免费的结算层来加以调整,因为交易费有意整合进来,作为矿工的货币激励,因而作为网络的保护机制。
由于DAG的设计以及实现方法,可扩展性接近无限。与基于区块链的网络(用户数量增加后速度变慢)相比较,随着用户群不断庞大,DAG实际上变得更快。这是由于越来越多的用户导致验证时间更短。在DAG网络上交易需要的哈希能力较低,这也是促使新用户使用DAG的另一个诱因。
如果DAG能得到更为广泛的应用,它在几乎每个级别都能显露出比区块链更优的特性。在目前区块链系统中,随着交易时长这样的问题显现出来,用户可能会尝试选择如DAG这样更为技术超前的系统。这将会是虚拟加密货币交易在未来的发展趋势吗?也许在目前,对这些新兴技术并重开发才最明智。
--- end ---
加入『Boonchain 社群』,发现投资价值!
在这里,你将获得:
1、高质量、深度的原创区块链行业分析,深入浅出。
2、针对区块链的投资策略分析。
3、优质项目的客观评测,解读。
4、一对一咨询、问答。
5、免费糖果。
加入 Boonchain,成为区块链的达人。
添加客服微信申请入群
领取专属 10元无门槛券
私享最新 技术干货