Eigenen Avalanche-Node in Go betreiben und die Netzwerkarchitektur verstehen

Einens Ethereum- oder Bitcoin-Node von Grund auf einzurichten, ist keine schnelle Aufgabe. Sie müssen Hunderte von Gigabytes an Daten herunterladen und Wochen auf die Synchronisierung warten. Die Avalanche-Entwickler verfolgen einen etwas anderen Ansatz, auch wenn Sie immer noch keinen Spaziergang erwarten sollten.
Die offizielle Avalanche-Netzwerk-Node-Implementierung in Go ist im avalanchego-Repository verfügbar. Dies ist die Kernkomponente der gesamten Projektinfrastruktur. Ohne sie können Sie keinen Validator betreiben oder ein privates Testnetzwerk bereitstellen.
Was Sie für den Einstieg benötigen
Entwickler bezeichnen die Hardware-Anforderungen als bescheiden, aber die Zahlen in der README sprechen eine andere Sprache. Für den Mainnet-Betrieb benötigen Sie:
- 8 vCPU
- 16 GB RAM
- 1 TB freien Festplattenspeicher
- Ubuntu (22.04/24.04) oder macOS 12+
Der Hauptengpass während des ersten Starts tritt in der Bootstrapping-Phase auf. Der Node lädt den Netzwerkverlauf herunter und verifiziert den Zustand. Dieser Prozess dauert mehrere Tage. Die Hauptbeschränkung ist die Disk-I/O-Geschwindigkeit (IOPS). Wenn Sie eine normale HDD oder eine langsame SSD verwenden, wird der Prozess sich lange hinziehen, daher ist ein NVMe-Laufwerk hier praktisch obligatorisch.
So erstellen und starten Sie den Client
Es gibt mehrere Installationsoptionen. Für Ubuntu ist ein offizielles APT-Repository verfügbar, sodass Sie das Tool über den Standard-Paketmanager installieren können.
Wenn Sie das Binary aus dem Quellcode erstellen möchten, benötigen Sie Go Version 1.25.10 oder neuer sowie gcc und g++. Der Build-Prozess besteht aus nur wenigen Schritten:
git clone [email protected]:ava-labs/avalanchego.git
cd avalanchego
./scripts/run_task.sh build
Das kompilierte Binary erscheint im Verzeichnis build. Der Start ohne Parameter verbindet den Node mit dem Mainnet:
./build/avalanchego
Um sich mit dem Fuji-Testnetzwerk zu verbinden, fügen Sie ein Flag hinzu:
./build/avalanchego --network-id=fuji
Wenn Sie Ihr Betriebssystem nicht mit Abhängigkeiten belasten möchten, ist es einfacher, ein Docker-Image zu erstellen:
./scripts/run-task.sh build-image
docker run -ti -p 9650:9650 -p 9651:9651 avaplatform/avalanchego:latest /avalanchego/build/avalanchego
Die Ports 9650 und 9651 verarbeiten HTTP-API- und P2P-Verbindungen zwischen Nodes.
Plattformunterstützung und Codegenerierung
Der Ansatz des Teams bei der Unterstützung von Betriebssystemen ist ziemlich streng. Plattformen werden in drei Tiers eingeteilt.
Tier 1 umfasst 64-Bit-Linux-Systeme auf amd64- und arm64-Architekturen. Für sie werden vollständige E2E- und Stresstests durchgeführt.
Tier 2 umfasst macOS auf Apple-Silicon-Chips (arm64). Hier wird das Bestehen von Modul- und Integrationstests garantiert, aber E2E-Tests werden nicht beansprucht. macOS auf Intel-Prozessoren sowie Windows werden nicht offiziell unterstützt.
Das Projekt nutzt aktiv gRPC und Protobuf. Wenn Sie Änderungen am Protokoll vornehmen möchten, müssen Sie buf, protoc-gen-go installieren und das interne Generierungsskript ausführen:
scripts/run_task.sh generate-protobuf
Entwicklung in einer lokalen Umgebung
Das Ausführen von Terabytes an Daten für die lokale Entwicklung und das Debuggen von Smart Contracts macht keinen Sinn. Für solche Aufgaben bietet das Team ein separates Tool avalanche-cli. Es richtet eine lokale Umgebung buchstäblich mit zwei Befehlen ein:
avalanche network start
avalanche network status
Das spart Stunden, da Sie nicht auf die anfängliche Synchronisierung mit öffentlichen Netzwerken warten müssen.
Fazit
AvalancheGo ist solider Quellcode für jeden, der sich in die Avalanche-Infrastruktur vertieft. Der Code ist unter der BSD-3-Lizenz offen, und das Repository ist aktiv mit regelmäßigen Updates. Wenn Sie Dienste rund um diese Blockchain erstellen oder planen, Ihren eigenen Validator zu betreiben, lohnt es sich definitiv, dieses Repository zu studieren.
Ähnliche Projekte