Skip to main content

Inicio rápido

En esta guía, aprenderás cómo desplegar un contrato inteligente en la cadena CrossFi. Crearemos un contrato simple, probaremos el contrato y luego lo desplegaremos. Esta guía se puede utilizar más tarde cuando despliegues contratos más complejos, ya que los pasos serán similares.

Requisitos

Instalación de Foundry (Requerido)

En esta guía, usaremos Foundry para probar y desplegar nuestro contrato inteligente. Foundry nos permite hacer todo esto dentro de un conjunto de herramientas y usando la línea de comandos (CLI).

Primero, haremos un directorio de archivos para nuestro proyecto y luego instalaremos Foundry. Si ya tienes Foundry instalado, puedes omitir este paso.

Creando el Proyecto

En tu terminal, ejecuta el siguiente comando para crear una carpeta e inicializar npm.

mkdir crossfi_quickstart && cd crossfi_quickstart && npm init -y

Descargando e Instalando Foundry

El siguiente comando descargará la versión más reciente de Foundry:

curl -L https://foundry.paradigm.xyz | bash

Una vez completada la descarga, ejecuta el comando foundryup en tu terminal:

foundryup

Si utilizas macOS, puedes recibir el siguiente error:

dyld[32719]: Library not loaded: /usr/local/opt/libusb/lib/libusb-1.0.0.dylib

Para solucionar esto, ejecuta brew install libusb (Requiere Homebrew)

Crear el Contrato

Ahora crearemos el archivo del contrato y los archivos de apoyo utilizando el siguiente comando:

forge init counter_contract

Ahora puedes abrir tu editor de código en la ubicación del nuevo counter_contract creado. Debería haberse creado una estructura de carpeta como la siguiente:

--lib
--script
--src
--test
--README.md
--foundry.toml

No te preocupes si no estás seguro para qué son todas estas carpetas ahora, ya que las usaremos a lo largo de esta guía.

Revisando el Contrato Inteligente de Contador

En tu editor de código, abre el archivo Counter.sol que se encuentra en /src/Counter.sol. El código debería ser el mismo que el siguiente, con potencialmente una versión de Solidity diferente:

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

contract Counter

function increment() public
}

Este contrato incluye:

número - Una variable de número que se asigna como un entero sin signo de 256 bits.

establecerNúmero - Una función pública que se puede llamar para establecer la variable de número

incrementar - Una función pública que incrementa la variable de número en 1

Compilando el Contrato

Ahora necesitamos compilar el contrato. Este es un paso necesario para verificar que nuestro contrato inteligente no tenga errores de codificación lógicos. No es una prueba de la seguridad del contrato inteligente.

Podemos hacer esto ejecutando el siguiente comando:

forge build

Si se realiza con éxito, esto creará una carpeta llamada out que contiene el ABI de nuestro contrato inteligente en forma de un archivo JSON llamado Counter.json.

Probando el Contrato

Para esta guía, no tendremos que crear nuestras pruebas, ya que se nos proporcionan en el archivo /test/Counter.t.sol. El código debería lucir así:

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.13;

import from "forge-std/Test.sol";
import from "../src/Counter.sol";

contract CounterTest is Test

function test_Increment() public

function testFuzz_SetNumber(uint256 x) public
}

Podemos entonces ejecutar el código de prueba ejecutando el siguiente comando:

forge test

Después de ejecutar este comando, deberías ver que 2 pruebas pasaron, así como una cantidad de gas para la función Incremento:

Ran 2 tests for test/Counter.t.sol:CounterTest
[PASS] testFuzz_SetNumber(uint256) (runs: 256, μ: 30066, ~: 31310)
[PASS] test_Increment() (gas: 31325)
Suite result: ok. 2 passed; 0 failed; 0 skipped; finished in 9.45ms (5.75ms CPU time)

Desplegando el Contrato

Ahora es el momento de desplegar nuestro contrato inteligente en la cadena de prueba CrossFi. Podemos hacerlo en un solo comando utilizando forge create.

Necesitarás utilizar una clave privada que esté conectada a tu billetera con tokens de prueba XFI.

forge create --rpc-url https://rpc.testnet.ms \
--private-key YOUR_PRIVATE_KEY \
src/Counter.sol:Counter

Si el despliegue es exitoso, deberías ver la dirección de tu contrato bajo "Desplegado a" en tu terminal.

Desplegador: 0x85Ec95865AD3F912213f105d4f44e132B381f719
Desplegado a: 0xE785D511Fa79B4D3C0c5C4182090EA8D89F32FF4
Hash de transacción: 0x26ec2881d45dbb0eda13e2cd7df165d6ff8ff15a49af0196b45c5e7f34291d69

Puedes verificar que tu contrato ha sido desplegado en la red de prueba CrossFi buscando su dirección utilizando el Explorador de Prueba XFI.

Interactuando con el Contrato

En el paso final de esta guía, interactuaremos con nuestro contrato llamando a las funciones públicas. Podemos hacerlo usando Foundry y los siguientes comandos:

Configurando el Número

Para usar la función setNumber para establecer el nuevo número, puedes usar el siguiente comando:

cast send YOUR_CONTRACT_ADDRESS "setNumber(uint256)" 5 --rpc-url https://rpc.testnet.ms --private-key YOUR_PRIVATE_KEY

Si tiene éxito, verás el blockHash y otros datos de la transacción.

Leyendo el Número

Para leer el valor actual de la variable de número, puedes usar el siguiente comando:

cast call YOUR_CONTRACT_ADDRESS "number()" --rpc-url https://rpc.testnet.ms

Incrementando el Número

Para usar la función increment para incrementar el número en 1, puedes usar el siguiente comando:

cast send YOUR_CONTRACT_ADDRESS "increment()" --rpc-url https://rpc.testnet.ms --private-key YOUR_PRIVATE_KEY

Conclusión

¡Felicidades, ahora has probado, compilado y desplegado un contrato inteligente en el Testnet de CrossFi!

Los pasos que completaste en esta guía son los mismos que puedes seguir a medida que continúas construyendo en CrossFi.