Alert Source Discuss
📢 Last Call Standards Track: Core

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 中的定义相同。

在进行合并转换的网络上,合并区块的先前状态不得包含任何空账户。对于在创世之初就合并的网络,任何创世账户都不能是空账户。

客户端可以假设以下链在合并后没有空帐户,而不是执行状态扫描:

  1. 合并区块哈希值为 0x56a9bb0302da44b8c0b3df540781424684c3af04d0b7a38d72842b762076a664 的主网链。

  2. 满足以下所有条件的任何链:

    • 创世之初没有空账户。

    • 在创世之初进行了 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.