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

在Optimism网络使用Python调用Web3时遭遇ExtraDataLength错误求助

问题解决:extraData长度不匹配(POA链适配问题)

问题根源

你已经手动给自己创建的w3实例注入了POA中间件,但Uniswap库内部会用你传入的provider字符串重新生成一个未配置中间件的Web3实例,导致中间件没实际生效,所以依然触发extraData长度错误。

解决方案

不要给Uniswap传provider字符串,而是直接传入你已经配置好中间件的w3实例,用web3参数替代provider参数。

修改后的完整代码

from uniswap import Uniswap
import web3
from web3.middleware import geth_poa_middleware

TOKEN_ID = 240756

# 创建并配置好POA中间件的Web3实例
w3 = web3.Web3(web3.HTTPProvider('https://optimism-mainnet.infura.io/v3/{MY_ID}'))
w3.middleware_onion.inject(geth_poa_middleware, layer=0)

address = ""       
private_key = ""  
version = 3                       

# 初始化Uniswap时传入已配置好的w3实例,而非provider字符串
uniswap = Uniswap(address=address, private_key=private_key, version=version, web3=w3)

tx = uniswap.close_position(TOKEN_ID)
print(tx)

关键说明

  • 确保所有和链交互的Web3实例都应用了POA中间件,这里直接复用同一个实例给Uniswap库,避免重复创建导致的配置不一致
  • Optimism属于POA类链,必须注入该中间件才能正常处理区块头的extraData字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:15:28