getMultipleAccounts est un moyen très efficace d’extraire des informations pour une liste de comptes Solana simultanément. Au lieu de faire des requêtes getAccountInfo individuelles pour chaque compte, getMultipleAccounts vous permet de regrouper ces requêtes, réduisant ainsi la surcharge réseau et améliorant la réactivité de votre application.
Cas d’utilisation communs
- Chargement par lot des données de compte : Lorsque votre application doit afficher ou traiter des données de plusieurs comptes connus (par exemple, les comptes de jetons d’un utilisateur, une liste de configurations de programmes sur la chaîne).
- Suivi de portefeuille : Extraction des soldes et états de nombreux comptes de jetons détenus par un utilisateur.
- Interfaces de marché : Affichage des détails de plusieurs NFT ou éléments listés en récupérant leurs données de compte en une seule fois.
- Amélioration des performances des dApps : Réduction significative du nombre d’appels RPC, conduisant à des temps de chargement plus rapides et une meilleure expérience utilisateur, en particulier lorsque vous gérez de nombreux comptes.
Paramètres de requête
-
pubkeys(arraydestring, requis) :- Un tableau de chaînes de clés publiques encodées en base-58 pour les comptes que vous souhaitez interroger.
- Maximum de 100 clés publiques par demande.
- Exemple :
["So11111111111111111111111111111111111111112", "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]
-
options(object, optionnel): Un objet de configuration contenant un ou plusieurs des champs suivants :commitment(string): Spécifie le niveau d’engagement pour la requête (par exemple,"finalized","confirmed","processed").encoding(string): L’encodage pour les données du compte. Les options incluent :"base64"(par défaut): Encodage standard en base64."base58": Plus lent, mais peut être utile dans certains contextes."base64+zstd": Données compressées en zstd encodées en base64."jsonParsed": Si le compte est détenu par un programme pour lequel le nœud RPC dispose d’un analyseur (par exemple, SPL Token Program, Stake Program), le champdatasera un objet JSON. Cela est très utile pour des données structurées.
dataSlice(object): Vous permet d’extraire uniquement une partie spécifique des données du compte. Cela est utile pour les grands comptes où vous n’avez besoin que d’une petite partie des informations.offset(usize): Le décalage en octets à partir du début des données du compte.length(usize): Le nombre d’octets à retourner à partir du décalage.- Remarque :
dataSlicen’est disponible que pour les encodagesbase58,base64, oubase64+zstd.
minContextSlot(u64): Le slot minimum auquel la requête peut être évaluée.
Structure de la réponse
L’objet de réponse JSON-RPC aura un champresult contenant :
context(object) :slot(u64): Le slot auquel l’information a été récupérée.apiVersion(string, optionnel): La version de l’API du nœud.
value(array) :- Un tableau où chaque élément correspond à la clé publique au même index dans le tableau
pubkeysde la requête. - Chaque élément sera soit :
null: Si le compte à la clé publique spécifiée n’existe pas ou si une erreur s’est produite pour ce compte spécifique.- Un objet de compte avec les champs suivants :
lamports(u64): Le nombre de lamports détenus par le compte.owner(string): La clé publique encodée en base-58 du programme qui détient le compte.data(arrayouobject): Les données du compte. SiencodingestjsonParsedet qu’un analyseur existe, ce sera un objet JSON. Sinon, c’est généralement un tableau["encoded_string", "encoding_format"](par exemple,["SGVsbG8=", "base64"]).executable(boolean): Indique si le compte contient un programme (est exécutable).rentEpoch(u64): La prochaine époque à laquelle ce compte devra payer un loyer.space(u64): La longueur des données du compte en octets.
- Un tableau où chaque élément correspond à la clé publique au même index dans le tableau
Exemples
1. Extraire les informations de base pour deux comptes
Cet exemple récupère des données pour deux comptes : le SOL Llama (un NFT) et le Serum Dex Program v3.2. Extraire des données de compte de jeton analysées
Cet exemple récupère des données pour deux comptes de jetons SPL et demande un encodagejsonParsed pour obtenir des données structurées.
Conseils pour les développeurs
- Maximum 100 comptes : Vous pouvez demander un maximum de 100 comptes par appel.
- Atomicité : La requête n’est pas atomique dans le sens où si une recherche de compte échoue, d’autres peuvent encore réussir. Vérifiez chaque élément dans le tableau
valuepournull. - Convenance de
jsonParsed: L’utilisation de l’encodagejsonParsedest fortement recommandée lors de la gestion de types de comptes courants tels que les comptes de jetons SPL, car cela vous évite une désérialisation manuelle. dataSlicepour les grands comptes : Pour les très grands comptes (par exemple, certains comptes d’état de programme), utilisezdataSlicepour extraire uniquement les octets nécessaires afin d’éviter un transfert excessif de données.- Gestion des erreurs : Soyez prêt à gérer les entrées
nulldans le tableau de réponsevalue, indiquant qu’un compte n’a pas été trouvé ou n’a pas pu être récupéré.
getMultipleAccounts, vous pouvez créer des applications Solana plus performantes et évolutives.
Méthodes associées
getAccountInfo
Extraire des informations détaillées pour un seul compte
getProgramAccounts
Obtenez tous les comptes détenus par un programme spécifique