Contenido del curso
Your first Sway project
Types and Standard Library
Writing your contract
- 8

Desarrollo de Contratos Inteligentes en Sway: Mercado Online Intermedio
16:08 min - 9

Implementación de funciones en contratos inteligentes Sway
09:49 min - 10

Implementación de la Función buyItem en Sway para Compra de Artículos
15:47 min - 11

Funciones de Propietario en Contratos Inteligentes Sway
09:06 min - 12

Función get_item en tu contrato Sway
02:20 min
Deploying your contract
Frontend
Primer smart contract en Sway paso a paso
Resumen
Escribir tu primer smart contract en Sway es más sencillo de lo que parece cuando sigues una guía estructurada. Aquí aprenderás a construir un counter contract básico con dos funciones, ideal para desarrolladores que dan sus primeros pasos en Fuel y quieren entender la lógica detrás del almacenamiento, las ABI y la implementación de funciones.
¿Qué necesitas antes de empezar a programar en Sway?
Antes de escribir una sola línea, asegúrate de tener tu entorno listo. Vas a usar un editor de texto (yo uso VS Code, pero cualquiera funciona) y la toolchain correcta de Fuel.
Abre la terminal y corre fuelup show. El resultado debe mostrar Beta-2 como tu active toolchain. Si no aparece así, ejecuta fuelup default beta-2 y vuelve a verificar [01:45].
¿Qué es fuelup? Es el gestor de versiones oficial de Fuel que te permite instalar y cambiar entre distintas toolchains del ecosistema Sway.
Una recomendación práctica: instala la extensión oficial de Sway en VS Code. Te da resaltado de sintaxis, hover sobre tipos y mensajes de error legibles que te ahorran horas de depuración [04:20].
¿Cómo se estructura un smart contract en Sway?
Todo programa en Sway empieza declarando su tipo. Recuerda que tienes cuatro opciones disponibles: contracts, libraries, scripts y predicates. Para este ejercicio usarás contract; como primera línea, terminada en punto y coma por sintaxis [05:30].
Después de crear la carpeta del proyecto con mkdir sui-platzi y entrar en ella con cd, ejecuta forc new counter-contract. Esto genera la estructura inicial con una carpeta src que contiene main.sw, la extensión que identifica todos los archivos Sway.
¿Qué son las storage variables y cómo se declaran?
Las storage variables son los datos persistentes de tu contrato. En este caso, necesitas una sola variable llamada counter que arranque en cero.
La sintaxis sigue este patrón:
sway storage { counter: u64 = 0, }
Aquí estás haciendo tres cosas a la vez:
- Defines el nombre descriptivo de la variable (
counter). - Asignas un tipo de dato, en este caso
u64, un unsigned integer de 64 bits que es el default recomendado para números. - Inicializas el valor en
0, porque tiene sentido lógico que un contador empiece desde cero [07:50].
¿Qué es la ABI y por qué importa en Sway?
La ABI (Application Binary Interface) define el contrato público de tu programa: qué funciones existen, qué argumentos reciben, qué retornan y qué nivel de acceso tienen al storage. En proyectos serios, la ABI vive en un archivo separado dentro de una librería, pero por simplicidad la dejarás en el mismo archivo.
sway abi Counter { #[storage(read, write)] fn increment();
#[storage(read)] fn count() -> u64;
}
Fíjate en las anotaciones #[storage(...)]. Para increment necesitas tanto read como write porque la función modifica el valor. Aunque solo escribir podría parecer suficiente, declarar ambos permisos deja explícito que write implícitamente incluye lectura [10:15].
La función count solo necesita read, porque su único trabajo es devolver el valor actual sin modificarlo.
¿Cómo implementar las funciones del contrato?
Una vez declarada la ABI, llega el momento de escribir el cuerpo de cada función con el bloque impl.
sway impl Counter for Contract { #[storage(read)] fn count() -> u64 { storage.counter }
#[storage(read, write)] fn increment() { storage.counter = storage.counter + 1; }
}
El nombre después de impl debe coincidir exactamente con el nombre de la ABI (Counter). Esto es importante porque, cuando separes la ABI en otro archivo, ese match es lo que conecta ambas piezas [13:40].
¿Por qué storage.counter aparece dos veces en increment?
Esta es una de las dudas más comunes al empezar. La línea storage.counter = storage.counter + 1 toma el valor actual y le suma uno, sin importar si es 0, 1 o 500.
¿Por qué no escribir storage.counter = 0 + 1? Porque solo funcionaría en la primera llamada. En la segunda iteración el contador volvería a 1 en lugar de avanzar a 2. Referenciar la variable garantiza un comportamiento general.
En la función count, fíjate que storage.counter aparece sin return ni punto y coma al final. Esa es la forma corta de retornar en Sway: la última expresión sin ; se interpreta como el valor de retorno. La versión larga sería return storage.counter; y ambas hacen exactamente lo mismo [15:55].
¿Qué tipos primitivos y conceptos clave debes recordar?
Algunos elementos del lenguaje que vale la pena tener presentes:
- u64: tipo numérico por defecto cuando no quieres preocuparte por el tamaño en bits.
- storage block: contenedor de variables persistentes, similar a un objeto en JavaScript.
- abi keyword: define la interfaz pública sin implementar lógica.
- impl ... for Contract: enlaza la ABI con su implementación concreta.
- shorthand return: omitir
returny;en la última línea para devolver un valor.
Guarda el archivo con Command+S y tendrás tu primer contrato listo para compilar. Cuéntame en los comentarios qué nombre le pusiste a tu carpeta y si planeas extender el contador con una función decrement.