Tutorial Hardhat, l’environnement de développement pour Ethereum

0

Hardhat vient considérablement simplifier le développement sur Ethereum , l’ensemble des outils permet de :

  • Disposer d’un nœud local Ethereum (hardhat network) avec des adresses déjà créées pour le développement (comme le fait Ganache), avec en plus la possibilité de créer une copie complète de la blockchain réelle, ce qui permet d’avoir une simulation au plus proche du réel
  • Créer, tester, débugger (avec console.log), déployer des smart contracts, que ce soit sur un réseau test ou en production
  • Exposer le nœud avec une interface JSON-RPC pour permettre à des clients externes comme Metamask de se connecter au réseau
  • Utiliser des plugins pour étendre les fonctionnalités (test unitaire, interaction avec la blockchain etc)

Voyons comment l’utiliser. Il faut au préalable installer node car Hardhat, comme la plupart des outils pour Ethereum est en javascript.

Installation et initialisation du projet hardhat

On commence par initialiser le projet avec la commande npx hardhat, puis on choisit « Create a basic sample project », ce qui permettra de créer la structure de base avec tout ce dont nous avons besoin pour faire fonctionner notre smart contract.

Hardhat fonctionne avec un ensemble de taches (les tasks), et permet de créer des taches personnalisées. Il suffit de relancer la commande npx hardhat depuis le répertoire les lister :

Les taches personnalisées se trouvent dans le fichier hardhat.config.js à la racine du projet, qui contient déjà la tache accounts permettant de lister les comptes :

Il suffit alors de la lancer pour voir les comptes disponibles s’afficher npx hardhat accounts :

Création et compilation d’un smart contract

Pour créer un smart contract c’est très simple, il suffit de créer le fichier solidity dans le répertoire « contracts » de notre projet. Celui-ci contient déjà un sample que nous allons utiliser. Le fichier greeter.sol permet de créer un contrat et d’y insérer une chaine de caractère :

Il suffit alors de le compiler avec la commande npx hardhat compile

Tester un smart contract

On peut également tester que celui-ci fonctionne bien, le répertoire ‘test’ contient un fichier sample-test qui montre l’exécution d’un test de déploiement et de modification de la chaine de caractère du contrat :

Il suffit alors de lancer la task test avec la commande adaptée npx hardhat test :

Déployer le contrat sur la blockchain

Pour déployer le contrat et l’utiliser, on peut utiliser la commande deploy de hardhat, un exemple se trouve dans le répertoire scripts, il ne suffit que de quelques lignes de code pour mettre ‘on chain’ le contrat :

Puis on lance le script avec la commande npx hardhat run scripts/sample-script.js

Grâce au console.log, on peut récupérer facilement l’adresse du contrat ainsi généré.

Se connecter avec Metamask sur le réseau hardhat

Hardhat permet aussi de mettre à disposition une interface JSON RPC pour interagir avec le réseau, il suffit pour cela d’utiliser la commande npx hardhat node, on récupère ainsi les adresses avec 10000 ETH et la clé privé qu’on pourra importer dans METAMASK :

Il suffira ensuite de choisir le réseau Localhost 8545 dans Metamask, puis dans la gestion des comptes de cliquer sur « Importer un compte » et de coller la clé privé pour commencer à utiliser le compte :

Pour intéragir avec le contrat, vous pourrez toujours utiliser Remix comme précédemment.

C’est terminé ! On voit dans ce tutorial Hardhat à quel point c’est un outil puissant puisqu’il permet en quelques commandes console de disposer d’un environnement complet de développement, qui permet aussi bien de compiler un contrat, que de le tester, le déployer, et même interagir avec, tout en laissant la possibilité d’utiliser des plugins externes (metamask, web3 etc).

Article précédentQu’est ce qu’un NFT ?
PARTAGER

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.