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

Rekomendasi untuk Agen

Gunakan get_transactions_for_address sebagai pengganti pencarian dua langkah

get_transactions_for_address menggabungkan pencarian tanda tangan dan pengambilan transaksi dalam satu panggilan dengan pemfilteran di sisi server.

Gunakan send_smart_transaction 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 send_smart_transaction_with_sender. Metode ini merutekan transaksi melalui infrastruktur multiregion Helius dan Jito.

Gunakan get_asset_batch untuk beberapa aset

Saat mengambil lebih dari satu aset, proses aset tersebut sebagai batch. Jangan panggil get_asset dalam perulangan.

Gunakan webhook sebagai pengganti polling

Jangan lakukan polling terhadap get_transactions_for_address dalam perulangan. Gunakan webhook untuk notifikasi antarpeladen.

Paginasi

Berbasis Token/Kursor (Metode RPC V2)

Berbasis Halaman (DAS API)

Filter token_accounts

Saat mengueri get_transactions_for_address, filter token_accounts mengontrol apakah aktivitas akun token disertakan:

changed_since_slot — Pengambilan Akun Inkremental

changed_since_slot hanya mengembalikan akun yang diubah setelah slot tertentu. Berguna untuk alur kerja sinkronisasi atau pengindeksan. Didukung oleh get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accounts, dan get_token_accounts_by_owner.

Kesalahan Umum

  1. transaction_details: Some(TransactionDetails::Full) bukan nilai default — Secara default, get_transactions_for_address hanya mengembalikan tanda tangan. Atur TransactionDetails::Full untuk mendapatkan data transaksi lengkap.
  2. Jangan tambahkan instruksi ComputeBudget dengan send_smart_transaction — SDK menambahkannya secara otomatis. Menambahkan instruksi sendiri menyebabkan kesalahan HeliusError::InvalidInput.
  3. Biaya prioritas dinyatakan dalam microlamport per unit komputasi — Bukan lamport. Nilai dari get_priority_fee_estimate sudah menggunakan unit yang benar.
  4. Paginasi DAS dimulai dari indeks 1 — page: 1 adalah halaman pertama, bukan page: 0.
  5. async_connection() memerlukan new_async atau HeliusBuilder — Memanggil helius.async_connection() pada klien yang dibuat dengan Helius::new() akan mengembalikan Err(HeliusError::ClientNotInitialized).
  6. get_asset mengembalikan Option<Asset> — Respons yang berhasil mungkin tetap berupa None jika aset tidak ada. Tangani Option secara eksplisit.
  7. Tip Sender wajib diberikan — send_smart_transaction_with_sender secara otomatis menentukan dan menambahkan tip. Minimum 0.0002 SOL (mode Dual) atau 0.000005 SOL (khusus SWQOS).
  8. Flag fitur TLS — Secara default, crate menggunakan native-tls. Gunakan features = ["rustls"] (dan default-features = false) untuk TLS Rust murni saat OpenSSL tidak tersedia.
  9. Atur versi transaksi maksimum yang didukung ke 1 saat mengambil transaksi. get_transaction, get_block, dan get_transactions_for_address dengan TransactionDetails::Full akan gagal dengan kesalahan -32015 pada transaksi v1 jika tidak diatur demikian. Pada transaksi v1, biaya prioritas adalah transactionConfig.priorityFee milik pesan, yaitu jumlah total dalam lamport; tidak ada instruksi ComputeBudget yang perlu dipindai. Lihat Dukungan transaksi v1.

Penanganan Kesalahan dan Percobaan Ulang

SDK menyediakan varian kesalahan bertipe melalui enum HeliusError, sehingga Anda dapat mencocokkannya secara langsung:

Strategi percobaan ulang

Coba lagi saat terjadi RateLimitExceeded dan InternalError dengan jeda eksponensial: