
Erfahre, wie du eine einfache Gas-Tracker-App mit der MetaMask Gas API, Next.js und ShadcnUI erstellst.

'Gas' bezeichnet eine Einheit, die den Rechenaufwand misst, der für die Ausführung von Operationen erforderlich ist, z. B. für Transaktionen oder die Ausführung von Smart Contracts. Es ist vergleichbar mit dem Kraftstoff eines Autos – notwendig, damit das Netzwerk Operationen verarbeiten und validieren kann. Jede Transaktion auf Ethereum erfordert eine bestimmte Menge an Gas, die durch ihre Komplexität bestimmt wird. Nutzer legen einen Gaspreis in Gwei fest (1 Gwei = 1 Milliardstel Ether), der den Betrag an Ether darstellt, den sie pro Gaseinheit zu zahlen bereit sind.
Das Verständnis von Gaspreisen ist in Blockchain-Netzwerken entscheidend, da es Nutzern hilft, die Kosten ihrer Transaktionen zu verwalten. Die Kenntnis aktueller Gaspreise ermöglicht es Nutzern, den günstigsten Zeitpunkt für eine Transaktion zu wählen und deren Geschwindigkeit zu bestimmen. Das Bewusstsein für Gaspreise ist außerdem wichtig, um fehlgeschlagene Transaktionen zu vermeiden, Budgets zu planen, Netzwerküberlastungen zu verstehen und fundierte Investitionsentscheidungen zu treffen.
Die MetaMask Gas API, verfügbar über Infura, ist ein spezialisiertes Tool, das Echtzeit-Gaspreisdaten für Ethereum Virtual Machine (EVM)-kompatible Netzwerke bereitstellt. Sie fungiert als Oracle und liefert aktuelle Daten zu den Rechenkosten, die für die Ausführung von Operationen oder Transaktionen in diesen Netzwerken erforderlich sind. Die API ermöglicht es Entwicklern, fortschrittliche Gas-Schätzungsfunktionen zu erstellen, die zu Kosteneinsparungen bei Back-End-Transaktionsoperationen führen oder die Benutzeroberfläche für Nutzer verbessern können.
In diesem Tutorial lernen wir, wie man eine Gas Tracker App mithilfe der Gas API, Next.js und ShadcnUI erstellt. Diese Anwendung ermöglicht es Dapp-Nutzern, empfohlene Gaspreise abzurufen, die auf ihre Transaktionsprioritäten zugeschnitten sind, und unterstützt so die effiziente Aufnahme dieser Transaktionen in einen Blockchain-Block.
Ein gültiger Web3-API-Schlüssel und ein API-Schlüssel-Secret.
Node.js sowie npm oder yarn müssen installiert sein.
Kenntnisse in Next.js und React.
Stellen Sie zunächst sicher, dass Node.js auf Ihrem Rechner installiert ist. Sobald Node.js eingerichtet ist, starten Sie eine neue Next.js-Anwendung, indem Sie Ihr Terminal öffnen und den folgenden Befehl ausführen:
npx create-next-app@latestNach der Ausführung des Befehls erscheinen nicht nur mehrere Eingabeaufforderungen, sondern es wird auch ein neues Verzeichnis unter dem von Ihnen angegebenen Projektnamen erstellt – ich habe gastracker-app verwendet – und damit die grundlegende Struktur von Next.js aufgebaut sowie die wesentlichen Abhängigkeiten installiert. Wechseln Sie nun in das Verzeichnis Ihres Projekts:
Navigieren Sie in Ihr neues Projektverzeichnis und aktivieren Sie die Next.js-Anwendung im Entwicklungsmodus. Sie können Ihre Anwendung anschließend erkunden, indem Sie in Ihrem Browser zu http://localhost:3000 navigieren.
Für unsere Anwendung verwenden wir eine Komponentenbibliothek. Beginnen wir mit der Installation von ShadcnUI:
npx shadcn-ui@latest initWährend der Installation werden Sie durch die Konfiguration der Datei components.json mit den folgenden Eingabeaufforderungen geführt:
Nachdem das erledigt ist, installieren wir auch die Card-Komponente von Shadcn UI:
npx shadcn-ui@latest add cardIn diesem Tutorial konzentrieren wir uns auf die Verwendung der Card-Komponente von Shadcn UI. Um mehr über diese Komponenten zu erfahren, besuchen Sie die Shadcn UI-Website. Da unser Frontend nun eingerichtet ist, können wir mit der Gas API arbeiten.
Erstellen Sie im Stammverzeichnis eine Datei namens .env, in der wir die folgenden Zugangsdaten speichern:
Stellen Sie sicher, dass Sie den API_KEY und das API_KEY_SECRET aus Ihrem Infura-Dashboard beziehen. Es ist wichtig, den API-Schlüssel nicht auf GitHub zu veröffentlichen. Überprüfen Sie im Stammverzeichnis die .gitignore-Datei, um sicherzustellen, dass die erforderlichen Zeilen enthalten sind.
Wir benötigen außerdem die Pakete axios und dotenv:
Erstellen Sie nun eine Datei namens 'index.js' im Stammverzeichnis unserer gastracker-app und kopieren Sie den folgenden Code hinein:
Führen Sie in einem anderen Terminalfenster den folgenden Befehl aus.
node index.jsSie sollten Folgendes sehen:
Wenn Sie die im Terminal angezeigten Daten sehen, bedeutet dies, dass wir erfolgreich Antworten von der API erhalten. Der nächste Schritt besteht darin, diese Daten auf unserem Frontend darzustellen. Sie können die Datei index.js nun löschen.
Um benutzerdefinierte Typen für das gesamte Projekt zu definieren, erstellen Sie eine Datei namens 'index.d.ts' im Stammverzeichnis und fügen Sie die folgenden Zeilen hinzu:
Diese TypeScript-Interface-Deklarationen in einer globalen Datei definieren Strukturen für Gas-Gebührenschätzungen und API-Antworten. Sie umfassen Details wie Gebührenvorschläge, Wartezeiten, Netzwerküberlastung und Gebührentrends für verschiedene Transaktionsprioritätsstufen in einem Blockchain-Netzwerk.
Erstellen Sie im Ordner 'lib' eine Datei namens 'getData.ts' und fügen Sie den folgenden Code hinzu:
Dieser Code ruft Gas-Gebührendaten von der Gas API ab:
Authentifizierungs-Setup: Erstellt einen Buffer aus dem INFURA_API_KEY und dem INFURA_API_KEY_SECRET, die als Umgebungsvariablen gesetzt sind. Dieser Buffer wird dann in einen base64-String (namens 'Auth') für die Basisauthentifizierung bei API-Anfragen umgewandelt.
Chain-ID-Angabe: Setzt die Variable chainId auf 1, was in Blockchain-Kontexten typischerweise das Ethereum-Mainnet repräsentiert.
getData-Funktion: Eine asynchrone Funktion zum Abrufen von Gas-Gebührendaten:
Sie verwendet fetch, um eine GET-Anfrage an den Infura-API-Endpunkt zu stellen und empfohlene Gasgebühren für die angegebene chainId abzurufen.
Sie setzt den Authorization-Header in der Anfrage mithilfe des zuvor erstellten Auth-Tokens.
Bei Erfolg wird die Antwort als JSON geparst und als GasFeesApiResponse zurückgegeben, entsprechend dem zuvor definierten Interface.
Fehler wie Netzwerkprobleme oder Serverfehler werden in der Konsole protokolliert.
Variabilität der Chain-ID: Die chainId kann je nach Netzwerk, für das die App erstellt wird, angepasst werden. Die Gas API auf Infura unterstützt die meisten wichtigen EVM-Netzwerke. Weitere Informationen zu unterstützten Netzwerken finden Sie in der Dokumentation.
Wir haben nun den spannenden Teil erreicht, in dem wir uns auf die Benutzeroberfläche zur Datenanzeige konzentrieren. Navigieren wir zum Komponentenordner und erstellen eine Komponente namens 'GasCard.tsx'.
Schauen wir uns an, was hier passiert ist:
Importe und Datenabruf:
Die Komponente importiert die getData-Funktion zum Abrufen von Gas-Gebührendaten sowie verschiedene UI-Komponenten wie Card, CardContent, CardHeader und CardTitle, die Teil des zuvor installierten Shadcn UI sind.
Innerhalb der GasCard-Komponente wird die getData-Funktion aufgerufen, um Gas-Gebührendaten abzurufen.
Darstellung der Gas-Gebührenschätzungen:
Eine Funktion namens renderGasFeeEstimateCard wird definiert, die eine Karten-UI für eine bestimmte Gas-Gebührenschätzung (GasFeeEstimate) und einen Titel (title) rendert.
Diese Funktion erstellt eine Card-Komponente, die Details wie die maximale Prioritätsgebühr, die maximale Gebühr pro Gas und die geschätzten Wartezeiten anzeigt.
Komponentenstruktur:
Die JSX-Struktur der GasCard-Komponente ist in der return-Anweisung beschrieben. Sie verwendet ein Grid-Layout, um Karten für niedrige, mittlere und hohe Gas-Gebührenschätzungen anzuzeigen, die je nach Datenverfügbarkeit bedingt dargestellt werden.
Eine zusätzliche Karte zeigt weitere Informationen wie die geschätzte Basisgebühr, Netzwerküberlastung, Prioritätsgebührenbereiche (aktuell und historisch) sowie Trends bei Prioritäts- und Basisgebühren.
Der einzige verbleibende Schritt besteht nun darin, GasCard.tsx in die Datei page.tsx zu importieren. Danach sollten alle Daten auf unserem Frontend sichtbar sein.
Die Nutzung der Gas API auf Infura bietet Entwicklern, die mit EVM-kompatiblen Netzwerken arbeiten, erhebliche Vorteile. Sie liefert Echtzeit-Einblicke in den schwankenden Gasmarkt und ermöglicht es Nutzern, fundierte Entscheidungen über ihre Transaktionsgebühren zu treffen. Dies ist besonders vorteilhaft für die Optimierung sowohl der Geschwindigkeit als auch der Kosteneffizienz von Transaktionen.
Dieses Tutorial zeigt, wie man mit der GasAPI startet und eine einfache Gas Tracker App erstellt. Den Code finden Sie hier: GasAPI-Template auf GitHub.
Aber wir können damit noch viel mehr interessante Dinge tun: Wir können Möglichkeiten hinzufügen, GasData zu bestimmten Zeiten mit einem Countdown zu aktualisieren, und wir können die GasAPI auch in jede bestehende Anwendung integrieren. Ich empfehle, die folgenden Ressourcen zu besuchen:
Gas API Docs: Infura Gas API Dokumentation
EventSea: Eine Full-Stack-Events-Dapp, die die GasAPI kreativ nutzt: EventSea auf GitHub
Viel Spaß beim Entwickeln! 🚀
KI-übersetzt. Kann Fehler enthalten. Bitte überprüfen Sie die Informationen stets.