L’API Wallet est en version bêta. Les points de terminaison et les formats de réponse peuvent changer.
Aperçu
Le point de terminaison de solde historique répond : quel était le solde de ce portefeuille pour un jeton spécifique (ou SOL natif) à un moment précis dans le passé ? Tandis que le point de terminaison Balances rapporte les avoirs actuels,balance-at rapporte les avoirs à tout moment, date ou slot.
Il trouve la transaction unique la plus récente à ou avant le moment demandé qui impliquait le portefeuille et le jeton, puis lit le solde post-transaction du portefeuille à partir de cette transaction. Le solde post-transaction est le solde détenu après cette transaction jusqu’à la suivante, donc “solde à l’heure T” est le solde post-transaction de la dernière transaction pertinente avec un bloc horaire (ou slot) à ou avant T. Pour un portefeuille typique, il s’agit d’une valeur exacte, pas une estimation.
- Jetons (SPL / Token-2022) : lu à partir des soldes post-transaction des jetons, sommé sur les comptes de jetons du portefeuille pour cette frappe.
- SOL natif : lu à partir des soldes post-transaction des lamports. Adressez SOL natif avec le pseudo-frappe
So11111111111111111111111111111111111111111.
Quand l’utiliser
Utilisez l’API de solde historique pour :- Calcul PnL : déterminer les avoirs au début et à la fin d’une période.
- Base de coût et lots fiscaux : reconstruire les soldes lors d’événements d’acquisition ou de cession.
- Résolution de litige : prouver ce qu’un portefeuille détenait à un moment précis.
- Vérification de capture instantanée : vérifier le solde d’un portefeuille lors d’un largage ou d’une capture de gouvernance.
- Comptabilité et audits : reconstruire l’état du portefeuille aux limites de période.
Démarrage rapide
Solde de jetons à un moment donné
Obtenez le solde USDC d’un portefeuille à un horodatage Unix :- JavaScript
- Python
- cURL
Solde de jetons à une date/heure
Passez une date/heure lisible au lieu d’un horodatage. N’oubliez pas d’encoder l’espace en URL comme%20 :
Solde de SOL natif à un slot
Pour SOL natif, utilisez le pseudo-frappeSo11111111111111111111111111111111111111111. Les requêtes basées sur les slots sont exactes et déterministes :
Paramètres de requête
Exactement un de
time, datetime, ou slot doit être fourni. Fournir zéro ou plus d’un retourne une erreur 400.
Formats de date/heure
Formats acceptés :- Date uniquement :
2025-01-10→ UTC minuit - Date + heure :
2025-01-10 19:20:00ou2025-01-10T19:20:00(secondes optionnelles) → UTC - Avec fuseau horaire explicite :
2025-01-10T19:20:00Z,2025-01-10T19:20:00+02:00,2025-01-10T19:20:00-05:00→ respecté tel que donné
01/10/2025, 2025-13-10, 2025-02-30) renvoient une erreur 400.
Format de réponse
Notes sur les champs
wallet: écho de l’adresse du portefeuille interrogée.mint: écho de la frappe interrogée (la pseudo-frappe SOL lorsque natif).isNative:truelorsque le résultat est SOL natif.balance: montant lisible par l’homme comme une chaîne décimale — une chaîne, pas un nombre, pour que les grands soldes ne perdent pas en précision. Les zéros finaux sont supprimés ("1.5", pas"1.500000").balanceRaw: montant exact dans l’unité la plus petite (lamports pour SOL), sous forme de chaîne.decimals: décimales du jeton (9 pour SOL).requested: écho de la requête. Lorsquedatetimeest utilisé,timeest également rempli avec les secondes d’époque résolues, rendant visible l’interprétation UTC.asOf: la transaction à partir de laquelle le solde a été lu (slot,blockTime,signature).
asOf: null signifie zéro, pas une erreur. Lorsque le portefeuille n’avait aucune transaction correspondante à ou avant le moment demandé, le point de terminaison renvoie 200 avec balance: "0" et asOf: null — le portefeuille n’avait tout simplement pas détenu le jeton à ce moment-là.
Cas d’utilisation
Changement de solde sur une période
Comparer les avoirs à deux moments différents :Vérification d’éligibilité à une capture instantanée
Vérifiez qu’un portefeuille détenait un jeton à un slot de capture instantanée :Bonnes pratiques
- Utilisez
slotpour des résultats déterministes.timeetdatetimese résolvent par les temps de bloc signalés par le validateur, qui peuvent dériver de quelques secondes. Lorsque la reproductibilité exacte est importante (captures, audits), interrogez parslot. - Analysez les soldes en tant que chaînes.
balanceetbalanceRawsont des chaînes pour préserver la précision. UtilisezBigInt(balanceRaw)(ou les entiers à précision arbitraire de votre langage) pour l’arithmétique — ne convertissez pas en float. - Traitez
asOf: nullcomme un zéro. UnnullasOfest une réponse réussie signifiant que le portefeuille n’avait aucune activité pour ce jeton à la date demandée. Ne le traitez pas comme une erreur. - Mettre en cache les résultats historiques. Un solde à un moment passé ne change jamais. Mettez en cache les résultats en permanence pour éviter des appels API répétés.
Erreurs courantes
Limitations
- Les portefeuilles multi-comptes de jetons peuvent être sous-comptés. Le solde est lu à partir de la transaction unique correspondante la plus récente. Le cas commun — un compte de jetons associé par frappe — est exact. Un portefeuille détenant la même frappe sur plusieurs comptes de jetons, où la dernière transaction n’en touchait que certains, peut être sous-compté.
- Précision du SOL natif pour les très grands soldes. Pour les soldes SOL au-delà de ~9 007 199 SOL (2⁵³ lamports), la précision peut être perdue en amont. Les montants des jetons ne sont pas affectés.
- La précision de
time/datetimedépend des temps de bloc signalés par le validateur, qui peuvent dériver de quelques secondes. Utilisezslotpour des résultats exacts et déterministes. - Un seul jeton par requête. Il n’y a pas de formulaire batch multi-frappes ou “tous les soldes à l’heure T”.
Prochaines étapes
Soldes des portefeuilles
Obtenez les avoirs actuels en jetons et NFT d’un portefeuille avec des valeurs en USD.
Aperçu de l'API Wallet
Tous les points de terminaison de l’API Wallet et conventions partagées.
Référence API
Schémas de requête et de réponse pour le solde historique.