---
title: "La guía completa de contratos inteligentes en Solana"
description: "Todo lo que necesitas saber sobre el desarrollo de contratos inteligentes nativos en Solana"
---

# La guía completa de contratos inteligentes en Solana

Solana es una plataforma blockchain enfocada en el desarrollo de smart contracts que busca abordar los desafíos que enfrentan las blockchains existentes. Aloja diversos proyectos blockchain, incluyendo NFTs y proyectos DeFi.

El [ecosistema de Solana](https://www.alchemy.com/dapps/solana) ha crecido en popularidad en los últimos años gracias a sus tarifas de transacción increíblemente bajas y su alta escalabilidad. Lo que distingue a Solana es su combinación del algoritmo de consenso proof of stake con un mecanismo único de proof of history, que ofrece a los desarrolladores una red versátil para crear [plataformas de NFT](https://www.alchemy.com/list-of/nft-marketplaces-on-solana), [apps](https://www.alchemy.com/dapps/top/defi-dapps), y más.

Este artículo explica cómo funcionan los smart contracts de Solana, cómo crear y desplegar programas de Solana, y las herramientas necesarias para hacerlo. Además, revisaremos algunos tutoriales, ejemplos, repositorios, herramientas para desarrolladores y recursos sobre smart contracts de Solana para que puedas comenzar.

## **¿Qué es un smart contract de Solana?**

Los smart contracts de Solana, también conocidos como programas, son códigos que interpretan instrucciones y establecen los términos de un acuerdo. Muchos desarrolladores consideran los smart contracts de Solana como una alternativa viable a los [smart contracts de Ethereum](https://www.alchemy.com/overviews/solidity-smart-contract), gracias a sus tarifas de transacción comparativamente bajas.

Los smart contracts permiten a los desarrolladores crear apps que aprovechan la seguridad, confiabilidad y accesibilidad de blockchain, mientras ofrecen funcionalidad peer-to-peer sofisticada que va desde préstamos y seguros hasta logística y gaming.

Los smart contracts de Solana pueden escribirse en distintos lenguajes de programación. Si bien [Rust es el lenguaje nativo de los smart contracts de Solana](https://www.alchemy.com/dapps/rust), el protocolo también admite el desarrollo de smart contracts en C++, Solidity, y otros lenguajes a través de clientes SDK de JSON RPC API de terceros.

### **Arquitectura de los smart contracts de Solana**

[Solana](https://www.alchemy.com/solana) usa un modelo de smart contract distinto al de las blockchains tradicionales basadas en EVM. En el caso de las blockchains tradicionales, el código y el estado se combinan en un único contrato, mientras que los smart contracts de Solana no tienen estado y solo contienen la lógica del programa.

La [arquitectura de Solana](https://www.alchemy.com/overviews/solana-evm) busca demostrar la existencia de un conjunto de algoritmos de software que, al combinarse para implementar una blockchain, eliminan al software como cuello de botella de rendimiento, permitiendo que el throughput de transacciones escale de forma proporcional al ancho de banda de la red.

Para mejorar la interacción con las apps, Solana también cuenta con una interfaz de línea de comandos (CLI) y JSON RPC API. Las apps también pueden interactuar con la blockchain y los programas de Solana usando SDKs existentes.

_Diagrama del proceso de validación de Solana_

### **Mecanismo de proof-of-history de Solana**

Solana busca mejorar la escalabilidad de blockchain combinando [proof of stake con proof of history](https://www.alchemy.com/docs/what-are-blockchain-consensus-mechanisms). Utiliza un sistema Tower Byzantine fault-tolerant (BFT), que elimina la necesidad de que los nodos se comuniquen entre sí en tiempo real, lo que resulta en mayor eficiencia y una alta tasa de transacciones de 50,000 transacciones por segundo (TPS).

Como resultado, Solana puede manejar un volumen alto de transacciones manteniendo la descentralización. Solana crea nuevos bloques cada 400 milisegundos con la ayuda de 200 [nodos validadores](https://www.alchemy.com/overviews/dedicated-vs-shared-nodes), manteniendo al mismo tiempo las tarifas de transacción por debajo de un dólar.

Solana es conocida por su mayor escalabilidad y velocidad de transacción más rápida. La red de Solana es escalable a nivel del núcleo, por lo que no requiere soluciones de capa 2 para aumentar la escalabilidad.

La tecnología de la red de Solana divide los datos en fragmentos más pequeños, lo que facilita su transferencia a través de la red. Solana también usa Sealevel para ayudar a procesar transacciones en GPUs y SSDs, dando como resultado una red blockchain eficiente.

‍

_Crédito de imagen: Solana Labs_

‍

### **¿Cuáles son las diferencias entre un programa de Solana y un smart contract de Ethereum?**

Los smart contracts de Ethereum se escriben en el [lenguaje de programación Solidity](https://www.alchemy.com/overviews/solidity), mientras que los smart contracts de Solana se escriben principalmente en Rust y se conocen como programas. No tienen estado y solo representan la lógica del programa.

La diferencia más significativa entre ambos está en el mecanismo de consenso empleado. **Ethereum usa Proof of Stake (PoS), buscando una red más descentralizada y eficiente en el uso de energía. Por otro lado, Solana utiliza Proof of History (PoH), un enfoque único que prioriza la velocidad y la eficiencia, dando como resultado transacciones rápidas y de bajo costo.**

Un programa de Solana está compuesto enteramente de código y no contiene datos. Todos los datos se ingresan como inputs. Este diseño desacoplado permite un alto rendimiento al permitir que muchas copias de un programa de Solana se ejecuten en paralelo sobre distintos inputs. En otras palabras, las transacciones de múltiples cuentas de usuario hacia el mismo programa de Solana pueden ocurrir de forma concurrente. Esta es una de las características que hacen a Solana altamente escalable.

## **Cómo crear un smart contract en Solana**

Esta sección detalla los pasos necesarios para crear un smart contract en Solana. Te guiaremos a través del proceso y te daremos toda la información que necesitas para comenzar.

### **Prerrequisito**

- Conocimiento básico de cómo funciona Solana
- Anchor y Rust instalados de acuerdo con la sección de configuración a continuación
- Disposición para aprender

### **Paso 1: instalar Rust, Solana, yarn y anchor**

Comencemos configurando el entorno de desarrollo de Solana.

#### Instalar Rust

Comenzaremos instalando Rust, el lenguaje de programación usado para los programas de Solana.

Verifica que Rust y el compilador de Rust se hayan instalado correctamente usando los siguientes comandos.

También deberías tener ahora Cargo, el gestor de paquetes de Rust, instalado. Ejecuta el siguiente comando para confirmar que Cargo se instaló correctamente.

Rustup es la herramienta que instala y actualiza Rust.

Rustc es el compilador del lenguaje de programación Rust; te permite tomar un programa Rust y hacerlo ejecutable en todos los sistemas operativos actuales.

Cargo es la herramienta que construye sistemas y gestiona paquetes para el lenguaje de programación Rust.

#### Instalar Solana

Sigue las instrucciones si la instalación te pide cambiar tu path.

#### Instalar node.js

Visita el [sitio web oficial](https://nodejs.org/) para descargar Node.js, asegurándote de seleccionar la versión adecuada para tu sistema operativo.

Puedes confirmar la instalación de Node.js ejecutando los siguientes comandos:

#### Instalar yarn

Yarn es un gestor de paquetes similar a npm.

Verifica tu versión de Yarn.

#### Instalar anchor

[Anchor](https://www.alchemy.com/overviews/solana-anchor) es un framework para el runtime Sealevel de Solana que ofrece varias herramientas útiles para desarrolladores.

Para instalar Anchor, ejecuta el siguiente comando.

Luego, confirma la instalación.

### **Paso 2: configurar el proyecto**

En esta sección configuramos nuestro solana cli a devnet e inicializamos un proyecto con el framework anchor. Para simular un despliegue real, desplegaremos en la [Solana Devnet](https://www.alchemy.com/overviews/solana-devnet).

Para continuar, ejecuta el siguiente comando en tu terminal.

El siguiente paso es crear una wallet, necesaria para ejecutar y distribuir tus programas.

Obtén tu pubkey con el siguiente comando.

Después, puedes consultar tu dirección ejecutando el siguiente comando.

Luego, necesitarás algo de [SOL de testnet](https://www.alchemy.com/overviews/solana-faucet) para el desarrollo. Puedes hacer airdrop de algo a tu wallet usando el siguiente comando.

Ejecutar el siguiente comando mostrará tu balance.

Inicialicemos nuestro proyecto Anchor ejecutando el siguiente comando. El comando creará todas las carpetas y dependencias adicionales necesarias para el proyecto:

### Paso 3: escribir nuestro primer programa HelloWorld

En la estructura del proyecto, verás los siguientes archivos y carpetas.

- **program** — Este es el directorio que contiene todos tus programas de Solana
- **test** — Una carpeta para el código de pruebas en Javascript
- **migrations** — Este es el script de despliegue del programa
- **app** — La ubicación para construir nuestro frontend

Recuerda que lib.rs es el archivo inicial y principal de nuestro programa de Solana. Tiene algo de código inicial, como se muestra a continuación.

Exploremos cómo funciona Rust.
La primera línea de código en Rust importa dependencias o librerías. En este caso, se está importando la librería anchor.

Solana almacena la dirección o el ID del programa en la variable declare_Id. Anchor crea un ID de programa para nosotros por defecto.

A continuación está la sección program, donde vive la lógica del programa.

La última sección es la sección derive Accounts, donde vive el struct de la cuenta.

El struct initialize define el contexto de la función initialize, y un struct se usa para declarar una estructura. Definir métodos en Rust es diferente a otros lenguajes de programación. La capacidad de Solana de separar código y datos es una de sus principales ventajas.

Adentrémonos en el programa Hello World de Solana. Ten en cuenta que los programas de Solana son solo cuentas especiales en la red de Solana que pueden almacenar y ejecutar instrucciones. Usaremos el crate solana-program, que es como una librería estándar para programas de Solana. Necesitaremos usar algunos elementos del crate solana-program para crear un programa básico.

La primera sección usa Borsh, que significa Binary Object Representation Serializer for hashing. Borsh se usa para serializar y deserializar los parámetros que se pasan hacia y desde el programa desplegado. AccountInfo es un struct en el módulo account_info que da acceso a la información de la cuenta. El entrypoint declara el punto de entrada del programa.

El ProgramResult dentro del módulo entrypoint devuelve el ProgramReport o el ProgramError. Finalmente, *msg*, otro macro, funciona para imprimir mensajes en el log del programa, mientras que el struct pubkey nos permite acceder a las direcciones como clave pública.

El fragmento de código anterior define el tipo de estado almacenado en la cuenta y el counter u32, que es el tipo entero sin signo de 32 bits que referencia el número de saludos.

Los programas de Solana requieren un macro entrypoint para procesar las instrucciones del programa, como se ve en la primera línea de código anterior. El entrypoint requerirá una función process_instruction con el argumento program_id, que es la clave pública de la cuenta que produce el programa hello world. El argumento accounts es la cuenta a la que pretendemos saludar, y el argumento instruction_data contiene inputs adicionales. El ProgramResult imprime un mensaje "Hello World Rust Program."

La declaración 'let' obtiene las cuentas a saludar. La declaración 'if' establece la condición de que, para que los datos puedan modificarse, el programa debe ser dueño de la cuenta.

La declaración 'let' obtiene las cuentas a saludar. La declaración 'if' establece la condición de que, para que los datos puedan modificarse, el programa debe ser dueño de la cuenta.

## **Cómo desplegar un smart contract en Solana**

Esta sección describe los pasos para desplegar un smart contract en Solana.

### **Paso 1: probar el programa de Solana**

Para ejecutar las pruebas, ejecuta el siguiente comando.

Esto construirá, desplegará y probará programas contra un cluster específico.

### **Paso 2: desplegar en Devnet**

Desplegar en una red en vivo es fácil, primero debemos confirmar que estamos en Devnet.

Ubica tu Anchor.toml y actualiza el cluster a devnet _cluster = "devnet"._

Construye el programa ejecutando el siguiente comando.

Por último, despliega el programa.

### **Paso 3: verificar en el explorador de Solana**

A continuación, autenticamos el programa en el [explorador de Solana Devnet](https://www.alchemy.com/dapps/solana-explorer) para verificar que se desplegó correctamente proporcionando el program id. Deberías ver el log de despliegue en la sección de historial.

## **Tutoriales de smart contracts de Solana**

Ahora que tenemos una buena comprensión de cómo funcionan los smart contracts, adentrémonos en un proyecto real para dominar el funcionamiento de la arquitectura de desarrollo de Solana. El proyecto que construiremos es un smart contract de Solana para acuñar NFTs. Podemos acuñar NFTs de varias maneras, una de ellas es usando la [Metaplex candy machine](https://www.alchemy.com/overviews/metaplex). Los NFTs son uno de los casos de uso más populares de los smart contracts.

En esta sección aprenderás

- Cómo configurar la utilidad Solana CLI para usar Devnet y otros comandos útiles en Solana
- Cómo escribir programas más complejos en Rust
- Cómo inicializar un proyecto con el framework anchor
- Comprensión de las variables y la sintaxis de Rust

Los requisitos son

- [NodeJS v14](https://nodejs.org/)
- [NPM](https://nodejs.org/)
- La última versión estable de [Rust](https://rustup.rs/)
- [Solana CLI](https://docs.solana.com/cli/install-solana-cli-tools) v1.7.11 o posterior
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)

### **Configuración rápida**

Configuramos el entorno de desarrollo usando el siguiente comando para hacer que Solana trabaje con la red Devnet.

Luego genera tu wallet, que será necesaria para ejecutar y desplegar tus programas usando el siguiente comando.

Se te pedirá ingresar una contraseña para proteger tu wallet. Luego verás tu mnemónico, que es una combinación de 12 palabras:

Luego puedes verificar tu dirección.

Después, ejecuta el siguiente comando para hacer airdrop de 4 SOL de testnet a tu dirección.

Después de hacer el airdrop de los 4 SOL de testnet, revisa tu balance ejecutando el siguiente comando.

Ahora que has configurado Solana para trabajar con la red Devnet y has creado una nueva wallet, creemos un proyecto Anchor para que gestione todas las carpetas y configuraciones tediosas por nosotros. Ve a tu terminal y escribe el siguiente comando.

### **El smart contract de Solana**

Antes de adentrarnos en el smart contract, necesitamos configurar nuestro spl-token CLI, que se usará para interactuar con los tokens SPL. Puedes hacerlo ejecutando el siguiente comando en tu terminal.

Instala solana sdk y solana-program.

Notarás un archivo lib.rs en la carpeta programs. Aquí es donde se escribirá nuestro programa de Solana. Como se mencionó antes, construiremos sobre lo predeterminado en el lib.rs. Deberías ver algo como esto.

Aquí, importamos las herramientas con las que trabajaremos al inicio de nuestro código.

### **Definiendo la lógica de nuestro programa**

Estamos otorgando autoridad al programa usando _mint_authority_ para crear un mint (_mint_nft_) y luego asignándole una cuenta de token (_mint_token_account_). Luego trabajaremos con token_program y associated_token_program que importamos anteriormente.

Autoridad significa que la cuenta puede acuñar más tokens o "imprimir más dinero". Generalmente la crea la cuenta de la wallet. Es opcional porque una mint authority puede revocar su propio derecho, haciendo que la cuenta mint sea inmutable.

### **Creando la cuenta mint**‍

### Creando la cuenta de token ‍

### **Escribiendo la función mint**

A continuación, acuñaremos el NFT en la cuenta de token que creamos arriba.

### **Desplegando el programa**

¡Ya estás listo para construir el programa de Solana para acuñar NFTs usando el [framework Anchor](https://book.anchor-lang.com/chapter_1/introduction.html)!

El proceso de build genera el par de claves para la cuenta de tu programa. Antes de desplegar tu programa, debes agregar esta clave pública a tu archivo lib.rs, ya que es requerida por los programas que usan Anchor. Para hacerlo, necesitas obtener el par de claves del archivo *keypair.json* generado por Anchor usando el siguiente comando.

El siguiente paso es editar el archivo lib.rs y reemplazar el par de claves en la definición declare_id!() por el valor obtenido en el paso anterior.

A continuación, también debes insertar el valor del Program ID obtenido en el archivo Anchor.toml, dentro de la definición chainlink_solana_demo devnet.

Es posible que quieras construir el programa nuevamente usando Anchor, ya que reemplazaste el keypair con un nuevo ID.

Finalmente, puedes desplegar el programa.

Una vez que el programa se haya desplegado correctamente, la salida de la terminal mostrará el program ID, que debería coincidir con el valor que ingresaste en los archivos lib.rs y Anchor.toml.

El contrato desplegado también se puede verificar en el [Solana Devnet Explorer.](https://explorer.solana.com/?gclid=Cj0KCQjwrs2XBhDjARIsAHVymmSWzZUrpjd-p9ig67Yk6KUWGlQQxDzcQjrtthpJOeQzpbyncko35AMaAs22EALw_wcB&cluster=devnet)

_El contrato desplegado se muestra en el explorador de Solana Devnet._

## **Ejemplos y repositorios de smart contracts de Solana**

Existen numerosos ejemplos y repositorios de smart contracts de Solana que serían de gran valor en tu recorrido de desarrollo en Solana. Hemos detallado algunos a continuación.

### **1. Hello world smart contract**

[Hello World smart contract](https://www.alchemy.com/docs/how-to-deploy-a-smart-contract-to-the-sepolia-testnet) ofrece un ejemplo práctico de un programa de Solana usando Anchor y Rust. Sigue un enfoque paso a paso para construir smart contracts y apps en Solana. También proporciona códigos de ejemplo para usar, construir y desplegar programas on-chain.

### **2. Simple Solana program**

[Simple Solana Program](https://github.com/ezekiiel/simple-solana-program) está funcionalmente relacionado con el ejemplo Hello World. Demuestra cómo crear e invocar un programa en la blockchain de Solana. En este ejemplo, el programa de Solana cuenta la cantidad de veces que se ha ejecutado y almacena esa información on-chain.

### **3. Awesome Solana**

[Awesome Solana](https://github.com/avareum/awesome-solana) es una biblioteca detallada con recursos para desarrolladores principiantes y avanzados de Solana. Proporciona recursos sobre desarrollo en Solana, transacciones de Solana, librerías de Solana, explicaciones de cómo funcionan los programas de Solana, y ejemplos en video que apoyan tu aprendizaje.

### **4. Break Solana**

[Break Solana](https://github.com/solana-labs/break) es un juego compuesto por un frontend de cliente web, un backend de servidor web y un programa de Solana on-chain. El juego Break Solana permite a un jugador enviar transacciones simples de smart contract lo más rápido posible para demostrar la velocidad de Solana.

## **Herramientas y recursos para desarrolladores de Solana para escribir programas**

Existe una colección de recursos de aprendizaje y [herramientas para desarrolladores](https://www.alchemy.com/overviews/solana-developer-tools) útiles al escribir programas en Solana.

### **1. Solana playground**

[Solana Playground](https://beta.solpg.io/) ofrece una forma muy sencilla para que los usuarios interactúen con el sistema blockchain, permitiéndoles personalizar completamente las transacciones de Solana según sus necesidades particulares. Incluso quienes no tienen experiencia desarrollando programas de computadora pueden usar Solana Playground para comprender mejor cómo funciona la blockchain. El [repositorio del proyecto](https://github.com/Solana-Playground-Labs/solana-playground-app) está disponible en Github.

### **2. Start on Solana**

[Start on Solana](https://www.startonsolana.com/) ofrece guía para construir en Solana y contribuir al [ecosistema de Solana](https://www.alchemy.com/dapps/ecosystem/solana). Ofrece varias misiones en Javascript y Rust, desde crear un NFT en Solana hasta acuñar y crear criptomonedas con Javascript.

### **3. Solana cookbook**

[Solana Cookbook](https://solanacookbook.com/) es un recurso para desarrolladores que proporciona los conceptos fundamentales y referencias para construir aplicaciones en Solana. Es un recurso esencial que se enfoca en el desarrollo en Solana mientras ofrece muchos ejemplos para desarrolladores.

### **4. Sol dev course**

El [Sol Dev Course](https://soldev.app/course) está diseñado para simplificar la experiencia de desarrollo en Solana, convirtiéndolo en uno de los mejores lugares para que los principiantes empiecen a construir en Solana. También cuenta con una comunidad activa, que permite a sus miembros contribuir contenido para ayudar a otros desarrolladores de web3.

### **5. Build a Web3 app on Solana with react and Rust by buildspace**

[Buildspace](https://buildspace.so/p/build-solana-web3-app) es una comunidad increíble para comenzar tu recorrido de desarrollo en Solana, además de ganar NFTs al completar un hito. Los cursos interactivos son perfectos para principiantes que quieren construir cosas rápidamente en Solana.

## **Comienza a escribir programas de Solana**

Navegar el mundo de blockchain y los smart contracts puede ser complejo, pero plataformas como Solana están abriendo el camino hacia soluciones más eficientes, escalables y rentables. Esta guía ha proporcionado una visión integral del enfoque particular de Solana para el desarrollo de smart contracts, destacando su arquitectura distintiva, sus mecanismos de consenso y las herramientas disponibles para los desarrolladores.

Ya seas un desarrollador experimentado o estés recién comenzando en el espacio blockchain, Solana ofrece un camino prometedor para la innovación. A medida que el panorama de blockchain evoluciona, plataformas como Solana sin duda jugarán un papel fundamental en dar forma al futuro de las aplicaciones descentralizadas y el ecosistema web3 en general. Adéntrate, experimenta y aprovecha el poder de Solana para tu próximo proyecto.
