Apa itu preconfSubscribe?
preconfSubscribe adalah metode WebSocket Helius yang melakukan streaming Preconfirmations — transaksi yang dikirim sebelum dikumpulkan ke dalam entri dan dipecah menjadi shred. Ini adalah sinyal transaksi dengan latensi terendah yang ditawarkan Helius. Satu langganan mengirimkan preconfirmation Helius, yang dipancarkan segera setelah leader mengeksekusi transaksi dan menyertakan status eksekusinya, serta preconfirmation BAM dari validator yang menjalankan klien Block Assembly Marketplace milik Jito, yang dipancarkan saat validator berkomitmen untuk mengeksekusi transaksi. Akses memerlukan paket Professional atau yang lebih tinggi — lihat Harga.
Streaming ini tidak berlangsung terus-menerus. Cakupan meningkat sesuai proporsi stake yang
diteruskan ke Helius atau menjalankan BAM, jadi mungkin ada slot tanpa pesan — tangani
jeda ini dengan baik. Lihat Cakupan.
preconfSubscribe dilayani dari wss://beta.helius-rpc.com — endpoint Gatekeeper Helius — bukan mainnet.helius-rpc.com. Lakukan autentikasi dengan API key Anda sebagai parameter kueri.
Nama host
beta merujuk pada peluncuran Gatekeeper,
bukan tingkat kematangan Preconfirmations. Preconfirmations pertama kali diluncurkan pada
endpoint Gatekeeper; endpoint ini akan menjadi endpoint standar saat Helius
memigrasikan lalu lintas ke Gatekeeper.Berlangganan
Kirim permintaan JSON-RPC dengan metodepreconfSubscribe. Server merespons dengan ID langganan, lalu melakukan streaming notifikasi untuk setiap transaksi. Teruskan filter opsional sebagai elemen params pertama agar hanya menerima transaksi yang cocok; hilangkan params untuk menerima seluruh streaming dari Helius dan BAM.
Respons Langganan
result — ini adalah ID langganan yang Anda gunakan untuk berhenti berlangganan. Setelah konfirmasi ini, notifikasi dialirkan sebagai frame biner (lihat di bawah).
Pemfilteran
Secara default,preconfSubscribe melakukan streaming setiap transaksi dari kedua sumber. Untuk mempersempit streaming, teruskan objek filter sebagai elemen pertama params. Pemfilteran dilakukan di sisi server, sehingga Anda hanya membayar dan menerima transaksi yang Anda perlukan.
params) cocok dengan setiap transaksi dari kedua sumber.
Aturan filter:
- Semua predikat digabungkan dengan AND dan dievaluasi dalam urutan
includeBam→failed→regionInclude→accountExclude→accountRequired→accountInclude. - Preconfirmation dengan status yang tidak diketahui mengabaikan filter status
faileddan tetap dikirimkan jika cocok dengan filter sumber, wilayah, dan akun. - Akun adalah pubkey yang dikodekan dengan base58. Nilai yang tidak valid mengembalikan error JSON-RPC
-32602(parameter tidak valid). - Setiap daftar akun dibatasi hingga 500 entri.
Resolusi address lookup table (ALT)
Filter akun tidak hanya mencocokkan kunci akun statis transaksi — Helius menyelesaikan address lookup table v0 di sisi server, sehinggaaccountInclude, accountExclude, dan accountRequired juga mencocokkan akun yang dimuat transaksi melalui ALT.
Artinya, Anda dapat memfilter berdasarkan akun apa pun yang disentuh transaksi, meskipun akun tersebut hanya muncul di balik lookup table — Anda tidak perlu mengelola pemetaan ALT atau menyelesaikan tabel sendiri. Cukup teruskan pubkey akun dan Helius akan menangani resolusinya sebelum filter diterapkan.
Pemfilteran lokasi
GunakanregionInclude untuk hanya menerima transaksi yang berasal dari wilayah tertentu. Teruskan satu atau beberapa kode wilayah; transaksi lolos jika wilayah asalnya cocok dengan salah satunya.
sgp dan dal.
Kode wilayah yang valid:
Saat
regionInclude ditetapkan, transaksi yang tidak memiliki informasi wilayah akan dibuang. Kode wilayah yang tidak dikenali mengembalikan error JSON-RPC -32602 (parameter tidak valid).Payload notifikasi
Notifikasi dikirim sebagai frame WebSocket biner (bukan JSON). Preconfirmation Helius dan BAM menggunakan tata letak yang sama. Setiap frame adalah tata letak byte yang dikemas dan memuat satu transaksi:
Payload tidak memiliki bidang sumber. Jangan menyimpulkan asal BAM dari
tx_index = 0 karena preconfirmation Helius dapat memiliki nilai yang sama.
Membedakan kedua sumber
Karena tidak ada bidang sumber, Anda tidak dapat melabeli pesan sembarang sebagai Helius atau BAM. Bytestatus memberikan pengklasifikasi satu arah:
statusadalah0atau1— pesan tersebut adalah preconfirmation Helius dan transaksi telah dieksekusi. BAM tidak pernah melaporkan nilai-nilai ini.statusadalah2— sumbernya ambigu: dapat berupa preconfirmation BAM atau preconfirmation Helius yang status eksekusinya tidak tersedia.
regionInclude adalah filter langganan, bukan bidang payload, sehingga tidak dapat dibaca per pesan.
Jika Anda memerlukan setiap pesan dalam satu streaming untuk membawa jenis bukti yang sama, tetapkan includeBam: false — tindakan ini hanya menyisakan preconfirmation Helius, yang semuanya dipancarkan saat eksekusi oleh leader. Tidak ada filter khusus BAM.
Preconfirmation adalah sinyal awal, bukan jaminan. Transaksi belum
masuk secara onchain dan masih dapat dibuang — selain itu, status eksekusi preconfirmation Helius
mencerminkan hasil lokal leader, yang belum final hingga
blok dikonfirmasi. Konfirmasikan bahwa transaksi telah masuk melalui pemeriksaan commitment standar
sebelum menganggapnya final.
Mendekode transaksi
Byte transaksi diteruskan tepat seperti yang diserialisasi oleh validator, dalam enkode wire standar untuk versi transaksi tersebut. Transaksi legacy dan v0 menggunakan tata letak signatures-first yang dihasilkanbincode. Transaksi v1 (SIMD-0385) menggunakan tata letak message-first dengan tanda tangan di bagian akhir, sehingga bincode gagal pada payload v1. Gunakan dekoder yang menangani setiap versi:
- Rust:
agave-transaction-viewmengurai transaksi legacy, 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 legacy dan v0. Gunakan@solana/kit8.0+ atau@solana/web3.jsv3. Lihat Dukungan transaksi v1.
Notifikasi duplikat
Preconfirmation Helius dan BAM dideduplikasi per sumber, bukan lintas sumber. Sebagian kecil transaksi mencapai Helius melalui keduanya, sehingga Anda dapat menerima tanda tangan yang sama dua kali, dan kedua salinan tersebut dapat melaporkan slot yang berbeda. Lakukan deduplikasi berdasarkan tanda tangan di klien dan buat tindakan yang dipicu transaksi bersifat idempoten, sehingga notifikasi kedua tidak memicu tindakan yang sama dua kali. Konfirmasikan eksekusi dan masuknya transaksi melalui pemeriksaan commitment standar.Contoh
Berhenti berlangganan
Untuk berhenti menerima notifikasi, panggilpreconfUnsubscribe dengan ID langganan yang dikembalikan oleh preconfSubscribe.
Harga
Preconfirmations memerlukan paket Professional atau yang lebih tinggi dan berbiaya 10 kredit per pesan — satu pesan per transaksi yang dialirkan — yang ditagihkan dari paket Anda. Lihat Kredit untuk detailnya. Penagihan dilakukan per pesan, bukan per tanda tangan unik. Transaksi yang dikirim oleh Helius dan BAM dihitung dua kali. TetapkanincludeBam: false jika Anda hanya menginginkan preconfirmation Helius.
Preconfirmations adalah produk baru dan harganya dapat berubah.
Terkait
Preconfirmations Overview
Penjelasan tentang Preconfirmations dan posisinya dalam pipeline validator.
transactionSubscribe
Streaming transaksi dengan commitment confirmed menggunakan pemfilteran lengkap.
preconfSubscribe API reference
Parameter permintaan, bidang filter, dan tata letak notifikasi biner.