No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
21 Hrs
18 Min
33 Seg

Hardhat

13/15
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 47

Preguntas 18

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

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.

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

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.

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.

El comando

npx hardhat accounts

ya no aparece en la nueva versión de Hardhat.

En cambio, pueden utilizar

npx hardhat node

que inicializa el nodo y muestra las Account con las Private Key.

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

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

Tuve varios problemas, detallo como resolví algunos:

  • El error con el mensaje “Cannot find module ‘@nomicfoundation/hardhat-toolbox’” lo solucioné digitnado el en terminal:
 npm i @nomicfoundation/hardhat-toolbox
  • No se reconoce el comando “accounts”, eso se debe a que en la nueva versión de Hardhat, el programa de ejemplo ha cambiado, pero si desean conocer las wallets deben copias y pegar el siguiente codigo en el archivo hardhat.config.js
task("accounts", "Prints the list of accounts", async () => {
  const accounts = await ethers.getSigners();

  for (const account of accounts) {
    console.log(account.address);
  }
});

Luego de eso no deberían tener problema al usar el comando

npx hardhat accounts

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

$ node scripts/sample-script.js

Si les da el error Error HH303: Unrecognized task accounts, probablemente tengan instalada la version 2.9.9 o posterior de Hardhat.
.
Para ver las cuentas, se puede usar el comando npx hardhat node.
.
Por ejemplo:

$ npx hardhat --version
2.10.1

$ npx hardhat accounts
Error HH303: Unrecognized task accounts
For more info go to https://hardhat.org/HH303 or run Hardhat with --show-stack-traces

$ npx hardhat node
Started HTTP and WebSocket JSON-RPC server at https://127.0.0.1:8545/

Accounts
========

WARNING: These accounts, and their private keys, are publicly known.
Any funds sent to them on Mainnet or any other live network WILL BE LOST.

Account #0: 0xf39Fd6e51a...ffFb92266 (10000 ETH)
Private Key: 0xac0974bec39a1...478cbed5efcae784d7bf4f2ff80

Account #1: 0x70997970C51812...b50e0d17dc79C8 (10000 ETH)
Private Key: 0x59c6995e998f97a5a...9dc9e86dae88c7a8412f4603b6b78690d
.
.
.

Referencia:
“npx hardhat accounts” not available in Hardhat latest version 2.9.9
https://stackoverflow.com/questions/72943829/npx-hardhat-accounts-not-available-in-hardhat-latest-version-2-9-9

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.

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 hardhat@^2.6.7 @nomiclabs/hardhat-waffle@^2.0.0 ethereum-waffle@^3.0.0 chai@^4.2.0 @nomiclabs/hardhat-ethers@^2.0.0 ethers@^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

ando remal los comandos no me funcionan para instalar todo lo necesario

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.

Ojo con la advertencia:
WARNING: These accounts, and their private keys, are publicly known. Any funds sent to them on Mainnet or any other live network WILL BE LOST.

ADVERTENCIA: estas cuentas y sus claves privadas son de conocimiento público. Todos los fondos que se les envíen en Mainnet o cualquier otra red en vivo SE PERDERÁN.

RESUMEN CLASE 12:
HARDHAT

I.- INSTALAR HARDHAT

1.- Crear un directorio para el proyecto

$ mkdir hola-hardhat

2.- Dirigirse al directorio creado

$ cd hola-hardhat

3.- Iniciar npm “Dejar la informacion por defecto del package.json” haciendo ENTER

$ npm init

4.- Para instalar Hardhate ejecutar el siguiente comando

$ npm install --save-dev hardhat

5.- Ejecutar el siguiente comando

$ npx hardhat

6.- Empesar un nuevo proyecto

  • Elegir la opcion “Create a basic sample proyect” y ENTER

7.- Abrir VSCode desde el directorio actual

$ code .

II.- CUENTAS DE PRUEBA POR DEFECTO EN HARDHAT (No usar para enviar ni recibir fondos)

Para ver las direcciones desde las cuales estaremos interactuando, para probar nuestros contratos, enviar y recibir fondos.

$ npx hardhat accounts

III.- PARA DESPLEGAR SMART CONTRACT

1.- Para Compilar Ejecutar el siguiente comando

$ npx hardhat compile

2.- Para hacer Deploy ejecutar el siguiente comando

$ npx hardhat run scripts/sample-script.js

Truffle suite is sweeter and hardhat is more robust.

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

me sirvio esto en windows

set NODE_OPTIONS=–openssl-legacy-provider

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.

Aqui les dejo la guia oficial de hardhat por si tienen algun incoveniente a la hora de ejecutar los comandos https://hardhat.org/hardhat-runner/docs/getting-started

Ejecuté el código en la terminal de Bash y me arrojo el siguiente error:

Luego abrí la Powershell de Windows y volví a ejecutar el código, está vez el resultao fue el esperado:

Muchas gracias ya pude instalar las 3 herramientas. Ahora estoy entendiendo mucho más lo que significa el trabajo en el mundo blockchain. Muchas gracias.

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.

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