L'attaque, en chiffres
Le JIT fonctionne à grande échelle et de façon très automatisée : la mesure ci-dessus attribue la plupart des bundles à une poignée de bots searchers, et environ 52 700 d'entre eux sont passés par des relais privés, invisibles dans le mempool public jusqu'à leur inclusion. Les LP passifs des pools partagés affrontent une infrastructure qu'ils ne peuvent pas voir.
Comment se déroule un bundle JIT
- 1
Repérer un gros swap
Un bot surveille les transactions en attente à la recherche d'un gros swap destiné à un AMM à pool, puis calcule exactement où ce swap déplacera le prix.
- 2
Insérer la liquidité d'abord
Dans le même bloc, juste avant le swap, il mint une position étroite à ce prix, si bien que pendant un instant il détient l'essentiel de la liquidité active du pool.
- 3
Sortir avec les frais
Immédiatement après le swap, il burn la position et repart avec une grande part des frais, diluant les LP dont la liquidité était dans le pool depuis le début. Le swap lui-même n'est pas pénalisé et s'exécute même, en moyenne, à un prix légèrement meilleur. Sur Aqua, la séquence ne peut pas commencer : aucune liquidité externe ne peut s'insérer dans votre position.
Pourquoi les positions Aqua ne peuvent pas être snipées
Dans un AMM à pool, les frais sont partagés entre tous les participants présents dans le pool au moment des frais, y compris un bot arrivé dans le même bloc, juste avant le swap. Une position Aqua a un propriétaire unique : ses frais ne sont partagés avec aucun autre LP et aucune liquidité externe ne peut s'y joindre. Le moment des frais n'est pas partagé, il n'y a donc rien à sniper. Quels risques subsistent pour les LP d'Aqua.