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

获取当前链(或指定链)的常用合约地址,包括主流代币、Multicall3、Permit2,以及Uniswap V3、PancakeSwap V3的Factory、路由、QuoterV2和头寸管理合约。

exchange.IO(k)
exchange.IO(k, chainId)

示例

查看当前链的常用合约地址,并使用QuoterV2进行询价。

javascript
function main() { // 获取当前链的常用合约地址表 var C = exchange.IO("contracts") Log(C.name, "chainId:", C.chainId, "包装币:", C.wrappedNative) for (var sym in C.tokens) { Log(sym, C.tokens[sym].address, "decimals:", C.tokens[sym].decimals) } Log("Uniswap V3:", JSON.stringify(C.uniswapV3)) // 使用地址表中的地址和内置 ABI 模板进行询价 var quoter = C.uniswapV3.quoterV2 exchange.IO("abi", quoter, "uniswapV3QuoterV2") var q = exchange.IO("call", quoter, "quoteExactInputSingle", [C.tokens.WETH.address, C.tokens.USDC.address, exchange.IO("toUnits", "1", 18), 500, 0]) Log("1 WETH ≈", exchange.IO("fromUnits", q.amountOut, 6), "USDC") // 查看其他链的地址表 Log("BSC PancakeSwap V3:", JSON.stringify(exchange.IO("contracts", 56).pancakeV3)) }

返回值

类型描述

object

返回{chainId, name, wrappedNative, tokens, multicall3, permit2, uniswapV3, pancakeV3}:name为链名称;wrappedNative为包装币在tokens中的名称(如WETH、WBNB);tokens的每一项为{address, decimals};uniswapV3、pancakeV3包含factory、router(Uniswap为SwapRouter02,PancakeSwap为SmartRouter)、quoterV2、positionManager。不支持的链返回空值并报错。

参数

名称类型必填描述

k

string

是

固定为contracts,用于获取常用合约地址。

chainId

number

否

链ID,未传入时默认使用当前节点所在的链。目前支持的链:以太坊(1)、BNB Smart Chain(56)、Base(8453)、Arbitrum One(42161)。

参考

备注

地址表中的每个地址均已在链上核验:合约代码存在;代币的symbol、decimals与链上查询结果一致;路由、询价、头寸管理合约中记录的factory均指向同一个Factory合约,并且能够查询到包装币/USDC的流动性池。

配合exchange.IO("abi", ...)的内置模板使用,无需手动编写ABI即可直接调用这些合约。

目前仅支持以太坊(EVM)链,在波场(TRON)上调用返回空值,GetLastError()中有错误信息。