Skip to main content
Meilleures pratiques et motifs recommandés pour les agents utilisant le SDK Rust de Helius. Pour l’installation et le démarrage, voir l’aperçu.

Recommandations pour les Agents

Utilisez get_transactions_for_address au lieu de la recherche en deux étapes

get_transactions_for_address combine la recherche de signature et la récupération de transaction en un seul appel avec filtrage côté serveur.

Utilisez send_smart_transaction pour les envois standard

Cela simule automatiquement, estime les unités de calcul, récupère les frais prioritaires et confirme. Ne construisez pas manuellement les instructions ComputeBudget — le SDK les ajoute automatiquement.

Utilisez Helius Sender pour une latence ultra-faible

Pour les transactions sensibles au temps (arbitrage, sniping, liquidations), utilisez send_smart_transaction_with_sender. Il utilise l’infrastructure multi-régions de Helius et Jito.

Utilisez get_asset_batch pour plusieurs actifs

Lors de la récupération de plus d’un actif, regroupez-les. N’appelez pas get_asset dans une boucle.

Utilisez les webhooks au lieu du polling

Ne faites pas de polling de get_transactions_for_address dans une boucle. Utilisez les webhooks pour les notifications de serveur à serveur.

Pagination

Basée sur un token/cursor (Méthodes RPC V2)

Basée sur une page (API DAS)

Filtre token_accounts

Lors de la requête de get_transactions_for_address, le filtre token_accounts contrôle si l’activité du compte token est incluse :

changed_since_slot — Récupération de Compte Incrémentielle

changed_since_slot ne retourne que les comptes modifiés après un slot donné. Utile pour la synchronisation ou les workflows d’indexation. Supporté par get_program_accounts_v2, get_token_accounts_by_owner_v2, get_account_info, get_multiple_accounts, get_program_accounts, et get_token_accounts_by_owner.

Erreurs Courantes

  1. transaction_details: Some(TransactionDetails::Full) n’est pas le mode par défaut — Par défaut, get_transactions_for_address retourne uniquement les signatures. Définissez TransactionDetails::Full pour obtenir les données complètes des transactions.
  2. N’ajoutez pas d’instructions ComputeBudget avec send_smart_transaction — Le SDK les ajoute automatiquement. Ajouter les vôtres provoque une erreur HeliusError::InvalidInput.
  3. Les frais prioritaires sont en microlamports par unité de calcul — Pas en lamports. Les valeurs de get_priority_fee_estimate sont déjà dans l’unité correcte.
  4. La pagination DAS commence à 1page: 1 est la première page, pas page: 0.
  5. async_connection() nécessite new_async ou HeliusBuilder — Appeler helius.async_connection() sur un client créé avec Helius::new() retourne Err(HeliusError::ClientNotInitialized).
  6. get_asset retourne Option<Asset> — Une réponse réussie peut toujours être None si l’actif n’existe pas. Gérez explicitement Option.
  7. Les pourboires pour l’expéditeur sont obligatoiressend_smart_transaction_with_sender détermine et ajoute automatiquement les pourboires. Minimum 0,0002 SOL (mode Dual) ou 0,000005 SOL (SWQOS uniquement).
  8. Indicateurs de fonctionnalité TLS — La crate utilise par défaut native-tls. Utilisez features = ["rustls"] (et default-features = false) pour TLS en pur-Rust lorsque OpenSSL n’est pas disponible.
  9. Définissez la version maximale prise en charge des transactions à 1 lors de la récupération des transactions. get_transaction, get_block, et get_transactions_for_address avec TransactionDetails::Full échouent avec l’erreur -32015 sur la transaction v1 sinon. Sur les transactions v1, le frais prioritaire est le message de transactionConfig.priorityFee, un total en lamports ; il n’y a pas d’instructions ComputeBudget à analyser. Voir Support de Transaction v1.

Gestion des Erreurs et Nouveaux Essais

Le SDK fournit des variantes d’erreurs typées via l’énumération HeliusError, vous pouvez donc les associer directement :

Stratégie de nouveau essai

Réessayez sur RateLimitExceeded et InternalError avec un backoff exponentiel :