WATS Wallet logoWATS Wallet
Technique7 min de lecture

Bundlers et UserOperations : comment fonctionnent les transactions ERC-4337

Un parcours clair et techniquement exact du flux ERC-4337 — UserOperations, mempool alternatif, bundlers, contrat EntryPoint et paymasters — et de la façon dont tout s'articule.

Un rapide rappel sur ERC-4337

ERC-4337 est le standard Ethereum pour l'abstraction de compte — une manière de donner aux comptes à contrat intelligent la même capacité de première classe à initier et à payer des actions que les comptes détenus en externe (EOA) ont toujours eue, sans aucune modification du protocole de base. Au lieu de modifier la couche de consensus, ERC-4337 introduit un système parallèle d'objets de plus haut niveau et d'infrastructure off-chain qui se règle finalement à travers des transactions Ethereum ordinaires. Si vous voulez d'abord la version de fond, notre explicatif sur ce qu'est l'abstraction de compte couvre la motivation, et ce qu'est ERC-4337 cartographie le standard complet. Cet article zoome sur la mécanique : les objets qui traversent le système et les acteurs qui les traitent. Notez que ERC-4337 est un standard EVM — il s'applique à Ethereum et aux chaînes compatibles EVM, pas aux chaînes non-EVM comme Solana ou TON.

Ce qu'est réellement une UserOperation

L'objet central d'ERC-4337 est la UserOperation. Elle ressemble superficiellement à une transaction, mais on la comprend mieux comme une déclaration d'intention signée : "voici ce que mon compte veut faire, et voici les paramètres pour la valider et la payer." Une UserOperation porte des champs tels que le compte expéditeur, un nonce, le calldata à exécuter, des limites de gas, des paramètres de frais, un champ optionnel paymasterAndData et une signature.

La différence clé avec une transaction normale porte sur qui et quoi la signe. Une transaction Ethereum classique doit être signée par la clé privée d'un EOA selon un schéma ECDSA fixe, et ce même compte paie le gas. Une UserOperation est validée par la logique de compte à contrat intelligent de l'expéditeur — qui peut implémenter n'importe quel schéma de signature, règle multi-clés ou politique d'autorisation que le compte définit — et elle n'a pas à se payer elle-même en gas natif. Cette flexibilité est tout l'intérêt : c'est le compte, et non le protocole, qui décide de ce à quoi ressemble une action valide.

Le mempool alternatif où elles vivent

Les UserOperations n'entrent pas dans le mempool de transactions Ethereum habituel, car ce ne sont pas encore des transactions. Elles sont plutôt diffusées vers un mempool alternatif distinct (souvent appelé alt-mempool) — un réseau pair-à-pair dédié aux objets ERC-4337. Les wallets et les dApps y soumettent les UserOperations, et l'infrastructure qui les consomme écoute sur ce réseau plutôt que sur le mempool de la couche de base. Cette séparation maintient le trafic d'abstraction de compte hors du chemin critique du consensus jusqu'au moment où il est empaqueté dans une véritable transaction.

Le rôle du bundler

Un bundler est l'acteur off-chain qui transforme les intentions en réalité on-chain. Sa mission comporte quatre volets. Premièrement, il collecte les UserOperations depuis le mempool alternatif. Deuxièmement, il simule et valide chacune d'elles — en exécutant la logique de validation du compte dans un contexte simulé pour confirmer que la signature est valide, que le nonce est correct et que le compte (ou son paymaster) peut couvrir le coût — tout en appliquant des règles qui empêchent les opérations de consommer des ressources qu'elles ne peuvent pas payer. Troisièmement, il regroupe une ou plusieurs UserOperations valides dans une unique transaction Ethereum ordinaire. Quatrièmement, il soumet cette transaction au réseau depuis son propre EOA, en avançant le gas de la couche de base et en s'attendant à être remboursé on-chain.

Parce que le bundler avance le gas et gagne des frais pour l'inclusion, il se comporte à peu près comme un constructeur de blocs spécialisé pour le trafic d'abstraction de compte. Son étape de simulation-et-validation est ce qui le protège : il ne regroupera pas une opération qui échouerait à le rembourser.

Le contrat EntryPoint

Tout converge vers un unique contrat intelligent canonique appelé EntryPoint. La transaction du bundler est un appel à l'EntryPoint avec un tableau de UserOperations. L'EntryPoint exécute alors une boucle stricte en deux phases. Dans la phase de validation, pour chaque opération, il appelle la fonction de validation du compte expéditeur (et celle du paymaster, si l'un est spécifié) afin de revérifier la signature, le nonce et l'arrangement de paiement on-chain. Ce n'est qu'après que toutes les opérations du lot ont été validées qu'il passe à la phase d'exécution, où il transmet le calldata de chaque opération à son compte pour effectuer réellement le transfert, le swap ou toute autre action.

Cette séparation compte : la validation et l'exécution sont dissociées pour que les garanties de paiement d'un lot soient établies avant qu'un travail modifiant l'état ne s'exécute, et pour que l'EntryPoint puisse comptabiliser le gas avec précision sur de nombreuses opérations à la fois.

La place du paymaster

Un paymaster est un contrat optionnel qui accepte de payer une UserOperation au nom du compte. Lorsqu'une UserOperation inclut des données de paymaster, l'EntryPoint demande à ce paymaster, pendant la phase de validation, s'il sponsorisera l'opération et selon quelles conditions. Le paymaster peut accepter sans condition (véritable sponsoring gasless), ou il peut accepter en échange d'une valeur — le plus utilement, en facturant l'utilisateur dans un token ERC-20 au lieu du gas natif. Pour un examen plus approfondi de ce composant, voir ce qu'est un paymaster. Le paymaster est le point d'accroche du flux qui découple "ce avec quoi l'utilisateur paie" de "ce dans quoi le réseau est payé."

Comment le gas et les échecs sont gérés

Le gas dans ERC-4337 est stratifié. Le bundler paie de vrais ETH pour la transaction externe ; l'EntryPoint mesure le gas de validation et d'exécution de chaque UserOperation par rapport aux limites qu'elle a déclarées ; et celui qui est engagé — le compte ou son paymaster — doit avoir staké ou déposé de quoi couvrir la facture, que l'EntryPoint règle à la fin. Les échecs sont contenus par la conception validation-d'abord. Si une opération échoue lors de la validation on-chain, elle est simplement exclue et ne peut aboutir, et la simulation off-chain du bundler est censée détecter cela avant la soumission. Si une opération passe la validation mais que son exécution échoue (revert), les effets de l'exécution sont annulés tandis que le gas déjà dépensé est tout de même comptabilisé et payé — de sorte qu'un bundler n'est pas laissé sans compensation pour un travail honnête. C'est pourquoi les bundlers simulent avec autant de soin : leur protection contre le griefing consiste à refuser d'inclure quoi que ce soit qui ne les rembourserait pas.

Comment WATS utilise cela

Sur les chaînes EVM, WATS s'appuie sur exactement un élément de ce flux : un paymaster ERC-4337. Lorsque vous effectuez un transfert, un swap ou un staking dans le Hot Wallet WATS, le paymaster est ce qui permet de facturer vos frais en ATS plutôt qu'en gas natif de la chaîne — vous n'avez jamais besoin de détenir de l'ETH, du BNB ou tout autre token de gas pour transiger. Parce que ATS est un OFT LayerZero, un solde ATS unique couvre les frais à travers l'EVM, Solana et TON (sur les chaînes non-EVM, un fee-payer équivalent joue le rôle du paymaster), et l'ATS collecté est brûlé de 100 000 000 vers un plancher de 30 000 000. WATS demeure entièrement non-custodial — vous détenez vos propres clés — et c'est le premier et le seul wallet à combiner des frais en token unique ERC-4337 + OFT facturés à la place du gas natif avec ce burn. Voir comment fonctionne le modèle de frais ATS pour le tableau complet.

Foire aux questions

Quelle est la différence entre une UserOperation et une transaction Ethereum normale ?

Une transaction normale est signée par un compte détenu en externe au moyen d'un ECDSA fixe et paie son propre gas dans le token natif de la chaîne. Une UserOperation est un objet d'intention de plus haut niveau validé par la logique de compte à contrat intelligent de l'expéditeur, qui peut utiliser des règles personnalisées, et elle n'a pas à se payer elle-même en gas natif — un paymaster peut couvrir les frais. Les UserOperations transitent également par un mempool alternatif distinct plutôt que par le mempool de transactions standard.

Que fait réellement un bundler ERC-4337 ?

Un bundler collecte les UserOperations depuis le mempool alternatif, simule et valide chacune d'elles pour confirmer les signatures, les nonces et la couverture du paiement, puis regroupe les valides dans une unique transaction Ethereum ordinaire qui appelle le contrat EntryPoint. Il soumet cette transaction depuis son propre compte, en avançant le gas de la couche de base et en s'attendant à être remboursé on-chain. Une simulation soigneuse est ce qui protège le bundler d'inclure des opérations qui ne le rembourseraient pas.

ERC-4337 me permet-il de payer les frais de gas dans un token autre que l'ETH ?

Oui, lorsqu'un paymaster est utilisé. Un paymaster est un contrat optionnel qui peut sponsoriser une UserOperation et, au lieu de facturer le gas natif, accepter un paiement dans un token ERC-20, en réglant séparément les frais réels du réseau. C'est ainsi qu'un wallet peut vous laisser transiger sans détenir le token de gas natif de la chaîne. ERC-4337 et ses paymasters sont exclusivement EVM ; les chaînes non-EVM comme Solana et TON obtiennent un résultat similaire avec un fee-payer ou un relayer équivalent.