内置函数
结构体
内置变量与常量
通用约定
交易所
能力矩阵
中心化交易所
去中心化交易所
预测市场
证券与期货
链上与自定义接入
通用协议
Web3
exchange.IO("abi", ...)
exchange.IO("api", blockChain, ...)
exchange.IO("encode", ...)
exchange.IO("encodePacked", ...)
exchange.IO("decode", ...)
exchange.IO("hash", ...)
exchange.IO("key", ...)
exchange.IO("sign", ...)
exchange.IO("signTypedData", ...)
exchange.IO("signMessage", ...)
exchange.IO("api", ...)
exchange.IO("call", ...)
exchange.IO("multicall", ...)
exchange.IO("logs", ...)
exchange.IO("waitReceipt", ...)
exchange.IO("nonce", ...)
exchange.IO("speedUp", ...)
exchange.IO("cancelTx", ...)
exchange.IO("toUnits", ...)
exchange.IO("fromUnits", ...)
exchange.IO("uniswapV3", ...)
exchange.IO("contracts", ...)
exchange.IO("address")
exchange.IO("base", ...)
exchange.IO("sendBase", ...)
exchange.IO("logs", ...)
查询合约的事件日志(eth_getLogs),并按ABI进行解码。支持按区块范围和事件的indexed参数进行过滤,可用于监控成交、到账、流动性池变化等链上事件。
exchange.IO(k, query)示例
查询USDC转账事件和Uniswap流动性池的Swap事件。
javascript
function main() {
var USDC = "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"
var POOL = "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640" // Uniswap V3 USDC/WETH 0.05% 池
// 代币的 Transfer 事件内置支持;fromBlock 为负数表示相对最新区块
var transfers = exchange.IO("logs", { address: USDC, event: "Transfer", fromBlock: -2 })
Log("最近3个区块的 USDC 转账:", transfers.length, "条")
if (transfers.length > 0) {
var t = transfers[0]
Log(t.blockNumber, t.transactionHash, t.args.from, "→", t.args.to, t.args.value)
// 按 indexed 参数过滤
var mine = exchange.IO("logs", { address: USDC, event: "Transfer", fromBlock: -2,
filter: { from: t.args.from } })
Log("同一发送方:", mine.length, "条")
}
// 其它合约的事件需要先注册包含该事件的 ABI
exchange.IO("abi", POOL, JSON.stringify([{ type: "event", name: "Swap", anonymous: false,
inputs: [
{ indexed: true, name: "sender", type: "address" }, { indexed: true, name: "recipient",
type: "address" },
{ indexed: false, name: "amount0", type: "int256" }, { indexed: false, name: "amount1",
type: "int256" },
{ indexed: false, name: "sqrtPriceX96", type: "uint160" }, { indexed: false,
name: "liquidity", type: "uint128" },
{ indexed: false, name: "tick", type: "int24" }] }]))
var swaps = exchange.IO("logs", { address: POOL, event: "Swap", fromBlock: -20 })
swaps.forEach(function (s) {
Log("Swap 区块", s.blockNumber, "amount0:", s.args.amount0, "amount1:", s.args.amount1,
"tick:", s.args.tick)
})
}返回值
| 类型 | 描述 |
array | 返回日志数组,每项包含 |
参数
| 名称 | 类型 | 必填 | 描述 |
k | string | 是 | 固定为 |
query | object | 是 | 查询条件: |
参考
备注
代币的Transfer、Approval事件已内置支持;其他事件需要先通过exchange.IO("abi", ...)注册包含该事件的ABI。
当节点对查询的区块跨度或返回条数有限制时,将返回节点给出的错误信息,此时可缩小区块范围进行分段查询。
目前仅支持以太坊(EVM)链,不支持波场(TRON)。