使用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
建议直接传入合约地址字符串,而非依赖符号自动解析。
- WMATIC合约地址:
强制设置链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
相关产品推荐
相关产品推荐

