Die Wallet API ist in der Beta-Phase. Endpunkte und Antwortformate können sich ändern.
Übersicht
Der Endpunkt für den historischen Bestand beantwortet: Wie war der Kontostand dieses Wallets eines bestimmten Tokens (oder nativen SOL) zu einem bestimmten Zeitpunkt in der Vergangenheit? Während der Balances Endpunkt aktuelle Bestände meldet, meldetbalance-at Bestände zu jedem beliebigen Zeitpunkt, Datum oder Slot.
Er findet die einzige neueste Transaktion zum oder vor dem angeforderten Zeitpunkt, die das Wallet und den Token betrifft, und liest dann den Post-Transaktionsbestand des Wallets aus dieser Transaktion aus. Der Post-Bestand einer Transaktion ist der Bestand, der von dieser Transaktion bis zur nächsten gehalten wurde. Der „Kontostand zum Zeitpunkt T“ ist also der Post-Bestand der letzten relevanten Transaktion mit einem Blockzeitpunkt (oder Slot) zum oder vor T. Für das typische Wallet ist dies ein exakter Wert, keine Schätzung.
- Tokens (SPL / Token-2022): Von den Post-Token-Beständen der Transaktion gelesen, summiert über die Token-Konten des Wallets für diesen Mint.
- Nativer SOL: Aus den Lamport-Post-Beständen der Transaktion gelesen. Adresse nativer SOL mit dem Pseudo-Mint
So11111111111111111111111111111111111111111.
Wann man das verwenden soll
Verwenden Sie die Historical Balance API für:- PnL-Berechnung: Bestimmung der Bestände zu Beginn und Ende eines Zeitraums.
- Kostenbasis und Steuerlots: Rekonstruktion von Beständen bei Erwerbs- oder Veräußerungsereignissen.
- Konfliktlösung: Nachweis, was ein Wallet zu einem bestimmten Zeitpunkt gehalten hat.
- Snapshot-Verifizierung: Überprüfung des Guthabens eines Wallets bei einem Airdrop- oder Governance-Snapshot.
- Buchhaltung und Prüfungen: Rekonstruktion des Wallet-Zustands an Periodengrenzen.
Schnellstart
Tokenbestand zu einem Zeitpunkt
Ermitteln Sie den USDC-Bestand eines Wallets zu einem Unix-Zeitstempel:- JavaScript
- Python
- cURL
Tokenbestand zu einem Datum
Geben Sie ein menschenlesbares Datum anstelle eines Zeitstempels an. Denken Sie daran, den Leerraum als%20 zu URL-kodieren:
Nativer SOL-Bestand zu einem Slot
Verwenden Sie für nativen SOL den Pseudo-MintSo11111111111111111111111111111111111111111. Slot-basierte Abfragen sind exakt und deterministisch:
Abfrageparameter
Genau eines von
time, datetime oder slot muss angegeben werden. Das Angeben von null oder mehr als einem erfolgt ein 400 Fehler.
Datumszeitformate
Akzeptierte Formate:- Nur Datum:
2025-01-10→ UTC Mitternacht - Datum + Uhrzeit:
2025-01-10 19:20:00oder2025-01-10T19:20:00(Sekunden optional) → UTC - Mit expliziter Zeitzone:
2025-01-10T19:20:00Z,2025-01-10T19:20:00+02:00,2025-01-10T19:20:00-05:00→ wie angegeben berücksichtigt
01/10/2025, 2025-13-10, 2025-02-30) geben einen 400 Fehler zurück.
Antwortformat
Feldhinweise
wallet: Echo der abgefragten Wallet-Adresse.mint: Echo des abgefragten Mints (der SOL Pseudo-Mint, wenn nativ).isNative:true, wenn das Ergebnis nativer SOL ist.balance: Menschlich lesbare Menge als Dezimalzeichenkette — eine Zeichenkette, keine Zahl, damit große Bestände keine Genauigkeit verlieren. Nachkommende Nullen werden abgeschnitten ("1.5", nicht"1.500000").balanceRaw: Exakte Menge in der kleinsten Einheit (Lamports für SOL), als Zeichenkette.decimals: Token Dezimalstellen (9 für SOL).requested: Echo der Abfrage. Wenndatetimeverwendet wird, wird auchtimemit den gelösten Epochensekunden befüllt, wodurch die UTC-Interpretation sichtbar wird.asOf: Die Transaktion, von der der Bestand gelesen wurde (slot,blockTime,signature).
asOf: null bedeutet Null, nicht ein Fehler. Wenn das Wallet keine Übereinstimmende Transaktion zum oder vor dem angeforderten Zeitpunkt hatte, gibt der Endpunkt 200 mit balance: "0" und asOf: null zurück — das Wallet hatte den Token bis dahin einfach nicht gehalten.
Anwendungsfälle
Bestandsänderung über einen Zeitraum
Vergleichen Sie Bestände zu zwei Zeitpunkten:Prüfen der Snapshot-Berechtigung
Verifizieren Sie, dass ein Wallet einen Token zu einem Snapshot-Slot gehalten hat:Best Practices
- Verwenden Sie
slotfür deterministische Ergebnisse.timeunddatetimewerden über von Validatoren gemeldete Blockzeiten aufgelöst, die um einige Sekunden abweichen können. Wenn eine genaue Reproduzierbarkeit wichtig ist (Snapshots, Prüfungen), fragen Sie nachslot. - Parsen Sie Bestände als Zeichenketten.
balanceundbalanceRawsind Zeichenketten, um die Genauigkeit zu bewahren. Verwenden SieBigInt(balanceRaw)(oder die willkürliche Ganzzahlen Ihrer Sprache) für Berechnungen — nicht in eine Fließkommazahl umwandeln. - Behandeln Sie
asOf: nullals Null. EinnullasOfist eine erfolgreiche Antwort, die bedeutet, dass das Wallet bis zum angeforderten Zeitpunkt keine Aktivität für diesen Token hatte. Behandeln Sie es nicht als Fehler. - Cache historische Ergebnisse. Ein Bestand zu einem vergangenen Zeitpunkt ändert sich nie. Speichern Sie Ergebnisse dauerhaft im Cache, um wiederholte API-Aufrufe zu vermeiden.
Häufige Fehler
Einschränkungen
- Multi-Token-Account Wallets können unterzählt sein. Der Bestand wird aus der einzigen neuesten passenden Transaktion gelesen. Der häufige Fall — ein zugeordneter Token-Account pro Mint — ist exakt. Ein Wallet, das denselben Mint über mehrere Token-Konten hält, bei dem die letzte Transaktion nur einige von ihnen berührte, kann unterzählt sein.
- Nativer SOL-Genauigkeit für sehr große Bestände. Für SOL-Bestände über ~9.007.199 SOL (2⁵³ Lamports) kann genauigkeit stromaufwärts verloren gehen. Token-Beträge sind nicht betroffen.
time/datetimeGenauigkeit hängt von den von Validatoren gemeldeten Blockzeiten ab, die um einige Sekunden abweichen können. Verwenden Sieslotfür exakte, deterministische Ergebnisse.- Einzelner Token pro Anfrage. Es gibt keine Multi-Mint- oder „alle Bestände zu Zeitpunkt T“-Batch-Form.
Nächste Schritte
Wallet-Bestände
Abrufen der aktuellen Token- und NFT-Bestände eines Wallets mit USD-Werten.
Übersicht über die Wallet-API
Alle Wallet-API-Endpunkte und gemeinsamen Konventionen.
API-Referenz
Anforderungs- und Antwortschemas für historische Bestände.