
Présentation des filtres de comptes de jetons pour gTFA
En octobre dernier, nous avons lancé getTransactionsForAddress, un nouvel appel RPC Solana permettant d’interroger les données historiques et combinant getSignaturesForAddress et getTransaction dans une seule méthode.
Aujourd’hui, nous sommes ravis d’annoncer que getTransactionsForAddress (gTFA) peut désormais interroger l’historique des transferts de jetons d’un portefeuille avec un seul appel RPC.
La nouvelle fonctionnalité tokenAccounts permet aux utilisateurs d’inclure les transactions des comptes de jetons associés au portefeuille — auparavant omises de gTFA et de son prédécesseur, getSignaturesForAddress.
Auparavant, les développeurs devaient interroger getTokenAccountsByOwner, puis getSignaturesForAddress pour chaque compte de jetons.
Cette approche était lente et coûteuse, nécessitant souvent des centaines d’appels RPC supplémentaires.
Désormais, un seul appel à getTransactionsForAddress avec tokenAccounts suffit.
Le problème
Sur Solana, votre portefeuille ne détient pas directement les jetons.
Votre portefeuille possède plutôt des comptes de jetons associés (ATA), qui détiennent vos jetons.
Par exemple, lorsque quelqu’un vous envoie des USDC, ils sont transférés vers votre compte de jetons USDC plutôt que vers l’adresse principale de votre portefeuille.
Cela crée un problème majeur lorsque vous interrogez l’historique des transactions d’un portefeuille :
Lorsque vous appelez getSignaturesForAddress sur un portefeuille, vous obtenez uniquement les transactions qui font directement référence à l’adresse de ce portefeuille.
Les transferts de jetons qui interagissent avec vos comptes de jetons, mais ne mentionnent pas votre portefeuille, n’apparaissent tout simplement pas.
La solution de contournement
Jusqu’à présent, les développeurs devaient mettre en œuvre une solution de contournement fastidieuse :
- Appeler
getTokenAccountsByOwnerpour obtenir les comptes de jetons d’un portefeuille - Appeler
getSignaturesForAddresspour le portefeuille lui-même - Appeler
getSignaturesForAddresspour chaque compte de jetons - Fusionner tous les résultats
- Supprimer les doublons (de nombreuses transactions concernent plusieurs comptes)
- Trier par ordre chronologique
Cette approche pose problème pour plusieurs raisons :
1. Les performances sont faibles
Un portefeuille comportant 50 comptes de jetons nécessite plus de 51 appels RPC pour constituer un historique complet. Les traders professionnels, les grands utilisateurs de DeFi ou les traders occasionnels de memecoins peuvent posséder des centaines de comptes de jetons.
2. La pagination est inefficace
Vous souhaitez obtenir les 20 transactions les plus récentes ? Vous ne pouvez pas simplement en récupérer 20 depuis chaque source et les fusionner : vous devez tout récupérer, supprimer les doublons, trier les résultats, puis seulement conserver les 20 premières transactions.
Il est impossible de paginer efficacement sans récupérer trop de données.
3. Les coûts RPC s’accumulent
Chaque appel RPC entraîne un coût supplémentaire. Le multiplier par plus de 100 appels pour chaque requête utilisateur devient rapidement coûteux, surtout à grande échelle.
La solution
Avec le nouveau filtre tokenAccounts, vous pouvez obtenir l’historique complet d’un portefeuille en une seule requête RPC :
{
"jsonrpc": "2.0",
"id": "helius-example",
"method": "getTransactionsForAddress",
"params": [
"86xCnPeV69n6t3DnyGvkKobf9FdN2H9oiVDdaMpo2MMY",
{
"filters": {
"tokenAccounts": "all"
},
"sortOrder": "asc",
"limit": 100
}
]
}C’est tout. Un seul appel. Un historique complet.
Options de filtrage
Le filtre tokenAccounts propose trois options : none, balanceChanged et all.
none (par défaut)
Lorsque le filtre tokenAccounts est défini sur none, les transactions doivent faire référence à l’adresse du portefeuille.
balanceChanged (recommandé)
Lorsque balanceChanged est appliqué, les transactions font référence à l’adresse du portefeuille ou modifient le solde d’un compte de jetons appartenant au portefeuille.
all
Définir tokenAccounts sur all exige que les transactions fassent référence à l’adresse du portefeuille ou à celle d’un compte de jetons appartenant au portefeuille.
Cas d’usage
Cette nouvelle fonctionnalité est essentielle pour :
- Les portefeuilles qui affichent l’historique complet des transactions
- Les outils de suivi de portefeuille qui doivent recenser chaque mouvement de jetons
- Les logiciels fiscaux qui calculent les gains et les pertes sur tous les jetons
- Les tableaux de bord analytiques qui affichent l’activité des utilisateurs
Commencer
La fonctionnalité tokenAccounts est disponible dès maintenant.
Ajoutez simplement tokenAccounts: balanceChanged (ou all) à votre objet filters, et le tour est joué !
Vous n’utilisez pas encore getTransactionsForAddress ?
Consultez notre documentation et nos SDK pour en savoir plus et commencer.
Articles associés
Abonnez-vous à Helius
Suivez les dernières actualités du développement sur Solana et recevez une notification à chaque publication


