Article de Vitalik Buterin publié sur https://vitalik.ca/general/2021/01/05/rollup.html, traduit par Jean Zundel.
Depuis longtemps, les couches de niveau 2 sont vues comme un moyen de passer Ă lâĂ©chelle, pour augmenter le nombre de transactions par seconde limitant naturellement une blockchain dĂ©centralisĂ©e comme Ethereum. Les rollups, dont le nom Ă©voque les rouleaux de piĂšces que lâon peut commodĂ©ment transporter et stocker, sont rapidement devenus la technologie la plus en vue. AprĂšs un bref survol des solutions dĂ©veloppĂ©es auparavant, Plasma et les channels, Vitalik Buterin expose ici les principes fondamentaux des deux principaux types de rollups ainsi que les avantages et les inconvĂ©nients de chacun.
Les rollups font fureur dans la communautĂ© Ethereum, et sont en passe de devenir la solution clĂ© pour le scaling, le passage Ă lâĂ©chelle dâEthereum dans un avenir proche. Mais quâest-ce exactement que cette technologie, que peut-on en attendre et comment lâutiliser ? Cet article tentera de rĂ©pondre Ă certaines de ces questions.
Contexte : quâest-ce que le passage Ă lâĂ©chelle des couches 1 et 2 ?
Il existe deux maniĂšres de passer Ă lâĂ©chelle lâĂ©cosystĂšme dâune blockchain. PremiĂšrement, on peut faire en sorte que la blockchain elle-mĂȘme ait une capacitĂ© de transactions plus Ă©levĂ©e. Le principal inconvĂ©nient de cette technique est que les blockchains comportant de « plus grands blocs » sont intrinsĂšquement plus difficiles Ă vĂ©rifier et risquent de devenir plus centralisĂ©es. Pour Ă©viter ce risque, les dĂ©veloppeurs peuvent soit augmenter lâefficacitĂ© du logiciel client, soit, de maniĂšre plus durable, utiliser des techniques telles que le sharding pour permettre de rĂ©partir le travail de construction et de vĂ©rification de la chaĂźne sur de nombreux nĆuds ; le projet connu sous le nom de « eth2 » est actuellement en train de mettre en Ćuvre cette solution pour Ethereum.
DeuxiĂšmement, on peut changer la façon dont on utilise la blockchain. Au lieu de placer directement toute lâactivitĂ© sur la blockchain, les utilisateurs effectuent la majeure partie de leur activitĂ© hors chaĂźne dans un protocole dit de « niveau 2 ». Il existe un smart contract ou contrat autonome sur la chaĂźne, qui nâa que deux tĂąches : traiter les dĂ©pĂŽts et les retraits, et vĂ©rifier les preuves que tout ce qui se passe hors de la chaĂźne respecte les rĂšgles. Il existe plusieurs maniĂšres de faire ces preuves, mais elles ont toutes en commun le fait que la vĂ©rification des preuves sur la chaĂźne est beaucoup moins coĂ»teuse que le calcul originel hors chaĂźne.
Comparaison : state channels, Plasma et rollups
Les trois principaux types de mise Ă lâĂ©chelle par une couche de niveau 2 sont les state channels ou canaux dâĂ©tat, Plasma et les rollups. Il sâagit de trois paradigmes diffĂ©rents, avec des avantages et des inconvĂ©nients diffĂ©rents, et Ă ce stade, nous sommes assez confiants dans le fait que toutes les mises Ă lâĂ©chelle de la couche 2 entrent Ă peu prĂšs dans ces trois catĂ©gories (bien que des controverses de dĂ©nomination existent Ă la marge, voir par exemple «validium»).
Comment fonctionnent les channels ?
Voir aussi : https://www.jeffcoleman.ca/state-channels et statechannels.org
Imaginez quâAlice offre une connexion Internet Ă Bob, en Ă©change de quoi ce dernier lui verse 0,001 dollar par mĂ©gaoctet. Au lieu dâeffectuer une transaction pour chaque paiement, Alice et Bob utilisent le systĂšme de niveau 2 suivant.
Dâabord, Bob met 1$ (ou lâĂ©quivalent en ETH ou en monnaie stable) dans un contrat autonome. Pour effectuer son premier paiement Ă Alice, Bob signe un «ticket» (un message hors chaĂźne), qui dit simplement «0,001$», et lâenvoie Ă Alice. Pour effectuer son deuxiĂšme paiement, Bob signe un autre ticket qui indique «0,002$» et lâenvoie Ă Alice. Et ainsi de suite pour autant de paiements que nĂ©cessaire. Lorsque Alice et Bob ont terminĂ© leurs transactions, Alice peut publier le ticket de plus grande valeur Ă la chaĂźne, enveloppĂ© dans une autre signature de sa part. Le contrat vĂ©rifie les signatures dâAlice et de Bob, verse Ă Alice le montant indiquĂ© sur le ticket de Bob et renvoie le reste Ă Bob. Si Alice ne veut pas fermer le channel (pour cause de malveillance ou de dĂ©faillance technique), Bob peut dĂ©clencher une pĂ©riode de retrait (par exemple, 7 jours) ; si Alice ne fournit pas de ticket dans ce dĂ©lai, Bob est alors remboursĂ© de tout son argent.
Cette technique est puissante : elle peut ĂȘtre ajustĂ©e pour gĂ©rer les paiements bidirectionnels, les relations par contrat autonome (par exemple, Alice et Bob passent un contrat financier Ă lâintĂ©rieur du canal) et la composition (si Alice et Bob ont un canal ouvert, tout comme Bob et Charlie, Alice peut interagir sans confiance avec Charlie). Mais les channels ont leurs limites. Les channels ne peuvent pas ĂȘtre utilisĂ©s pour envoyer des fonds hors chaĂźne Ă des personnes qui ne sont pas encore des participants. Les channels ne peuvent pas ĂȘtre utilisĂ©s pour reprĂ©senter des objets qui nâont pas de propriĂ©taire logique clair (par exemple, Uniswap). Et les channels, surtout sâils sont utilisĂ©s pour faire des choses plus complexes que de simples paiements rĂ©currents, nĂ©cessitent de bloquer un capital important.
Comment Plasma fonctionne-t-il ?
Voir aussi lâarticle originel sur Plasma et Plasma Cash.
Pour dĂ©poser un actif, un utilisateur lâenvoie au contrat autonome qui gĂšre la chaĂźne Plasma. Elle lui attribue un nouvel identifiant unique (par exemple 537). Chaque chaĂźne Plasma a un opĂ©rateur (il peut sâagir dâun acteur centralisĂ©, dâun multisig ou dâun Ă©lĂ©ment plus complexe comme du PoS ou du DPoS). Ă chaque intervalle (15 secondes, ou une heure, ou entre les deux), lâopĂ©rateur gĂ©nĂšre un «lot» composĂ© de toutes les transactions Plasma quâil a reçues hors chaĂźne. Il gĂ©nĂšre un arbre de Merkle, oĂč Ă chaque indice X de lâarbre, il y a une transaction transfĂ©rant lâactif dâID X sâil en existe une ; sinon cette feuille est Ă zĂ©ro. Ils publient la racine Merkle de cet arbre sur la chaĂźne. Ils envoient Ă©galement la branche de Merkle de chaque index X au propriĂ©taire actuel de cet actif. Pour retirer un actif, un utilisateur publie la branche de Merkle de la transaction la plus rĂ©cente qui lui a envoyĂ© lâactif. Le contrat dĂ©clenche une pĂ©riode de contestation, pendant laquelle chacun peut essayer dâutiliser dâautres branches de Merkle pour invalider la sortie en prouvant que (i) lâexpĂ©diteur ne possĂ©dait pas lâactif au moment oĂč il lâa envoyĂ©, ou (ii) quâil a envoyĂ© lâactif Ă quelquâun dâautre Ă un moment ultĂ©rieur. Si personne ne prouve que la sortie est frauduleuse pendant (par exemple) 7 jours, lâutilisateur peut retirer le bien.
Plasma prĂ©sente des propriĂ©tĂ©s plus puissantes que les canaux : vous pouvez envoyer des actifs Ă des participants qui nâont jamais fait partie du systĂšme, et les exigences en matiĂšre de capital sont beaucoup plus faibles. Mais cela a un coĂ»t : les chaĂźnes ne nĂ©cessitent aucune donnĂ©e pour tourner en «fonctionnement normal», mais Plasma exige que chaque chaĂźne publie une empreinte cryptographique Ă intervalles rĂ©guliers. De plus, les transferts Plasma ne sont pas instantanĂ©s : il faut attendre la fin de lâintervalle et la publication du bloc.
En outre, Plasma et les channels partagent une mĂȘme faiblesse : la thĂ©orie des jeux sur laquelle se fonde leur sĂ©curitĂ© repose sur lâidĂ©e que chaque objet contrĂŽlĂ© par les deux systĂšmes a un «propriĂ©taire» logique. Si ce propriĂ©taire ne se soucie pas de son bien, il peut en rĂ©sulter un rĂ©sultat «non valide» concernant cet actif. Cette situation est acceptable pour de nombreuses applications, mais elle est un facteur de rupture pour beaucoup dâautres (par exemple, Uniswap). MĂȘme les systĂšmes oĂč lâĂ©tat dâun objet peut ĂȘtre modifiĂ© sans le consentement du propriĂ©taire (par exemple, les systĂšmes basĂ©s sur les comptes, oĂč lâon peut augmenter le solde de quelquâun sans son consentement) ne fonctionnent pas bien avec Plasma. Tout cela signifie quâil faut beaucoup de «raisonnement spĂ©cifique Ă lâapplication» dans tout dĂ©ploiement rĂ©aliste de Plasma ou de channels, et quâil nâest pas possible de mettre en Ćuvre un systĂšme Plasma ou de channels qui se contente de simuler lâenvironnement complet dâEthereum (ou «lâEVM»). Pour contourner ce problĂšme, il faut⊠les rollups.
Rollups
Voir aussi : EthHub sur les optimistic rollups et les ZK rollups.
Plasma et les channels sont des reprĂ©sentations «complĂštes» de couche de niveau 2, en ce quâils tentent de dĂ©placer les donnĂ©es et les calculs hors de la chaĂźne. Cependant, les questions fondamentales de la thĂ©orie des jeux concernant la disponibilitĂ© des donnĂ©es signifient quâil est impossible de le faire en toute sĂ©curitĂ© pour toutes les applications. Plasma et les channels contournent ce problĂšme grĂące Ă une notion explicite de propriĂ©taire, mais cela les empĂȘche dâĂȘtre totalement gĂ©nĂ©raux. Les rollups, en revanche, sont une reprĂ©sentation «hybride» de couche 2. Les rollups dĂ©placent le calcul (et le stockage de lâĂ©tat) hors chaĂźne, mais conservent certaines donnĂ©es par transaction sur la chaĂźne. Dans un souci dâefficacitĂ©, ils utilisent toute une sĂ©rie dâastuces de compression pour remplacer les donnĂ©es par du calcul chaque fois que cela est possible. Il en rĂ©sulte un systĂšme dont lâĂ©volutivitĂ© est toujours limitĂ©e par la bande passante de donnĂ©es de la blockchain sous-jacente, mais dans un rapport trĂšs favorable : alors quâun transfert de jetons ERC20 de la couche de base dâEthereum coĂ»te environ 45000 gaz, un transfert de jetons ERC20 dans un rollup occupe 16 octets dâespace sur la chaĂźne et coĂ»te moins de 300 gaz.
Le fait que les donnĂ©es rĂ©sident sur la chaĂźne est essentiel (N.B.: le fait de mettre les donnĂ©es «sur IPFS» nâest pas suffisant car IPFS ne permet pas dâobtenir un consensus sur la disponibilitĂ© ou non dâune donnĂ©e ; les donnĂ©es doivent se trouver sur une blockchain). Le fait de mettre les donnĂ©es sur la chaĂźne et dâavoir un consensus Ă ce sujet permet Ă quiconque de traiter localement toutes les opĂ©rations du rollup sâil le souhaite, ce qui lui permet de dĂ©tecter la fraude, dâinitier des retraits ou de commencer personnellement Ă produire des lots de transactions. Lâabsence de problĂšmes de disponibilitĂ© des donnĂ©es signifie quâun opĂ©rateur malveillant ou hors ligne peut faire encore moins de mal (par exemple, il ne peut pas causer un retard dâune semaine), ce qui ouvre un espace de conception beaucoup plus grand pour qui a le droit de publier des batches, des lots, et ce qui rend les rollups beaucoup plus faciles Ă raisonner. Et surtout, lâabsence de problĂšmes de disponibilitĂ© des donnĂ©es signifie quâil nâest plus nĂ©cessaire de faire correspondre les actifs aux propriĂ©taires, ce qui explique pourquoi la communautĂ© Ethereum est aussi enthousiaste Ă lâĂ©gard des rollups comparĂ© aux formes prĂ©cĂ©dentes de passage Ă lâĂ©chelle de niveau 2 : les rollups sont totalement gĂ©nĂ©riques, et on peut mĂȘme faire fonctionner une EVM Ă lâintĂ©rieur dâun rollup, ce qui permet aux applications Ethereum existantes de migrer vers des rollups pratiquement sans avoir Ă Ă©crire de nouveau code.
Bon, mais comment fonctionne un rollup exactement ?
Il existe un contrat autonome sur la chaĂźne qui maintient une racine dâĂ©tat : la racine Merkle de lâĂ©tat du rollup (câest-Ă -dire les soldes des comptes, le code du contrat, etc. qui sont «à lâintĂ©rieur» du rollup).
Tout le monde peut publier un lot, un ensemble de transactions fortement compressĂ© avec la racine dâĂ©tat prĂ©cĂ©dente et la nouvelle racine dâĂ©tat (la racine Merkle aprĂšs le traitement des transactions). Le contrat vĂ©rifie que la racine dâĂ©tat prĂ©cĂ©dente du lot correspond Ă sa racine dâĂ©tat actuelle ; si câest le cas, la nouvelle racine dâĂ©tat devient lâactuelle.
Pour faciliter les dĂ©pĂŽts et les retraits, nous ajoutons la possibilitĂ© dâavoir des transactions dont lâentrĂ©e ou la sortie est «en dehors» de lâĂ©tat du rollup. Si un lot comporte des entrĂ©es provenant de lâextĂ©rieur, la transaction qui soumet le lot doit Ă©galement transfĂ©rer ces actifs au contrat de rollup. Si un lot a des sorties vers lâextĂ©rieur, alors, lors du traitement du lot, le contrat autonome initie ces retraits.
Et câest tout ! Sauf un dĂ©tail majeur : comment savoir si les racines post-Ă©tat des lots sont correctes ? Si quelquâun peut soumettre un lot avec nâimporte quelle racine post-Ă©tat sans consĂ©quences, il pourrait simplement se transfĂ©rer toutes les piĂšces Ă lâintĂ©rieur du rollup. Cette question est essentielle car il existe deux familles de solutions trĂšs diffĂ©rentes au problĂšme, et ces deux familles de solutions mĂšnent aux deux saveurs de rouleaux.
Optimistic rollups contre ZK rollups
Les deux types de rollups sont :
- Les Optimistic rollups, qui utilisent des preuves de fraude : le contrat de rollup conserve une trace de tout son historique des racines de lâĂ©tat et lâempreinte cryptographique de chaque batch. Si quelquâun dĂ©couvre quâun batch avait une racine post-Ă©tat incorrecte, il peut publier une preuve sur la chaĂźne, prouvant que le lot a Ă©tĂ© mal calculĂ©. Le contrat vĂ©rifie la preuve et renvoie ce lot ainsi que tous les lots    suivants.Â
- Les ZK rollups, qui utilisent des preuves de validitĂ© : chaque lot comprend une preuve cryptographique appelĂ©e ZK-SNARK (par exemple en utilisant le protocole PLONK), qui prouve que la racine post-Ă©tat est le rĂ©sultat correct de lâexĂ©cution du lot. Quelle que soit lâampleur du calcul, la preuve peut ĂȘtre trĂšs rapidement vĂ©rifiĂ©e sur la chaĂźne.Â
Les compromis entre les deux types de rollups sont complexes :
Propriété | Optimistic rollups | ZK rollups |
CoĂ»t fixe du gaz par batch   | ~40 000 (une transaction lĂ©gĂšre qui ne fait que changer la valeur de la racine de lâĂtat) | ~500 000 (la vĂ©rification dâun ZK-SNARK est un travail de calcul assez intensif) |
DĂ©lai de rĂ©tractation   | ~1 semaine (les retraits doivent ĂȘtre retardĂ©s pour donner le temps Ă quelquâun de publier une preuve de fraude et dâannuler le retrait sâil est frauduleux) | TrĂšs rapide (il suffit dâattendre le prochain lot) |
ComplexitĂ© de la technologie   | Faible | ĂlevĂ©e (les ZK-SNARK sont une technologie trĂšs nouvelle et mathĂ©matiquement complexe) |
PossibilitĂ© de gĂ©nĂ©ralisation   | Plus facile (les rollups EVM Ă usage gĂ©nĂ©ral sont dĂ©jĂ proches du rĂ©seau principal) | Plus difficile (prouver des ZK-SNARK avec une EVM gĂ©nĂ©rique est beaucoup plus difficile que de prouver des calculs simples, bien quâil y ait des efforts (par exemple Cairo) pour amĂ©liorer cela) |
CoĂ»t du gaz par transaction sur la chaĂźne   | SupĂ©rieur | InfĂ©rieur (si les donnĂ©es dâune transaction ne sont utilisĂ©es que pour vĂ©rifier, et non pour provoquer des changements dâĂ©tat, alors ces donnĂ©es peuvent ĂȘtre omises, alors que dans un Optimistic rollup, elles devraient ĂȘtre publiĂ©es afin de pouvoir les vĂ©rifier lors dâune preuve de fraude) |
CoĂ»ts de calcul hors chaĂźne   | InfĂ©rieurs (bien quâil soit plus nĂ©cessaire de refaire le calcul pour de nombreux nĆuds complets)      | SupĂ©rieurs (un ZK-SNARK sâavĂšre particuliĂšrement coĂ»teux, potentiellement des milliers de fois plus cher que le calcul direct) |
Dâune maniĂšre gĂ©nĂ©rale, mon avis est quâĂ court terme, les optimistic rollups devraient lâemporter pour le calcul gĂ©nĂ©rique sur lâEVM et les ZK rollups sont susceptibles de lâemporter pour les paiements simples, les Ă©changes et dâautres cas dâusage spĂ©cifiques aux applications ; mais Ă moyen et long terme, les ZK rollups lâemporteront dans tous les cas dâusage Ă mesure que la technologie des ZK-SNARK sâamĂ©liorera.
Anatomie dâune preuve de fraude
La sĂ©curitĂ© dâun Optimistic rollup repose sur lâidĂ©e que si quelquâun publie un lot non valable dans le rollup, qui que ce soit dâautre qui suit la chaĂźne et a dĂ©tectĂ© la fraude peut publier une preuve de fraude, prouvant au contrat que ce lot est non valable et doit ĂȘtre annulĂ©.
Une preuve de fraude prĂ©tendant quâun lot est invalide contiendrait les donnĂ©es en vert : le lot lui-mĂȘme (qui pourrait ĂȘtre vĂ©rifiĂ© par rapport Ă un hachage stockĂ© sur la chaĂźne) et les parties de lâarbre de Merkle devaient prouver uniquement les comptes spĂ©cifiques qui ont Ă©tĂ© lus et/ou modifiĂ©s par le lot. Les nĆuds de lâarbre en jaune peuvent ĂȘtre reconstruits Ă partir des nĆuds en vert et nâont donc pas besoin dâĂȘtre fournis. Ces donnĂ©es sont suffisantes pour exĂ©cuter le lot et calculer la racine post-Ă©tat (notez que les clients sans Ă©tat vĂ©rifient les blocs individuels exactement de la mĂȘme maniĂšre). Si la racine post-Ă©tat calculĂ©e et la racine post-Ă©tat fournie dans le lot ne sont pas les mĂȘmes, le lot est frauduleux.
On a la garantie que si un lot a Ă©tĂ© mal assemblĂ©, et que tous les lots prĂ©cĂ©dents ont Ă©tĂ© assemblĂ©s correctement, il est possible de crĂ©er une preuve de fraude montrant que le lot a Ă©tĂ© assemblĂ© de maniĂšre incorrecte. Notez la dĂ©claration concernant les lots prĂ©cĂ©dents : si plusieurs lots non valides ont Ă©tĂ© publiĂ©s dans le rollup, il est prĂ©fĂ©rable dâessayer de prouver que le premier est non valide. Bien entendu, on a Ă©galement la garantie que si un lot a Ă©tĂ© assemblĂ© correctement, il nâest jamais possible de crĂ©er une preuve de fraude montrant que le lot est invalide.
Comment fonctionne la compression ?
Une simple transaction Ethereum (pour envoyer de lâETH) prend ~110 octets. Un transfert ETH sur un rollup, en revanche, ne prend que ~12 octets :
ParamĂštre | Ethereum | Rollup |
Nonce | ~3Â Â Â | 0 |
Prix du gaz | ~8 | 0-0.5 |
Gaz | 3 | 0-0.5 |
Destinataire | 21 | 4 |
Valeur | ~9 | ~3 |
Signature | ~68 (2+33+33) | ~0.5 |
Depuis | 0 (récupéré de sig) | 4 |
Total | ~112 | ~12 |
Cela provient pour partie dâun meilleur encodage : la RLP dâEthereum gaspille 1 octet par valeur sur la longueur de chaque valeur. Mais il y a aussi des astuces de compression trĂšs bien trouvĂ©es qui entrent en jeu :
- Nonce : le but de ce paramĂštre est dâempĂȘcher les rediffusions. Si le nonce courant dâun compte est de 5, la prochaine opĂ©ration de ce compte doit avoir un nonce 5, mais une fois lâopĂ©ration traitĂ©e, le nonce du compte sera incrĂ©mentĂ© Ă 6, de sorte que lâopĂ©ration    ne pourra pas ĂȘtre traitĂ©e Ă nouveau. Dans le rollup, nous pouvons omettre complĂštement le nonce, car nous nous contentons de rĂ©cupĂ©rer le nonce de lâĂ©tat antĂ©rieur ; si quelquâun essaie de rejouer une transaction avec un nonce antĂ©rieur, la signature ne sera pas vĂ©rifiĂ©e, car la signature sera comparĂ©e aux donnĂ©es qui contiennent le nouveau nonce supĂ©rieur.
- Prix du gaz : nous pouvons permettre aux utilisateurs de payer dans une de prix du gaz, par exemple un choix de 16 puissances consĂ©cutives de deux. Une autre possibilitĂ© serait de fixer un niveau de prix fixe pour chaque lot, ou mĂȘme dâexclure entiĂšrement le paiement du gaz du protocole de rollup et de faire payer les crĂ©ateurs de lots par les participants aux transactions pour inclusion par un channel.
- Le gaz : nous pourrions tout aussi bien utiliser la totalitĂ© du gaz pour choisir entre des puissances consĂ©cutives de 2. On pourrait aussi se contenter dâune limite de gaz uniquement au niveau du lot.   Â
- To : nous pouvons remplacer lâadresse de 20 octets par un index (par exemple, si une adresse est la 4527e adresse ajoutĂ©e Ă lâarbre, nous utilisons simplement lâindex 4527 pour y faire rĂ©fĂ©rence. Nous ajoutons un sous-arbre Ă lâĂ©tat pour stocker la correspondance des index aux adresses).Â
- Valeur : nous pouvons stocker la valeur en notation scientifique. Dans la plupart des cas, les transferts ne nĂ©cessitent que 1 Ă 3 chiffres significatifs.   Â
- Signature : nous pouvons utiliser les signatures agrĂ©gĂ©es BLS, qui permettent dâagrĂ©ger de nombreuses signatures en une seule de ~32-96 octets (selon le protocole). Cette signature peut ensuite ĂȘtre vĂ©rifiĂ©e par rapport Ă lâensemble des messages et des expĂ©diteurs dâun mĂȘme lot en une seule fois. Le ~0,5 du tableau reprĂ©sente le fait quâil y a une limite au nombre de signatures pouvant ĂȘtre combinĂ©es dans un agrĂ©gat qui peuvent ĂȘtre vĂ©rifiĂ©es dans un seul bloc, et donc de grands lots auraient besoin dâune signature pour ~100 transactions.
Une astuce de compression importante, spĂ©cifique aux ZK rollups, est que si une partie dâune transaction est uniquement utilisĂ©e pour la vĂ©rification et nâest pas pertinente pour le calcul de la mise Ă jour de lâĂ©tat, alors cette partie peut ĂȘtre laissĂ©e hors chaĂźne. Cela ne peut pas ĂȘtre fait dans un optimistic rollup car ces donnĂ©es devraient toujours ĂȘtre incluses dans la chaĂźne au cas oĂč elles devraient ĂȘtre vĂ©rifiĂ©es ultĂ©rieurement dans une preuve de fraude, alors que dans un ZK rollup, le SNARK prouvant lâexactitude du lot prouve dĂ©jĂ que toutes les donnĂ©es nĂ©cessaires Ă la vĂ©rification ont Ă©tĂ© fournies. Un exemple important est celui des rollups de protection de la vie privĂ©e : dans un optimistic rollup, le ZK-SNARK dâenviron 500 octets utilisĂ© pour la confidentialitĂ© dans chaque transaction doit ĂȘtre intĂ©grĂ© Ă la chaĂźne, tandis que dans un ZK rollup, le ZK-SNARK couvrant lâensemble du lot ne laisse dĂ©jĂ aucun doute sur la validitĂ© des ZK-SNARK «internes».
Ces astuces de compression sont la clĂ© de lâextensibilitĂ© des rollups ; sans elles, les rollups ne reprĂ©senteraient peut-ĂȘtre quâune amĂ©lioration dâun facteur ~10 par rapport Ă lâextensibilitĂ© de la chaĂźne de base (bien quâil existe certaines applications spĂ©cifiques gourmandes en calculs oĂč mĂȘme les simples rollups sont puissants), alors quâavec ces astuces de compression, le facteur dâĂ©chelle peut dĂ©passer 100 fois pour presque toutes les applications.
Qui peut soumettre un lot ?
Il existe plusieurs Ă©coles pour dĂ©terminer qui peut soumettre un lot dans un optimistic ou un ZK rollup. En gĂ©nĂ©ral, tout le monde sâaccorde Ă dire que, pour pouvoir soumettre un lot, un utilisateur doit verser un dĂ©pĂŽt important ; si cet utilisateur soumet un jour un lot frauduleux (par exemple avec une racine dâĂ©tat invalide), ce dĂ©pĂŽt sera en partie brĂ»lĂ© et en partie donnĂ© comme rĂ©compense Ă celui qui a prouvĂ© la fraude. Mais au-delĂ de cela, il existe de nombreuses possibilitĂ©s :
- Anarchie totale : tout le monde peut soumettre un lot Ă tout moment. Câest lâapproche la plus simple, mais elle prĂ©sente des inconvĂ©nients importants. En particulier, il existe un risque que plusieurs participants gĂ©nĂšrent et tentent de soumettre des lots en parallĂšle, et quâun seul de ces lots puisse ĂȘtre inclus avec succĂšs. Cela entraĂźne un gaspillage important dâefforts pour produire des Ă©preuves et/ou un gaspillage de gaz pour publier les lots Ă enchaĂźner.      Â
- SĂ©quenceur centralisĂ© : un seul acteur, le sĂ©quenceur, peut soumettre des lots (Ă lâexception des retraits : la technique habituelle est quâun utilisateur peut dâabord soumettre une demande de retrait, puis si le sĂ©quenceur ne traite pas ce retrait dans le lot suivant, lâutilisateur peut alors soumettre lui-mĂȘme un lot Ă opĂ©ration unique). Câest la plus «efficiente», mais elle dĂ©pend dâun acteur central Ă vie.
- Vente aux enchĂšres du sĂ©quenceur : une vente aux enchĂšres est organisĂ©e (par exemple tous les jours) afin de dĂ©terminer qui a le droit dâĂȘtre le sĂ©quenceur pour le jour suivant. Cette technique prĂ©sente lâavantage de permettre de lever des fonds qui pourraient ĂȘtre distribuĂ©s par une DAO contrĂŽlĂ©e par le rollup (voir : enchĂšres MEV)   Â
- SĂ©lection alĂ©atoire Ă partir de lâensemble du PoS : nâimporte qui peut dĂ©poser de lâETH (ou peut-ĂȘtre le jeton de protocole propre au rollup) dans le contrat de rollup, et    le sĂ©quenceur de chaque lot est choisi au hasard parmi lâun des dĂ©posants, la probabilitĂ© dâĂȘtre sĂ©lectionnĂ© Ă©tant proportionnelle au montant dĂ©posĂ©. Le principal inconvĂ©nient de cette technique est quâelle conduit Ă lâimmobilisation inutile dâun capital important.Â
- Vote DPoS : un seul sĂ©quenceur est sĂ©lectionnĂ© lors dâune enchĂšre, mais sâil nâest pas performant, les dĂ©tenteurs de jetons peuvent voter pour le jeter dehors et organiser une nouvelle enchĂšre pour le remplacer.   Â
Fractionnement des lots et fourniture de racines par lâĂtat
Certains des rollups actuellement en cours de dĂ©veloppement utilisent un paradigme de «split batch» ou lot Ă©clatĂ©, oĂč lâaction de soumettre un lot de transactions de couche 2 et celle de soumettre une racine dâĂ©tat sont effectuĂ©es sĂ©parĂ©ment. Cela prĂ©sente certains avantages clĂ©s :
- On peut permettre Ă plusieurs sĂ©quenceurs en parallĂšle de publier des lots afin dâamĂ©liorer la rĂ©sistance Ă la censure, sans craindre que certains lots soient invalides parce quâun autre lot a Ă©tĂ© inclus en premier.   Â
- Si une racine dâĂ©tat est frauduleuse, il nâest pas nĂ©cessaire de rĂ©tablir lâensemble du lot    ; on peut rĂ©tablir uniquement la racine dâĂ©tat et attendre que quelquâun fournisse une nouvelle racine dâĂ©tat pour le mĂȘme lot. Cela donne aux expĂ©diteurs de transactions une meilleure garantie que leurs transactions ne seront pas inversĂ©es.
Il existe donc un attirail assez complexe de techniques qui tentent de trouver un équilibre entre des compromis compliqués impliquant efficacité, simplicité, résistance à la censure, entre autres objectifs. Il est encore trop tÎt pour dire quelle combinaison de ces idées fonctionne le mieux ; le temps nous le dira.
Quelle est lâampleur du passage Ă lâĂ©chelle apportĂ© par les rollups ?
Sur la chaĂźne Ethereum existante, la limite de gaz est de 12,5 millions, et chaque octet de donnĂ©es dans une transaction coĂ»te 16 gaz. Cela signifie que si un bloc ne contient quâun seul lot (nous dirons quâun ZK rollup est utilisĂ©, dĂ©pensant 500k de gaz pour la vĂ©rification des preuves), ce lot peut avoir (12 millions / 16) = 750000 octets de donnĂ©es. Comme indiquĂ© ci-dessus, un rollup pour les transferts ETH ne nĂ©cessite que 12 octets par opĂ©ration utilisateur, ce qui signifie que le lot peut contenir jusquâĂ 62500 transactions. Avec un temps de bloc moyen de 13 secondes, cela se traduit par ~4807 TPS (contre 12,5 millions / 21000 / 13 ~= 45 TPS pour les transferts dâETH sur Ethereum lui-mĂȘme).
Voici un tableau pour dâautres exemples de cas dâutilisation :
Application | Octets dans le rollup | Coût du gaz sur la couche 1 | Gain maximal   |
Transfert dâETHÂ Â Â Â Â Â Â Â Â | 12 | 21 000 | 105x |
Transfert ERC20         | 16 (4 octets supplémentaires pour préciser quel jeton) | ~50 000 | 187x |
Trade Uniswap | ~14 (4 octets expéditeur + 4 octets destinataire + 3 octets valeur + 1 octet prix maxi + 1 octet divers)         | ~100000   | 428x |
Retrait avec confidentialitĂ© (Optimistic rollup) | 296 (4 octets dâindex de la racine + 32 octets dâannulateur + 4 octets de destinataire + 256 octets de preuve ZK-SNARK) | ~380 000 | 77x |
Retrait avec confidentialitĂ© (ZK rollup) | 40 (4 octets dâindex de la racine + 32 octets dâannulateur + 4 octets de destinataire)         | ~380 000         | 570x |
Il convient maintenant de garder Ă lâesprit que ces chiffres sont trop optimistes. Avant tout, un bloc ne contiendra presque toujours plus dâun seul lot, Ă tout le moins parce quâil y a et quâil y aura plusieurs rollups. DeuxiĂšmement, les dĂ©pĂŽts et les retraits continueront dâexister. TroisiĂšmement, Ă court terme, lâutilisation sera faible, et les coĂ»ts fixes domineront donc. Mais mĂȘme en tenant compte de ces facteurs, des gains dâextensibilitĂ© de plus de 100 devraient ĂȘtre la norme.
Maintenant, que faire si nous voulons aller au-delĂ de ~1000-4000 TPS (selon le cas dâutilisation spĂ©cifique) ? Câest ici quâintervient le sharding dâeth2. La proposition sur le sharding, ou fragmentation, ouvre un espace de 16 Mo toutes les 12 secondes qui peut ĂȘtre rempli avec nâimporte quelles donnĂ©es, et le systĂšme garantit un consensus sur la disponibilitĂ© de ces donnĂ©es. Cet espace de donnĂ©es peut ĂȘtre utilisĂ© par des rollups. Cette capacitĂ© de ~1398k octets par seconde est une amĂ©lioration de 23x par rapport aux ~60 kB/sec de la chaĂźne Ethereum existante, et Ă plus long terme, la capacitĂ© en donnĂ©es devrait encore augmenter. Par consĂ©quent, les rollups qui utilisent des donnĂ©es eth2 fragmentĂ©es peuvent traiter collectivement jusquâĂ ~100k TPS, et mĂȘme plus Ă lâavenir.
Quels sont les problÚmes non encore résolus dans les rollups ?
Bien que le concept de base dâun rollup soit maintenant bien compris, que nous soyons tout Ă fait certains quâil est fondamentalement faisable et sĂ»r, et que de multiples rollups aient dĂ©jĂ Ă©tĂ© dĂ©ployĂ©s sur le rĂ©seau principal, il reste encore de nombreuses zones dâombre quant Ă leur conception, ainsi quâun certain nombre de dĂ©fis Ă relever pour amener de grandes parties de lâĂ©cosystĂšme Ethereum sur des rollups afin de profiter du passage Ă lâĂ©chelle quâils offrent. Voici quelques-uns des principaux dĂ©fis en question :
- IntĂ©gration des utilisateurs et de lâĂ©cosystĂšme â peu dâapplications utilisent des rollups, ils sont peu connus des utilisateurs et peu de portefeuilles ont commencĂ© Ă les intĂ©grer. Les commerçants et les associations ne les acceptent pas encore pour les paiements.Â
- Transactions croisĂ©es â transfert efficace des actifs et des donnĂ©es (par exemple, les rĂ©sultats dâoracles) dâun rollup Ă lâautre sans avoir Ă passer par la couche de base.Â
- Audit des incitations â comment maximiser les chances quâau moins un nĆud honnĂȘte vĂ©rifie effectivement un optimistic rollup afin de pouvoir publier une preuve de fraude si quelque chose tourne mal ? Pour les rollups Ă petite Ă©chelle (jusquâĂ quelques centaines de TPS), ce nâest pas    un problĂšme important et on peut simplement compter sur lâaltruisme, mais pour les rollups Ă plus grande Ă©chelle, une rĂ©flexion plus comlĂšte est nĂ©cessaire sur ce sujet.   Â
- Exploration    de lâespace de conception entre le plasma et les rollups â existe-t-il des techniques permettant de mettre sur la chaĂźne certaines donnĂ©es pertinentes pour la mise Ă jour de lâĂ©tat, mais pas toutes, et y a-t-il quelque chose dâutile qui pourrait en rĂ©sulter ?   Â
- Maximiser la sĂ©curitĂ© des prĂ©-confirmations â de nombreux rollups fournissent une notion de «prĂ©-confirmation» pour des UX plus rapides, oĂč le sĂ©quenceur fournit immĂ©diatement une promesse quâune transaction sera incluse dans le lot suivant, et le dĂ©pĂŽt du sĂ©quenceur est dĂ©truit sâils manquent Ă leur parole. Mais la sĂ©curitĂ© Ă©conomique de ce systĂšme est limitĂ©e en raison de la possibilitĂ© de faire de nombreuses promesses Ă de trĂšs nombreux acteurs en mĂȘme temps. Ce mĂ©canisme peut-il ĂȘtre amĂ©liorĂ© ?
- AmĂ©liorer la vitesse de rĂ©ponse aux sĂ©quenceurs absents â si le sĂ©quenceur dâun rollup se met soudainement hors ligne, il serait utile de revenir Ă la normale rapidement et Ă moindre coĂ»t, soit en sortant en masse rapidement et Ă moindre coĂ»t vers un autre rollup, soit en remplaçant le sĂ©quenceur.   Â
- ZK-VM efficiente â gĂ©nĂ©ration dâune preuve ZK-SNARK selon laquelle le code de lâEVM gĂ©nĂ©rique (ou une autre VM sur laquelle les contrats existants peuvent ĂȘtre compilĂ©s) a Ă©tĂ© exĂ©cutĂ© correctement et a donnĂ© un certain rĂ©sultat.Â
Conclusion
Les rollups constituent un nouveau paradigme puissant de passage Ă lâĂ©chelle de la couche de niveau 2 et devraient devenir une pierre angulaire du passage Ă lâĂ©chelle dâEthereum Ă court et moyen terme (et peut-ĂȘtre aussi Ă long terme). La communautĂ© Ethereum sâest montrĂ©e trĂšs enthousiaste car, contrairement aux tentatives prĂ©cĂ©dentes de passage Ă lâĂ©chelle en couche 2, elle peut prendre en charge le code EVM gĂ©nĂ©rique, ce qui permet aux applications existantes de migrer facilement. Pour ce faire, ils ont fait un compromis essentiel : ils nâont pas essayĂ© de se retirer complĂštement de la chaĂźne, mais ont laissĂ© une petite quantitĂ© de donnĂ©es par transaction sur la chaĂźne.
Il existe de nombreux types de rollups, et de nombreux choix dans lâespace de conception : on peut employer un optimistic rollup en utilisant des preuves de fraude, ou un ZK rollup en utilisant des preuves de validitĂ© (c.Ă .d. ZK-SNARK). Le sĂ©quenceur (lâutilisateur qui peut publier des lots de transactions Ă enchaĂźner) peut ĂȘtre un acteur centralisĂ©, ou tout le monde et nâimporte qui, ou encore un choix intermĂ©diaire entre ces deux extrĂȘmes. Les rollups sont une technologie encore trĂšs jeune et leur dĂ©veloppement se poursuit rapidement, mais ils fonctionnent et certains (notamment Loopring, ZKSync et DeversiFi) fonctionnent dĂ©jĂ depuis des mois. On peut sâattendre Ă ce que des travaux passionnants dans ce domaine Ă©mergent dans les annĂ©es Ă venir.
The post Un guide incomplet des rollups first appeared on Ethereum France.