paint-brush
Comprendre les « rollups » dans la crypto : réduire les frais et la congestionpar@0xkishan
274 lectures

Comprendre les « rollups » dans la crypto : réduire les frais et la congestion

par Kishan Kumar7m2023/07/17
Read on Terminal Reader

Trop long; Pour lire

Pour le moment, Ethereum n'est capable de gérer qu'environ 15 transactions par seconde. les validateurs choisiront un ensemble de transactions dans un pool de transactions qui reste à confirmer, et la manière dont ils sélectionnent ces transactions est liée à leur profit. Vous devez donc vous battre pour que votre transaction soit incluse car il n'y a qu'un nombre limité de transactions pouvant être traitées à la fois.
featured image - Comprendre les « rollups » dans la crypto : réduire les frais et la congestion
Kishan Kumar HackerNoon profile picture
0-item
1-item
2-item

Pour le moment, Ethereum n'est capable de gérer qu'environ 15 transactions par seconde ; cela signifie que les validateurs choisiront un ensemble de transactions dans un pool de transactions qui reste à confirmer, et la façon dont ils sélectionnent ces transactions est, en fait, liée à leur profit. Vous devez donc vous battre pour que votre transaction soit incluse car il n'y a qu'un nombre limité de transactions pouvant être traitées à la fois.


Vous savez, les validateurs reçoivent des frais lorsqu'ils incluent votre transaction dans un bloc. Pensez maintenant du point de vue du validateur ; il y a deux transactions actuellement dans le pool de transactions en attente d'être récupérées par un validateur. Une transaction est prête à payer 10 $ et l'autre transaction ne paie que 1 $ à titre de frais. Quelle opération choisirez-vous ?


Celui à 10 dollars, n'est-ce pas ? Parce que si vous incluez cette transaction dans le bloc, vous obtiendrez 10 dollars de frais.

Mais cela signifie-t-il que ma transaction ne sera récupérée que si je fixe des frais élevés ?

Permettez-moi d'expliquer cela d'une manière simple. Lorsque vous interagissez avec le réseau Ethereum, vous invoquez généralement certains contrats intelligents. Les contrats intelligents sont un ensemble d'instructions ; considérez-les comme un programme. Chaque instruction nécessitera une certaine puissance de calcul.


Ce qui suit est un contrat simple en langage solidité.


 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract HelloWorld { string public message; constructor() { message = "Hello World"; } function getMessage() public view returns (string memory) { return message; } function setMessage(string memory newMessage) public { message = newMessage; } }


Si vous êtes un Solidité développeur, vous pouvez estimer le gaz que ce contrat nécessitera s'il est déployé sur EVM.


Lorsque vous déployez ce contrat, la première chose qui est appelée est son constructeur , qui définit la variable message sur "Hello World" . Cela change l'état de la blockchain . Tout changement d'état entraîne des frais. Supposons que stocker une chaîne dans une variable coûte 1 $.


Si vous voulez définir le message sur autre chose, disons "Bienvenue dans l'article de Kishan" , vous devrez invoquer la méthode setMessage() dans le contrat, en transmettant votre message requis, et cela nécessitera à nouveau des frais car vous modifient l'état. Disons qu'il a encore fallu 1 $.


Et si je veux voir quel est le message? Vous pouvez simplement appeler getMessage(); cela ne nécessitera aucun frais car cela ne change pas l'état. Après avoir expliqué cela, revenons à notre discussion.


Disons que, pour une raison quelconque, votre transaction qui se trouvait actuellement dans le pool de transactions invoque ce contrat intelligent HelloWorld et définit le message à votre nom.


Supposons maintenant qu'un validateur sélectionne hypothétiquement votre transaction, il verra que vous avez fixé les frais à 1 $, et l'invocation du contrat intelligent lui-même prendra 1 $. Donc, lui-même n'a rien reçu en retour. Tous les frais ont été utilisés en interagissant avec le contrat intelligent. Pourquoi le ramassera-t-il alors ? Cette transaction sera rejetée car il n'y a aucune incitation pour le validateur à la traiter et à l'inclure dans la chaîne. Vous devrez donc réessayer avec des frais plus élevés afin de pouvoir inciter le validateur à choisir votre transaction.


Les frais de gaz peuvent devenir très compétitifs lorsque de nombreux utilisateurs effectuent des transactions sur Ethereum. Oui, vous pouvez définir les frais manuellement, mais attention, cela peut prendre beaucoup de temps pour être confirmé car les validateurs ne choisiront que les transactions qui leur seront bénéfiques.


Si votre transaction est urgente, par exemple si vous souhaitez qu'une transaction soit clôturée le plus tôt possible, cela présente un risque de liquidation. Dans ce scénario, il vaut mieux fixer les frais aussi haut que possible ou utiliser l'un des portefeuilles qui vous donne une estimation des frais qui confirmera votre transaction en quelques secondes. Parce que l'économie d'essence peut entraîner l'effacement de tout votre portefeuille.


Ces frais élevés ont empêché de nombreux passionnés de cryptographie d'effectuer des transactions sur Ethereum, et de nombreuses autres couches 1 ont été introduites pour résoudre ce problème. Mais ils manquent tous de décentralisation, c'est pourquoi n'importe qui passerait au web3.


Alors, y a-t-il une solution à cela?

Nous voulons utiliser la décentralisation et la sécurité offertes par Ethereum mais, en même temps, nous ne voulons pas perdre notre poche avec ces frais élevés.


Les cumuls, une solution de mise à l'échelle de couche 2, sont un moyen de résoudre ces problèmes.

Cumuls

Les cumuls sont un moyen d'agréger les transactions et de les traiter hors chaîne et de publier le résultat dans la chaîne.


Tout cela hors chaîne et en chaîne pourrait instiller des doutes dans la compréhension, alors laissez-moi clarifier un peu plus. Considérez les rollups comme un processus qui peut réduire considérablement les frais et la congestion de la blockchain Ethereum. La façon dont ce travail consiste à regrouper (agréger) un grand nombre de transactions et à les déplacer vers une chaîne hors chaîne telle qu'une chaîne parallèle, une machine virtuelle, etc. Ces chaînes parallèles sont exploitées par des réseaux de couche 2 tels que Arbitrum, zkSync , Optimisme, etc...

Qui agrège la transaction ?

L'agrégation est effectuée par une entité appelée opérateur de cumul, dont le travail principal consiste à collecter les transactions de différents utilisateurs et à les exécuter dans un environnement hors chaîne. Encore une fois, hors chaîne peut signifier beaucoup de choses selon l'implémentation, comme une machine virtuelle, une chaîne latérale ou un autre protocole de couche 2.


Une fois qu'il a exécuté les transactions, il soumet les données agrégées (bloc de cumul) à la chaîne Ethereum en tant que données d'appel, accompagnées de la preuve qu'il les a exécutées correctement. Jusqu'ici, nous sommes clairs, mais qu'est-ce que calldata ?


Considérez les calldata comme un type spécial de données qui peuvent être stockées sur Ethereum sans être exécutées ni affecter leur état.


Les opérateurs de cumul doivent payer des frais au validateur Ethereum pour inclure les données d'appel dans un bloc. Une fois qu'il a été inclus. L'opérateur de rollup surveille le contrat de rollup (expliqué dans la section suivante) pour toute contestation ou contestation d'autres utilisateurs ou validateurs. En cas de litige, il répond en conséquence.

Qui le vérifie ?

Un contrat de rollup est chargé de vérifier les données de transaction et les preuves présentes dans les données d'appel soumises par notre opérateur de rollup. Il s'agit d'un contrat intelligent déployé sur Ethereum qui gère l'état et la logique du rollup.


Un contrat de cumul reçoit les données de transaction et les preuves de l'opérateur de cumul sous forme de données d'appel, les vérifie, met à jour l'état des cumuls et émet un événement pour tout changement d'état.

Comment ça marche?

Combinons tout ce que nous avons appris et résumons-le à l'aide d'un exemple :

  1. Disons que vous voulez envoyer 1 ETH à votre ami Ram en utilisant un rollup.


  2. Vous précisez l'adresse du Ram et le montant à envoyer dans votre wallet et signez la transaction.


  3. Après cela, vous soumettez la transaction à un opérateur de cumul, qui est chargé d'agréger les transactions de différents utilisateurs et de les exécuter dans un environnement d'exécution hors chaîne.


  4. L'opérateur de cumul regroupera ensuite votre transaction avec d'autres transactions dans un soi-disant bloc de cumul et le soumettra à la chaîne Ethereum en tant que calldata . Il paie ensuite les frais aux validateurs pour l'avoir inclus dans le bloc.


  5. Maintenant, selon le type de cumul, l'opérateur de cumul peut avoir besoin de soumettre une preuve ou une affirmation supplémentaire de la validité du bloc de cumul avec les données d'appel.


  6. Cela fait, le bloc de cumul est ensuite traité par le contrat de cumul , qui est un contrat intelligent déployé sur la chaîne Ethereum qui gère l'état et la logique du cumul. Le contrat vérifie la preuve ou l'assertion, met à jour l'état des utilisateurs cumulatifs et émet un événement pour tout changement d'état.


  7. Enfin, Ram reçoit 1 ETH de votre part sur son compte rollup.

Type de cumuls

Cumuls optimistes

Les cumuls optimistes sont optimistes. Ce que je veux dire, c'est qu'ils supposent que chaque transaction du lot est valide. Mais il ya un hic. Ils accordent un délai de grâce pendant lequel un utilisateur ou un validateur qui pense que la transaction est invalide peut la contester en soumettant une preuve de fraude. Le réseau principal Ethereum le vérifie ensuite, et si le défi réussit, le bloc de cumul est rejeté et l'opérateur malhonnête est lourdement pénalisé.


S'il n'y a pas de litige après la fin de la période de grâce, le lot de transactions est ancré à l'Ethereum et les changements d'état qu'il inclut sont finalisés.


Bien qu'il offre une évolutivité accrue et des frais de gaz réduits, il s'accompagne d'un retard dans la finalité de la transaction car il faut attendre le délai de grâce.


Il y a deux chevaux majeurs dans la course :

  1. Arbitrum ,
  2. Optimisme .

Cumuls zK

J'ai écrit un article détaillé expliquant les zk-rollups auquel vous pouvez vous référer. Quoi qu'il en soit, je vous donnerais un bref aperçu de ce que c'est et comment cela fonctionne.


Les cumuls zk, contrairement aux cumuls optimistes, supposent que chaque transaction est invalide jusqu'à ce qu'elle soit prouvée valide. Il utilise des "preuves à connaissance zéro" pour valider l'authenticité de la transaction. Une fois qu'il a parcouru toutes les transactions du lot, il renvoie une seule transaction à Ethereum, accompagnée de la preuve que le contrat de cumul peut facilement être vérifié.


Il est plus sécurisé par rapport à un cumul optimiste. Comme il n'y a pas de délai de grâce, les transactions ont une finalité instantanée puisque la validité est déjà prouvée par une preuve cryptographique. Cependant, la génération de la preuve nécessite une puissance de calcul et une expertise importantes pour la mettre en œuvre. Cela peut augmenter la complexité par rapport aux cumuls optimistes.


Les deux chevaux majeurs de la course sont :

  1. Polygone zkEVM

  2. ère zkSync


Merci d'avoir pris le temps de lire cet article.

Lectures complémentaires :

Les références:

  1. Mise à l'échelle de la couche 2 : cumuls zk et cumuls optimistes | Gémeaux
  2. Cumuls sans connaissance | ethereum.org
  3. Cumuls optimistes | ethereum.org
  4. Couche 2 | ethereum.org
  5. Que sont les "Rollups" en crypto ? | Coinbase
  6. Que sont les cumuls optimistes ? — 101 chaînes de blocs