Skip to main content
使用 LaserStream SDK 实时流传每一个 Pump.fun 账户更新和交易。本页面提供一个完整的 TypeScript 脚本,您可以从头到尾运行:它在每笔交易到达时打印信息,每分钟报告滚动统计(吞吐量、唯一费用支付者、Sol 中的总费用),并在重连时自动保持连接。 这是对任何需要持续 Pump.fun 可见性项目的有用起点——交易机器人、分析仪表板、警报管道,或者只是探索数据形态以便您在其基础上构建更专业的东西。
先决条件: 一 个 Helius API 密钥(用于 Mainnet LaserStream 的商务或专业计划)和 Node.js 18+。熟悉 账户订阅 和 交易监控 有帮助但不是必须的。

设置

创建一个新项目,安装 SDK + bs58(用于解码交易签名),并设置您的 API 密钥:
选择离此脚本运行位置最近的端点——参见 LaserStream 区域。

脚本

将其另存为 index.ts,然后运行 npx ts-node index.ts:

脚本的功能

一个订阅,两个过滤块

一个 subscribe(...) 调用包含两个命名的过滤组:
  • accounts 过滤接收每当数据变化时 Pump.fun 程序拥有的每个账户(债券曲线、铸造状态等)。
  • transactions 过滤接收每个与 Pump.fun 程序交互的交易。 vote: false, failed: false 标记在到达您的处理程序之前删除投票和失败的交易。
两者通过单个 gRPC 流到达,因此 SDK 只需管理一个连接。如果连接断开,SDK 会自动重新连接,您将继续从两个过滤器接收更新。

读取原始字段

负载中的几个值需要进行小的转换,以便于使用:
  • tx.signature 是一个 Buffer。通过 bs58.encode(...) 运行它,以获得在资源管理器或 getTransaction 响应中看到的 base58 签名。
  • tx.meta.fee 是一个以字符串存储的 u64,以确保在 JavaScript 中不会丢失 Number.MAX_SAFE_INTEGER 以上的精度。在进行算术运算之前,将其包裹在 Number(...) 中。同样的 u64 字符串约定也适用于多个区块级字段 — 请参阅 Slot & Block Monitoring 以了解完整的数据结构。

滚动统计

setInterval 每 60 秒打印一次快照:总交易数、成功与失败、吞吐量、唯一费用支付者和 SOL 中的总费用。在脚本退出之前按下 Ctrl+C 可获得最后一次快照。

扩展脚本

一些进一步发展的方向:
  • 解码指令判别器,将交易标记为 buy / sell / create — 有关解析模式,请参阅解码交易数据。
  • 持久化滚动统计数据,将其存储到数据库(Postgres、Redis、ClickHouse),而不是内存中的 Set / 计数器。
  • 在达到阈值时发出警报 — 例如高额手续费支付者、交易量突然激增、新的联合曲线账户。
  • 重放启动时错过的活动:在 SubscribeRequest 上设置 fromSlot(最多可回溯 48 小时 — 请参阅历史重放)。
  • 结合时隙与区块监控,获取区块级上下文。
  • 仅跟踪一个代币,而不是整个程序:将铸币地址放入 accountInclude,并在交易过滤器上设置 matchMints: true,以接收该代币的每笔转账、兑换、铸造和销毁交易(请参阅代币铸币地址过滤)。

后续步骤

交易监控

此脚本使用的一般交易过滤模式。

解码交易数据

将二进制交易负载解析为可读的Solana交易。

账户订阅

使用过滤器监控特定账户状态更改。

历史重放

从起始槽重放过去最多24小时的Pump.fun活动。