Skip to main content
Lakukan streaming setiap pembaruan akun dan transaksi Pump.fun secara real-time menggunakan SDK LaserStream. Halaman ini memandu Anda menjalankan skrip TypeScript lengkap dari awal hingga akhir: skrip mencetak setiap transaksi saat diterima, melaporkan statistik bergulir (throughput, pembayar biaya unik, total biaya dalam SOL) setiap menit, dan tetap terhubung secara otomatis saat terjadi koneksi ulang. Skrip ini merupakan titik awal yang berguna untuk apa pun yang memerlukan visibilitas Pump.fun secara berkelanjutan — bot perdagangan, dasbor analitik, pipeline peringatan, atau sekadar menjelajahi struktur data agar Anda dapat membangun sesuatu yang lebih khusus di atasnya.
Prasyarat: Kunci API Helius (paket Business atau Professional untuk Mainnet LaserStream) dan Node.js 18+. Pemahaman tentang Langganan Akun dan Pemantauan Transaksi akan membantu, tetapi tidak diwajibkan.

Penyiapan

Buat proyek baru, instal SDK + bs58 (digunakan untuk mendekode tanda tangan transaksi), lalu tetapkan kunci API Anda:
Pilih endpoint yang paling dekat dengan lokasi tempat skrip ini akan dijalankan — lihat wilayah LaserStream.

Skrip

Simpan sebagai index.ts, lalu jalankan npx ts-node index.ts:

Fungsi skrip

Satu langganan, dua blok filter

Satu pemanggilan subscribe(...) memuat dua grup filter bernama:
  • Filter accounts menerima setiap akun yang dimiliki oleh program Pump.fun (bonding curve, status mint, dan sebagainya) setiap kali datanya berubah.
  • Filter transactions menerima setiap transaksi yang berinteraksi dengan program Pump.fun. Flag vote: false, failed: false membuang vote dan transaksi yang gagal sebelum mencapai handler Anda.
Keduanya diterima melalui satu stream gRPC, sehingga SDK hanya perlu mengelola satu koneksi. Jika koneksi terputus, SDK akan terhubung kembali secara otomatis dan Anda tetap menerima pembaruan dari kedua filter.

Membaca field mentah

Beberapa nilai dalam payload memerlukan sedikit konversi agar mudah digunakan:
  • tx.signature adalah Buffer. Proses dengan bs58.encode(...) untuk mendapatkan tanda tangan base58 yang akan Anda lihat di explorer atau dalam respons getTransaction.
  • tx.meta.fee adalah u64 yang disimpan sebagai string agar nilai di atas Number.MAX_SAFE_INTEGER tidak kehilangan presisi di JavaScript. Bungkus dengan Number(...) sebelum melakukan operasi aritmetika. Konvensi string-untuk-u64 yang sama juga berlaku untuk beberapa field tingkat blok — lihat Pemantauan Slot & Blok untuk struktur data lengkapnya.

Statistik bergulir

setInterval mencetak snapshot setiap 60 detik: total transaksi, transaksi berhasil dibandingkan dengan transaksi gagal, throughput, pembayar biaya unik, dan total biaya dalam SOL. Tekan Ctrl+C untuk mendapatkan satu snapshot terakhir sebelum skrip berhenti.

Memperluas skrip

Beberapa cara untuk mengembangkan skrip ini lebih lanjut:
  • Dekode diskriminator instruksi untuk memberi label perdagangan sebagai buy / sell / create — lihat Mendekode Data Transaksi untuk pola parsing.
  • Simpan secara persisten statistik bergulir ke database (Postgres, Redis, ClickHouse), bukan di Set / penghitung dalam memori.
  • Kirim peringatan saat ambang batas tercapai — pembayar biaya besar, lonjakan volume mendadak, atau akun bonding curve baru.
  • Putar ulang aktivitas yang terlewat saat memulai dengan menetapkan fromSlot pada SubscribeRequest (hingga 48 jam ke belakang — lihat Pemutaran Ulang Historis).
  • Gabungkan dengan Pemantauan Slot & Blok untuk mendapatkan konteks tingkat blok.
  • Ikuti satu token alih-alih seluruh program: masukkan mint ke accountInclude dan tetapkan matchMints: true pada filter transaksi untuk menerima setiap transfer, swap, mint, dan burn bagi token tersebut (lihat Pemfilteran Mint Token).

Langkah Berikutnya

Transaction Monitoring

Pola umum pemfilteran transaksi yang digunakan skrip ini.

Decoding Transaction Data

Uraikan payload transaksi biner menjadi transaksi Solana yang mudah dibaca.

Account Subscriptions

Pantau perubahan status akun tertentu dengan filter.

Historical Replay

Putar ulang hingga 24 jam aktivitas Pump.fun sebelumnya dari slot awal.