Billy Sanders是IOTA基金会的研究总监,为了更好的解释在2.0中新的Mana机制和FPC算法是如何保障网络安全的,他特写了这个短文。
虽然IOTA 2.0是一个具有各种模块的复杂协议,但其核心思想其实很简单。这篇文章总结了IOTA 2.0是如何实现共识和维护账本的。
数据和交易都包含在称为消息的对象中。每条消息必须引用2-8条其他消息。因此,所有消息的集合,称为Tangle,是一个不断增长的DAG,又称有向无环图。
目前,Chrysalis网络由协调器进行管理,这是一个由IOTA基金会运行的中心化节点。协调器说明哪些交易和数据被纳入账本,即所有用户的代币余额列表。为了完全去中心化,在Coordicide项目中,我们设计的新协议将移除协调者,从而进入IOTA协议的2.0版本。
在没有协调器决定包括哪些交易的情况下,一个有效的消息必须有一个没有任何冲突的一致的历史。因此,当冲突到来时,Tangle会分叉成不同的分支。
所以即将到来的IOTA 2.0协议必须做两件事:
- 决定哪些分支会存活;
- 为以后加入网络的新节点记录这一决定。
这样才使得IOTA协议能够保持一个一致的账本,每个人的余额总是可用的。
考虑一下下面的例子。Dom有5个MIOTA。首先,通过交易A,他将这5个MIOTA发送给Navin。然后,Dom在交易B中意外地(或故意地)将这5个MIOTA发送给Serguei。现在我们有两个冲突的交易,A和B,Tangle分叉成三个分支。分支1包括给Navin的交易A,分支2包括给Serguei的交易B,以及分支3拒绝给Navin和Serguei的两个交易。
该协议必须在以下方面做出决定:
- 分支1,包括给Navin的交易A,将被拒绝,给Serguei 5 IOTA。
- 分支2,包括给Serguei的交易B,将被拒绝,给Navin 5 IOTA。
- 分支1和2以及给Navin和Serguei的交易都将被拒绝,Dom的5个IOTA被保留。
假设协议拒绝了分支1。那么分支2和3将存活,最终分支2将 “吞噬 “分支3,因为分支3与分支2没有冲突。然而,攻击者可以维持分支1。该协议必须告诉加入网络的新节点,分支1已被拒绝。
攻击者可以用复杂的依赖关系制造大量的冲突,形成一个复杂的分支网络。使用Hans Moog(IOTA的高级研究科学家)的 “多元宇宙理论”,分支管理器模块有效地跟踪纠结中的所有分支。无论分支有多复杂,IOTA协议总是选择一个分支,然后选择一个有效的账本状态。
为了做出这些决定,IOTA 2.0协议在一个周期内工作。
在解释每个模块之前,我们总结一下它们是如何互动的。信息通过拥堵控制算法进入网络,该算法进行访问管理。节点通过我们的投票协议快速概率共识(FPC)对新的冲突进行投票,该协议决定哪些分支应该被拒绝。FPC投票由Mana保护,它是一个公平地限制谁可以投票的信誉系统,以防止攻击者。在FPC拒绝坏的分支后,从正确的分支中选择提示作为新信息的参考。随着这些正确的分支获得更多的信息,我们说它们的批准权重就会增长。一旦一个分支获得足够的批准权重,它的交易就会被最终确定并记入账簿,而Mana也会被更新,以确定下一个FPC投票者。
法力Mana:在每笔交易中,代币持有者向节点抵押共识法力。由于这些抵押需要代币,攻击者(这里指某个特定交易/分支的认同者)只能拥有对应的的法力值。请参阅我们的博文《解释IOTA中的法力》第一部分和第二部分以获得更多解释。
FPC投票:当新消息进入网络时,冲突会触发投票协议快速概率共识,简称FPC。首先,节点决定他们喜欢哪一个冲突的交易,大致上是基于先到达的交易。然后,每个节点通过直接询问其他几个节点他们喜欢哪些交易来进行投票。如果这些节点中有足够多的人喜欢某项交易(其中 “足够多 “是一个随机的阈值),该节点也会喜欢它。然后,每个节点再次询问几个不同的节点的意见,重复这个过程几轮,直到所有的意见稳定下来。
法力保护FPC投票:一个节点拥有的共识法力越多,其他节点就越经常询问它的意见。数学分析和模拟表明,当攻击者拥有大量活跃的共识法力时,FPC几乎总是正确地终止,最终所有诚实的节点都同意。
Tip选择:在FPC终止后,协议已经有效地选择了要拒绝的分支:任何包含FPC不喜欢的交易的分支都被拒绝。当创建一个新消息时,节点从幸存的分支中随机选择Tip(尚未被引用的消息)。
批准权重:一个分支的批准权重本质上是在该分支上发布消息的节点所持有的共识法力值。由于所有诚实的节点都将他们的新消息附在未被拒绝的分支上,这些分支的批准权重很快就会变大,而被拒绝的分支的批准权重仍然很小。
加入网络的新节点可以通过观察哪些分支的权重足够大,哪些分支的权重不够大来推断它们之前错过的FPC投票结果。
终结Finalization:终结衡量的是一条消息不会成为孤儿的概率。在IOTA 2.0中,当消息被足够多的消息间接引用时(由其发行者的共识法力加权),该消息就被终结,并保障消息在Tangle中深深植入而不会成为孤儿。 在Nectar的原型中,这种情况在几秒钟内就会发生。
谢谢你的阅读。我们希望你在读完这篇文章后对IOTA 2.0的内部运作有了更清晰的认识。关于各个模块的更多信息可以在IOTA 2.0 DevNet网站上找到。
如果你有任何问题或想聊聊IOTA 2.0,你可以在我们Discord的#tanglemath频道找到我们的研究团队成员以及许多出色的社区成员。也欢迎你在我们的公共论坛(IOTA.cafe)上关注和参与我们的技术讨论。
本文原文非中文版本,由BruceX进行翻译,如若转载,请注明出处:http://www.iota.love/202106/fully-decentralized-iota-2-0-explained-in-under-3-minutes/