快速上手
不到 10 行代码即可连接并收到事件 (npm i centrifuge):
import { Centrifuge } from "centrifuge";
const client = new Centrifuge("wss://pumpws.bubudev.win/connection/websocket", {
data: { apikey: "<YOUR_PUMP_API_KEY>" }, // pump_… from the dashboard
});
client.connect();
client.subscribe("signals", ({ data }) => {
console.log(data.kind, data.mint, data.payload);
});不想用 SDK?直接说原始协议——例如用 websocat:
websocat "wss://pumpws.bubudev.win/connection/websocket?format=json"
# then send (one JSON frame per line):
{"id":1,"connect":{"data":{"apikey":"pump_…"}}}
{"id":2,"subscribe":{"channel":"signals"}}鉴权
- 打开控制台,登录、选套餐并按支付——你会拿到一个一次性 SOL 收款地址(24 小时有效)。
- 按精确金额支付(0.5 / 1.5 / 4 SOL)。监控程序约 30 秒内完成链上确认并签发你的 key。
- key 会出现在控制台的 Centrifugo API key 一栏——连接时作为 data.apikey 传入(参考上面的代码)。
通道
| 通道 | 内容 | 档位 |
|---|---|---|
signals | 全部信号:埋伏、毕业、迁移、巨鲸动向、里程碑 | 任意档位 |
signals:mint:<mint> | 单个代币 mint(base58)的信号 | 任意档位 |
marketdata | 成交、迁移、实时/收盘 K 线 | 月付及以上 |
marketdata:mint:<mint> | 单个代币的行情数据 | 月付及以上 |
任意档位 = 周付、月付或季付——没有订阅就没有访问。 订阅整条消防栓,或用 :mint:<mint> 通道只接收单个代币。
消息信封
每条发布都是一个带版本号的 JSON 信封。 payload 原样携带信号元数据——每种 kind 的完整示例见下。
{
"v": 1, // envelope schema version
"id": "0f5c9a3e-…", // unique id — dedupe / trace across consumers
"kind": "arm", // signal type — switch on this
"ts": 1756915200000, // event time (ms since epoch)
"wallTs": 1756915200123, // server receive time (ms)
"mint": "5hBz…", // token mint address (when known)
"payload": { … } // full signal metadata — see examples below
}Payload · signals
signals 通道发布以下 9 种类型。 埋伏、毕业、巨鲸动向与里程碑——检测消防栓本身,所有档位可订。 没有值的字段会被省略——代码要能容忍 undefined。
arm
该代币通过了入场过滤集合(成交量、开发者信誉、路径标签)。核心的「盯住它」信号——在代币仍处于绑定曲线时发出。
{
"v": 1, // envelope schema version
"id": "0f5c9a3e-8f0c-4a2d-9e1b-7c6d5a4b3c2d", // unique id — dedupe / trace
"kind": "arm", // signal type — switch on this
"ts": 1756915200000, // event time (ms since epoch)
"wallTs": 1756915200123, // server receive time (ms)
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW", // token mint (base58)
"payload": {
"kind": "arm",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU", // token ticker
"mcapUsd": 42000 // market cap in USD when armed (entry mcap if known)
}
}arm_pre_mig
与 arm 相同的过滤判定,但代币是在临近/正在迁移时命中的。之所以单列一条通道,是因为入场市值在那里的行为不同。
{
"v": 1,
"id": "1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
"kind": "arm_pre_mig",
"ts": 1756915200000,
"wallTs": 1756915200123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "arm_pre_mig",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "PREX",
"mcapUsd": 58000 // live market cap in USD at arming time
}
}pump
代币毕业(走完绑定曲线)或命中 pump 入场策略。经典的 🚀 提醒。
{
"v": 1,
"id": "2b3c4d5e-6f7a-8b9c-0d1e-2f3a4b5c6d7e",
"kind": "pump",
"ts": 1756915260000,
"wallTs": 1756915260123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "pump",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU",
"mcapUsd": 69000, // market cap in USD at pump time
"uri": "https://ipfs.io/ipfs/QmTokenMetadata7xK9" // token metadata JSON (image, socials)
}
}migrate
原始绑定曲线迁移事件(曲线 → AMM),不附带 pump 入场判定。在主题优先级上低于 pump。
{
"v": 1,
"id": "3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f",
"kind": "migrate",
"ts": 1756915230000,
"wallTs": 1756915230123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "migrate",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU"
}
}milestone
市值突破了入场市值的整数倍(×2、×5、×10、×20……)。一次追涨爆发会合并为一条消息,取达到的最高档。
{
"v": 1,
"id": "4d5e6f7a-8b9c-0d1e-2f3a-4b5c6d7e8f9a",
"kind": "milestone",
"ts": 1756915500000,
"wallTs": 1756915500123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "milestone",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU",
"mcapUsd": 340000, // market cap in USD when the milestone fired
"level": 8 // multiple reached, ×100 scale → 8 = ×8 from entry
}
}whale
被跟踪的钱包在某个 mint 上做了大额单笔或累计动作(买入或卖出),由成交消防栓上的巨鲸检测器捕捉。
{
"v": 1,
"id": "5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b",
"kind": "whale",
"ts": 1756915600000,
"wallTs": 1756915600123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "whale",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU",
"mcapUsd": 120000, // market cap in USD at trade time
"uri": "https://ipfs.io/ipfs/QmTokenMetadata7xK9"
}
}whale_armed
已经发过 arm 的代币上出现巨鲸动向——最强的延续通道(巨鲸行为 + 过滤器共振)。
{
"v": 1,
"id": "6f7a8b9c-0d1e-2f3a-4b5c-6d7e8f9a0b1c",
"kind": "whale_armed",
"ts": 1756915610000,
"wallTs": 1756915610123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "whale_armed",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU",
"mcapUsd": 125000, // market cap in USD at trade time
"uri": "https://ipfs.io/ipfs/QmTokenMetadata7xK9"
}
}bc_mid
被关注的代币越过绑定曲线中点(约 50% 进度)且伴随真实成交量——毕业前的动能标记。
{
"v": 1,
"id": "7a8b9c0d-1e2f-3a4b-5c6d-7e8f9a0b1c2d",
"kind": "bc_mid",
"ts": 1756915300000,
"wallTs": 1756915300123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "bc_mid",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU",
"mcapUsd": 24000, // market cap in USD at trigger time
"uri": "https://ipfs.io/ipfs/QmTokenMetadata7xK9"
}
}leg2
已经发出 🚀 信号的代币从峰值下跌 ≥80% 后筑起窄幅底部,随后回升 +15% 且大钱包资金净流入——「二段」延续信号。
{
"v": 1,
"id": "8b9c0d1e-2f3a-4b5c-6d7e-8f9a0b1c2d3e",
"kind": "leg2",
"ts": 1756922400000,
"wallTs": 1756922400123,
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"payload": {
"kind": "leg2",
"mint": "5hBzKpR3vNqXw7TjLmYc8UdAeBsFgHjKlMnOpQrStUvW",
"symbol": "BUBU",
"mcapUsd": 18400, // market cap in USD at reclaim time
"uri": "https://ipfs.io/ipfs/QmTokenMetadata7xK9"
}
}订阅生命周期
- 开通 — 付款链上确认(每 30 秒轮询)后自动生效。
- 宽限 — 过期后仍可继续接收 24 小时,等待续费到账。
- 续费 — 新档位从当前到期日顺延;一天不浪费。
- 限速 — 每个 IP 每秒最多 10 个新连接;复用一条连接、订阅多个通道即可。
常见问题
- 打错了金额?
- 付款必须与档位价格在 0.001 SOL 误差内一致。金额不对只记录、不入账——重新生成地址并按精确金额支付。
- 连接被拒绝,报
4004? - 订阅已过期且超过 24 小时宽限期。到控制台续费即可——同一个 key 会重新可用。
- 可以在客户端按类型过滤吗?
- 可以——按
envelope.kind分支处理即可。未来可能新增类型,遇到不认识的 value 请忽略而不是抛错。 - 测试用的 devnet SOL?
- faucet.solana.com (选择 Devnet)或用
solana airdrop 5 <WALLET> --url devnet.