Zum Hauptinhalt springen
Die RPC-Methode getAccountInfo ist ein grundlegendes Werkzeug für Abfragen an die Solana-Blockchain. Mit ihr kannst du alle gespeicherten Informationen abrufen, die mit dem öffentlichen Schlüssel eines bestimmten Kontos verknüpft sind. Dazu gehören das Lamport-Guthaben des Kontos, das Programm, dem es gehört, sein Ausführbarkeitsstatus und seine gespeicherten Daten.

Häufige Anwendungsfälle

  • SOL-Guthaben prüfen: Ermittle das native SOL-Guthaben eines beliebigen Kontos.
  • Existenz eines Kontos prüfen: Prüfe, ob ein Konto mit einem bestimmten öffentlichen Schlüssel initialisiert wurde, also Lamports oder Daten enthält.
  • Programmkonten untersuchen: Rufe die Daten ab, die in einem programmgesteuerten Konto gespeichert sind. Das ist entscheidend, um den Zustand eines Programms zu verstehen.
  • Eigentümer eines Kontos identifizieren: Ermittle, welchem Programm ein Konto gehört. So kannst du feststellen, wie die Daten des Kontos interpretiert werden müssen oder ob es sich um ein systemgesteuertes Konto handelt.
  • Ausführbarkeit eines Kontos prüfen: Ermittle, ob ein Konto ein bereitgestelltes Programm enthält.

Parameter

  1. publicKey (string, erforderlich): Der Base58-codierte öffentliche Schlüssel des abzufragenden Kontos.
  2. config (object, optional): Ein Konfigurationsobjekt mit den folgenden Feldern:
    • commitment (string, optional): Gibt den commitment-Level für die Abfrage an. Der Standardwert ist finalized.
      • finalized: Der node fragt den neuesten Block ab, den die Supermehrheit des cluster mit maximaler Sperrfrist bestätigt hat.
      • confirmed: Der node fragt den neuesten Block ab, über den eine Supermehrheit des cluster abgestimmt hat.
      • processed: Der node fragt seinen neuesten Block ab. Beachte, dass der Block möglicherweise noch nicht vollständig ist.
    • encoding (string, optional): Die Codierung der Kontodaten. Der Standardwert ist base64.
      • base58 (langsam)
      • base64
      • base64+zstd (wenn die Daten komprimiert sind)
      • jsonParsed: Wenn die Kontodaten einem bekannten Programmzustand entsprechen, etwa bei Token- oder Stake-Konten, versucht der node, sie in eine JSON-Struktur zu parsen. Bei generischen Programmkonten wird in der Regel stattdessen das Binärformat (Base64) verwendet.
    • dataSlice (object, optional): Beschränkt die zurückgegebenen Kontodaten auf einen bestimmten Ausschnitt. Nur für die Codierungen base58, base64 oder base64+zstd verfügbar.
      • offset (number): Die Anzahl der Bytes ab dem Anfang der Kontodaten, bei der der Ausschnitt beginnt.
      • length (number): Die Anzahl der zurückzugebenden Bytes.
    • minContextSlot (number, optional): Der früheste slot, an dem der request ausgewertet werden kann.

Response

Wenn das Konto gefunden wurde, enthält das Feld result ein Objekt mit zwei Haupteigenschaften:
  • context (object): Enthält Metadaten zum request.
    • slot (number): Der slot, an dem die Informationen abgerufen wurden.
    • apiVersion (string, optional): Die Version der RPC API.
  • value (object | null): Wenn das Konto nicht existiert, ist der Wert null. Andernfalls enthält das Objekt Folgendes:
    • lamports (number): Die Anzahl der Lamports (1 SOL = 1.000.000.000 Lamports), die dem Konto gehören.
    • owner (string): Der Base58-codierte öffentliche Schlüssel des Programms, dem dieses Konto gehört.
    • data (array | object | string): Die im Konto gespeicherten Daten. Das Format hängt vom Parameter encoding im request ab.
      • Für base64 (Standard), base58 und base64+zstd: In der Regel ist dies ein Array [encoded_string, encoding_format], zum Beispiel ["string_data", "base64"].
      • Für jsonParsed: Dies kann ein JSON-Objekt sein, wenn der RPC-node die Daten parsen kann, etwa bei SPL-Token-Konten. Andernfalls wird möglicherweise standardmäßig ["", "base64"] oder ein ähnlicher Wert verwendet, wenn die Daten keinem Standardlayout entsprechen.
    • executable (boolean): true, wenn das Konto ein Programm enthält, andernfalls false.
    • rentEpoch (number): Die nächste Epoche, in der für dieses Konto Miete fällig wird.
    • space (number, optional): Die Länge der Daten in Bytes. (Hinweis: Die offizielle Solana-Dokumentation führt space auf. Einige RPC-Anbieter schließen diesen Wert möglicherweise ebenfalls ein. Er gibt den gesamten für die Kontodaten reservierten Speicherplatz an.) Weitere Informationen zu Kontodaten und Deserialisierung findest du in unserem ausführlichen Leitfaden.
Wenn das Konto nicht gefunden wird, hat das Feld value im Ergebnis den Wert null.

Beispiel: Kontoinformationen abrufen

Rufen wir Informationen zur Serum Program V3 ID (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin) im Mainnet ab. Hinweis: Ersetze YOUR_API_KEY in den folgenden Beispielen durch deinen tatsächlichen Helius API key.

Tipps für Entwickler

  • Performance: Wenn deine Anwendung mehrere Konten häufig prüfen muss, kannst du requests mit getMultipleAccounts bündeln und so die Anzahl der Hin- und Rückübertragungen reduzieren.
  • Datendeserialisierung: Das Feld data muss häufig anhand der Datenstrukturen des besitzenden Programms deserialisiert werden. In der Regel benötigst du dafür programmspezifische Werkzeuge und Bibliotheken, etwa die SPL-Token-Bibliothek für Token-Konten. Unser Blogbeitrag zur Deserialisierung von Kontodaten enthält hilfreiche Techniken und Beispiele.
  • Rate limits: Beachte die rate limits des RPC-node, insbesondere wenn du viele Konten abfragst oder häufig requests sendest.
  • Kostenmanagement: getAccountInfo ist im Allgemeinen eine kostengünstige Abfrage. Häufiges Polling kann die Kosten jedoch erhöhen. Optimiere deine Abfragemuster.
  • Verwende jsonParsed mit Bedacht: jsonParsed ist zwar praktisch, unterstützt aber möglicherweise nicht alle Kontotypen. Die Ausgabe kann sich außerdem ändern, wenn ein Programm seine Datenstrukturen aktualisiert. Bei kritischen Anwendungen bietet das Parsen von Binärdaten mit einem bekannten Layout mehr Stabilität.
  • Ziehe dataSlice in Betracht: Wenn du nur einen kleinen Teil der Kontodaten benötigst, kannst du mit dataSlice die übertragene Datenmenge reduzieren und möglicherweise die Abfragekosten senken.

Verwandte Methoden

getMultipleAccounts

Rufe mehrere Konten für eine bessere Performance gebündelt in einem einzigen request ab

getBalance

Rufe nur das SOL-Guthaben ohne vollständige Kontodetails ab