Contexte

La technologie blockchain a vu le jour en 2008 à travers le whitepaper du Bitcoin, publié par un développeur (ou un groupe de développeurs) anonyme, se présentant sous le pseudonyme de Satoshi Nakamoto.

Le but premier de Bitcoin, fut de créer une monnaie numérique pair-à-pair et décentralisée. Afin de sécuriser le réseau, et d’inciter les acteurs à un comportement positif, la validation des transactions se fait grâce au processus de Proof of Work (PoW).

Suite à cela, de nombreuses autres blockchains ont vu le jour, reprenant des systèmes de validations similaires à celui de Bitcoin mais proposant de nouvelles fonctionnalités. C’est le cas d’Ethereum qui utilise la blockchain pour implémenter des smart contracts.

Le “maximalisme” a longtemps régné en maître dans l’écosystème blockchain. Ainsi, une unique chaîne regrouperait l’ensemble des fonctionnalités et cas d’usages souhaités. Dans le cas d’Ethereum, le réseau a comme objectif d’héberger et d’exécuter l’ensemble des applications décentralisées développées avec ce protocole.

Ces chaînes publiques présentent plusieurs problèmes:

  • Temps de validation des transactions
  • Difficulté de mise à l’échelle
  • Coût énergétique, dans le cas du minage

Des solutions de type “seconde couche” ont été développées afin de pallier à ces différentes problématiques. Par exemple, le Lightning Network, réseau permettant des transactions off-chain, permet de résoudre la majorité des problèmes de scalabilité, mais apporte aussi quelques contraintes.

Egalement, ces différentes blockchains présentent toujours un cruel manque d’interopérabilité. Construites en utilisant des modèles, modes de consensus, technologies différentes, ces dernières ont du mal à communiquer ensemble.

Une fois encore, des solutions ont été mises au point afin de tenter de résoudre ce problème majeur. L’atomic swap en est une, à l’aide de Hash Time Locked Contract. Cette solution permet de transférer des jetons d’une chaîne à l’autre au niveau protocolaire sans avoir besoin de recourir à un service centralisé (plateforme d’échange).

Par exemple, il est possible d’échanger de manière atomique des litecoins contre des bitcoins.

Cette solution, quoiqu’extrêmement utile pour échanger de la valeur (jetons) entre deux blockchains reste compliqué à mettre en place, surtout au vu des milliers de blockchains existantes. Également, cette solution ne permet que le transfert de valeur entre deux chaînes, mais en aucun cas l’échange de données. Avec l’essor des smart contracts, il devient indispensable que deux smart contracts situés sur deux chaînes différentes soient en capacité de communiquer.

Des équipes de chercheurs et de développeurs ont décidé de traiter ces différents problèmes autrement, en mettant au point des solutions reposant sur d’autres modes de fonctionnements que celles majoritairement utilisées.

Internet of blockchains

Ces projets se présentent sous la coupe “d’internet of blockchains” en référence à la transition fin des années 80 des intranets (multitudes de réseaux indépendants) vers l’internet (réseau général interconnectant les différents sous-réseaux).

L’objectif est clair, créer des protocoles génériques permettant aux différentes blockchains de s’interconnecter, garantissant une interopérabilité totale.

Gavin Wood, co-fondateur d’Ethereum, présente parfaitement les objectifs de ce type de solutions lors de son talk au Web3 Summit de Berlin :

Avoir un maximum, de liberté technique, de sécurité et de connectivité tout en ayant en même temps un minimum d’efforts, de contraintes et une solution qui soit technologiquement agnostique.

Nous allons voir deux approches pour résoudre ce problèmes, à travers les projets Cosmos et Polkadot.

Cosmos

L’idée de Cosmos est née des esprits de Jae Kwon et Ethan Buchman, suite au développement de Tendermint.

Tendermint est un outil qui permet la mise en place facile et rapide de la logique d’une blockchain, s’occupant de la validation des blocs,  du routage et de la propagation des transactions. Il intègre également un algorithme de consensus de type pBFT (Practical Byzantine Fault Tolerance).

Cosmos quant à lui est un réseau permettant d’interconnecter l’ensemble des blockchains créées à l’aide de Tendermint. Ces blockchains peuvent ensuite communiquer grâce au protocole IBC (InterBlockchain Communication) présenté dans le whitepaper du projet comme étant un “UDP ou TCP des blockchains” (UDP et TCP étant des protocoles gérant les communications sur internet).

Cosmos met également à disposition le Cosmos SDK, un framework permettant de construire des blockchains en Proof of Stake (et ses dérivés: Delegate Proof of Stake) ou en Proof of Autority, ainsi que des applications décentralisées.

Ainsi, dans l’écosystème Cosmos, il n’y a pas une seule blockchain souveraine, mais une multitude de side-chains ayant chacune leur propre écosystème, jetons, applications et gouvernance, le tout lié par le Cosmos Hub permettant l’interconnexion et l’interopérabilité de ces side-chains.

Cette solution permet de régler le problème de mise à l’échelle (ou scalabilité) car chaque blockchain gère ses propres transactions et ce n’est plus une seule blockchain qui doit gérer les transactions de l’ensemble des applications qu’elle héberge.

Cosmos a déployé son réseau public en mars 2019, les équipes de développement sont activement en train de travailler sur Cosmos Ethermint, une version de l’EVM (Ethereum Virtual Machine) fonctionnant sur Tendermint permettant une migration aisée des smart contracts et dApps déployées sur Ethereum. Il est également prévu de mettre en place un bridge entre Cosmos et Ethereum permettant de transférer de la valeur entre les deux chaînes ainsi que des données.

Polkadot 

Polkadot est un projet de Web3 foundation, portée par Gavin Wood. Suivant une philosophie similaire à celle de Cosmos, Polkadot souhaite supprimer la compétitivité dans l’univers des blockchains au profit de l’interopérabilité.

Polkadot est un protocole permettant à différentes blockchains de communiquer, à la manière de TCP/IP. L’écosystème créé par Polkadot se décompose en 3 composants:

  • Les Relay chain: coordonnant le consensus et les transactions entre les différentes Parachains.
  • Les Parachains: sont des blockchains Polkadot/Substrate (side-chains) regroupant leurs propres transactions et applications.
  • Les Bridges: liens vers des blockchains externes à l’écosystème Polkadot comme la chaîne Ethereum.

La où Polkadot représente la partie protocolaire, Substrate développé par Parity relève de la couche applicative. C’est un framework qui permet le développement d’applications décentralisée. En termes de comparaison avec l’écosystème Cosmos, les Relay chain Polkadot et le Cosmos Hub servent les mêmes objectifs, quant au Cosmos SDK et Substrate également.

Ainsi, le protocole assure la connexion entre les side-chains et les chaînes “externes” tout en assurant qu’elles restent sécurisées et que toutes les interactions “cross-chain” soient fidèlement exécutées.

La création de blockchains sur Polkadot a été pensée de manière modulaire, ainsi il est possible personnaliser entièrement la conception, en utilisant ou non les couches fournies par Polkadot.

  • Polkadot “nue”  la couche la plus basse fournira au niveau protocolaire la gestion des communications, mais vous devrez implémenter la fonction de validation de bloc, la gestion des noeuds, les bases de données, la synchronisation, etc.
  • Substrate core, la couche supérieure s’occupe des bases de données, de la synchronisation, la mise en place d’un consensus paramétrable (PoS, DPoS, pBFT, PoA, PoW), un light client, etc.
  • Substrate SRML, une couche supérieure procurant une interface front-end, un explorateur de chaîne, un event tracker etc.

Ainsi, il est possible d’utiliser les modules fournis par Polkadot dans le but de construire une blockchain au plus proche de vos besoins.

Conclusion

À la vue de ces technologies, il semble peu probable qu’à l’avenir une blockchain unique concentre l’ensemble des applications. L’évolution de l’écosystème blockchain semble tendre vers un ensemble de réseaux interconnectés où chaque application aurait sa propre blockchain interopérable avec ses side-chains.

Ce choix permettrait de passer outre les problèmes de scalabilité, car chaque chaîne sera conçue en fonction des besoins de ses applications et n’aura plus à se brider pour pouvoir exister sur une blockchain non adaptée.