Alert Source Discuss
🚧 Stagnant Standards Track: Core

EIP-7708: ETH 转账发送日志

所有 ETH 转账都发送日志

Authors Vitalik Buterin (@vbuterin), Peter Davies (@petertdavies)
Created 2024-05-17
Discussion Link https://ethereum-magicians.org/t/eip-7708-eth-transfers-emit-a-log/20034

摘要

所有 ETH 转账,包括交易、CALLSELFDESTRUCT,都会发送日志。

动机

日志通常用于跟踪以太坊上资产的余额变化。日志适用于 ERC-20 代币,但不适用于 ETH。来自 EOA 的 ETH 转账可以从区块的交易列表中读取,但来自智能合约钱包的 ETH 转账不会自动记录在任何地方。这过去已经导致了一些问题,例如,早期的交易所通常无法正确支持来自智能合约钱包的存款,或者只能以更长的延迟来支持它们。本 EIP 建议我们自动生成一个日志,每当发生价值转移的 CALLSELFDESTRUCT 时。我们还为交易中的转账添加了一个类似的日志,以便可以使用一种机制跟踪所有 ETH 转账。

规范

参数

  • MAGIC: TBD

功能

每当发生 (i) 非零值的 CALL,(ii) 非零值转移的 SELFDESTRUCT,或 (iii) 非零值转移的交易时,发出一个日志,与 LOG3 相同,具有三个主题:(i) MAGIC, (ii) 发送者地址, (iii) 接收者地址。日志数据是转移值的 big-endian 32 字节编码。

价值转移交易的 LOG 应该放在 EVM 执行创建的任何日志之前。另外两个 LOG 放置在价值转移执行时。

理由

这是最简单的实现,可确保所有 ETH 转账都以某种记录实现,该记录可以通过向节点进行 RPC 调用或通过请求哈希到区块根中的 Merkle 分支轻松访问。日志类型与 ERC-20 代币标准兼容,但没有在规范中引入任何过于具体的 ERC-20 特性(例如 ABI 编码)。

未决问题

  1. 提款是否也应该触发日志?如果是这样,应该如何指定发送者地址?
  2. 费用支付是否应该触发日志?它将确保“完整性”,从某种意义上说,您可以通过查看日志来计算确切的当前余额表,但它会大大增加日志的数量,可能达到无法接受的高数量。

向后兼容性

未发现向后兼容性问题。

测试用例

TODO

安全考虑

ETH 转账已经花费至少 6700 gas,这比 LOG3 操作码(1500 gas)贵得多。因此,本 EIP 不会增加可以放入区块中的最坏情况日志数量。它将在某种程度上增加平均日志数。

版权

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

Citation

Please cite this document as:

Vitalik Buterin (@vbuterin), Peter Davies (@petertdavies), "EIP-7708: ETH 转账发送日志 [DRAFT]," Ethereum Improvement Proposals, no. 7708, May 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7708.