Als Anfänger in der Web3-Entwicklung ist das Entwickeln und Deployen eines eigenen Tokens einer der beliebtesten Einstiege in die On-Chain-Softwareentwicklung – ideal, um deine Solidity-Kenntnisse zu verbessern und den Web3-Entwicklungslebenszyklus zu verstehen.
In Ethereum gibt es verschiedene Token-Standards, also vordefinierte Regelwerke, denen Token folgen müssen, um Kompatibilität, Konformität und Interoperabilität mit dem Ethereum-Netzwerk und anderen Dapps sicherzustellen.
Zu diesen Standards gehören ERC-20 für fungible Token, ERC-721 für Non-Fungible Tokens (NFTs), ERC-1155 für Multi-Token-Typen, ERC-777 für erweiterte Token-Funktionalitäten, ERC-1400 für Security Token und ERC-4626 für tokenisierte Vaults.
In diesem Blog entwickeln wir einen ERC-20-Token mithilfe von OpenZeppelin – einer Bibliothek, die sichere und getestete Implementierungen standardisierter Smart-Contract-Vorlagen bereitstellt. Wir führen dich durch die Einrichtung deiner Entwicklungsumgebung, das Schreiben des Token-Contracts und das Deployen auf dem Linea Layer-2-Netzwerk.
Schritt 1: Entwicklungsumgebung mit Hardhat einrichten
Bevor du mit der Entwicklung deines Ethereum-Tokens beginnst, musst du deine Entwicklungsumgebung einrichten. In diesem Blog verwenden wir Hardhat. Folge den nachstehenden Schritten:
Node.js und npm installieren: Node.js ist eine JavaScript-Laufzeitumgebung, npm ist der zugehörige Paketmanager. Lade beides von der offiziellen Node.js-Website herunter und installiere es.
Ein neues Hardhat-Projekt erstellen: Öffne dein Terminal, erstelle ein neues Verzeichnis für dein Projekt und wechsle in dieses. Führe dann folgenden Befehl aus:
mkdir my-token
cd my-token
npm init -y
npm install --save-dev hardhat
npx hardhat
Notwendige Hardhat-Plugins und OpenZeppelin-Contracts installieren:
npm install @nomiclabs/hardhat-ethers ethers @openzeppelin/contracts
Schritt 2: Deinen Ethereum-Token erstellen
Folge diesen Schritten, um einen einfachen ERC-20-Token zu erstellen:
Einen Token-Contract erstellen: Navigiere in deinem Hardhat-Projekt in das Verzeichnis „contracts" und erstelle eine neue Datei namens MyToken.sol. Öffne diese Datei und definiere deinen Token-Contract:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
contract MyToken is ERC20 {
constructor(uint256 initialSupply) ERC20("MyToken", "MTK") {
_mint(msg.sender, initialSupply);
}
}
Dieser Smart Contract erstellt einen ERC-20-Token namens „MyToken" mit dem Symbol „MTK" unter Verwendung der OpenZeppelin-Bibliothek. Beim Deployen wird ein vom Deployer festgelegtes initiales Token-Angebot geminted und der Adresse des Deployers zugewiesen.
Ein Deployment-Skript schreiben: Erstelle im Verzeichnis „scripts" eine neue Datei namens deploy.js und füge folgenden Code hinzu, um deinen Contract zu deployen:
async function main() {
const [deployer] = await ethers.getSigners();
console.log("Deploying contracts with the account:", deployer.address);
const MyToken = await ethers.getContractFactory("MyToken");
const myToken = await MyToken.deploy(1000000);
console.log("MyToken deployed to:", myToken.address);
}
main()
.then(() => process.exit(0))
.catch((error) => {
console.error(error);
process.exit(1);
});
Das obige Skript deployed den Smart Contract „MyToken" mithilfe von Hardhat und ethers.js und initialisiert ihn mit einem Angebot von 1.000.000 Token. Es ruft die Adresse des Deployers ab und deployed den Contract.
Deinen Contract lokal kompilieren und deployen: Kompiliere und deploye deinen Contract in deinem Terminal auf einer lokalen Blockchain, die von Hardhat bereitgestellt wird:
npx hardhat compile
npx hardhat run scripts/deploy.js --network localhost
Schritt 3: Deinen Token-Contract im Linea Testnet deployen
Nachdem wir unseren ERC-20-Token lokal entwickelt und deployed haben, ist es an der Zeit, ihn mithilfe von Infura und MetaMask im Linea Testnet zu deployen. Folge diesen Schritten, um deinen Token im Linea Testnet live zu schalten.
Ein Infura-Konto einrichten: Infura bietet einfachen Zugang zu verschiedenen Blockchain-Netzwerken und deren Testnets. Erstelle ein neues Projekt, wähle das Linea Sepolia Testnet aus dem Menü der unterstützten Netzwerke aus und kopiere die Projekt-ID.
MetaMask konfigurieren: Öffne deine MetaMask-Wallet und navigiere zum Netzwerkbereich. Stelle im Dropdown-Menü sicher, dass „Testnetzwerke anzeigen" aktiviert ist. Wähle dann das Linea Sepolia Testnet aus.
Linea Sepolia ETH erhalten: Beim Deployen deines Contracts benötigst du Linea Sepolia ETH, um Gasgebühren zu bezahlen. Du kannst Linea ETH über den offiziellen Linea Sepolia Faucet erhalten.
Hardhat-Konfiguration aktualisieren: Aktualisiere in deinem Hardhat-Projekt die Datei hardhat.config.js, um die Linea-Testnet-Konfiguration einzubinden:
require("@nomiclabs/hardhat-ethers");
require("dotenv").config();
module.exports = {
solidity: "0.8.0",
networks: {
lineaTestnet: {
url: `https://linea-sepolia.infura.io/v3/${process.env.INFURA_PROJECT_ID}`,
accounts: [`0x${process.env.PRIVATE_KEY}`],
chainId: 59141
}
}
};
Stelle sicher, dass deine .env-Datei die notwendigen Umgebungsvariablen enthält:
INFURA_PROJECT_ID=your_infura_project_id
PRIVATE_KEY=your_private_key
Deinen Contract im Linea Sepolia Testnet deployen
Führe nun folgenden Befehl aus, um deinen Token-Contract im Linea Testnet zu deployen:
npx hardhat compile
npx hardhat run scripts/deploy.js --network lineaTestnet
Dieses Skript deployed deinen ERC-20-Token-Contract im Linea Testnet über das mit MetaMask verbundene Konto.
Web3-Dapp-Entwicklung mit MetaMask Developer auf das nächste Level bringen
Indem du die Grundlagen der Ethereum-Token-Entwicklung beherrschst, deine Entwicklungsumgebung einrichtest und Best Practices befolgst, kannst du erfolgreich deinen eigenen Ethereum-Token entwickeln und deployen. Ob du eine neue Kryptowährung erstellst oder einen Vermögenswert tokenisierst – Ethereum bietet die Tools und das Ökosystem, um deine Ideen zum Leben zu erwecken.
Besuche das MetaMask Developer-Portal für weiterführende Entwicklungsanforderungen, wie Sign-in-with-Ethereum (SIWE), Unterstützung für EIP-6963 und nahtlose Integration mit MetaMask über Snaps. Es bietet eine umfassende Suite aus Tools, APIs und SDKs, die das User-Onboarding vereinfachen und Entwicklern ermöglichen, einzigartige, permissionless Wallet-Verbindungen und In-Dapp-Erlebnisse speziell für MetaMask-Nutzer zu gestalten.