samedi, décembre 21, 2024
AccueilALTCOINSProjet Cosmos : Comment cela fonctionne ?

Projet Cosmos : Comment cela fonctionne ?

Dans cet article, nous verrons ensemble ce qu’est le projet Cosmos, comment il fonctionne et en quoi ce projet est intéressant surtout d’un point vu technologique. Ce billet vous permettra également de comprendre comment des blockchains qui sont prises une par une et qui semblent fonctionner en silo, vont pouvoir interagir les unes avec les autres.

Le projet Cosmos est très intéressant pour l’internet des blockchains et le futur développement de cette technologie. Si vous débutez avec les cryptos, vous pouvez télécharger mon guide sur les Bitcoins et comment acheter vos premières cryptos. Et si vous voulez vous perfectionner, vous pouvez également télécharger un des autres guides qui sont ici !

Le projet Cosmos c’est quoi exactement ?

Le projet Cosmos peut être qualifié de réseau décentralisé de blockchains parallèles, indépendantes et alimentées par un algorithme de consensus qui repose sur ce qu’on appelle Byzantine Fault Tolerance. En d’autres termes, Cosmos est un écosystème de blockchains qui peuvent évoluer et interagir les unes avec les autres.

Avant ce projet les blockchains étaient cloisonnées et incapables de communiquer les unes avec les autres. De plus, elles étaient difficiles à construire et ne pouvaient gérer qu’une petite quantité de transactions par seconde, même s’il y a eu beaucoup d’évolution sur certains projets. Cosmos résout ces problèmes avec une nouvelle vision technique. Reprenons ensemble cette vision le plus simplement possible afin de souligner les avancées apportées d’abord par le Bitcoin, puis l’Ethereum et maintenant Cosmos.

Qu’est-ce qu’une Blockchain ?

Commençons par expliquer ce qu’est une blockchain, car c’est important de bien comprendre cette notion afin d’apprécier ce que le projet Cosmos SDK apporte. Prenons le réseau Bitcoin, par exemple, car c’est le premier et le plus simple. Ici, nous avons affaire à des réseaux décentralisés. Des gens partout dans le monde utilisent leur ordinateur pour réaliser des transactions. Comme ce réseau est décentralisé, chacun interagit directement les uns avec les autres. Et vu qu’il n’y a plus d’entité centrale, il faut enregistrer les transactions dans une base de données qui enregistre l’historique de toutes les transactions qui ont été réalisées depuis le début entre chaque membre du réseau. Cette base de données, c’est la blockchain.

définition technique de la blockchain

Le logo a été placé près de chacune de ces personnes pour bien illustrer la blockchain. 

Nota :

  • Il y a deux types de membre, les membres complets et les membres non complets. La différence est que les membres complets sont ceux qui enregistrent la blockchain. Ainsi, chacun des membres du réseau peut avoir une copie de cet historique de transaction chez eux, téléchargée sur leur ordinateur. Autrement dit, il y a autant de blockchains que de membres d’un réseau.
  • La blockchain est mise à jour simultanément par chacun des membres du réseau dès qu’il y a une nouvelle transaction. Et les transactions sont ajoutées par certains membres qui le souhaitent. Ces membres sont les mineurs ! Le rôle des mineurs est de prendre des transactions, de les ajouter dans des blocks et d’ajouter des blocks à la blockchain. En prenant le cas de Bitcoin, toutes les 10 minutes, il y a un block qui est ajouté à la blockchain. Et dans chacun des blocks, il y a les transactions réalisées entre les membres du réseau durant ces 10 minutes. Schématiquement, c’est cela !

Pour résumer, cette blockchain permet à tout le monde d’avoir accès à l’historique des transactions. Elle permet aussi et surtout de réaliser des transactions directement, les uns avec les autres sans passer par une entité centrale comme une banque par exemple.

Définition technique de la blockchain

Abordons maintenant une définition un peu plus technique de la blockchain. Cela va nous aider à mieux comprendre ce que le projet Cosmos SDK peut nous apporter.

« Une blockchain est une machine à états (state machine) déterministe répliquée sur des nœuds complets qui conserve un consensus sécurisé tant que moins d’un tiers de ses responsables sont byzantins. » 

C’est ce que nous venons de voir, c’est-à-dire que chaque membre du réseau a une copie de la blockchain enregistrée et qu’il met à jour au fur et à mesure que des blocks sont ajoutés. Bien sûr, la mise à jour est synchronisée pour tous les membres.

Reprenons cette définition point par point.

State machine/machine a état

À chaque fois qu’on ajoute un block ou une transaction, la blockchain enregistre un nouvel état de sa blockchain. Comment comprendre cela ? Au risque de surprendre les développeurs, on peut qualifier l’état comme un interrupteur. Lorsque vous levez l’interrupteur, la lumière s’allume et lorsque vous l’abaissez, elle s’éteint. C’est exactement pareil pour la blockchain dans la mesure où elle enregistre, par exemple, que la lumière est allumée ou si elle est éteinte. Très simplement, c’est une machine qui attend des instructions pour enregistrer un nouvel état. Cela peut être un nouvel état s’il s’agit du Bitcoin. Pour Ethereum, on parlera d’une mise à jour du compte.

Il faut retenir que la state machine enregistre un nouvel état à chaque fois qu’un changement (transaction) occure.

Déterministe

Cela signifie que si nous réalisons toujours la même transaction à partir du même état, nous obtenons toujours le même résultat. Si on lève toujours l’interrupteur, la lumière sera toujours allumée. Donc, la blockchain enregistre toujours l’état « allumé ». Par exemple, sur Ethereum, si on envoie une transaction pour activer un Smart contrat et que le programme Smart contrat est toujours le même, on obtiendra toujours le même état enregistré sur la blockchain.

Qui conserve un consensus sécurisé

Cela veut dire que le réseau décentralisé doit se mettre d’accord sur l’ordre des transactions à ajouter dans des blocks, puis dans la blockchain. Ceci est fondamental parce que si vous vous retrouvez avec des transactions qui sont ajoutées à des moments différents, on peut assister à ce qu’on appelle la « double dépense ». Cela signifie que vous allez pouvoir dépenser 2 fois votre Bitcoin parce que les transactions ne sont pas enregistrées au même moment sur la blockchain.

L’ordre chronologique de l’ajout des transactions au block et du block à la blockchain est fondamental que cela soit pour un réseau centralisé ou décentralisé.

Que moins d’un tiers de ses responsables sont byzantins

Il y a certains nœuds qui peuvent essayer d’enregistrer un mauvais état de la blockchain, volontairement ou pas. Par exemple, deux tiers des nœuds considèrent que la lumière est éteinte alors que un tiers considère qu’elle est allumée quand l’interrupteur est levé. Résultat, la lumière sera quand même considérée comme éteinte. Autrement dit, quand il y a moins d’un tiers qui sont malhonnêtes, l’état de blockchain sera considéré comme toujours valide. Ainsi, cela ne portera pas atteinte à son intégrité. Si l’intégrité de la blockchain est remise en cause, il en va de même pour l’intégrité de tout le réseau.

schéma blockchain cosmos sdk

La blockchain en schéma

Schématiquement, une blockchain peut être divisée en 3 couches/étapes superposées :

  • Application : c’est là où est mis à jour l’état que nous venons d’évoquer. C’est le traitement des transactions réalisées entre les membres du réseau.
  • Consensus : c’est ce qui permet aux nœuds du réseau qui participent à ce mécanisme de se mettre d’accord sur l’état actuel du système. Autrement dit, sur l’ordre des transactions à ajouter au block et l’ordre des blocks à ajouter à la blockchain.
  • Networking : le réseau est responsable de la propagation des transactions. Quand un membre réalise une transaction, le networking l’envoie sur le réseau pour que celle-ci soit captée par un mineur. Ce dernier va ensuite l’ajouter dans les blocks. Ensuite, dans cas du Bitcoin par exemple, les mineurs qui ont réalisé le proof of work envoient leur résultat sur le réseau pour que les autres puissent vérifier leur travail. Ainsi, le mineur qui a résolu proof of work en premier et don le résultat a été vérifié peut obtenir la récompense et les frais.

Pour résumer, la machine d’état se trouve au niveau de l’application qui définit l’état actuel de la transaction. Puis, les deux autres couches sont responsables de la réplication de la machine d’état sur tous les nœuds du réseau de manière coordonnée et surtout simultanée.

D’où vient la blockchain ?

Pour comprendre comment le projet Cosmos SDK s’intègre dans l’écosystème de la blockchain, il faut revenir au début de l’histoire de la blockchain. La première blockchain a été imaginée par le Bitcoin (Satoshi Nakamoto). Le Bitcoin, comme le savez, est une monnaie numérique qui a utilisé pour la première fois le mécanisme du proof of work. C’était donc la première application décentralisée reposant sur une blockchain. À l’époque, il y avait 2 options pour développer des applications décentralisées. Au tout début du Bitcoin, il fallait soit :

  • forker le Bitcoins, c’est-à-dire répliquer le code source et le modifier.
  • construire à partir du Bitcoin en ajoutant par exemple des informations dans les blocks.

Le code source du Bitcoin est assez monolithique parce que les trois couches que nous venons de voir (application, consensus et networking) sont mélangées. En plus, le script qui est le langage du Bitcoin est vraiment limité en termes de développement.

Dans un deuxième temps, en 2014, on a vu apparaître Ethereum qui lui a présenté une nouvelle proposition de construction. Il y avait une seule blockchain où les gens peuvent déployer tout type de programme. Ainsi, l’Ethereum est arrivé en transformant la couche application en une machine virtuelle appelée EVM (Ethereum Virtual Machine).

Nota :

Une machine virtuelle est une machine qui peut faire un turing complets parce qu’elle peut réaliser des calculs et exécuter des programmes.

De ce fait, l’EVM peut traiter des programmes qui sont en l’occurrence les Smart contrat que tout développeur peut déployer sur la blockchain Ethereum sans autorisation. C’est une blockchain ouverte et tout le monde peut y accéder. Cette nouvelle approche a permis à des milliers de développeurs de créer de nouvelles applications décentralisées.

Les limites de l’Ethereum

Il y a tout de même plusieurs limites à Ethereum :

  • Déploiement/scalabilité : la rapidité de traitement des transactions. Elle est de 15 transactions par seconde pour Ethereum. Cela limite considérablement la capacité d’utilisation du réseau. C’est dû au fait que Ethereum utilise, aujourd’hui encore, le proof of work même si cela va être amené à changer très prochainement avec le proof of stak. Cliquez ici pour voir la vidéo réalisée sur l’Ethereum. En résumé, les nouvelles améliorations apportées à Ethereum visent à favoriser le déploiement. Autrement dit, à démultiplier le nombre de transactions réalisé par seconde.
  • Maniabilité : C’est le fait que l’EVM puisse s’appliquer à tout type de programme. De plus, il y a aussi un nombre de commandes limité par rapport à d’autres commandes de programme qui offrent bien plus de fonctions. Cela vient du fait que Ethereum utilise un seul langage de programmation, solidity. Cela pose problème parce qu’il y a d’autres programmes qui vont plus loin et qui offrent beaucoup plus de possibilités de programmation. En termes de maniabilité, Ethereum est assez limitée.
  • Souveraineté : toutes les applications sont construites sur la même blockchain Ethereum. S’il se passe quoi que ce soit sur la blockchain Ethereum, toutes les applications décentralisées (il y en a plus de 2000 aujourd’hui) seront impactées. D’ailleurs, en 2016 avec le hack de la DAO a engendré un chaos de la blockchain Ethereum et la naissance de l’Ethereum classic. Il s’agit de la blockchain initiale d’Ethereum.

Quelle est l’originalité du projet Cosmos SDK ?

La vision soulignée par le projet Cosmos SDK est de permettre aux développeurs de créer facilement des blockchains et de briser les barrières entre ces dernières en les permettant d’interagir. L’objectif final est donc de surmonter toutes limites rencontrées jusqu’ici en la création d’un internet de blockchain. Autrement dit, un réseau de blockchains capable de communiquer entre elles de manière complètement décentralisée :

  • interaction entre les blockchains
  • souveraineté de chacune des blockchains
  • augmentation la scalabilité, c’est-à-dire le nombre de transactions par seconde.
  • interopérabilité des blockchains aussi bien à l’intérieur qu’à l’extérieur de l’écosystème Cosmos
Originalité du projet cosmos sdk

Les outils développés au sein du projet Cosmos SDK

Pour cela, le projet Cosmos SDK a développé plusieurs outils :

  • Tendermint
  • Cosmos SDK
  • ABCI

Nota :

Il ne faut pas oublier que Cosmos est un projet communautaire qui est en open source où chacun peut participer.

Tendermint et ABCI

Tendermint BFT (Byzantine Fault Tolerance) se propose de résoudre l’aspect monolithique (difficulté à personnaliser l’Ethereum et le Bitcoin).  

Il a été créé par Jae Kwon en 2014. Cette solution regroupe les couches networking et consensus. Cela permet aux développeurs de se concentrer sur le développement d’applications. Cela constitue une économie de centaines d’heures pour les développeurs. Dans une certaine mesure, il s’agit de la même idée que Ethereum. Cependant, le Tendermint est connecté à l’application par un protocole de socket qui est appelé ABCI (Application BlockChain Interface). Ce protocole est compatible avec n’importe quel langage (C++, Java, Go, etc.). Ainsi, il va également résoudre le problème du langage puisqu’il n’y aura plus de langage unique comme c’est le cas pour Ethereum.

tendermint abci projet cosmos sdk

Pour résumer, le Tendermint sert à la fois à envoyer les transactions sur le réseau et à la mettre en œuvre le mécanisme de consensus. Il s’agit du mécanisme du proof of stak reposant sur le BFT qui a plusieurs caractéristiques :

  • Rapidité : le BFT permet d’ajouter plus d’un million de transactions par seconde, ce qui est beaucoup plus que les 15 transactions par seconde qu’offre l’Ethereum actuel.
  • Finalité instantanée : Il n’y a pas de fork possible. En effet, une fois qu’une transaction a été ajoutée, il ne peut pas y avoir de blocks ajoutés en même temps, comme pour le Bitcoin. Pour ce dernier, on est obligé d’avoir un fork et souvent une des pattes qui tombent au profit d’une autre qui est maintenue.

Cosmos SDK

Il s’agit d’un cadre général qui simplifie le processus de création d’applications blockchain. Ce cadre repose sur un système de modularité. Le but est de créer un écosystème de modules, une bibliothèque où vous allez plugger des modules qui existent déjà, les uns avec les autres.

Ces modules pourraient être relatifs à la :

  • gouvernance et l’interconnectivité (IBC) : on pourrait imaginer un moyen d’évolution du protocole avec un système de vote. Tout cela est organisé au niveau de l’application et c’est un module qui existe déjà. Bien évidemment, on peut en créer puisqu’on peut toujours ajouter des modules. 
  • staking : Cela pourrait gérer, par exemple, la dénomination des validateurs puisque cela se situe au niveau de l’application.
cosmos sdk vu global

Le projet Cosmos SDK permet veut véritablement faciliter la création d’applications décentralisées. Par exemple, en créant un module de plug and play. Cette approche permet également de faciliter la mise en œuvre avec l’organisation du consensus et du networking.

Comment fonctionne l’interbockchain au sein du projet Cosmos SDK ?

La façon dont le protocole interblockchain fonctionne est relativement facile et simple. Vous avez par exemple deux blockchains : blockchain A et blockchain B. Ces dernières peuvent être tout à fait différentes avec des protocoles tout aussi différents et qui sont normalement incompatibles. Imaginons que la blockchain A veuille transférer directement des tokens vers la blockchain B (normalement, cela se fait à travers une bourse d’échange). Grossièrement, les deux blockchains vont se connecter en devenant chacune un nœud de l’autre. Autrement dit, en se connectant, la blockchain A devient un nœud de la bockchain B et vice versa. Les deux blockchains deviennent le client respectif de l’autre. Elles ont donc une visibilité sur l’état de la blockchain opposée. Ainsi, à partir du moment où cette interopérabilité est mise en place, la blockchain A va locker 10 tokens, par exemple, et va envoyer une confirmation à la blockchain B que ces 10 tokens ont bien été lockés. Par la suite, la blockchain B va de son côté locker 10 tokens.

Ce ne sont évidemment pas les mêmes tokens puisqu’il ne s’agit pas vraiment d’un transfert. Il s’agit d’une reproduction des tokens. C’est de cette façon que fonctionne une interopérabilité entre blockchain.

interopérabilité entre blockchain cosmos sdk

L’internet des blockchains avec le projet Cosmos

Une autre particularité du projet Cosmos SDK pour connecter les blockchains entre elles réside dans le concept de zone et de hub. En effet, le nombre de projets différents et de protocoles différents sera extraordinaire. Par conséquent, il est important de faciliter l’interconnexion entre toutes les blockchains. Les zones sont des blockchains hétérogènes qui se connectent. Le hub quant à lui permet de connecter plusieurs zones.

concept zone et hub projet cosmos sdk

Ainsi, les blockchains auront accès à d’autres zones et pourront échanger sans avoir à se connecter directement à d’autres blockchains contenues dans d’autres zones. Il y aura donc un certain nombre de hubs qui sont également connectés à d’autres hubs.

C’est de cette façon que le projet Cosmos SDK espère créer un internet de blockchains grâce à l’interopérabilité facilitée entre des blockchains hétérogènes. Grâce à un autre mécanisme, il serait également possible de connecter des blockchains qui n’ont pas de finalité. Nous avons vu que le mécanisme du consensus BFT a une finalité, c’est-à-dire qu’une fois qu’un block est ajouté à une blockchain, c’est définitif. Ce n’est pas le cas avec le Bitcoin où il est permis d’ajouter de nouveaux blocks. C’est notamment le cas lorsqu’on se rend compte que les blocks ajoutés à la blockchain ne sont pas les bonnes et que d’autres blocks devaient être ajoutés à la place. En tout cas, une autre chaîne a été créée en parallèle. Dans ce cas-là, cela permet même de connecter les blockchains.

Le projet Cosmos SDK dans les faits

Technologiquement parlant, le projet Cosmos SDK représente une grosse avancée comme nous pouvons le constater sur leur page Github (Projet Cosmos SDK). Nous nous rendons compte que c’est vraiment une communauté très active avec de nombreux commits. Ces commits vont créer de nouveaux modules ou améliorer ceux déjà existants.

github du projet cosmos sdk

Ici par exemple, en moyenne, il y a une vingtaine de nouveaux modules qui sont créés/améliorés par semaine.

Le projet Cosmos SDK est vraiment très intéressant qui a la capacité de créer un internet de blockchains. De la même manière que SMTP a permis aux mails d’être échangés entre différentes boîtes mails. Le prix a quand même baissé. Il est parti à 7 $ et a pas mal baissé. Cependant, ce projet peut avoir été sous-évalué. De plus, ce projet affiche une road map qui est vraiment intéressante. Vous pouvez le constater sur leur site. Par ailleurs, l’équipe est gérée par une fondation, par interchain. Les deux fondateurs étant Jae Kwon et Ethan Buchman.

fondateur cosmos sdk fondation interchain

Nous espérons que cet article vous a permis de mieux comprendre ce qu’est le projet Cosmos SDK, à quoi il sert et comment il fonctionne.

Sources

Stanislas de Quénetain
Stanislas de Quénetain
Passionné depuis 2014 par les technologies liées à la blockchain, j'ai créé ce blog pour partager avec les plus grand nombre les dernières innovations, les start-ups et les Crypto-monnaies qui selon nous constituent une avancée significative pour cette industrie en pleine expansion.
RELATED ARTICLES

Most Popular