修复归属时间表

有工具的键盘

xx labs 团队正在推动对归属时间表的修复 2022 年 1 月 21 日

概述

随着 BetaNet Staking Rewards 计划的实施,xx network 上的大多数钱包都添加了新的归属时间表。 xx labs 团队发现了在计算这些新的归属时间表时出现的错误,并开发了一个修复程序来恢复正确的时间表。

在这篇文章中,我们将首先深入探讨 xx network 中的归属如何工作。

然后,我们将解释 BetaNet Staking Rewards 计划是如何实施的,在实施后发现的问题,以及我们如何解决这些问题,包括修改不正确的归属时间表。

最后,我们将在以下位置发布所有修订后的归属时间表 https://vesting.xx.network 对于所有代币持有者,采用 JSON 数据格式和随附的包含归属图的 PNG 文件。我们还提供了由于上述问题而影响代币持有者的不同情况的示例。

我们将在 2022 年 1 月 21 日推动这些更正。

什么是归属时间表

归属是一个传统上与股票期权一起使用的概念,授予一定数量的股票单位,但这些单位只授予(他们 背心) 随着时间的推移分批进行,例如,每季度或每年一次。

在 xx network 的上下文中,概念相似,但执行方式不同。奖励的全部代币直接提供给接收者账户,但有一个归属时间表  硬币一段时间。锁定用于归属的代币可用于网络中的任何操作(除了用作 预订的 硬币),但不能转移到任何其他帐户。然后在每个区块解锁归属的代币。

xx network 中的归属时间表包括三个字段:

  • 通过归属锁定的金额: 洛克d
  • 解锁每个区块的数量: 每块
  • 硬币开始解锁时的区块: 起始块


我们使用归属时间表对硬币设置两种不同类型的限制:在指定的时间段内锁定全部金额,或线性解锁,从给定的时间点开始并具有指定的持续时间。

例子:

BetaNet 节点每月 7000 枚硬币的归属时间表如下所示:

  • 洛克d:7000
  • 每块:7000
  • 起始块:1123200

这个例子放置了一个 7000 的锁,它在块 1123200 开始解锁,每个块解锁 7000。这实际上意味着这批 7000 枚硬币被锁定到第 1123200 块,并在第 1123201 块完全解锁。这个特定示例适用于 2021 年 1 月的 BetaNet 奖励,因为 1123200 块等于 1123200/(24 小时 * 600每小时块数)= 78 天,这意味着锁定于 2022 年 2 月 1 日结束。

BetaNet 质押奖励的代币归属时间表如下所示:

  • 洛克d:23812
  • 每块:0.009186728
  • 起始块:432000

这个例子放置了一个 23812 的锁,在 432000 块开始解锁,每个块解锁 0.009186728。这意味着 23812 枚硬币被锁定到第 432000 块,然后以每块 0.009186728 开始解锁。我们可以通过锁定除以 per_block 来计算归属的持续时间:23812/0.009186728 ~= 2592000 个块,即 2592000/(24*600) = 180 天。这意味着该值在开始归属后 6 个月完全解锁,432000/(24*600) = 主网启动后 30 天。

Betanet 质押奖励

2021 年 3 月,该团队宣布了 BetaNet Staking Rewards 计划,该计划适用于主网启动时的所有代币持有者。该计划的 APY 为 50%,每天计算利息,从 2021 年 3 月 1 日到主网上线。 3 月 1 日之后收到的硬币仅从授予之日起计息。奖励金额是针对每个代币持有者计算的,并在主网启动之前发布在创世区块电子表格中。在创世区块中,奖励金额在索赔模块中为每个持币者配置,或直接在 BetaNet Staking Rewards 模块中配置。

该计划的设计具有以下奖励选项:

  • 无归属,奖励2%
  • 1个月归属100%本金加奖励,奖励12%
  • 3个月归属90%本金加奖励,奖励45%
  • 6个月归属80%本金加奖励,总奖励给。如果未进行选择,这是默认选项
  • 本金加奖励100% 9个月归属,奖励120%


BetaNet Staking Rewards 模块旨在支持该程序所需的功能。该模块允许将他们的硬币认领到 xx network 地址的用户选择他们想要的选项。此外,该模块配置了一个设置为主网启动后 30 天的制定块。这对于留出时间让社区投票接受该计划是必要的。该计划通过公投获得批准,代币持有者在一周内投票。

在制定区块时,该程序已执行,奖励从主网质押奖励池中提供给所有代币持有者,并根据所选选项应用归属时间表。 6 个月归属的默认选项自动应用于所有剩余的索赔,奖励金额被添加到索赔价值中,并添加了归属时间表。

现有问题

该团队确定了影响 BetaNet Staking Rewards 计划制定的 3 个问题:

  1. 剩余债权 – 待锁定的金额是在奖励添加到本金后计算的,即锁定 = 0.8 *(本金 + 奖励)+ 奖励,而不是锁定 = 0.8 * 本金 + 奖励。这导致许多剩余索赔中的锁定金额高于预期
  2. 归属计算——要锁定的数量是通过获取所需的锁定并减去已经在制定块锁定的当前数量来计算的。这是一个尽力而为的解决方案,它在保持现有锁的同时锁定所需的奖励金额,从而导致归属锁总是比以前更高。但是,在许多情况下,此解决方案可能导致锁定值低于程序要求的值,这可能会在选择不同选项的代币持有者之间造成不公平的情况。此外,在某些情况下,锁定的值开始时高于所需值,然后下降到低于允许值
  3. 不正确的奖励支付——考虑一个用户有两个单独的声明,一个没有归属时间表(例如来自原始销售),另一个有。如果两者都被认领到同一个地址,则只保留来自第二个地址的奖励值。这意味着第一次索赔的奖励值没有在制定区块中支付。此特定问题仅影响 3 个硬币持有者。

解决问题

正如之前在论坛中宣布的那样 邮政,该团队提出了一个区块链运行时更新,增加了额外的功能。这包括两个功能,通过一致投票授予技术委员会修改索赔和归属模块中的归属时间表的能力。此次升级在全民投票中获得批准,并于 1 月 13 日上周四颁布。

团队将使用这些特权功能来修复不正确的归属时间表,然后将在进一步的运行时升级中尽快删除。

新的归属时间表

所有代币持有者的 Vesting 和 BetaNet Staking Rewards 计划信息可在以下网址找到 https://vesting.xx.network.

对于每个硬币持有者,都有一个 JSON 文件,其中包含以下信息:

  • 本金:创世时存在的硬币数量
  • 奖励:给予的奖励,根据选择的选项进行调整
  • 选项:BetaNet Staking Rewards 计划选择选项
  • 归属:有关归属的所有信息
    • 原始:创世时存在的归属时间表
    • betanet_rewards:betanet 质押奖励所需的归属时间表
    • on_chain:当前链上的归属时间表
    • 计算:固定归属时间表
  • 不正确的_on_chain:在链上归属中指定的标志不正确


对于每个硬币持有者,都有一个 PNG 文件,其中包含三个锁定硬币数量的图表,作为区块编号的函数。这些提供了一种更简单的方法来比较不同归属时间表锁定的金额随着时间的推移:

  • 原始归属(左):该图显示了原始归属时间表(蓝色)和 BetaNet Staking Rewards 所需的时间表(橙色)。方案制定后,锁定的金额必须始终是限制最大的,即max(original, betanet_rewards)
  • 链上归属(中):该图显示的信息与上一个相同,但覆盖了链上归属时间表(绿色)。在这里,代币持有者可以立即查看当前归属是否无效,以及是否锁定更多、更少(或两者)代币
  • 新的归属(右):此图显示与第一个相同的信息,但覆盖了新的(固定)归属时间表(绿色)。在这里,代币持有者可以看到团队将设置的归属时间表,以解决发现的问题,正如可以看到的那样,始终遵循原始和 betanet 奖励归属之间的最大值。如果此图与中间图相同,则表示链上归属已经正确。


每个 JSON 和 PNG 文件的文件名是硬币持有者的 xx network 地址,如果在 870000 块之前没有认领硬币,则为 ETH 地址。 我们鼓励所有社区成员查找各自的信息,并在发现任何问题时联系团队。

方法

所有必要的信息都是直接从创世区块和各个区块的链上状态编译而来的。在生成所有文件时,进行了多项检查以检测任何问题并进行纠正。固定归属计划的计算是通过调整原始计划并根据需要添加部分 BetaNet 奖励计划以递归方式执行的,因此结果总数与所有区块的必要锁定相匹配,这恰好是两种计划之间的最大值。

不同情况的例子

没有原始锁的剩余索赔,显示问题 1

带有原始锁的剩余索赔,显示问题 1 和 2

带有原始锁的剩余索取权,但归属正确

持有原始锁的持有人,显示问题 2 导致锁高于预期

持有原始锁的持有人,显示问题 2 导致初始锁较高,然后低于预期

持有人带有原始锁,但归属正确

持有人没有原始锁,但归属正确

持有原始锁的持有人,显示错误 1,由于在颁布后提出索赔

受欢迎的