Despliegue Automático con Foundry y Forge
En el ecosistema Ethereum y más ampliamente en la industria de las blockchains, la eficiencia y la seguridad en el despliegue de contratos inteligentes son fundamentales. Foundry (junto con su herramienta de CLI Forge) ofrece un flujo de trabajo moderno, ligero y de alto rendimiento que permite compilar, testear y desplegar de forma automatizada.
¿Qué es Foundry y Forge
- Foundry: Un conjunto de herramientas de desarrollo para contratos inteligentes escrito en Rust, diseñado para ser rápido y modular.
- Forge: El componente de línea de comandos de Foundry que proporciona compilación, testeo, scripting y despliegue.
Para más información, consulta la documentación oficial de Foundry en https://book.getfoundry.sh.
1. Ventajas del Despliegue Automático
- Reproducibilidad: Cada despliegue se realiza de la misma manera, eliminando errores manuales.
- Rapidez: Con comandos sencillos o scripts, aceleramos el proceso.
- Integración Continua (CI): Fácil de encadenar con servicios como GitHub Actions, GitLab CI o CircleCI.
- Seguridad: Almacenar y gestionar claves de forma segura en entornos CI/CD.
2. Requisitos Previos
- Sistema Operativo: Linux, macOS o Windows (con WSL2).
- Rust nbsp(opcional para compilar Foundry desde código fuente).
- Git para control de versiones.
- Node.js (para herramientas complementarias, no imprescindible).
3. Instalación de Foundry
Foundry puede instalarse rápidamente con el siguiente comando (Unix/macOS):
curl -L https://foundry.paradigm.xyz bash
foundryup
Esto instalará forge, cast y otras utilidades. Para comprobarlo:
forge --version
4. Creación y Configuración del Proyecto
- Inicializamos un nuevo proyecto con
forge init MiProyecto. - Se crea la estructura:
| Carpeta/Archivo | Descripción |
|---|---|
| src/ | Contratos inteligentes en Solidity |
| script/ | Scripts de despliegue |
| foundry.toml | Configuración del proyecto |
5. Desarrollo de un Script de Despliegue
Dentro de script/, creamos Deploy.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.15
import forge-std/Script.sol
import ../src/MiContrato.sol
contract Deploy is Script {
function run() external {
vm.startBroadcast()
new MiContrato()
vm.stopBroadcast()
}
}
Para desplegar en Goerli:
export GOERLI_RPC_URL=https://goerli.infura.io/v3/TU_INFURA_KEY
export PRIVATE_KEY=0xTU_CLAVE_PRIVADA
forge script script/Deploy.sol:Deploy --rpc-url GOERLI_RPC_URL --private-key PRIVATE_KEY --broadcast
6. Integración con GitHub Actions
Automatiza el flujo de despliegue en tu repositorio con el siguiente ejemplo de .github/workflows/deploy.yml:
name: Deploy on Push
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Foundry
run: curl -L https://foundry.paradigm.xyz bash foundryup
- name: Deploy to Goerli
env:
GOERLI_RPC_URL: {{ secrets.GOERLI_RPC_URL }}
PRIVATE_KEY: {{ secrets.PRIVATE_KEY }}
run: forge script script/Deploy.sol:Deploy --rpc-url GOERLI_RPC_URL --private-key PRIVATE_KEY --broadcast
Guarda GOERLI_RPC_URL y PRIVATE_KEY en los Secrets del repositorio.
7. Buenas Prácticas
- Seguridad de Claves: Utiliza servicios como HashiCorp Vault, AWS Secrets Manager o Azure Key Vault.
- Multired: Define redes en
foundry.tomlpara facilitar varios entornos (mainnet, testnets, forks). - Verificación Automática: Integra etherscan-verify con Forge para verificar en Etherscan:
forge verify-contract --chain-id 5 --num-of-optimizations 200 --constructor-args (cast abi-encode constructor() ) MiContrato DEPLOYED_ADDRESS ETHERSCAN_API_KEY - Control de Versiones: Etiqueta versiones de desplegables, script y configuración.
8. Comparativa Foundry vs Otras Herramientas
| Característica | Foundry/Forge | Hardhat |
|---|---|---|
| Velocidad de Compilación | Muy Rápido (Rust) | Moderado (JS/TS) |
| Testing | forge test (nativo) | mocha/chai |
| Scripting | Con Solidity | JS/TS |
9. Troubleshooting Común
- Error: RPC Rate Limit: Cambia a endpoint privado o usa múltiples proveedores.
- Claves Inválidas: Verifica formato 0x….
- Fallos en Tests: Asegúrate de tener las versiones de Solidity correctas en
foundry.toml.
10. Recursos Adicionales
Conclusión
El despliegue automático con Foundry y Forge no solo agiliza el ritmo de desarrollo, sino que refuerza la reproducibilidad y la seguridad. Integrar estos procedimientos en un pipeline de CI/CD como GitHub Actions te permitirá mantener tus contratos inteligentes actualizados y tus despliegues libres de errores manuales.
Deja una respuesta