Skip to main content

Apa itu transactionSubscribe?

Metode WebSocket transactionSubscribe (ekstensi Helius untuk API WebSocket Solana standar) memungkinkan peristiwa transaksi secara real-time. Untuk menggunakannya, berikan TransactionSubscribeFilter dan sertakan TransactionSubscribeOptions secara opsional untuk penyesuaian lebih lanjut. transactionSubscribe tersedia pada endpoint wss://mainnet.helius-rpc.com dan wss://devnet.helius-rpc.com terpadu yang sama dengan metode langganan Solana standar.

TransactionSubscribeFilter

  • vote: flag boolean untuk menyertakan/mengecualikan transaksi terkait voting
  • failed: flag boolean untuk menyertakan/mengecualikan transaksi yang gagal
  • signature: memfilter pembaruan ke transaksi tertentu berdasarkan tanda tangannya
  • accountInclude: daftar akun yang pembaruan transaksinya ingin Anda terima. Hanya salah satu akun yang harus disertakan dalam pembaruan transaksi (misalnya, Akun 1 ATAU 2).
  • accountExclude: daftar akun yang ingin Anda kecualikan dari pembaruan transaksi
  • accountRequired: transaksi harus menyertakan semua akun yang ditentukan agar disertakan dalam pembaruan (misalnya, Akun 1 DAN 2)
  • tokenAccounts: perluasan associated token account (ATA) yang dapat diaktifkan (balanceChanged, all, atau none). Lihat Memantau dompet, termasuk transfer token di bawah.
Anda dapat menyertakan hingga 50.000 alamat dalam array accountInclude, accountExclude, dan accountRequired.

TransactionSubscribeOptions (Opsional)

  • commitment: tingkat commitment untuk mengambil data (processed, confirmed, atau finalized)
  • encoding: format encoding data yang dikembalikan (base58, base64, atau jsonParsed)
  • transactionDetails: tingkat detail data yang dikembalikan (full, signatures, accounts, dan none)
  • showRewards: flag boolean yang menunjukkan apakah data reward harus disertakan dalam pembaruan
  • maxSupportedTransactionVersion: menentukan versi transaksi tertinggi yang pembaruannya ingin Anda terima. Tetapkan nilainya ke 1 untuk menerima transaksi legacy, v0, dan v1. Lihat Dukungan transaksi v1.
maxSupportedTransactionVersion diperlukan untuk mengembalikan akun dan detail tingkat penuh dari transaksi tertentu (yaitu, transactionDetails: "accounts" | "full").

Contoh Langganan Transaksi

Dalam contoh ini, kami berlangganan transaksi yang memuat akun Raydium 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8. Ketika terjadi transaksi yang memuat akun 675k...1Mp8 dalam accountKeys transaksi tersebut, kami akan menerima notifikasi WSS. Berdasarkan opsi langganan, notifikasi transaksi akan dikirim pada tingkat commitment processed, menggunakan encoding jsonParsed dan detail transaksi full, serta akan menampilkan reward.

Contoh Notifikasi

Memantau Dompet, Termasuk Transfer Token

Saat Anda memantau dompet dengan accountInclude, hanya transaksi yang kunci publik dompetnya muncul secara langsung dalam kunci akun yang akan cocok. Satu kasus umum dapat terlewat: ketika seseorang mengirim token SPL (misalnya USDC) ke dompet tersebut, transfer menyentuh associated token account (ATA) milik dompet, bukan kunci publik dompet—sehingga langganan accountInclude: [wallet] biasa tidak pernah mendeteksinya. Tetapkan bidang tokenAccounts untuk memperluas pencocokan agar akun yang dipantau juga cocok dengan transaksi ketika akun tersebut memiliki saldo token:
  • balanceChanged: cocok ketika dompet memiliki saldo token yang jumlahnya berubah (atau yang akun tokennya ditutup) dalam transaksi. Gunakan opsi ini untuk “beri tahu saya saat dana benar-benar berpindah.” Ini adalah pilihan yang lebih sempit, dengan volume lebih rendah, dan paling umum.
  • all: cocok dengan transaksi apa pun yang merujuk pada saldo token milik dompet, meskipun tidak berubah. Volumenya lebih tinggi.
  • none: tanpa perluasan. Sama seperti menghilangkan bidang tersebut (nilai default).
Pencocokan didasarkan pada pemilik: metode ini menangkap akun token apa pun yang dimiliki dompet, termasuk akun nonkanonis, bukan hanya alamat ATA turunan. Nilai yang tidak valid mengembalikan kesalahan JSON-RPC -32602. Langganan yang tidak menyertakan tokenAccounts berperilaku sama persis seperti sebelumnya. Untuk ringkasan lengkap tentang cara kerja perluasan ATA, lihat Pemfilteran Akun Token (ATA) melalui WebSocket.

Memantau DCA Jupiter Baru

DCA Jupiter, atau Dollar Cost Averaging, adalah cara untuk menjadwalkan perdagangan berulang di Solana. Karena order beli/jual terjadwal ini dicatat secara on-chain, trader dapat menggunakan metode transactionSubscribe dan getAsset untuk memantau order baru.

Contoh Notifikasi

Terminal tables of new Jupiter DCA orders showing the user wallet, token pair, open time, total input, amount per cycle, and interval

Memantau Token pump.fun Baru

Contoh Notifikasi

Terminal tables of newly created pump.fun tokens showing the transaction signature, creator wallet, and token mint address

Mengelola Langganan

ID Langganan

Ketika transactionSubscribe berhasil, server mengembalikan ID langganan dalam bidang result. Ini adalah nomor yang sama dengan yang muncul dalam params.subscription pada setiap notifikasi dari langganan tersebut:
Simpan ID langganan dari respons. Anda memerlukannya untuk berhenti berlangganan.

Berhenti Berlangganan

Untuk berhenti menerima notifikasi, panggil transactionUnsubscribe dengan ID langganan. Setiap panggilan transactionSubscribe pada koneksi yang sama membuat langganan terpisah dengan ID-nya sendiri. Jadi, pastikan Anda berhenti berlangganan sebelum berlangganan kembali agar tidak menerima notifikasi duplikat.
Dalam contoh ini, kami berlangganan transaksi Raydium, mengambil ID langganan dari respons server, lalu berhenti berlangganan menggunakan ID tersebut. Beberapa pesan yang sedang diproses mungkin masih tiba sesaat setelah memanggil transactionUnsubscribe. Ini adalah perilaku yang diharapkan.