WEB3DEV Español

Cover image for Introducción al Modelo de Cuenta de Solana
Gabriella Alexandra Martinez Viloria
Gabriella Alexandra Martinez Viloria

Posted on

Introducción al Modelo de Cuenta de Solana

Este artículo es una traducción de Dappa Dan, hecha por Gabriella Martínez. Puedes encontrar el artículo original aquí.
Sería genial escucharte en nuestro Discord, puedes contarnos tus ideas, comentarios, sugerencias y dejarnos saber lo que necesitas.
Si prefieres puedes escribirnos a @web3dev_eshttps://twitter.com/web3dev_es en Twitter.

Resumen

El modelo de cuenta de Solana es una parte crítica del ecosistema de Solana y puede ser uno de los conceptos más difíciles para los desarrolladores, especialmente para los que están haciendo la transición a otros blockchains. Para trabajar eficientemente en el blockchain de Solana, es importante entender bienla cuenta modelo. Primero definamos qué son las cuentas y exploremos los diferentes tipos de cuentas y explicaremos cómo crear e interactuar con ellas.

¿Qué es una Cuenta?

Las cuentas son lugares donde los datos son almacenados en el blockchain de Solana. Lo que hace que el blockchain de Solana sea único, a comparación de otros blockchains como Ethereum, es cómo los datos son almacenados y administrados. Aquí están las diferentes categorías de las cuentas:

  • Cuenta del Programa: estas cuentas almacenan código ejecutable y son el equivalente a los contratos inteligentes de Ethereum.
  • Cuenta de almacenamiento: estas cuentas almacenan datos conectados a programas.
  • Cuenta Token: estas cuentas registran el balance de tokens de una cuenta y permiten transferir o recibir tokens entre las cuentas.

En el blockchain de Solana, hay una separación entre el programa y los datos/estado del programa. Ambos son asignados en cuentas distintas pero están conectados. Comparado con Ethereum, un contrato inteligente y los datos de un contrato inteligente, están ubicados en un lugar en la cadena. Si fueses a hacer un programa que cuenta los números de token transferidos a un programa hecho, necesitarías crear el programa para hacer las transferencias así como hacer otra cuenta para almacenar la cuenta de las transferencias.

Image description

Tomando un ejemplo del mundo financiero tradicional, puedes pensar que un programa es como una tarjeta de crédito: tu banco como la cuenta que almacena y el balance de la cuenta como la cuenta token. Mientras que cada uno de estos están conectados, ambos están en lugares separados. Si perdieras tu tarjeta de crédito, no perderías tu cuenta bancaria (aunque puede que pierdas los fondos). Tu tarjeta tes la única que puede alterar el balance de la cuenta, usándola para comprar cosas. Similarmente, el programa asociado al almacenamiento de la cuenta es el único que puede cambiar el estado de los datos.

Tipos de cuentas

Hay dos tipos de cuentas en el blockchain de Solana: 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 luego es compilado en bytes a través de la infraestructura de compilación LLVM.

El almacenamiento de datos y el balance de tokens, están almacenados en cuentas no ejecutables ya que, sus datos pueden ser cambiados. Para controlar quién puede cambiar estos datos, las cuentas no ejecutables tienen un dueño de la dirección del programa, asignado a ellos. Otros programas pueden leer los datos de otras cuentas pero, si intentasen modificarlo, la transacción fallaría.

Renta

Desafortunadamente, almacenar todos estos datos en cuentas separadas no es gratis y viene con algunos costos. Afortunadamente, estos costos, para los desarrolladores, se llama rent y son pagados en lamports. Los lamports son fracciones del token de Solana, SOL, y son usados para hacer micropagos en el blockchain de Solana. Las tarifas de renta se calculan basándose en el tamaño del almacenamiento de la cuenta. Cuanto más larga sea la cantidad de datos a ser almacenados, más alto será la tarifa de la renta.

La tarifa de la renta se recoge al final de cada epoch del blockchain deSolana. Un epoch es el tiempo que el validador principal es aún válido para producir bloques de transacciones.Puedes ver los datos del epoch actuales y pasados en el Explorador de Solana.

Al momento de escribir esto, un epoch dura, aproximadamente, 2 días. Al igual que en la vida real, si una cuenta tienesaldo cero y es incapaz de pagar la tarifa de la renta, será removido del blockchain.

Una cuenta puede volverse exenta de la renta manteniendo, al menos, 2 años de renta en su saldo del token. Una forma simple de estimar los costos de la renta es, usando el comando solana rent a través del Solana CLI. Proporcionando el tamaño (en bytes) de tu cuenta, verás la renta por byte, por epoch y la cantidad mínima para que la cuenta sea exenta de la renta:

Image description

¿Cómo crear una cuenta?

Para crear una cuenta en Solana, es necesario generar un par de claves (públicas y privadas) por un cliente. Luego, el cliente usa la llamada SystemProgram::CreateAccount para registrar la llave pública y asignar el tamaño de almacenamiento de datos necesario para configurar esta cuenta. Actualmente, este tamaño no puede ser cambiado después y el límite es de 10mb. Si es necesario más tamaño, un programa puede copiar los datos de una cuenta a otra cuenta que tenga mayor capacidad.

Cuando creas una cuenta, un dueño necesita ser asignado. Solo el dueño de la cuenta puede modificar los datos que están almacenados en la cuenta. El dueño por defecto, luego que la cuenta se crea, es llamado “System Program”. El System Program es un programa nativo de Solana que es responsable de crear cuentas, asignar los datos de las cuentas y asignar un dueño a las cuentas conectadas a los programas. Los programas nativos sin programas que son requeridos para ejecutar todos los validadores en Solana.

El System Program es también responsable de hacer transferencias para las cuentas en las que tiene asignado un dueño. Si un usuario crea una cuenta para usarla para almacenar el balance de token, las transferencias de ese token son manejados por el System Program.El usuario luego firmará las instrucciones de la transferencia con su clave privada y el System Program, luego, manejará la deducción de los tokens del remitente y acreditar la cuenta del destinatario.

Interactuando con las cuentas

Ya que el código del programa y los datos almacenados por el programa son cuentas separadas, cualquier programa puede leer los datos de otras cuentas. Cualquier programa puede añadir también lamports a una cuenta, pero sólo el dueño puede extraerlos. Esto es útil cuando se construyen programas que requieran interactuar con cuentas que no son propias.

Cuando lees una cuenta, verás que estos son los datos:

Image description

Este es un desglose de los datos:

  • Public Key: la clave pública asignada a esta cuenta
  • Balance: la cantidad de SOL propiedad de esta cuenta
  • Owner: la dirección del programa que es dueño de esta cuenta
  • Executable: si esta es una cuenta ejecutable o no
  • rent_epoch: el siguiente epoch en el cual la cuenta pagará la renta
  • Length: el tamaño de la cuenta

Conclusión

Crear e interactuar con cuentas es como cualquier cosa se hace en Solana. La separación de programas y de los datos que ellos usan, es una forma única de codear y de administrar estados. Entender las reglas de la titularidad y cómo los programas funcionan dentro de esas reglas, es importante para ser exitoso desarrollando en Solana. Para poner esos conceptos en práctica, revisa alguno de nuestros otros tutoriales de Solana.

Regístrate a nuestro noticiero para más artículos y guías. Siéntete libre de escribirnos en Twitter si tienes algún feedback. Siempre puedes chatear con nosotros en el servidor de la comunidad en Discord, el cual cuenta con algunos de los desarrolladores más geniales que conocerás :)

Discussion (0)