Exit games for EVM Validiums : le retour de Plasma

Intermédiaire3/1/2024, 6:59:34 AM
Cet article explique par Vitalik le fonctionnement du plasma, les défis auxquels sont confrontés les NFT, les défis auxquels est confrontée l'EVM et la manière dont la preuve de validité peut atténuer bon nombre de ces problèmes.

Merci tout particulièrement à Karl Floersch, Georgios Konstantopoulos et Martin Koppelmann pour leurs commentaires, leurs critiques et leurs discussions.

Plasma est une catégorie de solutions de mise à l'échelle de la blockchain qui permettent de conserver toutes les données et tous les calculs, à l'exception des dépôts, des retraits et des racines Merkle, hors chaîne. Cela ouvre la voie à de très importants gains d'évolutivité qui ne sont pas entravés par la disponibilité des données en chaîne. Le plasma a été inventé pour la première fois en 2017 et a connu de nombreuses versions en 2018, notamment Minimal Viable Plasma, Plasma Cash, Plasma Cashflow et Plasma Prime. Malheureusement, Plasma a depuis été largement remplacé par les cumuls, principalement en raison (i) des coûts de stockage des données élevés côté client et (ii) des limites fondamentales de Plasma qui font qu'il est difficile de généraliser au-delà des paiements < a href= " https://medium.com/@kelvinfichter/why-is-evm-on-plasma-hard-bf2d99c48df7 " >.

L'avènement des preuves de validité (alias zk-SNARKS) nous donne une raison de repenser cette décision. Le plus grand défi lié à l'utilisation de Plasma pour les paiements, à savoir le stockage des données côté client, peut être relevé efficacement grâce à des preuves de validité. De plus, les preuves de validité fournissent un large éventail d'outils qui nous permettent de créer une chaîne de type plasma qui fait fonctionner un EVM. Les garanties de sécurité du plasma ne couvriraient pas tous les utilisateurs, car les raisons fondamentales de l'impossibilité d'étendre les jeux de sortie de type Plasma à de nombreux types d'applications complexes persistent. Cependant, un très grand pourcentage des actifs pourraient néanmoins être sécurisés dans la pratique.

Ce billet explique comment les idées de Plasma peuvent être étendues pour y parvenir.

Aperçu : comment fonctionne le plasma

La version la plus simple de Plasma à comprendre est Plasma Cash. Plasma Cash fonctionne en traitant chaque pièce comme un NFT distinct et en suivant un historique distinct pour chaque pièce. Une chaîne de plasma a un opérateur qui est chargé de créer et de publier régulièrement des blocs. Les transactions de chaque bloc sont stockées sous la forme d'un arbre de Merkle clairsemé : si une transaction transfère la propriété de la pièce k, celle-ci apparaît en position k dans l'arbre. Lorsque l'opérateur de la chaîne Plasma crée un nouveau bloc, il publie la racine de l'arbre Merkle à enchaîner, et il envoie directement à chaque utilisateur les branches Merkle correspondant aux pièces que possède cet utilisateur.

Supposons qu'il s'agisse des trois derniers arbres de transactions d'une chaîne Plasma Cash. Ensuite, en supposant que tous les arbres précédents soient valides, nous savons qu'Eve possède actuellement la pièce 1, David la pièce 4 et George la pièce 6.

Le principal risque associé à tout système à plasma est le mauvais comportement de l'opérateur. Cela peut se produire de deux manières :

  1. Publier un bloc non valide (par exemple, l'opérateur inclut une transaction qui envoie la pièce 1 de Fred à Hermione, même si Fred n'est pas propriétaire de la pièce à ce moment-là)
  2. Publier un bloc non disponible (par exemple, l'opérateur n'envoie pas à Bob sa succursale Merkle pour l'un des blocs, l'empêchant ainsi de prouver à quelqu'un d'autre que sa pièce est toujours valide et qu'elle n'a pas été dépensée)

Si l'opérateur se comporte mal d'une manière qui concerne les actifs de l'utilisateur, celui-ci a la responsabilité de quitter immédiatement (plus précisément dans les 7 jours). Lorsqu'un utilisateur (« l'exiter ») sort, il fournit une agence Merkle prouvant l'inclusion de la transaction qui lui a transféré cette pièce de l'ancien propriétaire. Cela commence par une période de défi de 7 jours, au cours de laquelle les autres joueurs peuvent contester cette sortie en fournissant une preuve Merkle de l'une des trois choses suivantes :

  1. Pas le dernier propriétaire : une transaction ultérieure signée par le sortant transférant la pièce du sortant à quelqu'un d'autre
  2. Double dépense : une transaction qui a transféré la pièce de l'ancien propriétaire à quelqu'un d'autre, qui a été incluse avant la transaction de transfert de la pièce vers l'expéditeur
  3. Historique non valide : une transaction qui a transféré les pièces avant (au cours des 7 derniers jours) mais qui n'a pas entraîné de dépenses correspondantes. La personne qui sort peut répondre en indiquant les dépenses correspondantes ; s'il ne le fait pas, la sortie échoue.

Selon ces règles, tous ceux qui possèdent la pièce k doivent voir toutes les branches de Merkle en position k dans tous les arbres historiques de la semaine dernière pour être sûre qu'ils possèdent réellement la pièce k et qu'ils peuvent en sortir. Ils doivent stocker toutes les succursales contenant des transferts d'actifs, afin de pouvoir relever les défis et sortir en toute sécurité avec leur pièce.

Généraliser aux jetons fongibles

Le design ci-dessus fonctionne pour les NFT. Cependant, les jetons fongibles sont bien plus courants que les NFT, comme l'ETH et l'USDC. L'une des façons d'appliquer Plasma Cash à des jetons fongibles est de créer chaque petite dénomination d'une pièce (par ex. 0,01 ETH), un NFT distinct. Malheureusement, le coût du gaz à la sortie serait trop élevé si nous faisions cela.

L'une des solutions consiste à optimiser en traitant de nombreuses pièces adjacentes comme une seule unité, qui peut être transférée ou retirée en même temps. Il y a deux manières de procéder :

  1. Utilisez Plasma Cash presque tel quel, mais utilisez des algorithmes sophistiqués pour calculer très rapidement l'arbre de Merkle d'un très grand nombre d'objets, si de nombreux objets adjacents sont identiques. Ce n'est étonnamment pas si difficile à faire ; vous pouvez voir une implémentation de Python ici.
  2. Utilisez Plasma Cashflow, qui représente simplement de nombreuses pièces adjacentes en un seul objet.

Cependant, ces deux approches se heurtent à un problème de fragmentation : si vous recevez 0,001 ETH chacune de la part de centaines de personnes qui vous achètent du café, vous aurez 0,001 ETH à de nombreux endroits de l'arbre. Pour sortir de cet ETH, vous devrez tout de même effectuer de nombreuses sorties distinctes, ce qui rendrait les frais de gaz prohibitifs. Des protocoles de défragmentation ont été développés, mais ils sont difficiles à mettre en œuvre.

Sinon, nous pouvons remanier le système pour prendre en compte un modèle plus traditionnel de « résultat transactionnel non dépensé » (UTXO). Lorsque vous sortez une pièce, vous devez fournir l'historique de la dernière semaine de ces pièces, et n'importe qui pourrait contester votre sortie en prouvant que ces pièces historiques sont déjà sorties.

Un retrait du 0,2 ETH UTXO en bas à droite pouvait être annulé en indiquant le retrait de l'un des UTXO de son historique, en vert. Notez en particulier que les UTXO du centre à gauche et en bas à gauche sont des ancêtres, mais pas l'UTXO en haut à gauche. Cette approche est similaire aux idées de coloriage basées sur les commandes issues des protocoles relatifs aux pièces colorées datant de 2013.

Il existe une grande variété de techniques pour y parvenir. Dans tous les cas, l'objectif est de se faire une idée de ce qu'est « la même pièce » à différents moments de l'histoire, afin d'éviter que « la même pièce » ne soit retirée deux fois.

Difficultés liées à la généralisation à l'EVM

Malheureusement, il est beaucoup plus difficile de généraliser au-delà des paiements à l'EVM. L'un des principaux défis est que de nombreux objets publics de l'EVM n'ont pas de « propriétaire » clair. La sécurité du plasma dépend du fait que chaque objet a un propriétaire, qui est chargé de surveiller et de s'assurer que les données de la chaîne sont disponibles, et de quitter cet objet en cas de problème. De nombreuses applications Ethereum ne fonctionnent toutefois pas de cette façon. Les pools de liquidités Uniswap, par exemple, n'ont pas de propriétaire unique.

Un autre défi est que l'EVM n'essaie pas de limiter les dépendances. Les ETH détenus sur le compte A du bloc N auraient pu provenir de n'importe où dans le bloc N-1. Pour sortir d'un état cohérent, une chaîne EVM Plasma aurait besoin d'un jeu de sortie où, dans les cas extrêmes, une personne souhaitant sortir en utilisant des informations du bloc N pourrait devoir payer les frais de publication de l'intégralité de l'état du bloc N sur la chaîne : le coût du gaz s'élève à plusieurs millions de dollars. Les systèmes Plasma basés sur Utxo ne présentent pas ce problème : chaque utilisateur peut quitter ses actifs depuis le bloc le plus récent pour lequel il possède les données.

Le troisième défi est qu'en raison des dépendances illimitées de l'EVM, il est encore plus difficile d'aligner les incitations pour prouver sa validité. La validité d'un État dépend de tout le reste. Pour prouver quelque chose, il faut tout prouver. Le règlement des problèmes dans une telle situation ne peut généralement pas être rendu compatible avec les incitations en raison du problème de disponibilité des données. Un problème particulièrement ennuyeux est que nous perdons la garantie, présente dans les systèmes basés sur Utxo, selon laquelle l'état d'un objet ne peut pas changer sans le consentement de son propriétaire. Cette garantie est extrêmement utile, car elle permet au propriétaire d'être toujours au courant de l'état prouvable le plus récent de ses actifs, et simplifie les jeux de sortie. Sans cela, il devient encore plus difficile de créer des jeux de sortie.

Comment les preuves de validité peuvent atténuer bon nombre de ces problèmes

La chose la plus fondamentale que les preuves de validité peuvent faire pour améliorer la conception des chaînes de plasma est de prouver la validité de chaque bloc de plasma de la chaîne. Cela simplifie grandement l'espace de conception : cela signifie que la seule attaque de la part de l'opérateur qui nous inquiète concerne les blocs non disponibles, et non les blocs invalides. Dans Plasma Cash, par exemple, vous n'avez plus à vous soucier des problèmes historiques. Cela réduit l'état dont un utilisateur a besoin pour télécharger, passant d'une branche par bloc la semaine dernière à une branche par ressource.

De plus, les retraits depuis l'État le plus récent (dans le cas courant où l'opérateur est honnête, tous les retraits proviendraient de l'État le plus récent) ne sont pas soumis à des défis concernant le propriétaire le plus récent. Ainsi, dans une chaîne Plasma dont la validité est prouvée, ces retraits ne seraient soumis à aucune difficulté. Cela signifie que, dans le cas normal, les retraits peuvent être instantanés !

Extension à l'EVM : graphes UTXO parallèles

Dans le cas de l'EVM, les preuves de validité nous permettent également de faire quelque chose d'intelligent : elles peuvent être utilisées pour implémenter un graphique UTXO parallèle pour les jetons ETH et ERC20, et prouver l'équivalence entre le graphique UTXO et l'état EVM. Une fois que vous l'aurez, vous pourriez implémenter un système plasma « normal » sur le graphe UTXO.

Cela nous permet d'éviter de nombreuses complexités de l'EVM. Par exemple, le fait que quelqu'un puisse modifier votre compte sans votre consentement (en lui envoyant des pièces et en augmentant ainsi son solde) n'a pas d'importance, car la construction Plasma ne repose pas sur l'état EVM lui-même, mais plutôt sur un état UTXO qui fonctionne en parallèle à l'EVM, où toutes les pièces que vous recevez sont des objets distincts.

Extension à l'EVM : sortie totale de l'État

Des schémas plus simples ont été proposés pour fabriquer un « EVM à plasma », par exemple. Plasma Free et, avant cela, ce billet de 2019. Dans le cadre de ces stratagèmes, n'importe qui peut envoyer un message sur la L1 pour obliger l'opérateur à inclure une transaction ou à mettre à disposition une succursale particulière de l'État. Si l'opérateur ne le fait pas, la chaîne commence à annuler les blocs. La chaîne cesse de revenir en arrière une fois que quelqu'un publie une copie complète de l'état complet, ou du moins de toutes les données signalées par les utilisateurs comme potentiellement manquantes. Pour effectuer un retrait, il peut être nécessaire de verser une prime, qui permettrait de payer la part des frais d'essence revenant à cet utilisateur lorsqu'il publie une telle quantité de données.

Les systèmes de ce type ont l'inconvénient de ne pas autoriser les retraits instantanés dans les cas normaux, car il est toujours possible que la chaîne doive revenir à l'état le plus récent.

Limites des schémas de plasma EVM

De tels systèmes sont puissants, mais ne sont PAS en mesure de fournir des garanties de sécurité complètes à tous les utilisateurs. Le cas où ils se décomposent le plus clairement est celui où un objet public en particulier n'a pas de « propriétaire » économique clair.

Prenons le cas d'un CDP (position de dette garantie), un contrat intelligent dans lequel un utilisateur possède des pièces bloquées qui ne peuvent être libérées qu'une fois qu'il a payé sa dette. Supposons que cet utilisateur ait 1 ETH (environ 2 000 dollars au moment de la rédaction de cet article) bloqué dans un CDP avec 1 000 DAI de dettes. Maintenant, la chaîne Plasma arrête de publier des blocs et l'utilisateur refuse de quitter. L'utilisateur ne pourrait tout simplement jamais sortir. À présent, l'utilisateur a une option gratuite : si le cours de l'ETH tombe en dessous de 1 000 dollars, il s'en va et oublie le CDP, et si le prix de l'ETH reste supérieur, il finit par le réclamer. En moyenne, un utilisateur aussi malveillant gagne de l'argent grâce à cela.

Un autre exemple est un système de confidentialité, par exemple. Tornado Cash ou Privacy Pools. Envisagez un système de confidentialité avec cinq déposants :

Les zk-SNARK du système de confidentialité masquent le lien entre le propriétaire d'une pièce qui entre dans le système et le propriétaire de la pièce qui en sort.

Supposons que seule Orange soit retirée et qu'à ce moment-là, l'opérateur de la chaîne Plasma arrête de publier des données. Supposons également que nous utilisions l'approche graphique UTXO avec la règle du premier entré, premier sorti, afin que chaque pièce soit associée à la pièce située juste en dessous. Orange pourrait alors retirer ses pièces pré-mélangées et post-mixées, et le système les percevrait comme deux pièces distinctes. Si Blue essaie de retirer sa pièce prémélangée, l'état le plus récent de l'orange le remplacera ; en attendant, Blue n'aura pas les informations nécessaires pour retirer sa pièce post-mixée.

Cela peut être réglé si vous autorisez les quatre autres déposants à retirer le contrat de confidentialité lui-même (qui remplacerait les dépôts), puis à retirer les pièces en L1. Cependant, la mise en œuvre d'un tel mécanisme nécessite des efforts supplémentaires de la part des personnes qui développent le système de confidentialité.

Il existe également d'autres moyens de résoudre le problème de la confidentialité, par exemple l'approche Intmax, qui consiste à placer quelques octets sur une chaîne, dans un style de cumul, avec un opérateur de type Plasma qui transmet les informations entre les utilisateurs individuels.

Les positions Uniswap LP rencontrent le même problème : si vous avez échangé de l'USDC contre de l'ETH sur une position Uniswap, vous pouvez essayer de retirer votre USDC avant la transaction et votre ETH après la transaction. Si vous êtes de connivence avec l'opérateur de la chaîne Plasma, les fournisseurs de liquidités et les autres utilisateurs n'auraient pas accès à l'état post-transaction et ne seraient donc pas en mesure de retirer leur USDC après transaction. Une logique particulière serait requise pour éviter de telles situations.

Conclusions

En 2023, Plasma est un espace design sous-estimé. Les cumuls restent la référence absolue et possèdent des propriétés de sécurité imbattables. Cela est particulièrement vrai du point de vue de l'expérience des développeurs : rien ne peut égaler la simplicité d'un développeur d'applications qui n'a même pas à réfléchir aux graphiques de propriété et aux flux d'incitation au sein de son application.

Cependant, Plasma nous permet de contourner complètement la question de la disponibilité des données, en réduisant considérablement les frais de transaction. Le plasma peut apporter une amélioration de sécurité importante pour des chaînes qui seraient autrement des validiums. Le fait que les zK-EVM vont enfin porter leurs fruits cette année en fait une excellente occasion de réexplorer cet espace de conception et de proposer des structures encore plus efficaces afin de simplifier l'expérience des développeurs et de protéger les fonds des utilisateurs.

Avertissement:

  1. Cet article est repris de [Vitalik]. Tous les droits d'auteur appartiennent à l'auteur original [Vitalik Buterin]. En cas d'objection à cette réimpression, contactez l'équipe de Gate Learn, elle s'en occupera rapidement.
  2. Avertissement en matière de responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent en aucun cas un conseil d'investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, de distribuer ou de plagier les articles traduits.

Exit games for EVM Validiums : le retour de Plasma

Intermédiaire3/1/2024, 6:59:34 AM
Cet article explique par Vitalik le fonctionnement du plasma, les défis auxquels sont confrontés les NFT, les défis auxquels est confrontée l'EVM et la manière dont la preuve de validité peut atténuer bon nombre de ces problèmes.

Merci tout particulièrement à Karl Floersch, Georgios Konstantopoulos et Martin Koppelmann pour leurs commentaires, leurs critiques et leurs discussions.

Plasma est une catégorie de solutions de mise à l'échelle de la blockchain qui permettent de conserver toutes les données et tous les calculs, à l'exception des dépôts, des retraits et des racines Merkle, hors chaîne. Cela ouvre la voie à de très importants gains d'évolutivité qui ne sont pas entravés par la disponibilité des données en chaîne. Le plasma a été inventé pour la première fois en 2017 et a connu de nombreuses versions en 2018, notamment Minimal Viable Plasma, Plasma Cash, Plasma Cashflow et Plasma Prime. Malheureusement, Plasma a depuis été largement remplacé par les cumuls, principalement en raison (i) des coûts de stockage des données élevés côté client et (ii) des limites fondamentales de Plasma qui font qu'il est difficile de généraliser au-delà des paiements < a href= " https://medium.com/@kelvinfichter/why-is-evm-on-plasma-hard-bf2d99c48df7 " >.

L'avènement des preuves de validité (alias zk-SNARKS) nous donne une raison de repenser cette décision. Le plus grand défi lié à l'utilisation de Plasma pour les paiements, à savoir le stockage des données côté client, peut être relevé efficacement grâce à des preuves de validité. De plus, les preuves de validité fournissent un large éventail d'outils qui nous permettent de créer une chaîne de type plasma qui fait fonctionner un EVM. Les garanties de sécurité du plasma ne couvriraient pas tous les utilisateurs, car les raisons fondamentales de l'impossibilité d'étendre les jeux de sortie de type Plasma à de nombreux types d'applications complexes persistent. Cependant, un très grand pourcentage des actifs pourraient néanmoins être sécurisés dans la pratique.

Ce billet explique comment les idées de Plasma peuvent être étendues pour y parvenir.

Aperçu : comment fonctionne le plasma

La version la plus simple de Plasma à comprendre est Plasma Cash. Plasma Cash fonctionne en traitant chaque pièce comme un NFT distinct et en suivant un historique distinct pour chaque pièce. Une chaîne de plasma a un opérateur qui est chargé de créer et de publier régulièrement des blocs. Les transactions de chaque bloc sont stockées sous la forme d'un arbre de Merkle clairsemé : si une transaction transfère la propriété de la pièce k, celle-ci apparaît en position k dans l'arbre. Lorsque l'opérateur de la chaîne Plasma crée un nouveau bloc, il publie la racine de l'arbre Merkle à enchaîner, et il envoie directement à chaque utilisateur les branches Merkle correspondant aux pièces que possède cet utilisateur.

Supposons qu'il s'agisse des trois derniers arbres de transactions d'une chaîne Plasma Cash. Ensuite, en supposant que tous les arbres précédents soient valides, nous savons qu'Eve possède actuellement la pièce 1, David la pièce 4 et George la pièce 6.

Le principal risque associé à tout système à plasma est le mauvais comportement de l'opérateur. Cela peut se produire de deux manières :

  1. Publier un bloc non valide (par exemple, l'opérateur inclut une transaction qui envoie la pièce 1 de Fred à Hermione, même si Fred n'est pas propriétaire de la pièce à ce moment-là)
  2. Publier un bloc non disponible (par exemple, l'opérateur n'envoie pas à Bob sa succursale Merkle pour l'un des blocs, l'empêchant ainsi de prouver à quelqu'un d'autre que sa pièce est toujours valide et qu'elle n'a pas été dépensée)

Si l'opérateur se comporte mal d'une manière qui concerne les actifs de l'utilisateur, celui-ci a la responsabilité de quitter immédiatement (plus précisément dans les 7 jours). Lorsqu'un utilisateur (« l'exiter ») sort, il fournit une agence Merkle prouvant l'inclusion de la transaction qui lui a transféré cette pièce de l'ancien propriétaire. Cela commence par une période de défi de 7 jours, au cours de laquelle les autres joueurs peuvent contester cette sortie en fournissant une preuve Merkle de l'une des trois choses suivantes :

  1. Pas le dernier propriétaire : une transaction ultérieure signée par le sortant transférant la pièce du sortant à quelqu'un d'autre
  2. Double dépense : une transaction qui a transféré la pièce de l'ancien propriétaire à quelqu'un d'autre, qui a été incluse avant la transaction de transfert de la pièce vers l'expéditeur
  3. Historique non valide : une transaction qui a transféré les pièces avant (au cours des 7 derniers jours) mais qui n'a pas entraîné de dépenses correspondantes. La personne qui sort peut répondre en indiquant les dépenses correspondantes ; s'il ne le fait pas, la sortie échoue.

Selon ces règles, tous ceux qui possèdent la pièce k doivent voir toutes les branches de Merkle en position k dans tous les arbres historiques de la semaine dernière pour être sûre qu'ils possèdent réellement la pièce k et qu'ils peuvent en sortir. Ils doivent stocker toutes les succursales contenant des transferts d'actifs, afin de pouvoir relever les défis et sortir en toute sécurité avec leur pièce.

Généraliser aux jetons fongibles

Le design ci-dessus fonctionne pour les NFT. Cependant, les jetons fongibles sont bien plus courants que les NFT, comme l'ETH et l'USDC. L'une des façons d'appliquer Plasma Cash à des jetons fongibles est de créer chaque petite dénomination d'une pièce (par ex. 0,01 ETH), un NFT distinct. Malheureusement, le coût du gaz à la sortie serait trop élevé si nous faisions cela.

L'une des solutions consiste à optimiser en traitant de nombreuses pièces adjacentes comme une seule unité, qui peut être transférée ou retirée en même temps. Il y a deux manières de procéder :

  1. Utilisez Plasma Cash presque tel quel, mais utilisez des algorithmes sophistiqués pour calculer très rapidement l'arbre de Merkle d'un très grand nombre d'objets, si de nombreux objets adjacents sont identiques. Ce n'est étonnamment pas si difficile à faire ; vous pouvez voir une implémentation de Python ici.
  2. Utilisez Plasma Cashflow, qui représente simplement de nombreuses pièces adjacentes en un seul objet.

Cependant, ces deux approches se heurtent à un problème de fragmentation : si vous recevez 0,001 ETH chacune de la part de centaines de personnes qui vous achètent du café, vous aurez 0,001 ETH à de nombreux endroits de l'arbre. Pour sortir de cet ETH, vous devrez tout de même effectuer de nombreuses sorties distinctes, ce qui rendrait les frais de gaz prohibitifs. Des protocoles de défragmentation ont été développés, mais ils sont difficiles à mettre en œuvre.

Sinon, nous pouvons remanier le système pour prendre en compte un modèle plus traditionnel de « résultat transactionnel non dépensé » (UTXO). Lorsque vous sortez une pièce, vous devez fournir l'historique de la dernière semaine de ces pièces, et n'importe qui pourrait contester votre sortie en prouvant que ces pièces historiques sont déjà sorties.

Un retrait du 0,2 ETH UTXO en bas à droite pouvait être annulé en indiquant le retrait de l'un des UTXO de son historique, en vert. Notez en particulier que les UTXO du centre à gauche et en bas à gauche sont des ancêtres, mais pas l'UTXO en haut à gauche. Cette approche est similaire aux idées de coloriage basées sur les commandes issues des protocoles relatifs aux pièces colorées datant de 2013.

Il existe une grande variété de techniques pour y parvenir. Dans tous les cas, l'objectif est de se faire une idée de ce qu'est « la même pièce » à différents moments de l'histoire, afin d'éviter que « la même pièce » ne soit retirée deux fois.

Difficultés liées à la généralisation à l'EVM

Malheureusement, il est beaucoup plus difficile de généraliser au-delà des paiements à l'EVM. L'un des principaux défis est que de nombreux objets publics de l'EVM n'ont pas de « propriétaire » clair. La sécurité du plasma dépend du fait que chaque objet a un propriétaire, qui est chargé de surveiller et de s'assurer que les données de la chaîne sont disponibles, et de quitter cet objet en cas de problème. De nombreuses applications Ethereum ne fonctionnent toutefois pas de cette façon. Les pools de liquidités Uniswap, par exemple, n'ont pas de propriétaire unique.

Un autre défi est que l'EVM n'essaie pas de limiter les dépendances. Les ETH détenus sur le compte A du bloc N auraient pu provenir de n'importe où dans le bloc N-1. Pour sortir d'un état cohérent, une chaîne EVM Plasma aurait besoin d'un jeu de sortie où, dans les cas extrêmes, une personne souhaitant sortir en utilisant des informations du bloc N pourrait devoir payer les frais de publication de l'intégralité de l'état du bloc N sur la chaîne : le coût du gaz s'élève à plusieurs millions de dollars. Les systèmes Plasma basés sur Utxo ne présentent pas ce problème : chaque utilisateur peut quitter ses actifs depuis le bloc le plus récent pour lequel il possède les données.

Le troisième défi est qu'en raison des dépendances illimitées de l'EVM, il est encore plus difficile d'aligner les incitations pour prouver sa validité. La validité d'un État dépend de tout le reste. Pour prouver quelque chose, il faut tout prouver. Le règlement des problèmes dans une telle situation ne peut généralement pas être rendu compatible avec les incitations en raison du problème de disponibilité des données. Un problème particulièrement ennuyeux est que nous perdons la garantie, présente dans les systèmes basés sur Utxo, selon laquelle l'état d'un objet ne peut pas changer sans le consentement de son propriétaire. Cette garantie est extrêmement utile, car elle permet au propriétaire d'être toujours au courant de l'état prouvable le plus récent de ses actifs, et simplifie les jeux de sortie. Sans cela, il devient encore plus difficile de créer des jeux de sortie.

Comment les preuves de validité peuvent atténuer bon nombre de ces problèmes

La chose la plus fondamentale que les preuves de validité peuvent faire pour améliorer la conception des chaînes de plasma est de prouver la validité de chaque bloc de plasma de la chaîne. Cela simplifie grandement l'espace de conception : cela signifie que la seule attaque de la part de l'opérateur qui nous inquiète concerne les blocs non disponibles, et non les blocs invalides. Dans Plasma Cash, par exemple, vous n'avez plus à vous soucier des problèmes historiques. Cela réduit l'état dont un utilisateur a besoin pour télécharger, passant d'une branche par bloc la semaine dernière à une branche par ressource.

De plus, les retraits depuis l'État le plus récent (dans le cas courant où l'opérateur est honnête, tous les retraits proviendraient de l'État le plus récent) ne sont pas soumis à des défis concernant le propriétaire le plus récent. Ainsi, dans une chaîne Plasma dont la validité est prouvée, ces retraits ne seraient soumis à aucune difficulté. Cela signifie que, dans le cas normal, les retraits peuvent être instantanés !

Extension à l'EVM : graphes UTXO parallèles

Dans le cas de l'EVM, les preuves de validité nous permettent également de faire quelque chose d'intelligent : elles peuvent être utilisées pour implémenter un graphique UTXO parallèle pour les jetons ETH et ERC20, et prouver l'équivalence entre le graphique UTXO et l'état EVM. Une fois que vous l'aurez, vous pourriez implémenter un système plasma « normal » sur le graphe UTXO.

Cela nous permet d'éviter de nombreuses complexités de l'EVM. Par exemple, le fait que quelqu'un puisse modifier votre compte sans votre consentement (en lui envoyant des pièces et en augmentant ainsi son solde) n'a pas d'importance, car la construction Plasma ne repose pas sur l'état EVM lui-même, mais plutôt sur un état UTXO qui fonctionne en parallèle à l'EVM, où toutes les pièces que vous recevez sont des objets distincts.

Extension à l'EVM : sortie totale de l'État

Des schémas plus simples ont été proposés pour fabriquer un « EVM à plasma », par exemple. Plasma Free et, avant cela, ce billet de 2019. Dans le cadre de ces stratagèmes, n'importe qui peut envoyer un message sur la L1 pour obliger l'opérateur à inclure une transaction ou à mettre à disposition une succursale particulière de l'État. Si l'opérateur ne le fait pas, la chaîne commence à annuler les blocs. La chaîne cesse de revenir en arrière une fois que quelqu'un publie une copie complète de l'état complet, ou du moins de toutes les données signalées par les utilisateurs comme potentiellement manquantes. Pour effectuer un retrait, il peut être nécessaire de verser une prime, qui permettrait de payer la part des frais d'essence revenant à cet utilisateur lorsqu'il publie une telle quantité de données.

Les systèmes de ce type ont l'inconvénient de ne pas autoriser les retraits instantanés dans les cas normaux, car il est toujours possible que la chaîne doive revenir à l'état le plus récent.

Limites des schémas de plasma EVM

De tels systèmes sont puissants, mais ne sont PAS en mesure de fournir des garanties de sécurité complètes à tous les utilisateurs. Le cas où ils se décomposent le plus clairement est celui où un objet public en particulier n'a pas de « propriétaire » économique clair.

Prenons le cas d'un CDP (position de dette garantie), un contrat intelligent dans lequel un utilisateur possède des pièces bloquées qui ne peuvent être libérées qu'une fois qu'il a payé sa dette. Supposons que cet utilisateur ait 1 ETH (environ 2 000 dollars au moment de la rédaction de cet article) bloqué dans un CDP avec 1 000 DAI de dettes. Maintenant, la chaîne Plasma arrête de publier des blocs et l'utilisateur refuse de quitter. L'utilisateur ne pourrait tout simplement jamais sortir. À présent, l'utilisateur a une option gratuite : si le cours de l'ETH tombe en dessous de 1 000 dollars, il s'en va et oublie le CDP, et si le prix de l'ETH reste supérieur, il finit par le réclamer. En moyenne, un utilisateur aussi malveillant gagne de l'argent grâce à cela.

Un autre exemple est un système de confidentialité, par exemple. Tornado Cash ou Privacy Pools. Envisagez un système de confidentialité avec cinq déposants :

Les zk-SNARK du système de confidentialité masquent le lien entre le propriétaire d'une pièce qui entre dans le système et le propriétaire de la pièce qui en sort.

Supposons que seule Orange soit retirée et qu'à ce moment-là, l'opérateur de la chaîne Plasma arrête de publier des données. Supposons également que nous utilisions l'approche graphique UTXO avec la règle du premier entré, premier sorti, afin que chaque pièce soit associée à la pièce située juste en dessous. Orange pourrait alors retirer ses pièces pré-mélangées et post-mixées, et le système les percevrait comme deux pièces distinctes. Si Blue essaie de retirer sa pièce prémélangée, l'état le plus récent de l'orange le remplacera ; en attendant, Blue n'aura pas les informations nécessaires pour retirer sa pièce post-mixée.

Cela peut être réglé si vous autorisez les quatre autres déposants à retirer le contrat de confidentialité lui-même (qui remplacerait les dépôts), puis à retirer les pièces en L1. Cependant, la mise en œuvre d'un tel mécanisme nécessite des efforts supplémentaires de la part des personnes qui développent le système de confidentialité.

Il existe également d'autres moyens de résoudre le problème de la confidentialité, par exemple l'approche Intmax, qui consiste à placer quelques octets sur une chaîne, dans un style de cumul, avec un opérateur de type Plasma qui transmet les informations entre les utilisateurs individuels.

Les positions Uniswap LP rencontrent le même problème : si vous avez échangé de l'USDC contre de l'ETH sur une position Uniswap, vous pouvez essayer de retirer votre USDC avant la transaction et votre ETH après la transaction. Si vous êtes de connivence avec l'opérateur de la chaîne Plasma, les fournisseurs de liquidités et les autres utilisateurs n'auraient pas accès à l'état post-transaction et ne seraient donc pas en mesure de retirer leur USDC après transaction. Une logique particulière serait requise pour éviter de telles situations.

Conclusions

En 2023, Plasma est un espace design sous-estimé. Les cumuls restent la référence absolue et possèdent des propriétés de sécurité imbattables. Cela est particulièrement vrai du point de vue de l'expérience des développeurs : rien ne peut égaler la simplicité d'un développeur d'applications qui n'a même pas à réfléchir aux graphiques de propriété et aux flux d'incitation au sein de son application.

Cependant, Plasma nous permet de contourner complètement la question de la disponibilité des données, en réduisant considérablement les frais de transaction. Le plasma peut apporter une amélioration de sécurité importante pour des chaînes qui seraient autrement des validiums. Le fait que les zK-EVM vont enfin porter leurs fruits cette année en fait une excellente occasion de réexplorer cet espace de conception et de proposer des structures encore plus efficaces afin de simplifier l'expérience des développeurs et de protéger les fonds des utilisateurs.

Avertissement:

  1. Cet article est repris de [Vitalik]. Tous les droits d'auteur appartiennent à l'auteur original [Vitalik Buterin]. En cas d'objection à cette réimpression, contactez l'équipe de Gate Learn, elle s'en occupera rapidement.
  2. Avertissement en matière de responsabilité : Les points de vue et opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent en aucun cas un conseil d'investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, de distribuer ou de plagier les articles traduits.
Lancez-vous
Inscrivez-vous et obtenez un bon de
100$
!