Installer Hardhat et créer son premier projet

Daniel KambaleDaniel Kambale
6 min read

Un guide complet pour poser les bases de ton environnement de développement Web3 avec Hardhat.

👋 Hey ami(e) développeur(se) Web2 ! Si tu lis ceci, c’est que tu es prêt(e) à passer de la théorie à la pratique. Bravo 🙌

On a déjà parlé de la différence entre Bitcoin et Ethereum, de la structure des comptes dans Ethereum, et de ce que le Web3 change pour toi en tant que dev Web2.

Mais aujourd’hui, place au concret. On va coder, compiler et déployer un smart contract avec un outil phare : Hardhat.

🧠 Tu n’as pas encore lu les premiers articles ? Pas de souci :
➡️ Pourquoi Ethereum et pas seulement Bitcoin ?
➡️ Comprendre les comptes externes vs contrats intelligents
➡️ Ethereum pour les développeurs Web2 – Ce qu’il faut savoir

🔧 C’est quoi Hardhat et pourquoi l’utiliser ?

Imagine un instant : tu es un développeur Web2 aguerri, à l’aise avec des stacks comme React, Next.js ou Express. Tu démarres un projet, tu installes des dépendances, tu compiles ton code, tu testes en local… Tout ça te parle, n’est-ce pas ? Eh bien, dans le monde du Web3, ce workflow a aussi son équivalent : il s’appelle Hardhat. C’est un framework de développement Ethereum conçu pour rendre la création de smart contracts aussi fluide et structurée que le développement frontend avec Create React App. Hardhat te permet de générer un projet solide dès le départ, tout comme CRA te donne un squelette React clé-en-main. C’est l’outil idéal pour franchir le pont entre tes habitudes Web2 et les exigences techniques du Web3.

Ce qui rend Hardhat si puissant, ce n’est pas juste sa simplicité d’installation, mais sa capacité à tout centraliser : compilation de contrats en Solidity, gestion de tests unitaires, déploiement automatique sur un réseau Ethereum local ou testnet, interaction avec des outils comme Ethers.js, et même la simulation d’un réseau complet en local. En Web2, on parle souvent de serveurs de développement ou de mock APIs pour simuler un backend. En Web3, Hardhat fait bien plus : il simule une blockchain complète, avec des comptes, des fonds virtuels, et une capacité à explorer le moindre comportement d’un contrat avant de le lancer dans le grand bain du réseau principal.

Hardhat est également extensible grâce à des plugins : tu peux lui ajouter des outils comme OpenZeppelin pour la sécurité, Ethers.js pour interagir avec tes contrats, ou encore Dotenv pour gérer tes clés privées. Si dans ton environnement Web2 tu configures Webpack, Babel, ESLint et des scripts npm pour rendre ton app robuste, ici tu fais pareil avec des modules spécifiques au Web3. C’est la boîte à outils moderne de l’ingénieur blockchain, et l’un des meilleurs moyens pour toi, développeur Web2, de prendre tes repères dans cet écosystème décentralisé.

En bref, utilises HardHat pour:

✅ Créer un projet de smart contracts (Solidity)
✅ Compiler ton code
✅ Déployer localement ou sur testnet
✅ Simuler un réseau Ethereum local (comme un localhost de blockchain)
✅ Exécuter des tests, interagir avec Ethers.js
✅ Étendre ton environnement avec des plugins puissants

💬 En Web2, tu as l’habitude d'utiliser Express.js, React, Webpack ou Next.js pour monter un environnement de travail.
En Web3, Hardhat est ce point de départ.

Étape 1 : Préparer ton environnement

Tu vas avoir besoin de :

  • Node.js (v16 ou supérieur recommandé)

  • NPM ou Yarn

  • Un terminal (cmd, PowerShell, Terminal macOS, etc.)

  • Un éditeur de code : VS Code recommandé

✅ Vérifie si Node.js est installé


npm -v

Sinon, installe-le depuis https://nodejs.org

Étape 2 : Créer ton projet Hardhat

Créons notre environnement de base :

mkdir mon-premier-projet-hardhat
cd mon-premier-projet-hardhat
npm init -y
npm install --save-dev hardhat

Puis lance Hardhat :

npx hardhat

Choisis : Create a basic sample project
Et accepte les options par défaut (appuie sur Entrée à chaque question).

🔍 Ce que Hardhat génère pour toi

Voici l’architecture typique que Hardhat crée :

├── contracts
│   └── Lock.sol         # Ton premier smart contract
├── scripts
│   └── deploy.js        # Script de déploiement
├── test
│   └── Lock.js          # Tests automatisés
├── hardhat.config.js    # Configuration principale
└── package.json

En Web2, tu aurais un fichier webpack.config.js ou vite.config.js. Ici, hardhat.config.js joue un rôle similaire pour le Web3.

Étape 3 : Compiler ton smart contract

npx hardhat compile

Si tout se passe bien, tu verras apparaître le dossier artifacts/ contenant les bytecodes et ABIs de tes contrats.

⚠️ L’ABI (Application Binary Interface), c’est comme un fichier .d.ts en TypeScript : il décrit les fonctions, événements et structures du smart contract pour les apps front-end.

Étape 4 : Lancer ton propre réseau Ethereum local

Hardhat embarque un nœud Ethereum local. Pour le lancer :

npx hardhat node

Cela simule un mini Ethereum sur ta machine, avec 20 comptes préremplis en ETH fictif. Tu verras :

Accounts
========
0: 0xabc123...  (10000 ETH)
1: 0xdef456...
...

En Web2, tu aurais utilisé un serveur local comme localhost:3000. Ici, c’est ton nœud blockchain local.

Étape 5 : Déployer ton contrat

Dans un autre terminal :

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

Si tout va bien, tu obtiendras un message de confirmation du déploiement et l’adresse du contrat sur ton réseau local.

🧠 En Web2, tu "pushes" ton app sur Netlify ou Vercel.
En Web3, tu "déploies" un smart contract sur un réseau Ethereum (ici local, plus tard un testnet réel).

Petit détour : Que fait le contrat Lock.sol ?

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.9;

contract Lock {
    uint public unlockTime;
    address public owner;

    constructor(uint _unlockTime) payable {
        unlockTime = _unlockTime;
        owner = msg.sender;
    }

    function withdraw() public {
        require(block.timestamp >= unlockTime, "Not yet!");
        require(msg.sender == owner, "Not the owner");

        payable(msg.sender).transfer(address(this).balance);
    }
}

Ce contrat est simple : il verrouille des fonds jusqu’à une certaine date.
Il ressemble un peu à un coffre-fort déverrouillable dans le temps.

Comparaison Web2 : un setTimeout() géant, qui débloque un fichier ou une action après une durée donnée.

Ressources vidéo et docs utiles

🧪 Pour aller plus loin : ajout de plugins

Installe les outils pratiques :

npm install dotenv ethers @nomicfoundation/hardhat-toolbox

Puis dans hardhat.config.js :

jsCopierModifierrequire("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();

module.exports = {
  solidity: "0.8.18",
};

Grâce à dotenv, tu pourras stocker tes clés API ou clés privées sans les exposer.

🚨 Pièges fréquents à éviter

  • Ne pas oublier d’installer dotenv avant de l’utiliser.

  • Toujours ouvrir un second terminal pour exécuter deploy.js pendant que npx hardhat node tourne.

  • Ne pas mélanger les versions de Solidity (vérifie dans hardhat.config.js et dans ton contrat).

  • Pour les Windows Users : utiliser PowerShell ou Git Bash peut éviter des bugs liés au terminal.

Liens vers les autres articles

📌 Tu as loupé la base théorique ?
👉 Pourquoi Ethereum et pas seulement Bitcoin ?

📌 Besoin de comprendre les comptes dans Ethereum ?
👉 Comprendre les comptes externes vs contrats intelligents

📌 Tu viens du monde Web2 ? Cet article est pour toi :
👉 Ethereum pour les développeurs Web2 – Ce qu’il faut savoir

👉 Et pour la suite ? On va apprendre à manipuler Ethers.js pour interagir avec les smart contracts comme un pro.

➡️ Lire l’article suivant → Ethers.js pour les nuls

🎯 À toi de jouer !

Maintenant que ton environnement est prêt, tu peux :

  • Modifier le contrat Lock.sol pour créer ton propre logic

  • Déployer sur Goerli, Sepolia ou autre testnet

  • Brancher une interface React pour une vraie DApp !

Tu veux un tuto vidéo complet ? Un souci à l’installation ?
👉 Viens discuter avec nous sur Twitter ou envoie un message 💬

De Web2 à Web3 – Le Guide Francophone
Une série pensée pour les devs Web2 comme toi.

41
Subscribe to my newsletter

Read articles from Daniel Kambale directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Daniel Kambale
Daniel Kambale

Hello! I’m Daniel, a Web3 developer specializing in Solidity and smart contract development. My journey in the blockchain space is driven by a vision of a fully decentralized world, where technology empowers individuals and transforms industries. As a Web3 ambassador , I’m committed to fostering growth and innovation in this space, helping to shape a future that values transparency and security. Fluent in both English and French, I enjoy connecting with diverse communities and sharing my insights across languages. This is why you’ll find some of my articles in French, while others are in Swahili, as I believe knowledge should be accessible to all. I use my Hashnode blog to document my learning process, explore decentralized solutions, and share practical tutorials on Web3 development. Whether it's diving deep into Solidity, discussing the latest in blockchain, or exploring new tools, I’m passionate about contributing to a decentralized future and connecting with others who share this vision. Let’s build the future together!