Nous avons retranscrit le speech vraiment passionnant de Gautier Marin-Dagannaud, product engineer chez Tendermint, durant le CryptoMondaysParis du 23/07/18 à la Station F!
Gautier : Alors, bonjour à tous, je m’appelle Gautier et je suis ingénieur chez Tendermint, et aujourd’hui, je travaille sur un projet qui s’appelle Cosmos. Alors je sais que ce n’est pas forcément très connu dans écosystème francophone. Qui connaît Cosmos, ou a déjà vaguement entendu parler de Cosmos? Pas si mal que ça. Je vais surtout vous parler de la vision de Cosmos, qui en fait est une alternative à la vision des smart contracts et des applications décentralisées aujourd’hui, qui sont développées pour la plupart sur des blockchains qu’on appelle virtual machines, des blockchains qui font tourner une machine virtuelle comme Ethereum.
La vision de Cosmos s’appuie sur trois points, et le premier point, s’est de permettre aux développeurs de développer leur propre blockchain, ce qu’on appelle nous application specific blockchain, c’est-à-dire une application pour une blockchain. Au contraire de sur Ethereum, on va développer son smart contract, puis le déployer sur Ethereum, c’est-à-dire plein d’applications qui tournent sur la même blockchain. Nous, c’est une application pour une blockchain. Je vous expliquerai plus tard pourquoi on a choisi ce design.
La deuxième, c’est qu’on veut que toutes ces blockchains, qui sont maintenant faciles à developper, puissent se parler, c’est-à-dire échanger des tokens et de la donnée. C’est la problématique d’interopérabilité. C’est la deuxième chose qu’on essaye de résoudre.
Et la troisième chose qu’on essaye de résoudre, c’est la problématique de la scalabilité, c’est-à-dire de la montée à l’échelle, qui aujourd’hui est quasiment sur toutes les blockchains on a des problématiques de scalabilité, on essaie de régler cette problématique.
Je vais expliquer un petit peu comment on arrive à ça.
Le premier point, c’est permettre aux gens de déployer leur propre blockchain facilement. Et donc là, c’est là ou le produit Tendermint rentre en jeu. Pour ça, il faut un peu revenir en 2014. En 2014, si on voulait développer son application décentralisée, on n’avait pas beaucoup de choix. La plupart des gens, ce qu’ils faisaient, c’est soit ils déployaient quelque chose sur le protocole, enfin sur Bitcoin directement, ce qui était assez limité, soit ils reconstruisaient une blockchain depuis le début, ce qui était très dur et très long. C’est pour ça qu’Ethereum a bien marché, ils sont venus avec une nouvelle proposition de valeur où ils ont dit maintenant, c’est facile de déployer des applications décentralisées. C’est pour ça qu’aujourd’hui, quasiment tout le monde déploie sur Ethereum.
Tendermint a commencé en 2014, donc au même moment qu’Ethereum s’est lancé, nous on a commencé à réfléchir sur une autre vision. On s’est dit, au lieu de faire une seule blockchain sur laquelle tout le monde va construire son application, on va créer un moteur qui va permettre à chacun de créer sa blockchain facilement, ce qui n’était pas possible avant.
Pour comprendre comment ce moteur fonctionne, il faut comprendre comment une blockchain est constituée. En gros, il y a trois couches fondamentales, il y a la couche réseau, qui est la couche qui propage les messages, il y a la couche consensus, qui permet aux nœuds de s’accorder sur un même état à un même moment, et la couche application, qui en fait donne du sens au message et dépend du cas d’usage, ce qu’on appelle la business logic. Par exemple, pour Bitcoin, c’est des comptes avec des balances, pour une application de gouvernance ça serait les règles qui régissent la gouvernance.
Et donc Tendermint va proposer, en tant que moteur, les couches réseau et consensus, de telle sorte que le développeur n’a plus qu’à se concentrer sur la couche application. Et ces couches réseau et consensus sont à la fois difficiles à développer, et on propose un moteur qui est puissant et le développeur peut ensuite vraiment se concentrer sur la couche application.
En plus, Tendermint a beaucoup d’avantages. Le premier avantage est que cette couche application peut être développée dans le langage de programmation qu’on veut. On n’est pas limité à Solidity, on peut le développer en C, en C++, en Go, en ce qu’on veut. Le deuxième avantage, c’est que Tendermint, c’est un moteur blockchain très performant, dans le sens premièrement où il est ce qu’on appelle Byzantine Fault Tolerance, BFT. Pour la petite note, aujourd’hui, BFT, c’est un mot qui revient assez souvent dans le monde de la blockchain. En 2014, le CEO de Tendermint, Jae Kwon, a été le premier à retourner sur les papiers de 1980, et ramener cette recherche BFT dans le monde de la blockchain, qui est aujourd’hui, et qu’a Casper d’Ethereum et d’autres pour le Proof of Stake.
Tendermint, c’est un moteur BFT, il a deux propriétés intéressantes parmi beaucoup, qui sont instant finality, une fois qu’une transaction est incluse dans un block, elle ne peut pas être annulée, et la deuxième, c’est le light client qui est très facile à implémenter sur Tendermint. Ce qui n’est pas le cas sur les blockchains Proof of Work. Un autre point intéressant, c’est que Tendermint permet de développer des applications, des blockchains à la fois publiques et privées. Donc, que votre application soit pour une blockchain publique en Proof of Stake ou une blockchain privée en Proof of Authority ou autres, vous pouvez le faire sur Tendermint.
Donc, maintenant, on a plein de blockchains faciles à développer, avec ce moteur. Mais le fait que tous ces blockchains soient développées sur un moteur qui a de la propriété de instant finality comme déjà dit, ça permet de les connecter entre elles. On a développé un protocole qui s’appelle IBC, Inter Blockchain Communication Protocol, qui permet de connecter ces blockchains qui ont cette propriété de finalité entre elles. De manière décentralisée, évidemment. Aujourd’hui, on sait déjà connecter les blockchains de manière centralisée, ce qu’on ne sait pas, c’est les connecter de manière décentralisée.
Donc on a ce protocole, maintenant, IBC, qui permet de connecter des blockchains qui ont la finality. Toutes les blockchains développés chez Tendermint l’ont, mais par exemple, d’autres blockchains comme Casper a aussi cette propriété de finalité.
Maintenant, on peut connecter les blockchains entre elles. Comment on passe à un réseau, à un internet de blockchains? Ce Cosmos, fondamentalement, c’est un réseau de blockchains, un internet de blockchains, c’est-à-dire un écosystème où les blockchains peuvent se parler. La solution naïve, c’est de connecter toutes les blockchains entre elles, mais ça, ça ne marche pas très bien, parce qu’internet ne s’est pas construit comme ça pour des problématiques de scalabilité évidentes. Si on a M blockchain dans le réseau, on va croitre en M carré. Ca ne tient pas très longtemps. En fait, ce que Cosmos fait, c’est qu’on a une architecture en hub and spoke, c’est-à-dire qu’on a des hub et des zones, et les hubs agissent comme des routeurs.
Si je veux développer ma blockchain dans Cosmos, j’utilise Tendermint en quelques jours et je développe une blockchain, et après, je mets une connection IBC avec le hub, et je suis connecté avec tout le monde. Il peut y avoir plusieurs hubs, bien sûr, mais il y aura beaucoup plus de zones que de hubs.
Donc le Cosmos Hub, c’est ce qu’on est en train de développer aujourd’hui, chez Tendermint, et ce sera la première blockchain dans Cosmos, et ça marquera le lancement de Cosmos. Pour ceux qui suivent d’un peu plus prés, ça devrait arriver très bientôt, d’ici quelques semaines.
La troisième problématique dont je vais parler, c’est la scalabilité. Comment on y arrive ? En fait, on a deux façons d’arriver à la scalabilité, la première, c’est que Tendermint permet à lui seul d’arriver à plusieurs milliers de transactions par seconde, et si Tendermint arrive à son maximum, c’est-à-dire que notre application a trop de transactions, trop de demandes de transaction, ce qu’on peut faire, c’est mettre plusieurs chaînes en parallèle, avec la même application, et résoudre via IBC pour qu’elles se comprennent entre elles. Ça s’appelle de la scalabilité verticale, et ça ne sera pas avant 2019. Mais théoriquement, c’est faisable.
Voila. C’étaient les trois points de Cosmos à comprendre. Maintenant, je vais juste finir sur la vision, parce que pour ceux qui sont rentrés dans la blockchain et qui connaissent en fait que les smart contracts et les applications décentralisées sur Ethereum, ça peut paraître un peu bizarre de se dire « Pourquoi j’irais développer mon application en tant que blockchain, avec ma propre blockchain, plutôt que de la développer sur un smart contract? ». Alors, il y a plusieurs raisons pour lesquelles on pense que c’est un meilleur design à long terme, la première, c’est que, pour des raisons de performance, comment on lève la machine virtuelle entre l’application et les couches réseau ou consensus, on gagne en performance, comme la plupart des langages qui compilent directement sont plus performants que les langages qui tournent avec une machine virtuelle. Performance.
La deuxième, c’est la flexibilité. On peut développer son application dans le langage qu’on veut. Mais ce n’est pas tout. Quand on a une blockchain qui est une machine virtuelle, par la machine virtuelle impose des limites sur l’application. Et ces limites sont tout à fait justifiées parce qu’il y a plein d’applications qui peuvent venir, donc il faut mettre des limites pour garantir la sécurité. Un exemple, sur Ethereum, ce n’est pas possible d’avoir de l’exécution automatique de code. Toute exécution de code doit être déclenchée à la base par un Hedge-user. Et ça fait sens, sur Ethereum, si on veut garantir la sécurité.
Mais si on a une application pour une chaîne, alors les problématiques de sécurité évoluent et on peut avoir de l’exécution automatique de code. Ce qui débloque plein de use cases. Nous, par exemple, pour le Cosmos Hub, on utilise plein d’exécutions automatiques de code. Il faut juste faire attention, comme n’importe quel programme, qu’on n’a pas de boucle infinie et cetera. Mais si on a un problème, et qu’on a une boucle infinie, ce n’est pas grave parce que comme on tourne sur notre propre blockchain, on peut tout à fait revenir en arrière, et les autres blockchain ne seront pas affectés.
Et ça m’amène à mon troisième point, qui est, celons moi, le plus important, et qui est souvent pas beaucoup évoqué aujourd’hui et pour moi, la raison en est que c’est un point très noir sur les blockchain, machines virtuelles comme Ethereum et cetera, c’est la problématique de souveraineté. C’est-à-dire que quand on déploie son application sur une blockchain de type Ethereum ou machine virtuelle en général, on a une souveraineté très limitée. Les deux exemples très connus sur Ethereum, c’est le Hack du DAO et le Hack de Parity.
Le Hack de DAO, il y a eu un bug, plein d’argent a été perdu, qu’est-ce qu’on a fait ? Il y a eu de la gouvernance qui n’a pas suffit. La gouvernance du DAO n’a pas suffit on a eu besoin de passer sur la gouvernance du réseau, et il y a eu un hard fork. Je pense qu’on ne reverra pas un hard fork de sitôt, vu le scandale que ça a fait.
Il y a eu le Hack de Parity, il y a eu aussi plein d’argent de perdu, il n’y a pas eu de hard fork. Pourquoi ? Parce que la gouvernance de Parity, de l’application de Parity, n’est pas alignée avec la gouvernance du protocole en dessous, qui fait tourner l’application.
Ce qu’on veut, c’est réaligner les gouvernances. C’est-à-dire qu’une application pour une blockchain. Si l’application a un problème, on peut revenir en arrière. Ce n’est pas un problème parce que cette gouvernance est limitée à la blockchain. Les autres blockchains ne reviendront pas en arrière si une BK revient en arrière. Et on garde cette compatibilité via Cosmos. Donc l’idée générale, c’est de dire : « Chacun a sa propre souveraineté, sa propre indépendance, mais est quand même capable de discuter avec les autres et de scale. ».
Voilà, ça c’est la vision pour laquelle on pense qu’à long terme beaucoup d’applications viendront sur leur propre blockchain au-delà des problématiques de scalabilité, au-delà des problématiques de flexibilité, il y a aussi des problématiques de souveraineté qui sont très importantes.
Pour finir, sur là où on en est aujourd’hui, on espère se lancer d’ici quelques semaines. Cosmos, c’est un écosystème, c’est un réseau décentralisé, c’est un réseau de blockchain. N’importe qui aujourd’hui peut venir et construire sa propre blockchain dans Cosmos. Le Cosmos Hub qui est développé par Tendermint, qui est aussi une entreprise, sera la première blockchain qui marquera le lancement de Cosmos, mais dès aujourd’hui, vous pouvez venir développer sur Tendermint, que vous ayez un projet privé ou un projet public, pour Proof of Stake, pour Proof of Authority, vous pouvez dès aujourd’hui construire sur Tendermint, c’est un produit stable qui est développé depuis 2014, il a été audité de nombreuses fois.
Le tool kit Cosmos est un peu plus récent, un peu moins stable, mais on approche la stabilité et d’ici quelques mois, on pourra avoir un écosystème qui va le déveloper. J’ajoute enfin qu’on a plus de cinquante projets aujourd’hui qui sont en train de développer sur Cosmos aujourd’hui. On espère que beaucoup d’autres les rejoindront rapidement. Voilà. Merci.
[Applaudissements]