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

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-Mint So11111111111111111111111111111111111111111. 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:00 oder 2025-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
Ungültige oder nicht unterstützte Formate (01/10/2025, 2025-13-10, 2025-02-30) geben einen 400 Fehler zurück.
Datumszeiten werden standardmäßig als UTC interpretiert. Ein bloßes Datum wie 2025-01-10 19:20:00 wird als UTC und nicht als Ihre lokale Zeit behandelt. Fügen Sie eine explizite Zeitzonenverschiebung hinzu, wenn Sie etwas anderes meinen. Das requested.time Feld der Antwort zeigt die gelösten Epochensekunden, damit Sie die Interpretation überprüfen können.

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. Wenn datetime verwendet wird, wird auch time mit 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 slot für deterministische Ergebnisse. time und datetime werden ü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 nach slot.
  • Parsen Sie Bestände als Zeichenketten. balance und balanceRaw sind Zeichenketten, um die Genauigkeit zu bewahren. Verwenden Sie BigInt(balanceRaw) (oder die willkürliche Ganzzahlen Ihrer Sprache) für Berechnungen — nicht in eine Fließkommazahl umwandeln.
  • Behandeln Sie asOf: null als Null. Ein null asOf ist 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/datetime Genauigkeit hängt von den von Validatoren gemeldeten Blockzeiten ab, die um einige Sekunden abweichen können. Verwenden Sie slot fü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.