Une étude de la Ethereum Foundation publiée le 5 octobre examine des assertions de transaction qui pourraient rejeter les exécutions dont le résultat final enfreint une règle définie. Au 9 octobre, EIP-7906 reste à l’état de projet, dépend des transactions par frame d’EIP-8141 et figure parmi les propositions envisagées pour la mise à niveau Hegotá, tandis qu’EIP-8141 est prévu pour y être inclus.
Pourquoi c’est important
EIP-7906 propose des frames POST_TX en lecture seule, qui inspectent l’état résultant d’une transaction. Leurs instructions peuvent recenser les changements nets et les événements spécifiés, récupérer des valeurs par clé et copier des données d’événement. Le périmètre défini comprend les soldes en ETH, les changements de stockage, les contrats nouvellement déployés et les empreintes de code. Pour vérifier les soldes de tokens, il faudrait interpréter le stockage des contrats et appliquer un seuil donné.
La proposition pourrait prendre en charge des politiques dépassant le cadre d’un seul swap, notamment pour préserver les contrôles d’un compte ou limiter les autorisations sur l’ensemble d’un parcours. Mais elle n’impose pas d’inclure une assertion dans chaque transaction. Les comptes doivent configurer la validation pour exiger le contrôle précis, sans possibilité de le contourner, et les protocoles doivent eux-mêmes imposer l’assertion requise. Dans les flux de règlement par solveur, l’ordre signé ou le protocole doit obliger le solveur à respecter la politique.
Impact sur le marché
Uniswap v3 rejette déjà les swaps qui enfreignent un montant minimum reçu ou un montant maximum dépensé, mais ces seuils proviennent des paramètres de l’appel. Son guide avertit qu’un montant minimum reçu fixé à zéro est risqué en production. Même correctement appliquée, une limite peut autoriser une mauvaise transaction si le constructeur choisit un seuil trop permissif ou le calcule à partir d’une cotation erronée.
EIP-7906 a aussi ses limites : la proposition évalue les changements nets, de sorte que les écritures intermédiaires ensuite annulées peuvent ne pas apparaître. Une assertion échouée ferait annuler le corps d’exécution, mais la transaction resterait dans le bloc, les frais de gas seraient facturés et les changements apportés au préfixe de validation resteraient acquis. Les recommandations de sécurité du projet préconisent des cibles d’assertion immuables et des références que l’exécution ne peut pas manipuler, comme des valeurs fixées lors de la signature ou tirées de l’état initial de la transaction. Ethereum pourrait imposer un contrôle avec précision tout en garantissant un mauvais accord si la politique ou sa référence est mal choisie.
Questions fréquemment posées
-
Qu’ajoute EIP-7906, la proposition d’Ethereum, aux contrôles des transactions ?
La proposition introduit des frames POST_TX en lecture seule qui inspectent l’état résultant d’une transaction et rejettent l’exécution si une règle d’assertion est enfreinte.
-
Pourquoi une limite de swap appliquée peut-elle tout de même autoriser une mauvaise transaction ?
Le constructeur de transaction peut choisir un seuil permissif ou le calculer à partir d’une mauvaise cotation. Appliquer la limite choisie ne garantit pas qu’elle corresponde à un bon accord.
-
Qui doit veiller à ce qu’une transaction inclue l’assertion requise ?
Les comptes doivent configurer la validation pour exiger la frame POST_TX précise, sans possibilité de la contourner. Les protocoles doivent aussi imposer l’assertion requise dans les fonctions protégées.
-
Que se passe-t-il lorsqu’une assertion POST_TX échoue ?
Le corps d’exécution est annulé, mais la transaction reste dans le bloc et les frais de gas sont facturés. Les changements effectués dans le préfixe de validation sont conservés.
-
Comment EIP-7906 propose-t-il de protéger les contrôles contre toute manipulation ?
Ses recommandations préconisent des cibles d’assertion immuables et non modifiables par mise à niveau, ainsi que des valeurs de référence fixées à la signature ou tirées de l’état initial de la transaction.