counter
Ejemplo de un contador
Para crear el contrato ejecutamos lo siguiente:
Dentro de la carpeta counter, en el archivo lib.rs borramos todo el código y ponemos el siguiente código:
Básicamente es un contrato con un contador y 3 funciones:
Análisis del código:
Importaciones del SDK de Soroban
Symbol y symbol_short:
Se usan para trabajar con identificadores cortos y
optimizados en el entorno de Soroban.
Symbol Es un string de 32 caracteres, viene ocupa 64 bit (a-z A-Z 0-9)
symbol_short! Es un string de 9 caracteres (a-z A-Z 0- 9)
🛠 Explicación de las funciones
Todas las funciones trabajan con env: Env, que proporciona acceso al almacenamiento y otras funcionalidades del entorno Soroban.
1️⃣ add_to_counter(env: Env, increment: u32)
✅ Suma un número arbitrario al contador.
📌 Paso a paso:
Recupera el valor actual de COUNTER desde el almacenamiento, usando .unwrap_or(0), lo que garantiza que si la clave no existe, se toma como 0.
Suma el increment recibido como parámetro.
Guarda el nuevo valor en el almacenamiento.
2️⃣ inc_counter(env: Env)
✅ Incrementa el contador en 1.
📌 Paso a paso:
Esta función es similar a add_to_counter, pero en lugar de recibir un parámetro, simplemente suma 1 al contador.
3️⃣ get_counter(env: Env) -> u32
✅ Devuelve el valor actual del contador.
📌 Paso a paso:
Recupera el valor de COUNTER del almacenamiento.
Si la clave no existe, devuelve 0.
Retorna el valor del contador.
Este contrato mantiene un contador en la blockchain de Soroban con:
add_to_counter(): Incrementa el contador en un valor específico.
inc_counter(): Incrementa el contador en 1.
get_counter(): Obtiene el valor actual del contador.
Compilación del contrato:
Despliegue del contratro
Para Mac y Linux el salto de línea es con el carácter " \" y en Windows con el carácter " ´ "
Reemplaze el simbolo * por el respectivo carácter de salto de linea a su sistema operativo.
Pruebas del contratro
Para linux y Mac el salto de línea de la instrucción es con el carácter " \ " para Windows con el carácter " ` "
Invocación de la función add_to_counter
Invocación de la función inc_counter
Invocación de la función get_counter