
Voici quelques éléments à prendre en compte lors du choix entre Hardhat et Foundry.

Le choix des bons outils pour le développement de votre dapp n'affecte pas seulement la productivité, mais impacte également l'efficacité des tests, du déploiement et de la maintenance des smart contracts. Dans ce blog, nous comparons deux choix populaires parmi les développeurs de dapps Ethereum : Foundry et Hardhat, en nous concentrant sur leurs prérequis d'installation, leurs workflows de test et de déploiement, ainsi que leurs aspects techniques spécifiques et leurs limitations.
Hardhat est un environnement de développement bien établi, conçu pour aider les développeurs à gérer et automatiser les tâches liées au développement de smart contracts. Il est reconnu pour sa nature flexible et adaptable. Hardhat intègre le Hardhat Network, un réseau Ethereum local conçu pour le développement, qui facilite également les tests, le déploiement et le débogage.
Les développeurs peuvent interagir directement avec les smart contracts déployés sur le Hardhat Network via une console interactive, offrant un environnement local complet adapté aux tâches de développement. Hardhat prend également en charge un écosystème de plugins robuste, permettant aux développeurs d'étendre facilement ses fonctionnalités. Cependant, certains utilisateurs peuvent trouver la configuration initiale de Hardhat complexe.
De son côté, Foundry est une suite d'outils de développement relativement récente qui met l'accent sur la rapidité et la fiabilité. Elle est construite sur Forge, un puissant framework de test qui permet aux développeurs d'écrire, de compiler et de tester des smart contracts efficacement. L'une des caractéristiques clés de Foundry est sa rapidité de test : le framework Forge accélère considérablement les temps d'exécution des tests, permettant aux développeurs d'itérer plus rapidement.
De plus, Foundry inclut des outils de débogage natifs qui aident les développeurs à diagnostiquer et résoudre les problèmes directement dans l'environnement. Foundry s'intègre également de manière transparente avec d'autres outils de l'écosystème Ethereum, facilitant un processus de développement plus fluide. Cependant, étant relativement récent, Foundry peut manquer du support communautaire étendu dont bénéficient les outils plus établis.
Pour cette section, nous utiliserons un smart contract de somme aléatoire basique. Ce smart contract restera identique pour Hardhat et Foundry, mais la configuration du projet différera légèrement entre les deux frameworks.
Pour commencer à utiliser Hardhat, vous devez avoir Node.js installé sur votre machine. Une fois cette étape effectuée, vous pouvez créer un nouveau projet Hardhat en suivant ces étapes :
Initialiser un nouveau projet Node.js :
Installer Hardhat :
npm install --save-dev hardhatCréer un projet Hardhat :
npx hardhatSuivez les instructions pour créer un projet de base. Sélectionnez « Create an empty hardhat.config.js » pour une configuration minimale. Choisissez de créer un exemple de projet. Cela configure un environnement Hardhat avec toutes les configurations nécessaires.
Contrat : Placez votre contrat RandomSum dans le dossier contracts.
Foundry utilise Rust, vous devrez donc avoir Rust installé sur votre système. Une fois Rust prêt, vous pouvez installer Foundry en exécutant :
Installer Foundry :
Initialiser un nouveau projet Foundry :
Contrat : Placez votre contrat RandomSum dans le répertoire src.
Blockchain locale : Utilisez le Hardhat Network, qui s'exécute automatiquement lorsque vous effectuez des tâches telles que les tests ou le déploiement de contrats.
Script de déploiement : Créez un script dans scripts/deploy.js :
Exécuter le déploiement : Lancez le déploiement avec :
npx hardhat run scripts/deploy.js --network localhostBlockchain locale : Foundry utilise anvil, un nœud Ethereum local. Exécutez-le dans un terminal séparé pour démarrer votre nœud local.
anvilScript de déploiement : Utilisez directement la commande forge create :
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url Configuration réseau : Configurez le réseau souhaité dans hardhat.config.js, en ajoutant une section pour les paramètres réseau (par exemple, Sepolia).
Déploiement : Exécutez le même script de déploiement en changeant l'option réseau pour Sepolia.
Configuration réseau : Aucun fichier de configuration supplémentaire n'est nécessaire ; spécifiez le réseau directement dans la commande.
Déploiement : utilisez :
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url Écrire les tests : Créez un fichier de test dans test/randomSum.js en utilisant JavaScript :
Exécuter les tests : Lancez-les avec :
npx hardhat testSi vous rencontrez des problèmes lors des tests, ajoutez simplement la fonction loadFixture de @nomicfoundation/hardhat-toolbox/network-helpers.
Les principaux avantages de l'utilisation de loadFixture sont :
Elle configure un environnement propre pour chaque test en revenant à un snapshot.
Elle est plus efficace que le redéploiement des contrats pour chaque test.
Elle permet de partager le code de configuration entre plusieurs tests.
Écrire les tests : Ajoutez un fichier de test dans test/RandomSum.t.sol en utilisant Solidity :
Exécuter les tests : Utilisez :
forge testLe choix entre Hardhat et Foundry dépend souvent des compétences de l'équipe et des besoins spécifiques du projet. Si l'équipe maîtrise JavaScript et nécessite une intégration poussée avec les technologies web, Hardhat pourrait être le meilleur choix. Son écosystème de plugins robuste et son environnement flexible en font un outil idéal pour les projets qui exigent un haut degré de personnalisation et d'interaction avec diverses technologies web.
En revanche, si le projet nécessite des cycles de développement rapides axés exclusivement sur les smart contracts, Foundry offre une option attrayante et efficace qui maintient tout au sein de l'écosystème Solidity. Sa rapidité et son support natif de Solidity peuvent considérablement améliorer la productivité des équipes dédiées au développement de smart contracts.
En définitive, les deux outils ont leurs points forts, et le bon choix dépend des exigences uniques de votre projet et de l'expertise de votre équipe.
Traduit par IA. Peut contenir des erreurs. Veuillez toujours vérifier les informations.