查询流动性历史
以下四个代币交易端点支持events 和 enrich:
events=trades:默认值,仅返回买卖交易。events=all:按时间顺序返回兑换交易及流动性增减。events=liquidity:仅返回add_liquidity和remove_liquidity。enrich=identity:为每条记录添加当前钱包身份,包括可用的 KOL 资料、标签、交易平台、开发者/池标签和 SNS 名称。未知钱包返回identity: null。
trades 数组 返回记录。这些选项适用于上述四个端点;钱包全局交易、鲸鱼/KOL 和永续合约端点保持原有行为。
使用 TypeScript SDK
安装 0.5.0 或更高版本的@solana-tracker/data-api。历史查询方法支持 events、enrich、limit 和 sortDirection;将 nextCursor 原样传回以加载下一页。
分页与筛选
limit 范围为 1–500,默认 250。sortDirection=DESC 按从新到旧排序,ASC 按从旧到新排序。
对于 events=all 和 events=liquidity,nextCursor 是不透明字符串。将其原样作为下一页的 cursor,并保持代币、池、钱包、events 和排序方向不变。根据 hasNextPage 继续分页,到末页时 nextCursor 为 null。
不要用最后一条记录的时间戳替换游标:同一毫秒可能有多次操作。默认交易模式仍使用时间戳游标;流动性模式也接受数字时间戳作为不包含该时间点的初始边界。
showMeta=true 仅为兑换交易添加代币元数据。流动性记录不包含兑换价格、美元成交量或 PnL。hideArb 不会移除流动性事件。
实时订阅流动性
使用 Data API 密钥连接wss://datastream.solanatracker.io/{apiKey}。Datastream 适用于 Premium、Business 和 Enterprise 套餐。
选择房间
liquidity:{mint}:涉及某个代币的所有流动性操作。liquidity:{mint}:{pool}:某个代币在指定池中的操作。liquidity:{mint}:{pool}:{wallet}:指定钱包对该代币与池的操作。liquidity:pool:{pool}:池中的所有流动性操作。liquidity:wallet:{wallet}:钱包在不同池和代币中的流动性操作。
使用 SDK 订阅
SDK 自动处理心跳和重连。设置{ enriched: true } 获取钱包标签,或省略该参数订阅基础房间。流动性回调每次接收一个事件。
transaction:* 房间只接收兑换交易;流动性需要单独订阅。
实时钱包身份
在任意流动性房间后添加:enriched,例如 liquidity:{mint}:enriched。交易、钱包和鲸鱼/KOL 房间也支持此后缀。
每条记录会增加 identity。查询完成但没有已知身份时,值为 null。查询未完成时还会返回 identityStatus: "partial",且不会再为该通知发送更正。
增强通知可能延迟或乱序到达。身份来自当前缓存标签,不是事件发生时的历史标签。代币房间以请求的代币为上下文;池和钱包流动性房间使用第一个非报价代币,若均为报价代币则使用第一个代币。
理解事件字段
以下是示例数据。WebSocket 使用{ "type": "message", "room": "...", "data": [...] } 包装事件;REST 放在 trades 数组中。
type为add_liquidity或remove_liquidity。再平衡可能产生独立的移除和添加事件。pool是单个池地址;wallet是指令识别的所有者或授权地址,也可能是代理或程序派生地址。tokens[]包含参与的代币。单边操作可能只有一项,零数量的项会省略。amount是精确十进制字符串,amountRaw是整数字符串。保留字符串,或使用十进制库和BigInt,避免精度丢失。time是 Unix 毫秒时间戳,slot是 Solana 插槽。amountBasis: "transfer"表示跨越池金库的转账总额,尚未扣除 Token-2022 预扣费用,并不保证收款方净到账数量。amountBasis: "principal"表示将流动性本金与费用或内部重新分配分开。Raydium CLMM 移除操作的代币项还可能包含feeAmountRaw和transferredAmountRaw。