Alert Source Discuss
Standards Track: Core

EIP-7045: 增加最大证明包含槽

将最大证明包含槽增加到 `N+1` 中的最后一个槽,其中 `N` 是包含证明槽的 epoch。

Authors Danny Ryan (@djrtwo)
Created 2023-05-18

摘要

将最大证明包含槽从 attestation.slot + SLOTS_PER_EPOCH 增加到 epoch N+1 的最后一个槽,其中 N 是包含证明槽的 epoch。

这种增加对于当前的 LMD-GHOST 安全分析以及确认rule至关重要。

动机

目前,证明可以在一些最小延迟(主网上为 1 个槽)之后,直到证明创建槽之后的 SLOTS_PER_EPOCH 个槽内被包含。这个滚动的一个 epoch 窗口是在 Phase 0 期间决定的,因为任何证明的相等包含窗口被评估为“公平”。考虑的替代方案是允许在当前和下一个 epoch 期间包含,这意味着在 epoch 开始时创建的证明比在 epoch 结束时创建的证明具有更多的潜在包含槽。

自从这个决定以来,很明显,替代设计对于当前的 LMD-GHOST 安全证明以及新的确认rule(这将允许在正常主网条件下大约 3-4 个槽中进行区块确认)至关重要。

因此,本规范根据已知的安全证明和确认rule需求,增加了证明的最大包含槽。

规范

常量

名称 注释
FORK_TIMESTAMP 1710338135 Mainnet

执行层

这不需要对执行层进行任何更改。

共识层

规范更改已构建到共识规范 Deneb 升级中。

该规范对状态转换函数进行了两个小的更改:

  • 修改 process_attestation 以不对槽检查设置上限,而是通过最小槽以及目标 epoch 位于当前或上一个 epoch 中来定义包含范围。
  • 修改 get_attestation_participation_flag_indices 以设置 TIMELY_TARGET_FLAG,而不考虑 inclusion_delay,以确保扩展包含的证明具有非零奖励。

此外,该规范修改了 attestationaggregate attestation gossip 条件,以允许在此扩展范围内进行 gossip。

理由

扩展最大包含槽

如动机中所讨论的,将此最大包含槽扩展到下一个 epoch 的末尾对于 LMD-GHOST 安全证明和确认rule至关重要。

删除对目标奖励的 inclusion_delay 考虑

以前,如果证明包含在 SLOTS_PER_EPOCH 窗口内,get_attestation_participation_flag_indices 才会设置 TIMELY_TARGET_FLAG(因此对具有正确目标投票的证明进行奖励)。

删除了对此标志的 inclusion_delay 考虑,以确保无论证明的有效包含窗口是什么,它都可以因正确的目标而获得基线非零奖励。这确保了客户端仍会尝试将此类证明打包到区块中,这对于安全分析非常重要。

请注意,这是先前定义的范围(相当于最大值)的预期行为。

向后兼容性

此 EIP 对共识层的区块验证规则集引入了向后不兼容的更改,必须 сопровождаться 硬分叉。

测试用例

本 EIP 的测试用例可以在 consensus-specs 存储库的 deneb 测试套件中找到。

安全考虑

这提高了 LMD-GHOST 安全性,并启用了一个快速确认rule。

没有已知的对安全性的负面影响。

版权

通过 CC0 放弃版权和相关权利。

Citation

Please cite this document as:

Danny Ryan (@djrtwo), "EIP-7045: 增加最大证明包含槽," Ethereum Improvement Proposals, no. 7045, May 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7045.