Alert Source Discuss
Standards Track: ERC

ERC-7528: ETH (原生资产) 地址约定

在与 ERC-20 代币相同的上下文中使用时,ETH 的地址占位符。

Authors Joey Santoro (@joeysantoro)
Created 2023-10-03
Requires EIP-20, EIP-55, EIP-4626

摘要

以下标准提出了一项约定,即在所有使用地址来表示 ETH 且其作用与 ERC-20 代币相同的上下文中,使用地址 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee。这适用于地址字段表示 ETH 或 ERC-20 代币的事件,以及诸如 ERC-4626 vault 的 asset 字段之类的鉴别器。

该标准推广到原生资产不是 ETH 的其他 EVM 链。

动机

ETH 作为一种可互换的价值单位,其行为通常与 ERC-20 代币类似。协议倾向于为 ERC-20 代币实现一个标准接口,并且从 ETH 实现与 ERC-20 实现紧密镜像中受益。

在许多情况下,协议选择使用 Wrapped ETH(例如,在以太坊主网上部署在地址 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2 上的 WETH9)以符合 ERC-20。在其他情况下,协议将使用原生 ETH,因为要考虑 gas 成本,或者需要使用原生 ETH,例如在 Liquid Staking Token (LST) 的情况下。

此外,协议可能会创建单独的事件来处理 ETH 原生情况和 ERC-20 情况。这会为链下基础设施创建数据碎片和集成开销。通过对 ETH 地址有一个强约定,以便在其行为类似于 ERC-20 代币的情况下使用,因此使用一种单一的事件格式来处理这两种情况变得更有益。

该标准的一个预期用例是符合 ERC-4626 的 LST,它使用 ETH 作为 asset。这会将 ERC-4626 的优势和工具扩展到 LST 和集成协议。

该标准允许协议和链下数据基础设施围绕一个共同的理解进行协调,即任何时候将 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 用作 ERC-20 上下文中的地址时,它都表示 ETH。

规范

该标准适用于智能合约系统的所有组件,其中使用地址来标识 ERC-20 代币,并且在某些情况下使用原生 ETH 代替 ERC-20 代币。在本文中,术语 Token 指的是 ETH 或 ERC-20

任何使用 ERC-20 地址的字段或事件,但底层 Token 是 ETH,则地址字段必须返回 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

任何 Token 是非内置的封装 ERC-20 版本的 ETH(即 WETH9)的字段或事件必须使用该 Token 的地址,并且不得使用 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

在适当的情况下,应对地址进行校验和。例如,EIP-55 校验和是 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE

理由

考虑的其他地址

与此标准相同的用例的许多现有实现都使用诸如 0x0、0x1 和 0xe 之类的地址,以提高前导零字节的 gas 效率。

最终,所有这些地址都与潜在的预编译地址冲突,并且作为 ETH 的标识符也不够独特。

0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee 具有当前最多的使用量,非常独特,并且不会与任何预编译冲突。这些优势超过了其他替代方案的潜在 gas 优势。

向后兼容性

此标准与其他标准没有已知的兼容性问题。

安全考虑

使用 ETH 作为 Token 而不是 WETH 会使智能合约系统面临重入和类似类型的漏洞。当 Token 是 ETH 时,实施者必须注意遵循行业标准的开发模式(例如,检查-效果-交互)。

版权

CC0 下放弃版权及相关权利。

Citation

Please cite this document as:

Joey Santoro (@joeysantoro), "ERC-7528: ETH (原生资产) 地址约定," Ethereum Improvement Proposals, no. 7528, October 2023. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7528.