Weiter zum Hauptinhalt

Nodes und Clients

Letzte Änderung: , Invalid DateTime

Ethereum ist ein verteiltes Netzwerk von Computern, auf denen Software (sogenannte Nodes) läuft, die Blöcke und Transaktionsdaten verifizieren kann. Du benötigst eine Anwendung, bekannt als Client, auf deinem Gerät, um einen Node zu "betreiben".

Voraussetzungen

Du solltest das Konzept eines Peer-to-Peer-Netzwerks und die Grundlagen der EVM verstehen, bevor du tiefer eintauchst und deine eigene Instanz eines Ethereum-Clients startest. Lies unsere Einführung in Ethereum.

Wenn dir das Thema Nodes neu ist, empfehlen wir dir, zunächst unsere benutzerfreundliche Einführung zum Betreiben eines Ethereum-Nodes zu lesen.

Was sind Nodes und Clients?

"Node" bezieht sich auf eine laufende Client-Software. Ein Client ist eine Implementierung von Ethereum, die alle Transaktionen in jedem Block prüft und das Netzwerk somit sicher und die Daten genau hält.

Du kannst eine Echtzeitansicht des Ethereum-Netzwerks sehen, indem du dir diese Karte der Nodes(opens in a new tab) ansiehst.

Es gibt viele Ethereum-Clients in einer Vielzahl von Programmiersprachen wie Go, Rust, JavaScript, Typescript, Python, C# .NET, Nim und Java. Was diese Implementierungen gemeinsam haben, ist dass sie alle einer formalen Spezifikation folgen (ursprünglich das Ethereum Yellow Paper(opens in a new tab)). Diese Spezifikation bestimmt, wie das Ethereum-Netzwerk und die Blockchain funktionieren.

Ausführungs-Client (opens in a new tab) Vereinfachtes Diagramm dessen, was einen Ethereum-Client ausmacht.

Node-Typen

Wenn du einen eigenen Node betreiben willst, solltest du verstehen, dass es verschiedene Arten von Nodes gibt, die Daten unterschiedlich konsumieren. In der Tat können Clients 3 verschiedene Arten von Nodes betreiben: Light, Full und Archive. Es gibt auch Optionen für verschiedene Synchronisierungsstrategien, die eine schnellere Synchronisationszeit ermöglichen. Die Synchronisierung bezieht sich darauf, wie schnell sie die aktuellsten Informationen über Ethereums Zustand erhalten kann.

Full-Node

  • Speichert die kompletten Blockchain-Daten.
  • Beteiligt sich an der Blockprüfung, überprüft alle Blöcke und Zustände.
  • Alle Zustände können von einem Full-Node abgeleitet werden.
  • Bedient das Netzwerk und liefert Daten auf Anfrage.

Light-Node

  • Speichert nur die Header-Kette und fordert alles andere an.
  • Kann die Gültigkeit der Daten gegen die Zustandswurzeln in den Block-Headern überprüfen.
  • Nützlich für Geräte mit geringer Kapazität, wie Embedded-Geräte oder Mobiltelefone, die es sich nicht leisten können, Gigabyte an Blockchain-Daten zu speichern.

Archive-Node

  • Speichert alles wie im Full-Node und baut zusätzlich ein Archiv von historischen Zuständen auf. Wird benötigt, wenn du z. B. einen Kontostand bei Block #4.000.000 abfragen oder einfach und zuverlässig deine eigenen Transaktionen testen willst, ohne sie mit OpenEthereum(opens in a new tab) zu minen.
  • Diese Daten stellen Einheiten von Terabytes dar, was Archive-Nodes für durchschnittliche Benutzer weniger attraktiv macht, aber für Dienste wie Blockexplorer, Wallet-Hersteller und die Blockchainanalyse nützlich sein kann.

Das Synchronisieren von Clients in jedem anderen Modus als dem Archiv führt zu reduzierten (pruned) Blockchain-Daten. Das bedeutet, es gibt kein Archiv mit allen historischen Zuständen, aber der vollständige Node ist in der Lage, diese bei Bedarf zu erstellen.

Warum sollte ich einen Ethereum-Node betreiben?

Durch das Ausführen eines Nodes kannst du Ethereum vertraulich und privat nutzen, während das Ökosystem unterstützt wird.

Vorteile für dich

Wenn du deinen eigenen Node betreibst, kannst du Ethereum auf eine wirklich private, autarke und vertrauenslose Weise verwenden. Du musst dem Netzwerk nicht vertrauen, weil du die Daten mit deinem Client selbst überprüfen kannst. "Nicht vertrauen, überprüfen" ist ein beliebtes Mantra der Blockchain.

  • Dein Node überprüft alle Transaktionen und Blöcke selbstständig gegen Konsensregeln. Das bedeutet, du musst dich nicht auf andere Nodes im Netzwerk verlassen oder ihnen vollständig vertrauen.
  • Du musst deine Adressen und Salden nicht an zufälligen Nodes veröffentlichen. Alles kann mit deinem eigenen Client überprüft werden.
  • Deine dApp kann sicherer und privater sein, wenn du einen eigenen Node verwendest. MetaMask(opens in a new tab), MyEtherWallet(opens in a new tab) und einige andere Wallets können einfach mit deinem eigenen lokalen Node verknüpft werden.
  • Du kannst deine eigenen RPC-Endpunkte programmieren.
  • Du kannst dich mit deinem Node über Interprozesskommunikation (IPC) verbinden oder den Node umschreiben, um dein Programm als Plugin zu laden. Das garantiert eine niedrige Latenzzeit, die erforderlich ist, um deine Transaktionen so schnell wie möglich zu ersetzen (d. h. Frontrunning).

Wie du auf Ethereum über deine Anwendung und Nodes zugreifst (opens in a new tab)

Netzwerkvorteile

Eine Vielzahl von Nodes ist wichtig für Ethereums Gesundheit, Sicherheit und operative Belastbarkeit.

  • Sie bieten Light-Clients Zugriff auf Blockchain-Daten, die davon abhängen. Bei hohen Nutzungspitzen muss es genug vollständige Knoten geben, um die Synchronisation von Light-Nodes zu unterstützen. Light-Nodes speichern nicht die gesamte Blockchain, sondern verifizieren die Daten über die Zustandswurzel in Block-Headern. Sie können bei Bedarf weitere Informationen von Blöcken anfragen.
  • Full-Nodes erzwingen die Konsensregeln für den Proof-of-Work, so dass sie nicht dazu gebracht werden können, Blöcke zu akzeptieren, die den Regeln nicht folgen. Dies bietet zusätzliche Sicherheit im Netzwerk, denn wenn alle Nodes Light-Nodes wären, die keine vollständige Verifizierung durchführen, könnten Miner das Netzwerk angreifen und zum Beispiel Blöcke mit höheren Belohnungen erstellen.

Wenn du einen Full-Node betreibst, profitiert das gesamte Ethereum Netzwerk.

Betreiben eines eigenen Nodes

Hast du Interesse, deinen eigenen Ethereum-Client zu betreiben?

Eine anfängerfreundliche Einführung findest du auf unserer Node-Seite.

Wenn du eher ein technischer Benutzer bist, kannst du einen eigenen Node mit der Kommandozeile aufbauen.

Projekte

Wähle einen Client aus und folge den Anweisungen.

Ethnode - Betreibe einen Ethereum-Node (Geth oder OpenEthereum) für lokale Entwicklung.

dAppNode - Eine Betriebssystem-GUI für den Betrieb von Web3-Nodes, einschließlich Ethereum und der Beacon Chain, auf einer eigenen Maschine.

Ressourcen

Alternativen

Der Betrieb eines eigenen Nodes kann schwierig sein und du musst nicht immer eine eigene Instanz betreiben. In diesem Fall kannst du einen Drittanbieter wie Infura(opens in a new tab), Alchemy(opens in a new tab) oder QuikNode(opens in a new tab) verwenden. Alternativ dazu ist ArchiveNode(opens in a new tab) ein von der Community finanzierter Archivknoten, der unabhängigen Entwicklern, die sich dies sonst nicht leisten könnten, Archivdaten auf der Ethereum-Blockchain zur Verfügung stellen soll. Einen Überblick über die Verwendung dieser Dienste findest du unter Nodes als Dienst.

Wenn jemand in deiner Community einen Ethereum-Node mit einer öffentlichen API betreibt, kannst du deine Light Wallets (wie MetaMask) auf einen Community-Node via Custom RPC(opens in a new tab) verweisen lassen und so mehr Privatsphäre erreichen als mit einer zufälligen vertrauenswürdigen Drittpartei.

Wenn du andererseits einen Client betreibst, kannst du ihn mit deinen Freunden teilen, die ihn vielleicht brauchen.

Ausführungs-Clients (früher "Eth1-Clients")

Die Ethereum-Community unterhält mehrere quelloffene Ausführungs-Clients (früher als "Eth1-Clients" oder einfach "Ethereum-Clients" bezeichnet), die von verschiedenen Teams in unterschiedlichen Programmiersprachen entwickelt wurden. Dies macht das Netzwerk stärker und vielfältiger. Das ideale Ziel ist es, Vielfalt zu erreichen, ohne dass ein Client dominiert, um jede Art von Single Point of Failure zu reduzieren.

Diese Tabelle gibt einen Überblick über die verschiedenen Clients. Sie alle bestehen Client-Tests(opens in a new tab) und werden aktiv gewartet, um mit Netzwerk-Upgrades auf dem neuesten Stand zu bleiben.

ClientSpracheBetriebssystemNetzwerkeSync-StrategienZustandsreduzierung
Geth(opens in a new tab)GoLinux, Windows, MacOSMainnet, Görli, Rinkeby, RopstenSnap, FullArchive, Pruned
Nethermind(opens in a new tab)C#, .NETLinux, Windows, MacOSMainnet, Görli, Ropsten, Rinkeby und weitereFast, Beam, ArchiveArchive, Pruned
Besu(opens in a new tab)JavaLinux, Windows, MacOSMainnet, Rinkeby, Ropsten, Görli und weitereFast, FullArchive, Pruned
Erigon(opens in a new tab)GoLinux, Windows, MacOSMainnet, Görli, Rinkeby, RopstenFullArchive, Pruned
OpenEthereum (veraltet)(opens in a new tab)RustLinux, Windows, MacOSMainnet, Kovan, Ropsten und weitereWarp, FullArchive, Pruned

Beachte, dass OpenEthereum veraltet(opens in a new tab) ist und nicht mehr gewartet wird. Verwende es mit Vorsicht und wechsle lieber zu einer anderen Client-Implementierung.

Weitere Informationen zu unterstützten Netzwerken findest du unter Ethereum-Netzwerke.

Vorteile verschiedener Implementierungen

Jeder Client hat einzigartige Anwendungsfälle und Vorteile, daher solltest du einen auf deinen eigenen Präferenzen basierenden wählen. Die Client-Vielfalt ermöglicht die Fokussierung der Implementierungen auf verschiedene Funktionen und Benutzergruppen. Du kannst einen Client basierend auf Features, Support, Programmiersprache oder Lizenzen auswählen.

Go Ethereum

Go Ethereum (kurz Geth) ist eine der ursprünglichen Implementierungen des Ethereum-Protokolls. Derzeit ist es der am weitesten verbreitete Client mit der größten Benutzerbasis und der größten Vielfalt an Tools für Benutzer und Entwickler. Es ist in Go geschrieben, vollständig Open Source und unter der GNU LGPL v3 lizenziert.

OpenEthereum

OpenEthereum ist ein schneller, funktionsreicher und fortgeschrittener CLI-basierter Ethereum-Client. Es wurde entwickelt, um die notwendige Infrastruktur für schnelle und zuverlässige Dienste bereitzustellen, die eine schnelle Synchronisierung und maximale Laufzeit erfordern. Das Ziel von OpenEthereum ist es, der schnellste, leichteste und sicherste Ethereum-Client zu sein. Es bietet eine saubere, modulare Codebase für

  • eine einfache Anpassung,
  • eine leichte Integration in Dienstleistungen oder Produkte,
  • einen minimalen Arbeitsspeicher und Speicherfußabdruck.

OpenEthereum wird unter Verwendung der neuesten Rust-Programmiersprache entwickelt und unter GPLv3 lizenziert.

Beachte, dass OpenEthereum veraltet(opens in a new tab) ist und nicht mehr gewartet wird. Verwende es mit Vorsicht und wechsle lieber zu einer anderen Client-Implementierung.

Nethermind

Nethermind ist eine Ethereum-Implementierung, die mit dem C# .NET Technologie-Stack erstellt wurde, der auf allen wichtigen Plattformen, einschließlich ARM, läuft. Es bietet eine großartige Leistung mit

  • einer optimierten virtuellen Maschine,
  • Zustandszugriff,
  • Netzwerken und reichhaltigen Funktionen wie Prometheus/Grafana-Dashboards, Seq Enterprise Logging Support, JSON RPC Tracing und Analytics-Plugins.

Nethermind bietet auch eine detaillierte Dokumentation(opens in a new tab), starke Entwicklerunterstützung, eine Online-Community und 24/7-Support für Premiumnutzer.

Besu

Hyperledger Besu ist ein unternehmensorientierter Ethereum-Client für öffentliche und private Netzwerke. Er bietet alle Funktionen des Ethereum-Mainnets, von Tracing bis GraphQL, hat ein umfangreiches Monitoring und wird von ConsenSys unterstützt, sowohl in offenen Community-Kanälen als auch durch kommerzielle SLAs für Unternehmen. Er ist in Java geschrieben und ist durch Apache 2.0 lizenziert.

Erigon

Erigon, früher bekannt als Erigon, ist eine Abspaltung von Go Ethereum, die auf Geschwindigkeit und Speicherplatzeffizienz ausgerichtet ist. Erigon ist eine komplett neu entwickelte Implementierung von Ethereum, die derzeit in Go geschrieben ist, aber auch in anderen Sprachen implementiert werden soll. Das Ziel von Erigon ist es, eine schnellere, modularere und optimierte Implementierung von Ethereum anzubieten. Es kann eine vollständige Synchronisierung des Archiv-Nodes mit weniger als 2 Tb Speicherplatz in weniger als 3 Tagen durchführen

Synchronisationsmodi

Um die aktuellen Daten im Netzwerk zu verfolgen und zu überprüfen, muss sich der Ethereum-Client mit dem neuesten Netzwerkstatus synchronisieren. Dazu werden Daten von Peers heruntergeladen, ihre Integrität kryptographisch verifiziert und eine lokale Blockchain-Datenbank aufgebaut.

Die Synchronisationsmodi stellen verschiedene Ansätze für diesen Prozess mit unterschiedlichen Kompromissen dar. Die Clients unterscheiden sich auch in der Implementierung von Synchronisationsalgorithmen. Beziehe dich immer auf die offizielle Dokumentation des von dir gewählten Clients, um Einzelheiten zur Implementierung zu erfahren.

Überblick über die Strategien

Allgemeiner Überblick über die Synchronisierungsansätze, die in Mainnet-Ready-Clients verwendet werden:

Full sync

Bei full sync werden alle Blöcke (einschließlich Headern, Transaktionen und Quittungen) heruntergeladen und der Zustand der Blockchain inkrementell generiert, indem jeder Block ab Genesis ausgeführt wird.

  • Minimiert das Vertrauen und bietet höchste Sicherheit, indem jede Transaktion verifiziert wird.
  • Bei einer steigenden Anzahl von Transaktionen kann es Tage bis Wochen dauern, alle Transaktionen zu bearbeiten.
Fast sync

Die schnelle Synchronisierung lädt alle Blöcke herunter (einschließlich Headern, Transaktionen und Quittungen), überprüft alle Header, lädt den Zustand herunter und vergleicht ihn mit den Headern.

  • Verlässt sich auf die Sicherheit des Konsensmechanismus.
  • Die Synchronisierung dauert nur ein paar Stunden.
Light sync

Der Light-Client-Modus lädt alle Block-Header und Blockdaten herunter und prüft einige zufällig. Synchronisiert nur die Spitze der Kette vom vertrauenswürdigen Kontrollpunkt.

  • Ruft nur den neuesten Zustand ab und verlässt sich dabei auf das Vertrauen in die Entwickler und den Konsensmechanismus.
  • Der Client ist in wenigen Minuten mit dem aktuellen Netzwerkstatus einsatzbereit.

Mehr über Light-Clients(opens in a new tab)

Snap sync

Eingeführt von Geth. Durch die Verwendung von dynamischen Snapshots, die von Peers bereitgestellt werden, werden alle Konto- und Speicherdaten abgerufen, ohne dass zwischengeschaltete Trie-Nodes heruntergeladen werden müssen, und der Merkle-Trie wird dann lokal rekonstruiert.

  • Schnellste von Geth entwickelte Synchronisierungsstrategie, derzeit die Standardstrategie
  • Spart eine Menge Festplattenkapazität und Netzwerkbandbreite, ohne die Sicherheit zu beeinträchtigen.

Mehr über Snap(opens in a new tab)

Warp-Sync

Implementiert durch OpenEthereum. Nodes generieren in regelmäßigen Abständen einen konsenskritischen Zustands-Snapshot, den jeder Peer über das Netzwerk abrufen kann, was eine schnelle Synchronisation von diesem Punkt aus ermöglicht.

  • Der schnellste und auch standardmäßige Synchronisationsmodus von OpenEthereum basiert auf den statischen Snapshots, die von Peers generiert werden.
  • Das ist eine ähnliche Strategie wie bei Snap-Sync, aber ohne bestimmte Sicherheitsvorteile.

Mehr über Warp(opens in a new tab)

Beam-Sync

Implementiert von Nethermind und Trinity. Beam-Sync funktioniert wie Fast-Sync, lädt aber auch die Daten herunter, die zum Ausführen der neusten Blocks benötigt wird. Dies ermöglicht dir, die Chain schon innerhalb der ersten paar Minuten nach dem Start abzufragen.

  • Synchronisiert den Zustand zuerst und ermöglicht die Abfrage von RPC in wenigen Minuten.
  • Noch in der Entwicklung und nicht vollständig zuverlässig. Die Hintergrundsynchronisierung ist verlangsamt und RPC-Antworten könnten fehlschlagen.

Mehr zu Beam(opens in a new tab)

Setup im Client

Clients bieten umfangreiche Konfigurationsmöglichkeiten für deine Bedürfnisse an. Wähle einfach einen aus, der am besten zu dir passt, basierend auf dem Niveau der Sicherheit, verfügbaren Daten und Kosten. Neben dem Synchronisations-Algorithmus kannst du auch verschiedene Arten von alten Daten automatisch reduzieren lassen (Pruning). Pruning ermöglicht das Löschen veralteter Daten (z. B. das Entfernen von Zustands-Trie-Nodes), die von den letzten Blocks unerreichbar sind.

Beachte die Dokumentation oder die Hilfeseite des Clients, um herauszufinden, welcher Synchronisationsmodus als Standard festgelegt ist. Du kannst beim Einrichten die standardmäßige Synchronisationsart bestimmen, in etwa so:

Light-Sync in GETH(opens in a new tab) oder ERIGON(opens in a new tab) einrichten

geth --syncmode "light"

Für mehr Informationen, lies die Anleitung dazu, wie man einen Geth-Light-Node ausführt.

Einrichtung von Full-Sync mit Archive in Besu(opens in a new tab)

besu --sync-mode=FULL

Genau wie jede andere Konfiguration kann es mit der Startup-Flag oder in der Konfigurationsdatei definiert werden. Ein weiteres Beispiel ist Nethermind(opens in a new tab), welches dich dazu auffordert, während der ersten Initialisierung eine Konfiguration auszuwählen, und danach eine Konfigurationsdatei erstellt.

Konsens-Clients (früher als Eth2-Clients bekannt)

Es gibt mehrere Konsens-Clients (früher als Eth2-Clients bekannt), die dazu da sind, die Konsens-Upgrades zu unterstützen. Sie betreiben die Beacon Chain und werden den Ausführungen nach The Merge einen Proof-of-Stake-Konsensmechanismus zur Verfügung stellen.

ClientSpracheBetriebssystemeNetzwerke
Teku(opens in a new tab)JavaLinux, Windows, MacOSMainnet, Goerli
Nimbus(opens in a new tab)NimLinux, Windows, MacOSMainnet, Goerli
Lighthouse(opens in a new tab)RustLinux, Windows, MacOSMainnet, Goerli, Pyrmont
Lodestar(opens in a new tab)TypeScriptLinux, Windows, MacOSMainnet, Goerli
Prysm(opens in a new tab)LosLinux, Windows, MacOSMainnet, Gnosis, Goerli, Pyrmont

Hardware

Die Hardwareanforderungen sind je nach Client unterschiedlich, aber im Allgemeinen nicht besonders hoch, da der Node nur synchronisiert bleiben muss. Verwechsle es nicht mit dem Mining, das viel mehr Rechenleistung erfordert. Die Synchronisation von Zeit und Leistung verbessert sich jedoch mit leistungsstärkerer Hardware. Je nach Bedarf und Wunsch kann Ethereum auf deinem Computer, Home-Server, Single-Board-Computer oder virtuellen privaten Servern in der Cloud ausgeführt werden.

Eine einfache Möglichkeit, deinen eigenen Node zu betreiben, ist die Verwendung von Plug-and-play-Boxen wie dAppNode(opens in a new tab). Es stellt Hardware für laufende Clients und Anwendungen mit einer einfachen Benutzeroberfläche zur Verfügung.

Voraussetzungen

Bevor du einen Client installierst, stelle bitte sicher, dass dein Computer über genügend Ressourcen verfügt, um ihn auszuführen. Die Mindestanforderungen und die empfohlenen Anforderungen findest du weiter unten. Der wichtigste Teil ist jedoch der Festplattenplatz. Die Synchronisation der Ethereum-Blockchain ist Datentechnisch sehr ein-/ausgangsintensiv. Es ist am besten, ein SSD einzusetzen. Um einen Ethereum-Client auf HDD laufen zu lassen, benötigst du mindestens 8 GB RAM für den Cache.

  • CPU mit 2+ Kernen
  • Mindestens 4 GB RAM mit SSD, 8 GB+, wenn du eine HDD-Festplatte verwendest
  • 8 MBit/s Bandbreite
  • Schnelle CPU mit 4+ Kernen
  • 16 GB+ RAM
  • Schnelle SSD mit mindestens 500 GB freiem Speicherplatz
  • 25+ MBit/s Bandbreite

Der Sync-Modus, den du auswählst, wird einen Einfluss auf den benötigten Speicherplatz haben, deswegen haben wir schon einmal den notwendigen Speicherplatz für jeden Client abgeschätzt.

ClientFestplattengröße (Fast Sync)Festplattengröße (Full Archive)
Geth400 GB+6 TB+
OpenEthereum280 GB+6 TB+
Nethermind200 GB+5 TB+
Besu750 GB+5 TB+
ErigonN/A1 TB+
  • Hinweis: Erigon kann keinen Fast-Sync durchführen, aber Full-Pruning ist möglich (~500 GB)

Ein Diagramm, das aufzeigt, dass die Gigabytes für eine Full-Synchronisation ansteigen

Ein Diagramm, das aufzeigt, dass die Gigabytes für eine Archive-Synchronisation ansteigen

Diese Diagramme zeigen, wie sich die Speicheranforderungen fortwährend ändern. Die aktuellsten Daten für Geth und OpenEthereum findest du auf Full-Sync-Daten(opens in a new tab) und Archive-Sync-Daten(opens in a new tab).

Ethereum auf einem Einzelplatinen-Computer

Die bequemste und günstigste Art, Ethereum-Nodes zu betreiben, ist die Benutzung eines Einzelboard-Computers mit ARM-Architektur wie den Raspberry Pi. Ethereum auf ARM(opens in a new tab) bietet Bilder von Geth-, OpenEthereum-, Nethermind- und Besu-Clients. Hier ist ein einfaches Tutorial dazu, wie man einen ARM-Client aufsetzt und einrichtet.

Kleine, erschwingliche und effiziente Geräte wie diese sind ideal für den Betrieb eines Nodes zu Hause.

Weiterführende Informationen

Es gibt eine große Menge an Informationen über Ethereum-Clients im Internet. Hier sind ein paar Anhaltspunkte, die bei der Suche hilfreich sein könnten.

War dieser Artikel hilfreich?