跳到主要内容

高级数据流

BNB Chain 发射平台上的每一笔交易、每一次发射和每一次毕业,都在一条连接上,在包含它的区块被看到的那一刻推送:Flap 和 four.meme(它的经典曲线和它的 OpenFour 引擎都算)上的每一笔买卖,带交易者、数量、曲线成交后的价格以及该价格对应的市值;每一个新代币;每一条售罄并迁移到 PancakeSwap 的曲线;以及之后在那些 PancakeSwap 池子(V2 交易对和 Infinity 池子)和 Uniswap v4 池子里的交易。

免费,无需密钥,无需账户。

wss://api.shrine.trade/bnb/api/stream/ws

试一试​

选择平台并连接。最近的一条事件会立刻到达,之后的事件实时流入。

复制这段​

const ws = new WebSocket("wss://api.shrine.trade/bnb/api/stream/ws");

ws.onmessage = (e) => {
const t = JSON.parse(e.data);
// t.type: buy, sell, create or migrate; t.protocol: FLAP, FOURMEME, PANCAKESWAP or UNISWAP (t.engine on four.meme: classic or openfour)
if (t.type === "buy" || t.type === "sell") {
console.log(t.type, t.symbol, t.tokenAmountFormatted, "for", t.quoteAmountFormatted, t.quoteToken, "mcap", t.marketCap);
} else {
console.log(t.type, t.protocol, t.symbol, t.token);
}
};

Save it as stream.js and run node stream.js - no packages needed (Node 22+).

你会收到什么​

每条消息是一个事件,由 type 和 protocol 分类:

typeprotocol含义
buy / sellFLAP、FOURMEME该平台联合曲线上的一笔交易。
buy / sellPANCAKESWAP一个已毕业代币在 PancakeSwap 池子里的交易,V2 交易对或 Infinity 池子;pool 指明是哪个,launchpad 说明代币来自哪里。
buy / sellUNISWAP一个 Flap 或 four.meme 代币在 BNB Chain 上 Uniswap v4 池子里的交易,按池子 id,同样方式。
createFLAP、FOURMEME一个代币在该曲线上发射,带发射数据流携带的全部字段。
migratePANCAKESWAP一条曲线售罄,代币迁移到它的 PancakeSwap 池子。launchpad 说明来自哪里。

four.meme 的事件带 engine:classic 是它原本的曲线,openfour 是通过 OpenFour(它的模块化引擎,以 BNB、稳定币或币安代币化资产计价,迁移到 V2 交易对或 Infinity 池子)发射的代币。用 ?protocols=FLAP,FOURMEME 过滤(平台名匹配它的曲线交易、发射、毕业以及它的代币在池子里的交易;PANCAKESWAP 和 UNISWAP 匹配该场所的池子交易,PANCAKESWAP 还匹配毕业),用 ?actions=buy,sell 过滤类型(buy、sell、create、migrate 任选)。两者都不加则全部接收。

一笔交易​

{
"type": "buy", "protocol": "FOURMEME", "launchpad": "FOURMEME", "engine": "openfour",
"token": "0x…4444", "name": "Infinity Hook", "symbol": "INFINITY",
"blockNumber": 126580612, "txHash": "0x…", "logIndex": 14, "timestamp": 1791524090,
"quoteToken": "BNB", "quoteDecimals": 18,
"trader": "0x…",
"tokenAmount": "12500000000000000000000000", "tokenAmountFormatted": "12500000",
"quoteAmount": "100000000000000000", "quoteAmountFormatted": "0.1",
"fee": "1000000000000000", "taxBps": 0,
"price": "8037676093166", "priceFormatted": "0.000008037676093166",
"marketCap": "8037.676093166",
"totalSupply": "1000000000000000000000000000",
"tokensInCurve": "612000000000000000000000000", "quoteInCurve": "9100000000000000000"
}
  • tokenAmount 是成交的代币数量,18 位小数;quoteAmount 是买入时交易者付出、卖出时交易者收到的计价资产数量(quoteToken 是 BNB 或该 ERC-20 的地址,quoteDecimals 是它的小数位)。fee 是平台在这笔交易上的协议费,taxBps 是 Flap 税币在这一侧的税,基点(其他为 0);数量是曲线实际成交的,税已扣除。
  • price 是成交后每个代币的计价资产数量,按曲线报告的(18 位定点数),marketCap 是该价格乘以 totalSupply,以计价资产计。
  • tokensInCurve 和 quoteInCurve 是成交后曲线的状态:还在售的代币和已募集的计价资产。Flap 的交易不带这两项。
  • trader 是买入时收到代币的地址、卖出时卖出的地址;中间的路由合约不算交易者。
  • 池子交易(protocol: "PANCAKESWAP" 或 "UNISWAP")带 pool(V2 交易对的地址,或 Infinity / Uniswap v4 池子的 id)、池子实际成交的数量和成交后的价格;quoteToken 是池子的配对资产,可能与曲线的计价资产不同。它没有 trader、fee、tokensInCurve 和 quoteInCurve。

一次发射或一次迁移​

create 和 migrate 携带与发射数据流相同的字段:计价资产、税、毕业阈值、元数据、迁移后的池子。只有 type 的名称不同(create 对应 new_launch,migrate 对应 graduated),其余一样。

毕业之后的交易

代币迁移后,它的交易发生在 PancakeSwap 池子里,并以 PANCAKESWAP 的买卖继续留在这条流上;有人把 Flap 或 four.meme 代币放进 Uniswap v4 池子,也会同样以 UNISWAP 出现。Infinity 和 Uniswap v4 池子从开池那一刻起按 id 跟踪;V2 交易对从开出它的那次迁移起跟踪,服务启动时会读取最近一天的迁移,所以更早开出的交易对不会被跟踪。

说明​

  • 断线即重连。 长连接会断;重连后会先收到最近的一条事件。
  • 每个 IP 一条连接。 第二条会被拒绝,返回 too_many_connections。一条不带过滤的连接已经包含所有事件,一条就够。
  • 顺序。 事件按区块顺序到达,同一区块内按日志顺序(logIndex)。four.meme 繁忙的一分钟有每秒数笔交易;读快一点或加过滤,落后太多的客户端会被跳过。