2. Desplegar en Testnet
Para recapitular lo que hemos hecho hasta ahora, en Configuración:
- configuramos nuestro entorno local para escribir contratos inteligentes en Rust
- instalamos el stellar-cli
- configuramos el stellar-cli para comunicarse con el Stellar Testnet a través de RPC
- y configuramos una identidad para firmar transacciones
En Hola Mundo creamos un proyecto hello-world
, y aprendimos cómo probar y construir el contrato HelloWorld
. Ahora estamos listos para desplegar ese contrato en Testnet, e interactuar con él.
Desplegar
Para desplegar tu contrato HelloWorld, ejecuta el siguiente comando:
- macOS/Linux
- Windows (PowerShell)
stellar contract deploy \
--wasm target/wasm32-unknown-unknown/release/hello_world.wasm \
--source alice \
--network testnet
stellar contract deploy `
--wasm target/wasm32-unknown-unknown/release/hello_world.wasm `
--source alice `
--network testnet
Esto devuelve el id del contrato, comenzando con una C
. En este ejemplo, vamos a usar CACDYF3CYMJEJTIVFESQYZTN67GO2R5D5IUABTCUG3HXQSRXCSOROBAN
, así que reemplázalo con tu id de contrato real.
Interactuar
Usando el código que escribimos en Escribir un Contrato y el archivo .wasm
resultante que construimos en Construir, ejecuta el siguiente comando para invocar la función hello
.
En el fondo, el CLI está haciendo llamadas RPC. Para información sobre eso consulta la página de referencia RPC.
- macOS/Linux
- Windows (PowerShell)
stellar contract invoke \
--id CACDYF3CYMJEJTIVFESQYZTN67GO2R5D5IUABTCUG3HXQSRXCSOROBAN \
--source alice \
--network testnet \
-- \
hello \
--to RPC
stellar contract invoke `
--id CACDYF3CYMJEJTIVFESQYZTN67GO2R5D5IUABTCUG3HXQSRXCSOROBAN `
--source alice `
--network testnet `
-- `
hello `
--to RPC
La siguiente salida debería aparecer.
["Hello", "RPC"]
¡El doble guion --
es obligatorio!
Este es un patrón general de CLI usado por otros comandos como cargo run. Todo lo que aparece después del --
, a veces llamado slop, se pasa a un proceso hijo. En este caso, stellar contract invoke
construye un CLI implícito sobre la marcha para el método hello
en tu contrato. Puede hacer esto porque el Soroban SDK incrusta los tipos de esquema / interfaz de tu contrato directamente en el archivo .wasm
que se despliega en on-chain. También puedes probar:
stellar contract invoke ... -- --help
y
stellar contract invoke ... -- hello --help
Resumen
En esta lección, aprendimos a:
- desplegar un contrato en Testnet
- interactuar con un contrato desplegado
A continuación, añadiremos un nuevo contrato a este proyecto, y veremos cómo nuestro espacio de trabajo puede acomodar un proyecto de múltiples contratos. El nuevo contrato mostrará un poco de las capacidades de almacenamiento de Soroban.