
Hier sind einige Punkte, die bei der Wahl zwischen Hardhat und Foundry zu beachten sind.

Die Wahl der richtigen Tools für deine Dapp-Entwicklung wirkt sich nicht nur auf die Produktivität aus, sondern beeinflusst auch die Effektivität beim Testen, Deployen und Warten von Smart Contracts. In diesem Blog vergleichen wir zwei beliebte Optionen unter Ethereum-Dapp-Entwicklern: Foundry und Hardhat – mit Fokus auf Installationsanforderungen, Test- und Deployment-Workflows sowie spezifische technische Aspekte und Einschränkungen.
Hardhat ist eine etablierte Entwicklungsumgebung, die Entwicklern dabei helfen soll, Aufgaben rund um die Smart-Contract-Entwicklung zu verwalten und zu automatisieren. Sie ist bekannt für ihre Flexibilität und Anpassungsfähigkeit. Hardhat verfügt über das Hardhat Network, ein lokales Ethereum-Netzwerk für die Entwicklung, das einfaches Testen, Deployen und Debuggen ermöglicht.
Entwickler können über eine interaktive Konsole direkt mit Smart Contracts interagieren, die im Hardhat Network deployed sind – das bietet eine umfassende lokale Umgebung, die speziell auf Entwicklungsaufgaben zugeschnitten ist. Hardhat unterstützt außerdem ein robustes Plugin-Ökosystem, mit dem Entwickler die Funktionalität problemlos erweitern können. Allerdings empfinden manche Nutzer das initiale Setup und die Konfiguration von Hardhat als komplex.
Foundry hingegen ist ein vergleichsweise neues Entwicklungs-Toolkit, das Geschwindigkeit und Zuverlässigkeit in den Vordergrund stellt. Es basiert auf Forge, einem leistungsstarken Testing-Framework, das Entwicklern ermöglicht, Smart Contracts effizient zu schreiben, zu kompilieren und zu testen. Eines der Hauptmerkmale von Foundry sind seine schnellen Testing-Fähigkeiten: Das Forge-Testing-Framework beschleunigt die Testausführungszeiten erheblich und ermöglicht schnellere Iterationszyklen.
Darüber hinaus enthält Foundry native Debugging-Tools, mit denen Entwickler Probleme direkt in der Umgebung diagnostizieren und beheben können. Foundry lässt sich außerdem nahtlos in andere Tools des Ethereum-Ökosystems integrieren und ermöglicht so einen schlankeren Entwicklungsprozess. Da Foundry jedoch noch relativ neu ist, fehlt möglicherweise die umfangreiche Community-Unterstützung, die etablierteren Tools zur Verfügung steht.
Für diesen Abschnitt verwenden wir einen einfachen Smart Contract zur Berechnung einer zufälligen Summe. Dieser Smart Contract bleibt für Hardhat und Foundry identisch, das Projekt-Setup unterscheidet sich jedoch geringfügig zwischen den beiden Frameworks.
Um Hardhat zu verwenden, muss Node.js auf deinem Rechner installiert sein. Sobald das erledigt ist, kannst du ein neues Hardhat-Projekt mit folgenden Schritten erstellen:
Neues Node.js-Projekt initialisieren:
Hardhat installieren:
npm install --save-dev hardhatHardhat-Projekt erstellen:
npx hardhatFolge den Anweisungen, um ein Basisprojekt zu erstellen. Wähle „Create an empty hardhat.config.js" für ein minimales Setup. Entscheide dich für die Erstellung eines Beispielprojekts. Damit wird eine Hardhat-Umgebung mit allen notwendigen Konfigurationen eingerichtet.
Contract: Lege deinen RandomSum-Contract im Ordner contracts ab.
Foundry verwendet Rust, daher muss Rust auf deinem System installiert sein. Sobald Rust bereit ist, kannst du Foundry durch folgenden Befehl installieren:
Foundry installieren:
Neues Foundry-Projekt initialisieren:
Contract: Lege deinen RandomSum-Contract im Verzeichnis src ab.
Lokale Blockchain: Verwende das Hardhat Network, das automatisch gestartet wird, wenn du Aufgaben wie das Testen oder Deployen von Contracts ausführst.
Deployment-Skript: Erstelle ein Skript unter scripts/deploy.js:
Deployment ausführen: Führe das Deployment mit folgendem Befehl aus:
npx hardhat run scripts/deploy.js --network localhostLokale Blockchain: Foundry verwendet Anvil, einen lokalen Ethereum-Node. Starte diesen in einem separaten Terminal, um deinen lokalen Node zu starten.
anvilDeployment-Skript: Verwende den Befehl forge create direkt:
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url Netzwerkkonfiguration: Konfiguriere das gewünschte Netzwerk in hardhat.config.js und füge einen Abschnitt für die Netzwerkeinstellungen hinzu (z. B. Sepolia).
Deployment: Führe dasselbe Deployment-Skript aus, wobei die Netzwerkoption auf Sepolia geändert wird.
Netzwerkkonfiguration: Es ist keine zusätzliche Konfigurationsdatei erforderlich; das Netzwerk wird direkt im Befehl angegeben.
Deployment: Verwende:
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url Tests schreiben: Erstelle eine Testdatei in test/randomSum.js mit JavaScript:
Tests ausführen: Ausführen mit:
npx hardhat testFalls beim Testen Probleme auftreten, füge einfach die Funktion loadFixture aus @nomicfoundation/hardhat-toolbox/network-helpers hinzu.
Die wichtigsten Vorteile der Verwendung von loadFixture sind:
Es richtet für jeden Test eine saubere Umgebung ein, indem es zu einem Snapshot zurückkehrt.
Es ist effizienter als das erneute Deployen von Contracts für jeden Test.
Es ermöglicht die gemeinsame Nutzung von Setup-Code über mehrere Tests hinweg.
Tests schreiben: Füge eine Testdatei in test/RandomSum.t.sol mit Solidity hinzu:
Tests ausführen: Verwende:
forge testDie Entscheidung zwischen Hardhat und Foundry hängt häufig von den Kenntnissen des Teams und den spezifischen Anforderungen des Projekts ab. Wenn das Team mit JavaScript vertraut ist und eine umfangreiche Integration mit Web-Technologien benötigt, könnte Hardhat die bessere Wahl sein. Sein robustes Plugin-Ökosystem und die flexible Umgebung machen es ideal für Projekte, die ein hohes Maß an Anpassung und Interaktion mit verschiedenen Web-Technologien erfordern.
Wenn das Projekt hingegen schnelle Entwicklungszyklen mit einem klaren Fokus auf Smart Contracts erfordert, bietet Foundry eine attraktive und effiziente Option, die alles innerhalb des Solidity-Ökosystems hält. Seine Geschwindigkeit und die native Unterstützung für Solidity können die Produktivität von Teams, die sich auf die Smart-Contract-Entwicklung konzentrieren, erheblich steigern.
Letztendlich haben beide Tools ihre Stärken, und die richtige Wahl hängt von den individuellen Anforderungen deines Projekts und der Expertise deines Teams ab.
KI-übersetzt. Kann Fehler enthalten. Bitte überprüfen Sie die Informationen stets.