Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Hardhat

12/14
Recursos

Hardhat es una de las herramientas más usadas para el desarrollo blockchain. Desde la compilación, testing, despliegue y el debugging de los contratos. Su red, “Hardhat Network”, es una red de prueba basada en la de Ethereum, aunque ofrece unas ventajas que te ayudarán a identificar errores en tus contratos de una manera más práctica. Esto es algo muy poderoso de la herramienta.

Utiliza npm con su paquete Hardhat, que se apoya de otros plug-ins para aumentar su funcionalidad.

Iniciemos con Hardhat

  • Entra a tu terminal, y en tu directorio principal crea una carpeta nueva: $ take hola-hardhat
  • Ya adentro en la carpeta, inicia npm: $ npm init
  • Deja la información por defecto del package.json
  • Ahora, ejecuta el siguiente comando para la instalación: $ npm install --save-dev hardhat
  • Al término de la instalación, ejecuta: $ npx hardhat
  • Al estar instalado, puedes empezar un nuevo proyecto. Te ofrecerá algunas opciones de arranque rápido. Elige la opción “Create a basic sample project” para conocer un poco más sobre el ambiente de trabajo.

Después de que termine de descargar los archivos, ábrelos en VS Code con el comando; $ code .

Con estas carpetas y archivos, ya cuentas con lo necesario para empezar a trabajar en el desarrollo de contratos. El apartado de “contracts” es en donde guardarás los archivos con extensión “.sol”, los que entiende Solidity. Dale una revisada a todo, para que empieces a familiarizarte 😃

Es solo una prueba

Recuerda que esta red es algo que te permite conocer de forma similar cómo se trabaja dentro de la red Ethereum. Hardhat te provee de cuentas con balances de prueba para que las uses, pero no debes mezclar estas cuentas para transacciones reales.

Por último, para desplegar un contrato, lo haremos junto con un script que se adjuntó en la descarga:

  • Ejecuta: $ npx hardhat compile
  • Después: $ npx hardhat run scripts/sample-script.js
  • Verás el mensaje: “Hello, Hardhat!”, además de la dirección donde se encuentra el contrato
    Listo, es así de fácil. Es importante recalcar la particular ventaja con Hardhat, pues al hacer un fork de la red de Ethereum, puedes trabajar con protocolos que ya se encuentran funcionando en la red principal, lo cual te permitirá darte una mejor idea de lo que podrás hacer en el entorno de verdad.

Aporte creado por: Luis Enrique Herrera.

Aportes 37

Preguntas 12

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Hola, si también tuvieron este error

Error: Cannot find module '@nomiclabs/hardhat-waffle'

Lo soluciones instalando el paquete

npm i @nomiclabs/hardhat-waffle

y luego ya puedes ver las accounts y el resto.

Hardhat nos ayuda en el desarrollo de forma local con Solidity.

  • Ventajas: Compilación, despliegue y test e incluso hasta el debug de los contratos.

Lo mejor de todo es que estarás desarrollando en una red de prueba llamada Hardhat Network basada en la red de Ethereum pero con algunas mejoras que te permitirán identificar errores en tus contratos inteligentes.

Los proyectos de Hardhat, son proyectos de NPM con el paquete Hardhat instalado que se ayuda de otros plugins para incrementar sus funcionalidades.

Instalación de ambiente de desarrollo

1.- Crear carpeta y entrar en ella:

$  mkdir hola-hardhat
$  cd hola-hardhat

2.- Creando el proyecto en NPM (dar Enter a todas las preguntas para dejar por defecto):

$  npm init 

3.- Instalando HardHat en el proyecto:

$  npm install --save-dev hardhat
$  npx hardhat  //Ejecutando hardhat 

4.- Verás la información de bienvenida en la terminal y las opciones de crear un proyecto. Seleccionar “Create a basic sample project”, esto nos creará un proyecto de pruebas con archivos básicos.

Para ver las direcciones de prueba con las que estaremos interactuando. Son sólo de prueba, no las utilices para recibir tokens verdaderos de mercado.

$  npx hardhat accounts

Para compilar el proyecto:

$  npx hardhat compile

Para desplegar el proyecto:

$  npx hardhat run scripts/sample-script.js

Al ejecutar esto debe aparecer el mensaje “Hello Hardhat!” lo que indicará que todo ha ido bien y veremos la dirección en la que se encuentra el contrato.

Personalmente me gusta mucho hardhat y lo he estado usando mas. Consejo para los que van empezando: denle sin miedo y si pueden metanse a hackathones en la plataforma devPost. Platzi es muuuuy bueno en sus cursos pero la experiencia de construir en un hackathon ayuda mucho a acelerar el proceso

Truffle te crea un entorno un poco más amigable y más modesto de usar, tiene un plus en su suite, y es** Drizzle** donde te proporciona una especie de plantillas para poder hacerle el FrontEnd a tu app con web3.js. Aunque, ha diferencia de Hardhat, es más robusto es más potente, tiene una red completa para poder testear, hacer deploys y corregir bugs. Las dos son buenas para desarrollar, incluyendo Remix, pero al momento de crear un proyecto más profesional, se usa Hardhat para poder tener la linea de herramientas que facilitarán el desarrollo de tus proyectos.

Truffle me pareció mas completo, y amigable por su interfaz grafica y cli.

Comandos de la clase

npm init
npm install --save-dev hardhat
npx hardhat

>create a basic sample project
code .
npx hardhat accounts

npx hardhat compile
npx hardhat run scripts/sample-script.js

En otro curso que tomé comentaban que Hardhat se usa más en entornos profesionales. En lo personal, me gusta que hardhat tiene todo lo que necesitamos para desarrollar. Sin embargo, me interesa saber más sobre herramientas para frontend como drizzle, de Truffle

También para los que tengan más conocimiento de Python que de Javascript pueden usar :
Brownie
Es similar a Truffle pero basado en python.

Comandos usas en esta clase:

  • mkdir hola-hardhat
  • cd hola-hardhat
  • npm init
  • ls
  • npm install --save-dev hardhat
  • npx hardhat

–Seleccionar create a basic sample project

  • y

  • code . // abrir los archivos en visual studio code si lo tienes instalado

  • npx hardhat account //ver direcciones hardhat de prueba para probar contratos, enviar fondos, recibir fondos, etc.

  • npx hardhat compile

  • npx hardhat run scripts/sample-scripts-js 77 ejecutar script de prueba de nuestro contrato

Error: error:0308010C:digital envelope routines::unsupported

me sirvio esto en windows

set NODE_OPTIONS=–openssl-legacy-provider

Si han tenido problemas para el deploy de "Hello, hardhat!"
Usar este comando:

$ node scripts/sample-script.js

Con el comando

npm init -y

se puede generar el json con los mismos resultados que la clase pero sin tener que responder las preguntas, o sea automáticamente.

Para los que tengan problemas, la solucion esta en hacerle downgrade a su node, que lo pueden realizar con el siguiente comando:

nvm install <version>.

Dentro de version escriben una version actual a la que hayan instalado, por el momento la ultima version estable que use y les recomiendo es la

16.12.0.

En mi caso uso una raspberry pi 4B y llego a compilar con hardhat, sin embargo truffle me vota varios errores

La verdad esta librería me gusto porque se instala por proyecto pero la verdad me gusto más truffle por la vista que tiene de escritorio.
Aunque la verdad son muy similares al momento de compilar y desplegar el contrato. Increíble curso!

Me gusta que Truffle tiene librerías para front, no sé si HardHat también

Desde mi punto de vista como principiante, al ser nuevo en este mundo, y viendo estos 3 entornos de desarrollo, me gusto bastante truffle por que brinda diferentes herramientas para cada cosa, para crear contratos (truffle), para crear la blockchain local (ganache) y manipular el frontend (drizzle), además me pareció ordenada y segmentada, y se me hizo muy facil entenderla.

RemixIDE me parece tambien genial para iniciarte en solidity he ir practicando y aprendiendo nuevos conceptos.

Hardhat también esta bacana y se ve que es muy potente y ofrece mas características que los anteriores ambientes no poseen, pero me resulto un poco confusa.

Aun así esta genial y cada entorno cumple para ciertos propósitos

Interesante. No había oído hablar de esta herramienta. Uso RemixIDE para prueba de conceptos y la Truffle suite para mis proyectos

Si no os funciona, borrad todo y empezad de nuevo, desde cero. Debes seguir todos los pasos y ver que todos los archivos se guarden en la misma carpeta, en Usuario o en el Sistema.

Para compartirles la siguiente experiencia y una duda al respecto: Con el Windows PowerShell como administrador se mostró el error HH12 al correr el comando npx hardhat. Ninguna acción corrigió este error pasando desde la reinstalación del npm, hacer downgrades, implementación de varios de los aportes del curso, entre otras. Entonces ingresé el comando npx hardhat en la consola cmder y se presentó la información esperada (ver imagen). Quedo atento por si hay alguna configuración para el Windows PowerShell o mas bien es recomendable el uso de consolas alternativas.

Si están usando windows y usan el powershell para esta práctica y no les sale, usen el cmd en modo administrador, y ya ahí les sale la práctica.

me ha gustado hardhat porque es simple y ademas podemos ir directamente ha como poder desarollar los contratos mas alla de hello mundo.
Me gustaria tambien poder crear aplicaciones reales al mundo de blockchain con los smart contracts

Saludos

Ventaja de utilizar Hardhat

Te permite realizar todo el proceso de desarrollo facilmente desde la
compilación, despliegue, test y hasta el debug de los contratos.

También se puede usar el comando “npm init -y” y deja todas las opciones por defecto

underestimating alert: USAR ALGUNA VERSIÓN ANTERIOR A LA 17 DE NODE.JS, al menos por el momento.

Personalmente, agregué en la opción de build en el package.json que los proveedores SSL fueran legados, así:

esta me gusta más

Hola si alguien tiene el siguiente error

Error: Cannot find module '@nomiclabs/hardhat-waffle'

Tiene que instalar

npm install --save-dev @nomiclabs/hardhat-waffle ethereum-waffle chai @nomiclabs/hardhat-ethers ethers
#

npx hardhat accounts se listas las direcciones con las cuales vamos a interactuar

Para desplegar el proyecto: npx hardhat run scripts/sample-script.js

Para copilar el proyecto: npx hardhat compile

Para visualizar las direcciones con las que estaremos interactuando para probar nuestros contratos, enviar fondos, recibir fondos con: npx hardhat accounts

Instala Hardhat con : npx hardhat

Para instalar hardHat en nuestro proyecto ingresamos en siguiente comando: npm install --save-dev hardhat

Para crear un nuevo proyecto con : npm init

npm init -y : Para dejar toda la configuracion por defecto de una.
npm install --save-dev hardhat : Instalar hardhat
npx hardhat : npx nos ayuda a evitar el versionado y la instalación de paquetes innecesarios que sólo queremos probarnpm install --save-dev [email protected]^2.6.7 @nomiclabs/[email protected]^2.0.0 [email protected]^3.0.0 [email protected]^4.2.0 @nomiclabs/[email protected]^2.0.0 [email protected]^5.0.0npx hardhat accounts: Direcciones de prueba. NO usar para transacciones reales.npx hardhat compile: Compilar proyectonpx hardhat run scripts/sample-script.js` : despliegue del contrato en la red local