getMultipleAccounts-RPC-Methode ist ein hocheffizienter Weg, um Informationen für eine Liste von Solana-Konten gleichzeitig abzurufen. Anstatt individuelle getAccountInfo-Anfragen für jedes Konto zu stellen, ermöglicht getMultipleAccounts Ihnen, diese Anfragen zu bündeln, was den Netzwerkaufwand reduziert und die Reaktionsfähigkeit Ihrer Anwendung verbessert.
Häufige Anwendungsfälle
- Batch-Laden von Kontodaten: Wenn Ihre Anwendung Daten mehrerer bekannter Konten anzeigen oder verarbeiten muss (z. B. Token-Konten eines Benutzers, eine Liste von On-Chain-Programmkonfigurationen).
- Portfoliotracker: Abrufen von Salden und Zuständen für zahlreiche Token-Konten, die einem Benutzer gehören.
- Marktplatz-Benutzeroberflächen: Anzeigen von Details mehrerer NFTs oder gelisteter Artikel, indem deren Kontodaten auf einmal abgerufen werden.
- Verbesserung der dApp-Leistung: Signifikante Reduzierung der Anzahl von RPC-Anrufen, was zu schnelleren Ladezeiten und einer besseren Benutzererfahrung führt, insbesondere bei der Arbeit mit vielen Konten.
Anforderungsparameter
-
pubkeys(arrayvonstring, erforderlich):- Ein Array von base-58-codierten öffentlichen Schlüsselzeichenfolgen für die Konten, die Sie abfragen möchten.
- Maximal 100 öffentliche Schlüssel pro Anfrage.
- Beispiel:
["So11111111111111111111111111111111111111112", "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]
-
options(object, optional): Ein Konfigurationsobjekt mit einem oder mehreren der folgenden Felder:commitment(string): Gibt die Verpflichtungsstufe für die Abfrage an (z. B."finalized","confirmed","processed").encoding(string): Die Codierung für die Kontodaten. Optionen umfassen:"base64"(Standard): Normale base64-Codierung."base58": Langsamer, aber in einigen Kontexten nützlich."base64+zstd": Base64-codierte zstd-komprimierte Daten."jsonParsed": Wenn das Konto von einem Programm verwaltet wird, für das der RPC-Knoten einen Parser hat (z. B. SPL Token Program, Stake Program), wird dasdata-Feld ein JSON-Objekt sein. Dies ist sehr nützlich für strukturierte Daten.
dataSlice(object): Ermöglicht das Abrufen nur eines bestimmten Teils der Kontodaten. Dies ist nützlich für große Konten, bei denen Sie nur ein kleines Stück Information benötigen.offset(usize): Der Versatz in Bytes vom Anfang der Kontodaten.length(usize): Die Anzahl der Bytes, die vom Versatz zurückgegeben werden sollen.- Hinweis:
dataSliceist nur verfügbar fürbase58,base64oderbase64+zstd-Codierungen.
minContextSlot(u64): Der minimale Slot, bei dem die Anfrage ausgewertet werden kann.
Antwortstruktur
Das JSON-RPC-Antwortobjekt enthält einresult-Feld mit:
context(object):slot(u64): Der Slot, bei dem die Informationen abgerufen wurden.apiVersion(string, optional): Die API-Version des Knotens.
value(array):- Ein Array, wobei jedes Element dem öffentlichen Schlüssel am gleichen Index im
pubkeys-Array der Anfrage entspricht. - Jedes Element wird entweder sein:
null: Wenn das Konto mit dem angegebenen öffentlichen Schlüssel nicht existiert oder ein Fehler für dieses spezifische Konto aufgetreten ist.- Ein Kontobjekt mit den folgenden Feldern:
lamports(u64): Die Anzahl der Lamports, die das Konto besitzt.owner(string): Der base-58-codierte öffentliche Schlüssel des Programms, dem das Konto gehört.data(arrayoderobject): Die Kontodaten. WennencodingjsonParsedist und ein Parser existiert, wird dies ein JSON-Objekt sein. Andernfalls ist es in der Regel ein Array["encoded_string", "encoding_format"](z. B.["SGVsbG8=", "base64"]).executable(boolean): Ob das Konto ein Programm enthält (ausführbar ist).rentEpoch(u64): Die nächste Epoche, in der dieses Konto Miete schuldet.space(u64): Die Datenlänge des Kontos in Bytes.
- Ein Array, wobei jedes Element dem öffentlichen Schlüssel am gleichen Index im
Beispiele
1. Grundlegende Informationen für zwei Konten abrufen
Dieses Beispiel ruft Daten für zwei Konten ab: das SOL Llama (ein NFT) und das Serum Dex Program v3.2. Analysierte Token-Kontodaten abrufen
Dieses Beispiel ruft Daten für zwei SPL-Token-Konten ab und verlangtjsonParsed-Codierung, um strukturierte Daten zu erhalten.
Entwicklertipps
- Maximal 100 Konten: Sie können bis zu 100 Konten pro Aufruf anfordern.
- Atomizität: Die Anfrage ist nicht atomar; das bedeutet, dass wenn eine Kontosuche fehlschlägt, andere dennoch erfolgreich sein können. Überprüfen Sie jedes Element im
value-Array aufnull. jsonParsedBequemlichkeit: Die Verwendung vonjsonParsed-Codierung wird dringend empfohlen, wenn Sie mit häufigen Kontotypen wie SPL-Token-Konten arbeiten, da es Ihnen die manuelle Deserialisierung erspart.dataSlicefür große Konten: Für sehr große Konten (z. B. einige Programmzustandskonten) verwenden SiedataSlice, um nur die erforderlichen Bytes abzurufen und übermäßigen Datenverkehr zu vermeiden.- Fehlerbehandlung: Seien Sie darauf vorbereitet,
null-Einträge imvalue-Array der Antwort zu behandeln, was darauf hinweist, dass ein Konto nicht gefunden wurde oder nicht abgerufen werden konnte.
getMultipleAccounts können Sie leistungsfähigere und skalierbarere Solana-Anwendungen entwickeln.
Verwandte Methoden
getAccountInfo
Abrufen detaillierter Informationen für ein einzelnes Konto
getProgramAccounts
Abrufen aller Konten, die im Besitz eines bestimmten Programms sind