Plasma, un réseau de sidechains pour Ethereum

 

Ethereum Plasma

 

On le sait : la scalabilité, ou capacité à passer à l’échelle, est l’un des problèmes principaux de Ethereum qui subit, comme Bitcoin, des congestions régulières. En effet, pour rester pertinent, Ethereum ne peut pas se permettre d’accueillir une charge transactionnelle trop grande, au risque de centraliser le réseau de façon excessive.

Pour remédier à ce problème, plusieurs solutions sont envisagées pour Ethereum. La première est d’augmenter la taille des blocs progressivement en augmentant la limite de gas associée, à mesure que le prix du matériel informatique et de la bande passante baisse. Néanmoins, cette technique a ses limites et ne peut pas permettre à Ethereum de devenir un ordinateur mondial performant. La deuxième méthode imaginée est l’optimisation du protocole en tant que tel, qui inclut les différents éléments présents dans la mise à niveau Serenity comme le passage à la preuve d’enjeu avec Casper, ou le partionnement (sharding) du protocole qui répartirait la charge du réseau en de multiples fragments. La troisième catégorie rassemble les solutions de seconde couche décentralisées : les transactions sont réalisées en dehors de la chaîne principale sans que ceci n’implique de tiers de confiance. Un exemple de ce type de solution est le réseau Raiden qui est un réseau de canaux d’état, et qui reprend pour Ethereum les principes du réseau Lightning déployé sur Bitcoin.

Plasma appartient à cette dernière catégorie et constitue donc une solution de surcouche. À la différence du réseau Raiden, les moyens techniques mis en œuvre par Plasma se rapprochent davantage du concept de chaîne latérale, utilisé notamment sur Bitcoin (RSK, Liquid). Le concept a été proposé en août 2017 par Vitalik Buterin, créateur d’Ethereum, et Joseph Poon, co-créateur du réseau Lightning.

 

Qu’est-ce que Plasma ?

Plasma est une collection de contrats autonomes standards utilisés pour créer un arbre de chaînes latérales.

Plus précisément, chaque contrat Plasma crée et définit les règles d’une chaîne latérale Plasma. Ces contrats permettent ainsi de créer une multitude de chaînes filles à partir d’une chaîne mère (celle d’Ethereum dans notre cas), et ces chaînes peuvent alors fonctionner en parallèle. De même, on peut utiliser ces contrats pour créer des chaînes petites-filles à partir d’une chaîne fille, et ainsi de suite, de façon à construire une véritable arborescence de chaînes de blocs dont la chaîne racine serait la chaîne principale.

 

Arborescence chaînes Plasma

 

Une méthode de programmation parallèle appelée MapReduce, introduite en 2004 par Jeffrey Dean et Senjay Ghemawat, permettrait de faciliter l’organisation et la répartition du calcul entre les différentes chaînes Plasma.

En distribuant l’activité de cette manière, Plasma donnerait à Ethereum un gros avantage en terme de scalabilité, notamment en donnant la possibilité aux contrats générant beaucoup d’activité d’avoir leur chaîne propre. On peut d’ailleurs imaginer que chaque chaîne Plasma soit focalisée sur un aspect spécifique : une chaîne pour un réseau social décentralisé, une pour gérer une plateforme d’échange décentralisée, une chaîne pour les micropaiements, une chaîne de blocs privée, etc.

Plasma a des similarités avec d’autres solutions de surcouche telles que le réseau Raiden. Néanmoins, Plasma présente quelques différences avec ce dernier :

  • Contrairement au réseau Raiden qui ne nécessite aucune interaction lorsque le canal est créé, Plasma a besoin d’avoir des interactions régulières avec la chaîne mère. Heureusement, ces interactions sont fortement réduites par la façon dont est construit Plasma : seules les racines de Merkle des blocs de la chaîne Plasma sont publiées sur la chaîne principale.
  • Les canaux d’état ont besoin du consentement de tous leurs participants pour marcher, tandis que Plasma ne nécessite que la consentement de celui qui envoie des fonds.
  • Le réseau Raiden nécessite de gérer un graphe complexe pour le routage des opérations, Plasma non.
  • Alors que Raiden permet d’atteindre une finalité instantanée pour un nombre restreint de participants, Plasma peut faire interagir un plus grand nombre de personnes au prix d’une finalité atteinte moins rapidement.

Les deux solutions de surcouche (Raiden et Plasma) sont donc complémentaires.

 

Minimal Viable Plasma (MVP)

La mise en œuvre de Plasma n’est pas une mince affaire. Cela a conduit les développeurs à s’orienter vers une version simplifiée de ce standard : le Plasma minimal viable, ou Minimal Viable Plasma (MVP) en anglais. Comme son nom l’indique, il s’agit d’une variante de Plasma qui a pour particularité de se limiter aux fonctionnalités de base du protocole, à savoir les paiements simples en éthers. Cette idée a été proposée par Vitalik Buterin, Joseph Poon et David Knott en janvier 2018 et sert depuis de point de départ pour le développement de Plasma.

Comment cela fonctionne ? Pour commencer la chaîne Plasma est initialisée via la création d’un contrat autonome sur la chaîne mère : ce contrat déterminera les différentes propriétés de la chaîne, les règles à respecter ainsi que les conditions en cas de litige des participants. Pour transférer ses fonds sur la chaîne Plasma, l’utilisateur envoie ses éthers au contrat (ce qui les bloque) et est crédité de l’équivalent sur la chaîne Plasma. Dans le cas de MVP, cela créera un UTXO (Unspent Transaction Output) sur la chaîne : MVP utilise en effet un système d’UTXO similaire à Bitcoin pour rendre son implémentation plus facile.

Une fois crédité, l’utilisateur peut utiliser ses fonds en en envoyant une partie à quelqu’un d’autre. La transaction créée est récupérée et validée par l’opérateur de la chaîne Plasma.

L’opérateur désigne de manière générale le producteur de blocs de la chaîne Plasma qui se charge de rassembler les transactions dans des blocs, de valider ces blocs et de partager les données avec les utilisateurs. Lors de la validation d’un bloc, il en calcule la racine de Merkle et la publie sur la chaîne mère, ce qui assure le lien entre les deux chaînes. L’opérateur n’est pas forcément un individu : il peut s’agir d’une entité unique, d’une fédération d’acteurs ou d’un système de consensus par preuve d’enjeu par exemple.

Même si la chaîne latérale Plasma peut être gérée par une entité unique (« chaîne privée »), cela ne veut pas dire qu’on doive faire confiance à cette entité. La conception de Plasma part en effet du principe que l’opérateur de la chaîne latérale est toujours malveillant et que l’utilisateur doit toujours avoir la possibilité de récupérer ses fonds, même si tous les autres acteurs ne se comportent pas bien.

Pour retirer ses fonds, l’utilisateur doit fournir toutes les informations au sujet des UTXO en sa possession et soumettre une requête de retrait par le biais d’une transaction interagissant avec le contrat Plasma sur la chaîne principale. Dans la majorité des cas, cette requête sera validée par les autres utilisateurs et l’opérateur, et le retrait pourra avoir lieu.

Comme les autres systèmes décentralisés de seconde couche, on peut faire une analogie avec le système judiciaire. Beaucoup de personnes signent des contrats dans la vie de tous les jours, mais ont rarement l’occasion d’aller au tribunal : de la même manière, les conditions complexes du contrat ne seront exécutées sur la chaîne qu’en cas de litige. Des mécanismes de dissuasion sont ainsi mis en place pour que les utilisateurs et l’opérateur se comportent bien, et qu’ils soient pénalisés dans le cas contraire.

D’abord, pour les utilisateurs, une caution de sortie en éthers (pré-établie par le contrat Plasma) est demandée lors de chaque retrait. Ce système de caution permet d’éviter qu’un utilisateur ne retire les fonds d’un autre utilisateur : à l’aide d’une preuve de fraude, la personne volée peut faire en sorte d’annuler le retrait (pendant une période donnée, une semaine par exemple), ce qui conduira l’utilisateur malveillant à perdre sa caution.

Un cas plus difficile est celui de l’opérateur. Puisque ce dernier est en charge de la production des blocs, il peut y inclure ce qu’il veut et briser toutes les règles. La mesure d’urgence doit donc être à la mesure de ce pouvoir : si l’opérateur tente de frauder (retirer des fonds qui ne lui appartiennent pas) et que quelqu’un s’en aperçoit, alors on autorise tout le monde à sortir avant lui de la chaîne latérale. Cela s’appelle l’évacuation générale, ou mass-exit en anglais.

Cependant, cette solution extrême de l’évacuation générale pose des problèmes évidents. En cas de congestion sur la chaîne principale par exemple, les utilisateurs les moins fortunés pourraient ne pas retirer à temps et perdre leurs fonds. Bien que des solutions pour améliorer la situation (comme la mise en lots des signatures), ce problème constitue l’inconvénient principal de MVP.

Une version du Plasma minimal viable a été implémentée par l’équipe de recherche de OmiseGO, projet en lien avec Ethereum dont l’avenir repose essentiellement sur cette innovation. Du côté de Tezos, une autre version portant le nom de Marigold est également développée.

 

Plasma Cash

Plasma Cash, est une variante de Plasma présentée en mars 2018 par Vitalik Buterin. Plasma Cash possède la même approche que MVP mais introduit de nouvelles restrictions. L’idée derrière Plasma Cash est de remédier au problème de l’évacuation générale évoqué plus haut, et de ne pas obliger tous les participants à procéder à la validation complète de la chaîne comme c’est le cas dans MVP.

La particularité de Plasma Cash est qu’il ne fonctionne qu’avec des jetons non fongibles (non-fungible tokens), c’est-à-dire des jetons uniques ne pouvant pas être mélangés. Dans le cas d’Ethereum, c’est par exemple le cas des jetons respectant le standard ERC 721. Ces jetons peuvent représenter une quantité d’éthers (2.65 ETH par exemple), une quantité de jetons ERC-20, un chaton numérique (cryptokitty), etc.

En d’autres termes, un utilisateur peut déposer des éthers sur la chaîne Plasma, mais seulement sous forme d’un (ou plusieurs) lot(s) qu’il pourra échanger par la suite. Cela a pour conséquence de retirer la nécessité de gérer des UTXO : le registre ne sert plus qu’à déterminer l’appartenance du jeton.

Le fonctionnement de Plasma Cash permet ainsi de résoudre les deux problèmes liés au Plasma minimal viable.

D’une part, l’historique du jeton suffit à prouver sa propriété, ce qui fait que le détenteur doit simplement à procéder à une vérification légère de la chaîne. En effet, la non-fongibilité rend possible l’implémentation d’arbres de Merkle épars (sparse Merkle trees ou SMT), permettant notamment de prouver l’absence d’une transaction dans un bloc.

D’autre part, puisqu’un retrait ne peut concerner qu’un seul jeton non-fongible à la fois, la fraude de l’opérateur peut être gérée beaucoup plus facilement, ce qui permet d’éviter le recours à une évacuation générale et réduit le pouvoir de nuisance de cet opérateur.

 

Conclusion

Plasma est une collection de contrats autonomes qui permet de créer de multiples chaînes latérales sur Ethereum et sur d’autres protocoles semblables. Plasma est notamment développé pour améliorer la scalabilité d’Ethereum, qui est aujourd’hui l’un de ses plus gros points faibles.

D’après Vitalik Buterin, cette solution pourrait multiplier la capacité transactionnelle d’Ethereum par 100 sans détériorer la décentralisation de son réseau. Associée au partitionnement de la chaîne principale (sharding), elle pourrait même être multipliée par 10 000 !

Néanmoins, l’implémentation et l’adoption de Plasma risque d’être plutôt lente. Comme on l’a vu, le projet est toujours à l’état de recherche et il existe de multiples variantes, développées sur des réseaux différents. De plus, les développeurs d’Ethereum semblent pour l’instant privilégier les solutions on-chain apportées par la mise à niveau Serenity (Casper, sharding, eWASM).

 

Pour aller plus loin

Joseph Poon et Vitalik Buterin, Plasma: Scalable Autonomous Smart Contracts (livre blanc), 11 août 2017.
Daniel Goldman, Understanding Plasma, Part 1: The Basics, 7 février 2019.


Ludovic

Ludovic est fasciné par les cryptomonnaies et par l'impact qu'elles pourraient avoir sur le monde. De formation scientifique, il s'attache à décrire leur fonctionnement technique de la façon la plus fidèle possible.

facebook-cryptoast twitter-soothsayerdata

 



Poster un Commentaire

avatar