Beta Publik.
preprocessedSubscribe tersedia pada semua paket berbayar
dan dihitung sebesar 0,1 kredit per pesan (satu pesan per transaksi yang
dikirimkan).Apa itu preprocessedSubscribe?
preprocessedSubscribe adalah metode WebSocket Helius yang melakukan streaming transaksi praproses — transaksi Solana praeksekusi yang dikirimkan sebelum mencapai tingkat komitmen processed. Helius menggabungkan beberapa sumber praeksekusi — terutama shred yang didekode langsung saat tiba di validator, dilengkapi dengan sinyal prakonfirmasi — dan mengirimkannya sebagai satu aliran pesan biner ringkas yang telah dideduplikasi, tanpa memerlukan infrastruktur deshredding di sisi Anda.
Transaksi yang bersumber dari sinyal prakonfirmasi tiba lebih lambat di feed ini dibandingkan di produk khusus Preconfirmations, yang tetap menyediakan akses paling awal ke transaksi tersebut.
Ini adalah penerus produk preprocessed LaserStream (gRPC) sebelumnya. Jika saat ini Anda menggunakan transaksi praproses melalui gRPC, beralihlah ke metode ini — metode ini mengirimkan kelas data yang sama melalui koneksi WebSocket biasa dengan latensi lebih rendah, dan pengiriman melalui gRPC akan dihentikan secara bertahap.
Titik akhir
preprocessedSubscribe disediakan dari wss://beta.helius-rpc.com — titik akhir Helius Gatekeeper — bukan dari mainnet.helius-rpc.com. Lakukan autentikasi menggunakan kunci API Anda sebagai parameter kueri:
Berlangganan
Kirim permintaan JSON-RPC dengan metodepreprocessedSubscribe. params memuat filter akun dan wajib disertakan — accountInclude dan accountRequired harus menentukan setidaknya satu akun di antara keduanya (lihat Pemfilteran):
Pemfilteran
Setiap langganan dibatasi oleh filter akun diparams. Pemfilteran dilakukan di sisi server sehingga Anda hanya menerima transaksi yang relevan:
Aturan filter:
- Ketiga filter digabungkan dengan logika AND.
accountIncludedanaccountRequiredharus menentukan setidaknya satu akun di antara keduanya — tidak ada aliran penuh tanpa filter.- Akun adalah kunci publik yang dikodekan dengan base58. Setiap daftar menerima hingga 5.000 alamat.
Resolusi tabel pencarian alamat (ALT)
Filter akun mencocokkan lebih dari sekadar kunci akun statis transaksi — Helius menyelesaikan tabel pencarian alamat di sisi server, sehinggaaccountInclude, accountExclude, dan accountRequired juga mencocokkan akun yang dimuat transaksi melalui ALT. Cukup berikan kunci publik akun tersebut; Anda tidak perlu memelihara pemetaan ALT atau menyelesaikan tabel sendiri.
Payload notifikasi
Notifikasi dikirimkan sebagai frame WebSocket biner (bukan JSON). Setiap frame memuat satu transaksi dalam tata letak byte yang dipadatkan:
Baca prefiks tetap sepanjang 73 byte secara berurutan, lalu dekode byte yang tersisa untuk membaca instruksi, akun, dan pencarian tabel alamat. Tanda tangan disertakan dalam prefiks agar Anda dapat mengidentifikasi dan mendeduplikasi transaksi tanpa mendekode seluruh isi transaksi.
Selalu baca dan periksa byte
version terlebih dahulu. Jika Helius perlu memperbarui format payload, versinya akan bertambah — buat percabangan berdasarkan versi tersebut agar dekoder Anda tetap berfungsi saat skema berubah.
Mendekode transaksi
Byte transaksi diteruskan persis seperti yang diamati di jaringan, dalam pengodean wire standar untuk versi transaksi tersebut. Transaksi lama dan v0 menggunakan tata letak yang menempatkan tanda tangan di awal, seperti yang dihasilkan olehbincode. Transaksi v1 (SIMD-0385) menggunakan tata letak yang menempatkan pesan di awal dan tanda tangan di akhir, sehingga bincode gagal pada payload v1. Gunakan dekoder yang menangani setiap versi:
- Rust:
agave-transaction-viewmengurai transaksi lama, v0, dan v1 secara langsung tanpa salinan perantara. Ini adalah opsi yang direkomendasikan.wincode, serializer kompatibel bincode yang digunakan oleh SDK Solana saat ini, juga mendekode v1 menjadiVersionedTransaction. - JavaScript / TypeScript: pastikan versi pustaka Anda mendukung transaksi v1. Implementasi
VersionedTransaction.deserializeyang lebih lama hanya menangani transaksi lama dan v0. Gunakan@solana/kit8.0+ atau@solana/web3.jsv3. Lihat Dukungan transaksi v1.
Contoh
Data apa yang tersedia?
Setiap notifikasi memuat transaksi bertanda tangan, tanda tangan pertamanya, dan slot-nya. Karena pengiriman dilakukan sebelum eksekusi, aliran ini tidak menyertakan:- Status atau kesalahan eksekusi
- Saldo sebelum/sesudah atau perubahan saldo token
- Pesan log atau instruksi internal
- Unit komputasi yang digunakan
processed.
Tekanan balik
Aliran tidak menyimpan data dalam buffer tanpa batas untuk konsumen yang lambat. Jika klien Anda membaca terlalu lambat dan lebih dari 4.000 pesan menumpuk di sisi server, Helius akan menutup koneksi — Anda menerima frame penutupan WebSocket yang normal. Kosongkan frame lebih cepat daripada laju kedatangannya: jangan jalankan pekerjaan berat seperti pendekodean transaksi dan logika strategi dalam loop penerimaan, lalu hubungkan kembali dan berlangganan ulang setelah koneksi terputus.Jaminan pengiriman
Pengiriman bersifat upaya terbaik, tidak dijamin, dan tidak ada pemutaran ulang historis. Klien sebaiknya:- Menghubungkan kembali dan berlangganan ulang setelah koneksi ditutup.
- Mendeduplikasi berdasarkan tanda tangan transaksi.
- Memperlakukan slot sebagai pengamatan, bukan finalitas.
- Mencocokkan dengan aliran yang telah diproses atau dikonfirmasi jika hasil eksekusi penting.
Harga
preprocessedSubscribe tersedia pada semua paket berbayar dan dihitung sebesar 0,1 kredit per pesan — satu pesan per transaksi yang dikirimkan, ditagihkan dari paket Anda. Lihat Kredit untuk detailnya.
Terkait
Preconfirmations
Transaksi yang dialirkan sebelum menjadi shred — sinyal transaksi paling awal.
Raw Shreds (UDP)
Paket shred yang belum diproses melalui UDP. Anda mengimplementasikan deshredding.
transactionSubscribe
Transaksi pascaeksekusi dengan pemfilteran lengkap dan metadata eksekusi.