Migración de Truffle a Hardhat: Guía Práctica
Publicado el 10 de junio de 2024
Introducción
En el ecosistema de desarrollo de contratos inteligentes de Ethereum, Truffle ha sido durante años el marco de referencia para compilar, implementar y probar. Sin embargo, Hardhat ha emergido como una alternativa más flexible y rápida, con un potente sistema de extensiones y mejor rendimiento. En esta guía detallada aprenderás los pasos esenciales para migrar un proyecto de Truffle a Hardhat sin perder productividad ni estabilidad.
¿Por qué migrar a Hardhat
- Velocidad: Hardhat Network es una red local ultrarrápida.
- Flexibilidad: Plugins oficiales y comunidad activa.
- Error handling: Stack traces y mensajes más claros.
- Integraciones: Compatibilidad nativa con TypeScript y frameworks de testing modernos.
1. Requisitos Previos
- Tener instalado Node.js gt= 16.x
- npm o yarn actualizado
- Proyecto inicial con Truffle configurado
- Conocimientos básicos de Solidity y JavaScript
2. Instalación de Hardhat
En la raíz de tu proyecto, ejecuta:
npm install --save-dev hardhat
A continuación, inicia la configuración interactiva:
npx hardhat
Selecciona quotCreate an empty hardhat.config.jsquot o la plantilla default según tus necesidades.
3. Estructura de Carpetas
Compara la estructura Truffle con la de Hardhat:
| Truffle | Hardhat |
|---|---|
| contracts/ | contracts/ |
| migrations/ | scripts/ |
| test/ | test/ |
| truffle-config.js | hardhat.config.js |
4. Configuración de hardhat.config.js
Ejemplo de configuración completa:
require(@nomiclabs/hardhat-waffle)
require(dotenv).config()
module.exports = {
solidity: {
compilers: [
{ version: 0.8.17 },
{ version: 0.6.12 }
]
},
networks: {
hardhat: {},
ropsten: {
url: process.env.ROPSTEN_URL,
accounts: [process.env.PRIVATE_KEY]
}
},
paths: {
sources: ./contracts,
tests: ./test,
cache: ./cache,
artifacts: ./artifacts
},
mocha: {
timeout: 200000
}
}
- .env: Define ROPSTEN_URL y PRIVATE_KEY para desplegar en testnets.
- Plugins: Waffle, Etherscan, TypeChain, etc.
5. Migración de Scripts de Migraciones
En Truffle, las migraciones usan archivos numerados en migrations/. En Hardhat, trasladaremos esta lógica a scripts/:
// scripts/deploy.js
async function main() {
const Token = await ethers.getContractFactory(MyToken)
const token = await Token.deploy(MiToken, MTK)
await token.deployed()
console.log(Token desplegado en:, token.address)
}
main()
.then(() => process.exit(0))
.catch(error => {
console.error(error)
process.exit(1)
})
6. Pruebas y Frameworks
Hardhat está preparado para trabajar con Mocha y Chai. Un ejemplo mínimo:
const { expect } = require(chai)
describe(MyToken, function () {
it(Debe asignar el nombre correcto, async function () {
const Token = await ethers.getContractFactory(MyToken)
const token = await Token.deploy(MiToken, MTK)
await token.deployed()
expect(await token.name()).to.equal(MiToken)
})
})
- Configuración de timeout en
hardhat.config.js. - Snapshots y revert instantáneos con
network.provider.send(evm_snapshot).
7. Plugins Esenciales
- @nomiclabs/hardhat-ethers
- @nomiclabs/hardhat-waffle
- @typechain/hardhat
- hardhat-gas-reporter
- @nomiclabs/hardhat-etherscan
Cada uno se instala con:
npm install --save-dev nombre-del-plugin
8. Consejos de Depuración
- –show-stack-traces: Parámetro para obtener trazas completas.
- console.log: Hardhat permite logs dentro de los contratos con
hardhat/console.sol. - Hardhat Inspector: Herramienta experimental para explorar el estado de la cadena.
9. Despliegue a Producción
Usa la red principal configurada en hardhat.config.js:
npx hardhat run scripts/deploy.js --network mainnet
Verifica la dirección del contrato en Etherscan usando el plugin @nomiclabs/hardhat-etherscan:
npx hardhat verify --network mainnet 0xContrato... MiToken MTK
10. Recursos y Enlaces Útiles
Conclusión
La migración de Truffle a Hardhat no solo mejora el rendimiento de tu flujo de trabajo, sino que también abre la puerta a un ecosistema de herramientas más avanzado. Siguiendo esta guía práctica, podrás trasladar tu proyecto paso a paso, manteniendo la coherencia en pruebas, despliegues y scripts. ¡Pon a prueba Hardhat hoy y lleva tu desarrollo de smart contracts al siguiente nivel!
Deja una respuesta