Imaginez que vous avez ouvert un café dans un endroit très fréquenté. Vous payez le loyer, engagez du personnel et attendez les clients. Soudain, juste devant votre porte, alors qu’un groupe de 100 touristes s’approche, quelqu’un installe un kiosque temporaire en une fraction de seconde, leur vend du café et le démonte immédiatement après que le dernier touriste ait payé. Vous êtes resté là toute la journée, mais le profit a été emporté par le « fantôme ».
Dans la DeFi, ce « fantôme » s’appelle la liquidité JIT (Just-In-Time).
1. Concept : Liquidité à la demande
Dans Uniswap v2, la liquidité était « paresseuse » — répartie sur toute la courbe de prix de zéro à l’infini. Uniswap v3 a introduit la Liquidité Concentrée, permettant aux LP de choisir des plages étroites.
La liquidité JIT est la forme extrême de concentration. Un bot MEV ne garde pas de fonds dans le pool en permanence. Il les ajoute exactement au moment où il voit une grosse transaction (swap) dans le mempool, qui est garantie de générer des frais importants.
À quoi cela ressemble dans un bloc (Chronologie) :
- Tx cible : Un utilisateur envoie une transaction pour échanger 500 ETH contre des USDC.
- Détection : Le bot la voit dans le mempool (transactions en attente).
- Bundle JIT : Le bot crée un bundle en trois actions :
- Action A (Mint) : Ajouter une liquidité massive dans une plage de 1 tick (plus petit pas de prix possible) où la transaction aura lieu.
- Action B (Swap) : Le swap de l’utilisateur se déroule ici.
- Action C (Burn) : Retirer immédiatement la liquidité avec la part des frais.
Les trois actions se produisent dans le même bloc, souvent dans une seule transaction atomique via le contrat intelligent du bot.
2. Pourquoi vos frais « disparaissent »
Les gains des LP dans Uniswap v3 sont proportionnels à leur part dans la plage de prix active.
Choc mathématique : Si le pool contient 1 000 000 $ des LP classiques, et qu’un bot JIT injecte 9 000 000 $ dans la même plage étroite pour un seul swap, il prend 90 % des frais de cette transaction.
Pour un LP passif, cela signifie dilution. Vous ne perdez pas vos tokens (hormis la perte impermanente normale), mais vous perdez le coût d’opportunité — le profit pour lequel vous avez risqué votre capital.
Exemple concret (données 2025-2026) :
Dans un pool USDC/ETH (0,05%), un swap de 10 M$ a lieu. Frais attendus : 5 000 $.
- Sans bot : 10 LP classiques se partagent 500 $ chacun.
- Avec bot JIT : Le bot injecte 100 M$ de liquidité. La part des LP classiques tombe à 1 %. Le bot prend 4 950 $, et les 10 LP se partagent un maigre 50 $.
3. Anatomie d’une transaction : Vue technique
Les bots JIT utilisent des contrats intelligents spécialisés. L’interface standard d’Uniswap est trop lente et coûteuse en gaz pour cela.
Détail technique : Le bot appelle la fonction mint sur NonfungiblePositionManager, mais via son contrat wrapper, qui appelle immédiatement decreaseLiquidity et collect après le swap.
Exemple de structure d’appel (style Solidity) :
// Pseudocode de la logique du contrat JIT
function executeJit(
address pool,
int24 tickLower,
int24 tickUpper,
uint256 amount0,
uint256 amount1
) external {
// 1. Entrer dans la position (JIT Mint)
(uint256 tokenId, , , ) = nftManager.mint(params);
// 2. La magie du bundle MEV se produit ici :
// La transaction swap de l’utilisateur est intégrée dans le bloc IMMÉDIATEMENT après cet appel.
// 3. Sortie de la position dans la même transaction ou la suivante du bundle
nftManager.decreaseLiquidity(DecreaseParams(tokenId, liquidity, ...));
nftManager.collect(CollectParams(tokenId, recipient, ...));
nftManager.burn(tokenId);
}
4. Fait peu connu : JIT comme « garde forestier » ?
La communauté des chercheurs MEV débat encore. Contrairement aux attaques Sandwich (qui détériorent le prix pour l’utilisateur), les attaques JIT peuvent améliorer les conditions pour le trader.
- Pour le trader : La liquidité du pool augmente soudainement → le slippage diminue → le trader obtient plus de tokens.
- Pour le LP passif : Pur vol de rendement.
- Pour le protocole : Le volume des échanges augmente, mais retenir les fournisseurs de liquidité devient plus difficile.
5. Indicateurs pratiques de l’activité JIT
Comment savoir si un « prédateur » est dans votre pool ?
- Volume vs Revenus : Le volume du pool augmente, mais vos frais accumulés bougent à peine.
- Pics instantanés de TVL : En surveillant la liquidité dans les blocs (via des outils comme Dune Analytics ou EigenPhi), on voit des « aiguilles » verticales — la liquidité arrive et part en un seul bloc.
- Concentration sur 1 tick : Vérifiez les positions actives. Si vous voyez une position de plus de 50 M$ dans la plage minimale de 1 tick (ex. 190510–190520 pour ETH), c’est la signature d’un bot JIT.
Et après ?
Nous avons couvert la théorie et la mécanique du « vol de frais ». Mais comment le bot sait-il combien injecter pour ne pas perdre à cause des frais de gaz ? Comment rivalise-t-il avec d’autres bots JIT dans l’enchère Flashbots ?
Dans le prochain article, nous aborderons les mathématiques de la domination et les formules pour calculer l’« entrée parfaite ».
Maîtrise de la Liquidité JIT : Le Guide Complet du MEV sur Uniswap : Partie 1 sur 5