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

web3.py连Ganache部署合约报eth_maxPriorityFeePerGas不支持错误

错误原因
  • 核心触发逻辑是你使用的web3.py版本默认启用EIP-1559动态手续费交易模式,只要没有显式指定交易类型为传统Legacy模式,就算手动传入gasPrice参数,库仍会优先尝试调用eth_maxPriorityFeePerGas、eth_feeHistory两个RPC接口计算优先费与基础费;你本地运行的Ganache节点版本较旧、或未开启伦敦升级兼容,没有实现这两个RPC方法,因此先弹出方法调用异常的警告,后续直接抛出参数不支持的报错。
  • 部分场景下参数未生效是因为字段拼写错误:EIP-1559模式下gas相关参数字段为maxFeePerGas、maxPriorityFeePerGas,传统Legacy交易的gas字段才是gasPrice,字段不匹配时传入的gas配置会被直接忽略。
修复方案
  • 方案1:显式指定使用传统Legacy交易,彻底绕开EIP-1559逻辑,适配旧版本本地区块链节点
    构建交易时新增type字段指定交易类型,参考代码如下:
    # 合约部署交易构建示例
    deploy_tx = SimpleStorage.constructor().build_transaction(
        {
            "chainId": w3.eth.chain_id,
            "from": your_deploy_address,
            "nonce": w3.eth.get_transaction_count(your_deploy_address),
            "gas": 6721975, # 可根据合约实际大小调整gas上限
            "gasPrice": w3.eth.gas_price,
            "type": "0x0" # 关键配置:强制指定为传统Legacy交易类型,不触发EIP-1559相关RPC调用
        }
    )
    
  • 方案2:升级本地Ganache到最新正式版本,新版Ganache默认兼容伦敦升级与EIP-1559规则,支持上述两个RPC方法,可直接使用动态费模式构建交易,参考代码如下:
    # 新版Ganache下EIP-1559交易构建示例
    deploy_tx = SimpleStorage.constructor().build_transaction(
        {
            "chainId": w3.eth.chain_id,
            "from": your_deploy_address,
            "nonce": w3.eth.get_transaction_count(your_deploy_address),
            "gas": 6721975,
            "maxFeePerGas": w3.eth.gas_price * 2,
            "maxPriorityFeePerGas": w3.to_wei(2, "gwei")
        }
    )
    
  • 避坑提示:web3.py v6及以上版本中,旧版buildTransaction方法已更名为build_transaction,方法名不匹配也可能导致参数传入失效,编写代码时注意和本地安装的web3.py版本API对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:39:16