LA BASE D’UNE NOUVELLE ÉCONOMIE DE JETONS. Rejoignez l’ écosystème le plus puissant
de blockchains connectées
À proprement parler, Cosmos est un réseau décentralisé de blockchains parallèles indépendantes, chacune alimentée parBFTalgorithmes de consensus comme le consensus Tendermint .
En d’autres termes, Cosmos est un écosystème de blockchainsqui peuvent évoluer et interagir les uns avec les autres. Avant Cosmos, les blockchains étaient cloisonnées et incapables de communiquer entre elles. Ils étaient difficiles à construire et ne pouvaient gérer qu’une petite quantité detransactionspar seconde. Cosmos résout ces problèmes avec une nouvelle vision technique. Afin de comprendre cette vision, nous devons revenir aux fondamentaux de la technologie blockchain.
Une blockchain peut être décrite comme un registre numérique maintenu par un ensemble de validateurs qui reste correct même si certains des validateurs (moins d’un tiers) sont malveillants. Chaque partie stocke une copie du grand livre sur son ordinateur et la met à jour selon les règles définies par le protocole lorsqu’il reçoit des blocs de transactions. L’objectif de la technologie blockchain est de s’assurer que le registre est correctement répliqué, ce qui signifie que chaque partie honnête voit la même version du registre à un moment donné.
Le principal avantage de la technologie blockchain est la possibilité pour les parties de partager un registre sans avoir à s’appuyer sur une autorité centrale. Les blockchains sont décentralisées . La première et la plus célèbre application de la technologie blockchain aujourd’hui est le Bitcoin, une monnaie décentralisée.
Maintenant que nous avons une meilleure compréhension de ce qu’est une blockchain d’un point de vue de haut niveau, regardons la définition de la blockchain avec un angle plus technique. Une blockchain est une machine à états déterministe répliquée surnœuds complets qui conserve la sécurité du consensus tant que moins d’un tiers de ses responsables sont byzantin. Décomposons cela.
Du point de vue de l’architecture, les blockchains peuvent être divisées en trois couches conceptuelles:
La machine à états est la même que la couche d’application. Il définit l’état de l’application et les fonctions de transition d’état. Les autres couches sont chargées de répliquer la machine à états sur tous les nœuds qui se connectent au réseau.
Pour comprendre comment Cosmos s’intègre dans l’écosystème de la blockchain, nous devons revenir au début de l’histoire de la blockchain. La première blockchain était Bitcoin, une monnaie numérique peer-to-peer créée en 2008 qui utilisait un nouveau mécanisme de consensus connu sous le nom dePreuve de travail (PoW). C’était la première application décentralisée sur une blockchain. Bientôt, les gens ont commencé à réaliser le potentiel des applications décentralisées et le désir d’en créer de nouvelles a émergé dans la communauté.
À l’époque, il y avait deux options pour développer des applications décentralisées: soit fourcher la base de code Bitcoin, soit construire dessus. Cependant, la base de code Bitcoin était très monolithique; les trois couches – mise en réseau, consensus et application – ont été mélangées. De plus, le langage de script Bitcoin était limité et peu convivial. Il y avait un besoin de meilleurs outils.
En 2014, Ethereum a présenté une nouvelle proposition de création d’applications décentralisées. Il y aurait une seule blockchain où les gens pourraient déployer n’importe quel type de programme. Ethereum y est parvenu en transformant la couche Application en une machine virtuelle appelée Ethereum Virtual Machine (EVM) . Cette machine virtuelle était capable de traiter des programmes appeléscontrats intelligents que tout développeur pourrait déployer sur la blockchain Ethereum dans un sans permissionmode. Cette nouvelle approche a permis à des milliers de développeurs de commencer à créer des applications décentralisées (dApps). Cependant, les limites de cette approche sont rapidement devenues apparentes et persistent encore à ce jour.
La première limitation est mise à l’échelle- les applications décentralisées construites sur Ethereum sont inhibées par un taux partagé de 15 transactions par seconde. Cela est dû au fait qu’Ethereum utilise toujours la preuve de travail et qu’Ethereum dApps est en concurrence pour les ressources limitées d’une seule blockchain.
La deuxième limitation est la flexibilité relativement faible accordée aux développeurs. Étant donné que l’EVM est un bac à sable qui doit prendre en charge tous les cas d’utilisation, il s’optimise pour le cas d’utilisation moyen. Cela signifie que les développeurs doivent faire des compromis sur la conception et l’efficacité de leur application (par exemple, en exigeant l’utilisation du modèle de compte dans une plateforme de paiement où un modèle UTXO peut être préféré). Entre autres, ils sont limités à quelques langages de programmation et ne peuvent pas implémenter l’exécution automatique de code.
La troisième limitation est que chaque application est limitée en la souveraineté, car ils partagent tous le même environnement sous-jacent. Essentiellement, cela crée deux couches dela gouvernance: celui de l’application et celui de l’environnement sous-jacent. Le premier est limité par le second. S’il y a un bug dans l’application, rien ne peut être fait à ce sujet sans l’approbation de la gouvernance de la plateforme Ethereum elle-même. Si l’application nécessite une nouvelle fonctionnalité dans l’EVM, elle doit à nouveau s’appuyer entièrement sur la gouvernance de la plateforme Ethereum pour l’accepter.
Ces limitations ne sont pas spécifiques à Ethereum mais à toutes les blockchains essayant de créer une plate-forme unique qui conviendrait à tous les cas d’utilisation. C’est là que Cosmos entre en jeu.
La vision de Cosmos est de permettre aux développeurs de créer facilement des blockchains et de briser les barrières entre les blockchains en leur permettant de traiter les uns avec les autres. L’objectif final est de créer un Internet of Blockchains, un réseau de blockchains capables de communiquer entre eux de manière décentralisée. Avec Cosmos, les blockchains peuvent maintenir la souveraineté, traiter les transactions rapidement et communiquer avec d’autres blockchains de l’écosystème, ce qui le rend optimal pour une variété de cas d’utilisation.
Cette vision est réalisée grâce à un ensemble d’outils open source comme Menthe, le SDK Cosmos et IBCconçu pour permettre aux utilisateurs de créer rapidement des applications blockchain personnalisées, sécurisées, évolutives et interopérables. Examinons de plus près certains des outils les plus importants de l’écosystème ainsi que l’architecture technique du réseau Cosmos. Notez que Cosmos est un projet communautaire open source initialement construit par l’équipe Tendermint. Tout le monde est invité à créer des outils supplémentaires pour enrichir le plus grand écosystème de développeurs.
Jusqu’à récemment, la construction d’une blockchain nécessitait de construire les trois couches (mise en réseau , consensus et application ) à partir de zéro. Ethereum a simplifié le développement d’applications décentralisées en fournissant une blockchain de machine virtuelle sur laquelle n’importe qui pouvait déployer une logique personnalisée sous la forme de contrats intelligents. Cependant, cela n’a pas simplifié le développement des blockchains elles-mêmes. Tout comme Bitcoin, Go-Ethereum reste une pile technologique monolithique difficile à utiliser et à personnaliser. C’est là qu’intervient Tendermint, créé par Jae Kwon en 2014.
Tendermint BFT est une solution qui regroupe les couches de mise en réseau et de consensus d’une blockchain dans un moteur générique, permettant aux développeurs de se concentrer sur le développement d’ applications par opposition au protocole sous-jacent complexe. En conséquence, Tendermint économise des centaines d’heures de temps de développement. Notez que Tendermint désigne également le nom du tolérant aux fautes byzantines (BFT)algorithme de consensusutilisé dans le moteur Tendermint BFT. Pour en savoir plus sur l’histoire des protocoles de consensus et du BFT, vous pouvez consulter ce podcast sympa du co-fondateur de Tendermint Ethan Buchman.
Le moteur Tendermint BFT est connecté à l’application par un protocole de socket appelé Application Blockchain Interface (ABCI). Ce protocole peut être enveloppé dans n’importe quel langage de programmation, ce qui permet aux développeurs de choisir un langage qui correspond à leurs besoins.
Mais ce n’est pas tout . Voici les propriétés qui font de Tendermint BFT un moteur de blockchain à la pointe de la technologie:
Tendermint BFT réduit le temps de développement d’une blockchain de plusieurs années à quelques semaines, mais la création d’une application ABCI sécurisée à partir de zéro reste une tâche difficile. C’est pourquoi leSDK Cosmos existe.
Le SDK Cosmos est un cadre généralisé qui simplifie le processus de création d’applications de blockchain sécurisées au-dessus de Tendermint BFT. Il repose sur deux principes majeurs:
Le SDK Cosmos est également livré avec un ensemble d’outils de développement utiles pour créer des interfaces de ligne de commande (CLI), des serveurs REST et une variété d’autres bibliothèques d’utilitaires couramment utilisées.
Une dernière remarque: le SDK Cosmos, comme tous les outils Cosmos, est conçu pour être modulaire. Aujourd’hui, il permet aux développeurs de s’appuyer sur Tendermint BFT. Cependant, il peut être utilisé avec tous les autres moteurs de consensus qui implémentent l’ABCI. Au fil du temps, nous nous attendons à ce que plusieurs SDK émergent, construits avec différents modèles d’architecture et compatibles avec plusieurs moteurs de consensus – le tout dans un seul écosystème: le réseau Cosmos.
Pour apprendre à coder des applications en plus du SDK, vous pouvez consulter des didacticiels .
L’avantage du SDK Cosmos est que sa modularité permet aux développeurs de porter virtuellement n’importe quelle base de code blockchain existante déjà dans Golang. Par exemple,Ethermintest un projet qui porte la machine virtuelle Ethereum dans un module SDK. Ethermint fonctionne exactement comme Ethereum mais bénéficie également de toutes les propriétés de Tendermint BFT. Tous les outils Ethereum existants (Truffle, Metamask, etc.) sont compatibles avec Ethermint et vous pouvez porter vos contrats intelligents sans travail supplémentaire.
Pourquoi créer une blockchain avec le SDK Cosmos alors que je peux simplement déployer mon application décentralisée au-dessus d’une blockchain de machine virtuelle?
Cette question est justifiée, étant donné que la plupart des applications décentralisées d’aujourd’hui sont développées au-dessus de chaînes de blocs de machines virtuelles comme Ethereum. Tout d’abord, il faut dire que la raison de ce phénomène est que jusqu’à présent, les blockchains étaient beaucoup plus difficiles à développer que les Smart Contracts. Ce n’est plus le cas, grâce au SDK Cosmos. Désormais, les développeurs peuvent facilement développer des blockchains spécifiques à une application, qui présentent plusieurs avantages. Entre autres, ils offrent plus de flexibilité , de sécurité , de performance et de souveraineté . Pour en savoir plus sur les blockchains spécifiques aux applications, lisez cet article. Bien sûr, si vous ne souhaitez pas créer votre propre blockchain, vous pouvez toujours rendre vos contrats intelligents compatibles avec Cosmos en les déployant sur Ethermint .
Maintenant que les développeurs ont un moyen de créer rapidement des blockchains personnalisées, voyons comment connecter ces blockchains entre elles. La connexion entre les blockchains est réalisée via un protocole appelé protocole de communication inter- blockchain (IBC). IBC exploite la propriété de finalité instantanée du consensus Tendermint (bien qu’il puisse fonctionner avec n’importe quel moteur de blockchain «à finalité rapide») pour permettre à des chaînes hétérogènes de transférer de la valeur (c’est-à-dire des jetons) ou des données entre elles .
Essentiellement, cela se résume à deux choses:
IBC permet à des chaînes de blocs hétérogènes de transférer des jetons et des données entre elles, ce qui signifie que les chaînes de blocs avec différentes applications et ensembles de validateurs sont interopérables. Par exemple, il permet aux blockchains publiques et privées de se transférer des jetons. Actuellement, aucun autre framework blockchain ne permet ce niveau d’interopérabilité.
Le principe derrière IBC est assez simple. Prenons un exemple où un compte sur la chaîne A veut envoyer 10 jetons (appelons-lesATOME) à la chaîne B.
En continu, la chaîne B reçoit les en-têtes de la chaîne A, et vice versa. Cela permet à chaque chaîne de suivre l’ensemble de validateurs de l’autre. En substance, chaque chaîne exécute unclient léger de l’autre.
Lorsque le transfert IBC est lancé, les ATOM sont verrouillés (collé) sur la chaîne A.
Ensuite, une preuve que les 10 ATOM sont liés est transmise de la chaîne A à la chaîne B.
La preuve est vérifiée sur la chaîne B par rapport à l’en-tête de la chaîne A et, si elle est valide, alors 10 bons ATOM sont créés sur la chaîne B.
Notez que les ATOM qui ont été créés sur la chaîne B ne sont pas de vrais ATOM, car les ATOM n’existent que sur la chaîne A. Ils sont une représentation sur B d’ATOM de la chaîne A, avec une preuve que ces ATOM sont gelés sur la chaîne A.
Un mécanisme similaire est utilisé pour déverrouiller ATOM lorsqu’ils reviennent à leur chaîne d’origine. Pour une description plus complète du protocole IBC, vous pouvez consulter cette spécification .
IBC est un protocole qui permet à deux blockchains hétérogènes de se transférer des jetons. À partir de là, comment créer un réseau de blockchains?
Une idée est de connecter chaque blockchain du réseau à une autre via des connexions IBC directes. Le principal problème de cette approche est que le nombre de connexions dans le réseau croît de façon quadratique avec le nombre de blockchains. S’il y a 100 blockchains dans le réseau et que chacune a besoin de maintenir une connexion IBC les unes avec les autres, c’est 4950 connexions. Cela devient rapidement incontrôlable.
Pour résoudre ce problème, Cosmos propose une architecture modulaire avec deux classes de blockchain: Hubs et Zones. Les zones sont des blockchains hétérogènes régulières et les hubs sont des blockchains spécifiquement conçues pour connecter des zones entre elles. Lorsqu’une zone crée une connexion IBC avec un concentrateur, elle peut accéder automatiquement (c’est-à-dire envoyer et recevoir de) toutes les autres zones qui y sont connectées. Par conséquent, chaque zone n’a besoin d’établir qu’un nombre limité de connexions avec un ensemble restreint de concentrateurs. Les hubs évitent également le double des dépenses entre les zones. Cela signifie que lorsqu’une zone reçoit un jeton d’un concentrateur, il lui suffit de faire confiance à la zone d’origine de ce jeton et au concentrateur.
Le premier Hub lancé dans le réseau Cosmos est le Hub Cosmos. Le Hub Cosmos est une blockchain publique Proof-of-Stake dont le jeton de jalonnement natif est appelé ATOM, et oùfrais de transactionsera payable en plusieurs jetons. Le lancement du Hub marque également le lancement du réseau Cosmos.
Jusqu’à présent, l’architecture de Cosmos que nous avons présentée montre comment les chaînes basées sur Tendermint peuvent interopérer. Mais Cosmos ne se limite pas aux chaînes Tendermint. En fait, tout type de blockchain peut être connecté à Cosmos.
Nous avons deux cas à distinguer: les chaînes de finalité rapide et les chaînes de finalité probabiliste.
Les blockchains qui utilisent des algorithmes de consensus à finalité rapide peuvent se connecter à Cosmos en adaptant IBC . Par exemple, si Ethereum passait à Casper FFG (Friendly Finality Gadget), une connexion directe pourrait être établie entre celui-ci et l’écosystème Cosmos en adaptant IBC pour qu’il fonctionne avec Casper.
Pour les blockchains qui n’ont pas de finalité rapide, comme les chaînes de preuve de travail, les choses deviennent un peu plus délicates. Pour ces chaînes, nous utilisons un type spécial de chaîne proxy appelée Peg-Zone.
UNE Peg-Zoneest une blockchain qui suit l’état d’une autre blockchain. La Peg-Zone elle-même a une finalité rapide et est donc compatible avec IBC. Son rôle est d’établir la finalité de la blockchain qu’elle relie. Regardons l’exemple suivant.
Nous voulons relier la blockchain Proof-of-Work Ethereum pour permettre d’envoyer des jetons dans les deux sens entre Ethereum et Cosmos. Parce que Proof-of-Work Ethereum n’a pas de finalité rapide, nous devons créer une Peg-Zone pour servir de pont entre les deux.
Premièrement, la Peg-Zone doit décider d’un seuil de finalité pour la chaîne d’origine. Par exemple, il peut considérer qu’un bloc donné de la chaîne d’origine est définitif lorsque 100 blocs ont été ajoutés après lui.
Deuxièmement, un contrat est déployé sur la blockchain principale Ethereum. Lorsque les utilisateurs souhaitent envoyer des jetons d’Ethereum vers Cosmos, ils commencent par envoyer des jetons à ce contrat. Ensuite, le contrat gèle les actifs et après 100 blocs, une représentation de ces actifs est publiée sur la Peg-Zone. Un mécanisme similaire est utilisé pour renvoyer des actifs à la chaîne Ethereum.
Fait intéressant, la Peg-Zone permet également aux utilisateurs d’envoyer tout jeton qui vit sur Cosmos à la chaîne Ethereum (les jetons Cosmos seraient représentés par ERC20 sur la chaîne Ethereum). L’équipe Tendermint travaille actuellement sur une implémentation de Peg-Zone pour la chaîne Ethereum appelée Peggy .
Les Peg-Zones devront être personnalisées pour la chaîne particulière qu’elles relient. Construire une Ethereum Peg-Zone est relativement simple car Ethereum est basé sur un compte et dispose de contrats intelligents. Cependant, la construction d’une zone de piquage Bitcoin est un peu plus difficile. Expliquer comment construire une Peg-Zone de type Bitcoin est hors de portée pour cette intro, mais sachez que c’est théoriquement possible. Si vous voulez en savoir plus sur les Peg-Zones, vous pouvez jeter un œil à cette spécification .
Maintenant que nous pouvons facilement créer et connecter des blockchains, il reste un dernier problème à résoudre: l’évolutivité. Cosmos exploite deux types d’évolutivité:
Cosmos offrira une très bonne évolutivité verticale au lancement, ce qui constituera une amélioration majeure par rapport aux solutions blockchain actuelles en soi. Plus tard, après l’achèvement du module IBC, des solutions d’évolutivité horizontale seront mises en œuvre.
J’espère que vous avez maintenant une image plus claire du projet Cosmos. Voici un bref récapitulatif de ce qu’est Cosmos en trois points concis:
Plus que tout, Cosmos n’est pas un produit mais un écosystème construit sur un ensemble d’outils modulables, adaptables et interchangeables. Les développeurs sont encouragés à se joindre aux efforts visant à améliorer les outils existants et à en créer de nouveaux afin de concrétiser la promesse de la technologie blockchain. Ces outils sont la base nécessaire pour créer l’Internet décentralisé et le système financier mondial de demain.