首先,在我花了大量的时间来阅读DAG的相关文章和资料后,我仍然不敢确定我理解的DAG是正确的,我试图用最简单的话来描述DAG(有向无环图)以及它和区块链的区别。
首先了解下数据结构中的有向无环图是什么?在图论中,图分为有向图和无向图两大类,在无向图中进一步进行约束形成了DAG(有向无环图),所谓无环是指它是由集合的顶点和有向边构成,每条边连接一个顶点到另一个,这样,假如顶点A开始,沿着有序的边,最终循环回再次到A是不可能的,其实图是树的一种泛化,真正在用的时候一般会通过深度优先或者广度优先规则把图拆成“森林”就是多颗“树”。
区别于大家熟知的比特币采用的为链式结构,而区块链的pow共识机制需要竞争打包区块的权利所耗费大量的能源不说,导致效率也更加缓慢。
那么DAG中到底怎么解决这个问题呢?
每个新加入的单元,不仅仅只加入长链里的一个区块,而是加入到之前的所有区块。假设当你发布新交易时,前面有两个有效区块,那么你的区块会主动同时链接到前面两个之中,DAG 中的每个新单元,验证并确认其父辈单元,父辈单元的父辈单元,慢慢可达创世单元,并将其父辈单元的哈希包含到自己的单元里面。随着时间递增,所有交易的区块链相互连接,形成图状结构,如若要更改数据,那就不仅仅是几个区块的问题了,而是整个区块图的数据更改。
DAG 这个模式相比来说,要进行的复杂度更高,更难以被更改,所以这里解决了比特币与以太坊最大的一个问题隐患,就是没有一个确定的不可更改的最终状态。理论上,如果有足够的算力,足够的出块速度,产生一条更长的隐藏链,就可以把之前的区块推翻。,假如很多年后量子计算机算力突破天际!!!
我们来看下很火的基于DAG的IOTA项目:
IOTA数据结构
Tangle(缠结)是基于定向非循环图的(DAG),而不是一种连续的链式架构,定期添加区块。通过DAG,IOTA能够实现较高的交易吞吐量(通过平行验证),并且不收取交易手续费。随着Tangle的不断发展,越来越多的参与者都将发起交易,整个系统也会变得越来越安全和快速,确认时间会缩短,交易也完成的越来越快。说实话,本来我看到pow的共识机制已经感叹其精妙,但看完DAG的tangle,我真觉得区块链的世界是永无止境的想象和创新。
IOTA 共识机制
区块链共识是通过一个非常严格的机制完成的,区块链中添加下一个区块需要多方进行竞争,并获取区块奖励或交易手续费。正因如此,共识和交易生成是分离开的,并且由网络的一小部分人来完成,通常会设置较高门槛(不是每个人都会使用矿机,而且矿池日益集中的算力让人对去中心化心生疙瘩),这样会导致进一步的中心化。
在IOTA系统中,网络中的每位参与者都能进行交易并且积极参与共识。更具体点说,你直接定位了两笔交易(主交易和分支交易),且间接在子tangle中定位其它交易。通过这种方式,验证就能同步进行,网络能够保持完全去中心化,不需要矿工传递信任,也不需要支付交易手续费。
就IOTA来看,我们从DAG身上看到了区块链3.0的影子,交易效率变快、更加的去中心化,似乎一切都那么完美,我们迫不及待的想向DAG跑过去,但理智告诉我们再看看,就我个人的知识和所查资料而言,我有两个疑问:
1.比特币结构里面,必须保持持续的算力优势才能更改交易,否则最终长链可以将短期算力优势形成的链废掉,而大部分矿工不会傻到用大量的算力让挖到的比特币没有意义!但是如果采用DAG分块的方式,破坏者只需要在一定时间内的算力保持优先形成一个DAG块,那么是不是今后所有的交易都会继承这个错误呢?
2.缺乏真正主链解决“双花问题”是否更加困难?
---------------------
【转载】
作者:lightTrace
原文:https://blog.csdn.net/sureSand/article/details/79394314
|
|