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

如何在Uniswap V3中获取ETH相关交易池?调用getPool返回0x0

解决Uniswap获取含ETH交易池的问题

你调用getPool()传入原生ETH的零地址返回0x0是正常的,因为Uniswap的交易池仅支持ERC20代币对,原生ETH(地址0x0000000000000000000000000000000000000000)并不是ERC20标准的代币,所以不存在直接以原生ETH为一方的交易池。

正确的做法是使用**WETH(Wrapped ETH)**的合约地址来替代原生ETH的零地址,WETH是将原生ETH封装成ERC20标准的代币,所有Uniswap上与ETH相关的交易池都是基于WETH创建的。

具体操作步骤

  • 替换参数为对应链上的WETH合约地址,比如以太坊主网的WETH地址是0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2。调用getPool()时传入WETH地址、目标代币地址(比如USDC的0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48)以及对应的手续费层级(比如0.05%、0.3%、1%,对应数值500、3000、10000),就能获取到对应的交易池地址。
  • 如果你需要批量获取所有包含WETH的交易池,getPool()只能查询特定代币对,无法直接批量获取。此时可以通过监听Uniswap工厂合约的PoolCreated事件,遍历所有事件日志,筛选出其中一方代币为WETH的记录,以此收集所有相关交易池地址。

补充说明

Uniswap V2和V3都遵循这个逻辑——原生ETH不直接参与交易池创建,必须通过WETH封装后才能和其他ERC20代币组成交易对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 12:11:00