ERC-6047: 通过转移事件进行 ERC-721 余额索引
强制在合约创建期间为 ERC-721 NFT 发出转移事件
Authors | Zainan Victor Zhou (@xinbenlv) |
---|---|
Created | 2022-11-26 |
Discussion Link | https://ethereum-magicians.org/t/eip-xxx-require-erc721-to-always-emit-transfer/11894 |
Requires | EIP-721 |
摘要
此 EIP 扩展了 ERC-721,通过强制在合约创建期间发出预先存在的事件,允许跟踪和索引 NFT。
ERC-721 要求每当发生转移或铸造(即从 0x0
转移)或销毁(即转移到 0x0
)时,除了合约创建期间,都必须发出一个 Transfer
事件。 此 EIP 强制符合规范的合约发出 Transfer
事件无论它是在合约创建期间还是之后发生。
动机
ERC-721 要求每当发生转移或铸造(即从 0x0
转移)或销毁(即转移到 0x0
)时,都必须发出一个 Transfer
事件,除了合约创建期间。 由于此例外,合约可以在合约创建期间铸造 NFT 而无需发出事件。 与 ERC-721 不同,ERC-1155 标准强制要求无论此类铸造是否发生在合约创建期间或之外都必须发出事件。 这允许索引服务或任何链下服务可靠地捕获和记录代币创建。
此 EIP 消除了 ERC-721 授予的此例外,并强制在合约创建期间为 ERC-721 发出 Transfer
事件。 通过这种方式,索引器和链下应用程序可以仅依赖于 ERC-721 的 Transfer
事件日志来跟踪代币的铸造、销毁和转移。
规范
本文档中的关键词“必须(MUST)”,“禁止(MUST NOT)”,“需要(REQUIRED)”,“应该(SHALL)”,“不应该(SHALL NOT)”,“推荐(SHOULD)”,“不推荐(SHOULD NOT)”,“可以(MAY)”,和“可选(OPTIONAL)”按照 RFC 2119 和 RFC 8174 中的描述进行解释。
- 符合规范的合约必须实现 ERC-721
- 符合规范的合约必须在代币被转移、铸造(即从
0x0
转移)或销毁(即转移到0x0
)时发出Transfer
事件,包括在合约创建期间。
合理依据
使用现有的 Transfer
事件而不是创建新事件(例如 Creation
)允许此 EIP 与现有索引器向后兼容。
向后兼容性
所有符合此 EIP 的合约都符合 ERC-721。 但是,并非所有符合 ERC-721 的合约都符合此 EIP。
安全考虑
没有新的安全问题。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Zainan Victor Zhou (@xinbenlv), "ERC-6047: 通过转移事件进行 ERC-721 余额索引 [DRAFT]," Ethereum Improvement Proposals, no. 6047, November 2022. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-6047.