S'inscrire
S'inscrire
Bitcoin repose sur un réseau composé de dizaines de milliers de nœuds dispersés à travers le monde. Chaque utilisateur peut librement lancer son propre nœud pour participer, car Bitcoin est un système sans autorisation. Mais comment un ordinateur fait-il concrètement pour se connecter au reste du réseau et se synchroniser sur la blockchain ? C’est la question à laquelle nous répondons dans cet article.
Un nœud Bitcoin, ou « node » en anglais, est simplement un ordinateur qui exécute un logiciel client du protocole Bitcoin. Le logiciel le plus connu et le plus utilisé est Bitcoin Core, qui constitue environ 99 % du réseau.
Un nœud Bitcoin participe au réseau en maintenant une copie de la blockchain, qui est l'historique complet de toutes les transactions Bitcoin. Il a pour fonctions de vérifier et de relayer les nouvelles transactions ainsi que les nouveaux blocs. Bien qu'il soit possible pour un nœud de participer au minage, cette activité est aujourd'hui majoritairement distincte de l’opération d'un nœud en lui-même, car on utilise des ordinateurs spécialisés appelés ASICs.
Il existe différents types de nœuds sur Bitcoin. Les nœuds complets conservent une copie intégrale de la blockchain et vérifient chaque bloc et chaque transaction. Il y a également les nœuds légers, ou « SPV », qui stockent seulement les en-têtes des blocs. Enfin, il y a les nœuds élagués, qui vérifient tous les blocs de la blockchain, mais ne conservent en mémoire que les blocs les plus récents.
Pour connecter un nouveau nœud au réseau Bitcoin, la première étape consiste à télécharger et à installer Bitcoin Core ou un autre logiciel client sur un ordinateur. Une fois installé, le nœud doit pouvoir accéder aux informations de la blockchain. Cependant, lors de son premier lancement, il n'a aucune information sur ses pairs. Alors, comment établir cette première connexion avec le réseau Bitcoin ?
Le processus de découverte pour un nœud utilise différents mécanismes pour se connecter à d'autres nœuds, selon un ordre de priorité spécifique.
La première action que le nœud va entreprendre est de consulter un fichier nommé « peers.dat » dans Bitcoin Core. Ce fichier stocke les informations de connexion des pairs avec lesquels le nœud a déjà interagi par le passé. À chaque redémarrage du nœud, le logiciel tente de se connecter avec les adresses IP enregistrées dans ce fichier. Évidemment, pour un nouveau nœud, ce fichier est vide puisqu'il n'a pas encore eu d'interactions avec le réseau. Cependant, il est possible d'ajouter manuellement des adresses IP dans ce fichier.
Si le fichier peer.dat est vide, le nœud passe alors au deuxième mécanisme de connexion, qui consiste à contacter les « DNS seeds ». Ces serveurs, maintenus par des développeurs reconnus dans la communauté Bitcoin, servent de points de connexion initiaux. Lorsqu'un nouveau nœud se lance, il sollicite ces serveurs pour obtenir une liste aléatoire d’adresses IP de nœuds Bitcoin présumés actifs, ce qui lui permet ainsi d’établir des connexions et de rejoindre le réseau. Actuellement, il existe 10 serveurs DNS seeds :
Vous pouvez retrouver cette liste actualisée sur le GitHub de Bitcoin Core.
Normalement, à ce stade, le nœud devrait réussir à établir des connexions. Cependant, si les DNS seeds ne répondent pas dans les 60 secondes, un troisième mécanisme peut être utilisé en dernier recours : les « seed nodes ».
Dans le code source du logiciel Bitcoin Core, il y a une liste d’adresses IP de plus de 1 000 nœuds à priori actifs. Cette liste est inscrite en dur dans le logiciel. Si les deux premiers mécanismes échouent, le nœud tentera de se connecter grâce à cette liste pour établir une première connexion et obtenir d'autres adresses IP de nœuds Bitcoin.
Grâce à ces mécanismes, il est extrêmement improbable qu'un nœud Bitcoin ne réussisse pas à se connecter au réseau.
➤ Découvrez 6 raisons de faire tourner votre propre nœud Bitcoin.
Sur un nœud Bitcoin, il existe deux types de connexions avec les autres nœuds : les connexions entrantes et les connexions sortantes. Les connexions sortantes se produisent lorsque c'est notre nœud qui lance la connexion vers un autre nœud. Par défaut, un nœud Bitcoin Core tente d'établir des connexions avec 8 pairs sortants. Ces connexions sont généralement considérées comme plus fiables, car c'est l'utilisateur qui a choisi de se connecter à ces nœuds spécifiques.
À l'inverse, les connexions entrantes se produisent lorsqu'un autre nœud établit une connexion avec notre nœud. Bitcoin Core permet jusqu'à 125 connexions entrantes (ce nombre peut être ajusté). Les connexions entrantes sont perçues comme moins fiables que les sortantes, car elles sont initiées de l'extérieur et pourraient donc potentiellement provenir d'entités malveillantes.
Cependant, les informations échangées entre les pairs sortants et entrants sont identiques. Par exemple, si mon nœud prend connaissance d’une nouvelle transaction, il va l’envoyer à la fois à ses pairs sortants et à ses pairs entrants.
➤ Tutoriel : Comment mettre en place un nœud Bitcoin Core ?
Lorsqu'un nœud cherche à se connecter au réseau Bitcoin, il dispose de trois mécanismes pour trouver d'autres ordinateurs avec lesquels échanger les informations de la blockchain et les transactions. Par ordre de priorité, le nœud consultera d'abord son fichier local peers.dat pour vérifier s'il contient des adresses IP d'autres nœuds. Si ce fichier est vide, le nœud sollicitera une liste d'adresses IP auprès de serveurs dédiés appelés « DNS seeds ». En dernier recours, si ces serveurs ne fournissent pas de réponse, le nœud peut utiliser les adresses IP des « seed nodes » inscrites directement dans le code source de Bitcoin Core.
Une fois les premières connexions établies, le nœud demandera à ses pairs les blocs nécessaires pour se synchroniser sur la blockchain avec le plus de travail accumulé. Après avoir terminé ce processus de vérification depuis le bloc de Genèse, publié par Satoshi Nakamoto en 2009, le nœud Bitcoin sera pleinement opérationnel.