EIP-7848: 链上升级信号
允许参与者在生成区块时表明他们已准备好进行客户端升级
Authors | William Entriken (@fulldecent) |
---|---|
Created | 2024-12-22 |
Discussion Link | https://ethereum-magicians.org/t/eip-7848-on-chain-upgrade-signaling/22306 |
摘要
本提案增加了一种机制,允许客户端通过在每个区块中包含一个“参考实现哈希”字段来表示他们愿意进行网络升级。只有有足够多的区块指定它们正在使用新软件时,网络升级才会激活。
动机
目前,以太坊主网的升级是在 ethereum.org 博客上宣布的。本提案改变了这一过程,通过基于网络参与者的同意来激活升级。
规范
以太坊共识客户端应通过具有等效行为的参考实现来进行标识。
以太坊共识客户端应在区块头中的 extraData
字段之后立即包含一个 referenceImplementationHash
字段(如下所述)。
提议的新以太坊共识客户端最初应表现为当时的网络一样。只有当成功升级(定义如下)被激活时,新行为才会生效。
当网络参与者愿意支持网络升级时,他们应立即开始使用新软件。他们创建的包含新的 referenceImplementationHash
的区块将有助于网络升级激活。
参考实现哈希
在提议网络升级时,提议者应指向已发布的、功能完整的参考实现,包括新的软件行为。
参考实现哈希是此参考实现的 tar 打包的源代码的 SHA-256 哈希值。
验证
网络参与者应研究参考实现,并决定他们是否支持升级。
网络参与者应研究他们将运行的任何特定软件,并确保它忠实地实现了与该参考实现一致的行为。
升级
升级提案(通常称为硬分叉 EIP)必须指定升级窗口和阈值。这些参数在共识客户端中实现:
VOTING_WINDOW_BEGIN
:用于计算投票的第一个区块(包括)。VOTING_WINDOW_END
:用于计算投票的最后一个区块(包括)。REFERENCE_IMPLEMENTATION_HASH
:这是上面定义的。REQUIRED_APPROVALS
:升级所需的最小批准数。
差值 (VOTING_WINDOW_END
- VOTING_WINDOW_BEGIN
) 必须严格大于 14400(大约两天),并且应选择提供足够的时间来向网络参与者宣传升级。
所需的批准数必须严格大于投票窗口中区块的 50%。建议使用更高的阈值(例如 95% 或更多)。
当编号为 VOTING_WINDOW_END
的区块被创建时,如果在投票窗口期间有 REQUIRED_APPROVALS
个或更多区块将 referenceImplementationHash
设置为值 REFERENCE_IMPLEMENTATION_HASH
,则该升级被认为是“已激活”,否则,升级失败。
只有在升级成功的情况下,从 VOTING_WINDOW_END
+ 1 开始创建的区块才会使用新的软件行为。
对于工作量证明网络和其他场景,一个分叉可能激活升级,而另一个分叉不激活升级。在任何情况下,严格大于 VOTING_WINDOW_END
的区块应根据软件的行为创建,同时考虑投票窗口中投票的结果,这些投票是该区块的祖先。
注意:仅仅因为升级被激活,这并不一定意味着新的软件行为必须以不同于旧软件行为的方式生成区块 VOTING_WINDOW_END
+ 1。也许新的软件行为将规定只有在稍后的某个时间点上的区块才会以不同的方式生成。也许新的软件行为包括一些其他的共识更改,这些更改不会改变区块的创建方式。
理由
分叉不再可能
自从合并以来,分叉以太坊主网实际上已经变得不可能。验证者质押有价值的资产来参与网络,因此任何理性的验证者只有在他们期望得到广泛采用的情况下才会选择升级。如果验证者期望 95% 或更多的参与者升级,他们应该升级;如果他们期望只有 5% 或更少,他们不应该升级。对于中间情况,存在一个阈值,验证者会理性地选择关闭(招致少量惩罚),而不是冒着参与错误网络的风险——这可能导致其质押的以太币被削减 100%(目前每个份额 16 个以太币)。
因此,正确管理共识升级至关重要。
社区方向
- 以太坊项目和社区没有官方的任务说明或愿景。但是,本提案断言以太坊社区更希望以太坊主网成为一个社区导向的项目。
- 链上升级信号以今天不可能的方式实现了社区方向。
窗口
使用投票窗口来计算投票可以提供有关升级准备情况的实时链上反馈。只有在成功完成投票窗口后,升级才会被激活。
向后兼容性
商标
以太坊基金会 (Stiftung Ethereum),位于瑞士楚格,拥有商标“Ethereum”。因此,如果有人发布拟议的以太坊主网共识客户端,该基金会可能有权限制将该软件作为“Ethereum”客户端进行营销。这也带来了与证券规则相关的独特风险。
EIP-2124
EIP-2124 引入了一种在节点之间传达软件版本的机制。 然而,它不允许在升级之前发出准备就绪信号,也没有指定要升级到什么软件。
安全考虑
任何参与度低于 100% 的升级都会损害未参与的验证者。
- 必须谨慎管理重叠或竞争性升级; 这种情况可能导致多个网络达到最低批准阈值。
- 时间过长的升级可能会阻碍后续升级的提议。
- 由于四个投票参数都嵌入在参考实现中,因此网络参与者必须尽职尽责地确保他们了解实际的软件行为。
版权
版权和相关权利已通过 CC0 放弃。
Citation
Please cite this document as:
William Entriken (@fulldecent), "EIP-7848: 链上升级信号 [DRAFT]," Ethereum Improvement Proposals, no. 7848, December 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7848.