Hardhat ist ein beliebtes Framework für die Entwicklung und das Testen von Solidity-Smart Contracts und dApps. Es bietet Entwicklern ein komfortables Umfeld mit integrierten Tools für das Kompilieren, Deployen und Testen von Contracts. Dieser Artikel gibt eine detaillierte Einführung in die Nutzung von Hardhat.
Installation und Projektsetup
Die Installation von Hardhat erfolgt über npm:
npm install --save-dev hardhat
Anschließend wird ein neues Hardhat-Projekt mit folgendem Befehl erstellt:
npx hardhat
Hardhat leitet Sie durch die Konfiguration. Wählen Sie die gewünschte Umgebung (z.B. TypeScript). Eine typische hardhat.config.js
Datei sieht folgendermaßen aus:
require("@nomicfoundation/hardhat-toolbox");
/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
solidity: "0.8.18",
networks: {
localhost: {
url: "http://127.0.0.1:8545/",
},
},
};
Diese Konfiguration spezifiziert die Solidity-Version und eine lokale Netzwerkverbindung.
Smart Contract Entwicklung
Ein einfacher Smart Contract (Greeter.sol
):
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract Greeter {
string private greeting;
constructor(string memory _greeting) {
greeting = _greeting;
}
function greet() public view returns (string memory) {
return greeting;
}
function setGreeting(string memory _greeting) public {
greeting = _greeting;
}
}
Dieser Contract erlaubt das Setzen und Abrufen einer Begrüßungsnachricht.
Testing mit Hardhat
Hardhat bietet integrierte Testfunktionen. Ein Beispieltest (Greeter.test.js
):
const { ethers } = require("hardhat");
describe("Greeter", function () {
it it("should deploy and greet", async function () {
const Greeter = await ethers.getContractFactory("Greeter");
const greeter = await Greeter.deploy("Hello, Hardhat!");
await greeter.deployed();
expect(await greeter.greet()).to.equal("Hello, Hardhat!");
});
it("should set greeting", async function () {
const Greeter = await ethers.getContractFactory("Greeter");
const greeter = await Greeter.deploy("Hello, Hardhat!");
await greeter.deployed();
await greeter.setGreeting("Hello, World!");
expect(await greeter.greet()).to.equal("Hello, World!");
});
});
Dieser Test deployt den Contract, ruft die Begrüßung ab und ändert sie.
Deployment
Um den Contract zu deployen, kann man das Hardhat-Task-System verwenden. Man kann eigene Tasks definieren oder vorhandene verwenden.
Fazit
Hardhat vereinfacht die Entwicklung und das Testen von Solidity-Smart Contracts erheblich. Die integrierten Tools und die einfache Konfiguration machen es zu einem wertvollen Werkzeug für jeden dApp-Entwickler.