Skip to main content
Truyền phát mọi cập nhật tài khoản và giao dịch Pump.fun theo thời gian thực bằng LaserStream SDK. Trang này hướng dẫn một tập lệnh TypeScript hoàn chỉnh mà bạn có thể chạy từ đầu đến cuối: tập lệnh in từng giao dịch ngay khi giao dịch xuất hiện, báo cáo số liệu thống kê liên tục (thông lượng, số người trả phí duy nhất, tổng phí bằng SOL) mỗi phút một lần và tự động duy trì kết nối qua các lần kết nối lại. Đây là điểm khởi đầu hữu ích cho mọi ứng dụng cần khả năng theo dõi Pump.fun liên tục — bot giao dịch, bảng điều khiển phân tích, quy trình cảnh báo hoặc đơn giản là khám phá cấu trúc dữ liệu để xây dựng một giải pháp chuyên biệt hơn dựa trên đó.
Điều kiện tiên quyết: Khóa Helius API (gói Business hoặc Professional dành cho Mainnet LaserStream) và Node.js 18 trở lên. Việc quen thuộc với Đăng ký tài khoản và Giám sát giao dịch sẽ hữu ích nhưng không bắt buộc.

Thiết lập

Tạo một dự án mới, cài đặt SDK + bs58 (được dùng để giải mã chữ ký giao dịch) và đặt khóa API:
Chọn điểm cuối gần nhất với nơi tập lệnh này sẽ chạy — xem các khu vực LaserStream.

Tập lệnh

Lưu nội dung này dưới dạng index.ts, sau đó chạy npx ts-node index.ts:

Cách tập lệnh hoạt động

Một lượt đăng ký, hai khối bộ lọc

Một lệnh gọi subscribe(...) duy nhất chứa hai nhóm bộ lọc có tên:
  • Bộ lọc accounts nhận mọi tài khoản thuộc sở hữu của chương trình Pump.fun (đường cong liên kết, trạng thái mint, v.v.) mỗi khi dữ liệu của chúng thay đổi.
  • Bộ lọc transactions nhận mọi giao dịch tương tác với chương trình Pump.fun. Các cờ vote: false, failed: false loại bỏ phiếu bầu và giao dịch thất bại trước khi chúng đến trình xử lý của bạn.
Cả hai đều được truyền qua một luồng gRPC duy nhất, vì vậy SDK chỉ cần quản lý một kết nối. Nếu kết nối bị gián đoạn, SDK sẽ tự động kết nối lại và bạn tiếp tục nhận cập nhật từ cả hai bộ lọc.

Đọc các trường thô

Một vài giá trị trong tải trọng cần được chuyển đổi đôi chút trước khi có thể sử dụng dễ dàng:
  • tx.signature là một Buffer. Truyền giá trị này qua bs58.encode(...) để lấy chữ ký base58 mà bạn sẽ thấy trong trình khám phá hoặc trong phản hồi getTransaction.
  • tx.meta.fee là một giá trị u64 được lưu dưới dạng chuỗi để các giá trị lớn hơn Number.MAX_SAFE_INTEGER không bị mất độ chính xác trong JavaScript. Bọc giá trị đó trong Number(...) trước khi thực hiện phép toán. Quy ước dùng chuỗi cho u64 tương tự cũng áp dụng cho một số trường cấp khối — xem Giám sát slot và khối để biết cấu trúc dữ liệu đầy đủ.

Số liệu thống kê liên tục

Một setInterval in ảnh chụp số liệu sau mỗi 60 giây: tổng số giao dịch, số giao dịch thành công so với thất bại, thông lượng, số người trả phí duy nhất và tổng phí bằng SOL. Nhấn Ctrl+C để in ảnh chụp cuối cùng trước khi tập lệnh thoát.

Mở rộng tập lệnh

Một vài hướng để phát triển thêm:
  • Giải mã các bộ phân biệt lệnh để gắn nhãn giao dịch là buy / sell / create — xem Giải mã dữ liệu giao dịch để biết mẫu phân tích cú pháp.
  • Lưu trữ lâu dài số liệu thống kê liên tục vào cơ sở dữ liệu (Postgres, Redis, ClickHouse) thay vì dùng Set / bộ đếm trong bộ nhớ.
  • Cảnh báo khi đạt ngưỡng — người trả phí lớn, khối lượng tăng đột biến, tài khoản đường cong liên kết mới.
  • Phát lại hoạt động bị bỏ lỡ khi khởi động bằng cách đặt fromSlot trên SubscribeRequest (tối đa 48 giờ trước — xem Phát lại lịch sử).
  • Kết hợp với Giám sát slot và khối để có ngữ cảnh cấp khối.
  • Theo dõi một token thay vì toàn bộ chương trình: đặt mint trong accountInclude và đặt matchMints: true trên bộ lọc giao dịch để nhận mọi thao tác chuyển, hoán đổi, mint và đốt của token đó (xem Lọc theo token mint).

Các bước tiếp theo

Transaction Monitoring

Các mẫu lọc giao dịch chung mà tập lệnh này sử dụng.

Decoding Transaction Data

Phân tích tải trọng giao dịch nhị phân thành các giao dịch Solana dễ đọc.

Account Subscriptions

Theo dõi các thay đổi trạng thái của tài khoản cụ thể bằng bộ lọc.

Historical Replay

Phát lại tối đa 24 giờ hoạt động Pump.fun trước đây từ một slot bắt đầu.