测试主网的区域乘数

世界地图

该团队正在主网之前对区域乘数进行最终测试,以确保它们按预期运行

两周前,我们宣布了对地理分类的更新,这将用于对区域乘数的测试——那个时候已经到来。使用上周的数据,我们计算了每个地区的新乘数:

有了这些乘数,我们应该可以抵消在各个区域运行节点的延迟因素。  

这是一个不完善的系统。像中东这样只有一个节点的地区正在读取并不能真正描述其总体表现的结果。其他地区,如北非,根本没有节点,因此必须猜测它们的值。

但是,更大的挑战是正确的乘数是一个区域有多少节点的函数。在设计网络时,我们使区域中的每个节点都经历了团队中任何节点的最高乘数。这是为了确保永远不会出现节点运营商被激励不参与轮次的情况。因此,给定区域的正确乘数是该区域中节点数的函数。

这意味着随着网络的增长和缩小,乘数需要定期更新。如下图所示,乘数的数学运算相对规律,因此有可能在某个时间点将其整合到链上,并在每个时代自动计算。 

此解决方案还需要调整乘数的处理方式。最初,团队中的所有节点都继承了相同的乘数。这导致了一些非常奇怪的乘数,因此我们正在调整算法,为所有节点提供他们自己乘数的平均值和团队中最高的乘数。

计算乘数

在计算乘数时,我们从原始数字开始,即每个节点在每个时代获得的分数,不包括乘数。我们希望一切都是公平的,我们希望每个节点运行者都被激励与其他每个节点合作。因此,我们的目标是确保充分参与可以让您在网络中获得完整的“积分”。

在我们继续之前,一些定义:

  1. Mᵢ – Bin 中所有节点的乘数 一世.
  2. Aᵢ – Bin 的调整点值 一世.
  3. Pᵢ – bin 中至少有一个节点的概率 一世 包含在一个团队中,并且来自任何 bin 的一个节点 <一世 不包括在内。


计算是由真实的网络数据播种的。在上周,我们获得了每个节点在一个时代中 cMix 操作获得的平均积分。然后将其“标准化”以生成 bin 的调整点值,称为 Aᵢ。

该系统的目标是创建乘数,使未来的 As 都为 1。

bin按A从最小到最大排序。计算点数时,每个节点的乘数是其乘数的平均值,并且是团队中最高的(也是最低的i)。 

因为具有最低平均值的区域 Bin 0 会覆盖所有其他区域,所以 Bin 0 的乘数可以计算为:

我们的目标是确保所有团队中所有节点的乘数和调整平均也最大为 1。因为 Mₙ 是第 n 个有序 bin 的乘数,而 Aₙ 是第 n 个有序 bin 的归一化平均值。这很容易解决:

Bin 1 的下一个乘数可以计算为 Bin 1 中的节点与 Bin 0 中的节点(使用 M0 bin 乘数)选择的概率以及 Bin 1 中的节点未与 Bin 中的节点组合的概率0(使用 M1 团队乘数):

我们可以对 Bin 2 做同样的计算:

对于任何 Bin,这些方程都是可解的,并且可以根据乘数来定义。对于 Bin 2,计算乘数的变换是:

我们可以使用任何团队乘数 Bin n 的总和来概括这一点:

除了递归定义之外,正确的概率也很棘手。由 5 个节点组成的团队的每次选择都包括从网络中的所有节点中随机抽取,没有替换。这种选择由超几何分布描述。最常见的情况是,这种分布适用于计算具有二进制特征的对象(在我们的例子中为节点)的简单情况(例如,在 BFT 共识领域:拜占庭/诚实节点)。但是,在 cMix 中,我们将节点拆分为 12 个 bin,这将问题转化为多维问题,这意味着我们需要计算多元超几何分布。幸运的是,由于乘数的工作原理,当我们从 bin 2 中选择一个节点时,我们并不关心团队中的任何其他节点是否属于具有更高乘数的 bin。这意味着我们需要计算的所有概率都是相似的:我们希望有一个团队至少有一个来自 bin i 的节点,而没有来自所有 bin 的任何节点<i. We include a spreadsheet in our resources below which show how to do this in detail.

错误

该解决方案存在一些错误,因为 A 值的差异在很大程度上是由影响选择概率的轮次所需时间的变化引起的。我们模拟所描述的这种解决方案在 3% 内是正确的。未来的工作可以解构点变化的原因,以更好地对其建模并减少此错误。

资源:

垃圾箱列表:

 https://docs.google.com/spreadsheets/d/1z9kvEW7XXcHYxUSPpXkoA1Cv9trIbY4VkPzaWzJEN_I/edit#gid=2056956216

调度算法: https://git.xx.network/xx_network/primitives/-/blob/dev/region/ordering.go

乘数计算:

https://docs.google.com/spreadsheets/d/1d2HcuCVorKDkUppBam-dk-_PJ8ukPp8ja18DyE_VYJQ/edit?usp=sharing

用于模拟以确认计算的 Python 脚本:

https://git.xx.network/-/snippets/3

受欢迎的