Alert Source Discuss
🚧 Stagnant Standards Track: Core

EIP-7441: 将区块提议者的选举升级到 Whisk

允许当选的区块提议者在区块发布之前保持私密,以防止 DoS 攻击

Authors George Kadianakis (@asn-d6), Justin Drake (@JustinDrake), dapplion (@dapplion)
Created 2023-09-01
Discussion Link https://ethereum-magicians.org/t/eip-7441-upgrade-block-proposer-election-to-whisk-ssle/15316

摘要

将区块提议者选举机制升级到 Whisk,一种单秘密领导者选举 (SSLE) 协议。 目前,区块提议者是提前公开已知的,足以允许可能禁用以太坊的连续 DoS 攻击。 此升级允许下一个区块提议者保持秘密,直到其区块发布。

动机

信标链目前在每个 epoch 的开始时选出接下来的 32 个区块提议者。 此选举的结果是公开的,每个人都可以了解这些未来区块提议者的身份。

这种信息泄露使攻击者可以按顺序对每个提议者发起 DoS 攻击,试图禁用以太坊。

规范

执行层

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

共识层

该协议可以概括为以下并发步骤:

  • 验证者在分叉后的首次提议时注册一个跟踪器和一个唯一承诺
  • 在洗牌阶段开始时,使用来自 RANDAO 的公共随机性选择候选跟踪器列表
  • 在每个洗牌阶段,每个提议者使用私有随机性对候选跟踪器的子集进行洗牌
  • 在每个洗牌阶段之后,使用 RANDAO 从候选集中选择一个排序的提议者跟踪器列表

可以在 /_features/whisk/beacon-chain.md 中找到所提议更改的完整规范。 总结如下:

  • 使用跟踪验证者跟踪器、承诺以及两轮候选人选举所需的字段更新 BeaconState
  • 添加 select_whisk_candidate_trackers 以从验证者集合计算下一个候选向量。
  • 添加 select_whisk_proposer_trackers 以从当前候选人计算下一个提议者向量。
  • process_whisk_updates 添加到 epoch 处理逻辑。
  • 添加 process_whisk_opening_proof 以验证区块提议者是否了解此时段选定的跟踪器。
  • 修改 process_block_header 以不使用 get_beacon_proposer_index 断言提议者选举,而是断言有效的 opening proof。
  • 使用提交 opening proof、带有证明的混洗跟踪器以及带有证明的跟踪器注册的字段更新 BeaconBlockBody
  • 添加 get_shuffle_indices 以计算预混洗候选人选择
  • 添加 process_shuffled_trackers 以提交混洗的候选跟踪器。
  • process_whisk 添加到区块处理逻辑。
  • 修改 apply_deposit 以注册一个没有熵的初始唯一跟踪器和承诺。

理由

每个验证者的字段

Whisk 需要每个验证者有一个跟踪器 (rG,krG) 和一个唯一承诺 kG。 两者仅在分叉后验证者的第一次提议时更新一次。

跟踪器使用随机化基数 (rG,krG) 注册,以使对手更难通过混洗门跟踪它们。 如果诚实的洗牌者集合很小,这可能会成为一个问题。

身份绑定

每个跟踪器必须绑定到验证者的身份,以防止多个参与者声明相同的提议者位置。 否则,它将允许提议者出售其提议者位置,并且如果出现两个竞争区块,则会导致分叉选择问题。

Whisk 通过在验证者记录中存储对跟踪器的秘密 kG 的承诺来进行身份绑定。 存储承诺还可确保 k 的唯一性。

或者,可以通过强制 hash(kG) 的哈希前缀与其验证者索引匹配来实现身份绑定。 但是,验证者将不得不暴力破解 k,这使得计算资源较少的参与者更难启动系统。

还可以通过设置 k = hash(nonce + pubkey) 来实现身份绑定。 但是,提议者将需要显示 k 并在相邻洗牌阶段重复提议时取消匿名化。

替代方案:非单秘密选举

秘密非单领导者选举可以基于协议工程而不是密码学,因此比 Whisk 更简单、更便宜。 但是,它使分叉选择复杂化,并使其容易受到潜在的 MEV 时间购买攻击,因此在撰写本文时它不是一个合适的选择。

替代方案:网络匿名性

诸如 Dandelion 或 Dandelion++ 之类的保护隐私的网络协议增加了网络参与者的隐私,但对于以太坊的用例来说还不够。

SASSAFRAS 是一种更简单的 SSLE 协议,共识方面而言,但它依赖于网络匿名层。 其特定的权衡并不比 Whisk 更适合以太坊的整体威胁模型。

向后兼容性

此 EIP 向共识层上的区块验证规则集引入了向后不兼容的更改,并且必须伴随硬分叉。

PBS 参与者(例如构建者)将不知道下一个提议者验证者索引以使用特定的预注册费用接收者; 除非提议者选择提前透露自己。 区块浏览器和工具将无法将丢失的插槽归因于特定的验证者索引。

安全注意事项

在配套论文中分析了混洗策略,并认为对于 Whisk 的用例来说足够安全。 此 EIP 的数据和计算复杂度是显着的但恒定的,因此不会打开新的 DoS 向量。

匿名集

Whisk 中的匿名集是未被选为提议者的 8,192 个候选者的集合。 该验证者计数对应于较少数量的 p2p 节点。 假设“20% 的节点运行 80% 的验证者”的帕累托原则,则匿名性平均对应于 2,108 个节点。 更大的候选池可能会使混洗策略不安全,而每轮混洗更多跟踪器会增加 ZK 证明的成本。

RANDAO 偏见

Whisk 在候选人选择和提议者选择事件中使用 RANDAO,并且容易受到恶意提议者潜在的 RANDAO 偏见攻击。 通过在整个混洗期间传播选择事件,可以使 Whisk 安全性与现状相同。 但是,现状安全性也不是理想的,并且会使协议进一步复杂化。

版权

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

Citation

Please cite this document as:

George Kadianakis (@asn-d6), Justin Drake (@JustinDrake), dapplion (@dapplion), "EIP-7441: 将区块提议者的选举升级到 Whisk [DRAFT]," Ethereum Improvement Proposals, no. 7441, September 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7441.