À propos du projet
Go Ethereum (geth) est l'implémentation Go de la couche d'exécution du protocole Ethereum. Il fournit un client en ligne de commande, des paquets de bibliothèque et des outils de développement pour exécuter des nœuds et créer des applications sur le réseau principal Ethereum, les réseaux de test ou des chaînes privées.
## Construction
Le projet nécessite Go 1.23 ou ultérieur et un compilateur C. `make geth` construit le client principal, tandis que `make all` construit l'ensemble complet des utilitaires. Des archives binaires préconstruites sont publiées à l'adresse geth.ethereum.org/downloads.
## Exécutables
Le dépôt comprend plusieurs commandes dans le répertoire `cmd` :
- `geth` – le client CLI Ethereum principal. Il peut s'exécuter en tant que nœud complet ou nœud d'archivage, se connecter au réseau principal, aux réseaux de test ou à des réseaux privés, et expose des points de terminaison JSON-RPC sur HTTP, WebSocket et IPC.
- `devp2p` – des utilitaires permettant d'interagir avec la couche réseau sans exécuter une chaîne de blocs complète.
- `abigen` – un générateur de code source qui transforme les ABIs des contrats Ethereum (et éventuellement les sources Solidity) en paquets Go type-safe au moment de la compilation.
- `evm` – une version développeur de la machine virtuelle Ethereum permettant d'exécuter des extraits de bytecode dans un environnement configurable, utile pour le débogage au niveau des opcodes.
- `rlpdump` – un outil qui convertit les dumps binaires RLP en une représentation hiérarchique lisible.
## Exécution de geth
L'utilisation typique est `geth console`, qui démarre un nœud complet synchronisé en mode snap et fournit une console JavaScript interactive. Le drapeau `--sepolia` permet de se connecter au réseau de test Sepolia en utilisant des bootnodes distincts, un identifiant de réseau, un état de genèse et des répertoires de données spécifiques. La configuration peut également être fournie via un fichier TOML avec `geth --config`, et les paramètres existants peuvent être exportés avec `dumpconfig`.
Les recommandations matérielles minimales sont : 4+ cœurs CPU, 8 Go de RAM, un SSD haute performance disposant d'au moins 2 To d'espace libre, et une bande passante de téléchargement de 8 Mbit/s ; les spécifications recommandées sont supérieures pour une croissance à long terme.
Un démarrage rapide avec Docker est fourni : `docker run -d --name ethereum-node -v /Users/alice/ethereum:/root -p 8545:8545 -p 30303:30303 ethereum/client-go`. Notez que l'accès RPC depuis d'autres hôtes nécessite de définir explicitement `--http.addr 0.0.0.0`.
## Accès programmatique
geth prend en charge les API JSON-RPC sur HTTP, WebSocket et IPC. L'interface IPC est activée par défaut et expose toutes les API, tandis que HTTP et WS doivent être explicitement activés et exposent un sous-ensemble conscient de la sécurité. Les drapeaux courants incluent `--http`, `--http.addr`, `--http.port`, `--http.api`, `--http.corsdomain`, `--ws`, `--ws.origins`, `--ipcdisable` et `--ipcpath`. Le README avertit que l'exposition publique des API HTTP/WS comporte des risques de sécurité, car des acteurs malveillants sondent activement les nœuds Ethereum exposés.
## Réseaux privés
Depuis la Fusion, l'exécution d'un réseau privé de nœuds geth nécessite également la mise en place d'une chaîne de balises correspondante. Trois alternatives sont documentées :
- Simulated Backend – destiné aux tests de contrats intelligents dans l'intégration continue Go.
- Dev Mode – un environnement pratique à nœud unique pour les tests.
- Kurtosis – pour mettre en place un réseau de test multi-nœuds.
## Contribution
Les contributions sont acceptées via des demandes de tirage (pull requests) sur la branche `master`. Le code doit respecter les directives officielles de formatage et de commentaires Go, et les messages de validation doivent être préfixés avec le(s) paquet(s) modifié(s). Les changements plus complexes doivent être discutés avec les développeurs principaux sur Discord. Les contributions au site web ciblent la branche `website`.
## Licence
La bibliothèque go-ethereum (code situé en dehors du répertoire `cmd`) est sous licence LGPL v3.0 ; les binaires (code situé dans le répertoire `cmd`) sont sous licence GPL v3.0.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.