Guía sobre Hardhat Ethereum

Guía sobre Hardhat Ethereum

¡Hola! Estoy aquí de nuevo.

Como siempre me gusta extraer conocimientos técnicos sobre lenguajes y tecnologías "exóticos", ¡esta vez no será diferente!

¿Quién ha oído hablar de las criptomonedas? ¿Qué pasa con los contratos inteligentes? Bueno, en este artículo, hemos esbozado una guía para principiantes sobre Hardhat Ethereum.

Este artículo está en formato de tutorial, a fin de ayudarte a desarrollar algo desde cero con Hardhat, que no es más que un entorno de desarrollo que facilita la construcción en la red Ethereum.

Hardhat

El entorno Hardhat ayuda a quienes están desarrollando un proyecto para administrar y automatizar las tareas inherentes al proceso de creación de contratos inteligentes y aplicaciones, lo que permite introducir fácilmente más funcionalidades en este flujo.

Este entorno está integrado con Hardhat Network, una red local de Ethereum diseñada específicamente para el desarrollo, lo que facilita implementar contratos inteligentes, ejecutar pruebas e incluso depurar el código.

Antes que nada, debo mencionar que para poder seguir y entender bien este tutorial, debes ser capaz de:

  • Tener VSCODE instalado;
  • Escribir código en JavaScript;
  • Operar una terminal;
  • Utilizar el control de versiones del código GIT;
  • Comprender los conceptos básicos sobre cómo funcionan los contratos inteligentes;
  • Configurar una billetera Metamask.

Si no sabes cómo hacer alguno (o ninguno) de los temas mencionados anteriormente, te sugiero tomar el tiempo para aprender los conceptos básicos necesarios para crear contratos inteligentes, ya que no es un tema fácil.

Aclarado esto, te guiaré a través de los siguientes pasos:

1) Configurar tu entorno Node.js para el desarrollo de Ethereum
2) Primeros pasos para crear y configurar un proyecto Hardhat.
3) Fundamentos de un contrato inteligente en Solidity.
4) Crear pruebas automatizadas para tu contrato con Hardhat.
5) Depuración de Solidity con console.log() usando Hardhat Network.
6) Implementar tu primer contrato inteligente para redes de prueba Hardhat Network y Ethereum.

Presentados estos temas, ¡comencemos!

1- Configurar un ambiente Node.js para desarrollo Ethereum

Primero, ¿cuál es el lenguaje utilizado por Hardhat?

Bueno, la mayoría de las bibliotecas y herramientas de Ethereum están escritas en JavaScript, igual que el propio entorno Hardhat. Con eso en mente, usaremos Node.js, que es runtime basado en el motor JavaScript V8 de Chrome, siendo la solución más popular para ejecutar JavaScript fuera de un navegador web. De hecho, Hardhat está construido sobre él.

⚠️
Dato: Es posible descargar la extensión oficial de Hardhat que agrega soporte avanzado para Solidity a Hardhat.


1 - Instalar Node.js

⚠️
Consejo: Puedes omitir esta sección si ya tienes instalada una versión de Node.js superior a la 16.0. De lo contrario, aquí explico cómo instalarlo en Ubuntu, MacOS y Windows.

Linux Ubuntu

  • Asegúrate de tener GIT instalado.
  • Escribe lo siguiente en una terminal:

Mac OS


En este tutorial utilizaremos el Administrador de versiones de nodos (NVM).

  • Asegúrate de tener GIT instalado.
  • Escribe lo siguiente en una terminal:

Windows


Si usas Windows, te recomiendo usar el Windows Subsystem for Linux (conocido como WSL2). Puedes usar Hardhat sin él, pero funcionará mejor si lo tienes.

  • Asegúrate de tener GIT instalado.
  • Accede a este enlace que cuenta con una instalación paso a paso de Node.js en Windows:
  • Sigue las instrucciones de instalación en el repositorio de windows-nvm.
  • Descarga el archivo nvm-setup.zip para obtener la última versión.
  • Una vez descargado, abre el archivo .zip y luego el archivo nvm-setup.exe.
  • El asistente de instalación Setup-NVM-for-Windows te guiará a través de los pasos para configurar tanto nvm-windows como Node.js.
  • Instala la versión LTS actual de Node.js con el comando:

nvm install latest

  • Después de instalar Node.js, selecciona la versión que te gustaría usar:

nvm use <version><version>nvm use 12.9.0

  • Comprueba cuál versión de npm está instalada:

npm --version

Con eso, tendrás Node.js y el paquete nvm instalados en tu equipo.

2- Primeros pasos para crear y configurar un proyecto Hardhat


Después de instalar Node.js, instalaremos Hardhat.

Abre una nueva terminal y ejecuta estos comandos para crear una nueva carpeta:

Luego, inicia un proyecto NPM como se muestra a continuación.

Te pedirá que respondas algunas preguntas.

Ahora podemos instalar Hardhat:

En el mismo directorio donde instalaste Hardhat, ejecuta:

Selecciona Crear un hardhat.config.js vacío con tu teclado y presiona Enter.

Con eso, tendrás las dependencias de Hardhat instaladas en el proyecto.

3- Lo básico de un contrato inteligente en Solidity


Los contratos de token se usan con mayor frecuencia para intercambiar o almacenar valor y aquí mostraré cómo crear un contrato inteligente simple que implemente un token transferible.

No entraré en detalles sobre el código del contrato de Solidity en este tutorial, pero hay cierta lógica de implementación que debes comprender (que básicamente es la funcionalidad de nuestro contrato inteligente), veamos:

  • Hay un suministro total (fijo) de tokens que no se puede cambiar.
  • La responsabilidad de la prestación se asigna a la dirección de ejecución del contrato.
  • Cualquiera puede recibir tokens.
  • Cualquier persona con al menos un token puede transferirlos.
  • El token no es divisible. Puedes transferir 1, 2, 3 o 23 tokens, pero no 1,5.
⚠️
Dato: El token estándar en Ethereum es ERC-20, pero en aras de la simplicidad, el token que vamos a construir no implementa este estándar.

Escribiendo contratos inteligentes


Comienza creando un nuevo directorio llamado contracts y crea un archivo dentro del directorio llamado Token.sol.

Pega el código a continuación en el archivo y tómate un minuto para leer el código lentamente. Es relativamente simple y está lleno de comentarios que explican los conceptos básicos de Solidity y sus funciones.

Compilar el contrato para dejarlo listo para uso


Para compilar el contrato, ejecuta npx hardhat compile en tu terminal.

El contrato se ha compilado con éxito y está listo para usarse.

4- Crear pruebas automatizadas con Hardhat


Cómo probar tu contrato inteligente


Comienza generando un nuevo directorio llamado test dentro del directorio raíz del proyecto y crea un nuevo archivo llamado Token.js. En este archivo, eres libre de hacer la lógica de programación relacionada con tu contrato y las funciones descritas en él para que pueda replicar su funcionamiento, probando así las funcionalidades.

A continuación encontrarás un código con un modelo de prueba para ver si la función de proporcionar el total de tokens al propietario funciona, veamos:

Ahora, ejecuta npx hardhat test en tu terminal. Deberías ver el siguiente mensaje:

Eso significa que la prueba funcionó.

5- Depurar Solidity con console.log () mediante Hardhat Network


Puedes imprimir mensajes de registro y variables usando console.log(). Para usarlo, debes importar hardhat/console.sol en tu código de contrato.

La salida del registro se mostrará cuando ejecutes tus pruebas con el comando:

$ npx hardhat test

6- Implementar tu primer contrato inteligente para redes de prueba Hardhat Network y Ethereum


Una vez que estés listo/a para compartir tu contrato inteligente con otros, puedes implementarlo en una red activa para que otras personas también puedan acceder a él sin ser locales.

No hace falta decir que la mainnet de Ethereum maneja dinero real, pero hay redes de prueba independientes que no lo hacen.

Para animarte, puedo decir que el código aquí es muy similar al que se usó en la sección de pruebas (y muchas veces puede ser incluso el mismo).

Creemos un nuevo script de directorio dentro del directorio raíz del proyecto y peguemos lo siguiente en un archivo deploy.js en ese directorio:

Para decirle a Hardhat que se conecte a una red Ethereum específica, puedes usar el parámetro --network al ejecutar cualquier tarea, como ésta:

npx hardhat run scripts/deploy.js --network <network-name>

Para implementar en una red remota, como una red principal o cualquier red de prueba, debes agregar una entrada de red al archivo hardhat.config.js.

En esta prueba se demostrará un ejemplo usando la red Goerli, pero puedes agregar cualquier red de la misma manera:

require("@nomicfoundation/hardhat-toolbox");

Realiza los pasos anteriores, ve a https://www.alchemyapi.io, regístrate, crea una nueva aplicación en tu tablero y reemplaza KEY con tu clave.

const ALCHEMY_API_KEY = "KEY";

Reemplaza esta clave privada con la de tu cuenta Goerli.

Estamos usando Alchemy, pero funcionaría apuntar la URL a cualquier nodo o gateway de Ethereum. Busca tu ALCHEMY_API_KEY y regresa.

Para implementar en Goerli, debes enviar Ether Goerli a la dirección que realizará la implementación.

Finalmente, ejecuta:

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

Si todo salió bien hasta ahora, debería ver implementada la dirección del contrato.

Espero que este artículo te haya explicado lo esencial sobre Hardhat Ethereum.

¡Hasta la próxima!

⚠️
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Revelo.

Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.