Skip to main content

2️ Segundos pasos

Una vez visto lo básico del cliente, miremos lo pertinente enfocado a los contratos inteligentes, como es:

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

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

stellar contract init hola_mundo

1

Estructura y archivos creados

2

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;

Compilación del contrato
Se ejecuta el siguiente comando:\

stellar contract build

3

4

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 /<RUTA_DE_LA_CARPETA>/target/wasm32-unknown-unknown/release/hello_world.wasm \
--source developer \
--network testnet \
--alias hello_world

Windows

stellar contract deploy `
--wasm /<RUTA_DE_LA_CARPETA>/target/wasm32-unknown-unknown/release/hello_world.wasm `
--source developer `
--network testnet `
--alias hello_world

Felicidades, ya tienes el contratro deplegado en testnet 🥳

5

https://stellar.expert/explorer/testnet/contract/CDCIWIAOWCDIORMZWV53VY5DVLOGB5PWG4ETSAEKKHX43RZVSPYUSLRS?filter=history Link del contrato desplegado en la red testnet de Stellar

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:

5