Fundamentos de Sway: Tipos Primitivos y Programas en Contratos Inteligentes
Clase 2 de 16 • Curso de Programación de Contratos Inteligentes con Sway
Resumen
¿Cuáles son los tipos primitivos en Sway?
Para empezar a escribir contratos inteligentes en Sway, es fundamental conocer los tipos primitivos, que son los elementos básicos disponibles en el lenguaje:
- U8, U16, U32, U64: estos representan enteros sin signo de 8, 16, 32 y 64 bits respectivamente. Los diferentes tamaños ayudan a mantener una variable con el tamaño adecuado para tus necesidades específicas de bits.
- String: similar a otros lenguajes, pero con un tamaño fijo. Debes definir la longitud al crear la variable, lo que significa que no puedes cambiar el tamaño a lo largo del programa.
- Booleano: como en otros lenguajes, representa valores verdaderos o falsos.
- B256: útil para operaciones que requieren 256 bits, como realizar hashes.
¿Qué tipos de programas se pueden escribir en Sway?
Sway permite escribir cuatro tipos diferentes de programas, cada uno cumpliendo un propósito específico:
- Contratos: similares a los contratos inteligentes tradicionales con los que quizás ya estés familiarizado.
- Bibliotecas: contienen archivos Sway que definen nuevos comportamientos y son similares a las bibliotecas de otros lenguajes. Se utilizarán para funciones reutilizables a lo largo de diferentes proyectos.
- Scripts: son bytecode ejecutables en cadena que se ejecutan una sola vez para llevar a cabo tareas específicas.
- Predicados: programas que devuelven un booleano e indican la propiedad de un recurso.
¿Qué es la ABI en Sway y cómo se define?
En Sway, antes de programar las funciones, se debe definir la Interfaz Binaria de Aplicaciones (ABI, por sus siglas en inglés). La ABI establece algunos aspectos de la función, como los tipos de argumentos, el tipo de retorno y el nombre de la función. Esto proporciona una vista previa del comportamiento de la función y facilita que otros programadores comprendan el código.
Ejemplo de ABI en Sway
abi Counter {
fn increment();
fn get_count() -> u64;
}
- En este ejemplo,
increment
no toma argumentos ni tiene un tipo de retorno, mientras queget_count
devuelve un entero sin signo de 64 bits (u64
).
¿Cómo son las variables en Sway y qué significa su inmutabilidad?
Por defecto, todas las variables en Sway son inmutables, lo que fomenta la programación segura al obligar a los desarrolladores a pensar en la necesidad de cambiar una variable durante la ejecución del programa. Si necesitas una variable mutable, utiliza la palabra clave mut
.
Ejemplo de variable mutable
let mut contador = 0;
¿Cómo se definen y estructuran las funciones en Sway?
Las funciones en Sway se definen de manera familiar para aquellos con experiencia en lenguajes modernos.
- FN: indicas que empiezas a definir una función.
- Nombre de la función: sigue a
fn
. - Paréntesis: aquí se recogen los argumentos, si los hay.
- Flecha para tipo de retorno: seguida del tipo de retorno esperado.
Ejemplo de función en Sway
fn get_count() -> u64 {
storage.counter
}
¿Qué es el almacenamiento en Sway y por qué es importante?
El almacenamiento en Sway permite definir variables que deben permanecer globales y permanentes. Estas no se destruyen después de la ejecución de una función, a diferencia de las variables locales. Un ejemplo claro es un contador en un contrato inteligente que deba mantener su valor entre múltiples ejecuciones.
Definición de almacenamiento en Sway
Visualmente, las variables de almacenamiento en Sway están definidas en un bloque, similar a un objeto en JavaScript. Esto facilita la organización y evita confusiones, especialmente en programas más grandes.
¿Cómo funciona el acceso al almacenamiento y el espacio de nombres?
Cada función en Sway debe definir el acceso al almacenamiento que tendrá:
- Acceso de lectura: permite a la función leer, pero no modificar el almacenamiento.
- Acceso de lectura y escritura: permite a la función leer y modificar el almacenamiento.
- Ningún acceso: la función no accede al almacenamiento en absoluto.
Este enfoque fomenta la programación segura, facilitando que los programadores comprendan claramente los permisos que tiene cada función.
Ejemplo de acceso en Sway
#[storage(read)]
fn get_count() -> u64 {
storage.counter
}
#[storage(read, write)]
fn increment() {
storage.counter += 1;
}
El desarrollo en Sway, al igual que en otros lenguajes orientados a contratos inteligentes y blockchain, se centra en facilitar la programación segura y eficiente. Sway ofrece una base sólida para comenzar y, con estos fundamentos, estarás preparado para adentrarte en la escritura de tu primer contrato inteligente. ¡Sigue aprendiendo y explorando este apasionante mundo!