Kernpunkte
- Node.js führt JavaScript außerhalb des Browsers aus, für Services und Automatisierung.
- Das asynchrone Modell eignet sich für RPC-Abfragen, Events und Integrationsaufgaben.
- Rechenintensive Aufgaben und Retries erfordern eine eigene Strategie.
Was ist Node.js?
Node.js ist eine Runtime, die JavaScript außerhalb des Browsers ausführt. In Blockchain-Projekten kann sie APIs bereitstellen, Transaktionen vorbereiten, Events verarbeiten und interne Dienste verbinden. Zudem dient sie als Umgebung für Entwicklungstools aus dem JavaScript- und TypeScript-Ökosystem.
Nicht alle Web3-Komponenten setzen Node.js voraus. Foundry ist in Rust geschrieben, und Graph Node nutzt ebenfalls Rust, auch wenn es Client-Tools oder Skripte in JavaScript gibt. Wer die Runtime jeder Komponente kennt, plant Ressourcen und Wartung besser und verwechselt Entwicklungstools nicht mit Produktivdiensten.
So funktioniert es
Der Event Loop koordiniert asynchrone Arbeit und ermöglicht es, Wartezeiten im Netzwerk zu überbrücken, ohne jede Anfrage zu blockieren. Das heißt nicht, dass jede Aufgabe parallel läuft: Rechenintensive Operationen oder lange synchrone Funktionen können verhindern, dass der Haupt-Thread andere Vorgänge bearbeitet. Mit Worker Threads oder separaten Prozessen lassen sich bestimmte CPU-Aufgaben auslagern.
Ein Dienst, der RPC-Abfragen ausführt, benötigt Grenzen für die Nebenläufigkeit, Timeouts und eine Fehlerbehandlung. Wiederholungen richten sich nach der Operation: Eine Leseabfrage zu wiederholen hat andere Folgen, als eine Zahlung erneut zu senden. Die Konfiguration muss diesen Unterschied abbilden.
Was Node.js leistet
Ein Indexer kann Blockbereiche abrufen, Events transformieren und einen Fortschrittspunkt speichern. Sein Design berücksichtigt Duplikate, Reorganisationen und die Wiederherstellung nach einem Neustart. WebSocket-Subscriptions helfen, Aktivität zu erkennen, während das Auslesen historischer Daten Lücken schließt, wenn die Verbindung abbricht.
Bei geplanten Aufgaben trennt eine persistente Queue Annahme und Ausführung. Betriebslogs identifizieren die Aufgabe und ihren Status, ohne Schlüssel oder personenbezogene Daten offenzulegen. Kennzahlen wie Rückstand gegenüber dem aktuellen Block, Fehler und Queue-Länge zeigen, wann Kapazität erweitert oder das Design überprüft werden sollte.
Grenzen und Auswahlkriterien
Die Node-Version richtet sich nach dem Support der Runtime und der Kompatibilität der Abhängigkeiten. Sie sollte in Entwicklung, Continuous Integration und Deployment fixiert und jedes Update getestet werden. Dass eine Runtime TypeScript ausführen kann, ersetzt nicht zwangsläufig die Typprüfung des Projekts.
Signiert der Dienst Transaktionen, werden Erstellung und Autorisierung getrennt und der Geltungsbereich der Zugangsdaten begrenzt. Der Schlüssel eines herkömmlichen Kontos wird nicht dadurch widerrufbar, dass er in einem Secrets Manager liegt: Die Reaktion auf eine Kompromittierung erfordert ein bewusst gestaltetes Konto- und Berechtigungskonzept. Die Programmiersprache löst diese Architekturfrage nicht.
Auch bekannt als
- Node
- Node.js runtime





