共识算法3 (Tangle)

严格来讲,Tangle(中文翻译为“缠结”)并不属于区块链技术。Tangle系统没有矿工将交易打包成区块,而且Tangle的网络也不是链式结构,而是由一个个交易组成的DAG(DirectedAcyclic Graph,定向非循环图)结构。之所以将Tangle作为一种和PoW、PoS、DPoS等并列的共识机制来谈,主要是因为Tangle也是一种重要的,实现去中心化的,分布式账本结构的技术。业内比较知名的,采用Tangle技术的加密货币有IOTA和Byteball。

Tangle是通过什么样的方式来达成共识的呢?下面以IOTA为例来简要概述。


共识算法3 (Tangle)_第1张图片
IOTA DAG简单示例

如上面IOTA定向非循环图所示,一个网络节点要发起一笔新的交易时,需要在Tangle中找2笔合法的历史交易(IOTA官方推荐采用马尔可夫蒙特卡洛(MCMC)随机游走的方法),并且将自己新发起的交易指向这两笔交易。通过这种方式,整个Tangle网络不断向右扩展开来。

基于这样的设计,IOTA中每笔交易通过指向2笔历史交易,直接验证了这两笔历史交易,并且间接验证了这两笔历史交易直接和间接指向的更早的交易。

Tangle中的交易分为3类别,一类是已经达成共识的交易,另一类是还没有达成共识的交易,最后一类是末梢交易(tips)。上图是IOTA一个理想情况下的tangle。绿色的表示已经达成共识的交易,其特点是所有的末梢交易都直接或间接指向其中任意一个交易。红色的表示待确认的交易,其特点是只有部分末梢交易直接或间接指向这些交易。灰色的表示末梢交易。

实际的情况要复杂很多,即使等待足够长的时间,也很难保证所有的末梢节点都指向待确认的交易,所以实际上一般使用交易确认度(confirmationlevel)来确认交易。不同的场景不同的金额可以灵活采用不同的交易确认度。大部分情况下51%就达到了理想的交易确认度,对于一些大额的交易,你可能希望达到90%甚至更高的的交易确认度。

IOTA关于Tangle的一些技术细节可以进一步参考:IOTA简介以及改进方案 和 Primer on IOTA。

Byteball在Tangle的实现上和IOTA类似,技术上主要区别在于:

1, [endif]Byteball每笔交易可以指向一个或多个历史交易,IOTA固定指向两笔历史交易。

2, [endif]IOTA每笔交易需要做少量的PoW来防止DoS和Sybil攻击,而Byteball没有使用PoW或PoS。相应的IOTA没有交易费用,而Byteball的设计上加入了交易费用。

3, [endif]ByteballTangle共识算法引入了12个见证人(Witness)。见证人通过产生序列化的交易,来生成DAG中的主链。Byteball的理论确认时间是30秒。(参考:Byteball whitepaper)

从这点我们可以看出,Byteball和EoS类似,也是通过牺牲一定程度的去中心化,来保证系统的安全和性能。

4, [endif]而IOTA的理论确认时间依赖于网络的交易状况,理论上,交易量越大、交易越活跃,交易被确认的时间就越短。

虽然IOTA理论上可以达到非常短的交易确认时间,但是IOTA的共识的相对比较脆弱。实际网络中,随着时间的推移,你的交易确认度不一定一直保持上升。为了解决这个问题,IOTA在目前的现网运行中引入了协调人(coordinator)来达到交易的最终确认(Finality)。这个闭源的协调人是目前IOTA最被诟病的地方,虽然IOTA辩解后续会解决这个问题,但目前还没有看到解决的方法。(参考:IOTA简介以及改进方案)

总的来说,与区块链技术相比,Tangle技术的优点有:无区块大小限制、易扩容、交易越频繁系统性能越优、支持的消息格式较为灵活等等。但是,该技术尚未经过较为充分的理论与实践论证,到目前为止,还没有公开的、基于DAG技术的的学术研究成果。同时,基于DAG技术的分布式账本系统尚不成熟,例如:在IOTA中,系统的安全性较大程度依赖于交易频率和协调人;在Byteball中,其共识算法的稳定点推进策略还在不断的调整优化中,同时,目前Byteball系统的见证人节点都是预先指定的,还没有引入见证人选举机制。

你可能感兴趣的:(共识算法3 (Tangle))