De nombreux utilisateurs ont migré vers les réseaux L2 (Arbitrum, Optimism, Base), en espérant des transactions moins coûteuses et une « protection contre les bots » largement mise en avant aux débuts des rollups. La réalité est pourtant plus rude : le MEV (Maximal Extractable Value) n’a pas disparu sur les L2 — il a simplement évolué.
Si vous effectuez un swap d’environ 10 000 $ dans un pool à faible liquidité, vous êtes une cible idéale pour une « attaque sandwich ». Dans cet article, nous allons expliquer comment opèrent les prédateurs modernes et comment protéger vos fonds sans être développeur professionnel.
Qu’est-ce qu’une « attaque sandwich » en termes simples
Imaginez que vous souhaitiez acheter une pièce de collection rare aux enchères et que vous soyez prêt à payer jusqu’à 110 $, alors que le prix actuel est de 100 $. Un bot prédateur voit votre offre dans la file d’attente (mempool), achète instantanément la pièce à 100 $ juste avant vous, ce qui fait monter le prix à 109 $. Votre ordre est alors exécuté à 110 $. Immédiatement après, le bot revend la pièce à 110 $.
Résultat : le bot empoche 10 $ sans effort, tandis que vous recevez moins d’actifs que vous n’auriez pu en obtenir.
Le mythe des « L2 sécurisés »
On entend souvent dire qu’il n’y a pas de MEV sur les L2, car ils utilisent un mécanisme FIFS (First-In-First-Out) via un séquenceur centralisé. En réalité, ce n’est pas si simple :
- Jeux de latence : Les bots se livrent à une course de vitesse pour envoyer leurs transactions (celui qui est le plus proche du serveur du séquenceur prend l’avantage) afin de s’insérer avant vous.
- Shared Sequencers : À l’avenir, les séquenceurs pourraient devenir décentralisés, réintroduisant les enchères classiques pour l’espace dans les blocs.
- Base et Optimism : Ces réseaux reposent sur l’architecture OP Stack, où des opportunités d’extraction de valeur via le réordonnancement des transactions existent toujours.
Outils pratiques de protection
1. Utiliser MEV-Share et des nœuds RPC privés
La solution la plus simple et la plus efficace pour les particuliers consiste à remplacer le RPC par défaut de MetaMask par un RPC protégé. Au lieu d’être diffusée dans le mempool public, votre transaction est envoyée directement aux validateurs.
- Flashbots Protect : Le standard historique du secteur.
- MEVBlocker : Une excellente alternative qui non seulement protège contre les attaques sandwich, mais peut aussi vous reverser une partie des profits qu’un searcher aurait captés.
- LlamaNodes : Propose des endpoints RPC rapides et confidentiels pour les principaux réseaux L2.
Comment configurer :
Allez dans les paramètres de MetaMask -> Réseaux -> Sélectionnez un réseau (par exemple Arbitrum) -> Remplacez l’URL RPC par https://rpc.mevblocker.io.
2. Les agrégateurs avec « mode privé »
Évitez d’utiliser directement les interfaces DEX pour des montants importants. Des agrégateurs comme 1inch ou CowSwap intègrent des mécanismes de protection.
- CowSwap (Coincidence of Wants) : Il s’agit du protocole anti-MEV numéro un. Vos ordres ne sont pas immédiatement publiés on-chain. Ils sont collectés off-chain puis appariés avec d’autres ordres. En l’absence de correspondance directe, des « solvers » professionnels les exécutent sur des DEX avec protection contre le slippage.
- 1inch Fusion : Utilise des enchères hollandaises. Le prix diminue progressivement jusqu’à ce qu’un market maker professionnel remplisse l’ordre. Dans ce modèle, une attaque sandwich est techniquement impossible.
Le réglage du slippage — un art subtil
La plupart des utilisateurs laissent l’« Auto-Slippage » activé (généralement 0,5 % – 1,0 %). Pour un swap important, c’est presque une invitation ouverte à une attaque.
Astuce peu connue :
Si vous échangez des stablecoins (USDC contre USDT) dans des pools très liquides (Curve, Uniswap V3), réglez le slippage entre 0,01 % et 0,05 %. Si vous échangez un actif volatil, ajustez le slippage de manière à ce que le profit potentiel du bot, après paiement des frais réseau (gas), devienne négatif.
Exemple de logique en Solidity (pour illustrer la condition) :
// Exemple de vérification du slippage dans un smart contract uint256 minAmountOut = expectedAmount * (10000 - slippageBps) / 10000; require(receivedAmount >= minAmountOut, "Slippage too high: Sandwich detected");
Si minAmountOut est fixé trop bas, vous laissez une marge exploitable par un bot.
Détails moins connus : le MEV entre L2 et L1
Lors d’un retrait de fonds de L2 vers L1 via des bridges officiels (notamment avec les Optimistic Rollups), il existe un risque dit de « Finality MEV ». Durant la fenêtre de contestation de 7 jours, des manipulations sont théoriquement possibles si le montant est très élevé. Pour les particuliers, le risque reste limité, mais lors de swaps via des bridges cross-chain (Hop, Stargate), vérifiez toujours le Destination Slippage — un paramètre souvent négligé qui peut vous exposer côté réception.
Checklist pour un swap sécurisé :
- Montant > 5 000 $ ? Évitez l’interface directe d’Uniswap. Passez par CowSwap.
- Vérifiez votre RPC : Utilisez-vous MEVBlocker ou Flashbots Protect ?
- Fractionnez l’ordre : Si la liquidité est faible, divisez le swap en 3 ou 4 parties espacées de 10 à 15 minutes. Cela rend l’attaque économiquement moins intéressante à cause des frais de gas.
- Évitez les pics de volatilité : Lors des listings de nouveaux tokens ou des mouvements brusques du BTC, les bots fonctionnent en « mode turbo ». Attendre cinq minutes peut vous faire économiser des centaines de dollars.
Stratégies avancées et « pièges » de l’architecture L2
Si la base (RPC et agrégateurs) protège contre 80 % des attaques, les 20 % restants concernent des vulnérabilités spécifiques aux chaînes L2 et aux ponts.
3. Menace cachée : MEV cross-chain
Lorsque vous transférez une grosse somme d’Arbitrum vers Optimism via un pont (comme Stargate ou Hop), vous faites face à un double risque. Un bot peut voir votre transaction sortante sur un réseau et « tendre une embuscade » à la liquidité sur le réseau cible.
Conseil pratique :
Lors de l’utilisation de ponts, définissez toujours le paramètre Deadline (expiration de la transaction) au minimum (par exemple 5 à 10 minutes). Si la transaction reste « bloquée » dans le mempool du réseau cible à cause d’un pic de gaz, un bot peut manipuler le prix du pool du pont avant que votre transfert ne soit confirmé.
4. Anatomie d’un « sandwich » sur Uniswap V3 (L2)
Sur des réseaux comme Arbitrum, la liquidité sur Uniswap V3 est très concentrée. C’est une arme à double tranchant.
- Avantage : Moins de slippage pour les transactions honnêtes.
- Inconvénient : Il est plus facile pour un bot de « pousser » le prix jusqu’au tick suivant pour exécuter votre ordre à un prix moins favorable.
Fait méconnu : Sur L2, les bots utilisent souvent la Just-In-Time (JIT) Liquidity. Ce n’est pas exactement un sandwich, mais c’est une forme de MEV. Le bot ajoute une grande liquidité juste avant votre swap et l’enlève immédiatement après. Vous obtenez l’exécution, mais le bot récupère presque tous les frais qui auraient dû revenir aux fournisseurs de liquidité classiques. Pour les utilisateurs retail, l’impact est moindre, mais cela dégrade l’écosystème à long terme.
5. Code de détection : Comment savoir si vous avez été « sandwiché » ?
Si vous avez effectué une transaction et sentez que vous avez reçu une somme suspectement faible, vérifiez les blocs dans l’explorateur (Arbiscan/Optimistic Etherscan). Recherchez un motif de 3 transactions dans le même bloc :
- Swap (du Bot A -> B)
- Swap (le vôtre de A -> B)
- Swap (du Bot B -> A)
Pour automatiser la vérification de vos anciennes transactions, vous pouvez utiliser un script Python simple (web3.py) qui recherche des correspondances suspectes de sender et amount autour de votre transaction.
# Pseudocode pour détecter un sandwich
def check_sandwich(block_number, my_tx_index):
block = w3.eth.get_block(block_number, full_transactions=True)
my_tx = block.transactions[my_tx_index]
# Chercher une transaction AVANT la vôtre avec la même paire
front_run = block.transactions[my_tx_index - 1]
# Chercher une transaction APRÈS la vôtre du même expéditeur que front_run
back_run = block.transactions[my_tx_index + 1]
if front_run.from == back_run.from:
print(f"Attention ! Probable attaque de l’adresse : {front_run.from}")
6. Spécificités des réseaux
Arbitrum : FCFS et « course aux armements »
Arbitrum utilise le principe First-Come, First-Served. Il n’y a pas de mempool public au sens habituel (les transactions vont directement au séquenceur). Cependant, les gros market makers gardent des nœuds au plus proche du séquenceur pour voir le flux entrant.
- Protection : Utilisez Arbitrum Nova pour les transactions très petites et fréquentes, ou des RPC spécialisés qui retardent la diffusion pour protection.
Base (Coinbase L2)
Comme Base est construite sur l’OP Stack, elle hérite de nombreuses propriétés d’Optimism. Mais la concentration de retail est élevée, attirant les « prédateurs ».
- Astuce : Les sandwichs apparaissent souvent sur les meme coins sur Base. Si vous tradez un token avec taxe de vente (Tax tokens), la protection standard des agrégateurs peut échouer. Dans ces cas, CowSwap est la seule solution fiable.
7. Stratégie finale du « Retail Professionnel »
Si vous traitez des montants de 1 000 $ à 50 000 $ sur L2 :
- Ne cliquez jamais sur "Swap" sur le premier DEX que vous voyez. Utilisez des méta-agrégateurs (LlamaSwap, Matcha) qui comparent les routes et montrent les frais cachés.
- Utilisez les "Limit Orders". Un ordre limite offre une protection à 100 % contre les sandwichs. Votre transaction sera exécutée à votre prix (ou mieux) ou pas du tout.
- Surveillez le "Gas Price". Pendant les périodes de gaz coûteux sur L1, les bots deviennent plus agressifs car ils ont besoin d’une récompense plus élevée pour rentabiliser.
Bonus méconnu : architecture « basée sur les intentions »
L’avenir de la protection repose sur les Intents. Vous n’envoyez pas une transaction « achète-moi 1 ETH pour 2500 USDC ». Vous signez un message : « Je veux obtenir au moins 1 ETH et peu m’importe comment ». Les exécutants professionnels (Solvers) se disputent pour réaliser votre intention de la manière la plus avantageuse. Cela élimine complètement le risque qu’un bot vous vole.
Essayez : UniswapX ou CowSwap — ce sont des systèmes basés sur les intentions disponibles dès aujourd’hui.