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

询价:列出一笔兑换在各条候选路径上的报价及最优路径,不下单。

exchange.IO(k, symbol, side, qty)

示例

比较卖出1个ETH时各条路径的报价。

javascript
function main() { var r = exchange.IO("route", "ETH_USDC", "sell", 1) if (!r) { Log("询价出错:", GetLastError()) return } if (r.best === null) { Log("没有可用的池子") return } Log("最优路径:", r.best, "可得:", r.quote, "USDC") r.candidates.forEach(function (c) { Log(c.route, c.quote) }) }

返回值

类型描述

object / 空值

返回{symbol, side, qty, best, quote, price, candidates},包含最优路径、最优报价、平均价格及各候选路径的报价,字段说明见备注。出错时返回空值,原因可通过GetLastError()获取。

参数

名称类型必填描述

k

string

是

固定为route,表示询价。

symbol

string

是

交易对,例如ETH_USDC。

side

string

是

交易方向:sell表示卖出qty个基础币,buy表示买入qty个基础币。

qty

number

是

基础币数量。

参考

备注

候选路径包括本交易所的直连池子,以及经包装币或USDC/USDT中转的两跳路径。池子范围因交易所而异:Uniswap为V3各费率档、V2及不带hook的V4池子(常用费率组合的池子,加上从GeckoTerminal查到的自定义费率池子,见Uniswap / PancakeSwap页;V4经原生币或USDC/USDT中转),PancakeSwap为V3、V2及Infinity CL池子,Aerodrome、Velodrome为两代Slipstream池子及基础池子。路径写法示例:v3:WETH-500-USDC(V3,费率500即0.05%)、v2:WETH-USDC、v3:UNI-3000-USDT-100-USDC(两跳)、v4:ETH-500/10-USDC(Uniswap V4,费率500、tick间距10,ETH为原生币)、infinity:BNB-67/1-USDT(PancakeSwap Infinity CL)、cl:WETH-100-USDC(Aerodrome、Velodrome的第一代Slipstream,数字为tick间距)、cl2:WETH-500-USDC(第二代Slipstream)、volatile:AERO-USDC、stable:USDC-USDbC(基础池子)。

V3路径通过链上QuoterV2询价(完整模拟整笔兑换),V2根据池子储备在本地计算;报价均不含gas费用。

返回对象的字段:best为最优路径;quote为最优报价(卖出时为可得到的计价币数量,买入时为需花费的计价币数量);price为对应的平均价格;candidates为各候选路径的{route, quote}列表(无法报价的路径,其quote为null)。没有可用池子时仍返回对象:best、quote、price均为null,candidates为空数组(有池子但均无法报价时,candidates各项的quote为null)。若交易对中的代币无法识别、节点所在链与配置不一致等导致出错,则返回空值,原因可通过GetLastError()获取。

KyberSwap、1inch交易所对象(聚合器)只有一条候选路径,即聚合器给出的报价,路径写作kyberswap:ETH-USDC、1inch:ETH-USDC(买入时为kyberswap:USDC-ETH,先写付出的币);buy按买到qty个基础币询价,通过多次精确输入询价近似得出。PancakeSwap无法查询Infinity CL池子的链上成交记录(节点不支持eth_getLogs)时,结果中会附带warning说明原因。Uniswap暂时无法从GeckoTerminal查到常用组合以外的V4池子(如被限流)时,结果同样附带warning;在此期间仅使用常用组合的V4池子,5分钟后重新查询。