Skip to main content

Apa itu Parsed Streams?

Parsed Streams adalah layanan WebSocket yang memantau setiap transaksi Solana yang telah dikonfirmasi (kecuali transaksi voting), mendekodenya, lalu mengirimkan transaksi yang cocok dengan filter yang Anda tentukan. Anda dapat mengatakan, “Saya tertarik pada instruksi rute Jupiter” atau “Saya tertarik pada apa pun yang berinteraksi dengan akun ini”, lalu server akan melakukan pemantauan, pendekodean, dan pencocokan untuk Anda. Anda menerima transaksi lengkap yang sudah didekode: setiap instruksi dengan argumen dan akun bernama, ditambah biaya, daftar lengkap kunci akun, summary tingkat transaksi tentang apa yang terjadi, transfer SOL dan token, serta penunjuk ke instruksi persis yang cocok dengan filter Anda. Semua data dikirimkan pada komitmen confirmed.

Model mental

Jika Anda sudah memahami internal Solana, lanjutkan ke bagian berikutnya. Jika belum, inilah model yang menjadi dasar seluruh API. Transaksi adalah pesan yang ditandatangani. Transaksi menentukan pembayar biaya, mencantumkan setiap akun yang akan disentuh, dan membawa daftar instruksi. Saat melihat sebuah transaksi, Anda akan melihat: tanda tangan (ID uniknya), slot tempat transaksi tersebut masuk, biaya yang dibayarkan, kunci akun, apakah transaksi berhasil atau gagal, dan instruksinya. Instruksi adalah satu tindakan: jalankan program ini dengan input ini menggunakan akun-akun ini. Misalnya, swap di Jupiter, transfer token, atau memo. Sebuah transaksi biasanya membawa beberapa instruksi, dan instruksi tersebut dijalankan secara berurutan. Program dapat memanggil program lain. Saat Jupiter mengeksekusi swap, Jupiter tidak memindahkan token itu sendiri. Instruksi rutenya memanggil program token untuk memindahkan token dan program bursa yang menyimpan likuiditas. Panggilan bertingkat tersebut juga merupakan instruksi, yang disebut instruksi internal (atau CPI, pemanggilan lintas program). Hal ini penting saat Anda menulis filter: sebagian besar aktivitas sebenarnya, seperti perpindahan token dalam swap, terjadi di instruksi internal, sehingga filter Anda mencocokkannya secara default. Jika Anda hanya menginginkan instruksi yang ditandatangani pengguna, atur includeCpi ke false. Akun adalah objek on-chain yang digunakan oleh instruksi: dompet, saldo token, pool, dan mint. Setiap instruksi membawanya sebagai daftar alamat yang berurutan, dan urutan tersebut merupakan kontraknya: program menentukan arti setiap posisi. Sebagai contoh, program token mengharapkan akun asal pengambilan token berada di posisi pertama, diikuti akun penerima token, lalu pemilik yang menyetujui transfer. Peran memberi nama pada posisi tersebut. Sebagian besar program terkenal menerbitkan panduan yang dapat dibaca mesin untuk antarmukanya, yang disebut IDL. Panduan tersebut mencantumkan setiap instruksi yang dimiliki program, arti kolom datanya, dan kegunaan setiap posisi akun. Helius menyimpan katalog panduan ini untuk ribuan program. Dengan menggunakannya, daftar alamat biasa berubah menjadi akun bernama: untuk transfer token, posisi 0 menjadi source, posisi 1 menjadi destination, dan posisi 2 menjadi authority. Alih-alih menebak arti alamat ketiga, Anda dapat membaca {"name": "authority", "pubkey": "9xQe...", "isSigner": true}. Nama-nama ini adalah peran yang dapat Anda filter. Pendekodean menerapkan konsep yang sama pada data input instruksi. Saat ditransmisikan, data tersebut berupa byte buram. Dengan panduan program, byte tersebut berubah menjadi nilai bernama: {"in_amount": "1000000", "slippage_bps": 50}. Tidak semua instruksi dapat didekode, sehingga setiap instruksi berada dalam salah satu dari tiga status yang dapat Anda lihat langsung dari kolomnya:
  • Didekode: instruksi membawa objek decoded dengan args bernama dan accounts bernama.
  • Dikenali: selain decoded, instruksi membawa summary dengan type (seperti swap), description yang mudah dibaca manusia, dan payload parsedData terstruktur, seperti metadata swap dengan jumlah dan mint.
  • Tidak didekode: program atau instruksi tidak tersedia dalam katalog, decoded adalah null, dan instruksi membawa byte mentah (rawData) serta daftar alamat biasa (rawAccounts), sehingga Anda selalu memiliki data yang dapat digunakan.
Itulah keseluruhan modelnya, dan filter Anda dibuat langsung berdasarkan model tersebut:
  • programs: program yang dipanggil oleh instruksi
  • instructionNames: nama tindakan tersebut dalam panduan program
  • accounts.include: alamat yang disentuhnya
  • accounts.roles: alamat yang harus menempati posisi bernama tertentu
  • includeCpi dan includeFailed: apakah instruksi internal dan transaksi gagal diperhitungkan
Filter memilih instruksi; notifikasi mengirimkan seluruh transaksi.

Perbandingan

vs Enhanced WebSockets

Enhanced WebSockets mengalirkan seluruh transaksi atau pembaruan akun tanpa pendekodean. Parsed Streams melakukan pencocokan pada tingkat instruksi dan mendekode semuanya untuk Anda.

vs LaserStream gRPC

LaserStream adalah firehose gRPC berthroughput tinggi yang Anda filter dan dekode di klien. Parsed Streams adalah API WebSocket yang melakukan pemfilteran dan pendekodean di server.

vs Parsed Events

Parsed Events menerapkan pendekodean yang sama pada transaksi historis: mengurai tanda tangan atau menelusuri riwayat alamat per halaman sesuai permintaan melalui REST. Parsed Streams mengirimkan transaksi baru saat transaksi tersebut masuk.

Program yang didukung

Parsed Streams mendekode lebih dari 3.600 program dari IDL on-chain-nya, ditambah program inti seperti SPL Token, Token-2022, dan System Program melalui dekoder bawaan. Anda dapat memfilter berdasarkan alamat program apa pun. Instruksi yang tidak dapat didekode oleh layanan akan dialirkan sebagai data instruksi mentah. Berikut beberapa program yang paling sering digunakan dan dapat didekode:
Tidak menemukan suatu program? Program tersebut kemungkinan masih tersedia dalam katalog. Panggil describeProgram dengan alamat program untuk melihat instruksi, peristiwa, dan peran akunnya.

Akses dan harga

Parsed Streams tersedia secara umum pada semua paket, termasuk Free. Layanan ini menggantikan Enhanced Transaction Webhooks untuk data transaksi terurai secara real-time. Dapatkan kunci API Anda dari Dasbor Helius. Setiap peristiwa yang dikirimkan dikenai biaya 1 kredit, sama dengan tarif peristiwa webhook. Lihat Kredit untuk daftar harga lengkap. Penghitungan kredit dimulai pada 24 September 2026. Proyek yang menggunakan Parsed Streams sebelum tanggal tersebut tidak dikenai biaya hingga 1 Oktober 2026. Parsed Streams disediakan melalui endpoint Gatekeeper, yaitu host yang sama dengan lalu lintas RPC dan WebSocket Helius. Tidak ada host Parsed Streams terpisah:
Lakukan autentikasi dengan kunci API proyek Anda yang diteruskan sebagai parameter kueri api-key (atau header x-api-key). Kunci diperiksa saat koneksi dibuka: kunci yang tidak ada atau tidak valid ditolak dengan HTTP 401, sedangkan proyek yang telah mencapai batas koneksinya menerima HTTP 429.

Mulai

Quickstart

Hubungkan, kirim filter pertama Anda, lalu baca notifikasi.

Track Jupiter Swaps

Buat dan langgani filter nyata menggunakan penemuan program.

Track Pump.fun Mints

Listener yang aman terhadap koneksi ulang dan mencatat setiap peluncuran token Pump.fun baru.

Handling Reconnects

Deteksi pemutusan koneksi, terapkan jeda bertahap, berlangganan kembali, dan isi ulang slot yang terlewat.