EIP-7523: 弃用空账户
禁止在合并后的网络上存在空账户
Authors | Peter Davies (@petertdavies) |
---|---|
Created | 2023-09-19 |
Last Call Deadline | 2024-03-26 |
Requires | EIP-161 |
摘要
该 EIP 禁止任何合并后网络的状态包含空账户。由于测试套件之外不存在空账户,并且无法创建新的空账户,因此实际上已经实现了此要求。明确的禁止可以减少未来的技术债务。
动机
空账户的可能性是以太坊早期历史遗留下来的。唯一曾经能够包含它们的网络是以太坊主网,已弃用的测试网 Ropsten,以太坊经典主网和各种以太坊经典测试网。主网上所有剩余的空帐户已在区块 14049881
中清除(交易 0xf955834bfa097458a9cf6b719705a443d32e7f43f20b9b0294098c205b4bcc3d
),并且在以太坊经典上发送了类似的交易。其他无数的 EVM 兼容网络都没有足够长的时间来拥有空账户,并且在生产环境中没有人会遇到空帐户的实际可能性。
尽管空账户已不复存在,但它们仍然遗留了技术债务。EIP-161 规定了复杂的规则,要求客户端在“触及”空账户时将其删除。随着以太坊规范的不断发展,必须讨论、实施、测试和记录“触及”规则的新的极端情况。如果未来的客户端只想支持合并后的区块,它必须实现不必要的空账户支持才能通过测试套件。
通过禁止在合并后的网络上存在空账户,此 EIP 使以太坊和相关区块链的设计者和实施者免于考虑未来的空账户。
规范
本文档中的关键词“必须”,“不得”,“需要”,“应”,“不应”,“应该”,“不应该”,“推荐”,“不推荐”,“可以”和“可选”应按照 RFC 2119 和 RFC 8174 中的描述进行解释。
空账户是指没有代码,零 nonce 和零余额的账户。这与 EIP-161 中的定义相同。
在进行合并转换的网络上,合并区块的先前状态不得包含任何空账户。对于在创世之初就合并的网络,任何创世账户都不能是空账户。
客户端可以假设以下链在合并后没有空帐户,而不是执行状态扫描:
-
合并区块哈希值为
0x56a9bb0302da44b8c0b3df540781424684c3af04d0b7a38d72842b762076a664
的主网链。 -
满足以下所有条件的任何链:
-
创世之初没有空账户。
-
在创世之初进行了 Spurious Dragon 分叉。
-
在合并后上下文中存在空账户的情况下,以太坊规范被声明为未定义。任何涉及合并后空账户的测试用例均无效。
理由
起草此 EIP 的目的是以最简单的方式消除空账户带来的长期技术债务。选择 Merge 作为自然且易于识别的截止点。
其他方法包括:
-
使用更早的截止点,例如区块
14049881
。 -
识别更广泛的从未发生的极端情况行为。
这些方法因过于复杂而被拒绝。
向后兼容性
由于 EIP 不会更改测试套件之外发生的任何行为,因此它没有向后兼容性影响。
安全注意事项
此 EIP 的有效性取决于声明以太坊主网上的所有空帐户在合并之前已清除。这应经过适当的验证。
任何人为创建的带有空账户的网络都会给工具和客户端带来问题。
版权
在 CC0 下放弃版权和相关权利。
Citation
Please cite this document as:
Peter Davies (@petertdavies), "EIP-7523: 弃用空账户 [DRAFT]," Ethereum Improvement Proposals, no. 7523, September 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7523.