You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Anvil(Foundry)主网分叉执行交易时遭遇EvmError: NotActivated错误求助

Anvil(Foundry)主网分叉执行交易时遭遇EvmError: NotActivated错误求助

各位大佬好,我现在遇到一个Anvil本地分叉的问题,想请教下解决方案:

我正在用Anvil(Foundry的组件)创建以太坊主网的本地分叉,然后用cast工具在这个分叉上执行自定义交易,但每次运行都会触发EvmError: NotActivated错误,具体的调用栈如下:

EvmError: NotActivated

│   ├─ [39] 0x73580081dA937844d57811b69A30378c1606EcF4::balanceOf(0xc40d6F37351622004e48FB8721919DC334ddD946) [staticcall]

│   │   └─ ← "EvmError: NotActivated"

│   └─ ← "EvmError: Revert"

└─ ← ()

我的环境信息:

  • Anvil版本:anvil 0.1.0 (0e72b71 2023-07-19T00:37:38.599511000Z)
  • 启动分叉的命令参数:--hardfork shanghai
  • 执行交易工具:cast(连接本地分叉节点)

可能的解决方向(来自社区经验):

  • 检查合约依赖的EVM特性
    你调用的这个合约0x73580081dA937844d57811b69A30378c1606EcF4很可能用到了shanghai硬分叉还没激活的EVM特性(比如Cancun版本新增的PUSH0指令)。你可以试试把启动Anvil的硬分叉参数改成--hardfork cancun,再重新运行交易看看。

  • 升级Anvil到最新版本
    你的Anvil版本是2023年7月的0.1.0,属于比较早期的版本,Foundry团队后续修复了不少硬分叉相关的兼容性bug。直接在终端执行foundryup命令就能一键升级到最新版,升级完成后重启分叉节点再测试。

  • 验证硬分叉参数是否正确生效
    有时候可能会出现参数没正确加载的情况,你可以在Anvil启动后,用下面的命令检查当前节点的硬分叉配置:

cast rpc eth_getBlockByNumber "latest" false

查看返回结果里的hardfork字段,确认是不是你指定的shanghai。如果不是,检查启动命令有没有写错,或者有没有其他配置覆盖了参数。

  • 确认cast连接的是正确的本地节点
    执行交易的时候,一定要给cast加上--rpc-url http://localhost:8545参数(Anvil默认端口是8545),避免不小心连接到主网或者其他测试网,导致环境不匹配。

备注:内容来源于stack exchange,提问作者German.Kuber

火山引擎 最新活动