Hello World Smart Contract für Anfänger
Wenn Sie neu in der Blockchain-Entwicklung sind und nicht wissen, wo Sie anfangen sollen, oder wenn Sie einfach nur verstehen möchten, wie man Smart Contracts bereitstellt und mit ihnen interagiert, ist dieser Leitfaden genau das Richtige für Sie. Wir werden die Erstellung und Bereitstellung eines einfachen Smart Contracts im Sepolia-Testnet mithilfe eines virtuellen Wallets MetaMask (opens in a new tab), Solidity (opens in a new tab), Hardhat (opens in a new tab) und Alchemy (opens in a new tab) durchgehen (keine Sorge, wenn Sie noch nicht verstehen, was das alles bedeutet, wir werden es erklären).
In Teil 2 (opens in a new tab) dieses Tutorials werden wir durchgehen, wie wir mit unserem Smart Contract interagieren können, sobald er hier bereitgestellt wurde, und in Teil 3 (opens in a new tab) werden wir behandeln, wie man ihn auf Etherscan veröffentlicht.
Wenn Sie an irgendeinem Punkt Fragen haben, können Sie sich gerne im Alchemy Discord (opens in a new tab) melden!
Schritt 1: Mit dem Ethereum-Netzwerk verbinden
Es gibt viele Möglichkeiten, Anfragen an die Ethereum-Chain zu stellen. Der Einfachheit halber verwenden wir ein kostenloses Konto bei Alchemy, einer Blockchain-Entwicklerplattform und API, die es uns ermöglicht, mit der Ethereum-Chain zu kommunizieren, ohne unsere eigenen Blockchain-Knoten betreiben zu müssen. Die Plattform verfügt auch über Entwicklertools für Überwachung und Analysen, die wir in diesem Tutorial nutzen werden, um zu verstehen, was bei der Bereitstellung unseres Smart Contracts unter der Haube vor sich geht. Wenn Sie noch kein Alchemy-Konto haben, können Sie sich hier kostenlos anmelden (opens in a new tab).
Schritt 2: Erstellen Sie Ihre App (und Ihren API-Schlüssel)
Sobald Sie ein Alchemy-Konto erstellt haben, können Sie einen API-Schlüssel generieren, indem Sie eine App erstellen. Dies ermöglicht es uns, Anfragen an das Sepolia-Testnet zu stellen. Wenn Sie nicht mit Testnets vertraut sind, schauen Sie sich diese Seite an.
- Navigieren Sie zur Seite „Create new app“ (Neue App erstellen) in Ihrem Alchemy-Dashboard, indem Sie in der Navigationsleiste „Select an app“ (Eine App auswählen) wählen und auf „Create new app“ klicken.
- Nennen Sie Ihre App „Hello World“, geben Sie eine kurze Beschreibung an und wählen Sie einen Anwendungsfall, z. B. „Infra & Tooling“. Suchen Sie als Nächstes nach „Ethereum“ und wählen Sie das Netzwerk aus.
- Klicken Sie auf „Next“ (Weiter), um fortzufahren, dann auf „Create app“ (App erstellen) und das war's! Ihre App sollte im Dropdown-Menü der Navigationsleiste erscheinen, mit einem API-Schlüssel, den Sie kopieren können.
Schritt 3: Erstellen Sie ein Ethereum-Konto (Adresse)
Wir benötigen ein Ethereum-Konto, um Transaktionen zu senden und zu empfangen. Für dieses Tutorial verwenden wir MetaMask, ein virtuelles Wallet im Browser, das zur Verwaltung Ihrer Ethereum-Kontoadresse verwendet wird. Mehr zu Transaktionen.
Sie können MetaMask herunterladen und hier (opens in a new tab) kostenlos ein Ethereum-Konto erstellen. Wenn Sie ein Konto erstellen oder bereits eines haben, stellen Sie sicher, dass Sie über das Netzwerk-Dropdown-Menü zum „Sepolia“-Testnet wechseln (damit wir nicht mit echtem Geld hantieren).
Wenn Sepolia nicht aufgeführt ist, gehen Sie ins Menü, dann auf „Advanced“ (Erweitert) und scrollen Sie nach unten, um „Show test networks“ (Testnetzwerke anzeigen) einzuschalten. Wählen Sie im Netzwerkauswahlmenü die Registerkarte „Custom“ (Benutzerdefiniert), um eine Liste von Testnets zu finden, und wählen Sie „Sepolia“.
Schritt 4: Fügen Sie Ether aus einem Faucet hinzu
Um unseren Smart Contract im Testnet bereitzustellen, benötigen wir etwas falsches ETH. Um Sepolia-ETH zu erhalten, können Sie zu den Sepolia-Netzwerkdetails gehen, um eine Liste verschiedener Faucets anzuzeigen. Wenn eines nicht funktioniert, versuchen Sie ein anderes, da sie manchmal leerlaufen können. Es kann aufgrund des Netzwerkverkehrs einige Zeit dauern, bis Sie Ihr falsches ETH erhalten. Sie sollten kurz darauf ETH in Ihrem MetaMask-Konto sehen!
Schritt 5: Überprüfen Sie Ihr Guthaben
Um sicherzustellen, dass unser Guthaben vorhanden ist, stellen wir eine eth_getBalance-Anfrage mit dem Composer-Tool von Alchemy (opens in a new tab). Dies gibt die Menge an ETH in unserem Wallet zurück. Nachdem Sie Ihre MetaMask-Kontoadresse eingegeben und auf „Send Request“ (Anfrage senden) geklickt haben, sollten Sie eine Antwort wie diese sehen:
1{ "jsonrpc": "2.0", "id": 0, "result": "0x2B5E3AF16B1880000" }HINWEIS: Dieses Ergebnis ist in Wei, nicht in ETH. Wei wird als die kleinste Stückelung von Ether verwendet. Die Umrechnung von Wei in ETH lautet: 1 ETH = 1018 Wei. Wenn wir also 0x2B5E3AF16B1880000 in eine Dezimalzahl umwandeln, erhalten wir 5*10¹⁸, was 5 ETH entspricht.
Puh! Unser falsches Geld ist komplett da .
Schritt 6: Initialisieren Sie unser Projekt
Zuerst müssen wir einen Ordner für unser Projekt erstellen. Navigieren Sie zu Ihrer Befehlszeile und geben Sie ein:
1mkdir hello-world2cd hello-worldDa wir uns nun in unserem Projektordner befinden, verwenden wir npm init, um das Projekt zu initialisieren. Wenn Sie npm noch nicht installiert haben, folgen Sie diesen Anweisungen (opens in a new tab) (wir benötigen auch Node.js, laden Sie das also ebenfalls herunter!).
1npm initEs spielt keine große Rolle, wie Sie die Installationsfragen beantworten, hier ist als Referenz, wie wir es gemacht haben:
1package name: (hello-world)2version: (1.0.0)3description: hello world smart contract4entry point: (index.js)5test command:6git repository:7keywords:8author:9license: (ISC)10About to write to /Users/.../.../.../hello-world/package.json:11
12{13 "name": "hello-world",14 "version": "1.0.0",15 "description": "hello world smart contract",16 "main": "index.js",17 "scripts": {18 "test": "echo \\"Error: no test specified\\" && exit 1"19 },20 "author": "",21 "license": "ISC"22}Bestätigen Sie die package.json und wir können loslegen!
Schritt 7: Laden Sie Hardhat (opens in a new tab) herunter
Hardhat ist eine Entwicklungsumgebung zum Kompilieren, Bereitstellen, Testen und Debuggen Ihrer Ethereum-Software. Es hilft Entwicklern beim lokalen Erstellen von Smart Contracts und Dapps, bevor sie auf der Live-Chain bereitgestellt werden.
Führen Sie in unserem hello-world-Projekt Folgendes aus:
1npm install --save-dev hardhatAuf dieser Seite finden Sie weitere Details zu den Installationsanweisungen (opens in a new tab).
Schritt 8: Erstellen Sie ein Hardhat-Projekt
Führen Sie in unserem Projektordner Folgendes aus:
1npx hardhatSie sollten dann eine Willkommensnachricht und die Option sehen, auszuwählen, was Sie tun möchten. Wählen Sie „create an empty hardhat.config.js“:
1888 888 888 888 8882888 888 888 888 8883888 888 888 888 88848888888888 8888b. 888d888 .d88888 88888b. 8888b. 8888885888 888 "88b 888P" d88" 888 888 "88b "88b 8886888 888 .d888888 888 888 888 888 888 .d888888 8887888 888 888 888 888 Y88b 888 888 888 888 888 Y88b.8888 888 "Y888888 888 "Y88888 888 888 "Y888888 "Y8889
10👷 Welcome to Hardhat v2.0.11 👷?11
12What do you want to do? …13Create a sample project14❯ Create an empty hardhat.config.js15QuitDadurch wird eine hardhat.config.js-Datei für uns generiert, in der wir die gesamte Einrichtung für unser Projekt festlegen (in Schritt 13).
Schritt 9: Fügen Sie Projektordner hinzu
Um unser Projekt übersichtlich zu halten, erstellen wir zwei neue Ordner. Navigieren Sie in Ihrer Befehlszeile zum Stammverzeichnis Ihres Projekts und geben Sie ein:
1mkdir contracts2mkdir scriptscontracts/ist der Ort, an dem wir unsere Hello World Smart Contract-Codedatei aufbewahrenscripts/ist der Ort, an dem wir Skripte zur Bereitstellung und Interaktion mit unserem Vertrag aufbewahren
Schritt 10: Schreiben Sie unseren Vertrag
Sie fragen sich vielleicht, wann zum Teufel wir Code schreiben werden?? Nun, hier sind wir, bei Schritt 10.
Öffnen Sie das hello-world-Projekt in Ihrem bevorzugten Editor (wir mögen VSCode (opens in a new tab)). Smart Contracts werden in einer Sprache namens Solidity geschrieben, die wir verwenden werden, um unseren HelloWorld.sol Smart Contract zu schreiben.
- Navigieren Sie zum Ordner „contracts“ und erstellen Sie eine neue Datei namens HelloWorld.sol
- Unten finden Sie einen beispielhaften Hello World Smart Contract von der Ethereum Foundation, den wir für dieses Tutorial verwenden werden. Kopieren Sie den unten stehenden Inhalt und fügen Sie ihn in Ihre HelloWorld.sol-Datei ein. Lesen Sie unbedingt die Kommentare, um zu verstehen, was dieser Vertrag tut:
1// Gibt die Version von Solidity unter Verwendung der semantischen Versionierung an.2// Weitere Informationen: https://solidity.readthedocs.io/en/v0.5.10/layout-of-source-files.html#pragma3pragma solidity ^0.7.0;4
5// Definiert einen Contract namens `HelloWorld`.6// Ein Contract ist eine Sammlung von Funktionen und Daten (seinem Zustand). Sobald er bereitgestellt wurde, befindet sich ein Contract an einer bestimmten Adresse auf der Ethereum-Blockchain. Weitere Informationen: https://solidity.readthedocs.io/en/v0.5.10/structure-of-a-contract.html7contract HelloWorld {8
9 // Deklariert eine Zustandsvariable `message` vom Typ `string`.10 // Zustandsvariablen sind Variablen, deren Werte dauerhaft im Contract-Speicher gespeichert werden. Das Schlüsselwort `public` macht Variablen von außerhalb eines Contracts zugänglich und erstellt eine Funktion, die andere Contracts oder Clients aufrufen können, um auf den Wert zuzugreifen.11 string public message;12
13 // Ähnlich wie in vielen klassenbasierten objektorientierten Sprachen ist ein Konstruktor eine spezielle Funktion, die nur bei der Erstellung des Contracts ausgeführt wird.14 // Konstruktoren werden verwendet, um die Daten des Contracts zu initialisieren. Weitere Informationen:https://solidity.readthedocs.io/en/v0.5.10/contracts.html#constructors15 constructor(string memory initMessage) {16
17 // Akzeptiert ein String-Argument `initMessage` und setzt den Wert in die Speichervariable `message` des Contracts ein).18 message = initMessage;19 }20
21 // Eine öffentliche Funktion, die ein String-Argument akzeptiert und die Speichervariable `message` aktualisiert.22 function update(string memory newMessage) public {23 message = newMessage;24 }25}Dies ist ein super einfacher Smart Contract, der bei der Erstellung eine Nachricht speichert und durch Aufrufen der update-Funktion aktualisiert werden kann.
Schritt 11: Verbinden Sie MetaMask & Alchemy mit Ihrem Projekt
Wir haben ein MetaMask-Wallet und ein Alchemy-Konto erstellt und unseren Smart Contract geschrieben. Jetzt ist es an der Zeit, die drei zu verbinden.
Jede Transaktion, die von Ihrem virtuellen Wallet gesendet wird, erfordert eine Signatur mit Ihrem einzigartigen Private-Key. Um unserem Programm diese Berechtigung zu erteilen, können wir unseren Private-Key (und den Alchemy-API-Schlüssel) sicher in einer Umgebungsdatei speichern.
Um mehr über das Senden von Transaktionen zu erfahren, schauen Sie sich dieses Tutorial zum Senden von Transaktionen mit web3 an.
Installieren Sie zunächst das dotenv-Paket in Ihrem Projektverzeichnis:
1npm install dotenv --saveErstellen Sie dann eine .env-Datei im Stammverzeichnis unseres Projekts und fügen Sie Ihren MetaMask Private-Key und die HTTP-Alchemy-API-URL hinzu.
- Befolgen Sie diese Anweisungen (opens in a new tab), um Ihren Private-Key zu exportieren
- Siehe unten, um die HTTP-Alchemy-API-URL zu erhalten
Kopieren Sie die Alchemy-API-URL
Ihre .env sollte so aussehen:
1API_URL = "https://eth-sepolia.g.alchemy.com/v2/your-api-key"2PRIVATE_KEY = "your-metamask-private-key"Um diese tatsächlich mit unserem Code zu verbinden, werden wir diese Variablen in unserer hardhat.config.js-Datei in Schritt 13 referenzieren.
.env nicht! Bitte stellen Sie sicher, dass Sie Ihre .env-Datei niemals mit jemandem teilen oder offenlegen, da Sie dadurch Ihre Geheimnisse kompromittieren. Wenn Sie eine Versionskontrolle verwenden, fügen Sie Ihre .env zu einer gitignore-Datei hinzu.Schritt 12: Installieren Sie Ethers.js
Ethers.js ist eine Bibliothek, die es einfacher macht, mit Ethereum zu interagieren und Anfragen zu stellen, indem sie Standard-JSON-RPC-Methoden mit benutzerfreundlicheren Methoden umhüllt.
Hardhat macht es super einfach, Plugins (opens in a new tab) für zusätzliche Tools und erweiterte Funktionalität zu integrieren. Wir werden das Ethers-Plugin (opens in a new tab) für die Bereitstellung von Verträgen nutzen (Ethers.js (opens in a new tab) verfügt über einige sehr saubere Methoden zur Bereitstellung von Verträgen).
Geben Sie in Ihrem Projektverzeichnis Folgendes ein:
1npm install --save-dev @nomiclabs/hardhat-ethers "ethers@^5.0.0"Wir werden im nächsten Schritt auch Ethers in unserer hardhat.config.js benötigen.
Schritt 13: Aktualisieren Sie hardhat.config.js
Wir haben bisher mehrere Abhängigkeiten und Plugins hinzugefügt, jetzt müssen wir hardhat.config.js aktualisieren, damit unser Projekt von allen weiß.
Aktualisieren Sie Ihre hardhat.config.js, sodass sie wie folgt aussieht:
1require('dotenv').config();2
3require("@nomiclabs/hardhat-ethers");4const { API_URL, PRIVATE_KEY } = process.env;5
6/**7* @type import('hardhat/config').HardhatUserConfig8*/9module.exports = {10 solidity: "0.7.3",11 defaultNetwork: "sepolia",12 networks: {13 hardhat: {},14 sepolia: {15 url: API_URL,16 accounts: [`0x${PRIVATE_KEY}`]17 }18 },19}Schritt 14: Kompilieren Sie unseren Vertrag
Um sicherzustellen, dass bisher alles funktioniert, lassen Sie uns unseren Vertrag kompilieren. Die Aufgabe compile ist eine der integrierten Hardhat-Aufgaben.
Führen Sie über die Befehlszeile Folgendes aus:
1npx hardhat compileMöglicherweise erhalten Sie eine Warnung über SPDX license identifier not provided in source file, aber darüber müssen Sie sich keine Sorgen machen – hoffentlich sieht alles andere gut aus! Wenn nicht, können Sie jederzeit im Alchemy Discord (opens in a new tab) eine Nachricht schreiben.
Schritt 15: Schreiben Sie unser Bereitstellungsskript
Da unser Vertrag nun geschrieben ist und unsere Konfigurationsdatei einsatzbereit ist, ist es an der Zeit, unser Skript zur Bereitstellung des Vertrags zu schreiben.
Navigieren Sie zum Ordner scripts/ und erstellen Sie eine neue Datei namens deploy.js, der Sie den folgenden Inhalt hinzufügen:
1async function main() {2 const HelloWorld = await ethers.getContractFactory("HelloWorld");3
4 // Start deployment, returning a promise that resolves to a contract object5 const hello_world = await HelloWorld.deploy("Hello World!");6 console.log("Contract deployed to address:", hello_world.address);}7
8main()9 .then(() => process.exit(0))10 .catch(error => {11 console.error(error);12 process.exit(1);13 });Hardhat leistet hervorragende Arbeit bei der Erklärung, was jede dieser Codezeilen in ihrem Contracts-Tutorial (opens in a new tab) tut. Wir haben ihre Erklärungen hier übernommen.
1const HelloWorld = await ethers.getContractFactory("HelloWorld");Eine ContractFactory in ethers.js ist eine Abstraktion, die zur Bereitstellung neuer Smart Contracts verwendet wird. HelloWorld ist hier also eine Fabrik für Instanzen unseres Hello World-Vertrags. Bei Verwendung des hardhat-ethers-Plugins sind ContractFactory- und Contract-Instanzen standardmäßig mit dem ersten Unterzeichner verbunden.
1const hello_world = await HelloWorld.deploy();Der Aufruf von deploy() auf einer ContractFactory startet die Bereitstellung und gibt ein Promise zurück, das in einen Contract aufgelöst wird. Dies ist das Objekt, das eine Methode für jede unserer Smart Contract-Funktionen hat.
Schritt 16: Stellen Sie unseren Vertrag bereit
Wir sind endlich bereit, unseren Smart Contract bereitzustellen! Navigieren Sie zur Befehlszeile und führen Sie Folgendes aus:
1npx hardhat run scripts/deploy.js --network sepoliaSie sollten dann so etwas sehen:
1Contract deployed to address: 0x6cd7d44516a20882cEa2DE9f205bF401c0d23570Wenn wir zum Sepolia Etherscan (opens in a new tab) gehen und nach unserer Vertragsadresse suchen, sollten wir sehen können, dass sie erfolgreich bereitgestellt wurde. Die Transaktion wird in etwa so aussehen:
Die From-Adresse sollte mit Ihrer MetaMask-Kontoadresse übereinstimmen und die To-Adresse wird „Contract Creation“ (Vertragserstellung) lauten, aber wenn wir in die Transaktion klicken, sehen wir unsere Vertragsadresse im To-Feld:
Herzlichen Glückwunsch! Sie haben gerade einen Smart Contract auf der Ethereum-Chain bereitgestellt 🎉
Um zu verstehen, was unter der Haube vor sich geht, navigieren wir zur Registerkarte Explorer in unserem Alchemy-Dashboard (opens in a new tab). Wenn Sie mehrere Alchemy-Apps haben, stellen Sie sicher, dass Sie nach App filtern und „Hello World“ auswählen.

Hier sehen Sie eine Handvoll JSON-RPC-Aufrufe, die Hardhat/Ethers unter der Haube für uns gemacht haben, als wir die Funktion .deploy() aufgerufen haben. Zwei wichtige, die hier hervorgehoben werden sollten, sind eth_sendRawTransaction (opens in a new tab), was die Anfrage ist, unseren Vertrag tatsächlich auf die Sepolia-Chain zu schreiben, und eth_getTransactionByHash (opens in a new tab), was eine Anfrage ist, um Informationen über unsere Transaktion anhand des Hashs zu lesen (ein typisches Muster bei Transaktionen). Um mehr über das Senden von Transaktionen zu erfahren, schauen Sie sich dieses Tutorial zum Senden von Transaktionen mit Web3 an.
Das war's für Teil 1 dieses Tutorials. In Teil 2 werden wir tatsächlich mit unserem Smart Contract interagieren (opens in a new tab), indem wir unsere anfängliche Nachricht aktualisieren, und in Teil 3 werden wir unseren Smart Contract auf Etherscan veröffentlichen (opens in a new tab), damit jeder weiß, wie man mit ihm interagiert.
Möchten Sie mehr über Alchemy erfahren? Besuchen Sie unsere Website (opens in a new tab). Möchten Sie nie wieder ein Update verpassen? Abonnieren Sie unseren Newsletter hier (opens in a new tab)! Treten Sie auch unbedingt unserem Discord (opens in a new tab) bei..
Letzte Aktualisierung der Seite: 3. März 2026





