Zum Hauptinhalt springen
Die RPC-Methode 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

  1. pubkeys (array aus string, 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"]
  2. 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 Feld data ein 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: dataSlice ist nur für die Codierungen base58, base64 oder base64+zstd verfügbar.
    • minContextSlot (u64): Der niedrigste slot, bei dem der request ausgewertet werden kann.

Response-Struktur

Das JSON-RPC-Objekt der response enthält ein Feld result 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 pubkeys des 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 (array oder object): Die Kontodaten. Wenn encoding den Wert jsonParsed hat 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.

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 Codierung jsonParsed 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 value auf null.
  • Vorteile von jsonParsed: Die Codierung jsonParsed empfiehlt sich besonders für gängige Kontotypen wie SPL-Token-Konten, da du die Daten nicht manuell deserialisieren musst.
  • dataSlice fü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 null im Array value der response. Sie zeigen an, dass ein Konto nicht gefunden oder nicht abgerufen werden konnte.
Mit 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