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 转账,包括交易、CALL
和 SELFDESTRUCT
,都会发送日志。
动机
日志通常用于跟踪以太坊上资产的余额变化。日志适用于 ERC-20 代币,但不适用于 ETH。来自 EOA 的 ETH 转账可以从区块的交易列表中读取,但来自智能合约钱包的 ETH 转账不会自动记录在任何地方。这过去已经导致了一些问题,例如,早期的交易所通常无法正确支持来自智能合约钱包的存款,或者只能以更长的延迟来支持它们。本 EIP 建议我们自动生成一个日志,每当发生价值转移的 CALL
或 SELFDESTRUCT
时。我们还为交易中的转账添加了一个类似的日志,以便可以使用一种机制跟踪所有 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 编码)。
未决问题
- 提款是否也应该触发日志?如果是这样,应该如何指定发送者地址?
- 费用支付是否应该触发日志?它将确保“完整性”,从某种意义上说,您可以通过查看日志来计算确切的当前余额表,但它会大大增加日志的数量,可能达到无法接受的高数量。
向后兼容性
未发现向后兼容性问题。
测试用例
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.