Définition
Bundler : définition
Un bundler est, dans l'abstraction de compte ERC-4337, l'acteur qui collecte les UserOperations des utilisateurs, les simule, puis les regroupe dans une transaction Ethereum adressée au contrat EntryPoint, dont il avance les frais de gas.
Thème : Ethereum et smart contracts
Avec l'ERC-4337, les utilisateurs d'un compte smart contract ne signent pas de transaction classique mais une UserOperation, une structure décrivant l'action souhaitée. Ces opérations circulent dans un mempool distinct. Le bundler les récupère, vérifie par simulation qu'elles passeront la phase de validation, puis les inclut ensemble dans une transaction qu'il envoie au contrat EntryPoint, chargé de les valider et de les exécuter une par une.
Le bundler dispose lui-même d'un compte classique et paie le gas de cette transaction. Il est ensuite remboursé, avec une marge, par les comptes des utilisateurs ou par un paymaster qui sponsorise les frais. Pour éviter qu'une opération malveillante ne lui fasse perdre de l'argent, le standard impose des restrictions sur ce que la phase de validation peut faire. Le rôle de bundler est ouvert : plusieurs fournisseurs d'infrastructure et des validateurs peuvent l'occuper.
Un exemple concret
Imaginons que Chloé valide dans son application un achat de NFT depuis son compte smart. Son portefeuille crée une UserOperation signée et l'envoie à un bundler. Celui-ci la regroupe avec celles d'autres utilisateurs, simule le tout et soumet une seule transaction à l'EntryPoint. Chloé voit son achat confirmé, tandis que le bundler a été remboursé de ses frais.
Les risques à connaître
Si peu de bundlers sont actifs, ils peuvent retarder ou refuser certaines opérations, ce qui pose une question de résistance à la censure. Un bundler mal configuré peut perdre de l'argent sur des opérations qui échouent. Pour l'utilisateur, le recours à un service tiers ajoute une dépendance d'infrastructure.
Questions fréquentes sur Bundler
Faut-il choisir son bundler ?
En général non : le portefeuille ou l'application s'en charge en se connectant à un fournisseur. Certains portefeuilles permettent toutefois de changer de point d'accès.
Le bundler peut-il modifier une UserOperation ?
Non, l'opération est signée par l'utilisateur et toute modification la rendrait invalide. Le bundler peut seulement choisir de l'inclure ou non.