Configuración inicial de Hardhat: proyecto y scripts

Introducción a Hardhat

Hardhat es uno de los entornos de desarrollo de Ethereum más potentes y flexibles. Permite compilar, desplegar, probar e interactuar con contratos inteligentes de manera sencilla. Su arquitectura modular y su amplia comunidad garantizan un flujo de trabajo profesional y escalable.

1. Requisitos previos

  • Node.js (v14 o superior recomendado).
  • npm o Yarn como gestor de paquetes.
  • Editor de código (VSCode, WebStorm, etc.).
  • Conexión a Internet para instalar dependencias y usar APIs de nodos.
Herramienta Versión Recomendada
Node.js >=14.0.0
npm >=6.0.0
Yarn >=1.22.0

2. Inicialización del proyecto

En tu terminal, sitúate en la carpeta donde quieras crear el proyecto y ejecuta:

mkdir my-hardhat-project
cd my-hardhat-project
npm init -y
npm install --save-dev hardhat

Tras la instalación, lanza el asistente:

npx hardhat

Selecciona Create a basic sample project, acepta las preguntas predeterminadas y confirma la instalación de dependencias adicionales.

3. Estructura de carpetas

Al finalizar tendrás un árbol similar a este:

  • contracts/ – Contratos Solidity de ejemplo.
  • scripts/ – Scripts de despliegue.
  • test/ – Tests en JavaScript/Mocha.
  • hardhat.config.js – Configuración principal.
  • package.json – Dependencias y scripts NPM.

4. Configuración básica (hardhat.config.js)

A continuación, un ejemplo de configuración con redes, versión de Solidity y plugin para variables de entorno:

require(@nomiclabs/hardhat-waffle)
require(dotenv).config()

module.exports = {
  solidity: {
    version: 0.8.9,
    settings: { optimizer: { enabled: true, runs: 200 } }
  },
  networks: {
    hardhat: {},
    ropsten: {
      url: process.env.ROPSTEN_URL,
      accounts: [process.env.PRIVATE_KEY]
    }
  },
  paths: {
    sources: ./contracts,
    tests: ./test,
    cache: ./cache,
    artifacts: ./artifacts
  }
}

4.1. Variables de entorno

Crea un archivo .env en la raíz:

ROPSTEN_URL=https://eth-ropsten.alchemyapi.io/v2/tuApiKey
PRIVATE_KEY=tuClavePrivadaSin0x

Es importante no versionar este archivo (añádelo a .gitignore).

5. Scripts de despliegue y tareas personalizadas

Por defecto el proyecto incluye un ejemplo en scripts/sample-script.js. Veamos uno real:

const hre = require(hardhat)

async function main() {
  const Token = await hre.ethers.getContractFactory(MyToken)
  const token = await Token.deploy(MiToken, MTK)
  await token.deployed()
  console.log(MiToken desplegado en:, token.address)
}

main()
  .then(() => process.exit(0))
  .catch(error => {
    console.error(error)
    process.exit(1)
  })

Para ejecutarlo en Hardhat Network (local) basta con:

npx hardhat run scripts/deploy.js

Y en Ropsten:

npx hardhat run scripts/deploy.js --network ropsten

5.1. Creación de tareas

En hardhat.config.js puedes añadir:

task(balance, Imprime el saldo de una cuenta)
  .addParam(account, La dirección a consultar)
  .setAction(async (taskArgs, hre) => {
    const balance = await hre.ethers.provider.getBalance(taskArgs.account)
    console.log(hre.ethers.utils.formatEther(balance), ETH)
  })

Ejecuta:

npx hardhat balance --account 0xTuDireccion

6. Flujo de trabajo recomendado

  1. Desarrollo de contratos: edita en contracts/.
  2. Compilación: npx hardhat compile.
  3. Pruebas: npx hardhat test.
  4. Despliegue local: npx hardhat node y luego npx hardhat run scripts/deploy.js --network localhost.
  5. Despliegue en testnet/mainnet: usar --network adecuado con variables de entorno.

7. Recursos y documentación

Conclusión

La configuración inicial de Hardhat establece las bases para un flujo de desarrollo robusto y profesional. Desde la instalación hasta la creación de scripts y tareas personalizadas, cada paso aporta flexibilidad y escalabilidad a tus proyectos de contratos inteligentes. ¡Empieza hoy mismo y lleva tu desarrollo cripto al siguiente nivel!


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *