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

使用uniswap-python执行Uniswap Swap交易失败求助

解决Uniswap-Python在Polygon主网的ExtraDataLengthError问题

以下是针对该报错的具体解决思路:

  • 手动注入POA中间件并传入配置好的Web3实例
    直接传provider给Uniswap时,底层自动创建的Web3实例可能未正确加载POA中间件。手动创建Web3实例并注入中间件后再传入Uniswap:

    from uniswap import Uniswap
    from web3 import Web3
    from web3.middleware import geth_poa_middleware
    
    provider = "https://polygon-mainnet.infura.io/v3/"+INFURA_API_KEY
    # 初始化Web3并注入POA中间件
    w3 = Web3(Web3.HTTPProvider(provider))
    w3.middleware_onion.inject(geth_poa_middleware, layer=0)
    # 用配置好的Web3实例初始化Uniswap
    uniswap = Uniswap(address, private_key, version=3, web3=w3)
    result = uniswap.make_trade(USDT, WMATIC, 10)
    
  • 确认Polygon主网代币合约地址正确性
    确保使用的是Polygon主网的官方代币地址,避免符号解析错误:

    • WMATIC合约地址:0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270
    • USDT合约地址:0xc2132D05D31c914a87C6611C10748AEb04B58e8F
      建议直接传入合约地址字符串,而非依赖符号自动解析。
  • 强制设置链ID
    手动指定Polygon主网链ID,避免自动检测异常:

    w3.eth.chain_id = 137
    
  • 升级依赖包版本
    旧版本web3.py和uniswap-python可能存在POA链兼容bug,升级到最新稳定版:

    pip install --upgrade web3 uniswap-python
    
  • 切换节点提供商测试
    若Infura节点存在配置限制,换用Alchemy等其他Polygon节点测试,排除节点本身问题:

    provider = "https://polygon-mainnet.g.alchemy.com/v2/你的AlchemyAPIKey"
    

内容的提问来源于stack exchange,提问作者The Dare Guy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:50:43