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), utilisezsend_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 deget_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
-
transaction_details: Some(TransactionDetails::Full)n’est pas le mode par défaut — Par défaut,get_transactions_for_addressretourne uniquement les signatures. DéfinissezTransactionDetails::Fullpour obtenir les données complètes des transactions. -
N’ajoutez pas d’instructions ComputeBudget avec
send_smart_transaction— Le SDK les ajoute automatiquement. Ajouter les vôtres provoque une erreurHeliusError::InvalidInput. -
Les frais prioritaires sont en microlamports par unité de calcul — Pas en lamports. Les valeurs de
get_priority_fee_estimatesont déjà dans l’unité correcte. -
La pagination DAS commence à 1 —
page: 1est la première page, paspage: 0. -
async_connection()nécessitenew_asyncouHeliusBuilder— Appelerhelius.async_connection()sur un client créé avecHelius::new()retourneErr(HeliusError::ClientNotInitialized). -
get_assetretourneOption<Asset>— Une réponse réussie peut toujours êtreNonesi l’actif n’existe pas. Gérez explicitementOption. -
Les pourboires pour l’expéditeur sont obligatoires —
send_smart_transaction_with_senderdétermine et ajoute automatiquement les pourboires. Minimum 0,0002 SOL (mode Dual) ou 0,000005 SOL (SWQOS uniquement). -
Indicateurs de fonctionnalité TLS — La crate utilise par défaut
native-tls. Utilisezfeatures = ["rustls"](etdefault-features = false) pour TLS en pur-Rust lorsque OpenSSL n’est pas disponible. -
Définissez la version maximale prise en charge des transactions à 1 lors de la récupération des transactions.
get_transaction,get_block, etget_transactions_for_addressavecTransactionDetails::Fulléchouent avec l’erreur-32015sur la transaction v1 sinon. Sur les transactions v1, le frais prioritaire est le message detransactionConfig.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érationHeliusError, vous pouvez donc les associer directement :
Stratégie de nouveau essai
Réessayez surRateLimitExceeded et InternalError avec un backoff exponentiel :