tokenAccounts pada metode WebSocket transactionSubscribe memungkinkan langganan mencocokkan aktivitas pada akun token terkait (ATA) yang dimiliki dompet, bukan hanya transaksi yang memuat pubkey dompet secara langsung. Filter yang sama tersedia melalui gRPC — lihat Pemfilteran Akun Token (ATA) untuk versi gRPC.
Masalahnya: filter akun biasa melewatkan transfer token masuk
Saat Anda memantau dompet denganaccountInclude: [wallet], pencocokan hanya dilakukan terhadap transaksi yang memuat pubkey dompet tersebut dalam kunci akun transaksi. Ada kasus umum yang terlewat: ketika seseorang mengirim token SPL (misalnya USDC) ke dompet, transfer tersebut menyentuh akun token terkait (ATA) milik dompet — alamat terpisah yang diturunkan oleh program — bukan pubkey dompet itu sendiri.
Karena itu, langganan accountInclude: [wallet] biasa tidak pernah mendeteksi transfer token masuk. Anda harus mencantumkan terlebih dahulu setiap ATA yang dimiliki dompet dan menambahkan masing-masing ke filter — tetapi ATA dibuat sesuai kebutuhan (satu per mint), sehingga Anda tidak dapat mengetahui seluruh daftarnya sebelumnya.
Cara kerja perluasan tokenAccounts
Tetapkan tokenAccounts pada langganan untuk memperluas pencocokan agar dompet accountInclude juga cocok dengan transaksi yang menyentuh akun token miliknya. Pencocokan ini berbasis pemilik: LaserStream mencari akun token yang dimiliki oleh alamat accountInclude Anda pada saat pencocokan, sehingga dapat mendeteksi setiap akun token yang dimiliki dompet — termasuk akun nonkanonis — bukan hanya alamat ATA turunan. Anda tidak perlu mencantumkan sendiri ATA tersebut.
Langganan yang tidak menyertakan tokenAccounts tetap berperilaku persis seperti sebelumnya, sehingga opsi ini aman ditambahkan ke filter yang ada.
Mode perluasan
tokenAccounts menerima salah satu dari tiga nilai string:
Mulailah dengan
"balanceChanged". Nilai ini menangkap pergerakan dana nyata dengan volume yang jauh lebih kecil dibandingkan "all".
Menggunakannya dalam transactionSubscribe
tokenAccounts adalah ekstensi Helius untuk API WebSocket Solana standar. Nilai yang tidak valid akan menghasilkan kesalahan JSON-RPC -32602: Invalid tokenAccounts value '<x>', expected one of: none, balanceChanged, all.
Membaca hasil yang cocok
Setelah transaksi cocok melalui perluasan ATA, pergerakan token dompet berada dalammeta.postTokenBalances dan meta.preTokenBalances transaksi. Filter entri tersebut berdasarkan owner untuk mengisolasi saldo yang benar-benar dimiliki dompet Anda, lalu bandingkan selisih preTokenBalances dengan postTokenBalances pada accountIndex yang sama untuk melihat jumlah perpindahan setiap mint. Contoh di atas menunjukkan langkah pemfilteran tersebut.
Terkait
transactionSubscribe
Setiap filter dan opsi
transactionSubscribe, termasuk tokenAccounts.Token Account Filtering (gRPC)
Perluasan
tokenAccounts yang sama pada filter transaksi gRPC LaserStream.WebSocket Quickstart
Hubungkan ke WebSocket LaserStream dan alirkan peristiwa pertama Anda.