Errichten Sie Ihren eigenen Ethereum-Node
Letzte Änderung: @Astronaut828(opens in a new tab), 23. Juli 2024
Der Betrieb eines eigenen Nodes bietet Ihnen verschiedene Vorteile, eröffnet neue Möglichkeiten und trägt zur Unterstützung des Ökosystems bei. Diese Seite führt Sie durch die Einrichtung Ihres eigenen Nodes und die Teilnahme an der Validierung von Ethereum-Transaktionen.
Bitte beachten Sie, dass seit der Zusammenführung zwei Clients erforderlich sind, um einen Ethereum-Knoten zu betreiben; ein Client auf Ausführungsebene (EL) und ein Client auf Konsensebene (CL). Auf dieser Seite zeigen wir Ihnen die Installation, Konfiguration und Verbindung dieser beiden Clients, um einen Ethereum-Knoten zu betreiben.
Voraussetzungen
Sie sollten verstehen, was ein Ethereum-Knoten ist und warum Sie ggf. einen Client betreiben sollten. Dieses Thema wird unter Nodes und Clients behandelt.
Wenn das Thema neu für Sie ist oder Sie nach einem weniger technischen Weg suchen, empfehlen wir Ihnen, zunächst unsere benutzerfreundliche Einführung zum Betrieb eines Ethereum-Knotens zu lesen.
Herangehensweise bestimmen
Der erste Schritt beim Einrichten Ihres Knotens besteht in der Wahl der Herangehensweise. Auf der Grundlage der Anforderungen und der verschiedenen Möglichkeiten müssen Sie die Client-Implementierung (sowohl für Ausführungs- als auch für Konsensclients), die Umgebung (Hardware, System) und die Parameter für die Client-Einstellungen auswählen.
Diese Seite wird Sie dabei unterstützen, diese Entscheidungen zu treffen und die am besten geeignete Methode für den Betrieb Ihrer Ethereum-Instanz zu finden.
Um aus Client-Implementierungen auszuwählen, sehen Sie sich alle verfügbaren Mainnet-fähigen Ausführungsclients, Konsensclients an und erfahren Sie mehr über Client-Vielfalt.
Entscheiden Sie, ob Sie die Software auf Ihrer eigenen Hardware oder in der Cloud betreiben möchten und berücksichtigen Sie dabei die Anforderungen des Clients.
Nachdem Sie die Umgebung vorbereitet haben, installieren Sie die ausgewählten Clients entweder mit dereinsteigerfreundlichen Schnittstelle oder manuell über ein Terminal mit erweiterten Optionen.
Wenn Ihr Knoten ausgeführt wird und synchronisiert ist, können Sie diesen nutzen, Sie sollten jedoch die Wartung im Auge behalten.
Umgebung und Hardware
Lokal oder Cloud
Ethereum-Clients können auf gewöhnlichen Heim-Computern ausgeführt werden und benötigen keine spezielle Hardware, wie z. B. Mining-Maschinen. Sie haben also verschiedene Möglichkeiten, den Knoten je nach Ihren Bedürfnissen zu betreiben. Zur Vereinfachung stellen wir uns vor, dass ein Knoten sowohl auf einem lokalen physischen Computer als auch auf einem Cloud-Server ausgeführt werden kann:
- Cloud
- Anbieter bieten eine hohe Serververfügbarkeit und statische öffentliche IP-Adressen
- Ein dedizierter oder virtueller Server kann bequemer sein als ein eigener
- Die Gegenleistung ist das Vertrauen in eine dritte Partei – den Serveranbieter
- Aufgrund der erforderlichen Speichergröße für vollständige Knoten kann der Preis für einen gemieteten Server hoch sein
- Eigene Hardware
- Vertrauenslosere und souveränere Vorgehensweise
- Einmalige Investition
- Option zum Kauf vorkonfigurierter Maschinen
- Sie müssen den Rechner und das Netzwerk technisch vorbereiten, warten und möglicherweise Fehler beheben
Beide Optionen haben verschiedene Vorteile, die oben zusammengefasst sind. Wenn Sie eine Cloud-Lösung suchen, gibt es neben vielen traditionellen Cloud-Computing-Anbietern auch Dienste, die sich auf die Bereitstellung von Knoten konzentrieren. Unter Nodes als Dienste finden Sie weitere Optionen für gehostete Nodes.
Hardware
Ein zensurresistentes, dezentrales Netz sollte sich jedoch nicht auf Cloud-Anbieter verlassen. Stattdessen ist es für das Ökosystem gesünder, wenn Sie Ihren Node auf Ihrer eigenen lokalen Hardware betreiben. Schätzungen(opens in a new tab) zeigen, dass ein großer Teil der Knoten in der Cloud betrieben werden, was zu einer einzelnen Fehlerquelle führen kann.
Ethereum-Clients können auf Ihrem Computer, Laptop, Server oder sogar auf einem Einplatinencomputer ausgeführt werden. Es ist zwar möglich, Clients auf Ihrem Heimcomputer auszuführen, jedoch kann ein eigens für Ihren Knoten eingerichteter Rechner dessen Leistung und Sicherheit erheblich verbessern und gleichzeitig die Auswirkungen auf Ihren primären Computer minimieren.
Die Verwendung Ihrer eigenen Hardware kann sehr einfach sein. Es gibt viele einfache Optionen, aber auch fortgeschrittene Einstellungen für technisch versierte Personen. Schauen wir uns also die Voraussetzungen und Mittel für die Ausführung von Ethereum-Clients auf Ihrem Rechner an.
Voraussetzungen
Die Hardware-Anforderungen sind je nach Client unterschiedlich, aber im Allgemeinen nicht besonders hoch, da der Knoten nur synchronisiert bleiben muss. Verwechseln Sie das nicht mit dem Mining, das viel mehr Rechenleistung erfordert. Die Synchronisation von Zeit und Leistung verbessert sich jedoch mit leistungsstärkerer Hardware.
Bevor Sie einen Client installieren, stellen Sie bitte sicher, dass Ihr Computer über genügend Ressourcen verfügt, um ihn auszuführen. Im Folgenden finden Sie die Mindestanforderungen und die empfohlenen Voraussetzungen.
Der Engpass für Ihre Hardware ist meist der Speicherplatz. Die Synchronisierung der Ethereum-Blockchain ist sehr ein- und ausgabeintensiv und benötigt viel Speicherplatz. Am besten ist es, ein Solid-State-Laufwerk (SSD) mit Hunderten von GB freiem Speicherplatz zu haben, der selbst nach der Synchronisierung noch Speicherplatz zur Verfügung hat.
Die Größe der Datenbank und die Geschwindigkeit der anfänglichen Synchronisierung hängen vom gewählten Client, seiner Konfiguration und der Synchronisierungsstrategie ab.
Vergewissern Sie sich auch, dass Ihre Internetverbindung nicht durch eine Bandbreitenbeschränkung(opens in a new tab) begrenzt ist. Es wird empfohlen, eine nicht gebührenpflichtige Verbindung zu verwenden, da die anfängliche Synchronisierung und die an das Netzwerk übertragenen Daten Ihr Limit überschreiten könnten.
Betriebssystem
Alle Clients unterstützen die wichtigsten Betriebssysteme: Linux, MacOS, Windows. Das bedeutet, dass Ihre Knoten auf normalen Desktop- oder Server-Rechnern mit dem Betriebssystem (OS), welches Ihnen am besten passt, betrieben werden können. Stellen Sie sicher, dass Ihr Betriebssystem auf dem neuesten Stand ist, um mögliche Probleme und Sicherheitslücken zu vermeiden.
Mindestanforderungen
- CPU mit mind. 2 Kernen
- 8 GB RAM
- 2TB SSD
- Mind. 10 MBit/s Bandbreite
Empfohlene Spezifikationen
- Schnelle CPU mit mind. 4 Kernen
- Mind. 16 GB RAM
- Schnelle SSD mit mind. 2 TB
- Mind. 25 MBit/s Bandbreite
Der von Ihnen gewählte Synchronisierungsmodus und Client wirken sich auf den Speicherplatzbedarf aus, wir haben jedoch den Speicherplatz, den Sie für jeden Client benötigen, im Folgenden geschätzt.
Client | Festplattengröße (Snap-Synchronisation) | Festplattengröße (Vollständiges Archiv) |
---|---|---|
Besu | Mind. 800 GB | Mind. 12TB |
Erigon | N/V | Mind. 2,5 TB |
Geth | Mind. 500 GB | Mind. 12TB |
Nethermind | Mind. 500 GB | Mind. 12TB |
Reth | N/V | Über 2,2 TB |
- Hinweis: Erigon und Reth bieten keine Snap-Synchronisierung, aber vollständiges Pruning ist möglich (ca. 2 TB für Erigon, ca. 1,2 TB für Reth)
Bei Konsens-Clients hängt der Platzbedarf auch von der Client-Implementierung und den aktivierten Funktionen (z. B. Validator Slasher) ab, im Allgemeinen werden jedoch weitere 200 GB für Beacon-Daten benötigt. Mit einer großen Anzahl von Validatoren steigt auch die Bandbreitenbelastung. Details zu den Anforderungen an Konsensclients finden Sie in dieser Analyse(opens in a new tab).
Plug-and-Play-Lösungen
Die einfachste Möglichkeit, einen Knoten mit eigener Hardware zu betreiben, ist die Verwendung von Plug-and-Play-Modulen. Vorkonfigurierte Geräte von Anbietern bieten die unkomplizierteste Lösung: bestellen, anschließen, loslegen. Alles ist vorkonfiguriert und läuft automatisch mit einer intuitiven Anleitung und einem Dashboard zur Überwachung und Steuerung der Software.
Ethereum auf einem Einplatinenrechner
Eine einfache und kostengünstige Möglichkeit, einen Ethereum-Node zu betreiben, ist die Verwendung eines Einplatinenrechners, sogar mit einer ARM-Architektur wie dem Raspberry Pi. Ethereum on ARM(opens in a new tab) bietet einfach auszuführende Implementierungen von mehreren Ausführungs- und Konsensclients für Raspberry Pi und anderer ARM-Boards.
Kleine, kostengünstige und effiziente Geräte wie diese sind ideal für den Betrieb eines Knotens im eigenen Haushalt, doch sollte man ihre begrenzte Leistung nicht überschätzen.
Hochfahren des Nodes
Die eigentliche Client-Einrichtung kann entweder mit automatischen Startprogrammen (Launcher) oder manuell erfolgen, indem die Client-Software direkt eingerichtet wird.
Für weniger fortgeschrittene Benutzer empfiehlt sich die Verwendung eines „Launchers“, einer Software, die Sie durch die Installation führt und den Client-Einrichtungsprozess automatisiert. Wenn Sie jedoch etwas Erfahrung im Umgang mit einem Terminal haben, sollten die Schritte zur manuellen Einrichtung einfach zu befolgen sein.
Geführte Einrichtung
Mehrere benutzerfreundliche Projekte zielen darauf ab, die Erfahrungen bei der Einrichtung eines Kunden zu verbessern. Diese Launcher bieten eine automatische Client-Installation und -Konfiguration, wobei einige sogar eine grafische Oberfläche für die geführte Einrichtung und Überwachung der Clients bieten.
Im Folgenden finden Sie einige Projekte, mit denen Sie Clients mit wenigen Klicks installieren und steuern können:
- DappNode(opens in a new tab) – DappNode wird nicht nur mit einer Maschine von einem Anbieter bereitgestellt. Die Software, der eigentliche Node Launcher und das Kontrollzentrum mit vielen Funktionen kann auf beliebiger Hardware eingesetzt werden.
- eth-docker(opens in a new tab) – Automatisierte Einrichtung unter Verwendung von Docker mit Schwerpunkt auf einfachem und sicherem Staking, erfordert grundlegende Terminal- und Docker-Kenntnisse, empfohlen für etwas fortgeschrittenere Benutzer.
- Stereum(opens in a new tab) – Ein Launcher für die Installation von Clients auf einem Remote-Server über eine SSH-Verbindung mit einer GUI-Einrichtungsanleitung, einem Kontrollzentrum und vielen anderen Funktionen.
- NiceNode(opens in a new tab) – Ein Launcher mit einer einfachen Benutzerführung, um einen Node auf Ihrem Computer zu starten. Wählen Sie einfach Clients aus und starten Sie sie mit ein paar Klicks. Noch in der Entwicklung.
- Sedge(opens in a new tab) – Node-Einrichtungstool, das mit Hilfe eines CLI-Assistenten automatisch eine Docker-Konfiguration erstellt. Geschrieben in Go von Nethermind.
Manuelle Einrichtung von Clients
Die andere Möglichkeit besteht darin, die Client-Software manuell herunterzuladen, zu überprüfen und zu konfigurieren. Auch wenn einige Clients eine grafische Oberfläche bieten, erfordert eine manuelle Einrichtung immer noch Grundkenntnisse im Umgang mit dem Terminal, bietet aber viel mehr Möglichkeiten.
Wie bereits erläutert, muss für die Einrichtung Ihres eigenen Ethereum-Knotens ein Paar bestehend aus Konsens- und Ausführungsclients ausgeführt werden. Einige Clients können einen „leichten Client“ der alternativen Art enthalten und synchronisieren, ohne dass weitere Software erforderlich ist. Für eine vollständige vertrauenswürdige Überprüfung sind jedoch beide Implementierungen erforderlich.
Abrufen der Client-Software
Als erstes müssen Sie sich Ihre bevorzugte Software für den Ausführungsclient und Konsensclient beschaffen.
Sie können einfach eine ausführbare Anwendung oder ein Installationspaket herunterladen, das für Ihr Betriebssystem und Ihre Systemarchitektur geeignet ist. Überprüfen Sie immer die Signaturen und Prüfsummen der heruntergeladenen Pakete. Einige Clients bieten auch Repositories oder Docker-Abbildungen zur einfacheren Installation und Aktualisierung an. Alle Clients sind quelloffen, so dass Sie sie auch aus dem Quellcode erstellen können. Dies ist eine fortgeschrittenere Methode, jedoch kann sie in manchen Fällen erforderlich sein.
Anleitungen zur Installation der einzelnen Clients finden Sie in der Dokumentation, die in den Client-Listen oben verlinkt ist.
Dort finden Sie die Versionsseiten der Clients, auf denen Sie die vorgefertigten Binärdateien oder Anweisungen zur Installation finden können:
Clients auf Ausführungsebene
- Besu(opens in a new tab)
- Erigon(opens in a new tab)
- Geth(opens in a new tab)
- Nethermind(opens in a new tab)
- Reth(opens in a new tab)
Es sei auch erwähnet, dass die Client-Vielfalt ein Problem auf der Ausführungsebene darstellt. Den Lesern wird empfohlen, einen Minderheitenausführungsclient zu verwenden.
Konsens-Clients
- Lighthouse(opens in a new tab)
- Lodestar(opens in a new tab) (Bietet keine vorgefertigte Binärdatei, sondern nur eine Docker-Abbildung, die aus den Quelldateien erstellt werden muss)
- Nimbus(opens in a new tab)
- Prysm(opens in a new tab)
- Teku(opens in a new tab)
Client-Vielfalt ist entscheidend für Konsensknoten mit Validatoren. Wenn die Mehrheit der Validatoren eine einzelne Client-Implementierung ausführt, ist die Netzwerksicherheit gefährdet. Es wird daher empfohlen, einen Minderheits-Client zu wählen.
Informieren Sie sich über die aktuelle Nutzung von Netzwerkclients(opens in a new tab) und erfahren Sie mehr über Client-Vielfalt.
Verifizierung der Software
Beim Herunterladen von Software aus dem Internet wird empfohlen, deren Integrität zu überprüfen. Diese Maßnahme ist zwar freiwillig, aber gerade bei essenziellen Infrastrukturkomponenten wie dem Ethereum-Client ist es wichtig, mögliche Angriffsvektoren zu kennen und zu vermeiden. Sofern Sie eine vorgefertigte Binärdatei heruntergeladen haben, ist es erforderlich, darauf zu vertrauen und das damit verbundene Risiko einzugehen, dass ein Angreifer die ausführbare Datei gegen eine bösartige Variante austauschen könnte.
Entwickler signieren veröffentlichte Binärdateien mit ihren PGP-Schlüsseln, sodass Sie kryptografisch überprüfen können, dass Sie genau die von ihnen erstellte Software ausführen. Sie müssen lediglich die von den Entwicklern verwendeten öffentlichen Schlüssel erhalten, die auf den Client-Versionsseiten oder in der Dokumentation gefunden werden können. Nachdem Sie die Client-Version und ihre Signatur heruntergeladen haben, können Sie eine PGP-Implementierung wie z. B. GnuPG(opens in a new tab) verwenden, um sie problemlos zu verifizieren. Schauen Sie sich ein Tutorial zur Überprüfung von Open-Source-Software mit gpg
auf Linux(opens in a new tab) oder Windows/MacOS(opens in a new tab) an.
Eine weitere Form der Überprüfung besteht darin sicherzustellen, dass der Hash – ein eindeutiger kryptografischer Fingerabdruck – der heruntergeladenen Software mit dem vom Entwickler bereitgestellten übereinstimmt. Diese Vorgehensweise ist sogar unkomplizierter als die Verwendung von PGP, und bei einigen Programmen steht lediglich diese Option zur Verfügung. Führen Sie einfach die Hash-Funktion auf der heruntergeladenen Software aus und vergleichen Sie sie mit der auf der Veröffentlichungsseite angegebenen Funktion. Beispiel:
1sha256sum teku-22.6.1.tar.gz239b2f8c1f8d4dab0404ce70ea314ff4b3c77e9d27aff9d1e4c1933a5439767dde
Client-Setup
Nach der Installation, dem Herunterladen oder dem Kompilieren der Client-Software sind Sie bereit, sie auszuführen. Das bedeutet lediglich, dass es mit der richtigen Konfiguration ausgeführt werden muss. Die Clients bieten eine vielfältige Auswahl an Konfigurationsoptionen, die verschiedene Funktionen aktivieren können.
Lassen Sie uns mit den Optionen beginnen, die sich wesentlich auf die Leistung und die Datennutzung des Clients auswirken können. Synchronisierungsmodi stellen verschiedene Methoden zum Herunterladen und Validieren von Blockchain-Daten dar. Bevor Sie den Knoten starten, sollten Sie entscheiden, welchen Netzwerk- und Synchronisierungsmodus Sie verwenden möchten. Die wichtigsten Faktoren, die berücksichtigt werden müssen, sind der benötigte Festplattenspeicher und die Synchronisationszeit des Clients. Achten Sie auf die Dokumentation des Clients, um festzustellen, welcher Synchronisationsmodus standardmäßig verwendet wird. Wenn dies nicht geeignet ist, wählen Sie einen anderen Client basierend auf Sicherheitsniveau, verfügbaren Daten und Kosten. Neben dem Synchronisations-Algorithmus können Sie 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.
Weitere grundlegende Konfigurationsoptionen sind beispielsweise die Auswahl eines Netzwerks – Mainnet oder Testnetzwerke –, das Aktivieren eines HTTP-Endpunkts für RPC oder WebSockets, usw. Sämtliche Funktionen und Optionen finden Sie in der Dokumentation des Clients. Verschiedene Client-Konfigurationen können durch Ausführen des Clients mit den entsprechenden Flaggen direkt in der Befehlszeilenschnittstelle (CLI) oder der Konfigurationsdatei festgelegt werden. Jeder Client ist etwas anders; bitte konsultieren Sie immer die offizielle Dokumentation oder Hilfeseite für Details zu den Konfigurationsoptionen.
Zu Testzwecken sollten Sie einen Client in einem der Testnetzwerke betreiben. Siehe Übersicht der unterstützten Netzwerke.
Beispiele für laufende Ausführungsclients mit Grundkonfiguration finden Sie im nächsten Abschnitt.
Starten des Ausführungsclients
Bevor Sie die Ethereum-Client-Software starten, überprüfen Sie noch einmal, ob Ihre Systemumgebung bereit ist. Stellen Sie beispielsweise Folgendes sicher:
- Dass unter Berücksichtigung des gewählten Netzwerk- und Synchronisierungsmodus genügend Speicherplatz vorhanden ist.
- Dass Speicher und CPU nicht durch andere Programme angehalten werden.
- Dass das Betriebssystem über die neueste Version verfügt.
- Dass das System die richtige Uhrzeit und das richtige Datum anzeigt.
- Dass Ihr Router und Ihre Firewall Verbindungen an abhörenden Ports akzeptiert. Standardmäßig verwenden Ethereum-Clients einen Listener(TCP)-Port und einen Discovery(UDP)-Port, beide standardmäßig 30303.
Führen Sie Ihren Client zunächst in einem Testnetz aus, um sicherzustellen, dass alles korrekt funktioniert.
Sie müssen alle Client-Einstellungen, die nicht standardmäßig sind, zu Beginn angeben. Sie können Flags oder die Konfigurationsdatei verwenden, um Ihre bevorzugte Konfiguration anzugeben. Der Funktionsumfang und die Konfigurationssyntax jedes Clients unterscheiden sich. Schauen Sie sich die Dokumentation Ihres Clients für die Einzelheiten an.
Ausführungs- und Konsensclients kommunizieren über einen authentifizierten Endpunkt, der in der Engine-API(opens in a new tab) angegeben ist. Um sich mit einem Konsensclient zu verbinden, muss der Ausführungsclient einen jwtsecret
(opens in a new tab) in einem bekannten Pfad generieren. Aus Sicherheits- und Stabilitätsgründen sollten die Clients auf derselben Maschine ausgeführt werden, und beide Clients müssen diesen Pfad kennen, da dieser zur Authentifizierung einer lokalen RPC-Verbindung zwischen ihnen verwendet wird. Der Ausführungsclient muss auch einen Listening-Port für authentifizierte APIs festlegen.
Dieser Token wird automatisch von der Client-Software generiert, in manchen Fällen müssen Sie dies jedoch selbst tun. Sie können ihn mit OpenSSL(opens in a new tab) erzeugen:
1openssl rand -hex 32 > jwtsecret
Betreiben eines Ausführungsclients
Dieser Abschnitt führt Sie durch die Einrichtung eines Ausführungsclients. Er dient nur als Beispiel für eine Grundkonfiguration, mit der der Client entsprechend dieser Einstellungen gestartet wird:
- Gibt das Netzwerk an, mit dem eine Verbindung hergestellt werden soll – in unseren Beispielen Mainnet
- Sie können stattdessen eines der Testnetzwerke für erste Tests Ihrer Einrichtung wählen
- Festlegen des Datenverzeichnisses, in dem alle Daten, einschließlich der Blockchain, gespeichert werden sollen
- Stellen Sie sicher, dass Sie den Pfad durch einen echten Pfad ersetzen, der z. B. auf Ihr externes Laufwerk verweist
- Aktivieren von Schnittstellen für die Kommunikation mit dem Client
- Einschließlich JSON-RPC- und Engine-API für die Kommunikation mit dem Konsens-Client
- Festlegen des Pfads zu
jwtsecret
für authentifizierte API- Stellen Sie sicher, dass Sie den Beispielpfad durch einen echten Pfad ersetzen, auf den die Clients zugreifen können, z. B.
/tmp/jwtsecret
.
- Stellen Sie sicher, dass Sie den Beispielpfad durch einen echten Pfad ersetzen, auf den die Clients zugreifen können, z. B.
Bitte beachten Sie, dass dies nur ein einfaches Beispiel ist, alle anderen Einstellungen werden auf die Standardeinstellung gesetzt. Beachten Sie die Dokumentation der einzelnen Clients, um sich über standardmäßige Werte, Einstellungen und Funktionen zu informieren. Weitere Funktionen, z. B. zur Ausführung von Validatoren, zur Überwachung usw., finden Sie in der Dokumentation des jeweiligen Clients.
Beachten Sie, dass die Schrägstriche
\
in den Beispielen nur der Formatierung dienen; Konfigurations-Flags können in einer einzigen Zeile definiert werden.
Ausführen von Besu
Dieses Beispiel startet Besu im Mainnet, speichert Blockchain-Daten im Standardformat unter /data/ethereum
und aktiviert JSON-RPC und Engine RPC zur Verbindung mit dem Konsens-Client. Engine-API ist mit dem Token jwtsecret
authentifiziert und nur Aufrufe von localhost
sind erlaubt.
1besu --network=mainnet \2 --data-path=/data/ethereum \3 --rpc-http-enabled=true \4 --engine-rpc-enabled=true \5 --engine-host-allowlist="*" \6 --engine-jwt-enabled=true \7 --engine-jwt-secret=/path/to/jwtsecret
Besu verfügt auch über eine Startoption, die eine Reihe von Fragen stellt und die Konfigurationsdatei generiert. Starten Sie den interaktiven Launcher mit:
1besu --Xlauncher
Dokumentation von Besu(opens in a new tab) enthält zusätzliche Optionen und Konfigurationsdetails.
Ausführen von Erigon
Dieses Beispiel startet Erigon im Mainnet, speichert Blockchain-Daten unter /data/ethereum
, aktiviert JSON-RPC, definiert, welche Namespaces zulässig sind, und aktiviert die Authentifizierung für die Verbindung mit dem Konsens-Client, der durch den jwtsecret
-Pfad definiert ist.
1erigon --chain mainnet \2 --datadir /data/ethereum \3 --http --http.api=engine,eth,web3,net \4 --authrpc.jwtsecret=/path/to/jwtsecret
Erigon führt standardmäßig eine vollständige Synchronisierung mit einer 8 GB HDD-Festplatte durch, was zu mehr als 2 TB an Archivdaten führen wird. Stellen Sie sicher, dass datadir
auf eine Festplatte mit ausreichend freiem Speicherplatz verweist oder sehen Sie sich die --prune
-Flagge an, welche verschiedene Arten von Daten reduzieren kann. In der -Hilfe
von Erigon finden Sie weitere Informationen.
Ausführen von Geth
Dieses Beispiel startet Geth im Mainnet, speichert Blockchain-Daten unter /data/ethereum
, aktiviert JSON-RPC und definiert, welche Namespaces zulässig sind. Es ermöglicht auch die Authentifizierung für den Verbindungsaufbau zum Konsensclient, welcher den Pfad zu jwtsecret
benötigt, sowie eine Option, die festlegt, welche Verbindungen erlaubt sind; in unserem Beispiel nur von localhost
.
1geth --mainnet \2 --datadir "/data/ethereum" \3 --http --authrpc.addr localhost \4 --authrpc.vhosts="localhost" \5 --authrpc.port 85516 --authrpc.jwtsecret=/path/to/jwtsecret
Überprüfen Sie die Dokumentation für alle Konfigurationsoptionen(opens in a new tab) und erfahren Sie mehr über das Ausführen von Geth mit einem Konsensclient(opens in a new tab).
Ausführen von Nethermind
Nethermind bietet verschiedene Installationsoptionen(opens in a new tab). Das Paket enthält verschiedene Binärdateien, darunter einen Launcher mit einem geführten Setup, mit dem Sie die Konfiguration interaktiv erstellen können. Alternativ finden Sie Runner, das die ausführbare Datei selbst ist, und Sie können sie einfach mit Konfigurationsflaggen ausführen. JSON-RPC ist standardmäßig aktiviert.
1Nethermind.Runner --config mainnet \2 --datadir /data/ethereum \3 --JsonRpc.JwtSecretFile=/path/to/jwtsecret
Die Nethermind-Dokumente bieten eine vollständige Anleitung(opens in a new tab) zum Betrieb von Nethermind mit Konsensclients.
Ein Ausführungsclient initiiert seine Kernfunktionen, wählt Endpunkte und beginnt mit der Suche nach Peers. Nach erfolgreicher Erkennung von Peers beginnt der Client mit der Synchronisierung. Der Ausführungsclient wartet auf eine Verbindung vom Konsensclient. Die aktuellen Blockchain-Daten sind verfügbar, sobald der Client erfolgreich mit dem aktuellen Zustand synchronisiert wurde.
Reth ausführen
Dieses Beispiel startet Reth im Mainnet unter Verwendung des Standarddatenspeicherorts. Aktiviert die JSON-RPC- und Engine-RPC-Authentifizierung für die Verbindung mit dem Konsens-Client, der durch den jwtsecret
-Pfad definiert ist, wobei nur Aufrufe von localhost
zulässig sind.
1reth node \2 --authrpc.jwtsecret /path/to/jwtsecret \3 --authrpc.addr 127.0.0.1 \4 --authrpc.port 8551
Weitere Informationen zu Standarddatenverzeichnissen finden Sie unter Konfigurieren von Reth(opens in a new tab). Die Reth-Dokumentation(opens in a new tab) enthält zusätzliche Optionen und Konfigurationsdetails.
Starten des Konsensclients
Der Konsensclient muss mit der richtigen Port-Konfiguration gestartet werden, um eine lokale RPC-Verbindung zum Ausführungsclient herzustellen. Die Konsensclients müssen mit dem offengelegten Ausführungsclient-Port als Konfigurationsargument ausgeführt werden.
Der Konsensclient benötigt außerdem den Pfad zum jwt-secret
des Ausführungsclients, um die RPC-Verbindung zwischen ihnen zu authentifizieren. Ähnlich wie bei den obigen Ausführungsbeispielen verfügt jeder Konsensclient über ein Konfigurationsmerkmal, das den Pfad des jwt-Tokens als Argument annimmt. Dieser muss mit dem jwtsecret
-Pfad übereinstimmen, der dem Ausführungsclient mitgeteilt wurde.
Wenn Sie einen Validator betreiben möchten, fügen Sie unbedingt eine Konfigurationsflagge hinzu, die die Ethereum-Adresse des Gebührenempfängers angibt. Hier sammeln sich die Ether-Prämien für Ihren Validator. Jeder Konsensclient hat eine Option, z. B. --suggested-fee-recipient=0xabcd1
, die eine Ethereum-Adresse als Argument nimmt.
Wenn Sie eine Beacon Node in einem Testnetzwerk starten, können Sie viel Zeit bei der Synchronisierung sparen, indem Sie einen öffentlichen Endpunkt für die Kontrollpunkt-Synchronisation(opens in a new tab) verwenden.
Betrieb eines Konsensclients
Ausführen von Lighthouse
Bevor Sie Lighthouse ausführen, erfahren Sie mehr über die Installation und Konfiguration im Lighthouse Book(opens in a new tab).
1lighthouse beacon_node \2 --network mainnet \3 --datadir /data/ethereum \4 --http \5 --execution-endpoint http://127.0.0.1:8551 \6 --execution-jwt /path/to/jwtsecret
Ausführen von Lodestar
Installieren Sie die Lodestar-Software, indem Sie sie kompilieren oder das Docker-Abbild herunterladen. Weitere Informationen finden Sie in den Dokumenten(opens in a new tab) und im umfassenden Einrichtungsleitfaden(opens in a new tab).
1lodestar beacon \2 --rootDir="/data/ethereum" \3 --network=mainnet \4 --eth1.enabled=true \5 --execution.urls="http://127.0.0.1:8551" \6 --jwt-secret="/path/to/jwtsecret"
Ausführen von Nimbus
Nimbus wird sowohl mit Konsens- als auch mit Ausführungsclients geliefert. Es kann auf verschiedenen Geräten auch mit sehr bescheidener Rechenleistung ausgeführt werden. Nach der Installation von Abhängigkeiten und von Nimbus selbst(opens in a new tab) können Sie den Konsensclient starten:
1nimbus_beacon_node \2 --network=mainnet \3 --web3-url=http://127.0.0.1:8551 \4 --rest \5 --jwt-secret="/path/to/jwtsecret"
Ausführen von Prysm
Prysm wird mit einem Skript geliefert, das eine einfache automatische Installation ermöglicht. Einzelheiten sind in den Prysm-Dokumenten(opens in a new tab) zu finden.
1./prysm.sh beacon-chain \2 --mainnet \3 --datadir /data/ethereum \4 --execution-endpoint=http://localhost:8551 \5 --jwt-secret=/path/to/jwtsecret
Ausführen von Teku
1teku --network mainnet \2 --data-path "/data/ethereum" \3 --ee-endpoint http://localhost:8551 \4 --ee-jwt-secret-file "/path/to/jwtsecret"
Wenn sich ein Konsensclient mit dem Ausführungsclient verbindet, um den Einzahlungsvertrag zu lesen und die Validatoren zu identifizieren, verbindet er sich auch mit anderen Beacon Node-Peers und beginnt mit der Synchronisierung der Konsens-Slots ab der Genesis. Sobald der Beacon Node die aktuelle Epoche erreicht, wird die Beacon API für Ihre Validatoren nutzbar. Erfahren Sie mehr über Beacon Node APIs(opens in a new tab).
Hinzufügen von Validatoren
Ein Konsensclient dient als Beacon Node, mit dem sich Validatoren verbinden können. Jeder Konsensclient verfügt über eine eigene Validierungssoftware, die in der jeweiligen Dokumentation ausführlich beschrieben wird.
Der Betrieb eines eigenen Validators ermöglicht Solo-Staking, die wirkungsvollste und vertrauenswürdigste Methode zur Unterstützung des Ethereum-Netzwerks. Allerdings ist dafür eine Einzahlung von 32 ETH erforderlich. Um einen Validator auf einem eigenen Knoten mit einem kleineren Betrag zu betreiben, könnte ein dezentraler Pool mit erlaubnisfreien Node-Betreibern wie Rocket Pool(opens in a new tab) interessant sein.
Die einfachste Möglichkeit, mit Staking und der Generierung von Validator-Schlüsseln zu beginnen, ist die Verwendung des Holesky Testnet Staking Launchpad(opens in a new tab), mit dem Sie Ihr Setup testen können, indem Sie Nodes auf Holesky ausführen(opens in a new tab). Wenn Sie für das Mainnet bereit sind, können diese Schritte mit dem Mainnet Staking Launchpad(opens in a new tab) wiederholt werden.
Auf der Staking-Seite finden Sie einen Überblick über die Staking-Optionen.
Verwendung eines Knotens
Ausführungsclients bieten RPC-API-Endpunkte, mit denen Sie Transaktionen einreichen, mit dem Ethereum-Netzwerk interagieren oder Smart Contracts auf verschiedene Weise einsetzen können:
- Manueller Aufruf mit einem geeigneten Protokoll (z. B. mit
curl
) - Anhängen einer bereitgestellten Konsole (z. B.
geth attach
) - Implementierung in Applikationen mit web3-Bibliotheken, z. B. web3.py(opens in a new tab), ethers(opens in a new tab)
Verschiedene Clients verfügen über unterschiedliche Implementierungen der RPC-Endpunkte. Es gibt jedoch einen Standard-JSON-RPC, den Sie mit jedem Client verwenden können. Für einen Überblick lesen Sie die JSON-RPC-Dokumente. Anwendungen, die Informationen aus dem Ethereum-Netzwerk benötigen, können diesen RPC verwenden. Mit der beliebten Wallet MetaMask können Sie zum Beispiel eine Verbindung zu Ihrem eigenen RPC-Endpunkt herstellen(opens in a new tab), was erhebliche Vorteile für den Datenschutz und die Sicherheit mit sich bringt.
Die Konsensclients stellen alle eine Beacon API(opens in a new tab) zur Verfügung, die verwendet werden kann, um den Status des Konsensclients zu überprüfen oder Blöcke und Konsensdaten herunterzuladen, indem Anfragen mit Tools wie Curl(opens in a new tab) gesendet werden. Weitere Informationen hierzu finden Sie in der Dokumentation des jeweiligen Konsensclients.
Weitere Informationen hierzu finden Sie in der Dokumentation des jeweiligen Konsensclients.
Der Standardport für den Ausführungsclient JSON-RPC ist 8545
, Sie können jedoch die Ports der lokalen Endpunkte in der Konfiguration ändern. Standardmäßig ist die RPC-Schnittstelle nur über den localhost Ihres Computers erreichbar. Um sie aus der Ferne zugänglich zu machen, können Sie sie der Öffentlichkeit präsentieren, indem Sie die Adresse zu 0.0.0.0
ändern. Hierdurch wird sie über das lokale Netz und öffentliche IP-Adressen erreichbar. In den meisten Fällen müssen Sie außerdem eine Portweiterleitung auf Ihrem Router einrichten.
Die Freigabe von Ports für das Internet ist mit Vorsicht zu genießen, da hierdurch jeder im Internet Ihren Knoten kontrollieren kann. Böswillige Akteure könnten auf Ihren Knoten zugreifen, um Ihr System zum Absturz zu bringen oder Ihr Geld zu stehlen, wenn Sie Ihren Client als Wallet verwenden.
Eine Möglichkeit, dies zu umgehen, besteht darin zu verhindern, dass potenziell schädliche RPC-Methoden geändert werden können. Mit Geth können Sie zum Beispiel veränderbare Methoden mit einer Flag deklarieren: --http.api web3,eth,txpool
.
Der Zugriff auf die RPC-Schnittstelle kann durch die Entwicklung von Edge-Layer-APIs oder Webserver-Anwendungen wie Nginx und deren Verbindung mit der lokalen Adresse und dem Port Ihres Clients erweitert werden. Die Nutzung einer Middle-Layer kann Entwicklern auch die Möglichkeit geben, ein Zertifikat für sichere https
-Verbindungen zur RPC-Schnittstelle einzurichten.
Die Einrichtung eines Webservers, eines Proxys oder einer nach außen gerichteten Rest-API ist nicht die einzige Möglichkeit, den Zugriff auf den RPC-Endpunkt Ihrer Node zu ermöglichen. Eine andere datenschutzfreundliche Möglichkeit, einen öffentlich erreichbaren Endpunkt einzurichten, ist das Hosten des Knotens auf einem eigenen Tor(opens in a new tab)-Onion-Dienst. Auf diese Weise können Sie den RPC außerhalb Ihres lokalen Netzes erreichen, ohne eine statische öffentliche IP-Adresse oder geöffnete Ports. Bei dieser Konfiguration kann der RPC-Endpunkt jedoch nur über das Tor-Netzwerk erreichbar sein, was nicht von allen Anwendungen unterstützt wird und zu Verbindungsproblemen führen kann.
Dazu müssen Sie Ihren eigenen Onion-Service(opens in a new tab) erstellen. Schauen Sie sich die Dokumentation(opens in a new tab) über die Einrichtung des Onion-Services an, um Ihren eigenen zu hosten. Sie können ihn auf einen Webserver mit Proxy zum RPC-Port oder direkt auf den RPC verweisen.
Eine der beliebtesten Möglichkeiten, Zugang zu internen Netzen zu erhalten, ist schließlich eine VPN-Verbindung. Je nach Anwendungsfall und der Anzahl der Benutzer, die Zugang zu Ihrem Knoten benötigen, könnte eine sichere VPN-Verbindung eine Option sein. OpenVPN(opens in a new tab) ist ein SSL-VPN mit vollem Funktionsumfang, das eine sichere Netzwerkerweiterung auf OSI-Ebene 2 oder 3 unter Verwendung des Branchenstandards SSL/TLS-Protokoll implementiert, flexible Client-Authentifizierungsmethoden auf der Grundlage von Zertifikaten, Smartcards und/oder Benutzername/Passwort-Anmeldeinformationen unterstützt und benutzer- oder gruppenspezifische Zugriffskontrollrichtlinien unter Verwendung von Firewall-Regeln für die virtuelle VPN-Schnittstelle ermöglicht.
Betreiben des Knotens
Sie sollten Ihren Knoten regelmäßig überwachen, um sicherzustellen, dass er ordnungsgemäß funktioniert. Möglicherweise müssen Sie gelegentlich Wartungsarbeiten durchführen.
Eine Node online lassen
Ihr Knoten muss nicht die ganze Zeit online sein, Sie sollten ihn jedoch so oft wie möglich online lassen, damit er sich mit dem Netzwerk synchronisieren kann. Sie können ihn ausschalten, um ihn neu zu starten, bedenken Sie jedoch Folgendes:
- Das Herunterfahren kann einige Minuten dauern, wenn der aktuelle Status noch auf die Festplatte geschrieben wird.
- Erzwungene Abschaltungen können die Datenbank beschädigen, so dass Sie den gesamten Knoten neu synchronisieren müssen.
- Ihr Client wird nicht mehr mit dem Netzwerk synchronisiert und muss neu synchronisiert werden, wenn Sie ihn neu starten. Die Synchronisation des Knotens kann zwar an dem Punkt beginnen, an dem er zuletzt heruntergefahren wurde, aber je nachdem, wie lange er offline war, kann der Prozess einige Zeit dauern.
Dies gilt nicht für Validierungsknoten auf Konsensebene. Wenn Sie Ihren Knoten offline schalten, wirkt sich dies auf alle von ihm abhängigen Dienste aus. Wenn Sie einen Node für Sicherungszwecke betreiben, sollten Sie versuchen, die Ausfallzeiten so gering wie möglich zu halten.
Erstellung von Client-Diensten
Erwägen Sie die Einrichtung eines Dienstes, der Ihren Client automatisch beim Start ausführt. Auf Linux-Servern wäre es zum Beispiel eine gute Praxis, einen Dienst zu erstellen, z. B. mit systemd
, der den Client mit der richtigen Konfiguration unter einem Benutzer mit begrenzten Rechten ausführt und automatisch neu startet.
Aktualisieren von Clients
Sie müssen Ihre Client-Software mit den neuesten Sicherheitspatches, Funktionen und EIPs auf dem neuesten Stand halten. Besonders vor Hard Forks sollten Sie sicherstellen, dass Sie die richtigen Client-Versionen verwenden.
Vor wichtigen Netzwerk-Updates veröffentlicht EF einen Beitrag in seinem Blog(opens in a new tab). Sie können diese Ankündigungen abonnieren(opens in a new tab), um eine Benachrichtigung per E-Mail zu erhalten, wenn Ihr Node eine Aktualisierung benötigt.
Die Aktualisierung der Clients ist sehr einfach. Jeder Client hat spezifische Anweisungen in seiner Dokumentation, im Allgemeinen besteht das Verfahren jedoch nur darin, die neueste Version herunterzuladen und den Client mit der neuen ausführbaren Datei neu zu starten. Der Client sollte dort weitermachen, wo er aufgehört hat, jedoch mit den vorgenommenen Aktualisierungen.
Jede Client-Implementierung hat eine von Menschen lesbare Versionszeichenfolge, die im Peer-to-Peer-Protokoll verwendet wird, aber auch über die Befehlszeile zugänglich ist. Anhand dieses Versionsstrings können die Nutzer überprüfen, ob sie die richtige Version verwenden. Außerdem ermöglicht er es Blockexplorern und anderen Analysewerkzeugen eine quantitative Analyse der Verteilung bestimmter Clients im Netz. Weitere Informationen zu den Versionsstrings finden Sie in der jeweiligen Client-Dokumentation.
Ausführung zusätzlicher Dienste
Wenn Sie einen eigenen Knoten betreiben, können Sie Dienste nutzen, die einen direkten Zugang zum Ethereum-Client-RPC erfordern. Dabei handelt es sich um Dienste, die auf Ethereum aufbauen, wie Layer-2-Lösungen, Backend für Wallets, Block-Explorer, Entwicklertools und andere Ethereum-Infrastruktur.
Überwachung des Knotens
Um Ihren Knoten ordnungsgemäß zu überwachen, sollten Sie Metriken sammeln. Clients stellen Metrik-Endpunkte bereit, damit Sie umfassende Daten über Ihren Knoten erhalten können. Verwenden Sie Tools wie InfluxDB(opens in a new tab) oder Prometheus(opens in a new tab), um Datenbanken zu erstellen, die Sie in Software wie Grafana(opens in a new tab) in Visualisierungen und Diagramme umwandeln können. Es gibt viele Setups für die Verwendung dieser Software und verschiedene Grafana-Dashboards, mit denen Sie Ihre Knoten und das Netzwerk als Ganzes visualisieren können. Sehen Sie sich zum Beispiel das Tutorial zur Überwachung von Geth an.
Behalten Sie im Rahmen der Überwachung auch die Leistung Ihres Rechners im Auge. Während der ersten Synchronisierung Ihres Knotens kann die Client-Software sehr viel CPU und RAM beanspruchen. Zusätzlich zu Grafana können Sie dafür die Tools Ihres Betriebssystems wie htop
oder uptime
verwenden.
Weiterführende Informationen
- Leitfaden für Ethereum Staking(opens in a new tab) - Somer Esat, häufig aktualisiert
- Anleitung | Einrichtung eines Validators für das Staken auf dem Ethereum Mainnet(opens in a new tab) - CoinCashew, regelmäßig aktualisiert
- ETHStaker-Anleitungen zum Ausführen von Validatoren in Testnetzwerken(opens in a new tab) - ETHStaker, regelmäßig aktualisiert
- FAQ zur Zusammenführung für Knotenbetreiber(opens in a new tab) - Juli 2022
- Analyzing the hardware requirements to be an Ethereum full validated node(opens in a new tab) – Albert Palau, 24. September 2018
- Running Ethereum Full Nodes: A Guide for the Barely Motivated(opens in a new tab) – Justin Leroux, 7. November 2019
- Running a Hyperledger Besu Node on the Ethereum Mainnet: Benefits, Requirements, and Setup(opens in a new tab) – Felipe Faraggi, 7. Mai 2020
- Deploying Nethermind Ethereum Client with Monitoring Stack(opens in a new tab) – Nethermind.eth, 8. Juli 2020