运行forge script触发-32003资金不足错误的求助
问题分析与解决方案
你遇到的核心问题是Legacy交易参数与EIP1559参数混用,导致节点计算交易总费用时出现异常,进而触发"Insufficient funds"错误,尽管账户实际余额充足。
可能的原因
- 参数冲突:你同时使用了
--legacy(Legacy交易模式)和--priority-gas-price(EIP1559专属参数)。Legacy交易仅支持gasPrice,不识别priority-gas-price,混合使用会让节点在计算总费用时产生错误。 - 跳过模拟掩盖参数问题:
--skip-simulation跳过了预执行校验,模拟阶段正常是因为未应用冲突的广播参数,而广播时参数错误直接触发节点报错。
解决步骤
方案1:使用Legacy交易模式(移除EIP1559参数)
删除--priority-gas-price,仅保留--legacy和--with-gas-price,命令调整为:
forge script V2Test.s.sol --sig 'run(bytes memory)' $input --sender $SENDER --rpc-url http://127.0.0.1:1234 --broadcast --unlocked --legacy --with-gas-price 35243602672 --json -vvv
方案2:使用EIP1559交易模式(移除Legacy参数)
删除--legacy和--with-gas-price,改用EIP1559标准的--max-fee-per-gas和--max-priority-fee-per-gas,命令调整为:
forge script V2Test.s.sol --sig 'run(bytes memory)' $input --sender $SENDER --rpc-url http://127.0.0.1:1234 --broadcast --unlocked --max-fee-per-gas 35243602672 --max-priority-fee-per-gas 1099305329 --json -vvv
额外建议
- 移除
--skip-simulation:模拟阶段能提前发现参数冲突或gas估算问题,避免白跑广播流程。 - 手动指定gas限制:如果自动估算的gasLimit不准确,可添加
--gas-limit <数值>(比如--gas-limit 3000000),确保节点计算总费用时使用正确的gas值。 - 再次确认余额:执行以下命令确保查询的是分叉节点的账户余额,而非主网:
cast balance 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266 --rpc-url http://127.0.0.1:1234
内容的提问来源于stack exchange,提问作者zen
相关产品推荐
相关产品推荐

