跳到主要内容

高级数据流

按池子的流回答的是"这个代币发生了什么"。这一条回答的是"这笔交易里发生了什么",覆盖我们索引的每个发射台上的每一笔交易。服务端推送 stream。免费、无需密钥、一条连接。

用于跟单、貔貅过滤,以及任何需要整个市场而不是单个池子的场景。如果你只关心几个代币,subscribe_trades 对你我都更省。

通道Socket.IO 事件
认证无,不需要 API 密钥
推送stream
费用免费
过滤可选的 protocolsactions 列表

示例

import { io } from "socket.io-client";

const socket = io("https://sol.shrine.trade");

// 全部,或者按协议 / 动作缩小范围。
socket.emit("subscribe_stream", {
protocols: ["PUMPFUN", "PUMPSWAP", "STONKFUN"],
actions: ["buy", "sell", "create"],
});

socket.on("stream", (e) => {
if (e.action === "create" && (e.mintAuthority || e.freezeAuthority)) return; // 不是干净的发射
if (e.action === "buy") console.log(e.mint, e.tradersInvolved, e.quoteAmount, e.price);
});

// 之后要停止(免费):socket.emit("unsubscribe_stream");

动作

action何时协议
buy / sell任何交换。每笔交易每个池子一个事件;一笔交易里的多次交换会被聚合,并带逐笔的 breakdown所有发射台
create发射台铸币。PUMPFUNPUMPFUN_MAYHEMBONKMETEORA_DBC
createPool在已有代币上开的 AMM 池子。PUMPSWAPRAYDIUMRAYDIUM_CLMMMETEORAMETEORA_DLMMORCA
migrate曲线毕业进入它的 AMM。PUMPFUN→PumpSwap、BONK→Raydium、METEORA_DBC→DAMM v2
curveCompleteDBC 曲线打满,迁移之前。METEORA_DBC
add / remove添加或撤出流动性。PumpSwap、Raydium CPMM 和 AMM v4、DAMM v2、DLMM、Orca
claimCreatorFees创作者领取费用。PUMPFUNPUMPSWAP

载荷

每个事件都带 signatureblocktimestampactionprotocol 和付费方 txSignertxSigner 不总是交易者:机器人会经由中继。跟单请用 tradersInvolved

成交

{
"signature": "…", "block": 445627693, "timestamp": 1788976012,
"action": "buy", "protocol": "PUMPFUN", "txSigner": "…",
"pool": "…", "mint": "…", "quoteMint": "So111…",
"tokenAmount": 31952.74, "quoteAmount": 0.0161, "price": 0.000000504,
"marketCapQuote": 504.1, "tokensInPool": 1041000000, "quoteInPool": 30.5,
"tradersInvolved": ["…"],
"breakdown": [
{ "trader": "…", "action": "buy", "tokenAmount": 31952.74, "quoteAmount": 0.0161, "price": 0.000000504 }
]
}

price 和池子储备是发射台报告的交易后状态。marketCapQuote 是价格乘以供应量,以计价资产计。数量为 UI 单位。

创建

{
"action": "create", "protocol": "PUMPFUN",
"mint": "…", "pool": "…", "quoteMint": "So111…", "creator": "…",
"name": "…", "symbol": "…", "uri": "…", "decimals": 6, "supply": 1000000000,
"tokensInPool": 1073000000, "quoteInPool": 30,
"initialBuy": { "quoteAmount": 0.5, "tokenAmount": 17000000 },
"mintAuthority": null, "freezeAuthority": null, "tokenExtensions": []
}

诚实的发射里 mintAuthorityfreezeAuthority 都应为 null;有值意味着可以增发或冻结钱包。tokenExtensions 按名称列出 Token-2022 扩展;在可信发射台之外,transferFeeConfigpermanentDelegate 值得多看一眼。initialBuy 是创作者在发射交易里自己的买入,没有则为 null。权限和扩展从创建时的 mint 账户读取;如果 mint 早于这条流存在,可能缺失。

迁移与池子

迁移带 fromPooltoPooltoProtocol。池子创建带 poolcreator,以及已知时的 mintquoteMint。流动性事件带 poolowner 和两侧的原始数量(amountARawamountBRaw);侧与 mint 的对应遵循发射台自己的顺序。

试一试

说明

  • 每个客户端请只开一条连接。过滤按 socket 进行,所以开一条连接、订阅一次即可。
  • 一笔交易的事件按固定顺序推送:先成交,然后创建和池子创建,再迁移和流动性,最后费用领取。
  • 这条流的每个事件也按小时归档,供回测使用:见历史回放