简介:本文翻译自IOTA的官方博客,这是给IOTA初学者讲述纠缠技术的系列文章中的最后一篇。本篇文章紧接着上一篇,继续讲解双花问题。(本文授权BH好文好报群摘编、转载以及相关转授权推文行为)
上篇文章中,我们介绍了双花的问题。本篇文章,也是本系列的最后一篇文章,将会讲解如何解决这个问题,以及我们如何确定那个历史记录是合法的。
为了解释这个问题,我们再看下双花的情景:
ex1.png你可以看到,Alice有5i
,并把它们给了Charlie和Bob各一次。这明显是个问题:我们不能认为这两笔交易都是合法的。在缠结中,未来的交易不会同时验证这两笔交易,因为那将会导致Alice的账户余额变成负数。
我们之前讲过有权重随机漫步算法,最终会使得一个分支的权重变得比另外一个大一点。于是就能对选择哪个分支达成共识。然而,从Bob和Charlie的角度来看,还是有一个问题:他们如何知道自己从Alice那里收到了钱?
假想一下,Bob和Charlie都是卖恐龙玩具的,Alice从他们那里各买了一个恐龙玩具。如果他们各自在看到Alice的交易之后就发货给她,那么最终他们中必然有一个没有被支付成功。他们怎么知道什么时候发货才是安全的呢?
这是个严肃的问题,实际上,比特币是第一个解决这个问题的技术,那时是2009年。为了介绍一下纠缠是如何解决这个问题的,我们引入一个概念:确信指数
,这个指数用来判定一个交易被接受的程度。
确信指数是这么计算的:
- 运行tip选择算法100次。
- 计算出这100个tips中,有多少验证了我们的交易,我们把这个数记为A
- 从而,我们的交易确信指数就是
A%
。
换句话说,一个交易的确信指数等于验证它的tips的百分比。并非所有的tips都有同样的权重,可能性高的tips拥有更大的权重。为了解释这一点,我们在这个仿真中加入了确信指数。确信指数超过95%的交易被显示为粗边框。
ex2.png在图中的缠结中,9号交易被一半的tips所验证,如果我们把这些tips按照同权重看待,那么我们得到的确信指数是50%。然而,验证它的tips应该有更高的权重,从而最终的确信指数会超过50%。
现在,Bob和Charlie就能知道什么时侯发货比较安全了。一旦Alice的交易达到了某个比较高的确信指数,比如95%,它就很难再被共识丢弃了。这里用的词是很难,并非不可能,如果Alice存心欺骗,而且她拥有足够的算力,她便可能实现双花。
为了实现双花,她可以再发送一笔给Charlie的交易,她必须用这个交易验证两个旧的交易,而后,她尽可能的发起更多的交易,以此来提升它的新交易的权重,如果她有足够的算力,那么她可以让整个IOTA网络相信她并支持她的新分支,从而能够重写交易历史并实现双花。如果我们再看她给Bob的交易,我们会看到它的确信指数会从95%逐渐下降到0。
这个攻击的过程可以图示如下,时间是从上往下走的:
double-spending.png这种风险只有当Alice能够发送比其他人更多的交易时才能发生。这在成熟而活跃的网络不大可能,但对于今天的IOTA而言,这确实是一个问题。
为了解决这个问题,IOTA引入了一个不同的共识机制:协调者。每过两分钟,IOTA基金会便会产生一个基石交易,所有被它验证的交易的确信指数,都是100%,并立即生效。通过这个协调者,Alice的第二笔交易永远不会被验证。在IOTA网络达到足够的活跃度之前,这种措施可以起到很好的保护作用,一旦IOTA活跃度足够,IOTA就可以关闭协调者,然后切换为完全去中心化的算法。这中间会有一个演进的过程,当网络足够成熟,并能够摆脱协调者后,整个网络将会更加高效。
感谢阅读本系列的文章。
译者注:和往常一样,如果你对这篇文章有疑问,请留言给我,我们一起探讨。
早赞声明:为方便早赞、避免乱赞,“BH好文好报群”为点赞者、写作者牵线搭桥,实行“先审后赞、定时发表”的规则,也让作品脱颖而出、速登热门!加群微信:we01230123(天平)。
网友评论