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

以太坊链授权Uniswap Router花费WETH时遇「Method not found」错误求助

问题解决:以太坊链上授权交易报Method not found错误

核心原因分析

错误码-32601表示JSON-RPC方法未找到,大概率是节点配置错误或EIP-1559交易参数不完整导致的——BSC链对交易参数兼容性更宽松,而以太坊主网要求严格遵循EIP-1559规范,同时必须连接以太坊专属RPC节点。

具体修复步骤

1. 确认RPC节点为以太坊主网节点

检查PROVIDER变量,必须使用以太坊主网的RPC地址,比如公开节点https://ethereum.publicnode.com/,或第三方服务商(Alchemy/Infura)提供的带API密钥的节点地址。若继续使用BSC节点地址,会因链不匹配导致方法调用失败。

2. 补充EIP-1559必填交易参数

以太坊主网要求EIP-1559交易必须同时设置maxFeePerGas和maxPriorityFeePerGas,当前代码仅设置了前者。同时建议自动估算gas用量,避免硬编码不足:

UNISWAP_ROUTER = "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D"
WETH = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"

web3 = Web3(HTTPProvider(PROVIDER))
token = web3.eth.contract(address=WETH, abi=abi)

nonce = web3.eth.get_transaction_count(WALLET_ADDRESS)
amount = web3.to_wei(0.01, 'ether')
block = web3.eth.get_block('latest')
next_gas_price = math.ceil(block.baseFeePerGas)
# 新增优先级矿工费,通常设置为2-5 gwei
max_priority_fee = web3.to_wei(2, 'gwei')

# 自动估算gas用量,预留10%余量避免gas不足
gas_estimate = token.functions.approve(UNISWAP_ROUTER, amount).estimate_gas({
    "from": WALLET_ADDRESS
})

x = token.functions.approve(UNISWAP_ROUTER, amount).build_transaction({
    "from": WALLET_ADDRESS,
    "maxFeePerGas": next_gas_price,
    "maxPriorityFeePerGas": max_priority_fee,
    "gas": int(gas_estimate * 1.1),
    "nonce": nonce
})

3. 验证web3版本兼容性

确保使用web3.py v5.x及以上版本,旧版本对EIP-1559支持不完善。可通过以下命令升级:

pip install --upgrade web3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 12:27:27