Coordicide更近一步:IOTA发布FPC(快速概率共识)模拟器

FPC模拟器的发布,标志着Coordicide的研发已经接近尾声,充分显示了IOTA的开放心态和自信。

在之前的一篇文中,IOTA研究部门与我们的研究资助人之一Sebastian Mueller博士合作,发布了由Serguei Popov博士和Bill Buchanan博士提出的FPC协议的模拟结果,FPC协议是快速概率共识的缩写。

今天,我们很高兴与您分享我们用来生成FPC部分结果的模拟器的源代码。通过向公众发布FPC模拟器,我们和社区开放技术,并鼓励进行广泛的测试。

我们的模拟器是用Go编写的,你可以从这个地址中访问代码:https://github.com/iotaledger/fpc-sim

我们对仿真器进行了优化,以便能评估FPC在特定情况下的具体表现。我们对源代码进行了简化,以便能对单个事务进行投票。在模拟中,节点可以表现为诚实的,也可以表现为恶意的。


对于每个事务,我们定义诚实节点的平均初始意见、恶意对手的策略以及其他参数。在下一节中,我们将简要讨论其中的一些参数。

网络视图

在FPC的论文中,我们假设了每个节点都有一个完整的网络视图,但是我们非常关注在网络视图不完整的情形线下,网络会如何表现。换句话说,我们需要分析网络中当节点缺少其他节点的信息时,对达成共识的能力的影响。


为了研究这个场景,我们引入了一个Watts-Strogatz模型,它允许将网络模拟为具有“小世界”特性的图形。我们为创建这些图形增加了两个参数:

第一个参数 δ ,是指网络节点可以对等的比例。另一个参数 γ 是指节点(通过不同的路径)重复连接的概率。我们按照以下方法绘制了图形:首先我们创建一个环,图中每个节点都跟 δ N-1 个邻近的邻居相连,其中N是节点的总数。

然后对这些连接的一半中,根据重复连接的概率 γ,从剩下的节点中随机选出一个新的重复连接。当 γ= 0时,我们会得到一个环图,它最大化的直径图固定是 δ。后者可以理解为针对Watts-Strogatz图的最坏情况。


Watts-Strogatz模型中两个参数的影响

随机性

我们考虑了接收到随机数的概率减少的可能性。这可以让我们研究,在没有为每轮提供随机阈值的情况下的协议的表现。这对于理解FPC协议需要多大的随机性具有特别重要的意义。

攻击者策略

此外,我们提供了包括两种谨慎的攻击者策略的可能性。首先,攻击者试图攻击意见的完整性,即通过不断地投票给最初的少数意见来推翻最初的多数意见。在第二种情况下,攻击者试图通过创建协商失败和破坏节点之间的共识来攻击网络。

指标和评价

目前,模拟器支持以下主要指标,我们还提供了相应的评估脚本:

  • TerminationRate(完成率):所有诚实节点在允许的最大轮数之前结束的比例。
  • AgreementRate(同意率):所有诚实节点得出一致意见的比率。
  • IntegrityRate(一致率):所有诚实节点以一致的意见结束,并且最终意见与最初的多数意见相同的概率。
  • EtaEvolution:一个直方图,表示每一轮中,诚实节点尚未得出结论时的η-值 。


为此,我们采用了三个用Python和Matplotlib编写的评估脚本。


plot.py和plot2d.py:这两个脚本允许分别用1和2个输入向量求值。我们使用脚本从模拟代码生成的csv输出文件中提取数据。

例如,在下面的图中,我们应用plot.py脚本显示通过评估部分网络视图的效果而获得的数据。在第一幅图中,我们采用保守的观点,假设图的形式是一个环。可以看出,局部网络视图足以使节点达成协议。

δ 对完成率和同意率的影响

在第二个图中,我们根据概率 γ 让拓扑图中的结构出现一些重复的链接。结果表明,在保持网络视图较小的同时,同意概率可以得到显著提高。

不同 δ 值下,同意率与 γ 值的关系

plot_eps.py:此脚本提供了一个η-values随时间分布的热图。例如,在下一个图中,如果大部分节点都是恶意的,那么您可以看到etas的演变。

此外,还可以提取以下指标,并将其输出作为CSV文件提供:

  • MeanTerminationRound:FPC终止时的平均轮数
  • MedianTerminationRound:FPC终止时的中位回合数
  • TerminationRound:以直方图形式完成FPC所需的回合数
  • Mean last round:遍历所有节点所需回合均值
  • LastRoundHisto:单节点终止回合数的直方图
  • OnesProportion:协议终止后数值“1”的比例
  • OnesPropEvolution: 数值“1”的比例的演变

IOTA研究团队正在不断改进模拟代码,并添加新的特性。如果您对此很感兴趣,并想了解更多关于它的信息,请开始尝试使用这段代码!此外,如果你愿意做出贡献,你可以实施新的攻击战略和防御机制。有关如何构建和运行模拟器的更多信息可以在存储库的README文件中找到。

发布FPC模拟器是Coordicide项目的一个重要步骤。它使我们能够与对该技术感兴趣的社区和研究人员进行接触。通过这种方式,世界各地的个人可以通过另一种途径为这项努力做出贡献,甚至可以在这里申请资助。

我们希望您能像我们一样喜欢这个模拟器的开发。一如既往,我们欢迎您在这里或在IOTA的官方Discord服务器上的#tanglemath频道上发表评论或提问。

原文链接:https://blog.iota.org/the-fast-probabilistic-consensus-simulator-d5963c558b6e

大熊

专栏作者:大熊

个人简介:我共发表了 29 篇文章,总计被阅读了8,585 次,共获得了 353 个赞。

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

发表评论

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