Ethers und Hardhat: Ein umfassender Leitfaden für Ethereum-Entwicklung
1. Einführung in Hardhat
Hardhat ist ein flexibles Entwicklungswerkzeug für Ethereum, das Entwicklern eine Vielzahl von Funktionen bietet, um den gesamten Entwicklungszyklus von Smart Contracts zu unterstützen. Es wurde entwickelt, um die Entwicklungsumgebung zu verbessern, indem es eine einfache Möglichkeit bietet, Smart Contracts zu testen, zu debuggen und bereitzustellen. Zu den Hauptfunktionen von Hardhat gehören:
- Einfache Einrichtung und Konfiguration: Hardhat ermöglicht eine einfache Konfiguration durch eine benutzerfreundliche
hardhat.config.js
-Datei, die es Entwicklern ermöglicht, verschiedene Netzwerke, Plugins und andere Einstellungen zu definieren. - Integration mit Ethers.js: Hardhat kann nahtlos mit Ethers.js integriert werden, um eine effiziente Interaktion mit Ethereum-Smart Contracts zu ermöglichen. Dies erleichtert die Erstellung von Skripten für das Testen und Bereitstellen von Verträgen.
- Erweiterbare Architektur: Hardhat unterstützt eine Vielzahl von Plugins, die die Funktionalität erweitern und an spezifische Entwicklungsbedürfnisse angepasst werden können.
2. Einführung in Ethers.js
Ethers.js ist eine leistungsstarke Bibliothek für JavaScript, die Entwicklern hilft, mit der Ethereum-Blockchain zu interagieren. Sie bietet eine einfache und sichere Möglichkeit, Smart Contracts zu erstellen, zu verwalten und mit ihnen zu interagieren. Einige der Hauptmerkmale von Ethers.js sind:
- Leichtgewichtige und schnelle API: Ethers.js ist bekannt für seine Geschwindigkeit und Effizienz, was es zu einer bevorzugten Wahl für Entwickler macht, die eine performante Blockchain-Interaktion benötigen.
- Einfache Nutzung und Dokumentation: Die Bibliothek ist gut dokumentiert und bietet eine intuitive API, die es Entwicklern erleichtert, Ethereum-basierte Anwendungen zu erstellen.
- Integrierte Wallet-Verwaltung: Ethers.js ermöglicht die Verwaltung von Wallets und die Durchführung von Transaktionen direkt aus der Anwendung heraus.
3. Einrichtung von Hardhat und Ethers.js
Um Hardhat und Ethers.js in einem Ethereum-Projekt einzurichten, müssen zunächst einige Schritte durchgeführt werden:
Installation von Hardhat:
Um Hardhat zu installieren, öffnen Sie ein Terminal und führen Sie den folgenden Befehl aus:
bashnpm install --save-dev hardhat
Nachdem Hardhat installiert ist, können Sie ein neues Hardhat-Projekt initialisieren, indem Sie den folgenden Befehl ausführen:
bashnpx hardhat
Dies führt Sie durch einen Einrichtungsprozess, bei dem Sie einige grundlegende Informationen zu Ihrem Projekt angeben müssen.
Installation von Ethers.js:
Ethers.js kann zusammen mit Hardhat installiert werden, indem Sie den folgenden Befehl ausführen:
bashnpm install --save ethers
Konfiguration von Hardhat:
Die Hardhat-Konfigurationsdatei
hardhat.config.js
muss eingerichtet werden, um Ethers.js zu integrieren und die benötigten Netzwerke zu konfigurieren. Eine grundlegende Konfiguration könnte wie folgt aussehen:javascriptrequire('@nomiclabs/hardhat-ethers'); module.exports = { solidity: "0.8.4", networks: { hardhat: {}, ropsten: { url: `https://ropsten.infura.io/v3/YOUR_INFURA_PROJECT_ID`, accounts: [`0x${YOUR_PRIVATE_KEY}`] } } };
4. Erstellen und Testen von Smart Contracts mit Hardhat und Ethers.js
Um mit der Entwicklung von Smart Contracts zu beginnen, müssen Sie zuerst einen Vertrag erstellen und testen. Im Folgenden wird der Prozess beschrieben:
Erstellen eines Smart Contracts:
Erstellen Sie eine neue Datei im Verzeichnis
contracts
Ihres Hardhat-Projekts, z.B.SimpleStorage.sol
:solidity// SPDX-License-Identifier: MIT pragma solidity ^0.8.4; contract SimpleStorage { uint256 private number; function set(uint256 _number) public { number = _number; } function get() public view returns (uint256) { return number; } }
Erstellen eines Tests für den Smart Contract:
Im Verzeichnis
test
können Sie Testskripte erstellen, um sicherzustellen, dass Ihr Smart Contract wie erwartet funktioniert. Erstellen Sie eine Datei wieSimpleStorage.js
:javascriptconst { expect } = require("chai"); describe("SimpleStorage", function () { it("Should return the new number once it's changed", async function () { const SimpleStorage = await ethers.getContractFactory("SimpleStorage"); const simpleStorage = await SimpleStorage.deploy(); await simpleStorage.deployed(); await simpleStorage.set(42); expect(await simpleStorage.get()).to.equal(42); }); });
Testen des Smart Contracts:
Führen Sie Ihre Tests mit Hardhat aus, indem Sie den folgenden Befehl ausführen:
bashnpx hardhat test
5. Bereitstellung von Smart Contracts
Um einen Smart Contract auf das Ethereum-Netzwerk bereitzustellen, müssen Sie ein Bereitstellungsskript erstellen. Fügen Sie dazu eine neue Datei im Verzeichnis scripts
hinzu, z.B. deploy.js
:
javascriptasync function main() { const [deployer] = await ethers.getSigners(); console.log("Deploying contracts with the account:", deployer.address); const SimpleStorage = await ethers.getContractFactory("SimpleStorage"); const simpleStorage = await SimpleStorage.deploy(); console.log("SimpleStorage contract deployed to:", simpleStorage.address); } main().catch((error) => { console.error(error); process.exitCode = 1; });
Führen Sie das Bereitstellungsskript aus, um den Vertrag auf das Netzwerk hochzuladen:
bashnpx hardhat run scripts/deploy.js --network ropsten
6. Integration von Ethers.js in Ihre dApp
Sobald Ihr Smart Contract bereitgestellt ist, können Sie Ethers.js verwenden, um in Ihrer dApp mit dem Vertrag zu interagieren. Erstellen Sie eine einfache HTML-Datei, um eine Benutzeroberfläche zu bieten:
htmlhtml> <html> <head> <title>Simple Storagetitle> head> <body> <h1>Simple Storage dApph1> <input id="numberInput" type="number" placeholder="Enter a number" /> <button id="setButton">Set Numberbutton> <p id="storedNumber">Stored Number: p> <script src="https://cdn.jsdelivr.net/npm/ethers/dist/ethers.min.js">script> <script> async function main() { const provider = new ethers.providers.Web3Provider(window.ethereum); await provider.send("eth_requestAccounts", []); const signer = provider.getSigner(); const contractAddress = "YOUR_CONTRACT_ADDRESS"; const abi = [ "function set(uint256 _number) public", "function get() public view returns (uint256)" ]; const contract = new ethers.Contract(contractAddress, abi, signer); document.getElementById("setButton").addEventListener("click", async () => { const number = document.getElementById("numberInput").value; await contract.set(number); const storedNumber = await contract.get(); document.getElementById("storedNumber").innerText = "Stored Number: " + storedNumber; }); } main(); script> body> html>
7. Fazit
Die Kombination von Hardhat und Ethers.js bietet Entwicklern ein leistungsstarkes und flexibles Werkzeugset für die Entwicklung von Ethereum-basierten Anwendungen. Hardhat erleichtert die Entwicklung und das Testen von Smart Contracts durch seine benutzerfreundliche Umgebung und umfangreiche Plugin-Unterstützung, während Ethers.js eine effiziente und leistungsstarke Möglichkeit bietet, mit der Ethereum-Blockchain zu interagieren. Durch die Kombination dieser beiden Werkzeuge können Entwickler leistungsstarke, sichere und benutzerfreundliche dApps erstellen.
Beliebte Kommentare
Derzeit keine Kommentare