DEV Community

Sergio Martinez Marin
Sergio Martinez Marin

Posted on

Segundos pasos con el cliente de Stellar

Hola a todos 😀

En el pasado tutorial vimos lo básico del cliente de Stellar, ahora vamos a entrar un poco más en profundidad.
Temario:

  • Creación de un contrato.
  • Compilación del contrato.
  • Despliegue.
  • Ejecución del contrato.

🚨En este tutorial no vamos a entrar en los detalles del contrato como tal, únicamente en cómo se usa el cliente de Stellar.
En posteriores tutoriales, si se entrará al detalle de los contratos.

Creación de un contrato
Syntaxis:
stellar contract init "nombre_contrato"

stellar contract init hola_mundo

Image description

Estructura y archivos creados

Image description

Dentro de lib.rs está el contrato por defecto

#![no_std]
use soroban_sdk::{contract, contractimpl, vec, Env, String, Vec};

#[contract]
pub struct Contract;

#[contractimpl]
impl Contract {
    pub fn hello(env: Env, to: String) -> Vec<String> {
        vec![&env, String::from_str(&env, "Hello"), to]
    }
}

mod test;
Enter fullscreen mode Exit fullscreen mode

Compilación del contrato
Se ejecuta el siguiente comando:
stellar contract build

Image description

Image description
Podemos ver que se creo una carpeta llamada release, más internamente vemos que está creado el archivo hello_world.wasm

💡el nombre del archivos en web assembly es el que automáticamente se pone dentro del archivo Cargo.toml

Despliegue del contrato
Mac/linux
stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/hello_world.wasm \
--source developer \
--network testnet \
--alias hello_world

Windows
stellar contract deploy
--wasm target/wasm32-unknown-unknown/release/hello_world.wasm

--source developer
--network testnet

--alias hello_world

Felicidades, ya tienes el contratro deplegado en testnet 🥳

Image description

https://stellar.expert/explorer/testnet/contract/CDCIWIAOWCDIORMZWV53VY5DVLOGB5PWG4ETSAEKKHX43RZVSPYUSLRS?filter=history

Interactuando con los contratos
Sintaxis
stellar contract invoke
--id "contrato"
--source "identidad"
--network testnet
--
"función"
--"parametro" "dato del parámetro"

Linux y MAC
stellar contract invoke \
--id CDCIWIAOWCDIORMZWV53VY5DVLOGB5PWG4ETSAEKKHX43RZVSPYUSLRS \
--source developer \
--network testnet \
-- \
hello \
--to Pascual

Windows
stellar contract invoke
--id CDCIWIAOWCDIORMZWV53VY5DVLOGB5PWG4ETSAEKKHX43RZVSPYUSLRS

--source developer
--network testnet

--
hello

--to Manolo

El resultado es:

Image description

Como has podido ver las interacciones básicas con el cliente de stellar son sumamente sencillas 🙂.

Más adelante entraremos en terrenos más interesantes, como es la sintaxis, tipos de datos, estructuras y control de flujo en Soroban. Que por fortuna como se maneja, son un conjunto de liberias en Rust. Entonces el enfasis está en Rust como tal, más algunas consideraciones propias de la cadena.

Hasta la próxima 🤓

Top comments (0)