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 tepat saat 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 tersedia pada semua paket berbayar — 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
includeSource→failed→regionInclude→signatures→accountExclude→accountRequired→accountInclude→signerExclude→signerInclude→instructions. - Prekonfirmasi BAM dengan status yang tidak diketahui mengabaikan filter
failed. Prekonfirmasi Helius dengan status yang tidak diketahui tidak cocok dengan filterfailedyang ditentukan secara eksplisit. includeSourceharus berupa array yang hanya berisiheliusdanbam. Nilai yang tidak valid mengembalikan kesalahan JSON-RPC-32602(parameter tidak valid).- Akun merupakan kunci publik yang dikodekan dengan base58. Nilai yang tidak valid mengembalikan kesalahan JSON-RPC
-32602(parameter tidak valid). - Setiap daftar akun atau penanda tangan dibatasi hingga 10.000 entri.
signaturesdibatasi hingga 1.000 entri.
Filter
includeBam yang sudah tidak digunakan tetap tersedia untuk kompatibilitas mundur.
includeBam: false sama dengan includeSource: ["helius"]. includeBam: true atau
bidang yang dihilangkan akan memilih kedua sumber. Jangan kirim includeBam dan
includeSource secara bersamaan.Pemfilteran penanda tangan dan tanda tangan
GunakansignerInclude untuk mencocokkan transaksi yang ditandatangani oleh akun tertentu. Gunakan signerExclude untuk menghapus transaksi yang ditandatangani oleh salah satu akun dalam daftar. Akun yang dirujuk tidak dianggap sebagai penanda tangan.
Gunakan signatures jika Anda sudah mengetahui transaksi yang ingin dilacak. Filter ini mencocokkan tanda tangan transaksi pertama, yaitu tanda tangan yang digunakan oleh metode RPC Solana. Filter tidak dapat diubah setelah Anda berlangganan, jadi buat langganan baru untuk melacak tanda tangan baru.
Pemfilteran instruksi
Gunakaninstructions untuk mencocokkan instruksi tingkat atas berdasarkan program dan data instruksi. Setiap filter instruksi mendukung bidang berikut:
Setiap entri
memcmp menerima pengodean base58, base64, atau hex. Nilai default-nya adalah base58. Transaksi cocok jika satu instruksi tingkat atas memenuhi setiap kondisi dalam salah satu filter instruksi.
Permintaan berikut mencocokkan instruksi buy pump.fun berdasarkan diskriminator Anchor-nya:
memcmp per filter instruksi. Setiap nilai memcmp harus didekodekan menjadi 1–128 bita. Offset akhir memcmp dan dataSize tidak boleh melebihi 4.096 bita.
Resolusi tabel pencarian alamat (ALT)
Filter akun mencocokkan lebih dari sekadar kunci akun statis transaksi — Helius menyelesaikan tabel pencarian alamat 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, bahkan jika akun tersebut hanya muncul di balik tabel pencarian — Anda tidak perlu memelihara pemetaan ALT atau menyelesaikan tabel sendiri. Cukup teruskan kunci publik 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 akan lolos jika wilayah asalnya cocok dengan salah satunya.
sgp dan dal.
Kode wilayah yang valid:
Saat
regionInclude ditetapkan, transaksi yang tidak membawa informasi wilayah akan dibuang. Kode wilayah yang tidak dikenali mengembalikan kesalahan JSON-RPC -32602 (parameter tidak valid).Payload notifikasi
Notifikasi dikirim sebagai frame WebSocket biner (bukan JSON). Prekonfirmasi Helius dan BAM menggunakan tata letak yang sama. Setiap frame adalah tata letak bita terkemas yang membawa satu transaksi:
Payload tidak memiliki bidang sumber. Jangan menyimpulkan asal BAM dari
tx_index = 0 karena sumber lain juga dapat melaporkan 0.
Membedakan kedua sumber
Karena tidak ada bidang sumber, Anda tidak dapat memberi label Helius atau BAM pada pesan sembarang. Bitastatus menyediakan pengklasifikasi satu arah:
statusadalah0atau1— pesan tersebut merupakan prekonfirmasi Helius dan transaksi telah dieksekusi. BAM tidak pernah melaporkan nilai ini.statusadalah2— sumbernya ambigu: dapat berupa prekonfirmasi BAM atau prekonfirmasi Helius yang status eksekusinya tidak tersedia.
regionInclude merupakan filter langganan, bukan bidang payload, sehingga tidak dapat dibaca per pesan.
Jika Anda memerlukan setiap pesan dalam stream untuk membawa jenis bukti yang sama, tetapkan includeSource: ["helius"] atau includeSource: ["bam"]. Stream khusus Helius berisi prekonfirmasi yang dipancarkan saat eksekusi pemimpin.
Prekonfirmasi adalah sinyal awal, bukan jaminan. Transaksi belum
masuk ke onchain dan masih dapat dibuang — dan status eksekusi prekonfirmasi Helius
mencerminkan hasil lokal pemimpin, yang belum final hingga
blok dikonfirmasi. Konfirmasikan bahwa transaksi sudah masuk melalui pemeriksaan commitment standar
sebelum menganggapnya final.
Mendekode transaksi
Bita transaksi diteruskan persis seperti yang diserialisasi oleh validator, dalam pengodean wire standar untuk versi transaksi tersebut. Transaksi lama dan v0 menggunakan tata letak tanda tangan terlebih dahulu yang dihasilkanbincode. Transaksi v1 (SIMD-0385) menggunakan tata letak pesan terlebih dahulu dengan tanda tangan di bagian 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.
Notifikasi duplikat
Prekonfirmasi Helius dan BAM dideduplikasi per sumber, bukan antar-sumber. Sebagian kecil transaksi mencapai Helius melalui keduanya, sehingga Anda dapat menerima tanda tangan yang sama dua kali, dan kedua salinan tersebut mungkin melaporkan slot yang berbeda. Lakukan deduplikasi berdasarkan tanda tangan di klien dan buat tindakan yang dipicu transaksi bersifat idempoten agar notifikasi kedua tidak menjalankan tindakan yang sama dua kali. Konfirmasikan eksekusi dan bahwa transaksi sudah masuk melalui pemeriksaan commitment standar.Contoh
Berhenti berlangganan
Untuk berhenti menerima notifikasi, panggilpreconfUnsubscribe dengan ID langganan yang dikembalikan dari preconfSubscribe.
Harga
Preconfirmations tersedia pada semua paket berbayar: Developer, Business, Professional, dan Enterprise. Paket gratis tidak memenuhi syarat. Lihat Kredit untuk detailnya. Slot tanpa pesan yang dikirimkan tidak dikenai kredit, meskipun slot tersebut memiliki cakupan preconfirmation. Jika suatu slot mengirimkan setidaknya satu pesan, setiap langgananpreconfSubscribe yang terbuka akan ditagih sebesar nilai yang lebih tinggi antara 300 kredit atau 10 kredit per pesan yang dikirimkan.
Slot yang tidak tercakup tidak dikenai biaya. Lihat Harga untuk kelayakan penagihan berdasarkan sumber dan wilayah.
Setiap langganan serentak ditagih secara terpisah saat menerima setidaknya satu pesan. Tutup langganan yang tidak lagi Anda perlukan dengan
preconfUnsubscribe. Dengan includeSource: ["helius"], slot tercakup khusus BAM dikecualikan dari penagihan. Saat regionInclude ditetapkan, slot tercakup di luar wilayah yang dipilih tidak dikenai biaya untuk langganan tersebut; slot yang cocok hanya ditagih jika langganan menerima setidaknya satu pesan.
Penagihan dilakukan per pesan, bukan per tanda tangan unik. Transaksi yang dikirimkan oleh Helius dan BAM dihitung dua kali. Tetapkan includeSource: ["helius"] jika Anda hanya menginginkan prekonfirmasi Helius.
Preconfirmations adalah produk baru dan harganya dapat berubah.
Terkait
Preconfirmations Overview
Penjelasan tentang Preconfirmations dan posisinya dalam alur validator.
transactionSubscribe
Lakukan streaming transaksi dengan tingkat commitment confirmed menggunakan pemfilteran yang lengkap.
preconfSubscribe API reference
Parameter permintaan, bidang filter, dan tata letak notifikasi biner.