getMultipleAccounts ruft Informationen für eine Liste von Solana-Konten besonders effizient gleichzeitig ab. Anstatt für jedes Konto einen eigenen getAccountInfo request zu senden, kannst du diese requests mit getMultipleAccounts bündeln. Das reduziert den Netzwerk-Overhead und verbessert die Reaktionsfähigkeit deiner Anwendung.
Häufige Anwendungsfälle
- Kontodaten gebündelt laden: Wenn deine Anwendung Daten aus mehreren bekannten Konten anzeigen oder verarbeiten muss, z. B. die Token-Konten eines Benutzers oder eine Liste von On-Chain-Programmkonfigurationen.
- Portfolio-Tracker: Guthaben und Zustände zahlreicher Token-Konten eines Benutzers abrufen.
- Marketplace-Benutzeroberflächen: Details zu mehreren NFTs oder angebotenen Artikeln anzeigen, indem du ihre Kontodaten in einem Durchgang abrufst.
- dApp-Performance verbessern: Die Anzahl der RPC-Aufrufe deutlich reduzieren. Das verkürzt die Ladezeiten und verbessert besonders bei vielen Konten die Benutzererfahrung.
Request-Parameter
-
pubkeys(arrayausstring, erforderlich):- Ein Array mit Base58-codierten Public-Key-Strings für die Konten, die du abfragen möchtest.
- Maximal 100 Public Keys pro request.
- Beispiel:
["So11111111111111111111111111111111111111112", "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]
-
options(object, optional): Ein Konfigurationsobjekt mit einem oder mehreren der folgenden Felder:commitment(string): Legt das commitment level für die Abfrage fest, z. B."finalized","confirmed"oder"processed".encoding(string): Die Codierung der Kontodaten. Folgende Optionen sind verfügbar:"base64"(Standard): Standardmäßige Base64-Codierung."base58": Langsamer, kann aber in einigen Fällen nützlich sein."base64+zstd": Base64-codierte, mit zstd komprimierte Daten."jsonParsed": Wenn das Konto einem Programm gehört, für das der RPC node einen Parser besitzt, z. B. SPL Token Program oder Stake Program, enthält das Felddataein JSON-Objekt. Das ist für strukturierte Daten sehr nützlich.
dataSlice(object): Damit kannst du nur einen bestimmten Teil der Kontodaten abrufen. Das ist bei großen Konten hilfreich, wenn du nur wenige Informationen benötigst.offset(usize): Der Offset in Byte ab dem Anfang der Kontodaten.length(usize): Die Anzahl der Byte, die ab dem Offset zurückgegeben werden.- Hinweis:
dataSliceist nur für die Codierungenbase58,base64oderbase64+zstdverfügbar.
minContextSlot(u64): Der niedrigste slot, bei dem der request ausgewertet werden kann.
Response-Struktur
Das JSON-RPC-Objekt der response enthält ein Feldresult mit folgendem Inhalt:
context(object):slot(u64): Der slot, bei dem die Informationen abgerufen wurden.apiVersion(string, optional): Die API-Version des node.
value(array):- Ein Array, in dem jedes Element dem Public Key am selben Index im Array
pubkeysdes request entspricht. - Jedes Element enthält entweder:
null: Wenn das Konto mit dem angegebenen Public Key nicht existiert oder bei diesem Konto ein Fehler aufgetreten ist.- Ein Kontoobjekt mit den folgenden Feldern:
lamports(u64): Die Anzahl der Lamports im Besitz des Kontos.owner(string): Der Base58-codierte Public Key des Programms, dem das Konto gehört.data(arrayoderobject): Die Kontodaten. Wennencodingden WertjsonParsedhat und ein Parser vorhanden ist, enthält dieses Feld ein JSON-Objekt. Andernfalls ist es normalerweise ein Array["encoded_string", "encoding_format"], z. B.["SGVsbG8=", "base64"].executable(boolean): Gibt an, ob das Konto ein ausführbares Programm enthält.rentEpoch(u64): Die nächste Epoche, in der für dieses Konto Miete fällig wird.space(u64): Die Länge der Kontodaten in Byte.
- Ein Array, in dem jedes Element dem Public Key am selben Index im Array
Beispiele
1. Grundlegende Informationen für zwei Konten abrufen
Dieses Beispiel ruft Daten für zwei Konten ab: SOL Llama, ein NFT, und Serum Dex Program v3.2. Analysierte Daten von Token-Konten abrufen
Dieses Beispiel ruft Daten für zwei SPL-Token-Konten ab und fordert die CodierungjsonParsed an, um strukturierte Daten zu erhalten.
Tipps für Entwickler
- Maximal 100 Konten: Du kannst pro Aufruf maximal 100 Konten abfragen.
- Atomarität: Der request ist nicht atomar. Wenn die Abfrage eines Kontos fehlschlägt, können andere trotzdem erfolgreich sein. Prüfe jedes Element im Array
valueaufnull. - Vorteile von
jsonParsed: Die CodierungjsonParsedempfiehlt sich besonders für gängige Kontotypen wie SPL-Token-Konten, da du die Daten nicht manuell deserialisieren musst. dataSlicefür große Konten: Verwende bei sehr großen Konten, z. B. bestimmten Konten für Programmzustände,dataSlice. So rufst du nur die benötigten Byte ab und vermeidest unnötig große Datenübertragungen.- Fehlerbehandlung: Rechne mit Einträgen des Typs
nullim Arrayvalueder response. Sie zeigen an, dass ein Konto nicht gefunden oder nicht abgerufen werden konnte.
getMultipleAccounts kannst du leistungsfähigere und besser skalierbare Solana-Anwendungen entwickeln.
Verwandte Methoden
getAccountInfo
Detaillierte Informationen für ein einzelnes Konto abrufen
getProgramAccounts
Alle Konten abrufen, die einem bestimmten Programm gehören