Quelques définitions de base
Les nœuds et le client qui aide les humains à faire fonctionner les nœuds constituent une partie essentielle de la pile technologique d’un réseau blockchain. Aujourd’hui, nous allons comparer et opposer le fonctionnement de ces éléments dans les réseaux Ethereum et Cardano. Avant de nous plonger dans le vif du sujet, il convient d’établir quelques définitions de base.
En informatique, un nœud est un dispositif physique dans un réseau qui est capable d’envoyer, de recevoir ou de transmettre des informations. Sous le capot, les réseaux blockchain ne sont qu’un ensemble de règles concernant l’échange et le stockage de messages. Les nœuds d’un réseau blockchain sont de formes et de tailles différentes, mais ils font tous précisément ce que font les nœuds d’un réseau informatique : ils envoient, reçoivent ou transmettent des informations à d’autres nœuds. Cette idée générale est plus complexe et plus compliquée, mais pour les besoins de cet article, nous nous en tiendrons à cette définition de base.
En informatique, un client fait vaguement référence à quelque chose qui utilise une ressource externe ou distante. Par exemple, vos navigateurs Chrome, Brave ou Safari sont des clients HTTP qui communiquent avec des serveurs Web distants pour afficher cet article ou d’autres contenus Web sur votre écran. De même, la blockchain fournit différents clients pour vous permettre d’effectuer différentes interactions. Par exemple, les clients Wallet de blockchain vous permettent de recevoir ou d’envoyer des crypto-monnaies à d’autres personnes. Les clients Node aident les techniciens à configurer le matériel informatique pour envoyer, recevoir et transmettre des informations sur le réseau blockchain. Lorsque vous envoyez 2 Ada ou 0,1 Eth à votre ami ou à un site de commerce électronique, ce message est généralement traité et enregistré dans la blockchain par un client de nœud.
Une petite particularité des clients de nœuds de blockchain par rapport, par exemple, à notre client de navigateur est que les nœuds de blockchain et leurs clients sont généralement si proches qu’ils sont parfois désignés de manière interchangeable. Le client de votre navigateur vit dans votre navigateur et communique avec un serveur web à l’autre bout du monde. En revanche, les nœuds de blockchain et leurs clients vivent le plus souvent sur le même appareil. Cependant, malgré leur proximité, les nœuds de blockchain et les clients de nœuds de blockchain sont deux choses distinctes.
Les nœuds de blockchain reçoivent et valident des données, transmettent des messages ou envoient des données validées à d’autres nœuds. Les nœuds de la blockchain sont l’endroit où sont stockées les règles de base de la blockchain.
Les clients des nœuds de blockchain sont les directeurs d’un nœud de blockchain. Les clients de nœuds de blockchain permettent aux développeurs de créer des transactions et d’effectuer des opérations minières. Ils peuvent être dotés de nombreuses fonctionnalités supplémentaires adaptées à l’environnement dans lequel le nœud de blockchain fonctionne. Par exemple, ils peuvent stocker une copie de la blockchain qu’ils obtiennent du nœud d’une manière qui est optimisée pour la lecture par un logiciel spécifique. Certains clients fournissent de multiples protocoles de mise en réseau pour que les systèmes non-blockchain puissent communiquer avec le nœud blockchain situé derrière le client. Les clients peuvent être spécifiques à un langage de programmation.
Clients de nœuds sur Ethereum
Le nœud Ethereum, lorsqu’il a été conçu et créé, a été défini par une spécification formelle. Une spécification formelle est une façon ringarde de dire que les instructions pour faire ou construire quelque chose sont précisément définies par les mathématiques. Parce que le nœud Ethereum est formellement spécifié, il est possible de construire différents clients qui répondent à des types spécifiques d’utilisateurs tout en restant interopérable avec d’autres clients et en obéissant aux règles du ledger. De ce fait, et du fait qu’Ethereum existe depuis 2015, il bénéficie de l’écosystème de nœuds clients le plus riche par rapport aux autres réseaux blockchain.
La fondation Ethereum maintient des clients pour les communautés de langages de programmation populaires, y compris Go (Geth, Prysm), .Net/C#, Java et Rust. Il existe un client Ethereum pour lire rapidement un nœud et communiquer avec la blockchain Ethereum à l’aide d’une simple interface de ligne de commande informatique (OpenEthereum).
Les clients de nœuds sur Ethereum peuvent être des clients de nœuds complets, des clients légers ou des clients distants. Les clients full-node détiennent l’historique complet de la blockchain et vous permettent d’effectuer toutes les actions possibles supportées par la blockchain. Les clients légers ne détiennent généralement que des données partielles de la blockchain et vous permettent de faire des choses spécifiques (et limitées). Ils ont tendance à être plus rapides et à nécessiter moins de ressources pour fonctionner. Les clients distants ne stockent pas de données et ne valident pas de messages. Ils se connectent à un client complet ou léger à distance pour effectuer leurs tâches. Ils sont généralement utilisés pour créer des applications de type portefeuille. L’avantage d’un client distant est que vous pouvez l’intégrer dans des endroits comme le navigateur pour permettre à l’utilisateur de construire, de signer des transactions ou de décoder quelque chose dans le navigateur en utilisant sa phrase clé. Cependant, tout ce qui doit être soumis à la blockchain ou vérifié par elle est ensuite envoyé au client distant complet ou léger pour être traité.
Ces nœuds et clients de nœuds sont pour la plupart interchangeables. Vous pouvez connecter un client léger à un nœud complet ou un client complet à un nœud d’archivage. En général, un client de nœud évalue le type de nœud auquel il est connecté et se configure en conséquence.
L’une des conséquences de l’existence d’un si grand nombre de clients, en particulier ceux qui sont proches du cœur de la blockchain, est la coordination et la diffusion des mises à jour des systèmes centraux d’Ethereum. Cela peut être un défi. Sans coordination de l’ensemble de la communauté, on peut se retrouver dans une situation où un client n’est pas prêt à supporter la mise à jour et peut créer des messages sur le réseau qui causent des problèmes. En août 2021, l’un des clients de nœuds populaires, Geth, avait de nombreux utilisateurs qui utilisaient des versions obsolètes du client et cela a provoqué un fork sur le réseau Ethereum. Un fork sur la blockchain se produit lorsqu’il y a plusieurs versions concurrentes de l’histoire. Ces utilisateurs ont pu mettre à jour les nœuds clients et l’historique a été réconcilié.
Clients de nœuds sur Cardano
En ce qui concerne les nœuds et les clients sur Cardano, les choses ne font que commencer. Au moment où nous écrivons ces lignes, il n’y a qu’un seul nœud et une seule implémentation client en production. Elle est écrite en Haskell et maintenue par IOG, l’une des entités fondatrices de Cardano. Cela signifie que si vous voulez construire une application riche qui touche de près la couche blockchain, elle doit être écrite en Haskell si votre application veut construire des blocs ou traiter des blocs provenant d’autres nœuds Cardano. Ce client suppose également que vous êtes intéressé par la production ou le relais de blocs.
Les implémentations du nœud et du client d’IOG fournissent à la fois une interface CLI et REST pour soumettre des transactions au client du nœud et poser des questions de base.
IOG a une autre implémentation de nœud et de client en développement appelée Mithril. Elle est actuellement en cours de test et devrait être publiée dans les mois à venir. Mithril permet de créer un nœud client complet et de le synchroniser complètement avec la blockchain en quelques heures plutôt qu’en quelques jours ! Checkout full article @lidonation’ post_id=138]heures plutôt que des jours.[/tweet] À l’avenir, Mithril sera également un composant clé pour le développement de clients légers de type Ethereum.
Via le projet Catalyst, la communauté Cardano imagine des clients de nœuds alternatifs pour répondre aux cas d’utilisation et aux communautés de langages de programmation actuellement mal servis par les implémentations de nœuds et de clients IOG.
L’équipe de Five Binaries veut développer un client qui s’adresse spécifiquement aux applications de métadonnées : Il s’agit de Metadata oracle node.
TxPipes veut développer un Rust node client qui s’occupe spécifiquement des données et des applications à lecture intensive. Il veut être natif du nuage, permettant de stocker efficacement les données dans le nuage plutôt que sur le serveur local comme le fait le client actuel du nœud IOG. Le client TxPipe fournirait également une prise en charge de la communication réseau HTTP/JSON et gRPC.
Comme pour Ethereum, la mise en œuvre du nœud et du client Cardano est formellement spécifiée, de sorte que ces logiciels et bien d’autres peuvent être écrits pour des environnements spécifiques tout en étant interopérables avec les clients actuels et futurs d’IOG.
Conclusion
Les réseaux de blockchains vivent et meurent en fonction du nombre de communautés et de l’adhésion mondiale qu’ils sont capables d’obtenir après leur lancement. Le fait de disposer d’un riche écosystème d’implémentations de nœuds et de clients est un bon signe qu’un réseau de blockchains bénéficie de l’adhésion de la communauté des entreprises.
Pour Ethereum, il y a de fortes chances que vous l’ayez vu à la télévision et sur les panneaux d’affichage ou sur un écran quelconque plusieurs fois avant de lire cet article. Il a obtenu l’adhésion de la communauté des affaires.
Le fait que Cardano soit déjà sur le point d’avoir plus d’implémentations de nœuds et de clients, un an seulement après avoir lancé la prise en charge des applications blockchain de contrats intelligents, est de bon augure pour Cardano. Sa communauté est riche et, à mesure que les travaux se poursuivent, l’avenir nous dira dans quelle mesure la communauté des entreprises au sens large y adhère.
Aucun commentaire pour le moment...