Saltar al contenido principal
El método RPC getAccountInfo es una herramienta fundamental para consultar la blockchain de Solana. Te permite recuperar toda la información almacenada asociada con la clave pública de una cuenta específica. Esto incluye el saldo de lamports de la cuenta, el programa al que pertenece, si es ejecutable y sus datos almacenados.

Casos de uso comunes

  • Consultar el saldo de SOL: Determina el saldo nativo de SOL de cualquier cuenta.
  • Verificar la existencia de una cuenta: Comprueba si se inicializó una cuenta con una clave pública determinada (es decir, si tiene lamports o datos).
  • Inspeccionar cuentas de programas: Recupera los datos almacenados en una cuenta que pertenece a un programa. Esto es fundamental para comprender el estado de un programa.
  • Identificar al propietario de una cuenta: Averigua qué programa es el propietario de una cuenta. Esto ayuda a determinar cómo interpretar los datos de la cuenta o si se trata de una cuenta propiedad del sistema.
  • Comprobar si una cuenta es ejecutable: Identifica si una cuenta contiene un programa desplegado.

Parámetros

  1. publicKey (string, obligatorio): La clave pública codificada en base 58 de la cuenta que se consultará.
  2. config (object, opcional): Un objeto de configuración con los siguientes campos:
    • commitment (string, opcional): Especifica el nivel de compromiso que se usará para la consulta. El valor predeterminado es finalized.
      • finalized: El nodo consultará el bloque confirmado permanentemente más reciente. Usa este valor para código nuevo.
      • confirmed: En Alpenglow, equivale a finalized; se conserva por compatibilidad.
      • processed: El nodo consultará su bloque más reciente. Ten en cuenta que es posible que el bloque no esté completo.
    • encoding (string, opcional): La codificación de los datos de la cuenta. El valor predeterminado es base64.
      • base58 (lenta)
      • base64
      • base64+zstd (si los datos están comprimidos)
      • jsonParsed: Si los datos de la cuenta corresponden al estado de un programa conocido (p. ej., cuentas de tokens o cuentas de participación), el nodo intentará analizarlos y convertirlos en una estructura JSON. Para cuentas de programas genéricos, normalmente se usan datos binarios (base64) como alternativa.
    • dataSlice (object, opcional): Limita los datos de la cuenta devueltos a un segmento específico. Solo está disponible para las codificaciones base58, base64 o base64+zstd.
      • offset (number): La cantidad de bytes desde el inicio de los datos de la cuenta donde comenzará el segmento.
      • length (number): La cantidad de bytes que se devolverá.
    • minContextSlot (number, opcional): El slot mínimo en el que se puede evaluar la solicitud.

Respuesta

Si se encuentra la cuenta, el campo result contendrá un objeto con dos propiedades principales:
  • context (object): Contiene metadatos sobre la solicitud.
    • slot (number): El slot en el que se recuperó la información.
    • apiVersion (string, opcional): La versión de la API RPC.
  • value (object | null): Si la cuenta no existe, este valor será null. De lo contrario, será un objeto que contiene:
    • lamports (number): La cantidad de lamports (1 SOL = 1,000,000,000 lamports) que posee la cuenta.
    • owner (string): La clave pública codificada en base 58 del programa al que pertenece esta cuenta.
    • data (array | object | string): Los datos almacenados en la cuenta. El formato depende del parámetro encoding utilizado en la solicitud.
      • Para base64 (predeterminado), base58, base64+zstd: Normalmente es un array [encoded_string, encoding_format], p. ej., ["string_data", "base64"].
      • Para jsonParsed: Puede ser un objeto JSON si el nodo RPC puede analizar los datos (p. ej., para cuentas de SPL Token). De lo contrario, puede usar ["", "base64"] o un valor similar de forma predeterminada si los datos no se reconocen como un diseño estándar.
    • executable (boolean): true si la cuenta contiene un programa; de lo contrario, false.
    • rentEpoch (number): La próxima época en la que esta cuenta deberá pagar renta.
    • space (number, opcional): La longitud de los datos en bytes. (Nota: La documentación oficial de Solana incluye space, y algunos proveedores de RPC podrían incluirlo. Representa el espacio total asignado para los datos de la cuenta). Para obtener más información sobre los datos de cuentas y la deserialización, consulta nuestra guía detallada.
Si no se encuentra la cuenta, el campo value del resultado será null.

Ejemplo: Obtener información de una cuenta

Obtengamos la información del ID de Serum Program V3 (9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin) en la red principal. Nota: Reemplaza YOUR_API_KEY por tu clave de API de Helius real en los siguientes ejemplos.

Consejos para desarrolladores

  • Rendimiento: Para aplicaciones que requieren comprobaciones frecuentes de varias cuentas, considera usar getMultipleAccounts para agrupar solicitudes y reducir los viajes de ida y vuelta.
  • Deserialización de datos: El campo data suele requerir deserialización según las estructuras de datos del programa propietario. Por lo general, se necesitan herramientas y bibliotecas específicas del programa (p. ej., la biblioteca SPL Token para cuentas de tokens). Nuestra publicación de blog sobre la deserialización de datos de cuentas proporciona técnicas y ejemplos útiles.
  • Límites de tasa: Ten en cuenta los límites de tasa del nodo RPC, especialmente al consultar una gran cantidad de cuentas o realizar solicitudes frecuentes.
  • Administración de costos: getAccountInfo suele ser una consulta de bajo costo, pero el sondeo frecuente puede acumular costos. Optimiza tus patrones de consulta.
  • Usa jsonParsed con prudencia: Aunque jsonParsed puede ser conveniente, es posible que no admita todos los tipos de cuentas y su salida puede cambiar si un programa actualiza sus estructuras de datos. Para aplicaciones críticas, analizar datos binarios con un diseño conocido ofrece mayor estabilidad.
  • Considera dataSlice: Si solo necesitas una pequeña parte de los datos de una cuenta, usa dataSlice para reducir la cantidad de datos transferidos y posiblemente disminuir los costos de consulta.

Métodos relacionados

getMultipleAccounts

Obtén varias cuentas por lotes en una sola solicitud para mejorar el rendimiento

getBalance

Obtén solo el saldo de SOL sin todos los detalles de la cuenta