Skip to main content
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 :

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-frappe So11111111111111111111111111111111111111111. 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:00 ou 2025-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é
Les formats non valides ou non pris en charge (01/10/2025, 2025-13-10, 2025-02-30) renvoient une erreur 400.
Les dates/ heures sont interprétées par défaut en UTC. Une date/heure simple comme 2025-01-10 19:20:00 est traitée en UTC, pas votre heure locale. Incluez un décalage de fuseau horaire explicite si vous souhaitez autre chose. Le champ requested.time de la réponse montre les secondes d’époque résolues pour que vous puissiez vérifier l’interprétation.

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 : true lorsque 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. Lorsque datetime est utilisé, time est é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 slot pour des résultats déterministes. time et datetime se 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 par slot.
  • Analysez les soldes en tant que chaînes. balance et balanceRaw sont des chaînes pour préserver la précision. Utilisez BigInt(balanceRaw) (ou les entiers à précision arbitraire de votre langage) pour l’arithmétique — ne convertissez pas en float.
  • Traitez asOf: null comme un zéro. Un null asOf est 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/datetime dépend des temps de bloc signalés par le validateur, qui peuvent dériver de quelques secondes. Utilisez slot pour 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.