# Front-Running et MEV — Comment les Bots Exploitent Vos Transactions
Le MEV (Maximal Extractable Value) représente ~500M$ extraits depuis 2020. Voici comment ça fonctionne.
Qu'est-ce que le Front-Running ?
Sur Ethereum, votre transaction attend dans la mempool avant d'être incluse dans un bloc. Les bots la scannent et peuvent :
Exemple : Attack Sandwich
Vous voulez acheter 10 ETH de TOKEN sur Uniswap. Un bot détecte votre transaction :
// Votre transaction (pending)
swapExactETHForTokens(10 ETH, minOut: 1000 TOKEN, ...)
Le bot construit un "sandwich" :
Transaction 1 (gas price +1 gwei) :
// Le bot achète AVANT vous
swapExactETHForTokens(50 ETH, ...)
→ Prix de TOKEN monte à 1.05×
Transaction 2 (votre tx) :
// Vous achetez au prix gonflé
→ Vous payez 5% de plus
Transaction 3 (gas price normal) :
// Le bot revend immédiatement
swapExactTokensForETH(...)
→ Profit : ~4.8% de votre trade
Types de MEV
1. Arbitrage DEX
// TOKEN vaut 100 USDC sur Uniswap
// TOKEN vaut 102 USDC sur SushiSwap
flashLoan(1M USDC);
buyOnUniswap();
sellOnSushiSwap();
repayFlashLoan();
// Profit : 20K USDC en une transaction
2. Liquidations
Sur Aave/Compound, les bots surveillent les positions sous-collatéralisées :
// Position de Alice : 100 ETH collateral, 80K USDC borrowed
// ETH tombe de 2000$ à 1900$
// Health factor < 1.0 → liquidatable
function liquidate(address user, uint256 debtToCover) external {
// Le bot emprunte via flashloan
// Rembourse la dette de Alice
// Récupère son collateral avec 5% de bonus
// Profit : ~4K$ instantané
}
3. NFT Sniping
// Quelqu'un liste un BAYC à 10 ETH (valeur : 50 ETH)
// Les bots front-run l'achat légitime
Comment Se Protéger ?
1. Utilisez Flashbots Protect
Envoie votre transaction directement aux validators, bypasse la mempool publique :
// Via ethers.js
const flashbotsProvider = await FlashbotsBundleProvider.create(
provider,
flashbotsSigner
)
await flashbotsProvider.sendPrivateTransaction({
transaction: signedTx,
maxBlockNumber: currentBlock + 5
})
2. Implémentez des Deadline Courts
function swap(..., uint256 deadline) external {
require(block.timestamp <= deadline, "Expired");
// Si pas minée en 30s, la tx revert
}
3. Utilisez un Slippage Intelligent
// ❌ Mauvais : 5% slippage fixe
swapExactETHForTokens(..., minOut: 950, ...)
// ✅ Bon : slippage basé sur la volatilité récente
uint256 minOut = getOraclePrice() * 0.995;
4. Batch Vos Transactions
// Utilisez Multicall pour atomiser plusieurs actions
multicall([
approveToken(...),
swapOnDEX(...),
stakeTokens(...)
]);
// Un bot ne peut pas s'insérer entre les étapes
MEV en Proof-of-Stake
Avec The Merge, le MEV n'a pas disparu :
- PBS (Proposer-Builder Separation) : validators externalisent la construction de blocs
- Block builders : compétition pour maximiser les tips
- ~90% des blocs passent par des builders MEV-optimisés
Le Bon Côté du MEV
Le MEV n'est pas que malveillant :
- Arbitrage → équilibre les prix entre DEX
- Liquidations → maintient la solvabilité des protocoles
- Backrunning → optimise l'ordre des transactions (sans nuire aux utilisateurs)
Outils
- MEV-Inspect : analyse historique
- MEV-Boost : marketplace MEV pour validators
- Eigenphi : dashboards MEV en temps réel
Ressource Ultime
Flashbots Research — la référence académique sur le MEV.
Le MEV est une propriété émergente des blockchains publiques. Vous ne pouvez pas l'éliminer, mais vous pouvez vous protéger.