图解介绍缠结第5部分:共识、确认置信度与协调器

上个星期,我们提到了“双花”问题,当Alice试图重复花掉她的钱时就会出现这个问题。这篇文章将是本系列文章的最后一篇,我们将展示这个问题是如何在Tangle中解决的,以及我们如何决定哪笔历史记录是有效的。

为了说明这个问题,我们先来了解一下下面的双花情景:

图解介绍缠结第5部分:共识、确认置信度与协调器

正如你所看到的,Alice只有5i,她却同时给了Charlie和Bob。这显然是一个问题:我们不能同时将这两笔交易都视为有效。使用Tangle的术语来说,我们不能让未来的交易同时确认这两笔交易,因为它最终会导致Alice的账户出现负的余额。

我们已经知道,使用加权随机游走算法,最终其中一个分支将有更高的权重,因此会围绕有效的那笔交易形成共识。然而,从Bob或Charlie的角度来看,会存在这样一个问题:他们怎么知道他们是否真的从Alice那里得到了钱呢?

想象一下,Bob和Charlie是恐龙经销商,Alice从他们每个人那里买了一只宠物霸王龙。如果他们在看到Alice在Tangle上的交易后就立即将宠物霸王龙交给她,那么其中他们中的一个最后会发现他根本没有拿到钱。他们怎样才能知道什么时候可以安全的将货物(恐龙)交给Alice呢?

这是一个严重的问题,事实上,在2009年,比特币是第一项成功解决该问题的技术。为了说明Tangle如何解决这个问题,我们引入了一个名为“ 确认置信度(confirmation confidence)”的概念。这种置信度衡量了交易被Tangle其余部分的接受程度。

交易的确认置信度计算如下:

  • 运行tip选择算法100次。
  • 计算一下这100个tips中有多少是确认我们交易的,并称之为A。
  • 我们交易的确认置信度就会是“百分之A”。

换句话说,交易的置信度是确认它的tip的百分比。并非所有tip都被认为是同等的,越新的tip越重要。为了说明这一点,我们在模拟中增加了确认置信度。置信度超过95%的交易周围有加粗边框来加重显示。

图解介绍缠结第5部分:共识、确认置信度与协调器

在上面的Tangle中,4条tips中的2条确认了交易9。如果我们使用统一的随机tip选择,它将有一个精确的50%的置信度。然而,确认它的tips显然比没有的tip要更新,这就提高了置信度。

现在我们就能很清楚的知道Bob和Charlie应该何时可以安全地将霸王龙交给Alice。一旦Alice的交易达到了一个非常高的置信度阈值,比如说95%,那么它不太可能会被排除在共识之外了。但是,我们可以认为是不太可能 ,但不是一定不可能,如果Alice想要作弊,并且具有足够的算力的话,她还是可以尝试双花的。

为了做到这一点,她会先跟Charlie发生一笔支付交易,而不是Bob。她需要先确认2笔与他给Charlie的付款无关的旧交易。然后,她将开始尽可能多地创建交易,试图提高她的新交易分支的累积权重。如果她有足够算力的话,她可以让整个IOTA网络相信她并跟随她的新分支,从而改写历史记录,成功地完成双花。如果看一下与Bob的交易的置信度水平,我们会看到它从95%下降到0。

这种攻击在下面的Tangle中有说明,时间向下推移:

图解介绍缠结第5部分:共识、确认置信度与协调器

如果Alice能够发送的价值比其他人所创建的交易合起来还要多或者接近,则这种情况是有风险的,虽然在一个成熟健康的网络中这种情况可能根本无法实现,但对于现阶段的IOTA来说,这是一个真正的问题,因为目前的系统中没有足够的交易量来避免集中的双花攻击。

由于IOTA是为了规模应用而建立的,因此出于安全原因,我们采用了一种自主的和临时性的共识机制:协调器。每隔两分钟,IOTA基金会创建一笔里程碑(milestone)交易,所有经它确认的交易立即被认为具有100%的确认置信度。使用协调器,Alice的第二笔交易就永远不会得到确认。协调器在IOTA网络早期发展阶段充当了一种保护机制,直到完整的Tangle分布式共识算法开始发挥作用时,IOTA基金会将关闭协调器,让Tangle完全依靠自身来演变和发展。这将在迭代阶段发生,当网络成熟到可以摆脱协调员时,网络本身也会立即变得更加效率。

我想感谢所有关注此系列的人。我很高兴能够与你分享这些内容,同时也很高兴能够回答大家的留言和问题。我也会在后续发布更多相关的内容。比如Tangle中的攻击向量,解释alpha是如何定义的,对tip选择算法的实际优化以及其它你想了解的信息。

欢迎到 Discord 亲自留言询问我 @alongal#3938。

图解介绍缠结前4部分链接:

图解介绍缠结:第一部分

图解介绍缠结第二部分:交易率,延迟与随机行走

图解介绍缠结第3部分:累积权重和加权的随机行走。

图解介绍缠结第4部分:批准者, 余额和双花

本文原文:

https://blog.iota.org/the-tangle-an-illustrated-introduction-79f537b0a455

胖子李

专栏作者:胖子李

个人简介:我共发表了 190 篇文章,总计被阅读了657,337 次,共获得了 1,884 个赞。

作者邮箱 作者主页 Ta的文章

发表评论

邮箱地址不会被公开。 必填项已用*标注