Sur le blog de l'Académie EXMON, on vous a déjà expliqué comment les bots MEV dépouillent les utilisateurs lambda dans la « forêt obscure » du mempool. Aujourd'hui, on passe à la pratique et on pose les bases de notre propre outil. L'objectif : apprendre à envoyer des transactions en court-circuitant le mempool public pour taper directement chez les validateurs.
1. Le concept de Bundles : Pourquoi est-ce safe ?
D'habitude, quand vous envoyez une transaction, elle atterrit dans le mempool — une sorte de salle d'attente publique. Là, tout le monde peut la voir : des nœuds classiques jusqu'aux bots MEV les plus voraces. Ces derniers l'analysent et, s'ils flairent un profit (comme sur un gros swap), ils déclenchent une « sandwich attack ».
Flashbots propose une alternative : les Bundles (Lots). Ce sont des paquets contenant une ou plusieurs transactions, envoyés directement aux validateurs via un serveur relais privé.
Les gros avantages des bundles :
- Invisibilité : Votre transaction n'apparaît jamais dans le mempool. Le réseau ne la découvre qu'une fois qu'elle est déjà scellée dans un bloc. Les bots n'ont tout simplement pas le temps de réagir.
- Atomicité : C'est tout ou rien. Soit toutes les transactions du lot sont exécutées, soit aucune. Ça élimine le risque que votre trade passe partiellement ou dans des conditions éclatées.
- Zéro frais en cas d'échec : Si le bundle n'est pas retenu dans le bloc (par exemple si le prix du gas est trop bas), vous ne payez aucun frais de transaction échouée (Revert).
2. Préparation de l'infrastructure
Pour que ça tourne, on a besoin de deux choses : un accès à un nœud Ethereum et deux clés privées.
Pourquoi deux clés ?
- SENDER_PRIVATE_KEY : C'est votre wallet principal, celui qui détient les fonds pour le swap et l'ETH pour payer le gas.
- FLASHBOTS_AUTH_KEY : C'est votre « clé d'identité ». Elle doit appartenir à un nouveau wallet totalement vide. Flashbots l'utilise pour construire votre « réputation » d'expéditeur. Si vous spammez avec des bundles foireux, cette clé sera blacklistée, mais vos fonds sur le wallet principal resteront en sécurité.
Config de l'environnement
Créez un fichier .env à la racine de votre projet :
ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/VOTRE_CLE_API
SENDER_PRIVATE_KEY=votre_cle_principale
FLASHBOTS_AUTH_KEY=votre_cle_vide_de_reputation
3. Initialisation du Stealth Provider
On va bosser avec TypeScript, Ethers.js v6 et le SDK officiel de Flashbots.
Installez les dépendances : npm install ethers @flashbots/ethers-provider-bundle dotenv
Voici le code pour initialiser notre outil :
import { ethers } from "ethers";
import { FlashbotsBundleProvider } from "@flashbots/ethers-provider-bundle";
import * as dotenv from "dotenv";
dotenv.config();
async function initStealthProvider() {
// 1. Connexion à un nœud standard (Alchemy/Infura)
const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);
// 2. Initialisation des wallets
const wallet = new ethers.Wallet(process.env.SENDER_PRIVATE_KEY!, provider);
const authSigner = new ethers.Wallet(process.env.FLASHBOTS_AUTH_KEY!, provider);
// 3. Création du provider Flashbots
// C'est notre tunnel privé vers les validateurs
const flashbotsProvider = await FlashbotsBundleProvider.create(
provider,
authSigner,
"https://relay.flashbots.net", // Adresse du relais mainnet
"mainnet"
);
return { wallet, flashbotsProvider, provider };
}
async function main() {
try {
const { wallet, flashbotsProvider } = await initStealthProvider();
console.log("--- Stealth Infrastructure Ready ---");
console.log(`Wallet Principal : ${wallet.address}`);
console.log(`Relais : https://relay.flashbots.net`);
} catch (error) {
console.error("Erreur d'initialisation :", error);
}
}
main();
Qu'est-ce qu'on a obtenu ?
À ce stade, on a mis en place une « ligne sécurisée ». On ne se contente pas de crier sur la blockchain ; on s'identifie proprement sur le réseau Flashbots.
Point crucial : Flashbots fonctionne comme une enchère. Pour que votre bundle soit choisi par un validateur, il doit être plus rentable que les autres. Dans la prochaine partie, on va apprendre à calculer les frais correctement et on va forger la transaction de swap via Uniswap V3, celle qu'aucun bot-scanner ne pourra détecter.
Dans le prochain article : On forge le Bundle, on simule la transaction et on apprend à contourner la vérification de solde.