Rekomendasi untuk Agen
Gunakan getTransactionsForAddress alih-alih pencarian dua langkah
getTransactionsForAddress menggabungkan pencarian tanda tangan dan pengambilan transaksi dalam satu panggilan dengan pemfilteran di sisi server. Fitur ini mendukung rentang waktu/slot, pemfilteran akun token, dan paginasi.
Gunakan sendSmartTransaction untuk pengiriman standar
Metode ini secara otomatis menjalankan simulasi, memperkirakan unit komputasi, mengambil biaya prioritas, dan melakukan konfirmasi. Jangan membuat instruksi ComputeBudget secara manual — SDK menambahkannya secara otomatis.
Gunakan Helius Sender untuk latensi sangat rendah
Untuk transaksi yang sensitif terhadap waktu (arbitrase, sniping, likuidasi), gunakansendTransactionWithSender. Metode ini merutekan transaksi melalui infrastruktur multiwilayah Helius dan Jito.
Gunakan getAssetBatch untuk beberapa aset
Saat mengambil lebih dari satu aset, kelompokkan aset tersebut dalam satu batch. Jangan panggil getAsset dalam perulangan.
Gunakan webhook atau WebSocket alih-alih polling
Jangan lakukan polling terhadapgetTransactionsForAddress dalam perulangan. Gunakan webhook untuk notifikasi antarserver atau WebSocket untuk streaming sisi klien secara real-time.
Paginasi
SDK menggunakan strategi paginasi yang berbeda, tergantung pada metodenya.Berbasis Token/Kursor (Metode RPC V2)
Berbasis Halaman (DAS API)
Filter tokenAccounts
Saat membuat kueri terhadap getTransactionsForAddress, filter tokenAccounts mengatur apakah aktivitas akun token disertakan:
changedSinceSlot — Pengambilan Akun Inkremental
changedSinceSlot hanya mengembalikan akun yang diubah setelah slot tertentu. Berguna untuk alur kerja sinkronisasi atau pengindeksan. Didukung oleh getProgramAccountsV2, getTokenAccountsByOwnerV2, getAccountInfo, getMultipleAccounts, getProgramAccounts, dan getTokenAccountsByOwner.
Kesalahan Umum
-
transactionDetails: "full"bukan nilai default — Secara default,getTransactionsForAddresshanya mengembalikan tanda tangan. AturtransactionDetails: "full"untuk mendapatkan data transaksi lengkap. -
Jangan tambahkan instruksi ComputeBudget dengan
sendSmartTransaction— SDK menambahkannya secara otomatis. Menambahkan instruksi Anda sendiri menyebabkan instruksi duplikat dan kegagalan transaksi. -
Biaya prioritas dinyatakan dalam microlamport per unit komputasi — Bukan lamport. Nilai dari
getPriorityFeeEstimatesudah menggunakan unit yang tepat untukSetComputeUnitPrice. -
Paginasi DAS dimulai dari indeks 1 —
page: 1adalah halaman pertama, bukanpage: 0. -
blockTimemenggunakan detik Unix, bukan milidetik — GunakanMath.floor(Date.now() / 1000)saat memfilter berdasarkanblockTime. -
getAssetmenyembunyikan token fungibel secara default — Teruskanoptions: { showFungible: true }untuk menyertakannya. -
Stream WebSocket perlu dibersihkan — Selalu gunakan sinyal AbortController dan panggil
helius.ws.close()setelah selesai untuk menghindari kebocoran koneksi. -
Atur
maxSupportedTransactionVersion: 1saat mengambil transaksi. Jika tidak,getTransaction,getBlock, dangetTransactionsForAddressdengantransactionDetails: "full"akan gagal dengan kesalahan-32015pada transaksi v1. Pada transaksi v1, biaya prioritas adalahmessage.transactionConfig.priorityFee, yaitu jumlah total dalam lamport; tidak ada instruksi ComputeBudget yang perlu dipindai. Lihat Dukungan transaksi v1.
Penanganan Kesalahan dan Percobaan Ulang
SDK melempar objekError native dengan kode status HTTP yang disematkan dalam string pesan (misalnya, "API error (429): ..."). Objek kesalahan tidak memiliki properti .status, sehingga pendeteksian status memerlukan penguraian pesan.