getMultipleAccounts es una forma muy eficiente de obtener simultáneamente información de una lista de cuentas de Solana. En lugar de realizar solicitudes getAccountInfo individuales para cada cuenta, getMultipleAccounts te permite agrupar estas solicitudes, lo que reduce la sobrecarga de red y mejora la capacidad de respuesta de tu aplicación.
Casos de uso comunes
- Carga de datos de cuentas por lotes: Cuando tu aplicación necesita mostrar o procesar datos de varias cuentas conocidas (por ejemplo, las cuentas de tokens de un usuario o una lista de configuraciones de programas en cadena).
- Rastreadores de portafolios: Obtén los saldos y estados de numerosas cuentas de tokens propiedad de un usuario.
- Interfaces de marketplaces: Muestra los detalles de varios NFT o artículos publicados mediante la obtención de los datos de sus cuentas en una sola operación.
- Mejora del rendimiento de una dApp: Reduce considerablemente la cantidad de llamadas RPC, lo que permite tiempos de carga más rápidos y una mejor experiencia de usuario, especialmente cuando se trabaja con muchas cuentas.
Parámetros de la solicitud
-
pubkeys(arraydestring, obligatorio):- Un arreglo de cadenas de claves públicas codificadas en base 58 para las cuentas que quieres consultar.
- Máximo de 100 claves públicas por solicitud.
- Ejemplo:
["So11111111111111111111111111111111111111112", "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"]
-
options(object, opcional): Un objeto de configuración que contiene uno o más de los siguientes campos:commitment(string): Especifica el nivel de compromiso para la consulta (por ejemplo,"finalized","confirmed","processed").encoding(string): La codificación de los datos de la cuenta. Las opciones incluyen:"base64"(predeterminada): Codificación base64 estándar."base58": Es más lenta, pero puede ser útil en algunos contextos."base64+zstd": Datos comprimidos con zstd y codificados en base64."jsonParsed": Si la cuenta pertenece a un programa para el cual el nodo RPC tiene un analizador (por ejemplo, SPL Token Program o Stake Program), el campodataserá un objeto JSON. Esto resulta muy útil para los datos estructurados.
dataSlice(object): Te permite obtener solo una parte específica de los datos de la cuenta. Esto resulta útil para cuentas grandes cuando solo necesitas una pequeña parte de la información.offset(usize): El desplazamiento en bytes desde el inicio de los datos de la cuenta.length(usize): La cantidad de bytes que se devolverán a partir del desplazamiento.- Nota:
dataSlicesolo está disponible para las codificacionesbase58,base64obase64+zstd.
minContextSlot(u64): El slot mínimo en el que se puede evaluar la solicitud.
Estructura de la respuesta
El objeto de respuesta JSON-RPC tendrá un camporesult que contiene:
context(object):slot(u64): El slot en el que se recuperó la información.apiVersion(string, opcional): La versión de la API del nodo.
value(array):- Un arreglo en el que cada elemento corresponde a la clave pública que se encuentra en el mismo índice del arreglo
pubkeysde la solicitud. - Cada elemento será uno de los siguientes:
null: Si la cuenta de la clave pública especificada no existe o se produjo un error para esa cuenta específica.- Un objeto de cuenta con los siguientes campos:
lamports(u64): La cantidad de lamports que posee la cuenta.owner(string): La clave pública codificada en base 58 del programa propietario de la cuenta.data(arrayoobject): Los datos de la cuenta. SiencodingesjsonParsedy existe un analizador, será un objeto JSON. De lo contrario, normalmente es un arreglo["encoded_string", "encoding_format"](por ejemplo,["SGVsbG8=", "base64"]).executable(boolean): Indica si la cuenta contiene un programa, es decir, si es ejecutable.rentEpoch(u64): La siguiente época en la que esta cuenta deberá pagar alquiler.space(u64): La longitud de los datos de la cuenta en bytes.
- Un arreglo en el que cada elemento corresponde a la clave pública que se encuentra en el mismo índice del arreglo
Ejemplos
1. Obtén información básica de dos cuentas
Este ejemplo obtiene datos de dos cuentas: SOL Llama (un NFT) y Serum Dex Program v3.2. Obtén datos analizados de cuentas de tokens
Este ejemplo obtiene datos de dos cuentas de SPL Token y solicita la codificaciónjsonParsed para obtener datos estructurados.
Consejos para desarrolladores
- Máximo de 100 cuentas: Puedes solicitar un máximo de 100 cuentas por llamada.
- Atomicidad: La solicitud no es atómica en el sentido de que, si la búsqueda de una cuenta falla, las demás aún podrían completarse correctamente. Comprueba si cada elemento del arreglo
valueesnull. - Comodidad de
jsonParsed: Se recomienda ampliamente usar la codificaciónjsonParsedcuando trabajes con tipos de cuentas comunes, como las cuentas de SPL Token, ya que evita que tengas que deserializarlas manualmente. dataSlicepara cuentas grandes: Para cuentas muy grandes (por ejemplo, algunas cuentas de estado de programas), usadataSlicepara obtener solo los bytes necesarios y evitar la transferencia excesiva de datos.- Manejo de errores: Prepárate para manejar entradas
nullen el arreglovaluede la respuesta. Estas indican que no se encontró una cuenta o que no se pudo obtener.
getMultipleAccounts, puedes crear aplicaciones de Solana con mayor rendimiento y escalabilidad.
Métodos relacionados
getAccountInfo
Obtén información detallada de una sola cuenta
getProgramAccounts
Obtén todas las cuentas que pertenecen a un programa específico