Résumé
Les blockchains que vous connaissez et aimez ont une structure assez rigide. En tant que développeur, cela vous donne deux options : développer des applications dans un environnement restrictif ou forker le code et créer votre propre chaîne. Il n'est toutefois pas si facile de créer sa propre chaîne, car vous devez également lancer un réseau et déterminer quel
mécanisme de consensus utiliser.
Tendermint est un logiciel open-source de lancement de blockchains qui permet de développer des applications dans n'importe quel langage. Mieux encore, elles peuvent communiquer avec d'autres blockchains.
La création d'un réseau de
cryptomonnaie ou de
blockchain demande beaucoup plus d'efforts que la simple initialisation d'une base de données. Elle nécessite un équilibre délicat entre les incitations et les compromis entre sécurité, décentralisation et évolutivité.
Sans surprise, une série d'approches différentes ont été explorées par les équipes qui cherchent à construire les écosystèmes blockchain les plus solides. Dans cet article, nous allons examiner une de ces approches :
Tendermint.
Une grande partie de Tendermint vous semblera familier si vous connaissez un peu les blockchains. Récapitulons quelques concepts clés avant d'approfondir le sujet.
Comprendre l'architecture d'une blockchain
Tendermint est une sorte de groupe de
blockchains.
Bitcoin et
Ethereum le sont aussi. N'oubliez pas qu'il ne s'agit pas seulement de la base de données blockchain elle-même, mais également du
réseau pair à pair des
nœuds, de la façon dont ils interagissent et des choses intéressantes que vous pouvez faire avec les transactions et les
smart contracts. L'objectif ici est que chacun soit d'accord sur un
état (comme un instantané de la base de données), même s'il ne fait confiance à personne d'autre.
Pour la plupart, les principales blockchains actuelles sont dotées des caractéristiques secrètes qui rend cela possible. Cependant, elles reposent souvent sur une architecture monolithique: un concept d'ingénierie logicielle qui signifie que les composants sont interconnectés et interdépendants. Vous ne pouviez pas simplement en prendre une partie et la brancher sur quelque chose d'autre.
L'architecture monolithique n'est pas idéale si vous voulez de la flexibilité. Dans le modèle opposé (avec une architecture modulaire), vous pouvez modifier des composants individuels sans vous soucier de tout casser. Avec une structure monolithique, vous devez vous assurer que chaque composant reste compatible lorsque vous mettez à niveau un seul des composants.
Maintenant que nous comprenons cette distinction, nous pouvons aborder plus en profondeur le protocole Tendermint.
Tolérance aux pannes byzantines (BFT)
Vous savez peut-être que la grande innovation du Bitcoin est qu'il a résolu ce que l'on appelle le
Problème des généraux byzantins. Nous n'entrerons pas dans les détails du problème (consultez notre article sur la
tolérance aux pannes byzantines si vous êtes intéressé). Il vous suffit de savoir qu'il détaille un scénario dans lequel les participants doivent communiquer dans un cadre distribué.
Ces participants ne savent pas si les autres mentent ou si les messages envoyés entre eux sont modifiés. On dit d'un système qu'il dispose d'une tolérance aux pannes byzantines (BFT) si les participants peuvent se mettre d'accord sur un ensemble de faits, même en présence de ces problèmes.
Bien évidemment, dans un cadre décentralisé, il est primordial d'obtenir ce résultat correctement. Les cryptomonnaies qui ne sont pas tolérantes aux pannes byzantines ne fonctionnent pas vraiment. Il faudrait une sorte de coordination centralisée, ce qui va à l'encontre du but recherché. Comme beaucoup de devises numériques, le Bitcoin contourne ce problème en utilisant un algorithme de consensus de
preuve de travail (PoW).
Les trois couches d'une blockchain
Nous connaissons donc la différence entre architecture monolithique et architecture modulaire, et nous savons que les réseaux de cryptomonnaies décentralisés doivent être tolérants aux pannes byzantines. Mentionnons les couches que nous voyons généralement dans une blockchain : la couche applicative, la couche consensus et la couche réseau.
Tout d'abord, clarifions rapidement la terminologie. Nous utiliserons les termes « Tendermint » et « Tendermint Core » de manière interchangeable, car nous nous concentrons uniquement sur la technologie.
Cependant, Tendermint est le nom de la société (fondée par le développeur qui a rédigé le livre blanc original, Jae Kwon), tandis que Tendermint Core est le logiciel sur lequel la société travaille. Plus précisément, le logiciel possède deux composantes principales : son moteur de consensus principal (Tendermint Core) et son interface applicative (ABCI).
Tendermint Core est un système qui permet la tolérance aux pannes. En substance, il s'agit d'un grand ordinateur distribué qui montre simultanément le même état à chacun. Tant qu'au moins deux tiers des participants sont honnêtes, tout fonctionne sans problème. Mais c'est le cas de presque toutes les blockchains, non ? Qu'est-ce qui le rend si spécial ?
Tout d'abord, le mécanisme de consensus utilisé est la
preuve d'enjeu (PoS). Pour chaque période, un nœud aléatoire provenant d'un ensemble de validateurs est sélectionné. Ce nœud doit ensuite proposer le prochain
bloc (dans ce qu'on appelle un système
round-robin). Si les autres validateurs sont satisfaits, le nouveau bloc est ajouté et la chaîne est mise à jour. La finalité est instantanée, contrairement au Bitcoin ou à Ethereum, il n'est pas nécessaire d'attendre des
confirmations pour vous assurer que votre transaction est valide.
Mais attendez, ce n'est pas fini. L'architecture de Tendermint Core est modulaire, la couche applicative étant séparée des couches consensus et réseau. En français, cela signifie que vous pouvez brancher votre propre couche applicative aux autres couches. Il n'est pas nécessaire de vous inquiéter des incitations ou des algorithmes de consensus.
Peut-être que cela n'est pas trop excitant pour l'utilisateur final. Mais pour les développeurs, la possibilité de tirer parti d'un cadre existant signifie qu'ils peuvent se lancer directement dans la création d'applications sans avoir à mettre en place tout un réseau. Les données de la blockchain peuvent être acheminées vers la couche intégrée, ce qui permet aux développeurs d'écrire des logiciels dans n'importe quel langage.
La magie se produit avec ce qu'on appelle l'interface d'application blockchain, ou simplement, ABCI. Pensez-y comme aux broches GPIO que vous avez sur un Raspberry Pi. Vous pouvez raccorder tous types de composants tiers à ces éléments, des DEL aux systèmes d'arrosage élaborés pour vos plantes. De la même manière, l'ABCI définit la frontière entre la blockchain et les applications qui s'y trouvent.
Qu'est-ce qui est si génial dans Tendermint Core ?
La séparation de l'interface de l'application et du mécanisme de consensus permet une plus grande flexibilité pour une gamme d'applications décentralisées, dans le but d'intégrer n'importe quel langage de programmation dans leur logique commerciale.
Pour un exemple concret de ce qu'il est possible de faire, il suffit de consulter le site
Ethermint : un projet qui a pris la base de code d'Ethereum, supprimé le mécanisme de preuve de travail et ajouté la machine virtuelle Ethereum sur Tendermint.
Cela a permit de réaliser des choses intéressantes. Tout d'abord, les développeurs Ethereum pourraient facilement transférer leurs smart contracts vers le nouveau moteur, ou écrire de nouveaux contrats dans le langage Solidity. En plus de fournir les fonctionnalités Ethereum, Ethermint agit comme un Ethereum de preuve d'enjeu, nous donnant un aperçu de ce à quoi pourrait ressembler une implémentation de
Casper dans
Ethereum 2.0.
Interopérabilité blockchain
La promesse d'un « Internet de blockchains » est ce qui attire beaucoup de personnes vers les protocoles basés sur Tendermint. L'
interopérabilité est un ajout de longue date à l'espace des cryptomonnaies, ce qui signifie que des centaines de blockchains individuelles deviendraient compatibles.
À l'heure actuelle, beaucoup de travail a été consacré au
SDK Cosmos, un framework open source qui permet à quiconque de créer une blockchain publique ou privée spécifique à une application. Ces blockchains peuvent ensuite être connectées au réseau Cosmos dans son ensemble, via ce qu'on appelle le Cosmos Hub, où elles peuvent communiquer avec d'autres personnes.
En tant que moteur blockchain, Tendermint a attiré l'attention de nombreux acteurs de la crypto-sphère, des développeurs aux utilisateurs finaux.
Si le logiciel continue de gagner en traction, il pourrait très bien servir d'épine dorsale pour un Internet de blockchains. Comme nous l'avons vu, quelques projets ont déjà été lancés avec le SDK Cosmos pour concrétiser cette vision.