Skip to main content
Die 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

  1. pubkeys (array von string, 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"]
  2. 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 das data-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: dataSlice ist nur verfügbar für base58, base64 oder base64+zstd-Codierungen.
    • minContextSlot (u64): Der minimale Slot, bei dem die Anfrage ausgewertet werden kann.

Antwortstruktur

Das JSON-RPC-Antwortobjekt enthält ein result-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 (array oder object): Die Kontodaten. Wenn encoding jsonParsed ist 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.

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 verlangt jsonParsed-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 auf null.
  • jsonParsed Bequemlichkeit: Die Verwendung von jsonParsed-Codierung wird dringend empfohlen, wenn Sie mit häufigen Kontotypen wie SPL-Token-Konten arbeiten, da es Ihnen die manuelle Deserialisierung erspart.
  • dataSlice für große Konten: Für sehr große Konten (z. B. einige Programmzustandskonten) verwenden Sie dataSlice, um nur die erforderlichen Bytes abzurufen und übermäßigen Datenverkehr zu vermeiden.
  • Fehlerbehandlung: Seien Sie darauf vorbereitet, null-Einträge im value-Array der Antwort zu behandeln, was darauf hinweist, dass ein Konto nicht gefunden wurde oder nicht abgerufen werden konnte.
Durch die Nutzung von 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