Inspeccionar Cuentas y Programas
Utiliza solana account y solana program para leer el estado en la cadena, los propietarios y los metadatos del bytecode ejecutable sin escribir un cliente.
Receta
Tarjeta de receta de referencia rápida - lista para copiar y pegar.
solana account <CLAVE_PÚBLICA_CUENTA>
solana account <CLAVE_PÚBLICA> --output json
solana program show <ID_PROGRAMA>
solana program dump <ID_PROGRAMA> program.soCuándo usar esto:
- Depurar errores de "cuenta no encontrada" o propietario incorrecto.
- Verificar el ID del programa y la autoridad de actualización de un despliegue.
- Volcar el bytecode
.sopara comparación de tamaño o hash. - Inspeccionar rápidamente el alquiler (rent), la longitud de los datos y el saldo de lamports.
Ejemplo de Trabajo
# Inspeccionar el Programa del Sistema (programa nativo)
solana program show 11111111111111111111111111111111
# Inspeccionar una billetera o cuenta de datos
solana account "$(solana address)"
# JSON para scripting
solana account "$(solana address)" --output json-compact | jq '.account.lamports, .account.owner'
# Volcar binario del programa desde devnet/mainnet
solana program dump TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA spl_token.so
ls -la spl_token.soLo que esto demuestra:
program showlista el cargador del propietario, la dirección de los datos del programa, la autoridad y la última ranura de despliegue.accountimprime lamports, propietario, indicador ejecutable y longitud de datos crudos.program dumpescribe el ELF en la cadena en disco para inspección o verificación.
Inmersión Profunda
Cómo Funciona
- Cada cuenta almacena lamports, una clave pública de propietario, bytes de datos y banderas.
- Los programas son cuentas marcadas como
executablepropiedad de un cargador (BPF Loader v3 para programas actualizables). solana accountrecupera a través de la RPCgetAccountInfointernamente.- Los programas actualizables dividen las cuentas de ID de programa y datos de programa.
Campos de Salida de Cuenta
| Campo | Significado |
|---|---|
| Lamports | Saldo gastable + reserva exenta de alquiler |
| Owner | Programa permitido para escribir datos |
| Executable | true para programas desplegados |
| Data Length | Tamaño en bytes de los datos de la cuenta |
| Allocated | Espacio total asignado (puede exceder la longitud de los datos) |
Notas de bash
# Mostrar solo metadatos del programa sin volcar
solana program show <ID_PROGRAMA> --programs
# Múltiples cuentas en un solo viaje de ida y vuelta RPC a través de bibliotecas cliente
# La CLI inspecciona una a la vez - usa @solana/kit para lotesTrampas
- Leer binario como texto - los datos de la cuenta no son UTF-8 para cuentas propiedad de programas. Solución: decodificar con tu IDL, estructuras de cuenta de Anchor o herramientas de diseño de
spl-token. - Cluster incorrecto - la cuenta existe en devnet pero no en mainnet. Solución:
solana config getantes de depurar cuentas faltantes. - Asumir que el ID del programa es igual a los datos del programa - el cargador actualizable usa dos cuentas. Solución: leer
ProgramData Addressdeprogram show. - Volcados de cuenta enormes - algunas cuentas son de megabytes. Solución: usar
--output jsony analizar selectivamente; evitar canalizar binarios crudos a la terminal. - Visualización obsoleta de la autoridad de actualización - la RPC en caché puede tener retraso. Solución: consultar con compromiso
finalizedpara verificaciones sensibles a la autoridad.
Alternativas
| Alternativa | Usar Cuando | No Usar Cuando |
|---|---|---|
| Solana Explorer / Solscan | UI enriquecida y decodificación de tokens | Flujos de trabajo de scripting u offline |
@solana/kit getAccountInfo | Lecturas por lotes en aplicaciones TypeScript | Inspección terminal única |
anchor account | Decodificación con tipo IDL de Anchor | Programas nativos sin IDL |
spl-token account-info | Diseño de cuenta de token SPL | Cuentas no token |
Preguntas Frecuentes
¿Qué significa Owner en una cuenta?
La clave pública del programa permitida para mutar los datos de la cuenta. Solo el programa propietario puede debitar lamports o cambiar el tamaño de los datos según las reglas del runtime.
¿Cómo sé si una cuenta es una PDA?
Las PDAs aparecen como claves públicas fuera de la curva Ed25519. La CLI no etiqueta las PDAs - deriva las direcciones esperadas del lado del cliente y compara.
¿Por qué Data Length es cero en mi billetera?
Las cuentas de billetera propiedad del sistema solo contienen lamports, sin carga útil de datos personalizada.
¿Puedo inspeccionar cuentas cerradas?
No - las cuentas cerradas se eliminan del estado de la cadena. Conserva las firmas de transacción para probar la existencia histórica.
¿Qué es Allocated vs Data Length?
Allocated es el espacio reservado; data length son los bytes actualmente en uso. Los programas pueden reasignar entre ellos.
¿Cómo decodifico datos de cuenta de Anchor?
Usa anchor account <Tipo> <CLAVE_PÚBLICA> en proyectos de Anchor, o recupera los bytes crudos y deserialízalos con tu IDL cliente.
¿El volcado de programa incluye metadatos de actualización?
Dump escribe solo los bytes ELF ejecutables. Usa program show para metadatos de autoridad, ranura y cargador.
¿Cómo inspecciono las acuñaciones de tokens (mints)?
Usa spl-token display <MINT> para campos de acuñación legibles por humanos, o solana account para bytes crudos.
¿Puedo inspeccionar cuentas en localnet?
Sí - apunta solana config a http://127.0.0.1:8899 y usa los mismos comandos.
¿Por qué la salida json difiere del texto?
JSON incluye campos de datos base64 adecuados para scripts; la salida de texto trunca datos grandes para legibilidad.
Relacionado
- Conceptos Básicos de Solana CLI - configuración de RPC y cluster
- Despliegue de Programas - lo que
program showvalida después del despliegue - CLI de spl-token - decodificación de cuentas específicas de tokens
- Métodos RPC Principales - detalles de
getAccountInfo
Versiones de Stack: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, Anchor 0.32.1, anchor-lang 0.32.1, Rust 1.91.1, @solana/kit 7.0.0, Surfpool 0.12.0, y LiteSVM 0.6.x.