Les frais de transactions sur les Optimistic Rollup - Augustin de La Ferrière

Ethereum France Talks · 18 Jan 2024 · 18:03

A data analyst at an onchain game studio compares how Optimism and Arbitrum calculate transaction fees, because costing a move of the game to a rollup proved harder than expected. Optimism charges an L2 execution fee plus an L1 data fee taken from the wallet and built from byte counts and overhead constants, while Arbitrum converts the data cost into extra L2 gas and adjusts its price estimate. The speaker then presents a data availability committee on Optimism's stack and a lowered dynamic overhead that his estimate puts at roughly 600 times cheaper for one approve transaction, calling the work unaudited research, while the studio's next game goes to an Arbitrum Orbit L3.

Speakers

Topics

From Ethereum France Talks, hosted by Ethereum France.

Transcript

bonjour à tous euh je m'appelle Augustin je travaille chez Comè depuis un an et demi en tant que data analyste à la base mais aujourd'hui je travaille sur les rollup comme vous pouvez le constater h vous devez savoir que chez Comet on a un jeu vidéo on chain et que faire tourner un jeu vidéo on chain ça coûte beaucoup d'argent euh notre jeu tourne actuellement sur polygone et il a été question un moment de migrer ce jeu vers un rollup et mon CTO est venu me voir il m'a demandé combien ça coûterait de faire tourner ce jeu sur un rollup et j'ai cru naïvement que cette question était facile à répondre et en fait beaucoup moins que ça et il se trouve que les rollup optimisme comme optimisme

et arbitrum ont des façons de calculer les frais de transaction très différents et je vous expliquer je vais vous expliquer du coup un peu l'histoire du jeu Comet et comment nous sommes arriver à prendre la décision de de de migrer vers un rollup je vous expliquerai après dans les grandes lignes comment fonctionne un rollop comme optimisme et arbitrum et je vous expliquerai avec plus de précision après comment les frais de transaction sont calculés sur ce genre de rollop euh après je vous expliquerai une implémentation d'un DAC qu'on a fait sur optimisme et donc forcément la modification du calcul des frais de transaction pour prendre en compte cette implémentation et enfin je vous parlerai de la solution qu'on a choisi pour notre prochain jeu donc Comè ça commence en

2021 avec un jeu entièrement on chain où toutes les actions des des joueurs sont fait unchange sur polygone à une époque où le coût de d'utilisation de polygone était particulièrement faible notamment le Matic était très très bas et le nombre de transaction de sur polygone était extrêmement bas pour les joueurs c'était assez rentable de jouer surtout CIT une époque en début 2021 play to earn donc il fallait que les joueurs puissent gagner de l'argent sauf que quelques mois après le le le réseau explose et pour les joueurs ça devenait plus compliqué de gagner de l'argent déjà il y avait une une player bisse de plus en plus importante donc le reward par joueur était de moins en moins important et surtout le coût du matique et le gas price explosa et ce qui fait que le coût pour jouer au jeu était

hyper important et les joueurs ne gagnaient plus l'argent euh en 2022 on a sorti un nouveau jeu toujours sur polygone un Comet battle qui est en fait un trading card game où il y a moins d'interaction Unchain mais il y a quand même les assets donc av vous avez des vaisseaux qui sont un peu votre personnage vous avez les cartes qui sont des NFT et vous avez aussi des crafting ressources qui sont des erc20 qui sert à crafter des cartes en fait à chaque fin de partie le gagnant d'une d'une partie contre un autre joueur recevait des transaction recevait des rewards et cette transaction est sponsorisée par Comet mais malheureusement le coût de cette transaction était toujours trop important par exemple on avait un système de location de de vaisseau et le

locataire pouvait prendre une partie des reward et le et le propriétaire prenait une autre partie ce qui faisait que les transaction des reward étai assez importante avec beaucoup de transferts de rc20 et ça nous coûtait à un certain moment quasiment 10 centimes par partie gagné euh pour un jeu où il y a quasiment eu il eu plus de 500000 parties ça a commencé à revenir extrêmement cher pour nous de maintenir ce genre de jeu et enfin nous allons bientôt sortir une version euh redesignée de de de Comet battle qui s'appellera Cosmic battle et on a pour objectif de le déployer sur un rollup donc euh les rollup comme optimiste et

arbitrum fonctionne de cette manière quand vous payez une transaction sur etherum vous avez deux principaux coûts qui est le coût d'exécution de la la transaction et le coût de la data avabilité euh si je devais prendre une un exemple euh par exemple si vous voulez faire une une transaction qui serait l'addition de 1 et 2 sur etherum le coût d'exécution serait le calcul de 1 + 2 et le coût de la data avability serait les paramètres de cette addition qui seraient 1 et 2 la majorité du temps la la grosse partie du coût d'une transaction sur etherum correspond à l'exécution mais vous pouvez quand même avoir des transactions où la data avability est très importante typiquement lorsque vous mettez un NFT en vente vous avez dans les paramètres

de la transaction toute tout les paramètres de cette mise en fente et et c'est c'est le coût le plus important dans cette transaction c'est pour ça que aujourd'hui sur openc quand vous mettez en vente à NFT la majorité du temps c'est les ordres off chain vous avez juste à signer une transaction et cette transaction n'est plus exécutée par le réseau ce que fait optimis et arbitrum c'est qu'il décale ce coûp d'exécution sur le rollop mais garde la data avability sur etherum ce qui permet d'économiser des coûts sur l'exécution parce que l'exécution est faite sur le rollup avec un G Price qui est extrêmement bas euh donc quand un sur un rollup quand vous faites une transaction sur le rollup euh les blocs sont validés petit à petit et au bout d'un certain moment

euh ce toutes ces transactions qui sont passées sont concaténées compressées et envoyé sur le L1 avec une transaction qu'on appelle une batch transaction euh cette batch transaction elle a une limite de maximum 9, m de 9,5 m de Data pour que ça puisse rentrer dans un bloc sur le L1 du coup quel est le coût d'une transaction sur optimisme vous avez deux principaux composants vous avez l'exécution fe qui est calculé sur l' rol avec le G price du R donc vous avez un gas price extrêmement bas ça suit la même le même principeum avec le IP 1559 et les F sont collectés par optimisme et

vous avez du coup un deuxième composant qui sont qui est le Data qui va être le coût qui la la cotisation vous devez faire pour la publication de la data de votre transaction sur le L1 et cette ce L1 data fi il a comme paramètre il est calculé d'une manière il prend la taille de la data de la transaction le prix du gaz price sur le L1 et ce F est directement ponctionné de votre wallette par le réseau euh optimisme si vous regardez sur un explorer l'explorer de d'Opet et vous regardez un peu le détail des gasfi vous vous avez vous avez la transaction fi totale ici vous avez après le gaz price le gaz limit le gaz fi un truc assez classique

de l'p 15559 mais après vous avez des nouveaux champs qui sont le LM F paid donc c'est la la le fi total que vous avez payé pour la publication de votre data sur sur le L1 le gas price du L1 donc le gas price du L1 il est mise à jour à chaque bloc du du ROP le gaz US par la transaction donc en fait on calcule le gaz que ça consommerait pour publier la data sur le L1 et il y a le L1 fiscalar qui est en fait un une variable déterminé par optimisme qui permet de baisser le coût de la transaction pour vous il précise pas exactement comment est calculer ce cette variable mais on peut prendre par toute

logique ça comprend une partie de la compression qu' arrivent à avir et une petite marge qui sroit pour calculer donc ce lin data fi on prend la data de la transaction on compte tout les oct qui sont à 0 on les multiplie par 4 et tous les o qui sont à qui ne sont pas à 0 et par 16 c'est exactement la même méthode sur etherum pour calculer le coût de la de la data que vous allez vous allez poster dessus c'est t dat gaz après on rajoute en additionne un fixed overhead qui 188 de gaz qui là encore un coût fixe pour chaque transaction qui devont être posté

sur le L1 plus le fameux dynamic overhead qui est à 0,684 déterminé par optimis et enfin une fois que c'est fait vous avez juste à multiplier ça par le le base feed ettherum et vous avez le Elin datafed que vous allez payer pour votre transaction sur Open mainnet C donc ça permet d'avoir une réduction des transactions des coûts de transaction sont assez importantes mais pour le gaming malheureusement c'est pas suffisant parce que le coût de la data est encore assez important et chez Comet dans nos transactions de notre jeu on a souvent pas mal de Data qui correspondent aux paramètres de la partie qui a été gagnée qui a gagné quel token iD du du vaisseau qui a gagé la partie on a un coou en data encore assez

important surbitrom c'est un petit peu différent il reste quand même dans un peu dans le même principe que que openet il y a toujours l'execution FEI qui est exactement la même chose sauf que L1 datafi il y a quelques différences notamment deux grandes différences le L1 gas Price qui n'est pas qui n'est pas le gas price du L1 actuel mais qui est une estimation qui a été faite avec un calcul que je montrerai après et le L1 datafi n'est pas directement ponctionné de votre wallette mais il est converti en gaz L2 et vous sera additionné au total de la transaction donc si on regarde sur l'Explorer on peut voir que le gaz limite donc

typiquement là c'est une transaction de transfert transaction de transfert normalement c'est 21000 de gaz en foit que la personne a payé quasiment 300 320000 de gaz en fait ce gaz supplémentaire correspondi a été converti en a de gaz pour vous expliquer un peu le système qu'ils ont mis en place à chaque fois que quelqu'un fait une transaction sur arbitrom le datafit envoyé dans Unat qui s'appelle le L1 pricer F pool et ce L1 pricer F pool a une variable à l'intérieur qui s'appelle le sold et ce sold s'incrémente à chaque fois qu'un bloc est validé sur le L2 avec tous les L1 datafi une fois que le L2 veut envoyer une bâche transaction sur le L1 et que

cette batch transaction est validé sur le L1 il y a une transaction envoyée vers le L2 qui s'appelle un batch posting report qui comprend plusieurs paramètres et informations comme le gaz utilisé le gaz price de la transaction de batch ces informations sont envoyées au l pricer pricer fund pool et est déduite du solde donc typiquement ils ont récupéré les l datafi less ont cumulé dans ce contrat ils récupère après ce qui P ce qui a été payé sur le L1 et il soustrait ça au sold et ce solde la le le le signe de ce sold va dépendre va va va changer la suite si le sold est négatif c'estàd que il y a un

déficit et du coup l'estimation du L1 bas qui a été utilisée pour calculer L1 data fi va être augmenté et si le solde est positif c'est qu' un surplus ils ont moins payé que ce qu'ils ont collecté donc forcément ils vont baisser le l B estimate pour essayer de toujours arriver à un se de proche de zé donc voilà pour arbitre malheureusement c'est toujours pareil les transactions F sont toujours basses mais pas suffisamment pour pour pour du gaming donc avait une solution serait la doit yourself solution donc une implémentation du dac avec sur la steake d'optimisme un DAC c'est avoir la couche de Data avability qui était avant sur

etherum et la mettre off chain pour la met of chain ce qu'on fait c'est qu'on utilise on fait exactement comme avec optimis c'est que la data de votre transaction est compressée et au lieu d'être directement envoyé sur le L1 elle est envoyé vers un DAC un dataability commity dont chaque membre va attester et signer cette data et renvoyer la signature au séquenceur et ce qu'il faut comprendre là c'est que quand le membre du dac atteste Ting cette data c'est il fait la promesse de rendre cette donnée disponible à quiconque la demande et et après le séquenceur prend cette signature en fait un certificat et la poste sur le L1 donc le certificat une ta fixe donc le coût de la data postée

sur le L1 est toujours fixe et ce certificat et vous pouvez l'utiliser pour le récupérer et utiliser avec l'API d'un des membres du dac pour pouvoir récupérer la data des transactions h vu que le coût du le coût de la data qui est postée sur le L1 et fixe on peut modifier la la formule qui calcule les transactions fi pour baisser encore plus euh ces coûts euh par souci de l'objectif était de modifier le moins possible la stack d'optimisme et donc je a a décidé de modifier qu'un seul paramètre dans le calcul des des du L1 datafi qui est le Dynamic overhead et pour modifier ce dynamique overhead on a plusieurs informations on

sait que une Bâ transaction ça coûte seulement 24000 de gaz et ça sera toujours pareil on sait que la data maximum qu'on peut envoyer au DAC c'est 9,5 m alors pourquoi on a ça comme maximum c'estàd que si le DAC euh tombe le rollup passe automatiquement dans un mode normal et poste toute la data sur le L1 donc c'est pour ça qu'on doit garder cette limite de 9,5 m c'est pour rester dans dans le dans l'optique du du rollup de base euh on doit modifier on doit faire un petit calcul en gros qui modifie enfin qui fait une une estimation grossière de la taille de la transaction après compression et ça nous fait un dynamque

over préliminaire extrêmement bas quasiment 900 Mo moins important que sur optimisme et je dis préliminaire parce que il y a un aspect important que n'a pas optimisme mais qui peut que nous on peut avoir pour des petites blockchain c'estàd que la quand il y a un faible volume de transaction il peut se passer à un certain temps entre le moment où l'utilisateur paye sa transaction sur le rollup et le moment où on paye la publication de la data sur le L1 et ça ça peut être dangereux parce queon peut se retrouver à ne pas avoir collecté suffisamment de de FIB pour sponsoriser ces transactions et donc on a décidé de mettre une limite de temps qui fait que si même si on n' pas atteint les 9,5 m

le trigger pour enclencher cette batch transaction on a on a mis une limite de temps de 600 bloc donc ce qui est 2h et h pour limiter ce risque et du coup quelle est la variation maximum qu'il peut avoir sur 2h c'est absolument énorme et on a décidé de faire une petite étude de Statistique des BL des sur les blocs donc onis 1,25 million de blocs entre entre décembre 2022 et mai 2023 et on a regardé qu ét les variations entre n bloc et N+ 6 bloc la variation du B on a vu que dans 99% des cas cette variation enessous de 269%

d'augmentation et pour la petite anecdote la plus grosse variation qu'on a vu c'est une augmentation de 25000 % en 2 heur ça fait un peu cher donc maintenant qu'on sait que dans 99 % des cas l'augmentation sera en dessous de 269 % on peut juste modifier si j'arrive à passer la slide suivante on peut juste modifier le calcul qu'on a vu précédemment le multiplier par le ce que j'appellerai le facteur d'incertitude qui est du coup de 3,69 et ce qui nous permet d'avoir un dynamic overhead extrêmement bas pour comparer une transaction une approve transaction sur Open met ça coûte avec un gaz price

je crois 30 gu et un un une e à 2500 dollars le coût d'une transaction sur op serait de 14 centimes mais sur sur Comè sur notrelmentation serait de 2 cenè de centimes soit 600 fois moins cher cette implémentation DAC a reçu un GR de la part de optimisme donc GG à lacdar qui est juste là et qui est le cerveau de cette implémentation euh vous pouvez avec le QR code aller voir cette page et il y a toute l'information le code c'est Open Source euh et la doc en utilisant ce QR code euh et GG aussi a été rom France qui a rei un Grun pour

pendant ce pendant ce tour h donc là pour le coup les transactions fi sont vraiment vraiment pas cheres mais par contre euh c'est encore work in progress on a besoin de faire auditer euh c'est c'est c'est de la recherche donc on travaille encore dessus et puis entre tempemps on a été approché par arbitrom qui était sur le point de sortir leur Orbit chain donc qui sont des L3 et on s'est dit que on allait tenter l'aventure avec eux donc aujourd'hui notre prochain jeu il va être release sur un L3 enitrus Orbit donc enitrus c'est l'implémentation c'est du DC nous on s'est beaucoup inspiré d'eux euh et le L2 serait arbit rom one mais avoir sa propre chaîne ça

porte beaucoup de défis comme avoir un indexeur avoir des solutions d'un R qui est extrêmement compliqué à avoir sur des petites chaînes comme ça avoir un public r PC et cetera et c'est des challenges que je pense que nous arriverons à résoudre d'ici d'ici peu voilà ben écoutez merci [Applaudissements] beaucoup [Musique]