Foundry

⚡ Definición Rápida
Foundry es un toolkit de desarrollo para Ethereum escrito en Rust que gestiona dependencias, compila proyectos, ejecuta tests, despliega contratos e interactúa con la blockchain desde la línea de comandos. Su velocidad y su enfoque en Solidity para testing lo han convertido en el favorito de los desarrolladores DeFi.
Términos relacionados: smart contract • solidity • evm • hardhat • ganache
❓ ¿Qué es Foundry y por qué ha revolucionado el desarrollo blockchain?
Imagina que necesitas construir una casa (tu dApp) y tienes dos opciones: usar un conjunto de herramientas manuales tradicionales que funcionan bien pero requieren múltiples herramientas de diferentes fabricantes, o usar un kit de herramientas profesional, integrado y ultrarrápido diseñado específicamente para el trabajo. Foundry es ese kit profesional para desarrolladores Ethereum.
Lanzado por Paradigm, Foundry irrumpió en el ecosistema con una propuesta radical: todo en Rust, tests en Solidity y velocidad extrema. A diferencia de Hardhat, que usa JavaScript/TypeScript y requiere escribir tests en Mocha/Chai, Foundry permite a los desarrolladores escribir sus tests directamente en Solidity, el mismo lenguaje de los contratos. Esto reduce la fricción cognitiva, acelera el desarrollo y permite aprovechar todo el poder del lenguaje en las pruebas. Su adopción se ha disparado, especialmente en el mundo DeFi, donde la velocidad de ejecución y la fiabilidad de los tests son críticas.
📖 Definición Técnica
Foundry es un toolkit de desarrollo para aplicaciones EVM (Ethereum Virtual Machine) escrito en Rust. Se compone de cuatro herramientas principales: Forge (gestión de dependencias, compilación, testing y despliegue), Cast (interacción con la blockchain desde CLI), Anvil (nodo local de desarrollo con capacidad de fork) y Chisel (REPL de Solidity para pruebas rápidas). Su arquitectura modular y su implementación en Rust le proporcionan una velocidad muy superior a otros frameworks, especialmente en tareas de compilación y ejecución de tests.
⚙️ Las 4 herramientas del toolkit Foundry
Foundry no es una herramienta monolítica, sino un conjunto de utilidades especializadas que trabajan juntas:
| Herramienta | Función principal | Comando clave | Analogía |
|---|---|---|---|
| Forge | El núcleo de Foundry. Compila, prueba y despliega contratos. Gestiona dependencias como git submodules. | forge build, forge test, forge create | El capataz de obra que coordina la construcción, verifica la calidad y entrega el proyecto. |
| Cast | Interfaz de línea de comandos para interactuar con la blockchain. Permite llamar funciones, enviar transacciones, decodificar datos y convertir unidades. | cast call, cast send, cast 4byte-decode | El walkie-talkie que te permite comunicarte directamente con la obra y sus operarios. |
| Anvil | Nodo local de desarrollo. Puede crear una blockchain limpia o forkear una red existente (mainnet, testnet) para pruebas realistas. | anvil, anvil --fork-url $RPC | La maqueta a escala real donde pruebas todo antes de construir en el mundo real. |
| Chisel | REPL (Read-Eval-Print Loop) de Solidity. Permite escribir y probar fragmentos de código Solidity de forma interactiva . | chisel, !fork, !memdump | El cuaderno de notas donde haces cálculos rápidos y pruebas conceptos antes de escribirlos en el plano. |
🔬 Foundry vs. Hardhat: La batalla de los frameworks en 2026
La elección entre Foundry y Hardhat es una de las decisiones más importantes para un equipo de desarrollo. Aquí tienes una comparativa detallada basada en el estado actual del ecosistema:
| Característica | Foundry | Hardhat |
|---|---|---|
| Lenguaje base | Rust (CLI) + Solidity (tests). | JavaScript/TypeScript. |
| Tests | En Solidity, usando forge-std/Test.sol. Más rápidos y directos. | En JavaScript/TypeScript, usando Mocha/Chai y Ethers.js. Más flexibles para integraciones complejas. |
| Velocidad de compilación | Extremadamente rápida (Rust + optimizaciones). | Rápida, pero más lenta en proyectos grandes. |
| Velocidad de tests | Muy rápida. Ejecución paralela por defecto. | Más lenta, especialmente con muchos tests. |
| Debugging | Depurador interactivo (forge test --debug) y trazas verbosas. | Excelente depurador con console.log y stack traces. |
| Forking | Integrado en Forge (--fork-url) y Anvil . | Integrado mediante plugins o configuración. |
| Ecosistema de plugins | En crecimiento, pero más limitado que Hardhat. | Extremadamente amplio (más de 200 plugins). |
| Curva de aprendizaje | Media (si ya conoces Solidity, los tests son naturales). | Media-baja (JavaScript es más accesible). |
| Ideal para | Proyectos DeFi, librerías, equipos que priorizan velocidad y tests en Solidity. | dApps complejas, integraciones con frontend, equipos que prefieren JavaScript. |
La tendencia actual es hacia un enfoque híbrido: muchos equipos usan Hardhat para el despliegue y la integración con frontend, y Foundry para testing y desarrollo rápido de contratos. Para una visión más amplia del ecosistema de desarrollo, consulta nuestra Guía de Seguridad Crypto.
🚀 Guía práctica: Primeros pasos con Foundry
Vamos a crear un proyecto desde cero y desplegar un contrato.
1. Instalación
La forma más sencilla es usar foundryup, el gestor de versiones de Foundry:
curl -L https://foundry.paradigm.xyz | bash
foundryupEsto instalará forge, cast, anvil y chisel en tu sistema. Para actualizar, simplemente ejecuta foundryup de nuevo.
2. Crear un nuevo proyecto
forge init mi-proyecto
cd mi-proyectoEsto crea la estructura de directorios estándar:
src/: Contratos de producción.test/: Tests en Solidity (archivos.t.sol).script/: Scripts de despliegue (archivos.s.sol).lib/: Dependencias (git submodules).foundry.toml: Configuración del proyecto.
3. Escribir un contrato simple
Reemplaza el contenido de src/Counter.sol con:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
contract Counter {
uint256 public number;
function setNumber(uint256 newNumber) public {
number = newNumber;
}
function increment() public {
number++;
}
}4. Escribir un test en Solidity
Foundry usa forge-std para testing. Crea test/Counter.t.sol:
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
import "forge-std/Test.sol";
import "../src/Counter.sol";
contract CounterTest is Test {
Counter public counter;
function setUp() public {
counter = new Counter();
counter.setNumber(10);
}
function testIncrement() public {
counter.increment();
assertEq(counter.number(), 11);
}
function testSetNumber(uint256 x) public {
counter.setNumber(x);
assertEq(counter.number(), x);
}
}Ejecuta los tests:
forge testPara ver el reporte de gas:
forge test --gas-report5. Desplegar con Forge
Primero, instala una dependencia (opcional, pero común):
forge install OpenZeppelin/openzeppelin-contractsAhora despliega el contrato Counter:
forge create --rpc-url $RPC_URL \
--private-key $PRIVATE_KEY \
src/Counter.sol:CounterSi tu contrato tiene constructor con argumentos:
forge create --rpc-url $RPC_URL \
--constructor-args 100 \
--private-key $PRIVATE_KEY \
src/MyToken.sol:MyToken6. Usar Cast para interactuar
Una vez desplegado, puedes llamar funciones de lectura:
cast call $CONTRACT_ADDRESS "number()(uint256)" --rpc-url $RPC_URLPara enviar una transacción (escribir):
cast send $CONTRACT_ADDRESS "increment()" --private-key $PRIVATE_KEY --rpc-url $RPC_URL7. Forkear mainnet con Anvil
Anvil puede crear una copia local de mainnet para pruebas realistas:
anvil --fork-url https://eth-mainnet.g.alchemy.com/v2/API_KEYEsto levanta un nodo local en http://127.0.0.1:8545 con 10 cuentas prefinanciadas con 10,000 ETH de prueba. Luego puedes apuntar tus comandos forge o cast a esa URL para interactuar con el fork.
8. Probar snippets con Chisel
Inicia Chisel:
chiselDentro del REPL, puedes escribir código Solidity directamente:
➜ uint256 a = 10;
➜ uint256 b = 20;
➜ a + b
Type: uint256
├ Hex: 0x000000000000000000000000000000000000000000000000000000000000001e
└ Dec: 30✅ Ventajas clave de Foundry
- Velocidad extrema: Escrito en Rust, Foundry es significativamente más rápido que sus competidores, especialmente en compilación y tests.
- Tests en Solidity: Escribir tests en el mismo lenguaje que los contratos reduce la fricción y permite reutilizar lógica de los contratos en las pruebas.
- Fuzzing integrado: Forge incluye fuzzing basado en propiedades de forma nativa. Solo tienes que escribir tests con parámetros y Foundry generará automáticamente cientos de casos para encontrar errores .
- Reporte de gas integrado: Con
forge test --gas-reportobtienes un desglose detallado del consumo de gas de cada función, esencial para optimizar contratos. - Forking de mainnet: Anvil permite forkear cualquier red EVM en segundos, facilitando pruebas con protocolos reales y estados complejos.
- Herramientas unificadas: Forge, Cast, Anvil y Chisel trabajan juntos sin problemas. No necesitas instalar y configurar herramientas separadas.
⚠️ Limitaciones y consideraciones
- Ecosistema de plugins más pequeño: Aunque crece rápidamente, Foundry no tiene la extensa biblioteca de plugins de Hardhat.
- Curva de aprendizaje del testing en Solidity: Para equipos acostumbrados a JavaScript/TypeScript, escribir tests en Solidity puede requerir un ajuste mental inicial.
- Menos maduro para integraciones complejas: Hardhat tiene ventaja en escenarios que requieren mucha lógica fuera de la blockchain (oráculos complejos, automatización con múltiples pasos off-chain).
- Dependencia de git submodules: Foundry usa git submodules para gestionar dependencias, lo que puede ser menos familiar para equipos acostumbrados a npm/yarn.
🧠 Guía práctica: Foundry para diferentes perfiles
- Para desarrolladores DeFi: Foundry es tu mejor aliado. Usa fuzzing para probar invariantes de protocolos complejos. Forkea mainnet para simular interacciones con Uniswap, Aave o Compound antes de desplegar. Aprende más sobre el ecosistema en nuestra guía ¿Qué es DeFi?.
- Para equipos que inician proyectos: Foundry reduce el tiempo de configuración. Con
forge inittienes un proyecto funcional en segundos. La integración con Ethers.js es posible, pero considera usar Cast para interacciones rápidas desde terminal. - Para desarrolladores que migran desde Hardhat: No necesitas abandonar Hardhat. Muchos equipos usan ambos: Hardhat para scripts de despliegue complejos e integración con frontend, y Foundry para testing rápido y exhaustivo. Puedes mantener ambos frameworks en el mismo proyecto.
- Para auditors de seguridad: Foundry se ha convertido en la herramienta estándar para auditorías. Su velocidad permite ejecutar miles de tests en segundos, y el fuzzing ayuda a descubrir vulnerabilidades ocultas. El depurador interactivo (
forge test --debug) es invaluable para entender por qué falla un test.
🔮 El futuro de Foundry: Tendencias y evolución
- Integración más profunda con Foundry: Las herramientas de Foundry seguirán integrándose con el ecosistema Rust de Ethereum, incluyendo clientes como Reth y frameworks de ejecución.
- Estandarización en testing:
forge-stdse está convirtiendo en el estándar de facto para tests en Solidity, con utilidades cada vez más completas (console.log, cheatcodes avanzados, gestión de tiempos). - Mejoras en el ecosistema de plugins: La comunidad está construyendo activamente plugins y extensiones para Foundry, reduciendo la brecha con Hardhat.
- Adopción en capa 2 y redes alternativas: Foundry funciona perfectamente con cualquier red EVM, incluyendo Arbitrum, Optimism, Polygon y redes basadas en Substrate con capa de compatibilidad EVM.
🎯 Conclusión: El nuevo estándar de desarrollo para contratos inteligentes
Foundry ha cambiado las reglas del juego en el desarrollo de smart contracts. Su enfoque en velocidad, tests en Solidity y herramientas unificadas ha elevado el estándar de calidad en el ecosistema. No es casualidad que los proyectos DeFi más importantes y las auditorías más rigurosas hayan adoptado Foundry como su herramienta principal.
Para el desarrollador, Foundry no es solo una herramienta más: es un cambio de paradigma que permite escribir tests más expresivos, encontrar bugs más rápido y desplegar con mayor confianza. La combinación de Forge, Cast, Anvil y Chisel cubre todo el ciclo de vida del desarrollo, desde la primera línea de código hasta la interacción en producción. Si aún no lo has probado, estás perdiendo una de las herramientas más potentes del ecosistema.
❓ Preguntas Frecuentes sobre Foundry
📚 ¿Quieres profundizar en desarrollo blockchain?
Amplía tus conocimientos con estas guías esenciales:
🔧 Tutorial de MetaMask - Aprende a conectar tus dApps con wallets de usuarios.
🏗️ ¿Qué son los Smart Contracts? - El fundamento sobre el que construirás con Foundry.
⚡ Ethers.js - La librería que complementa a Foundry para interactuar desde JavaScript.
🔐 Guía de Seguridad Crypto - Buenas prácticas para desarrollar dApps seguras.
📊 ¿Qué es DeFi? - Entiende el ecosistema donde Foundry es más utilizado.
🚀 Herramientas para desarrolladores
Optimiza tu flujo de trabajo con estas herramientas:
🧪 Ganache - Alternativa a Anvil para nodos locales (aunque Anvil es más rápido).
⚙️ Calculadora de Comisiones - Útil para estimar costes de gas en tus despliegues.
📊 Simulador DCA - Para entender estrategias de inversión mientras desarrollas.
📋 ¿Por qué confiar en esta definición? Cada término de la Cryptopedia sigue una metodología de verificación con fuentes primarias, whitepapers y legislación oficial. Conoce nuestro proceso →
⚠️ Disclaimer: Este artículo es informativo y educativo para desarrolladores. Foundry es una herramienta en activo desarrollo. Las versiones y comandos pueden cambiar. Realiza siempre pruebas exhaustivas y auditorías de seguridad antes de desplegar contratos en producción. Este contenido no constituye asesoramiento profesional en desarrollo de software.
📅 Actualizado: Marzo 2026
📖 Categoría: Infraestructura Blockchain / Tooling y Desarrollo
