Passer au contenu principal

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.

Traduire la page
Voir l'anglais

Aucun bogue ici !🐛

Cette page n'est pas traduite. Nous laissons volontairement cette page en anglais pour le moment.

Nœuds et clients

Dernière modification: , Invalid DateTime
Modifier la page

Ethereum est un réseau distribué d'ordinateurs exécutant des logiciels (appelés node) qui vérifient 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 de pair-à-pair et les bases de l'EVM avant d'approfondir et d'exécuter votre propre instance d'un client Ethereum. Commencez par lire la page Introduction à Ethereum.

Si vous êtes novice au sujet des nœuds, nous vous recommandons de consulter en premier lieu notre introduction conviviale sur l'exécution d'un nœud Ethereum.

En quoi consistent les nœuds et les clients?

Le terme « Nœud » désigne un logiciel client en cours d'exécution. Un client est une implémentation d'Ethereum qui vérifie l'ensemble des transactions de chaque bloc, garantissant la sécurité du réseau et l'exactitude des données.

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

De nombreux clients Ethereum existent dans une variété de langages de programmation tels que Go, Rust, JavaScript, Typescript, Python, C# .NET, Nim et Java. Ce que ces implémentations ont en commun, c'est qu'elles suivent toutes une spécification formelle (à l'origine le papier jaune Ethereum). Cette spécification régit le fonctionnement du réseau Ethereum et de la blockchain.

Clients d'exécution Diagramme simplifié des fonctionnalités des clients Ethereum

Types de nœuds

Si vous voulez exécuter votre propre nœud, vous devez comprendre qu'il existe différents types de nœuds et que ceux-ci consomment les données différemment. En fait, les clients peuvent exécuter 3 types de nœuds différents : léger, complet et d'archive. Il existe aussi différentes stratégies de synchronisation afin d'accélérer le temps de synchronisation. 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 pour aller chercher des informations comme le solde d'un compte au bloc #4 000 000, ou tester vos propres ensembles de transactions simplement et efficacement sans les miner avec OpenEthereum.
  • 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 celui de l'archivage entraîne la suppression de données de la blockchain. Cela signifie qu'il n'existe pas d'archive de tous les états de l'historique, mais que le nœud complet est capable de les 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 contribuant à 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, autonome 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 facilement pointer vers votre propre nœud local.
  • Vous pouvez programmer vos propres points de terminaison RPC personnalisés.
  • Vous pouvez vous connecter à votre nœud en utilisant les communications interprocessus (IPC) ou réécrire le nœud pour charger votre programme en tant que plugin. Cela garantit une faible latence, qui est nécessaire pour remplacer vos transactions aussi rapidement que possible (c'est-à-dire en avant-première).

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

Avantages du réseau

Il est important de disposer d'un ensemble diversifié de nœuds 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, c'est l'ensemble du réseau Ethereum qui en bénéficie.

Exécuter son propre nœud

Vous aimeriez faire fonctionner votre propre client Ethereum ?

Pour une introduction facile destinée aux débutants, visitez notre page pour en savoir plus.

Si vous êtes un utilisateur plus orienté vers la technique, apprenez à faire tourner votre propre nœud avec l'invite de commande !

Projets

Sélectionnez un client et suivez ses instructions.

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

DAppNode - Un système d'exploitation doté d'une interface graphique pour exécuter des nœuds Web3, y compris Ethereum et la « chaîne phare » 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é. Il a pour objectif d'offrir des données d'archive sur la blockchain Ethereum aux développeurs indépendants qui ne pourraient pas se le permettre autrement. Pour une vue d'ensemble sur l'utilisation de ces services, consultez les nœuds en tant que service.

Si quelqu'un exécute un nœud Ethereum avec une API publique dans votre communauté, vous pouvez faire pointer vos portefeuilles allégés (comme MetaMask) vers un nœud communautaire via un RPC personnalisé et gobtenir 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.

Exécuter des clients (anciennement « Clients Eth1 »)

La communauté Ethereum gère plusieurs clients d'exécution open-source (précédemment connus sous le nom de « clients Eth1 » ou simplement « clients Ethereum »), développés par différentes équipes en utilisant différents langages de programmation. Cela rend le réseau plus solide et plus diversifié. L'objectif idéal est de parvenir à la diversité sans qu'aucun client ne prédomine afin de réduire les points de défaillance uniques.

Ce tableau récapitule les différents clients. Tous ont passé les tests client et sont activement entretenus pour rester à jour avec les mises à niveau du réseau.

ClientLangageSystèmes d'exploitationRéseauxStratégies de synchronisationÉlagage d'état
GethAllerLinux, Windows, macOSMainnet, Görli, Rinkeby, RopstenSnap, FullArchive, élagué
NethermindC#, .NETLinux, Windows, macOSMainnet, Görli, Ropsten, Rinkeby et plusFast, Beam, ArchiveArchive, élagué
BesuJavaLinux, Windows, macOSRéseau principal, Rinkeby, Ropsten, Görli, and moreRapide, complèteArchive, élagué
ErigonAllerLinux, Windows, macOSMainnet, Görli, Rinkeby, RopstenTotaleArchive, élagué
OpenEthereum (obsolète)RustLinux, Windows, macOSMainnet, Kovan, Ropsten et plusWarp, complèteArchive, élagué

Notez que OpenEthereum a été déprécié et n'est plus entretenu. Utilisez-le avec prudence et, de préférence, passez à une autre implémentation client.

Pour plus d'information sur les réseaux pris en charge, 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 en fonction 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. Il s'agit actuellement du 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é à l'aide du langage de programmation de pointe Rust et sous licence GPLv3.

Notez que OpenEthereum a été déprécié et n'est plus entretenu. Utilisez-le avec prudence et, de préférence, passez à une autre implémentation client.

Nethermind

Nethermind est une implémentation d'Ethereum créée avec la pile technologique C# .NET, fonctionnant sur 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/Grafana, 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 niveau 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 se trouve sous licence Apache 2.0.

Erigon

Erigon, anciennement connu sous le nom de Turbo-Geth, est une fourche de Go Ethereum axée sur la vitesse et l'efficacité de l'espace disque. Erigon est une implémentation entièrement repensée d'Ethereum, actuellement écrite en Go mais pour laquelle des implémentations dans d'autres langages sont prévues. L'objectif d'Erigon est de fournir une implémentation plus rapide, plus modulaire et plus optimisée d'Ethereum. Il peut effectuer une synchronisation complète des nœuds d'archive en utilisant moins de 2 To d'espace disque, et ce en moins de 3 jours.

Modes de synchronisation

Pour suivre et vérifier les données actuelles sur le réseau, le client Ethereum doit se synchroniser avec le dernier état du réseau. Cela se fait en téléchargeant des données depuis des pairs, en vérifiant cryptographiquement leur intégrité et en construisant une base de données blockchain en local.

Les modes de synchronisation offrent des approches différentes de ce processus, avec divers compromis. Les clients diffèrent également dans leur implémentation des algorithmes de synchronisation. Reportez-vous toujours à la documentation officielle du client choisi pour connaître les détails relatifs à l'implémentation.

Vue d'ensemble des stratégies

Aperçu général des approches de synchronisation utilisées dans les clients prêts pour le réseau principal :

Synchronisation totale {#full-sync}

La synchronisation complète permet de télécharger 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 depuis le début.

  • Minimise la confiance et offre la plus haute sécurité en vérifiant chaque transaction.
  • Avec un nombre croissant de transactions, le traitement de toutes les transactions peut prendre des jours, voire des semaines.
Synchronisation rapide

La synchronisation rapide permet de télécharger tous les blocs (y compris les en-têtes, les transactions et les reçus), vérifie tous les en-têtes, télécharge l'état et le vérifie au regard des en-têtes.

  • Repose sur la sécurité du mécanisme de consensus.
  • La synchronisation ne prend que quelques heures.
Synchronisation légère

Le mode client léger permet de télécharger tous les en-têtes de bloc, les données de bloc et en vérifie certaines aléatoirement. Synchronise uniquement le point de la chaîne à partir du point de contrôle de confiance.

  • Ne récupère que les derniers états en s'appuyant sur la confiance dans les développeurs et le mécanisme de consensus.
  • Le client prêt à être utilisé avec l'état actuel du réseau en quelques minutes.

En savoir plus sur les clients légers

Synchronisation instantanée

Implémenté par Geth. L'utilisation d'instantanés dynamiques servis par les pairs permet de récupérer toutes les données du compte et de stockage sans télécharger les nœuds d'arborescence intermédiaires puis de reconstruire ensuite l'arborescence Merkle localement.

  • Stratégie de synchronisation la plus rapide développée par Geth, utilisée actuellement par défaut.
  • Économise l'utilisation du disque et de bande passante du réseau sans pour autant sacrifier la sécurité.

En savoir plus sur Snap

Synchronisation Warp

Implémenté par OpenEthereum. Les nœuds génèrent régulièrement des instantanés d'état critique de consensus et tout pair peut récupérer ces instantanés sur le réseau, permettant une synchronisation rapide à partir de ce point.

  • Le mode de synchronisation le plus rapide et par défaut d'OpenEthereum repose sur des instantanés statiques servis par des pairs.
  • Une stratégie similaire à la synchronisation instantanée mais sans certains avantages en matière de sécurité.

En savoir plus sur Warp

Synchronisation Beam

Implémenté par Nethermind et Trinity. Fonctionne comme une synchronisation rapide, mais télécharge également les données nécessaires pour exécuter les derniers blocs, vous permettant ainsi d'interroger la chaîne dès les premières minutes de démarrage.

  • Synchronise l'état d'abord et vous permet d'interroger RPC en quelques minutes.
  • Toujours en développement et pas entièrement fiable, la synchronisation en arrière-plan est ralentie et les réponses RPC peuvent échouer.

En savoir plus sur Beam

Configuration dans le client

Les clients offrent des options de configuration étendues pour répondre à vos besoins. Choisissez celle qui vous convient le mieux en fonction du niveau de sécurité, des données disponibles et des coûts. En dehors de l'algorithme de synchronisation, vous pouvez également configurer l'élagage de différents types d'anciennes données. L'élagage permet de supprimer les données obsolètes, par exemple en supprimant les nœuds d'état d'arborescence qui sont inaccessibles à partir de blocs récents.

Lisez attentivement la documentation ou la page d'aide du client pour savoir quel mode de synchronisation est le mode par défaut. Vous pouvez définir le type de synchronisation préféré lors de la configuration, comme suit :

Configurer la synchronisation légère dans GETH ou ERIGON

geth --syncmode "light"

Pour plus de détails, consultez le tutoriel sur l'exécution de Geth light node.

Configurer une synchronisation complète avec archive dans Besu

besu --sync-mode=FULL

Comme toute autre configuration, elle peut être définie avec le drapeau de démarrage ou dans le fichier de configuration. Un autre exemple est Nethermind : il vous invite à choisir une configuration lors de la première initialisation et crée un fichier de configuration.

Clients de consensus (anciennement clients 'Eth2')

Il existe de nombreux clients de consensus (précédemment connus sous le nom de clients 'Eth2') qui supportent les mises à niveau du consensus. Ils exécutent la Chaîne Phare et fourniront un mécanisme de consensus de preuve d'enjeu pour exécuter les clients après La Fusion.

Voir les clients de consensus.

ClientLangageSystèmes d'exploitationRéseaux
TekuJavaLinux, Windows, macOSChaîne phare, Prater
NimbusNimLinux, Windows, macOSBeacon Chain, Prater
LighthouseRustLinux, Windows, macOSChaîne phare, Prater, Pyrmont
LodestarTypeScriptLinux, Windows, macOSChaîne phare, Prater
PrysmAllerLinux, Windows, macOSChaîne phare, Gnosis, Prater, Pyrmont

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.

Vous pouvez facilement faire fonctionner votre propre nœud en utilisant 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 le facteur le plus important est l'espace disque. La synchronisation de la blockchain Ethereum est très exigeante en entrées/sorties. Il est préférable d'avoir un disque SSD. Pour exécuter un client Ethereum sur un disque dur, vous aurez besoin d'au moins 8 Go de RAM à 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

Le mode de synchronisation que vous choisissez aura une incidence sur l'espace nécessaire, mais nous avons estimé ci-dessous l'espace disque dont vous aurez besoin pour chaque client.

ClientTaille du disque (synchro. rapide)Taille du disque (archive complète)
Geth400 Go+6 To+
OpenEthereum280 Go+6 To+
Nethermind200 Go+5 To+
Besu750 Go+5 To+
ErigonN/A1 To+
  • Note : Erigon ne synchronise pas rapidement, mais le plein de Pruning est possible (~500 Go)

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 données les plus récentes concernant Geth et OpenEthereum, vous pouvez consulter les pages données de synchronisation complètes et 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 sur ARM propose des images des clients Geth, OpenEthereum, 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.

Complément d'information

Il existe de nombreuses informations sur les clients Ethereum sur Internet. Voici quelques ressources qui pourraient vous être utiles.

Cet article vous a été utile ?

👈

Précédent

Gaz

Suivant

Ajouter un nœud
👉