Ir al contenido principal

Introducción al modelo de cuentas de Solana

Actualizado el
26 de noviembre de 2025

5 minutos de lectura

Resumen

El modelo de cuentas de Solana es una parte fundamental del ecosistema de Solana y puede resultar uno de los conceptos más difíciles de entender para los desarrolladores, especialmente para aquellos que provienen de otras cadenas de bloques. Para trabajar de forma eficiente en la cadena de bloques de Solana, es importante comprender bien el modelo de cuentas. Empecemos por definir qué son las cuentas y analicemos los diferentes tipos de cuentas, así como la forma de crearlas e interactuar con ellas.

¿Qué es una cuenta?

Las cuentas son cualquier lugar en el que se almacenan datos en la cadena de bloques de Solana. Lo que hace que la cadena de bloques de Solana sea única en comparación con otras cadenas de bloques, como Ethereum, es la forma en que se almacenan y gestionan estos datos. Estas son las diferentes categorías de cuentas:

- Cuenta de programa: estas cuentas almacenan código ejecutable y el equivalente a los contratos inteligentes de Ethereum.
- Cuenta de almacenamiento: estas cuentas almacenan los datos relacionados con los programas.
- Cuenta de tokens: estas cuentas registran el saldo de tokens y permiten transferir o recibir tokens entre cuentas.

En la cadena de bloques de Solana, existe una separación entre el programa y los datos o el estado del programa. A ambos se les asignan cuentas independientes, pero están conectados. Si lo comparamos con Ethereum, un contrato inteligente y los datos de dicho contrato se encuentran en una misma ubicación dentro de la cadena de bloques. Si quisieras crear un programa que contara el número de transferencias de tokens realizadas por otro programa, tendrías que crear tanto el programa encargado de realizar las transferencias como otra cuenta para almacenar el recuento de las mismas.

Dos recuadros: uno titulado «Cuenta de programa» y otro titulado «Cuenta de datos», con una flecha que va de «Cuenta de datos» a «Cuenta de programa».

Fuente de la imagen

Por poner un ejemplo del mundo de las finanzas tradicionales, puedes imaginar un programa como una tarjeta de débito, tu banco como una cuenta de almacenamiento y el saldo de tu cuenta como una cuenta de tokens. Aunque todos estos elementos están conectados, se encuentran en ubicaciones distintas. Si perdieras tu tarjeta de débito, no perderías tu cuenta bancaria (aunque quizá sí los fondos que contiene). Tu tarjeta es también la única que puede modificar el saldo de la cuenta al utilizarla para comprar cosas. Del mismo modo, el programa asociado a una cuenta de almacenamiento es el único que puede cambiar el estado de los datos.

Tipos de cuentas

En la cadena de bloques de Solana hay dos tipos de cuentas: ejecutables y no ejecutables. Los programas son cuentas ejecutables y almacenan el código inmutable de un programa. El código de un programa se escribe primero en Rust o C/C++ y, a continuación, se compila en código de bytes mediante la infraestructura del compilador LLVM

El almacenamiento de datos y los saldos de tokens se guardan en cuentas no ejecutables, ya que sus datos pueden modificarse. Para controlar quién puede modificar estos datos, a las cuentas no ejecutables se les asigna una dirección de programa propietario. Otros programas pueden leer los datos de otra cuenta, pero si intentaran modificarlos, la transacción fallaría. 

Alquiler

Por desgracia, almacenar todos estos datos en cuentas independientes no es gratuito y conlleva ciertos costes. Afortunadamente para los desarrolladores, estos costes, denominados alquiler, se pagan en lamports. Los lamports son fracciones del token de Solana, el SOL, y se utilizan para realizar micropagos en la cadena de bloques de Solana. Las tarifas de alquiler se calculan en función del tamaño de almacenamiento de la cuenta. Cuanto mayor sea la cantidad de datos almacenados, mayor será la tarifa de alquiler.

Las comisiones de alquiler se recaudan al final de cada época de la cadena de bloques de Solana. Una época es el periodo durante el cual el validador principal sigue siendo válido para generar bloques de transacciones. Puedes consultar los datos sobre la época actual y las anteriores en el Solana Explorer aquí.

En el momento de redactar este artículo, una época dura aproximadamente dos días. Al igual que en la vida real, si una cuenta tiene un saldo nulo y no puede pagar la cuota de alquiler, se elimina de la cadena de bloques.

Una cuenta puede quedar exenta del pago de la renta si mantiene en su saldo de tokens el equivalente a al menos dos años de renta. Una forma sencilla de calcular los costes de la renta es utilizar el comando «solana rent» a través de la CLI de Solana. Al indicar el tamaño (en bytes) de tu cuenta, podrás ver la renta por byte, por época y la cantidad mínima necesaria para que la cuenta quede exenta del pago de la renta:

Una ventana de terminal en la que se muestra la ejecución del comando «rent» de Solana

Cómo crear una cuenta

Para crear una cuenta en Solana, el cliente debe generar un par de claves (pública y privada).  A continuación, el cliente utiliza la llamada SystemProgram::CreateAccount para registrar la clave pública y asignar el espacio de almacenamiento de datos necesario para esta cuenta. Actualmente, este espacio no se puede modificar posteriormente y el límite es de 10 MB. Si se necesita más espacio, un programa puede copiar los datos de una cuenta a otra que tenga mayor capacidad.

Al crear una cuenta, es necesario asignarle un propietario. Solo el propietario de la cuenta puede modificar los datos almacenados en ella. El propietario predeterminado tras la creación de una cuenta se denomina «Programa del sistema». El Programa del Sistema es un programa nativo de Solana que se encarga de crear cuentas, asignar datos a las cuentas y asignar la titularidad de las cuentas a los programas conectados. Los programas nativos son programas que deben ejecutar todos los validadores de Solana. 

El programa del sistema también se encarga de las transferencias Lamport de las cuentas de las que es titular. Si un usuario crea una cuenta para almacenar el saldo de un token, las transferencias de dicho token las gestiona el programa del sistema. El usuario firmaría las instrucciones de transferencia con su clave privada y el programa del sistema se encargaría de deducir los tokens de la cuenta del remitente y de abonarlos en la cuenta del destinatario. 

Interacción con las cuentas

Dado que el código del programa y los datos almacenados por este se guardan en cuentas independientes, cualquier programa puede leer los datos de otra cuenta. Asimismo, cualquier programa puede añadir «lamports» a una cuenta, pero solo el propietario puede restarlos. Esto resulta útil a la hora de crear programas que puedan necesitar interactuar con cuentas de las que no son propietarios. 

Al consultar una cuenta, verás que se devuelven estos datos:

Comando de la cuenta de Solana ejecutado en la Terminal

Fuente de la imagen

A continuación se ofrece un desglose de esos datos:
- Clave pública: la clave pública asignada a esta cuenta
- Saldo: la cantidad de SOL que posee esta cuenta
- Propietario: la dirección del programa que es propietario de esta cuenta
- Ejecutable: si se trata de una cuenta ejecutable o no
- rent_epoch: la próxima época en la que esta cuenta pagará el alquiler
- Longitud: el tamaño de la cuenta 

Conclusión

La creación de cuentas y la interacción con ellas es la base de todo lo que se hace en Solana. La separación entre los programas y los datos que utilizan constituye un enfoque único para la gestión del código y del estado. Comprender las normas de propiedad y cómo funcionan los programas dentro de esas normas es fundamental para desarrollar con éxito en Solana. Para poner en práctica estos conceptos, echa un vistazo a algunos de nuestros otros tutoriales sobre Solana.

Suscríbete a nuestro boletín para recibir más artículos y guías. No dudes en ponerte en contacto con nosotros a través de Twitter si tienes algún comentario. Siempre puedes charlar con nosotros en nuestro servidor de Discord, donde encontrarás a algunos de los desarrolladores más geniales que jamás hayas conocido :)

Comparte esta guía