Nethermind, Geth und Co. – Die bekanntesten Ethereum-Clients im Überblick
Um einen Ethereum-Knoten zu betreiben, ist ein Client notwendig, der sich mit dem Ethereum-Netzwerk verbinden kann. Zu den bekannten Clients gehören unter anderem Nethermind, Geth und Nimbus.
Ebenfalls bekannt sind OpenEthereum (ehemals Parity), Teku und Hyperledger Besu oder Burrow, aber auch Lighthouse und Prysm. In diesem Beitrag geben wir einen Überblick zu den Clients und zeigen, für welche Einsatzgebiete diese sinnvoll sind.
Mittlerweile gehört Hyperledger Besu zu den bekanntesten Ethereum-Clients von Drittherstellern und kommt vor allem bei Unternehmen zum Einsatz.
Vor allem in Unternehmen, die neben Ethereum auch auf Hyperledger Fabric setzen, ist Hyperledger Besu sicherlich ein interessantes Werkzeug, das einen Blick wert ist.
Wie die anderen Clients in diesem Beitrag steht auch Hyperledger Besu als Open Source zur Verfügung.
Das ist bei Ethereum-Clients wichtig
Ethereum-Knoten verifizieren, speichern und erstellen Blöcke in der Ethereum-Blockchain. Die eigentliche Software wird als „Client“ bezeichnet.
Es gibt auch Clients, die nicht den Aufbau eines vollständigen Ethereum-Knotens im Fokus haben, sondern zum Beispiel nur die Verwendung von Smart Contracts, ein solcher Client ist Hyperledger Burrow. Auch auf diesen gehen wir nachfolgend ein.
Clients können über eine JSON-RPC-API mit der Blockchain interagieren und auch Smart Contracts lesen und schreiben. Mehr zu Smart Contracts ist auch im Beitrag „11 Einsatzgebiete für Ethereum Smart Contracts“ zu finden.
Generell gilt für alle Clients, dass diese über eine möglichst hohe IO verfügen sollten. Beim Betrieb im eigenen Netzwerk ist es sinnvoll auf eine SSD oder NVMe mit genügend Speicherkapazität zu setzen, damit die Schreib- und Lesegeschwindigkeit möglichst hoch ist.
Oft benötigt eine Blockchain-Datenbank mehr Speicherplatz als angegeben, da Synchronisierungsvorgänge mehr Daten speichern, als angegeben.
Für den dauerhaften Betrieb eines leistungsstarken Knotens sind schnell mehrere Terabyte notwendig, unter 300 GB Speicherplatz macht der Betrieb eines Ethereum-Knotens keinen Spaß.
Das gilt für alle Clients, die wir in diesem Beitrag vorstellen. Dazu kommt ein Computer mit mindestens 16 GB Arbeitsspeicher, besser deutlich mehr.
Auch die Internetleitung muss möglichst schnell sein, da nur dadurch die Synchronisierung dauerhaft in angemessener Leistung zur Verfügung steht.
Vorsicht vor veralteten Clients
Es gibt eine Vielzahl an Projekten, die Ethereum-Clients entwickeln. Allerdings passiert es regelmäßig, dass Clients eingestellt oder länger nicht mehr weiterentwickelt werden.
Vor der Implementation eines Clients ist es sinnvoll, sich zunächst die GitHub-Seite des jeweiligen Projektes anzuschauen. Die meisten Clients sind Open Source und der Quellcode sowie die Installationsdateien stehen auf GitHub zur Verfügung.
Hier ist auch zu sehen, wann die letzten Aktionen und neue Versionen für ein Projekt waren. Projekte, die über ein Jahr nicht mehr weiterentwickelt wurden, und eher unbekannt sind, sollten nicht mehr eingesetzt werden.
Spätestens dann, wenn ein Projekt als „Deprecated“ oder „No longer maintained or developed“ bezeichnet und nicht mehr gewartet wird, sollte es nicht mehr zum Einsatz kommen.
Natürlich kann es auch aktuellen Clients passieren, dass diese irgendwann eingestellt werden. Wer aber bereits absehen kann, dass ein Projekt anscheinend nicht mehr aktuell ist, sollte besser auf einen anderen Client setzen.
Nethermind, Geth und Hyperledger Besu gehören zu den Clients, bei denen es am wahrscheinlichsten ist, dass diese auch in Zukunft noch weiter entwickelt werden.
Diese drei Clients sollten sich Anwender daher als Erstes ansehen. Aber auch kleinere Projekte haben ihre Berechtigung und sind einen Blick wert.
Nethermind – Der Ethereum-Turbo
Nethermind gehört, parallel zu Geth, zu den bekanntesten Ethereum-Clients. Die Lösung ist Open Source und besteht hauptsächlich aus einer .NET-Core-Implementierung eines vollständigen Ethereum-Knotens.
Für den Betrieb ist auf dem Rechner .NET 5.x notwendig. Wer sich tiefgehender mit dem Client auseinandersetzen will, kann das mit dem .NET SDK tun.
Der Betrieb des Clients kann auf leistungsfähiger Hardware und auch über einen Container erfolgen. Das dazu notwendige Image steht im Docker Hub zum Download bereit:
docker pull nethermind/nethermind
Die meisten Blockchain-Apps stehen auch als Container-Image zur Verfügung. Es ist grundsätzlich empfehlenswert für Miner und Entwickler sich mit Docker auseinanderzusetzen, da mit dieser Lösung einzelne Apps und Programme sehr schnell zum Einsatz kommen können.
Nethermind gilt als einer der schnellsten Ethereum-Clients, der am wenigsten Zeit für die Synchronisierung benötigt. Neben der Verbindung zum Mainnet unterstützt Nethermind auch Goerli, Rinkeby, Ropsten, Kovan, xDai, Sokol und Volta.
Es ist also kein Problem, Nethermind in öffentlichen und privaten Netzwerken zu betreiben. Als Betriebssystem kann Windows, Linux oder macOS zum Einsatz kommen, auch das gilt für die meisten anderen Ethereum-Clients gleichsam.
Auf GitHub stellen die Entwickler Anleitungen zur Installation und den Betrieb zur Verfügung.
Der Start des Knotens ist grundsätzlich sehr einfach. Nach dem Start der ausführbaren Datei, zum Beispiel in Windows, startet ein Assistent über den alle notwendigen Einstellungen abgefragt werden.
Hier kann gesteuert werden, mit welchem Netzwerk der Client eine Verbindung aufbauen soll und welche Verbindungsdaten dabei eine Rolle spielen. Nethermind gehört zu den Clients, die am schnellsten im Einsatz sind.
Für Nethermind gilt, was generell für alle Blockchain-Knoten gilt: Ohne Firewall sollten diese nicht betrieben werden. Am Beispiel von Nethermind sollte der Port für die Verwaltung des Knotens nur für vertrauenswürdige Clients geöffnet werden.
Hier kommen oft Ports zwischen 8000 und 9000 zum Einsatz. Damit der Knoten aber mit anderen Ethereum-Clients kommunizieren kann, sollten die Ports für die Kommunikation offenbleiben, zum Beispiel TCP/UDP 30300-30400.
Beim Einsatz in Windows erscheinen Meldungen der Windows Defender-Firewall. Kommt die Software auf Linux oder macOS zum Einsatz, muss der Zugriff für die erfolgreiche Verbindung im Vorfeld gesteuert werden.
Viele Anwender nutzen beim Einsatz von Nethermind die schnelle Synchronisierung. Diese Synchronisierung versetzt den Knoten schnellstmöglich in einen produktiven Zustand.
Bei der schnellen Synchronisierung lädt der Client den neuesten Stand der Blockchain, Header und optional Body und Quittungen herunter.
Welche Synchronisierung zum Einsatz kommen soll, lässt sich über den Assistenten zum Start des Knotens bereits auswählen.
Go Ethereum – Geth
Go Ethereum gehört zu den bekanntesten Clients für Ethereum. Der Go-Client steht ebenfalls als Open Source zur Verfügung.
Dieser Client kommt oft zum Einsatz, wenn für Mining-Tools wie Ethminer eine lokale Synchronisierung der Ethereum-Blockchain notwendig ist.
Der Vorteil von Geth ist die schnelle Installation und Inbetriebnahme für Mining-Clients, aber auch für vollwertige Knoten in der Ethereum-Blockchain.
Neben Windows, Linux und macOS kann der Client auch in FreeBSD zum Einsatz kommen. Auch der obligatorische Betrieb als Docker-Container ist möglich.
Ebenso hier steht das Image auf dem Docker Hub zur Verfügung. Der Download und Start erfolgt in diesem Fall über:
docker pull ethereum/client-go
docker run -it -p 30303:30303 ethereum/client-go
Der Knoten mit Geth kann durch das einfache Starten der ausführbaren Datei aktiviert werden. Natürlich bietet auch die Geth-Cli zahlreiche Optionen zum Start eines Knotens.
Parity/OpenEthereum
Der Ethereum 1.0-Client Parity wurde von den Entwicklern zu OpenEthereum umbenannt. Der Client ist in Rust geschrieben und steht ebenfalls als Open Source zur Verfügung.
Auch die Entwickler dieses Clients fokussieren sich auf Sicherheit und einen leichtgewichtigen Umgang mit den Ressourcen der Knoten.
Der Client startet einen JSON-RPC HTTP-Server auf Port 8545 und einen Web-Sockets-Server auf Port 8546. Die beiden Server lassen sich an die eigenen Anforderungen anpassen.
Auch wenn der Client möglichst ressourcensparend sein soll, muss die Hardware einiges an Leistung mit sich bringen.
Das Herunterladen der Blockchain und der Validierungsprozess beanspruchen viel CPU-Last und Festplatten-IO. Der Computer sollte also mit einer Multi-Core-CPU, 8 GB RAM (besser mehr) und einem SSD mit mindestens 400 GB freiem Speicherplatz ausgestattet sein.
Dazu kommt die Notwendigkeit einer schnellen Internetleitung. Wie die meisten Clients auch, kann OpenEthereum in Windows, Linux, macOS und auch als Container genutzt werden.
Clients für Ethereum 2.0 – Lighthouse
Auf dem Weg zu Ethereum 2.0 findet bei Ethereum auch der Umstieg zum Konsensalgorithmus Proof-of-Stake (PoS) statt.
Hier sollte natürlich auch darauf geachtet werden, dass der eingesetzte Client nicht nur den bisher eingesetzten Algorithmus Proof-of-Work (PoW) unterstützt, sondern auch den PoS-Algorithmus.
Die Open-Source-Software Lighthouse ist ein solcher Client. Der Client ist in Rust geschrieben und für Ethereum 2.0 optimiert.
Der Client wird durch verschiedene Unternehmen und Organisationen unterstützt, unter anderem Sigma Prime, die Ethereum Foundation, ConsenSys und die Decentralization Foundation.
Im Fokus des neuen Clients steht die sichere Verbindung und hohe Leistung. Diese beiden Punkte sind für den Einsatz in der Blockchain enorm wichtig und sollten beim Einsatz mit Eth2 natürlich auf dem neusten Stand der Technik sein.
Prysm – Ein Go-Ethereum 2.0-Client
Auch bei Prysm handelt es sich um einen Client für Ethereum 2.0. Der Client ist in Go programmiert. Der Prysm-Client soll als Gegenstück zum Go-Client Geth in Ethereum 2.0 fungieren.
Teku – Ethereum 2.0-Client von ConsenSys
Teku ist ein vollständiger Ethereum 2.0-Client, der von ConsenSys entwickelt und bereitgestellt wird. Geschrieben ist der Client in Java. Er unterstützt Staking.
Der Client wird vom gleichen Team betreut, das sich auch um den Hyperledger Besu-Client kümmert. Teku umfasst eine vollständige Beacon-Knoten-Implementierung und einen Validator-Client.
Die Installation von Teku erfolgt entweder über die Binärdateien oder per Docker-Image. Die Inbetriebnahme als Docker-Installation erfolgt mit:
docker run consensys/teku:latest –help
Nimbus – Der Leichtgewichtige
Nimbus ist ein Client für Ethereum 2.0 und für Ethereum 1.0. Der Client wird vor allem für den effektiven Umgang mit den Ressourcen des Knotens optimiert.
Der ressourcenschonende Betrieb spielt natürlich für Blockchains eine immer wichtigere Rolle, da sich dadurch der CO₂-Fußabdruck der Knoten deutlich senken lässt.
Ein weiterer Vorteil für den ressourcensparenden Umgang mit der Hardware ist, dass der Betrieb von Ethereum-Knoten auch auf langsamerer Hardware mit hoher Leistung erfolgen kann.
Nimbus lässt sich unter anderem problemlos auch auf Raspberry PI-Geräten betreiben. Das gilt zwar auch für viele andere Ethereum-Clients, Nimbus wird für diesen Betrieb aber optimiert.
Nimbus kann aktuell bereits an die Eth2-Blockchain angebunden werden und auch als Validator bei Eth2 zum Einsatz kommen.
Lodestar – JavaScript- und TrueScript-Client für Ethereum 2.0
Lodestar ist ein weiterer Ethereum 2.0-Client. Der Client ist in JavaScript/TypeScript geschrieben. Lodestar wird von ChainSafe entwickelt und kann als Light-Client zum Einsatz kommen.
Durch die Entwicklung in TrueScript lässt sich der Client schnell und einfach in bestehende Umgebungen einbinden. Dazu stellen die Entwickler auch zahlreich Bibliotheken für die Entwicklung zur Verfügung.
Hyperledger Besu als Ethereum-Client nutzen
Einer der bekanntesten Ethereum-Clients von Drittherstellern ist Hyperledger Besu. Die Hyperledger Foundation ist Mitglied bei der Enterprise Ethereum Alliance (EEA) und auch die EEA ist Mitglied bei der Hyperledger Foundation.
Die beiden Organisationen arbeiten eng zusammen und haben bereits den Ethereum-Client Besu zusammen entwickelt.
Auch dieser Client steht als Open Source zur Verfügung. Neben der Unterstützung für das Mainnet, kann der Client auch an andere Netzwerke angebunden werden, auch an die verschiedenen Testnetzwerke Rinkeby, Ropsten und Goerli.
Besu unterstützt Proof of Work (Ethash) und Proof of Authority (IBFT 2.0, Clique und QBFT) als Konsensmechanismus.
Im Fokus von Hyperledger Besu stehen Unternehmensanwendungen, die auf Ethereum als Blockchain setzen, und unter Umständen auch Hyperledger Fabric parallel einsetzen.
Besu unterstützt verschiedene Sicherheitstechnologien und bietet auch eine Berechtigungsinfrastruktur. Wir haben im Beitrag „Hyperledger Besu festigt Position als Standard Ethereum-Client“ einen Überblick zu den Möglichkeiten von Besu gegeben.
Besu enthält eine Befehlszeilenschnittstelle und eine JSON-RPC-API für die Verbindung zur Ethereum-Blockchain. Der Besu-Client unterstützt aktuelle Smart Contract- und DApp-Entwicklungs-Entwicklungen.
Die Software bietet JSON-RPC-API-Methoden (eth, net, web3, debug und miner).
Beim Betrieb von Blockchain-Anwendungen spielen Benchmarks eine wichtige Rolle, zum Beispiel auch für optimal ablaufende Smart Contract-Workflows.
Hyperledger Caliper kann mit Hyperledger Fabric 1.x und 2.x verwendet werden. Auch Hyperledger Besu, Ethereum und FISCO BCOS können mit Caliper gemessen werden.
Natürlich gilt das auch für Blockchains und die darin betriebenen Apps. Auch hier müssen die integrierten Programme möglichst schnell und ressourcenschonend arbeiten.
Bei der Leistungsmessung helfen Tools, die zeigen, ob ein Programm in irgendeinem Bereich Leistungsprobleme hat, die für einen optimalen Betrieb behoben werden müssen.
Das ist der Sinn hinter Hyperledger Caliper. Hierbei handelt es sich um ein Tool, das dabei helfen kann, Leistungsmessungen in Blockchain-Netzwerken und den darin integrierten Apps durchzuführen.
Als Ergebnisse erhalten Entwickler und Administratoren Informationen, wie die Leistung verbessert werden kann. Das spielt für eigene Ethereum-Knoten natürlich durchaus eine Rolle.
Alternative: Smart Contracts mit Hyperledger Burrow
Bei Hyperledger Burrow handelt es sich um einen Ethereum-Client, der ebenfalls von Hyperledger entwickelt wird. Hyperledger Burrow steht als Open Source zur Verfügung. Der Code kann auf GitHub heruntergeladen werden.
Mit Hyperledger Burrow lassen sich Smart Contracts mit der Ethereum Virtual Machine erstellen. Das ist auch der Fokus von Burrow. Das Tool unterstützt auch WASM.
Mit dieser Lösung lassen sich Ethereum-basierte Smart Contracts mit Hyperledger-Technologien nutzen.
Hyperledger Burrow ermöglicht den Betrieb eines eigenen Ethereum-Knotens. Burrow ist aber kein vollständiger Ethereum-Mainnet-Client.
Die Software ermöglicht für private Netzwerke den Betrieb einer eigenen Blockchain als Sidechain zum öffentlichen Ethereum-Mainnet.
Der Sinn der Software ist vor allem der Betrieb von selbst entwickelten Smart Contracts, nicht die Installation eines vollwertigen Ethereum-Knotens.
Burrow unterstützt auch die Smart Contract-Programmiersprache Solidity. Die Software arbeitet auch mit Web Assembly (WASM) zusammen.
Wer Burrow als Docker Container betreiben will, kann das Image aus dem Dockerhub mit dem Befehl „docker pull hyperledger/burrow“ herunterladen.