getAccountInfo RPC-Methode ist ein grundlegendes Werkzeug zum Abfragen der Solana-Blockchain. Sie ermöglicht das Abrufen aller gespeicherten Informationen, die mit einem bestimmten Konto-Public-Key verbunden sind. Dazu gehören der Lamport-Saldo des Kontos, das Programm, dem es gehört, ob es ausführbar ist, und seine gespeicherten Daten.
Häufige Anwendungsfälle
- Prüfung des SOL-Guthabens: Bestimmen Sie das native SOL-Guthaben eines Kontos.
- Überprüfung der Konto-Existenz: Prüfen Sie, ob ein Konto mit einem gegebenen Public Key initialisiert wurde (d. h. ob Lamports oder Daten vorhanden sind).
- Untersuchung von Programmkonten: Rufen Sie die in einem Konto gespeicherten Daten ab, das einem Programm gehört, was entscheidend für das Verständnis des Programmzustands ist.
- Identifizierung des Kontoinhabers: Finden Sie heraus, welches Programm der Inhaber eines Kontos ist. Dies hilft zu bestimmen, wie die Kontodaten interpretiert werden sollten oder ob es sich um ein systemeigenes Konto handelt.
- Prüfung, ob ein Konto ausführbar ist: Erkennen Sie, ob ein Konto ein bereitgestelltes Programm enthält.
Parameter
-
publicKey(string, erforderlich): Der base-58-kodierte Public Key des abzufragenden Kontos. -
config(Objekt, optional): Ein Konfigurationsobjekt mit den folgenden Feldern:commitment(string, optional): Gibt das zu verwendende Commitment Level für die Abfrage an. Standardmäßig istfinalized.finalized: Der Knoten wird den zuletzt bestätigten Block abfragen, der von der Supermehrheit des Clusters als maximale Sperrung erreicht wurde.confirmed: Der Knoten wird den zuletzt vom Supermehrheit des Clusters abgestimmten Block abfragen.processed: Der Knoten wird seinen zuletzt erstellten Block abfragen. Beachten Sie, dass der Block möglicherweise nicht vollständig ist.
encoding(string, optional): Die Codierung für Kontodaten. Standardmäßig istbase64.base58(langsam)base64base64+zstd(wenn Daten komprimiert sind)jsonParsed: Wenn die Kontodaten ein bekannter Programmzustand sind (z. B. Token-Konten, Stake-Konten), wird der Knoten versuchen, sie in eine JSON-Struktur zu parsen. Für generische Programmkonten fällt dies normalerweise auf binär (base64) zurück.
dataSlice(Objekt, optional): Begrenzt die zurückgegebenen Kontodaten auf einen bestimmten Abschnitt. Nur verfügbar fürbase58,base64oderbase64+zstdCodierungen.offset(Zahl): Die Anzahl der Bytes vom Start der Kontodaten, um den Abschnitt zu beginnen.length(Zahl): Die Anzahl der zurückzugebenden Bytes.
minContextSlot(Zahl, optional): Der minimale Slot, bei dem die Anforderung bewertet werden kann.
Antwort
Wenn das Konto gefunden wird, enthält dasresult-Feld ein Objekt mit zwei Haupt-Eigenschaften:
-
context(Objekt): Enthält Metadaten über die Anfrage.slot(Zahl): Der Slot, bei dem die Information abgerufen wurde.apiVersion(string, optional): Die RPC-API-Version.
-
value(Objekt | null): Wenn das Konto nicht existiert, wird diesnullsein. Andernfalls ist es ein Objekt, das Folgendes enthält:lamports(Zahl): Die Anzahl der Lamports (1 SOL = 1.000.000.000 Lamports), die dem Konto gehören.owner(string): Der base-58-kodierte Public Key des Programms, dem dieses Konto gehört.data(Array | Objekt | string): Die im Konto gespeicherten Daten. Das Format hängt von dem im Anfrage verwendetenencoding-Parameter ab.- Für
base64(Standard),base58,base64+zstd: Dies ist typischerweise ein Array[encoded_string, encoding_format], z. B.["string_data", "base64"]. - Für
jsonParsed: Dies kann ein JSON-Objekt sein, wenn die Daten vom RPC-Knoten parsiert werden können (z. B. für SPL-Token-Konten). Andernfalls kann es auf["", "base64"]oder ähnlich zurückfallen, wenn die Daten nicht als Standardlayout erkannt werden.
- Für
executable(boolean):true, wenn das Konto ein Programm enthält,falseandernfalls.rentEpoch(Zahl): Das nächste Epoch, zu dem dieses Konto Miete schuldet.space(Zahl, optional): Die Länge der Daten in Bytes. (Hinweis: Die offiziellen Solana-Dokumente listenspace, während einige RPC-Anbieter es einbeziehen könnten. Es stellt den gesamten für die Kontodaten zugewiesenen Speicherplatz dar). Für weitere Details zu Kontodaten und Deserialisierung, siehe unseren detaillierten Leitfaden.
value-Feld im Ergebnis null.
Beispiel: Abrufen von Kontoinformationen
Holen wir Informationen für die Serum Program V3 ID (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin) im Mainnet ab.
Hinweis: Ersetzen Sie YOUR_API_KEY durch Ihren tatsächlichen Helius-API-Schlüssel in den folgenden Beispielen.
Entwicklertipps
- Leistung: Für Anwendungen, die häufige Überprüfungen mehrerer Konten erfordern, sollten Sie
getMultipleAccountsverwenden, um Anfragen zu bündeln und Rundreisen zu reduzieren. - Daten-Deserialisierung: Das
data-Feld erfordert oft eine Deserialisierung basierend auf den Datenstrukturen des Eigentümerprogramms. Werkzeuge und Bibliotheken, die spezifisch für das Programm sind (z. B. SPL-Token-Bibliothek für Token-Konten), werden in der Regel benötigt. Unser Blogpost zur Deserialisierung von Kontodaten bietet hilfreiche Techniken und Beispiele. - Ratenlimits: Beachten Sie die Ratenlimits des RPC-Knotens, insbesondere wenn eine große Anzahl von Konten abgefragt wird oder häufige Anfragen gestellt werden.
- Kostenmanagement:
getAccountInfoist im Allgemeinen eine kostengünstige Abfrage, aber häufiges Abrufen kann sich summieren. Optimieren Sie Ihre Abfragemuster. - Verwenden Sie
jsonParsedmit Bedacht: WährendjsonParsedpraktisch sein kann, unterstützt es möglicherweise nicht alle Kontotypen, und sein Output kann sich ändern, wenn ein Programm seine Datenstrukturen aktualisiert. Für kritische Anwendungen bietet das Parsen von Binärdaten mit einem bekannten Layout mehr Stabilität. - Erwägen Sie
dataSlice: Wenn Sie nur einen kleinen Teil der Kontodaten benötigen, verwenden SiedataSlice, um die übertragenen Daten zu reduzieren und möglicherweise die Abfragekosten zu senken.
Verwandte Methoden
getMultipleAccounts
Abrufen mehrerer Konten in einer einzigen Anfrage für bessere Leistung
getBalance
Nur das SOL-Guthaben ohne vollständige Kontodetails abrufen