Alert Source Discuss
⚠️ Draft Standards Track: Core

EIP-7889: 回滚时发出日志

顶级回滚会发出带有回滚消息的日志

Authors Shoham Chakraborty (@shohamc1), Alex Forshtat (@forshtat)
Created 2025-02-20
Discussion Link https://ethereum-magicians.org/t/eip-7889-emit-log-on-revert/22918

摘要

所有对具有非零大小的 REVERT 操作码的调用都必须发出带有回滚数据的日志,从而可以通过标准 RPC 访问,而无需跟踪。

动机

目前,用户无法访问回滚消息,因为它们无法通过标准 RPC 获得。相反,用户必须请求节点跟踪事务,并在执行 REVERT 操作码时检查堆栈和内存。

这给用户和节点带来了开销 - 用户必须发出额外的请求才能找出其事务失败的原因,并且节点必须重放整个事务(这可能很慢并且在计算上很昂贵)才能取回相对较小的数据。

目前,智能钱包开发人员可以在回滚之前发出日志,但这并不是一个标准功能,因此诸如客户端库和区块浏览器之类的工具无法信赖它。使此日志成为协议的一部分,可以使这些工具依靠日志来获取回滚原因。

规范

参数

  • REVERTTOPIC: TBD
  • DATA_LIMIT: TBD

功能

每当以非零大小调用 REVERT 时,发出一个与主题为 REVERTTOPICLOG1 相同的日志。日志数据是回滚消息的原始字节。数据被截断为 DATA_LIMIT

理由

这是最简单的实现,允许通过 RPC 方法访问回滚消息。它不需要对客户端库或其他 RPC 使用者进行任何更改,因为它向后兼容。它不会引入新的 RPC 方法或新的操作码。

向后兼容性

已回滚的交易现在最多可以包含一个日志。

安全注意事项

已回滚的交易必须至少花费内在 gas(21000 gas),这比 LOG1 操作码(750 gas)昂贵得多。因此,此 EIP 不会引入任何新的途径来增加以太坊存储需求。但是,预计它会增加日志的平均数量。

版权

版权及相关权利通过 CC0 放弃。

Citation

Please cite this document as:

Shoham Chakraborty (@shohamc1), Alex Forshtat (@forshtat), "EIP-7889: 回滚时发出日志 [DRAFT]," Ethereum Improvement Proposals, no. 7889, February 2025. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7889.