Exécuter votre propre nœud Avalanche en Go et comprendre l'architecture du réseau

Configurer un nœud Ethereum ou Bitcoin à partir de zéro n'est pas une tâche rapide. Vous devez télécharger des centaines de gigaoctets de données et attendre des semaines pour la synchronisation. Les développeurs d'Avalanche adoptent une approche légèrement différente, bien que vous ne deviez pas vous attendre à une promenade de santé non plus.
L'implémentation officielle du nœud du réseau Avalanche en Go est disponible dans le dépôt avalanchego. C'est le composant central de toute l'infrastructure du projet. Sans lui, vous ne pourrez pas exécuter de validateur ni déployer un réseau de test privé.
Ce dont vous avez besoin pour commencer
Les développeurs qualifient les exigences matérielles de modestes, mais les chiffres indiqués dans le README suggèrent le contraire. Pour fonctionner sur le Mainnet, vous aurez besoin de :
- 8 vCPU
- 16 Go de RAM
- 1 To d'espace disque libre
- Ubuntu (22.04/24.04) ou macOS 12+
Le goulot d'étranglement principal lors du premier démarrage se produit pendant la phase d'amorçage. Le nœud télécharge l'historique du réseau et vérifie l'état. Ce processus prend plusieurs jours. La principale contrainte est la vitesse d'E/S du disque (IOPS). Si vous utilisez un HDD classique ou un SSD lent, le processus sera très long, donc un disque NVMe est pratiquement obligatoire ici.
Comment compiler et exécuter le client
Il existe plusieurs options d'installation. Pour Ubuntu, un dépôt APT officiel est disponible, vous pouvez donc installer l'utilitaire via le gestionnaire de paquets standard.
Si vous souhaitez compiler le binaire à partir du code source, vous aurez besoin de Go version 1.25.10 ou ultérieure, ainsi que de gcc et g++. Le processus de compilation ne prend que quelques étapes :
git clone git@github.com:ava-labs/avalanchego.git
cd avalanchego
./scripts/run_task.sh build
Le binaire compilé apparaît dans le répertoire build. L'exécution sans paramètres connecte le nœud au Mainnet :
./build/avalanchego
Pour vous connecter au réseau de test Fuji, ajoutez un indicateur :
./build/avalanchego --network-id=fuji
Si vous ne souhaitez pas surcharger votre système d'exploitation avec des dépendances, il est plus simple de créer une image Docker :
./scripts/run-task.sh build-image
docker run -ti -p 9650:9650 -p 9651:9651 avaplatform/avalanchego:latest /avalanchego/build/avalanchego
Les ports 9650 et 9651 gèrent les connexions HTTP API et P2P entre les nœuds.
Prise en charge des plateformes et génération de code
L'approche de l'équipe concernant la prise en charge des systèmes d'exploitation est assez stricte. Les plateformes sont divisées en trois niveaux.
Le niveau 1 comprend les systèmes Linux 64 bits sur les architectures amd64 et arm64. Des tests e2e et de stress complets sont exécutés pour ceux-ci.
Le niveau 2 comprend macOS sur les puces Apple Silicon (arm64). Ici, la réussite des tests de modules et d'intégration est garantie, mais les tests e2e ne sont pas revendiqués. macOS sur processeurs Intel, ainsi que Windows, ne sont pas officiellement pris en charge.
Le projet utilise activement gRPC et Protobuf. Si vous prévoyez de modifier le protocole, vous devrez installer buf, protoc-gen-go et exécuter le script de génération interne :
scripts/run_task.sh generate-protobuf
Développement dans un environnement local
Exécuter des téraoctets de données pour le développement local et le débogage de contrats intelligents n'a pas de sens. Pour de telles tâches, l'équipe propose un utilitaire séparé avalanche-cli. Il démarre un environnement local en littéralement deux commandes :
avalanche network start
avalanche network status
Cela fait gagner des heures de temps puisque vous n'avez pas à attendre la synchronisation initiale avec les réseaux publics.
Conclusion
AvalancheGo est un code source solide pour quiconque s'aventure dans l'infrastructure Avalanche. Le code est ouvert sous licence BSD-3, et le dépôt est actif avec des mises à jour régulières. Si vous construisez des services autour de cette blockchain ou prévoyez d'exécuter votre propre validateur, étudier ce dépôt en vaut certainement la peine.
Projets similaires