输入/搜索内容
内置函数
结构体
内置变量与常量
通用约定
交易所
能力矩阵
中心化交易所
去中心化交易所
预测市场
证券与期货
链上与自定义接入

列出代币的全部LP池子(Uniswap、PancakeSwap为V3与V4/Infinity CL池子,Aerodrome、Velodrome为Slipstream与基础池子),包括费率、现价、流动性、TVL与24小时成交额,按TVL从高到低排列。

exchange.IO(k, token)
exchange.IO(k, token, quote)

示例

  • 列出ETH/USDC的池子,查看TVL与成交额最大的几个。

    javascript
    function main() { var pools = exchange.IO("lp.pools", "ETH", "USDC") if (!pools) { Log("查询失败:", GetLastError()) return } pools.slice(0, 5).forEach(function (p) { Log(p.protocol, p.id, "费率:", p.feeRate, "TVL:", p.tvlUsd, "24h成交:", p.volume24hUsd) }) }
  • Uniswap:列出代币的V4池子(包括常用组合以外、自定义费率的池子),再按PoolId查询其中第一个。

    javascript
    function main() { var v4 = exchange.IO("lp.pools", "UNI").filter(function (p) { return p.protocol == "v4" && !p.empty }) v4.forEach(function (p) { Log(p.symbol, "费率:", p.fee / 10000 + "%", "tick间距:", p.tickSpacing, "TVL:", p.tvlUsd) }) if (v4.length > 0) { var pool = exchange.IO("lp.pool", v4[0].id) Log(v4[0].id, pool ? "费率: " + pool.fee : GetLastError()) } }
  • Aerodrome、Velodrome:在gauge仍在发放奖励的池子中,按奖励年化收益率筛选。

    javascript
    function main() { var pools = exchange.IO("lp.pools", "ETH", "USDC").filter(function (p) { return p.gaugeAlive && p.rewardAprPct !== null }) pools.sort(function (a, b) { return b.rewardAprPct - a.rewardAprPct }) pools.slice(0, 3).forEach(function (p) { Log(p.protocol, p.id, "tick间距:", p.tickSpacing, "奖励年化%:", p.rewardAprPct, "质押占比:", p.stakedShare) }) }

返回值

类型描述

array / 空值

池子数组[{id, protocol, dex, symbol, fee, feeRate, tickSpacing, tick, price, liquidity, reserveBase, reserveQuote, tvlQuote, tvlUsd, volume24hUsd, fees24hUsd, empty}],字段说明见备注。代币无法识别或节点出错时返回空值,可通过GetLastError()查看原因。

参数

名称类型必填描述

k

string

是

固定为lp.pools,表示列出池子。

token

string

是

代币名称或合约地址,例如ETH、WETH、UNI。池子的symbol按此处的写法显示。

quote

string

否

计价币,例如USDC;指定后只列出该交易对的池子。不传时,列出该代币与本链包装币、USDC、USDT组成的池子。

参考

备注

返回数组中每一项的字段:

字段说明
id池子ID:V3、Slipstream与基础池子为池子合约地址,V4/Infinity CL为PoolId(0x加64位十六进制);可作为lp.pool、lp.ticks和lp.plan的pool参数传入
protocol池子类型:v3、v4(Uniswap V4)、infinity(PancakeSwap Infinity CL);Aerodrome、Velodrome为slipstream、slipstream2(分别对应旧、新工厂)以及基础池子volatile、stable
dex、symbol交易所名称、池子的交易对(如WETH_USDC)
fee、feeRate手续费率:fee以百万分之一为单位(500即0.05%),feeRate为小数形式(0.0005);Slipstream池子的费率可能是动态的,此处为当前值
tickSpacing、ticktick间距与当前tick;基础池子没有tick,值为null
price现价,以计价币/代币表示
liquidity现价处的流动性(十进制字符串)
reserveBase、reserveQuote池子中两种代币的余额;V4/Infinity CL为单例合约,值为null
tvlQuote、tvlUsd按计价币、美元折算的TVL(V4/Infinity CL的数据取自GeckoTerminal)
volume24hUsd、fees24hUsd24小时成交额与手续费收入(美元),取自GeckoTerminal,获取不到时为null
emptytrue表示现价处没有流动性,现价无参考意义:price、tvlQuote、tvlUsd为null,此类池子排在最后

Aerodrome、Velodrome的每一项还额外包含stable(基础池子是否为stable曲线,Slipstream为null)以及gauge信息:gauge(gauge地址)、gaugeAlive(gauge是否仍在发放奖励)、stakedShare(现价处质押在gauge中的流动性占比)、rewardsPerDay、rewardsPerDayUsd(每日发放的奖励币数量及其美元价值)、rewardAprPct(按质押部分TVL折算的奖励年化收益率,单位%)。奖励年化按当前每秒奖励外推,会随奖励币价格和质押量变化,是一个瞬时值:Slipstream池子的stakedShare是现价所在tick上已质押流动性占该处总流动性的比例,价格一变动、仓位进出区间,该值就会跳变,rewardAprPct在几分钟内可能相差数倍。用它选池或估算收益时,应间隔一段时间多次获取并取平均值。

Uniswap、PancakeSwap的V4/Infinity CL池子只列出不带hook的池子,二者都没有固定的费率档位。

Uniswap V4:原生币池子与包装币池子分别列出(如ETH_USDC与WETH_USDC)。列出的池子包括常用费率/tick间距组合(0.01%/1、0.02%/4、0.03%/6、0.04%/8、0.05%/10、0.3%/60、1%/200)上的池子,以及自定义费率与间距的池子:从GeckoTerminal上该代币的池子列表(按成交额与流动性排序的前40个)中获取Uniswap V4池子的PoolId,再通过PositionManager的poolKeys在链上反查PoolKey并核对PoolId,只保留不带hook的池子(如Robinhood上CASHCAT/USDG 0.269%、间距54的池子)。手续费不设上限,2%这类高费率池子也会列出。当代币与计价币都是中转币(包装币以及USDC、USDT等稳定币,如lp.pools("ETH", "USDC"))时,只列出常用组合;查询结果缓存1小时;GeckoTerminal暂时不可用(如被限流)时只列出常用组合,5分钟后重试。该清单仍可能遗漏池子:GeckoTerminal未收录或未进入前40名的池子,以及在PositionManager上从未创建过仓位(poolKeys查不到PoolKey)的池子,都不会列出。清单之外的不带hook的池子,可以直接将PoolId传给lp.pool、lp.plan(pool参数),前提同样是能在PositionManager上查到其PoolKey。

PancakeSwap Infinity CL:只列出手续费不超过1%的池子;列出的是兑换选路时从近期链上成交中收集到的池子,以及本进程使用过的池子。其他池子可以直接将PoolId传给lp.pool、lp.plan。

GeckoTerminal的数据在进程内缓存5分钟,由lp.select、lp.plan共用;遇到限频时会等待片刻后重试一次,仍然失败则相应字段为null。

KyberSwap、1inch交易所对象(聚合器)不支持LP指令,调用时会报错LP functions are not available for KyberSwap on Base。