exchange.IO("contracts", ...)
获取当前链(或指定链)的常用合约地址,包括主流代币、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 | 返回 |
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
chainId | number | 否 | 链ID,未传入时默认使用当前节点所在的链。目前支持的链:以太坊(1)、BNB Smart Chain(56)、Base(8453)、Arbitrum One(42161)。 |
参考
Web3 exchange.IO exchange.IO("api") exchange.IO("multicall") exchange.IO("uniswapV3") exchange.IO("abi")
备注
地址表中的每个地址均已在链上核验:合约代码存在;代币的symbol、decimals与链上查询结果一致;路由、询价、头寸管理合约中记录的factory均指向同一个Factory合约,并且能够查询到包装币/USDC的流动性池。
配合exchange.IO("abi", ...)的内置模板使用,无需手动编写ABI即可直接调用这些合约。
目前仅支持以太坊(EVM)链,在波场(TRON)上调用返回空值,GetLastError()中有错误信息。