Déployer un réseau Ethereum local avec Docker, Ganache et Kurtosis : tutoriel complet en français

Ce guide vous accompagne dans le processus d'instanciation d'un réseau de test Ethereum local configurable, de déploiement d'un contrat intelligent sur celui-ci, et d'utilisation du réseau de test pour exécuter des tests sur votre application décentralisée (dapp).

Présentation de Kurtosis et du réseau Ethereum local

Kurtosis (s'ouvre dans un nouvel onglet) est un système de construction composable conçu pour configurer des environnements de test multi-conteneurs. Dans ce guide, le paquet eth-network-package de Kurtosis lance un réseau de test Ethereum local prenant en charge le client de la couche d'exécution (EL) geth (s'ouvre dans un nouvel onglet), ainsi que les clients de la couche de consensus (CL) teku (s'ouvre dans un onglet), lighthouse (s'ouvre dans un onglet) et lodestar (s'ouvre dans un onglet). Ce paquet sert d'alternative configurable et composable aux réseaux dans des frameworks comme Hardhat Network, Ganache et Anvil. Kurtosis affichera les étapes qu'il effectue en arrière-plan pendant qu'il interprète, valide, puis exécute les instructions.

Félicitations ! Dans cette section, vous avez exécuté une commande qui a ordonné à Kurtosis d'utiliser le eth-network-package hébergé à distance sur GitHub (s'ouvre dans un onglet) pour lancer un réseau de test Ethereum local au sein d'une Enclave (s'ouvre dans un onglet) Kurtosis. Les artefacts de fichiers (s'ouvre dans un onglet) dans votre enclave incluent toutes les données générées et utilisées pour amorcer les clients EL et CL. Les services utilisateur affichent tous les services conteneurisés fonctionnant dans votre enclave.

Connexion du dapp et configuration Hardhat

Maintenant que vous avez un réseau de test local en cours d'exécution, vous pouvez connecter votre environnement de développement d'application décentralisée (dapp) pour utiliser votre réseau de test local. Avec votre environnement de développement de dapp configuré, vous allez maintenant connecter Hardhat pour utiliser le réseau de test Ethereum local généré à l'aide de Kurtosis. Pour ce faire, remplacez <$YOUR_PORT> dans la structure localnet de votre fichier de configuration hardhat.config.ts par le port de l'URI RPC généré par n'importe quel service el-client-. Dans cet exemple, le port serait 64248. Une fois votre fichier enregistré, votre environnement de développement de dapp Hardhat est maintenant connecté à votre réseau de test Ethereum local !

Votre réseau de test Ethereum local peut être configuré pour utiliser différentes paires de clients EL et CL, ainsi qu'un nombre variable de nœuds, en fonction du scénario et de la configuration réseau spécifique que vous souhaitez développer ou tester. Cela signifie qu'une fois configuré, vous pouvez lancer un réseau de test local personnalisé et l'utiliser pour exécuter les mêmes flux de travail (déploiement, tests, etc.) sous diverses configurations de réseau pour vous assurer que tout fonctionne comme prévu. Essayez !

Configuration via JSON et déploiement multi-noeuds

Vous pouvez transmettre diverses options de configuration au eth-network-package via un fichier JSON. Cette configuration crée un réseau hétérogène d'implémentations de nœuds Ethereum pour tester votre dapp. Chaque structure participants correspond à un nœud du réseau, donc 3 structures participants indiqueront à Kurtosis de lancer 3 nœuds dans votre réseau. Encore une fois, Kurtosis travaillera un moment et affichera les étapes individuelles qui se déroulent. Starlark code successfully run. Félicitations ! Vous avez configuré avec succès votre réseau de test local pour avoir 3 nœuds au lieu de 1.

Les risques et le rôle des validateurs Ethereum 2

Et c'est tout ! Nous serions ravis de savoir ce qui s'est bien passé pour vous, ce qui pourrait être amélioré, ou de répondre à vos questions. Devenir un validateur sur Ethereum 2 n’est pas quelque chose à prendre à la légère. Moins de 32 ETH ? Prenez cependant le soin de vous renseigner sur les staking pool avant d’y séquestrer vos ETH !

Deux options s’offrent à vous: vous pouvez utiliser une machine chez vous, ou bien un serveur hébergé ailleurs. Les deux ont leurs avantages et inconvénients : facilité d’accès, stabilité de la connexion à internet, taille du disque dur, confiance en l’hébergeur… Je vous laisse faire votre choix. Dans ce guide, nous allons utiliser un hébergeur afin de montrer cette étape aussi.

Vous vous apprêtez à séquestrer au moins 32 ETH. Mais êtes-vous sûr de connaître les risques et les pénalités ? Rendons-nous chez netcup.eu (ce guide n’est en aucun cas affilié ! Ce qui importe, c’est d’être sûr que le serveur tiendra la route en cas de perturbation sur le réseau). Cependant, à cela il faut ajouter l’instance d’ETH1, qui nécessite elle-même 16 Gb de RAM et 500 GB de SSD. L’option VPS 6000 est une option avec laquelle vous n’aurez pas de problèmes dans les années à venir. L’option VPS 4000 est correcte et devrait être suffisante. L’option VPS 3000 fera pile l’affaire pour le moment, mais il faudra s’attendre à devoir changer de plan d’ici 1 an ou deux.

Une fois votre offre sélectionnée, vous devrez procéder à la création de compte. Retenez bien les informations que vous entrez : une fois la demande effectuée, vous recevrez un appel de netcup.eu en anglais et ils vous demanderont de bien confirmer votre nom/prénom, votre adresse, votre code postal. Connectons-nous d’abord à notre espace client. La première étape à suivre est de sécuriser notre compte client en mettant en place le 2FA, un mécanisme de sécurité qui vous demandera d’entrer un code fourni par votre téléphone lors de vos prochaines connections. Bien maintenant que votre compte est sécurisé, vous pouvez procéder au règlement. Fini la rigolade ! On passe aux choses sérieuses !

Securisation et mise en place du serveur

Pour ce faire, nous allons utiliser ssh ! Si vous avez une erreur ici, c’est probablement que vous n’avez pas bien copié la clé grâce à ssh-copy-id. Première étape…. changer de mot de passe ! Nous sommes actuellement connecté en tant que l’utilisateur « root ». C’est en quelque sorte le superman de votre ordinateur : il a tous les droits. Suivez les instructions du terminal (soyez sûrs de choisir un mot de passe solide !). Puis, ajoutez cet utilisateur à la liste des « sudoers » : c’est la liste des utilisateurs qui sont autorisés à effectuer des actions en tant qu’administrateur. La sécurité, c’est important !

L’authentification par clé est préférable : lors de la connexion à votre machine, utilisez une clé plutôt qu’un mot de passe. Changer le port SSH, installer un pare-feu et configurer la sécurité renforcent considérablement la protection. L’authentification par clé, la modification du port SSH et l’ajout d’un pare-feu font partie des mesures décrites pour sécuriser votre serveur. Après avoir créé votre clé SSH et configuré le serveur, vous pouvez redémarrer le service SSH et vous assurer que tout est opérationnel. Votre machine est désormais installée et sécurisée.

Migration et mises en place des validateurs sur le réseau Ethereum 2

Ce guide détaille les étapes nécessaires pour la mise en place d’un validateur sur le « mainnet », mais il existe des « testnet » pour tester sans risque financier. Vous pouvez installer et lancer correctement un validateur sur un testnet avant de migrer vers le réseau principal. Vous venez de télécharger la version compressée du logiciel qui va vous servir à créer les clés de vos validateurs. Les noms des fichiers pourraient différer sur votre machine : ici c’est eth2deposit-cli-ed5q6d3, mais elle pourrait changer dans le futur. Vous pouvez maintenant créer vos clés et récupérer votre mnemonic. Vous verrez apparaître des fichiers deposit_data.json et keystore-m…json dans le dossier validator_keys. La mise en place des logiciels nécessaires au staking inclut le Validator Client (VC), qui signe des transactions et peut se connecter à plusieurs BN. Des implémentations populaires existent pour Ethereum 2 : Lighthouse, Prysm, Teku et Nimbus. Il existe aussi plusieurs implémentations pour Ethereum 1, comme geth et openethereum. Docker-compose peut automatiser le lancement des composants: geth, BN et VC, et permet un environnement reproductible. Si la commande ne fonctionne pas, assurez-vous que Docker est correctement installé et que docker-compose est configuré.

La configuration peut être réalisée via un fichier JSON, et les nœuds peuvent être déployés en nombre variable. Vous pouvez aussi déployer via tmux pour garder les services en fond. Le déploiement et le monitoring peuvent être complétés par Grafana et Prometheus, ainsi que par des dashboards accessibles localement (par exemple via localhost:3000). Le monitoring est utile pour observer les performances et les incidents, et pour sauvegarder les données des messages envoyés par vos validateurs afin d’éviter les conflits (le rule of one block par validateur est primordial). Slashing et leakage sont deux risques critiques à connaître lorsque vous opérez des validateurs sur Ethereum 2.

Utilisation de MetaMask et Ganache avec un réseau local

Ce guide montre aussi comment utiliser un réseau privé avec MetaMask et Ganache pour déployer des contrats et interagir avec votre réseau local. Dans Ganache, vous pouvez Paramétrer Ganache en mode Quickstart et configurer MetaMask pour se connecter au réseau Ganache, obtenir des comptes pré-financés et tester des déploiements en toute sécurité. Avec Remix, vous pouvez déployer directement vos contrats sur Ganache en choisissant l’environnement "External HTTP Provider" et en connectant les comptes Ganache à Remix. Les transferts et les appels de fonctions seront visibles dans Ganache et sur MetaMask. Ganache évolue dans le cadre de la suite Truffle et propose des améliorations telles que la journalisation améliorée, le support des hard forks, et des corrections d’erreurs diverses. Les versions récentes prennent en charge The Merge etShanghai, et proposent des modes en ligne de commande, des outils de debugging et des conseils pour l’intégration dans les workflows CI/CD.

Ganache, Ganache en ligne de commande et considérations de build

Ganache peut être utilisé en mode détaché et offre des options telles que --miner.blockTime, --chain.chainId, --fork.url et --logging.file pour personnaliser l’exécution du réseau. Le fork permet de simuler l’état d’une blockchain publique et d’effectuer des tests avancés comme les flash-loans. Ganache peut être utilisé via Node.js pour l’automatisation des tests. Bien que Ganache et Hardhat gagnent en fonctionnalités, le guide rappelle que Truffle et Ganache se dirigent vers une fin de support actif, et appelle à suivre les mises à jour et les guides de migration publiés par ConsenSys.

Pour la construction et le packaging, Ganache requiert des configurations spécifiques selon la plateforme: Windows, macOS et Linux. Des outils comme electron-icon-maker et svg2uwptiles servent à générer les ressources pour les différentes plateformes, et la débogage peut être attaché via Visual Studio Code. L’avenir offre des alternatives et des évolutions continues dans l’écosystème Ethereum, et ce guide encourage à rester informé des annonces et des développements communautaires et des outils émergents.

diagramme architecture reseau Ethereum local

Private full featured testnet that powered Ethereum Merge, now for Restaking Cloud - Kurtosis

En résumé, ce tutoriel couvre l’instanciation d’un réseau local Ethereum multi-noeuds avec Kurtosis et ethernet-network-package, la connexion d’un environnement Hardhat, le déploiement de contrats via MetaMask, l’intégration avec Ganache et Remix, et les considérations de sécurité et de maintenance pour les validateurs Ethereum 2. Il montre comment configurer des réseaux multi-clients, adapter le nombre de nœuds et basculer entre différents setups de test pour valider vos flux de travail d’application décentralisée.

tags: #deployer #ethereum #docker #ganache