发布开源奖励计算

Releasing an open source rewards calculation (cardanofoundation.org)


在卡尔达诺的权益证明 (PoS) 协议——Ouroboros 上,委托人和权益池运营商 (SPO) 会因为为保护网络安全做出贡献而获得奖励。 卡尔达诺账本规范概述了计算这些奖励的公式。 考虑到这一点,作为卡尔达诺基金会努力提高网络运营弹性的一部分,我们开源了独立于节点的奖励计算。 该项目旨在实现一种独立于单一实施的执行和验证奖励计算的方法。 它还希望提供与卡尔达诺金库、储备金和矿池奖励相关的全面文档。

作为麻省理工学院许可下的开源存储库,该计划还加深了基金会对开源成熟度的承诺,并旨在获得整个生态系统的贡献。 最后,计算同样可以作为一种教育工具,例如关于协议参数变化如何影响资金流动。 它最终提高了透明度并提高了运营弹性。

通过开源增强运营弹性
卡尔达诺区块链提供了几个独特的、经过仔细考虑的功能。 关键在于,质押的 ADA 保留在用户钱包中,可以随时转移到其他钱包。 虽然此功能有好处,但它也给实施奖励计算带来了挑战。 正如分类账规范中所述,这需要使用快照进行奖励计算。

该过程首先计算新的储备金、费用、总奖励池和金库。 随后,根据该总奖励池确定池奖励。 权益池奖励用于计算权益池委托人和权益池运营者的奖励。 由于需要基于快照的计算,因此在拍摄快照后,权益账户可能会取消注册。 因此,权益账户在计算完成后无法获得奖励,需要自定义规则来处理这些特殊情况。

这些规则自然地分布在代码库中,因为计算过程本身是随时间分布的。 Cardano-ledger 存储库聚合了大部分业务逻辑以及相关文档。 此过程所需的一些附加组件可以在卡尔达诺节点本身或 ouroboros-network 存储库中找到。

该代码使用基于槽的调度程序执行,这对于那些不熟悉代码库的人来说可能难以阅读和遵循。 虽然引入了某些优化来增强计算性能,但这些优化可能会使代码不太容易理解。 开源奖励计算旨在解决这些挑战,同时保持卡尔达诺网络原生的强大功能。

卡尔达诺奖励机制
Cardano 账本规范包括多个方程,这些方程共同定义了每个 epoch 结束时的 ada 流。 每个节点将以分布式方式独立计算每个周期的奖励,然后根据共识机制分配任何潜在的奖励。 值得注意的是,没有任何一个实体可以完成这一计算,也没有任何人可以扣留奖励。 这些 ada 奖励在每个时期都会计算,并源自两个来源的相互作用:交易费用和货币扩张。

交易费用:在每个时期结束时,费用罐中的价值(该时期所有交易费用的总和)进入总奖励罐中。
货币扩张:除了交易费用之外,固定比例的储备金也被放入相同的奖励池中。
然后,总奖励池分为两部分。 第一部分进入金库,第二部分形成权益池奖励。 值得注意的是,上述储备最初约为 140 亿艾达,后来逐渐减少。

同时,另一项计算利用权益池参数来计算权益池奖励,这些参数与明显的权益池性能相结合,确定各个权益池奖励。 由此产生的值构成了计算委托人和运营商奖励的基础。 重要的是,所有这些计算都取决于协议参数。 奖励计算构成了卡尔达诺区块链生态系统不可或缺的一部分,因此让人们了解其工作原理至关重要。 这些知识使人们能够选择适合他们的愿景和价值观的权益池。

奖励计算如何提高透明度
金库、储备金、奖励、存款和费用(通常称为 ada-pots)总计达 450 亿枚 ada 的最大供应量。 虽然任何人都可以在卡尔达诺区块链浏览器和卡尔达诺数据库同步上查看 ada-pot 数字,但这些平台只能提供计算的最终输出,没有任何可用的基础数据来确认这些数字是如何计算的.尽管这些计算存在于节点和账本存储库的 Haskell 代码中,但它们采用了复杂的、高度分布式的公式实现。

因此,基金会开始追求一种独立于节点的奖励计算,该计算实现了卡尔达诺账本规范中概述的公式,并作为处理指定公式与实际实现不符的边缘情况的文档资源。 例如,在一种情况下,节点实现中的错误导致池所有者运行两个不同的池,但具有相同的奖励地址,但仅收到一个权益池的奖励。 在这种情况下,修复错误导致金库向矿池所有者发放额外奖励。

虽然这些手动干预完全符合协议规范,并通过所谓的移动瞬时奖励 (MIR) 证书以透明的方式记录,但针对该时期计算的 ada-pots 将是不正确的。 具体来说,如果用这个时期的简单公式计算国库价值,很明显它与实际持有的 ada 数量不符。 简而言之,如果不了解此类特殊事件,公式与国库价值之间的差异将难以追踪,而且国库中的资金将少于公式所示的资金。

开源公式实现的优势
奖励计算最初集成到 LedgerSync 中,LedgerSync 是一个基于 Java 的数据管道,旨在为卡尔达诺基金会的新卡尔达诺浏览器提供来自卡尔达诺区块链的数据。 然而,基金会的工程团队很快意识到,理清计算不同方面涉及的多个组件将相当复杂。 输入数据(包括规范、博客文章、论坛帖子和自托管社区文档)的多样性意味着从各种来源收集必要的信息以全面了解 ADA 流程变得特别耗时。

另一方面,开源奖励计算可以让公众检查、审查和验证算法以及用于确定如何分配奖励的代码。 这种方法同样有助于建立对卡尔达诺基础设施的信任,它作为一个存储库,其中包括一个解释 epoch 结束时 ada 流程的交互式图表,以及强调公式和实际值之间差异的报告。

它还可以作为一种有用的方式来教育人们了解卡尔达诺的去中心化财务系统,并有助于提供有关交易费用使用的见解。 作为一个开源存储库,奖励计算进一步吸引了社区,推动每个人贡献尽可能多的文档。 此外,它还提供了一种技术支持工具,因为它公开了一个 API,允许用户计算当前仅可通过 Cardano DB Sync 使用的值,Cardano DB Sync 是 IOG 的 Haskell 工具,用于爬取节点数据并使其在 PostgreSQL 数据库中可访问。

努力实现奖励计算透明度
正如前面的边缘案例示例中所讨论的,使用下一个时期的公式来计算(例如国债价值)有时不会产生准确的结果。 当转移资金来支付 Project Catalyst 提案时,或者例如,当使用 MIR 证书来补偿由于错误而错过的池奖励时,可能会出现这种动态。 虽然通过 MIR 证书机制透明地记录在卡尔达诺区块链上,但此类边缘情况并不总是被公开详细记录,导致缺乏历史背景,从而严重损害透明度,进而导致不确定性和信任度下降。 建立合适的文档可以防止这种情况发生,从而能够进行未来的审查和审计以及文档的改进,从而增强卡尔达诺的可信度和运营弹性。

基金会的工作从公式实现和边缘案例文档开始,但仍需要解决一些剩余的未知问题。 例如,有必要考虑 271 纪元之前的早期 Catalyst 资金或 MIR 证书,因为它们没有附加元数据。 通过开源这个公式,基金会希望与社区成员合作建立一个独立于数据源的解决方案。 目前,我们有一个 Koios 数据提供程序和一个静态 JSON 文件的数据提供程序,它们提供聚合数据。 此外,范围索引器(可能基于 Yaci-Store(一种基于 Java 的 Cardano 数据存储实现))将有助于确保奖励计算的最大透明度。

这一举措最终还涉及财务价值,卡尔达诺用它来资助生态系统的去中心化发展、池奖励和交易费用。最终,它直接影响每个卡尔达诺用户应该关心的方面,包括他们所属生态系统中的奖励部署。 与此同时,所有贡献者,无论是共享代码还是信息,都在为生态系统带来更多信任和透明度方面发挥着重要作用,从而改善了增加区块链采用的条件。

破解计算
基金会会在存储库的每个新版本旁边生成一份报告。 我们添加了计算值与实际国债价值之间的平均绝对差作为衡量标准,我们希望与社区一起随着时间的推移实现该价值的减少。

对此存储库的贡献不仅限于代码; 人们可以添加有关某些时期观察到的实质性差异的数据、链接、文档和见解。 存储库本身遵循测试驱动的方法,因此从创建测试开始是有意义的,例如与特定时期的特定池奖励相关的测试。 基金会仅为财务部门创建了报告,但我们认为未来有可能为 ada-pots 的其他组成部分引入此类报告,以及有关选定权益池和成员奖励的详细报告。

大多数时候,国库券价值平均比公式预测高出 3,500 ada 左右。 矿池收获规则将不可领取的矿池存款(例如当矿池退役并且相关权益地址已被注销时)引导回金库。 此外,每个池可以在每个时期获得最大 ada 值。 财政部还指导公式计算的值与最大值之间的任何差额。 对当前实施的这些调整应该会减少平均绝对差异。

基金会在解决计算的基本原理和确定其中一些差异的解释方面已经取得了一些成功。 然而,为财政部的每笔传出交易提供全面的文件是很有价值的。

下一步还包括实施 Pool Reap 规则,以及向金库添加上限奖励、合并 MIR 证书以及将无人认领的奖励转入储备金。 此外,虽然对于每个新纪元,我们目前都会重置为已知值,以防止之前纪元的转发错误,但在未来,拥有一个范围内的消费者来处理费用、退休矿池、注销权益账户、矿池更新等将被证明是有益的 。 该结构将能够基于先前的计算进行动态计算。

然而,如果计算中存在另一个未知数,导致计算与实际值之间存在差异,则可以完成对卡尔达诺节点和卡尔达诺账本存储库中的 Haskell 实现的深入检查。 此场景旨在通过探索提交历史记录和问题讨论来识别导致差异的更改。

展望未来,基金会打算利用该存储库中的报告和交互式图表向监管机构、企业和机构解释 ada 代币经济学。 9 月,我们还与 Koios CNTools 的团队会面,向他们介绍存储库并收集初步反馈。 他们欢迎这一举措以及实现和记录奖励计算的想法,并指出让其他开发人员将此 Java 参考实现移植到其他语言将提供补充价值。

开源方法总是可以丰富生态系统,为所有相关方提供互惠互利,同时促进透明度并提高区块链技术广泛采用的可能性。 因此,卡尔达诺基金会计划继续开源存储库和解决方案,以促进卡尔达诺开源的成熟度。