Zum Hauptinhalt springen
Change page

Knotenarchitektur

Ein Ethereum-Knoten besteht aus zwei Clients: einem Ausführungsclient und einem Konsens-Client. Damit ein Knoten einen neuen Block vorschlagen kann, muss er auch einen Validator-Client ausführen.

Als Ethereum noch Proof-of-Work verwendete, reichte ein Ausführungsclient aus, um einen vollständigen Ethereum-Knoten zu betreiben. Seit der Implementierung von Proof-of-Stake muss der Ausführungsclient jedoch zusammen mit einer weiteren Software, dem sogenannten Konsens-Client, verwendet werden.

Das folgende Diagramm zeigt die Beziehung zwischen den beiden Ethereum-Clients. Die beiden Clients verbinden sich mit ihren jeweils eigenen Peer-to-Peer-Netzwerken (P2P). Separate P2P-Netzwerke sind erforderlich, da die Ausführungsclients Transaktionen über ihr P2P-Netzwerk verbreiten (gossip), was es ihnen ermöglicht, ihren lokalen Transaktionspool zu verwalten, während die Konsens-Clients Blöcke über ihr P2P-Netzwerk verbreiten, was den Konsens und das Wachstum der Chain ermöglicht.

Diagram of Ethereum node architecture showing execution and consensus layers

Es gibt mehrere Optionen für den Ausführungsclient, darunter Erigon, Nethermind und Besu.

Damit diese Zwei-Client-Struktur funktioniert, müssen Konsens-Clients Bündel von Transaktionen an den Ausführungsclient weitergeben. Der Ausführungsclient führt die Transaktionen lokal aus, um zu validieren, dass die Transaktionen keine Ethereum-Regeln verletzen und dass die vorgeschlagene Aktualisierung des Zustands von Ethereum korrekt ist. Wenn ein Knoten als Blockproduzent ausgewählt wird, fordert seine Konsens-Client-Instanz Transaktionsbündel vom Ausführungsclient an, um sie in den neuen Block aufzunehmen und auszuführen, um den globalen Zustand zu aktualisieren. Der Konsens-Client steuert den Ausführungsclient über eine lokale RPC-Verbindung unter Verwendung der Engine-API (opens in a new tab).

Was macht der Ausführungsclient?

Der Ausführungsclient ist für die Validierung, Verarbeitung und Verbreitung von Transaktionen sowie für die Zustandsverwaltung und die Unterstützung der Ethereum Virtual Machine (EVM) verantwortlich. Er ist nicht für die Blockbildung, die Verbreitung von Blöcken oder die Verarbeitung der Konsenslogik verantwortlich. Diese fallen in den Aufgabenbereich des Konsens-Clients.

Der Ausführungsclient erstellt Ausführungs-Payloads – die Liste der Transaktionen, den aktualisierten Zustands-Trie und andere ausführungsbezogene Daten. Konsens-Clients fügen die Ausführungs-Payload in jeden Block ein. Der Ausführungsclient ist auch dafür verantwortlich, Transaktionen in neuen Blöcken erneut auszuführen, um sicherzustellen, dass sie gültig sind. Die Ausführung von Transaktionen erfolgt auf dem eingebetteten Computer des Ausführungsclients, der als Ethereum Virtual Machine (EVM) bekannt ist.

Der Ausführungsclient bietet auch eine Benutzeroberfläche für Ethereum über RPC-Methoden, die es Benutzern ermöglichen, die Ethereum-Blockchain abzufragen, Transaktionen einzureichen und Smart Contracts bereitzustellen. Es ist üblich, dass RPC-Aufrufe von einer Bibliothek wie Web3js (opens in a new tab), Web3py (opens in a new tab) oder von einer Benutzeroberfläche wie einer Browser-Wallet verarbeitet werden.

Zusammenfassend ist der Ausführungsclient:

  • ein Benutzer-Gateway zu Ethereum
  • das Zuhause der Ethereum Virtual Machine, des Zustands von Ethereum und des Transaktionspools.

Was macht der Konsens-Client?

Der Konsens-Client befasst sich mit der gesamten Logik, die es einem Knoten ermöglicht, mit dem Ethereum-Netzwerk synchronisiert zu bleiben. Dies umfasst den Empfang von Blöcken von Peers und die Ausführung eines Fork-Choice-Algorithmus, um sicherzustellen, dass der Knoten immer der Chain mit der größten Ansammlung von Bestätigungen (Attestations, gewichtet nach den effektiven Guthaben der Validatoren) folgt. Ähnlich wie der Ausführungsclient haben Konsens-Clients ihr eigenes P2P-Netzwerk, über das sie Blöcke und Bestätigungen teilen.

Der Konsens-Client beteiligt sich nicht an der Bestätigung oder dem Vorschlagen von Blöcken – dies wird von einem Validator durchgeführt, einem optionalen Add-on für einen Konsens-Client. Ein Konsens-Client ohne Validator hält nur mit der Spitze (Head) der Chain Schritt, sodass der Knoten synchronisiert bleibt. Dies ermöglicht es einem Benutzer, mit seinem Ausführungsclient Transaktionen auf Ethereum durchzuführen, in der Gewissheit, dass er sich auf der richtigen Chain befindet.

Validatoren

Durch Staking und das Ausführen der Validator-Software wird ein Knoten berechtigt, für den Vorschlag eines neuen Blocks ausgewählt zu werden. Knotenbetreiber können ihren Konsens-Clients einen Validator hinzufügen, indem sie 32 ETH in den Einzahlungsvertrag einzahlen. Der Validator-Client wird mit dem Konsens-Client gebündelt geliefert und kann einem Knoten jederzeit hinzugefügt werden. Der Validator verarbeitet Bestätigungen und Blockvorschläge. Er ermöglicht es einem Knoten auch, Belohnungen anzusammeln oder ETH durch Strafen oder Slashing zu verlieren.

Mehr zum Thema Staking.

Vergleich der Knotenkomponenten

AusführungsclientKonsens-ClientValidator
Verbreitet Transaktionen über sein P2P-NetzwerkVerbreitet Blöcke und Bestätigungen über sein P2P-NetzwerkSchlägt Blöcke vor
Führt Transaktionen aus/erneut ausFührt den Fork-Choice-Algorithmus ausSammelt Belohnungen/Strafen an
Verifiziert eingehende ZustandsänderungenVerfolgt die Spitze der ChainNimmt Bestätigungen vor
Verwaltet Zustands- und Quittungs-TriesVerwaltet den Beacon-Zustand (enthält Konsens- und Ausführungsinformationen)Erfordert das Staken von 32 ETH
Erstellt die Ausführungs-PayloadVerfolgt die angesammelte Zufälligkeit in RANDAO (ein Algorithmus, der überprüfbare Zufälligkeit für die Validator-Auswahl und andere Konsensoperationen bereitstellt)Kann von Slashing betroffen sein
Stellt eine JSON-RPC-API zur Interaktion mit Ethereum bereitVerfolgt die Rechtfertigung (Justification) und Finalisierung

Weiterführende Literatur