阿朵与竞争,Pt.3:IOTA

这篇文章是,阿朵与其他特征或目标相似的区链项目进行比较的系列文章的一部分,你可以在这里找到以前的帖子:

这周我研究了IOTA,一个不使用区块链的分布式分记账功能的加密硬币。

为什么要比较阿朵和IOTA?

乍一看,IOTA与Ardor(分布式分记账)不同。它使用有向无环图(DAG),开发者称之为“the tangle”(缠结),来表示交易的历史,而不是将交易存储在区块链上。它旨在主要用于物联网(IoT)上的机对机微交易,这一愿景使得IOTA不需要交易费用。而且它还没有支持“区块链2.0”功能,这是Ardor的的核心部分。从表面上看,它看起来不像是阿朵的竞争对手。

那么为把IOTA包含在“阿朵vs竞争”系列?

正如我之前提到的,我对这个系列的主要兴趣是探索不同的分布式分记账的扩展方法,这就是IOTA社区做出了一些非凡的成就。当我更多地了解IOTA,以便更好地了解它如何扩展时,我最终得出结论,IOTA和Ardor为扩展问题提供了互补(或更直白,相反)的解决方案:

Ardor大大减少了块链膨胀,但是要求网络的所有节点都同意交易的严格排序; 而IOTA通过放宽协商一致的规则来实现潜在的更高的吞吐量,从而允许交易之间的暂时差异,但在应对缠结的增长面临着巨大的挑战。综上所述,加上我了解到的关于缠结的安全性,似乎很有趣,这足以证明在这一系列的地位。

不过,如果你不相信,请在继续推敲!

在这篇文章之后,我计划将我的焦点从可扩展性转移到功能和市场适应性上。Stratis, Ark, 和 Waves在计划上,但是我还不确定。

缠结

毫无疑问,IOTA的关键特征是缠结。

IOTA的其他独特的特性,比如免交易费,事实上,交易并不是严格要求的,但最终还是一致的,而且(一些)垃圾邮件实际上增加了网络的吞吐量,所有这些都直接来自于缠结的工作方式。

出于这个原因,也因为我想避开最近关于IOTA项目的一些争议,因此我将主要集中在理解和评价缠结本身,而不是品评IOTA的具体实施细节。

缠结是一个有向无环图,其顶点代表单个交易,其边缘代表以前交易的“批准”。每当一个节点向网络提交新的交易时,它必须选择两个以前的交易来验证,旧交易在提交的新交易中被引用。当新的交易渗透到网络时,每个节点将其添加到其本地的缠结副本中,其中一个边缘指向各自的交易,新交易被批准。

我尽力而为,但是这个描述可能令人感到困惑。这个图应该有所帮助。每个方块代表一个交易,从每个交易指向另外两个交易的箭头表示交易对前两个交易的批准。最原始的交易在图的左侧很远的地方,而最新的交易,白皮书中称为“tips”,在图的最右边,灰色阴影方块。

验证和批准交易意味着什么?从概念上讲,执行验证的节点必须从两个交易开始,即验证并走遍所有路径回到创世,确保它不会遇到冲突(例如,重复使用,不平衡,或者其他)。如果冲突,则它选择另一对交易来批准,因为如果它批准了一组不一致的交易,则没有其他节点会批准它提交的交易。

注意,这意味着每个交易不仅直接批准它选择批准的两个交易,而且还间接地批准要批准的这两个交易的交易,以及这两个交易所批准的交易,以及所有返回到创世的交易。这是缠结“最终达成共识”的基础之一。

如果您知道进行这种验证的承压计算,实际上可以大大优化。从本页数字你可以看到,当你从 tips(最右边)走向原始的缠结时,你最终会达到一个点,所有的交易被所有的tips直接(间接)批准。在这些数字中,所有被所有的tips批准的交易都是绿色的。因此,您可以剪切指向绿色交易的缠结箭头,验证从一次特定的绿色交易到创世(原始点)之间的路径,缓存结果,并且从这一点指向仅验证从新交易返回到绿色方块的交易。这样的优化可以节省您每次提交交易时验证整个缠结的时间,并且还可以允许缠结被修剪。更多内容如下。

共识

像IOTA这样基于缠结分布式记账的一个非常有趣的功能是,从同行接收新交易的节点不必立即验证它们。事实上,缠结可以暂时包含冲突的交易。但是,最终,节点必须决定在添加新交易时要批准(可能是间接的)哪些冲突的交易。

它如何选择冲突交易?假设每个交易在单独考虑时是有效的,那么简单的答案是一个节点可以选择批准任何一个。但是,不过,它有理由批准由其他网络其构建的交易,这样它自己的事务最终也会被批准。假设网络上的大多数节点都运行选择交易的引用算法,因此在发生冲突时,节点有选择引用算法选择交易的理由。

为了理解引用算法,首先要理解一个交易累积权重的概念是很重要的。

每个提交新交易的节点必须执行一些工作证明(PoW),它决定交易的“自身权重”。交易的累积权重是它自己的权重加上直接或间接批准的所有交易的权重。在一般的缠结中,节点可以决定为交易做多少工作,但在IOTA中,所有交易都需要相同的PoW,因此拥有相同的权重。所以,交易的累积权重与直接或间接批准的其他交易的数量成正比。

那么,引用算法是什么呢?《白皮书》的作者称其为markov – chain Monte Carlo(MCMC,见第4.1节),这是一种奇特的说法,说它是一种随机漫步的缠结,支持较大累计权重的路径。这篇文章已经很长了,所以我不讲细节了。可以这样说,当存在相互冲突的交易时,MCMC算法通过选择哪个交易具有更大的累积权重来解决冲突。最终,一群缠结获得主导地位,另一群被抛弃。这类似于区块链用于解决分叉的机制,IOTA中事务的累积权重是对其最终结果的粗略衡量,就像在区块链中添加块一样,可以更肯定地确认以前的交易。

顺便说一下,节点并不需要立即验证从同行接收到的每个新交易对于性能有很大的影响。每个节点通过这样的方式进行更少的工作,只在提交新交易时才验证交易,并想当然地认为由所有 tips间接批准的交易已经由网络的其余部分进行验证。另外,验证在整个网络上并行运行,因为不同的节点选择不同的交易子集来批准。

安全

到目前为止,我顶多只是重述在IOTA白皮书中找到的信息。另一方面,缠结的安全问题,是 缠结变得更有趣的地方。虽然我极力的推荐阅读白皮书中关于缠结的不同攻击的分析和白皮书的剩余部分,因为它写得很好——我不会在这里讨论大部分的分析。

相反,我想把重点放在最明显的威胁上,这是51%的攻击。IOTA开发者实际上将其称为34%的攻击,至于原因我不能理解。我怀疑这是因为攻击者等待一个分叉自然的发生,只需要足够的哈希算力来计算出分叉的每个分支上的节点,即超过网络哈希算力其余部分的50%。无论如何,确切的数字并不重要,对于本文的其余部分,我将使用术语“34%的攻击”。

对于IOTA,34%的攻击看起来大致如此。攻击者发出一笔交易,用最右边的红点代表一些资金,然后计算(或者也许是预先计算好的)他自己的“寄生”子缠结,它固定在主要缠结交易上游某处个地方,并包含包含一个双支出交易,由最左边的红点表示。他的目标是给他的寄生缠结添加足够的累积权重,以说服MCMC算法孤立的主缠结,跟随寄生缠结。

但愿,到目前为止,和区块链的类比是清晰的,因为还有一个更重要的。就像PoW区块链一样,缠结是由当前网络的哈希算力保护,因为这个哈希算力是将累积权重添加到合法的缠结中。然而,与 PoW区块链不同的是,IOTA上的节点仅在提交交易时才执行PoW。因此,缠结的安全性仅取决于交易的费率和每笔交易的PoW数量。花点时间让这个概念完全理解,因为这对理解缠结的安全性至关重要。

由于IOTA网络目前规模较小,交易速度较低,因此IOTA团队已经建立了一个称为协调者的可信节点,最终负责确定当前的缠结的状态。其目的是防止34%的攻击,以及其他攻击。我不打算在它上面花更多的时间,但是我鼓励你阅读这篇评论开发者的回应,并得出你自己的结论,在协调者的监督下运行,IOTA是否可以被称为 去中心化。

让我们看看,如果没有协调者,我们是否能给网络安全提出重量级的估计。最近的压力测试在一个小型测试网络上实现了超过每秒100个交易(tps)。该团结示意可达到1000 tps。要做到慷慨,让我们假设IOTA最终会达到10,000 tps。我不知道IOTA当前的PoW要求是什么,但是假设IoT(物联网)的平均设备大约是一个树莓派,并且它在100% CPU上运行10秒,以完成所需的PoW。再一次,我尽量慷慨些;许多IoT(物联网)设备远不如树莓派强大,每笔交易占用CPU 10秒可能会成为一个交易的破坏者。

通过这些假设,我们得出结论:确保网络的平均计算能力大约为每秒10,000×(树莓派在10秒内计算的数量),或者相当于单个树莓派计算能力的10万倍。电脑标准有很多细微的差别,但我们并不关心两三个因素 – 我们只是进行一个数量级的估算 – 所以我们将使用一些我在互联网上找到的数字。

一个树莓PI3可以达到数百的MFLOPS(百万次浮点运算,或每秒百万浮点运算),而高端的GPU记录在成千上万的GFLOPS(每秒10亿次浮点运算,或数十亿 的FLOPS)中,10000更大计算能力的一个因子。所以在我们假设的情况下,一个拥有10个GPU的攻击者可以计算出整个网络。抛出另一个因子10,因为我是一个粗心大意的人- – 也许在GPU上的整数运算比浮点运算慢一点,而你仍然只需要100个GPU来执行攻击。

我敢肯定在这个分析中有很多漏洞。例如,也许IOTA不会在网络边缘的设备上运行。相反,它可能会在那些IoT设备连接的网关和路由器上运行,而这些设备通常更强大。。

不过,我想说的是,PoW成功地保护了区块链,比如比特币和Ethereum,因为它与交易率无关,或者除网络经济价值之外的其他因素无关。由于挖矿奖励(以法定货币计算)的价值随着比特币价格的上涨而增加,矿工增加更多的硬件并消耗更多的电力来挖掘它。对矿场的利益驱使确保了保证网络的哈希能力随着网络的货币价值而增加。

相比之下,对于IOTA,没有任何的经济动力来保护网络。而且,保卫网络的哈希算力直接与交易速率绑定,这自然有一些依赖于带宽和网络拓扑的上限。

最后一点,IOTA开发人员提出了一种创造性的观点,不包括在白皮书中,即带宽限制和网络拓扑实际上提高了网络的安全性。我还没有在任何地方发现一个正式的声明,但经过一番挖掘,我偶然发现了这个Slack对话,这是我能找到的最完整的答案。

从本质上讲,IOTA开发者之一(特别是来自Beyond,又名Sergey Ivancheglo,也可能是BCNext,也是Nxt的最初创造者之一)认为,IOTA网络将由物联网设备组成,与附近的邻居Mesh拓扑结构。在这样的网上超过极少数的设备,攻击者甚至没有对等体选择。也就是说,绝大多数设备将不能从互联网或其他网络的“主干”访问,向他们发送消息的唯一方式将是通过其他设备的网络。

总体思路是网络作为一个整体将能够实现高吞吐量,但是网络中的每个单独的链路具有足够低的带宽,使得攻击者可以通过尝试添加足够的交易来说服网络跟随的寄生子缠结从而轻易的入侵它,。由于攻击者只有少量的切入点进入网网络,为了他的攻击成功,在他的寄生缠结累积足够的权重之前,他已入侵了所有的入口点。

关于这个论据,我会让你们作出自己的结论。我个人认为IOTA团队没有公布足够的细节来彻底评估它。

说完带宽限制,我们来谈谈扩展。

可扩展性

由于每个节点在提交自己的交易之前都必须验证另外两个交易,所以IOTA团队喜欢指出垃圾邮件实际上往往会使网络更有效率。IOTA社区的其他成员也被这个观点所陶醉,甚至有人甚至宣称IOTA是“无限可扩展的”。

IOTA网络上的每个节点必须最终接收每个交易,以保持全球一致的缠结。然而,向远程节点广播交易需要时间,而且如果交易速率足够高以,那么节点在从远处节点接收到下一个交易之前会提前接收到来自附近节点的大量的交易,则MCMC算法将继续选择由附近的节点提交tips。最终缠结分裂,只有附近的节点在本地副本上进行交易,而远程节点则自行交易,发散副本。

因此,如果整个网络中的缠结要保持一致,那么带宽和网络拓扑就必须对IOTA的交易速率施加一些限制。我们将不得不等待更多的压力测试来了解这些限制是什么。

此外,像所有分布式记账一样,IOTA必须克服区块链臃肿。IOTA上的每笔交易大小约为1.6 kB,因此100 tps的交易率缠结将以每秒160 KB的速度增长,即每天大约14 GB。不用说,对于物联网设备来说,这是一个不切实际的存储要求。

IOTA目前解决了这个问题的方法是通过定期给缠结快照,它将当前状态映射到一个新的创世交易中,允许删除交易历史记录。在频繁的修剪限制下,一个节点只需要存储足够的缠结就可以运行MCMC算法。

然而,一个新节点与网络同步是另外一回事。节点必须从可信任的同行下载最新的快照,或者必须从最初的创世交易开始,并在整个缠结中前进。没有可信的方法高效的网络。

最后,值得注意的是,IOTA团队提出了一种他们称为“swarm”的缠结水平划分类型,许多节点一起存储完整的缠结,但没有一个节点存储所有的缠结。不幸的是,目前还没有太多的细节。

与阿朵相比

那么这与阿朵r有什么关系呢?

在我看来,主要有两个比较,即安全性和可扩展性。

关于安全性,如果没有协调员,我并不清楚IOTA可能达到足够高的交易费率才被认为是安全的,即使是现有网络的货币价值,也没有选择非常高的PoW要求。

相反,Ardor的优势在于它的子链都由父链所保护。

一个“小”的子链不需要像IOTA的协调员这样的可信节点来保护它,因为整个网络建立了共识,并且通过母链上的锻造者记录(通过子链区块的哈希)。

可扩展性方面,IOTA和Ardor目前都分担了处理所有交易的每个节点网络的要求。使用IOTA,这只是意味着将交易添加到缠结中,这在计算上是便宜的,而对于Ardor,每个节点都必须验证每个交易。而且,缠结巧妙的设计确保了交易的确认时间实际上随着网络变得繁忙而减少。随着两个网络的发展,我不会感到惊讶,对于IOTA的吞吐量比Ardor高。

另一方面,如果IOTA每秒能够达到数百次交易,在缠结膨胀方面IOTA将面临巨大的挑战,而Ardor已经在很大程度上解决了这个问题。

最后,值得注意的是,关于Ardour路线图的构想将把子链交易处理委托给网络的专用子网。这可能会获得类似于IOTA的“swarming”构想的计算增益,可能允许类似的高吞吐量。

最后的想法

如果你已经读了这么远(谢谢!!),并且已经熟悉了IOTA,那么你无疑已经注意到我省掉了很多细节,包括它自己构建的哈希算法,在这个算法中故意的缺陷, 来自Beyond的一个抄袭保护机制,使用三元编码,以及神秘的Jinn处理器,为IOTA物联网中的设备提供硬件支持。在我的研究过程中,我对这些事情都形成了相当强烈的观点,但是由于两个原因,因此我不愿在这里分享。

首先,我没有足够的资料就这些问题作客观的陈述。我不是密码学家,我几乎不知道三元计算或Jinn。我所能做的最好的事情就是提供IOTA团队设计决策的主观判断,但是这样会同时削弱本文的重点,并将其开放给做出不同主观判断的人的进行批评。

其次,更重要的是,我更感兴趣的是缠结背后的基本概念,而不是IOTA的具体实现。无论IOTA是成功还是失败,缠结都是一个美丽的想,值得我们有所关注。

那么,对于缠结我们能说什么?虽然我对它设计的高雅和共识机制的细微之处充满了迷恋,但是最终恐怕对缠结在物联网的适用性持怀疑态度。放弃这个方面,通过几个量级调整增加PoW需求,并找到一种方法,将PoW阈值与网络的货币价值联系起来,而不会将普通用户和他们的资金分离,我认为缠结具有巨大的潜力作为分布式记账。

最后一个缺失的部分是,如何应对不信任和高速膨胀,这是Ardor解决得非常好的问题。在将来,也许有人会找到一种方法,把两者设计的最佳元素结合在一起。到那时会有很多事情发生,特别是在加密领域。

PS – 我保证下一篇文章会更短。 🙂

  作者:Segfaultsteve

  翻译:fz1128

 

 

View this in: English Español

Leave a Comment