Creación de un Contrato Inteligente Simple con Sway

Clase 4 de 16Curso de Programación de Contratos Inteligentes con Sway

Resumen

¿Cómo crear tu primer contrato inteligente en Sway?

Desarrollar contratos inteligentes puede sonar complejo, pero gracias a Sway y algunas herramientas de desarrollo, es más accesible de lo que parece. Empezaremos escribiendo un contrato de contador sencillo que te guiará a través del proceso paso a paso. Usaremos VS Code como editor, pero puedes optar por el que prefieras. Este contrato tendrá dos funciones básicas: incrementar un contador y devolver su valor actual.

¿Qué herramientas necesitas antes de comenzar?

Antes de entrar en el código, asegúrate de tener configurado tu entorno de desarrollo:

  1. Fuelup: Necesitas tener instalada la versión beta 2 como tu toolchain activa. Puedes verificarlo usando el comando fuelup show en tu terminal. Si no muestra beta 2, establece esa versión por defecto con fuelup default beta-2.

  2. Crear un espacio de trabajo: Navega a donde desees trabajar, por ejemplo, tu escritorio. Usa comandos como cd desktop y mkdir sway-platzi para crear y entrar en un nuevo directorio donde guardaremos nuestro proyecto.

  3. Inicializar el proyecto: Usa el comando forc new counter-contract. Esto creará un nuevo proyecto e incluirá recursos preliminares necesarios.

¿Cómo configurar tu entorno de trabajo en VS Code?

Una vez que hayamos creado nuestro proyecto, lo abriremos en VS Code.

  • Archivos del proyecto: Verás una carpeta llamada src con un archivo main.sw. Esta extensión .sw indica que es un archivo Sway.

  • Extensión de Sway: Para facilitar la codificación, instala la extensión Sway para VS Code. Proporciona resaltado de sintaxis, mensajes de error, entre otras ayudas.

¿Cuál es la estructura básica de un contrato Sway?

Al abrir main.sw, verás un código plantilla que puedes eliminar para comenzar desde cero. La estructura básica de un contrato incluye:

contract;

storage {
    counter: u64 = 0;
}
  • Identificación del programa: La primera línea declara qué tipo de programa es. En nuestro caso, un contract.
  • Variables de almacenamiento: Define variables persistentes, en este caso counter, que comenzará en 0 y es de tipo u64.

¿Cómo definir y entender el ABI?

El ABI (Interfaz Binaria de Aplicación) es crucial para definir qué funciones estarán disponibles y cómo interactuarán antes de implementar dichas funciones.

abi CounterContract {
    #[storage(read, write)]
    fn increment();

    #[storage(read)]
    fn get_count() -> u64;
}
  • Funciones ABI: increment() aumenta el valor del contador, mientras que get_count() devuelve el valor actual.
  • Acceso a almacenamiento: Determina el tipo de interacción que las funciones tendrán con las variables de almacenamiento (lectura y/o escritura).

¿Cómo implementar las funciones?

La implementación establece la lógica efectiva detrás de cada función:

impl CounterContract for Contract {
    #[storage(read)]
    fn get_count() -> u64 {
        storage.counter
    }

    #[storage(read, write)]
    fn increment() {
        storage.counter = storage.counter + 1;
    }
}
  • Función get_count: Simplemente devuelve el valor actual de counter.
  • Función increment: Incrementa counter en uno cada vez que se llama.

¿Cuál es el siguiente paso?

Una vez completes el código, guárdalo y prepárate para construir el contrato en Sway y desplegarlo eventualmente en testnet. El arduo trabajo dará sus frutos mientras continuamos explorando y expandiendo tus habilidades en el desarrollo de contratos inteligentes con Sway.

Este es solo el inicio de una emocionante aventura en el mundo de blockchain. Sigue aprendiendo, experimentando y expandiendo tus conocimientos. ¡Cada paso te lleva más cerca de ser un profesional en este campo tecnológico revolucionario!