DEV Community

Cover image for Cómo desplegar y verificar un contrato inteligente en la blockchain de Mode usando Foundry
wispy
wispy

Posted on • Edited on

Cómo desplegar y verificar un contrato inteligente en la blockchain de Mode usando Foundry

En este tutorial, aprenderás cómo desplegar y verificar un contrato inteligente en la blockchain de Mode usando Foundry. Este proceso es esencial para quienes desean entender e implementar eficazmente contratos inteligentes en entornos de blockchain. ¡Empecemos!

Requisitos previos:

  1. Tener una wallet. Si no tienes una, puedes crear una aquí.

  2. Tener algo de ETH en la testnet de Mode. Puedes seguir la guía de Mode sobre cómo hacer bridge o usa este faucet para reclamar algo de ETH en Mode.

  3. Tener instalado Foundry. Si no lo tienes instalado lo puedes hacer aquí.

  4. Tener un editor de código de tu preferencia. Yo usaré VSCode (instalar), pero siéntete libre de usar cualquier otro editor de código de tu elección.

Configuración del entorno:

Vamos a configurar nuestro proyecto.

Primero, crea una carpeta donde se almacenarán todos los archivos de nuestro proyecto. Para hacerlo, abre tu terminal (yo estoy usando Ubuntu) y escribe mkdir nombre_de_tu_carpeta. Una vez que la carpeta esté creada, navega dentro de ella escribiendo cd nombre_de_tu_carpeta. Después de configurar nuestra carpeta del proyecto, ábrela en tu editor de código escribiendo code ., lo cual abrirá VSCode si lo estás usando.

Crea una carpeta para el proyecto

mkdir nombre_de_tu_carpeta
Enter fullscreen mode Exit fullscreen mode

Navega a la carpeta creada

cd nombre_de_tu_carpeta
Enter fullscreen mode Exit fullscreen mode

Abre la carpeta en Visual Studio Code

code .
Enter fullscreen mode Exit fullscreen mode

Nota: Los comandos proporcionados son para usuarios de Ubuntu. Si estás usando Windows, es posible que necesites usar comandos diferentes. Asegúrate de adaptar los comandos según tu sistema operativo. ChatGPT es excelente para eso ;)

Tu terminal debería verse algo así:

Image description

Ahora abre tu editor de código, yo estoy usando VSCode.

Una vez que tu carpeta de proyecto esté abierta en VSCode, abre la terminal de VSCode.

Image description

Escribe forge init en la terminal para inicializar un proyecto de Foundry. Después de inicializar Foundry en tu proyecto, tu terminal debería mostrar:

Image description

Si todo ha ido bien, deberías ver tu estructura de carpetas similar a:

Image description

Una breve explicación de cada archivo:

  • .github: Generalmente contiene configuraciones y flujos de trabajo de GitHub Actions.
  • lib: Contiene bibliotecas y dependencias que necesita tu proyecto.
  • script: Almacena scripts que automatizan tareas como despliegues o pruebas.
  • src: Carpeta principal para el código fuente de tu proyecto, incluidos los contratos inteligentes.
  • test: Carpeta para probar tu código y asegurar que funcione como se espera.
  • .gitignore: Especifica los archivos y carpetas que Git debe ignorar.
  • .gitmodules: Se utiliza para los submódulos de Git si tu proyecto los incluye.
  • foundry.toml: Archivo de configuración específico de Foundry que define las opciones de la herramienta.
  • README.md: Contiene información del proyecto, instrucciones de configuración y detalles de uso.

Escribir el contrato inteligente:

Configura tu contrato inteligente. Yo usaré un ERC20 personalizado, pero puedes crear el tuyo propio usando el OpenZeppelin Wizard.

Compilación del contrato inteligente:

Proceso de compilación de contratos inteligentes

La compilación transforma el código escrito en lenguajes como Solidity en bytecode, instrucciones binarias que son interpretadas por la Máquina Virtual de Ethereum (EVM). Esto prepara el contrato para su ejecución en la blockchain, donde se almacena y puede interactuar con otros contratos y usuarios a través de transacciones específicas.

Después de crear y guardar tu contrato inteligente, abre la terminal de VSCode y escribe forge build para compilar el contrato inteligente.

Image description

Desplegando el contrato inteligente:

Una vez compilado, procederemos con el despliegue. ¡Antes de ejecutar el comando, sigue leyendo para saber más sobre él!

Escribe:
forge create --rpc-url https://sepolia.mode.network --private-key <YOUR_PRIVATE_KEY> src/ModeDeploy.sol:ModeDeploy --constructor-args <arg1> <arg2> <arg3>

Desglosamos el comando:

  • forge create: Comando de Foundry para desplegar un contrato inteligente.
  • --rpc-url https://sepolia.mode.network: Especifica la URL del nodo RPC para el despliegue del contrato. En este caso, es para la red Sepolia de Mode.
  • --private-key <TU_CLAVE_PRIVADA>: Proporciona la clave privada de la cuenta utilizada para el despliegue. Reemplaza con tu clave privada real. Mantén esta información segura y no la compartas.
  • src/ModeDeploy.sol:ModeDeploy: Este argumento especifica la ubicación del archivo del contrato y el nombre del contrato dentro de ese archivo. En este caso, src/ModeDeploy.sol es la ruta al archivo del contrato, y ModeDeploy es el nombre del contrato dentro de ese archivo.
  • --constructor-args <arg1> <arg2> <arg3>: Esta opción proporciona los argumentos que se pasarán al constructor del contrato inteligente durante el despliegue. Reemplaza , y con los valores reales que deseas pasar al constructor.

Si tu contrato inteligente no requiere argumentos para el constructor, omite --constructor-args <arg1> <arg2> <arg3>.

Image description

Después de desplegar el contrato inteligente, puedes verlo en BlockScout ingresando el hash de la transacción del despliegue.

Image description

El hash de la transacción muestra detalles como los tokens desplegados, el nombre del token, la dirección del desplegador, el número del bloque, el gas consumido y más. Para más detalles sobre las características del hash de la transacción, lo puedes ver aquí.

Image description

Verificación del contrato inteligente:

Para verificar un contrato inteligente, primero debe estar desplegado (como se hizo anteriormente). Una vez desplegado, abre la terminal de VSCode y escribe
forge verify-contract CONTRACT_ADDRESS src/ModeDeploy.sol:ModeDeploy --verifier blockscout --verifier-url https://sepolia.explorer.mode.network/api\?

Desglosamos el comando:

  • forge verify-contract: Este es el comando de Foundry utilizado para verificar un contrato inteligente en un explorador de bloques.
  • CONTRACT_ADDRESS: Aquí, reemplaza CONTRACT_ADDRESS con la dirección del contrato desplegado que deseas verificar. Por ejemplo, si la dirección del contrato es 0x1234567890abcdef1234567890abcdef12345678, el comando sería así: forge verify-contract 0x1234567890abcdef1234567890abcdef12345678 src/MyERC20.sol:MyERC20 --verifier blockscout --verifier-url https://sepolia.explorer.mode.network/api\?
  • src/ModeDeploy.sol:ModeDeploy: Este argumento indica la ubicación del archivo del contrato y el nombre del contrato dentro de ese archivo. En este caso: src/ModeDeploy.sol es la ruta al archivo del contrato. ModeDeploy es el nombre del contrato dentro de ese archivo.
  • --verifier blockscout: Esta opción especifica Blockscout como el servicio de verificación. Foundry admite diferentes verificadores, y aquí estamos indicando el uso de Blockscout.
  • --verifier-url https://sepolia.explorer.mode.network/api: Esta opción proporciona la URL de la API del verificador de Blockscout que utilizaremos. En este caso, es la URL del explorador de la red Sepolia en Mode.

Image description

Para confirmar la verificación exitosa, ingresa la dirección del contrato en BlockScout. Dirígete a la pestaña de contratos.

Image description

Este tutorial se realizó en la testnet de Mode. Aquí tienes un enlace con información sobre cómo hacerlo en la mainnet.

Si encuentras algún problema o tienes preguntas o sugerencias, únete al Discord de Mode y obtén el rol de desarrollador. Aquí te explicamos cómo obtener el rol. No dudes en preguntar lo que necesites; siempre habrá alguien dispuesto a ayudarte.

Espero que hayas encontrado útil este tutorial sobre cómo desplegar y verificar un contrato inteligente en la blockchain de Mode usando Foundry. Si te ha gustado, sígueme en Twitter para más contenido interesante y actualizaciones. ¡Gracias por leer!

Top comments (0)