You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义tracer文件加入go-ethereum的eth/tracers实现按名称调用

你的猜想是正确的,需要把自定义tracer的代码纳入go-ethereum的内置资源打包逻辑,同时完成名称注册,具体操作步骤如下:

  • 第一步:放置自定义tracer文件
    将你编写完成的JS tracer代码保存为custom_tracer.js,放到eth/tracers/internal/tracers/目录下,和原生call_tracer.js等内置tracer文件同级。

  • 第二步:注册tracer名称映射
    打开eth/tracers/internal/tracers/tracers.go文件,找到内置tracer的名称映射表,该表内已经预设了callTracer、prestateTracer等原生tracer的对应关系,新增一条你的自定义tracer映射规则:

"customTracer": mustRead("custom_tracer.js"),

如果你只是修改了原生call_tracer.js的逻辑不需要新增名称,这一步可以跳过,编译后原有callTracer名称就会调用你修改后的逻辑。

  • 第三步:生成资源打包文件(仅旧版本需要)
    如果你使用的是v1.10.0之前的旧版本go-ethereum,项目依赖go-bindata工具打包静态资源,你需要在项目根目录执行以下命令重新生成assets.go,将你的JS代码纳入打包范围:
go generate ./eth/tracers/internal/tracers/...

v1.10.0及以上版本已经切换到go原生//go:embed机制,不需要手动执行生成命令,编译时会自动读取对应目录下的JS文件嵌入二进制。

  • 第四步:重新编译geth
    执行geth项目的编译命令生成新的二进制文件,启动新编译的节点后,就可以直接通过Tracer: "customTracer"的方式调用你的自定义tracer,用法和原生内置tracer完全一致。

内容的提问来源于stack exchange,提问作者user140120

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 08:45:00