En los sistemas de blockchain tradicionales, los usuarios suelen pensar en términos de “billeteras” y “contratos inteligentes”. Sin embargo, en Solana, casi todo gira en torno a las cuentas . Los programas, tokens, NFTs, saldos de usuarios y hasta el código ejecutable se almacenan dentro de diferentes tipos de cuentas.
Entender la arquitectura de cuentas de Solana es esencial para los desarrolladores que construyen sobre la red. Comparado con el modelo de almacenamiento de contratos de Ethereum, el sistema de cuentas de Solana es más explícito, modular y optimizado para la ejecución paralela de alto rendimiento.
Este artículo explica los principales tipos de cuentas de Solana, cómo funcionan internamente y por qué son críticos para la escalabilidad de Solana.
¿Qué es una cuenta en Solana?
Una cuenta de Solana es esencialmente un contenedor que almacena:
- Saldos de SOL
- Datos de estado del programa
- Código ejecutable
- Información de propiedad de tokens
- Metadatos
Cada pieza de datos en cadena existe dentro de una cuenta.
A diferencia de Ethereum, donde los contratos inteligentes mantienen directamente el almacenamiento interno, Solana separa el almacenamiento de datos de los programas ejecutables. Esta separación es una de las razones por las cuales Solana puede procesar transacciones en paralelo.
Cada cuenta contiene:
CampoDescripciónLamportsSaldo de SOLPropietarioPrograma que controla la cuentaDatosDatos binarios arbitrariosEjecutableSi la cuenta contiene ejecutable
codeRent EpochRent seguimiento de colecciones¿Por qué Solana utiliza cuentas?
El entorno de ejecución de Solana está optimizado para la velocidad y la concurrencia.
Antes de que una transacción se ejecute, Solana requiere que la transacción declare explícitamente qué cuentas va a leer o modificar. Esto permite que el entorno de ejecución determine si las transacciones pueden ejecutarse en paralelo sin conflictos.
Los beneficios incluyen:
- Ejecución masiva en paralelo
- Acceso predecible al estado
- Reducción de la ambigüedad en el tiempo de ejecución
- Mayor rendimiento
- Mejor escalabilidad
Este diseño es fundamentalmente diferente al modelo de estado global compartido de Ethereum.
Hay varios categorías de cuentas importantes que los desarrolladores deben entender.
Las cuentas del sistema son el tipo de cuenta más básico en Solana.
Normalmente son cuentas de billetera controladas por un par de claves y propiedad del Programa del Sistema.
Las cuentas del sistema pueden:
- Guardar SOL
- Enviar transacciones
- Pagar tarifas
- Crear nuevas cuentas
Una dirección de billetera recién generada suele ser una cuenta del sistema.
Ejemplo:
const accountInfo = await connection.getAccountInfo(publicKey);
Si el propietario es el Programa del Sistema, es probable que sea una cuenta de billetera estándar.
Las cuentas del programa contienen
Código de contrato inteligente ejecutable.
Estas cuentas se marcan como:
executable = true
Al contrario de los contratos de Ethereum, los programas de Solana suelen ser sin estado. No almacenan directamente los datos del usuario internamente. En su lugar, operan sobre cuentas de datos separadas que se pasan a las instrucciones.
Características:
PropiedadValorAlmacena código ejecutableSíAlmacena estado mutableGeneralmente noActualizableOpcionalEjecutableverdadero
Los programas se despliegan como cuentas en la cadena.
Ejemplos comunes incluyen:
- Programa de Token
- Programa de Token Asociado
- Programas de Metaplex
- Programas de Jupiter
Las cuentas de datos almacenan el estado del programa.
Los programas leen y modifican estas cuentas durante su ejecución.
Ejemplos:
- Estado del pool de liquidez AMM
- Metadatos NFT
- Información de participación del usuario
- Libros de órdenes
- Estado de gobernanza DAO
Una cuenta de datos es típicamente propiedad de un programa:
owner = ProgramID
El programa propietario tiene permiso para modificar los datos de la cuenta.
Esta arquitectura crea una separación clara entre:
- Lógica → Cuentas de programa
- Estado → Cuentas de datos
Las cuentas de token son cuentas especializadas utilizadas por el Programa de Token SPL.
A diferencia de los saldos ERC-20 de Ethereum, los saldos de tokens no se almacenan directamente. dentro de las billeteras. En su lugar, cada saldo de token existe en una cuenta de token separada.
Una cuenta de token almacena:
CampoDescripciónMint¿A qué token pertenece?OwnerPropietario de la billeteraAmountSaldo del token
Por ejemplo:
- Saldo de USDC
- Saldo de BONK
- Saldo de Wrapped SOL
Todos existen en cuentas de token independientes.
Una cuenta de token asociada es una cuenta de token estandarizada derivada de:
Dirección de la billetera + Token Mint
Esto garantiza que los usuarios tengan una dirección de cuenta de token predecible para cada token SPL.
Beneficios:
- Integraciones de billetera más fáciles
- Token estandarizado manejo
- UX simplificado
La mayoría de las billeteras crean automáticamente ATAs al recibir tokens.
Las cuentas de mint definen un token en sí mismo.
Almacenan la configuración a nivel de token, como:
CampoDescripciónSuministroSuministro totalDecimalesPrecisiónAutoridad de mintQuién puede acuñarAutoridad de congelaciónQuién puede congelar
Por ejemplo, la cuenta de mint de USDC define:
- Suministro total de USDC en Solana
- Precisión decimal
- Permisos de mint
Todas las cuentas de token que hacen referencia a ese mint comparten la misma definición de token.
Las PDAs son cuentas determinísticas generadas por programas.
No tienen claves privadas.
En cambio, son controladas completamente por la lógica del programa.
Las PDAs son extremadamente importantes en el desarrollo de Solana porque permiten a los programas gestionar el estado de manera segura.
Casos de uso de ejemplo:
- Vaults de usuario
- Cuentas de custodia
- Piscinas de liquidez
- Metadatos de NFT
- Registros de staking
Las PDAs se generan usando:
PublicKey.findProgramAddressSync()
Ventajas:
- Direcciones deterministas
- Sin gestión de claves privadas
- Propiedad de programa segura
- Estructura de estado predecible
Las cuentas de Sysvar almacenan información de tiempo de ejecución a nivel de red.
Estas son incorporadas cuentas de solo lectura proporcionadas por el runtime de Solana.
Ejemplos incluyen:
SysvarPurposeClockMarca de tiempo actual y parámetros de slotRentRenta informaciónEpochScheduleInformación de epochRecentBlockhashesÚltimos hashes de bloque
Los programas utilizan sysvars para acceder al contexto de la blockchain.
Ejemplo:
- Verificando el slot actual
- Calculando recompensas por staking
- Validación de bloqueo temporal
En Solana, almacenar datos consume recursos de la blockchain.
Las cuentas deben mantener un saldo mínimo de SOL llamado:
Saldo exento de renta
Si el saldo es demasiado bajo, la cuenta podría ser eliminada eventualmente.
Cuentas más grandes requieren más SOL para permanecer exento de alquiler.
Ejemplo:
Tipo de cuentaTamaño típicoCuenta de billeteraPequeñaCuenta de token~165 bytesMetadatos NFTMás grandeEstado de la piscina AMMMuchísimo más grande
El alquiler fomenta el uso eficiente del almacenamiento en toda la red.
Solana distingue cuentas utilizando la bandera ejecutable.
TipoEjecutableCuenta de billeteraNoCuenta de tokenNoPDANoCuenta de programaSí
Solo las cuentas ejecutables pueden procesar instrucciones.
Cada cuenta tiene un propietario.
El propietario determina qué programa puede modificar los datos de la cuenta.
Ejemplo:
Propietario de la cuentaCuenta de billeteraPrograma del sistemaCuenta de tokenPrograma SPL de tokenNFT
MetadataMetaplex Program
Los programas no pueden modificar arbitrariamente las cuentas que no poseen.
Esto crea fuertes límites de seguridad.
Las diferencias arquitectónicas son significativas.
CaracterísticasSolanaEthereumAlmacenamiento de EstadoCuentas separadasAlmacenamiento interno del contratoEjecución ParalelaSíLimitadaAcceso a Cuentas ExplícitoRequeridoNo requeridoSaldos de TokensCuentas de tokens separadasAlmacenados en contratosProgramas sin estadoComúnRaro
El modelo de Solana es más complejo al principio, pero permite un rendimiento mucho mayor.
Una transferencia simple de USDC puede involucrar:
- Billetera del remitente
Esta estructura explícita permite que Solana procese transacciones de manera eficiente y segura.
La arquitectura de cuentas es una de las innovaciones más importantes en Solana.
Permite:
- Ejecutar transacciones en paralelo
- Altas TPS
- Comportamiento de ejecución predecible
- Diseño de programas modular
- Gestión eficiente del estado
Para los desarrolladores, entender las cuentas es fundamental para:
- Escribir programas
-
Depurar
- transacciones
- Gestión del estado
- Optimización del rendimiento
- Construcción de dApps escalables