11 KiB
Étape 2 — Initialiser Hardhat dans tokenizerRendu/code/
Sujet (ch. IV) : dossier
code/à la racine du dépôt école ; maîtriser la toolchain (Hardhat cité) ; code commenté plus tard (étape 3).
Prérequis : étape 1 ✅ (réseau BSC Testnet 97, tBNB sur FGC_account).
Lire d’abord (recommandé) : Hardhat et alternatives · Ressources Solidity / Hardhat (§ 2 + § 8 plan minimum).
Objectif (en une phrase)
Tu installes sur ta machine une chaîne d’outils (Node + Hardhat) qui va compiler du Solidity, lancer des tests et déployer sur BSC Testnet — sans écrire encore ton token FGC42Forge (étape 3).
Rappel pédagogique : qui fait quoi ?
| Élément | Rôle |
|---|---|
| Solidity | Langage des contrats (FGC42Forge.sol, plus tard). |
| Hardhat | Programme Node.js : compile, tests, scripts de déploiement. |
| OpenZeppelin | Bibliothèque de contrats éprouvés (ERC20, Ownable) — installée maintenant, utilisée à l’étape 3. |
.env |
Fichier local avec RPC + clé privée — lu par hardhat.config.js, jamais dans Git. |
Vue d’ensemble des sous-étapes
- A — Vérifier Node.js et se placer dans
tokenizerRendu/code/ - B — Créer
package.jsonet installer Hardhat - C — Lancer
npx hardhat init(assistant interactif) - D — Installer OpenZeppelin +
dotenv - E — Configurer
hardhat.config.jspour BSC Testnet (chainId 97) - F — Créer
.env(secret) et.env.example(modèle pour le rendu) - G —
npx hardhat compile(preuve que tout fonctionne) - H — Compléter
code/README.md
Durée indicative : 30–45 min la première fois (surtout la lecture des menus hardhat init).
A. Environnement
Où travailler ?
Le sujet demande le code dans tokenizerRendu/code/ (dépôt de rendu), pas à la racine tokenizer/ du dépôt de travail.
cd /home/fgras-ca/projets/42School/tokenizer/tokenizerRendu/code
pwd # doit finir par .../tokenizerRendu/code
Node.js
node -v # idéalement ≥ 18 (ex. v20, v22)
npm -v
Si node est introuvable : installer Node.js LTS ou utiliser nvm.
Checklist :
node -vOK- Tu es dans
tokenizerRendu/code/
B. Créer le projet npm
npm init -y crée un package.json minimal : nom du projet, scripts, liste des dépendances.
npm init -y
Tu dois voir un fichier package.json apparaître dans code/.
Puis installer Hardhat et le toolbox (plugins officiels : tests, Ethers, etc.) :
npm install --save-dev hardhat @nomicfoundation/hardhat-toolbox
--save-dev= outils de développement uniquement (pas besoin sur la blockchain).- Première install : téléchargement depuis le registre npm → connexion Internet requise.
Checklist :
package.jsonprésent- Dossier
node_modules/créé (ignoré par Git via.gitignoreparent)
C. Assistant d’initialisation Hardhat
Tu as installé Hardhat 3 (ex. 3.20.x via npm install hardhat). À partir de la v3, la commande a changé :
npx hardhat --init
Erreur HHE3 avec
npx hardhat init? C’est normal : l’ancienne sous-commandeinitn’existe plus. Le message te dit d’utiliser--init(avec deux tirets).
Lance npx hardhat --init dans ton terminal (pas dans un environnement non interactif) : Hardhat affiche le logo et te pose des questions.
npx exécute le binaire Hardhat sans l’installer globalement.
Variante (tutos Hardhat 2 uniquement)
Si tu veux coller aux vieux tutos (hardhat init + hardhat.config.js + npx hardhat compile), tu peux épingler Hardhat 2 avant d’initialiser :
npm uninstall hardhat @nomicfoundation/hardhat-toolbox
npm install --save-dev hardhat@2.22.19 @nomicfoundation/hardhat-toolbox@5
npx hardhat init
Pour ce projet 42, Hardhat 3 + --init convient très bien ; on adaptera la config réseau BSC après l’assistant (souvent hardhat.config.ts + npx hardhat build au lieu de compile).
Choix recommandés (JavaScript, plus simple pour ce projet)
Les libellés peuvent varier légèrement selon la version de Hardhat ; l’idée :
| Question | Choix conseillé | Pourquoi |
|---|---|---|
| Type de projet | Create a JavaScript project | Moins de config TypeScript pour commencer |
| Emplacement du config | Oui / racine de code/ |
hardhat.config.js à côté de package.json |
| Projet vide ou exemple ? | Oui, exemple (Lock) | Tu vérifies compile + tests ; Lock supprimé à l’étape 3 |
.gitignore dans code/ ? |
Non si déjà couvert par tokenizerRendu/.gitignore |
Évite les doublons ; le parent ignore déjà node_modules, cache, artifacts |
Arborescence typique après init
tokenizerRendu/code/
├── contracts/
│ └── Lock.sol # exemple — temporaire
├── test/
│ └── Lock.js # tests de l’exemple
├── scripts/
│ └── (deploy Lock, etc.)
├── hardhat.config.js
├── package.json
└── package-lock.json
Checklist :
hardhat.config.jsexistecontracts/Lock.solexiste (pour l’instant)
D. OpenZeppelin et dotenv
npm install @openzeppelin/contracts
npm install dotenv
- OpenZeppelin : tu n’importes rien encore ; c’est pour l’étape 3 (
import "@openzeppelin/contracts/..."). - dotenv : charge les variables du fichier
.envdansprocess.envau lancement de Hardhat.
Checklist :
- Les deux paquets listés dans
package.json→dependenciesoudevDependencies
E. Configurer BSC Testnet dans hardhat.config.js
Ouvre hardhat.config.js et remplace son contenu par (ou fusionne proprement si tu préfères) :
require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.24",
networks: {
bscTestnet: {
url: process.env.BSC_TESTNET_RPC || "https://data-seed-prebsc-1-s1.binance.org:8545/",
chainId: 97,
accounts: process.env.PRIVATE_KEY ? [process.env.PRIVATE_KEY] : [],
},
},
};
Ce que signifient les lignes importantes
solidity: "0.8.24": version du compilateur pour tous les contrats (alignée avec OpenZeppelin récent).bscTestnet: nom local du réseau ; tu l’utiliseras plus tard avec--network bscTestnet.chainId: 97: identifiant officiel BNB Smart Chain Testnet (doit correspondre à MetaMask).accounts: siPRIVATE_KEYest vide, tableau vide → compile/tests locaux OK ; déploiement testnet nécessitera la clé (étape déploiement).
Tu ne déploies pas sur le testnet dans cette étape : tu prépares seulement la config.
Checklist :
require("dotenv").config();présentchainId: 97présent
F. Fichiers .env et .env.example
Sécurité (à lire une fois pour toute la suite)
- La clé privée = contrôle total du compte → compte de test uniquement (FGC_account).
- Ne jamais : commit Git, capture d’écran publique, message Discord/chat avec la clé.
- Si tu as un
.envà la racinetokenizer/(dépôt travail), le secret pour Hardhat doit vivre danstokenizerRendu/code/.env(celui que lithardhat.config.js).
tokenizerRendu/code/.env (local, ignoré par Git)
Crée le fichier à la main :
BSC_TESTNET_RPC=https://data-seed-prebsc-1-s1.binance.org:8545/
PRIVATE_KEY=0x................................................................
Obtenir la clé (MetaMask) : compte FGC_account → ⋮ → Détails du compte → Afficher la clé privée (mot de passe MetaMask) → copier avec le préfixe 0x.
tokenizerRendu/code/.env.example (à committer)
Même structure, sans vraie clé :
BSC_TESTNET_RPC=https://data-seed-prebsc-1-s1.binance.org:8545/
PRIVATE_KEY=
Le .gitignore du rendu (tokenizerRendu/.gitignore) contient déjà .env et autorise .env.example via !.env.example.
Checklist :
.envcréé danscode/(pas seulement à la racine tokenizer).env.examplecréégit statusne liste pas.envcomme fichier à committer
G. Vérifier la compilation
npx hardhat compile
Sortie attendue (succès)
Quelque chose comme :
Compiled 1 Solidity file successfully (evm target: paris).
Des dossiers cache/ et artifacts/ apparaissent (déjà ignorés par Git).
Tests optionnels (exemple Lock)
npx hardhat test
Si les tests passent, Hardhat + toolbox sont bien branchés. Ce n’est pas obligatoire pour valider l’étape 2, mais c’est rassurant.
Dépannage rapide
| Problème | Piste |
|---|---|
HHE3 — No Hardhat config + « run with --init » |
Utiliser npx hardhat --init (Hardhat 3), pas npx hardhat init |
| HHE11 — pas de shell interactif | Lancer --init dans ton terminal Cursor / système |
Cannot find module '@nomicfoundation/hardhat-toolbox' |
Relancer npm install dans code/ |
| Erreur Solidity / version | Vérifier solidity dans hardhat.config.js et la version en tête de Lock.sol |
PRIVATE_KEY / invalid account |
Normal si clé mal formatée ; compile ne nécessite pas la clé. Corriger avant déploiement. |
| Permission réseau npm | Vérifier proxy / réseau ; réessayer npm install |
Checklist :
npx hardhat compilesans erreur
H. Mettre à jour code/README.md
Ajoute une section courte (en français pour ton suivi ; README école final plus tard si besoin) :
- Prérequis : Node ≥ 18
cd code && npm install- Copier
.env.example→.envet remplirPRIVATE_KEY npx hardhat compile- Prochaine étape : contrat FGC42Forge (étape 3)
Livrable pour vérification (dans le chat)
- « Étape 2 terminée »
- Copier uniquement la dernière ligne de succès de
npx hardhat compile(pas de.env) - Confirmer :
.env.exampleprésent,.envnon commité
Ne pas envoyer la clé privée.
Après cette étape
- Étape 3 : supprimer
Lock.sol, ajouterFGC42Forge.sol(supply 1 000 000, pas de mint,Ownable), tests. - Déploiement testnet : plus tard, avec
npx hardhat run scripts/... --network bscTestnet.
Références
- decisions-projet.md — FGC42Forge / FG42
- guide-realisation.md — étape 2
- Sujet : dossier
code/— tokenizer.md