EVM Gas 分析:新的执行跟踪数据

EthPandaOps 团队发布了 Xatu 数据集,其中包含完整的 EVM 执行跟踪数据,包括每个操作码的 gas 消耗、调用框架层次结构和预聚合分析。他们还构建了 Gas Profiler 和 Gas Repricing Simulator 两个工具,用于检查操作码级别的 gas 消耗,并模拟 gas 重新定价方案。

EVM Gas 分析:新的执行跟踪数据

以太坊交易会触发一系列 EVM 操作码,每个操作码根据协议的 gas 计划消耗 gas。如果你想大规模地理解这种执行过程,跨越所有交易和区块,你需要一个归档节点和大量的耐心。

我们已经为你完成了这项工作。Xatu 数据集 现在包括完整的 EVM 执行跟踪数据:每个操作码的 gas 消耗,调用帧层次结构,以及跨越 9 个新表的预聚合分析。数据从区块 24,120,000 开始,并持续更新到 HEAD

在此数据之上,我们在 The Lab 中构建了两个工具:

  • 一个 Gas 分析器,用于检查交易、区块和网络级别的操作码级 gas 消耗
  • 一个 Gas 重新定价模拟器,它使用修改后的 gas 计划重新执行区块,因此你可以测试 gas 重新定价提案的“假设”场景

查看 Gas 分析器 | 查看 Gas 重新定价模拟器

数据管道

原始数据来自 debug_traceTransaction structlogs:逐步的 EVM 执行跟踪,记录每个操作码、其 gas 成本、堆栈深度和错误状态。我们针对每个最终确定的交易运行此操作,并将结果聚合到 canonical_execution_transaction_structlog_agg 中,该表存储每个帧、每个操作码的摘要。

从那里,CBTCBT 通过几个层转换这些原始 structlog 数据:

canonical_execution_transaction_structlog_agg

int_transaction_call_frame

int_transaction_call_frame_opcode_gas

int_transaction_opcode_gas

int_block_opcode_gas

fct_opcode_gas_by_opcode

每日 / 每小时

fct_opcode_ops

每日 / 每小时

每一层都建立在前一层的基础上。中间表 (int_) 馈送到事实表 (fct_) 中,这些表为 The Lab 中的时间序列视图提供支持。所有这些都可以在 Xatu 数据集 中直接查询。

新表

完整的模式文档:源表 | CBT 表

描述
int_transaction_call_frame 每个交易的调用树结构。每一行是一个调用帧,包含自身 gas、累积 gas、固有 gas、退款、调用类型、目标地址和函数选择器。
int_transaction_call_frame_opcode_gas 每个帧的操作码分解。特定调用帧执行了哪些操作码,以及每个操作码消耗了多少 gas。
int_transaction_opcode_gas 交易级别的操作码聚合。一个交易中所有帧的操作码总数和 gas。
int_block_opcode_gas 区块级别的操作码聚合。每一行是一个操作码在单个区块内的使用情况:计数、gas 和错误计数。
fct_opcode_gas_by_opcode_daily 按操作码排序的每日 gas 消耗。包括每次执行的平均 gas、区块计数和错误率。
fct_opcode_gas_by_opcode_hourly 上述的每小时版本,用于更细粒度的分析。
fct_opcode_ops_daily 每日 EVM 吞吐量:ops/sec,带有 p5/p50/p95 百分位数、布林带和 7 天移动平均线。
fct_opcode_ops_hourly 每小时版本,带有 6 小时移动平均线。

数据可用性

EVM 执行跟踪数据从区块 24,120,000HEAD 可用。我们也在回填更早的区块。考虑到历史数据的量,这需要一段时间,但我们会随着覆盖范围的扩大而更新。

中间表和事实表会增量更新,因此新区块会在最终确定后不久显示。

The Lab: Gas 分析器

Gas 分析器 允许你在三个级别探索 gas 数据:网络区块交易

在网络级别,你可以跟踪每秒的操作码操作随时间的统计频带,查看按操作码类别分解的 gas 消耗。

深入到一个区块,查看每个交易的 gas 分解和操作码热图。更深入地进入一个交易,检查完整的调用树和操作码级别的 gas 分布,一直到嵌套的 DELEGATECALL 中的特定 SSTORE

Gas 分析器

查看 Gas 分析器 ↗

The Lab: Gas 重新定价模拟器

Gas 重新定价模拟器 使用修改后的 gas 计划重新执行区块,使用你的自定义成本运行实际的 EVM。选择一个区块(或最多 50 个的范围),覆盖操作码成本和动态 gas 参数(存储访问、调用成本、内存扩展、日志记录、哈希等)的任何组合,并查看发生了什么变化。

模拟器会告诉你哪些交易会使用更多或更少的 gas,哪些会超过区块 gas 限制,哪些会在成功和失败之间切换。它运行真正的 EVM 执行,因此检查 gasleft() 的合约可能会在修改后的成本下采用不同的代码路径。模拟器会将这些标记为不同的交易。

假设你想知道如果 SLOAD_COLD 从 2100 变为 3000 会发生什么。与其抽象地推理它,不如针对最近的区块运行它,看看哪些交易会中断。

Gas 重新定价模拟器

查看 Gas 重新定价模拟器 ↗

总结

所有 9 个表都已在 Xatu 数据集 中上线。Gas 分析器Gas 重新定价模拟器 都在 The Lab 中。

如果你对基于此数据构建的内容有任何问题或想法,请在 TwitterXatu Telegram 群组 中找到我们。

爱你们,

EthPandaOps 团队

  • 原文链接: ethpandaops.io/posts/evm...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
EthPandaOps
EthPandaOps
https://ethpandaops.io