Skip to main content
Praktik terbaik dan pola yang direkomendasikan untuk agen yang menggunakan Helius TypeScript SDK. Untuk instalasi dan langkah awal, lihat ringkasan.

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), gunakan sendTransactionWithSender. 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 terhadap getTransactionsForAddress 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

  1. transactionDetails: "full" bukan nilai default — Secara default, getTransactionsForAddress hanya mengembalikan tanda tangan. Atur transactionDetails: "full" untuk mendapatkan data transaksi lengkap.
  2. Jangan tambahkan instruksi ComputeBudget dengan sendSmartTransaction — SDK menambahkannya secara otomatis. Menambahkan instruksi Anda sendiri menyebabkan instruksi duplikat dan kegagalan transaksi.
  3. Biaya prioritas dinyatakan dalam microlamport per unit komputasi — Bukan lamport. Nilai dari getPriorityFeeEstimate sudah menggunakan unit yang tepat untuk SetComputeUnitPrice.
  4. Paginasi DAS dimulai dari indeks 1 — page: 1 adalah halaman pertama, bukan page: 0.
  5. blockTime menggunakan detik Unix, bukan milidetik — Gunakan Math.floor(Date.now() / 1000) saat memfilter berdasarkan blockTime.
  6. getAsset menyembunyikan token fungibel secara default — Teruskan options: { showFungible: true } untuk menyertakannya.
  7. Stream WebSocket perlu dibersihkan — Selalu gunakan sinyal AbortController dan panggil helius.ws.close() setelah selesai untuk menghindari kebocoran koneksi.
  8. Atur maxSupportedTransactionVersion: 1 saat mengambil transaksi. Jika tidak, getTransaction, getBlock, dan getTransactionsForAddress dengan transactionDetails: "full" akan gagal dengan kesalahan -32015 pada transaksi v1. Pada transaksi v1, biaya prioritas adalah message.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 objek Error 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.