Aider à mettre à jour cette page

🌏

Il existe une nouvelle version de cette page, mais seulement en anglais pour le moment. Aidez-nous à traduire la dernière version.

Cette page est incomplète. Si vous êtes un expert sur le sujet, veuillez éditer cette page et l'enrichir de votre sagesse.

Nœuds et clients

Dernière modification: , Invalid DateTime
Edit page

Pour qu'Ethereum fonctionne de façon décentralisée, il faut un réseau distribué de nœuds qui peuvent vérifier les blocs et les données de transaction. Vous avez besoin d'une application ("un client") sur votre appareil pour "exécuter" un nœud.

Prérequis

Vous devez comprendre le concept de réseau décentralisé avant d'approfondir le sujet et d'exécuter votre propre instance d'un client Ethereum. Commencez par lire la page Introduction à Ethereum.

En quoi consistent les nœuds et les clients?

"Nœud" désigne un logiciel connu sous le nom de "client". Un client est une implémentation d'Ethereum qui vérifie toutes les transactions de chaque bloc, ce qui assure la sécurité du réseau et l'exactitude des données.

Vous pouvez voir une vue du réseau Ethereum en temps réel en consultant cette carte des nœuds.

De nombreuses implémentations de clients Ethereum existent dans différentes langues. Ce qu'elles ont en commun, c'est qu'elles suivent toutes une spécification formelle. Cette spécification dicte le fonctionnement du réseau Ethereum et de la blockchain.

Client Eth1x Diagramme simplifié des fonctionnalités Ethereum Client

Types de nœuds

Si vous voulez exécuter votre propre nœud, vous devez comprendre qu'il en existe plusieurs types, qui consomment les données différemment. En fait, les clients peuvent exécuter 3 types de nœuds différents : léger, complet et archive. Il existe aussi différentes options de stratégies de synchronisation qui permettent une synchronisation plus rapide. La synchronisation fait référence à la vitesse à laquelle on peut obtenir les informations les plus récentes sur l'état d'Ethereum.

Nœud complet

  • Stocke toutes les données de la blockchain.
  • Participe à la validation de blocs, vérifie tous les blocs et états.
  • Tous les états peuvent être dérivés d'un nœud complet.
  • Sert le réseau et fournit des données sur demande.

Nœud léger

  • Stocke la chaîne d'en-tête et demande tout le reste.
  • Peut vérifier la validité des données par rapport aux racines d'état dans les en-têtes de bloc.
  • Utile pour les appareils de faible capacité, comme les appareils embarqués ou les téléphones mobiles, qui ne peuvent pas stocker des gigaoctets de données blockchain.

Nœud d'archive

  • Stocke tout ce qui est conservé dans le nœud complet et construit une archive des états de l'historique. Nécessaire si vous voulez interroger quelque chose comme le solde d'un compte au niveau du bloc #4 000 000.
  • Ces données représentent des unités de téraoctets qui rendent les nœuds d'archives moins attrayants pour les utilisateurs moyens, mais peuvent être utiles pour des services comme les explorateurs de blocs, les fournisseurs de portefeuilles et les analyses de chaînes.

La synchronisation des clients dans un autre mode que l'archive entraîne la suppression de données de la blockchain. Cela signifie qu'il n'y a pas d'archive de tous les états de l'historique, mais que le nœud complet est capable d'en construire sur demande.

Pourquoi exécuter un nœud Ethereum ?

Exécuter un nœud vous permet d'utiliser le service Ethereum en toute confiance et de façon privée, tout en prenant en charge l'écosystème.

Avantages pour vous

L'exécution de votre propre nœud vous permet d'utiliser Ethereum de façon vraiment privée, intelligent et fiable. Vous n'avez pas besoin de faire confiance au réseau car vous pouvez vous-même vérifier les données avec votre client. "Ne faites pas confiance, vérifiez" est une devise populaire de la blockchain.

  • Votre nœud vérifie lui-même toutes les transactions et tous les blocs par rapport aux règles de consensus. Cela signifie que vous n’avez ni à vous fier à d’autres nœuds du réseau ni à leur faire entièrement confiance.
  • Vous n'aurez pas à divulguer vos adresses et vos soldes à des nœuds aléatoires. Tout peut être contrôlé avec votre propre client.
  • Votre DApp peut être privée et plus sécurisée si vous utilisez votre propre nœud. Metamask, MyEtherWallet et d'autres portefeuilles peuvent être facilement pointés vers votre propre nœud local.

Comment accéder à Ethereum via votre application et vos nœuds

Avantages du réseau

Un ensemble de nœuds divers est important pour la santé, la sécurité et la résilience opérationnelle d’Ethereum.

  • Ils fournissent un accès aux données de la blockchain pour les clients légers qui en dépendent. Dans les pics d'utilisation, il faut avoir suffisamment de nœuds complets pour aider à la synchronisation des nœuds légers. Les nœuds légers ne stockent pas toute la blockchain. Au lieu de cela, ils vérifient les données via les racines d'état des en-têtes de blocs. Ils peuvent demander plus d'informations aux blocs si besoin est.
  • Les nœuds complets appliquent les règles de consensus de preuve de travail afin qu'ils ne puissent pas être dupés et accepter des blocs qui ne les respectent pas. Ceci offre une sécurité supplémentaire au sein du réseau, car si tous les nœuds étaient des nœuds légers qui ne font pas de vérification complète, les mineurs pourraient attaquer le réseau et, par exemple, créer des blocs avec des récompenses plus élevées.

Quand vous exécutez un nœud complet, l'ensemble du réseau Ethereum en bénéficie.

Exécuter son propre nœud

Projets

Sélectionnez un client et suivez ses instructions.

ethnode - Exécutez un nœud Ethereum (Geth ou Parity) pour du développement local.

DAppNode - Un système d'exploitation pour exécuter des nœuds Web3, y compris Ethereum, sur une machine dédiée.

Ressources

Alternatives

L'exécution de votre propre nœud ou instance peut être difficile et n'est pas toujours nécessaire. Dans ce cas, vous pouvez utiliser un fournisseur d'API tiers comme Infura, Alchemy ou QuikNode. Sinon, ArchiveNode est un nœud d'archive financé par la communauté, qui souhaite offrir des données d'archive sur la blockchain Ethereum aux développeurs indépendants.

Si quelqu'un exécute un nœud Ethereum avec une API publique dans votre communauté, vous pouvez pointer vos portefeuilles légers (comme MetaMask) vers un nœud communautaire via un RPC personnalisé et gagner plus de confidentialité qu'avec un tiers de confiance aléatoire.

D'autre part, si vous exécutez un client, vous pouvez le partager avec vos amis qui pourraient en avoir besoin.

Clients

Ethereum est conçu pour offrir des clients différents, développés par différentes équipes utilisant différents langages de programmation. Cela rend le réseau plus solide et plus diversifié. L'objectif idéal est de parvenir à une diversité sans qu'aucun client ne domine afin de réduire les points de défaillance uniques.

Ce tableau présente les différents clients. Tous font l'objet d'une maintenance et d'un travail actifs, et passent des tests client.

ClientLangageSystèmes d'exploitationRéseauxStratégies de synchronisationÉlagage d'état
GethGoLinux, Windows, macOSMainnet, Görli, Rinkeby, RopstenRapide, complèteArchive, élagué
OpenEthereumRustLinux, Windows, macOSMainnet, Kovan, Ropsten et plusWarp, complèteArchive, élagué
NethermindC#, .NETLinux, Windows, macOSMainnet, Görli, Ropsten, Rinkeby et plusRapide, complèteArchive, élagué
BesuJavaLinux, Windows, macOSMainnet, Rinkeby, Ropsten et GörliRapide, complèteArchive, élagué
TrinityPythonLinux, macOSMainnet, Görli, Ropsten et plusComplet, Beam, Rapide/En-têteArchive

Pour plus d'information sur les services, lisez la page Réseaux Ethereum.

Avantages des différentes implémentations

Chaque client présente des cas d'utilisation et des avantages uniques. Vous devez donc en choisir un en fonction de vos propres préférences. La diversité permet de concentrer les implémentations sur des fonctionnalités et des audiences d'utilisateurs différentes. Vous pouvez choisir un client basé sur des fonctionnalités, du support, du langage de programmation ou des licences.

Go Ethereum

Go Ethereum (ou Geth, pour faire court) est l'une des implémentations initiales du protocole Ethereum. C'est actuellement le client le plus répandu, avec la plus grande base d'utilisateurs et la plus grande variété d'outils pour les utilisateurs et les développeurs. Il est écrit en Go, entièrement open source et sous licence GNU LGPL v3.

OpenEthereum

OpenEthereum est un client Ethereum avancé, rapide et riche en fonctionnalités, basé sur l'interface CLI. Il est conçu pour fournir l'infrastructure essentielle à des services rapides et fiables qui nécessitent une synchronisation rapide et un temps de fonctionnement maximal. Le but d'OpenEthereum est d'être le client Ethereum le plus rapide, le plus léger et le plus sûr. Il fournit une base de code propre et modulaire pour :

  • une personnalisation facile ;
  • une intégration légère dans les services ou les produits ;
  • une empreinte mémoire et un stockage minimum.

OpenEthereum est développé avec le langage de programmation Rust et sous licence GPLv3.

Nethermind

Nethermind est une implémentation d'Ethereum créée avec la pile technologique C# .NET, fonctionnant sur toutes les principales plateformes, y compris ARM. Elle offre de bonnes performances avec :

  • une machine virtuelle optimisée ;
  • un accès à l'état ;
  • la mise en réseau et des fonctionnalités riches comme les tableaux de bord Prometheus/Graphana, la prise en charge de la journalisation d'entreprise seq, le traçage RPC JSON et les plugins d'analyse.

Nethermind dispose également d'une documentation détaillée, d'un solide support de développement, d'une communauté en ligne et d'une assistance 24/7 disponible pour les utilisateurs premium.

Besu

Hyperledger Besu est un client Ethereum de qualité entreprise pour les réseaux publics et privés. Il exécute toutes les fonctionnalités du réseau principal Ethereum, du traçage à GraphQL, dispose d"une surveillance étendue et est pris en charge par ConsenSys, à la fois dans les canaux communautaires ouverts et par le biais de SLA commerciaux pour les entreprises. Il est écrit en Java et est sous licence Apache 2.0.

Modes de synchronisation

  • Complet : Télécharge tous les blocs (y compris les en-têtes, les transactions et les reçus) et génère l'état de la blockchain de façon incrémentielle en exécutant chaque bloc.
  • Rapide (par défaut) : Télécharge tous les blocs (y compris les en-têtes, les transactions et les reçus), vérifie tous les en-têtes, puis télécharge l'état et le vérifie par rapport aux en-têtes.
  • Léger : Télécharge tous les en-têtes de bloc, les données de bloc et en vérifie certaines aléatoirement.
  • Synchronisation Warp : Tous les 5 000 blocs, les nœuds prendront un instantané de l'état de ce bloc, essentiel pour le consensus. N'importe quel nœud peut récupérer ces instantanés sur le réseau, ce qui permet une synchronisation rapide. Plus d'infos sur la synchronisation Warp
  • Synchronisation Beam : Mode de synchronisation qui vous permet d'aller plus vite. Il n'exige pas de longues attentes pour synchroniser, mais remplit les données au fil du temps. Plus d'infos sur la synchronisation Beam
  • Synchronisation des en-têtes : Vous pouvez utiliser un point de contrôle fiable pour commencer à synchroniser à partir d'un en-tête plus récent, puis laisser un processus en arrière-plan pour éventuellement combler les vides.

Vous définissez le type de synchronisation lors de la configuration, comme suit :

Configuration d'une synchronisation légère dans GETH

geth --syncmode "light"

Configuration d"une synchronisation des en-têtes dans Trinity

trinity --sync-from-checkpoint eth://block/byhash/0xa65877df954e1ff2012473efee8287252eee956c0d395a5791f1103a950a1e21?score=15,835,269,727,022,672,760,774

Matériel

Les exigences matérielles diffèrent selon le client, mais ne sont en général pas si élevées puisque le nœud doit simplement rester synchronisé. Attention à ne pas confondre avec le minage, qui nécessite beaucoup plus de puissance de calcul. Le temps de synchronisation et les performances s'améliorent toutefois avec un matériel plus puissant. Selon vos besoins et vos souhaits, vous pouvez exécuter Ethereum sur votre ordinateur, votre serveur domestique, des ordinateurs monocartes ou des serveurs privés virtuels dans le cloud.

Un moyen facile d'exécuter votre propre nœud est d'utiliser un outil "plug and play" comme DAppNode. Il fournit du matériel pour exécuter des clients, et les applications qui en dépendent, via une interface utilisateur simple.

Conditions requises

Avant d'installer un client, assurez-vous que votre ordinateur dispose de suffisamment de ressources pour l'exécuter. Les exigences minimales et recommandées sont répertoriées ci-dessous, mais l'élément clé est l'espace disque. La synchronisation de la blockchain Ethereum est très intense en entrées/sorties. Il est préférable d'avoir un disque SSD. Pour exécuter un client Ethereum sur un disque dur, au moins 8 Go de RAM seront nécessaires pour l'utiliser comme cache.

  • CPU avec 2 cœurs et +
  • 4 Go de RAM minimum avec un disque SSD, 8 Go+ avec un disque dur
  • Bande passante de 8 Mbps
  • CPU rapide avec 4 cœurs et +
  • 16 Go+ de RAM
  • Disque SSD rapide avec au moins 500 Go d'espace libre
  • Bande passante de 25 Mbps

Selon le logiciel et le mode de synchronisation utilisés, des centaines de Go d'espace disque seront nécessaires. Voici quelques chiffres approximatifs :

ClientTaille du disque (synchro. rapide)Taille du disque (archive complète)
Geth400 Go+4,7 To+
OpenEthereum280 Go+4,6 To+
Nethermind200 Go+3 To+
Besu750 Go+4 To+

Graphique montrant que le nombre de Go nécessaires pour une synchronisation complète a tendance à augmenter

Graphique montrant que le nombre de Go nécessaires pour une synchronisation d'archives a tendance à augmenter

Ces chiffres montrent l'évolution constante des exigences de stockage. Pour obtenir les informations Geth et Parity les plus récentes, lisez les page sur les données de synchronisation complètes et les données de synchronisation d'archives.

Ethereum sur un ordinateur monocarte

La façon la plus pratique et la moins chère d'exécuter un nœud Ethereum est d'utiliser un ordinateur monocarte avec une architecture ARM, comme le Raspberry Pi. Ethereum on ARM fournit des images de clients Geth, Parity, Nethermind et Besu. Voici un tutoriel simple sur la façon de construire et configurer un client ARM.

Les petits appareils abordables et efficaces de ce type sont parfaits pour exécuter un nœud chez soi.

Clients Eth2

Il existe de nouveaux clients pour prendre en charge les mises à niveau Eth2. Ils exécuteront la chaîne phare et prendront en charge le nouveau mécanisme de consensus de preuve d'enjeu.

Voir les clients Eth2

Complément d'information

Il existe nombre d'instructions et d'informations sur Internet concernant les clients Ethereum. Voici quelques liens qui pourraient vous être utiles.

👈
PrécédentCarburant
SuivantRun a node
👉