-
Notifications
You must be signed in to change notification settings - Fork 4
Hardhat
Prรฉsentation : Hardhat est un environnement de dรฉveloppement Ethereum (EVM) destinรฉ ร concevoir, tester, dรฉployer et dรฉboguer des smart contracts de maniรจre fiable et reproductible.
Dรฉvelopper des smart contracts nรฉcessite plus quโun simple compilateur.
Hardhat fournit un cadre de travail complet permettant de :
- compiler des contrats Solidity,
- lancer une blockchain locale,
- รฉcrire et exรฉcuter des tests automatisรฉs,
- dรฉployer des contrats sur des rรฉseaux locaux, testnet ou mainnet,
- inspecter prรฉcisรฉment les erreurs et le gas consommรฉ.
Hardhat joue le rรดle dโun รฉquivalent blockchain dโun framework backend.
- Tester des contrats avant tout dรฉploiement rรฉel.
- Simuler des tournois et des transactions en local.
- Garantir la reproductibilitรฉ des dรฉploiements.
- Sรฉcuriser les รฉvolutions du smart contract.
- Cycle de dรฉveloppement rapide (compile โ test โ deploy).
- Intรฉgration native avec TypeScript.
- Outils de debug avancรฉs.
- Compatible Avalanche (EVM).
Important
Aucun smart contract ne doit รชtre dรฉployรฉ sans tests automatisรฉs.
- Standard de facto dans lโรฉcosystรจme Ethereum.
- Configuration explicite et lisible (
hardhat.config.ts). - Blockchain locale intรฉgrรฉe.
- Trรจs bon support TypeScript.
- รcosystรจme mature de plugins.
- Plus flexible que Truffle.
- Plus simple ร prendre en main que Foundry pour un projet acadรฉmique.
- Excellent compromis entre pรฉdagogie et industrialisation.
Dans le cadre du projet :
- Compilation des smart contracts Solidity.
- Dรฉploiement du contrat
GameStorage. - Tests unitaires des fonctions critiques.
- Simulation de lโenregistrement des snapshots de tournoi.
- Dรฉploiement sur Avalanche Fuji.
Hardhat constitue le socle outillage blockchain du projet.
npm install --save-dev hardhat @nomicfoundation/hardhat-toolboxnpx hardhat initExemple de configuration simplifiรฉe pour Avalanche Fuji :
import { HardhatUserConfig } from "hardhat/config";
import "@nomicfoundation/hardhat-toolbox";
const config: HardhatUserConfig = {
solidity: "0.8.20",
networks: {
fuji: {
url: process.env.AVALANCHE_RPC_URL,
accounts: [process.env.BLOCKCHAIN_PRIVATE_KEY!],
},
},
};
export default config;!WARNING] Les clรฉs privรฉes doivent impรฉrativement รชtre fournies via des variables dโenvironnement.
Note
Hardhat permet de lancer une blockchain locale identique ร un rรฉseau rรฉel.
Important
Les tests garantissent que le hash stockรฉ on-chain correspond aux donnรฉes off-chain.
Tip
Les scripts Hardhat facilitent le redรฉploiement automatique des contrats.
Caution
Un contrat dรฉployรฉ est immuable : toute erreur impose un nouveau dรฉploiement.
| โ Do | โ Donโt |
|---|---|
| รcrire des tests unitaires | Dรฉployer sans tests |
| Utiliser une blockchain locale | Tester directement sur testnet |
| Versionner les scripts | Versionner des secrets |
| Documenter les dรฉploiements | Modifier un contrat en production |
| Type | Ressource | Notes |
|---|---|---|
| ๐ | https://hardhat.org/docs | Documentation officielle |
| ๐ป | https://github.com/NomicFoundation/hardhat | Repository GitHub |
| ๐ก | Hardhat + Ethers.js | Intรฉgration backend |
| ๐ | Ethereum Smart Contract Dev | Bonnes pratiques |
- Gateway Service - API Gateway & JWT validation
- Auth Service - Authentication & 2FA/TOTP
- AI Service - AI opponent
- API Documentation - OpenAPI/Swagger
- DB Schema - Databases
- Fastify - Web framework
- Prisma - ORM
- WebSockets - Real-time communication
- Restful API - API standards
- React - UI library
- CSS - Styling
- Tailwind - CSS framework
- Accessibility - WCAG compliance
- TypeScript - Language
- Zod - Schema validation
- Nginx - Reverse proxy
- Logging and Error management - Observability
- OAuth 2.0 - Authentication flows
- Two-factor authentication - 2FA/TOTP
- Avalanche - Blockchain network
- Hardhat - Development framework
- Solidity - Smart contracts language
- Open Zeppelin - Security standards
- ESLint - Linting
- Vitest - Testing
- GitHub Actions - CI/CD
- Husky, Commit lints and git hooks - Git hooks
- ELK - Logging stack
๐ Page model