EIP-6988: 当选的区块提议者未被罚没
阻止被罚没的验证者被选为区块提议者
Authors | Mikhail Kalinin (@mkalinin) |
---|---|
Created | 2023-05-04 |
Discussion Link | https://ethereum-magicians.org/t/eip-6988-elected-block-proposer-has-not-been-slashed/14349 |
摘要
引入对共识层规范的修改,以确保被罚没的验证者不能被选为区块提议者。
动机
被罚没的验证者提出的区块会被共识层规范中定义的 phase0/process_block_header
函数中的相应有效性检查拒绝。
与此同时,phase0/compute_proposer_index
的定义允许被罚没的验证者被选为提议者。这种矛盾实际上会导致如果本应由被罚没的验证者提出提案,则会错过提案。
在以太坊主网上,单个罚没的情况下,所提出的修复的影响可以忽略不计,但在相关的罚没的情况下,其影响变得显着。例如,1/10
的验证者集合的相关罚没可能导致罚没后若干 epoch 中 1/10
的提案被错过。
规范
所提出的变更的规范可以在 /_features/eip6988/beacon-chain.md
中找到。
理由
修改 get_beacon_proposer_index
如果最新区块头的 slot 与 state.slot
相同,则修改此函数以从信标状态读取提议者索引。
进行此修改是为了在给定区块的提议者在处理该区块期间被罚没的情况下,使该函数返回正确的提议者索引。
向后兼容性
此修复程序以向后不兼容的方式更改了提议者选举机制,并且需要部署硬分叉。
测试用例
添加了以下测试用例来涵盖此更改:
test_slashed_proposer_rewarded_for_sync_aggregate_inclusion
test_slashed_proposer_rewarded_for_attestation_inclusion
test_slashed_validator_not_elected_for_proposal
test_slashed_validator_elected_for_proposal
参考实现
参考实现与规范位于同一位置。
安全考虑
没有观察到所提出的更改引入的任何安全问题。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Mikhail Kalinin (@mkalinin), "EIP-6988: 当选的区块提议者未被罚没 [DRAFT]," Ethereum Improvement Proposals, no. 6988, May 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6988.