FAQ publiée par Vitalik Buterin sur https://notes.ethereum.org/@vbuterin/BkSQmQTS8, traduite par Jean Zundel.

Bien sûr, le lancement réussi d’Eth2 a occupé tous les esprits ces dernières semaines, mais les travaux se poursuivent sur tous les fronts. L’EIP 1559, en discussion depuis plusieurs mois, représente une évolution majeure en changeant fondamentalement le fonctionnement des fees, les frais de transaction.

Qu’est-ce que l’EIP 1559 ?

L’EIP 1559 est une proposition visant à réformer le marché des frais d’Ethereum, avec les changements clés suivants :

  • La limite actuelle de 10 millions de gaz est remplacée par deux valeurs : un «objectif moyen à long terme» (10 millions), et un «plafond ferme par bloc» (20 millions) ;
  • Il existe un BASEFEE (qui est brûlé) que les transactions doivent payer, qui est ajusté bloc par bloc dans le but de cibler une valeur telle que la consommation moyenne de gaz du bloc reste autour de 10 millions.

En substance, alors que toute la volatilité à court terme de la demande d’espace de transaction à l’intérieur d’un bloc se traduit actuellement par une volatilité des frais de transaction, une partie se traduirait alors par une volatilité de la taille des blocs.

En quoi l’EIP 1559 est-elle bénéfique ?

Pour citer un ancien article :

Le statu quo des marchés des frais de transaction pose trois problèmes majeurs :

  • Inadéquation entre volatilité des niveaux de frais de transaction et coût social des transactions : les frais de transaction sur les chaînes de blocs publiques établies, dont l’utilisation est suffisante pour que les blocs soient pleins, tendent à être extrêmement volatils. Sur Ethereum, les frais minimums tournent généralement autour de 2 gwei (109 gwei = 1 ETH), mais ils peuvent parfois monter jusqu’à 20 à 50 gwei, voire 200 gwei en une occasion : https://etherscan.io/chart/gasprice. Il est clair que cela engendre une certaine inefficacité car il est absurde de supposer que le coût supporté par le réseau pour accepter une transaction supplémentaire dans un bloc soit 100 fois plus élevé lorsque le prix du gaz est de 200 gwei que lorsqu’il est de 2 gwei ; dans les deux cas, il s’agit d’une différence entre 8 millions de gaz et 8,02 millions de gaz ;
  • Inefficacités des enchères de premier prix : voir https://ethresear.ch/t/first-and-second-price-auctions-and-improved-transaction-fee-markets/2410 pour un compte rendu détaillé. En bref, dans l’approche actuelle, les émetteurs publient une transaction avec une redevance, les mineurs choisissent les transactions les plus rémunératrices et chacun paie ce qu’il offre. Cette approche est bien connue dans la littérature sur les mécanismes d’incitation pour être très inefficace, nécessitant des algorithmes complexes d’estimation des frais ; ces algorithmes finissent souvent par ne pas très bien fonctionner, ce qui entraîne fréquemment des frais excessifs. Voir également https://blog.bitgo.com/the-challenges-of-bitcoin-transaction-fee-estimation-e47a64a61c72, la description par un core développeur Bitcoin des défis entraînés par le statu quo de l’estimation des frais ;
  • Instabilité des chaînes de blocs sans récompense en bloc : à long terme, les chaînes de blocs où il n’y aura pas d’émission (y compris Bitcoin et Zcash) ont actuellement l’intention de récompenser les mineurs par les frais des transactions. Toutefois, des résultats connus montrent que cela risque d’entraîner une grande instabilité, en incitant à miner des «blocs frères» pour voler les frais de transaction, ouvrant ainsi des vecteurs d’attaque par minage égoïste beaucoup plus puissants, etc. Il n’existe actuellement aucune mesure efficace d’atténuation de ce phénomène.

L’EIP 1559 présente ces avantages :

  • Il atténue les inefficacités économiques dues à l’inadéquation des coûts sociaux en raison de la volatilité des frais. L’argument économique est assez nuancé ; voir en particulier les pages 16 à 20 du document dont le lien figure sur https://ethresear.ch/t/draft-position-paper-on-resource-pricing/2838 (bien que je recommande de lire l’ensemble du document) pour une argumentation détaillée sur les raisons de cette situation. Intuitivement, le mécanisme d’ajustement des frais fonctionne comme un frais fixe à court terme et un plafond à long terme, et il s’avère qu’en raison des arguments avancés dans cet l’article de Martin Weitzman (en 1974), des frais fixes sont probablement préférables à un plafond dans les conditions où, fondamentalement, toutes les blockchains publiques sont aujourd’hui en place.
  • Il remplace la vente aux enchères par une vente à prix fixe (sauf pendant de courtes périodes où les blocs se remplissent complètement jusqu’à ce que les frais rattrapent leur retard), ce qui élimine les inefficacités de la vente aux enchères au premier prix et rend l’estimation des frais extrêmement simple : calculez les frais f pour le bloc suivant, si vous pouvez vous le permettre, payez-les, sinon ne le faites pas.
  • Il crée un mécanisme similaire à une récompense permanente par bloc (le 1/N provenant du pot), ce qui atténue bon nombre des problèmes d’instabilité liés aux chaînes de blocs fonctionnant uniquement sur les frais sans nécessiter de véritable émission permanente.

Un autre avantage sous-estimé de l’EIP 1559 est qu’il permet de mesurer les prix du gaz de manière sûre. Aujourd’hui, le simple fait de regarder les prix du gaz sur la chaîne et de les utiliser comme indice est exploitable, car les mineurs peuvent inclure des transactions fictives à très faible ou très forte redevance, où la redevance se ferait à eux-mêmes. Mais en vertu de l’EIP 1559, le BASEFEE ne peut être manipulé qu’à un coût élevé, car les transactions fictives exigeraient même du mineur qu’il paie des frais (qui sont brûlés).

Les marchés actuels des frais sont-ils vraiment si inefficaces ?

Oui, la différence entre le prix moyen du gaz et le dixième centile du prix du gaz dans un bloc normal est d’environ 3 fois pour la médiane et de 5 à 8 fois pour la moyenne. Les gens paient trop, en masse, inutilement.

Toute personne qui ne paie pas trop subit un retard de 1 à 2 minutes, voire plus, et ce retard ne profite en fait à personne ; la charge totale de la chaîne est la même, qu’une unité de charge donnée atteigne la chaîne au temps N ou au temps N + 60. Il n’y a aucun avantage social réel à favoriser des participants «exprimant une préférence pour la rapidité» dans le mécanisme du marché des frais, du moins dans des conditions normales ; il s’agit d’une perte parfaitement inutile. Il vaudrait mieux pour nous tous que davantage de transactions soient incluses immédiatement, ce que permet l’EIP 1559.

Pourquoi ne pas simplement utiliser la deuxième enchère (ou une k-ième enchère) pour résoudre les inefficacités de la meilleure enchère ?

Les enchères au k-ième prix (où chacun paie un prix de gaz égal au prix le plus bas qui était inclus dans le bloc) sont effectivement «efficaces» dans une analyse économique traditionnelle*, mais elles ont le défaut d’être vulnérables à la collusion.

* Oui, bien sûr, techniquement, il faut utiliser le prix du gaz le plus élevé qui n’est pas inclus dans le bloc ; mais en pratique, étant donné que la plupart des blocs Ethereum comportent des centaines de transactions, la différence serait négligeable.

L’EIP 1559 pourrait-elle faire courir le risque de surcharger les nœuds et les mineurs pendant les périodes de forte utilisation ?

EIP 1559 peut tout au plus multiplier par 2 la taille des blocs, même à court terme. Chaque «bloc complet» (c’est-à-dire un bloc dont le gaz est 2x la TARGET) augmente le BASEFEE de 1,125x, donc une série de blocs complets constants augmentera le prix du gaz par un facteur 10 tous les ~20 blocs (~4,3 min en moyenne). Par conséquent, les périodes de forte charge sur la chaîne ne dureront pas plus de 5 minutes.

Notez qu’actuellement, les périodes de doublement de la charge durant 5 minutes se produisent déjà aléatoirement environ une fois tous les ~63888 blocs (~10 jours) en raison de la variance du taux de production des blocs. L’introduction de l’EIP 1559 n’entraînerait donc pas un niveau de charge sans précédent dans le système.

En outre, la limite de gaz de 10 millions, pas plus, est justifiée dans une large mesure non par des limites strictes du réseau (les taux d’oncles sont proches des plus bas niveaux historiques, bien que les risques pour les nœuds non-mineurs tels que les nœuds de bootstrap puissent être plus élevés), mais par des préoccupations fondamentalement long terme :

  • Risque de centralisation par des taux d’oncles un peu plus élevés : si les taux d’oncles grimpaient jusqu’à 20%, cela profiterait de manière disproportionnée aux grands bassins bien connectés ;
  • Limites en taille de l’état ;
  • Difficulté de synchronisation après une courte période hors ligne.

Dans ces trois cas, ce qui importe n’est pas la limite supérieure de la capacité dans une fenêtre de temps très courte, mais plutôt la capacité moyenne à long terme. Le fait que les taux d’oncles soient de 2% pendant les heures impaires et de 18% pendant les heures paires aurait le même effet sur les trois cas précités, car les taux d’oncle sont toujours de 10%. Étant donné que l’EIP 1559 limite toujours la consommation de gaz à long terme à une moyenne d’environ 10 millions par bloc, il n’affecte pas la moyenne à long terme.

À quoi ressemblerait un pic de consommation élevée avec l’EIP 1559 par rapport au statu quo ?

Considérons un «pic mathématiquement idéal» (par exemple, cela pourrait se produire dans la vie réelle en raison d’un événement soudain sur le marché conduisant à de nombreuses possibilités d’arbitrage sur les DEX, à des offres sur les CDP liquidés, etc.), où N * 10 millions de transactions de gaz, chacune avec un prix du gaz très très élevé, sont toutes diffusées.

Actuellement, cela conduirait à la situation suivante :

  • Les prochains blocs N seraient exclusivement remplis de nouvelles transactions à prix élevés ;
  • Ensuite, les autres transactions, ainsi que celles que les gens enverraient après le pic, seraient incluses dans l’ordre décroissant du prix du gaz.

Un «utilisateur normal» moyen devrait attendre plus de N blocs.

Examinons maintenant la situation avec l’EIP 1559 :

  • Les blocs N/2 suivants seraient remplis exclusivement de nouvelles transactions «d’heure de pointe», chacune avec une quantité de gaz deux fois plus importante que la normale ;
  • Si toutes les autres transactions sont envoyées avec un plafond de prix du gaz égal à l’ancien prix du gaz, les blocs N/2 suivants seraient vides, et après cela les choses reviendraient à la normale. Mais de manière réaliste, les transactions prioritaires fixeraient des plafonds de prix du gaz plus élevés et seraient incluses en premier, et les autres transactions plus tard.

Un «utilisateur normal» moyen devrait attendre quelque part entre N/2 et plus de N blocs.

Par conséquent, même en incluant la «période de récupération» après la période de pointe pendant laquelle la capacité des blocs serait inférieure à la normale, la plupart des transactions seraient incluses plus tôt.

Voici une simulation très grossière (il y a beaucoup d’hypothèses étranges ici, mais il est difficile de modéliser un système complet qui couvre à la fois les courbes de l’offre et de la demande et les temps d’attente) ; le tableau source est ici.

Statu quo :

EIP 1559 :

Que ferait l’EIP 1559 en cas de pics plus importants et plus prolongés (p. ex. pics d’une journée) ?

Pas beaucoup. Le BASEFEE augmenterait et il y aurait une courte période au début où quelques transactions seraient plus rapides, mais après cela, le marché des frais fonctionnerait comme dans des conditions «ordinaires», à un niveau de frais plus élevé. Le principal avantage de l’EIP 1559 en matière de pics est que les dommages causés par l’inefficacité des marchés de frais ordinaires sont amplifiés lorsque les frais sont élevés, de sorte qu’il devient plus important d’avoir un marché des frais qui fonctionne.

Pourquoi limit = cible * 2 ? Pourquoi pas 4 ? Ou 8 ?

Plus le rapport limite / cible est élevé, plus les avantages de l’EIP 1559 en termes d’efficacité du marché des frais sont importants. Cela dépend de l’amplitude des pics à court terme que nous sommes prêts à accepter ; 2x est assez prudent. Nous pourrions même lancer l’EIP 1559 avec un rapport limite / objectif de 2 pour commencer, et l’augmenter au fil du temps si nous voyons que le réseau fonctionne bien même en cas de pics à court terme.

Pourquoi les mineurs incluraient-ils des transactions ?

L’EIP comprend un «pourboire» que les émetteurs de transactions peuvent inclure pour le mineur. Ce pourboire sert à deux choses : premièrement, s’il y a subitement beaucoup plus de transactions que prévu, les mineurs incluront d’abord les transactions avec un pourboire plus élevé, de sorte que le mécanisme de priorisation basé sur les frais reste finalement actif. Deuxièmement, il compense le risque d’oncles pour les mineurs (le risque accru que leur bloc ne soit pas inclus dans la chaîne principale parce que l’ajout d’une transaction supplémentaire le ralentira).

Le calcul du niveau de pourboire qui compense le risque d’oncle donne environ 0,8 gwei (les blocs oncles obtiennent en moyenne une récompense de 1,67 ETH au lieu de la base de 2 ETH, ce qui représente une perte de ~0,33 ETH = 330m gwei, 10 millions de blocs de gaz ajoutent ~0,025 au taux d’oncles par rapport aux blocs vides, donc le coût prévu du gaz est = 330m / 10m * 0,025 = 0,825 gwei) et les mineurs se fixent effectivement cette valeur lorsque la chaîne est vide.

Ce niveau de pourboire est indépendant du BASEFEE, de sorte que les clients peuvent en toute confiance fixer 1-1,5 gwei et s’attendre à ce que leurs transactions soient acceptées.

Comment les portefeuilles peuvent-ils choisir les pourboires ? Y a-t-il un risque de guerre des enchères pour les pourboires ?

Les portefeuilles pourront simplement choisir les pourboires en examinant quels pourboires ont été acceptés dans le passé sur la chaîne et en augmentant leur pourboire s’ils constatent qu’une transaction qu’ils envoient n’a pas été acceptée immédiatement. Notez que dans des «conditions normales», il n’y a aucune raison de fixer un pourboire supérieur au strict minimum.

En cas de congestion soudaine, les pourboires se transforment en guerre d’enchères ; les portefeuilles peuvent détecter la congestion et, dans ce cas, ils peuvent offrir aux utilisateurs la possibilité de fixer une priorité faible ou élevée pour leur transaction.

Qu’est-ce que le mécanisme d’escalator ? Comment peut-il être combiné avec le PEI 1559 ?

Le mécanisme d’escalator est une proposition de réforme différente des frais de transaction dans laquelle, au lieu de spécifier des frais uniques, les utilisateurs spécifient leurs frais comme une fonction, généralement avec un début, une augmentation par bloc et un maximum, par exemple «5 gwei si cette transaction est incluse dans le bloc 10123456, ajouter 1 gwei pour chaque bloc suivant (par exemple 8 gwei si inclus dans le bloc 10123459), jusqu’à un maximum de 100 gwei».

Il s’agirait de quatre paramètres : frais de début, bloc de début, incrément par bloc, frais maximum.

L’objectif est d’être «plus sécurisé» envers les erreurs d’estimation des frais, car si les frais s’avèrent trop bas, ils augmenteront naturellement au fil du temps jusqu’à ce que la transaction soit incluse. Dans le contexte de l’EIP 1559, cela pourrait être utilisé pour fixer le pourboire. Le fait que le pourboire se situerait généralement dans une fourchette constante signifie que même un portefeuille n’utilisant que des paramètres fixes pour l’escalator donnerait des résultats assez corrects aux utilisateurs.

Les mineurs ne seront-ils pas incités à s’associer pour faire baisser le BASEFEE en limitant le remplissage de leurs blocs à moins de la moitié ?

En général, l’efficacité ce genre de stratégies est limitée, car à moins que presque tout le monde ne soit de connivence, une transaction non incluse dans un bloc sera incluse dans le bloc suivant ; l’effet de cette action sur le BASEFEE à long terme sera donc négligeable.

Toutefois, les mineurs peuvent mettre en place une sorte de «tarification monopolistique». Supposons que les émetteurs de transactions soient prêts à payer des frais supplémentaires pour éviter d’être retardés d’un bloc. Les mineurs peuvent refuser d’inclure les transactions qui ne comportent pas un pourboire minimum T ; ils perdent une partie de leurs revenus, mais gagnent à ce que les émetteurs augmentent leurs frais s’ils évaluent la probabilité supplémentaire que vous soyez le prochain mineur et qu’ils incluent leur transaction de manière suffisamment élevée. Cette stratégie est fortement défavorable au mineur : il subit le coût total de la perte de revenus, mais ne gagne qu’une petite partie de l’augmentation des frais de transaction que d’autres envoient.

Notez que même si un mineur réussit avec cette stratégie, il augmentera les revenus des autres mineurs plus qu’il n’augmentera ses propres revenus (car les autres mineurs profitent des pourboires plus élevés en raison de vos actions), et il ne s’agit donc pas d’un vecteur de centralisation.

Cela ne ramènera pas le BASEFEE à zéro, mais permettra d’atteindre un équilibre où le BASEFEE constituera toujours la majeure partie des frais et les pourboires le complétant. En effet, à moins que les mineurs ne soient tous de connivence (auquel cas nous avons des problèmes plus importants), les mineurs subissent la totalité des coûts, hors transactions, mais ne bénéficient que partiellement des avantages liés à l’augmentation des pourboires.

Si le risque que les mineurs déploient une telle stratégie reste inacceptable, nous pouvons affecter une partie (par exemple 50%) des recettes de l’EIP 1559 à un fonds commun dont un petit pourcentage est prélevé sur chaque bloc pour être ajouté à la récompense de bloc des mineurs ; cela garantit que les mineurs bénéficient d’un BASEFEE élevé, ce qui réduit encore les gains d’une telle attaque.

Voici, schématisée, une proposition de modification de l’EIP allant dans ce sens :

  • Définir le compte 0x35 comme FEE_SMOOTHING_BUFFER, et définir FEE_SMOOTHING_CONSTANT = 8192 ;
  • Ajouter un terme supplémentaire à la récompense en bloc (ajouté en même temps que la récompense en bloc de base et les récompenses oncle+neveu). Soit smoothing_reward = FEE_SMOOTHING_BUFFER.balance // FEE_SMOOTHING_CONSTANT. Transférer smoothing_reward wei de FEE_SMOOTHING_BUFFER vers block.coinbase ;
  • Après l’application des récompenses du bloc, la moitié des frais EIP-1559 de ce bloc (arrondis à l’inférieur) est ajoutée au solde de FEE_SMOOTHING_BUFFER. Le reste (c’est-à-dire la moitié arrondie à l’unité supérieure) est brûlé.

Notez que dans un contexte de preuve d’enjeu, il serait souhaitable de mettre en place des élections à bulletins secrets des dirigeants ainsi que des sanctions en cas de révélation prématurée, afin d’empêcher les validateurs d’acquérir la réputation de n’accepter que des pourboires élevés et d’en tirer eux-mêmes tout le bénéfice, car les émetteurs de transactions sauraient quels validateurs vont bientôt créer des blocs.

Autres ressources

Le document original : https://ethresear.ch/t/first-and-second-price-auctions-and-improved-transaction-fee-markets/2410

Thread de ethresear.ch sur les simulations de Barnabe : https://ethresear.ch/t/eip-1559-simulations/7280

Commentaires

Commentaires

  1. FAQ EIP 1559 – Ethereum blockchain
    10 mai 2021 - 14h39

    […] post FAQ EIP 1559 first appeared on Ethereum […]

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *