Im EXMON Academy Blog haben wir bereits darüber berichtet, wie MEV-Bots normale Nutzer im „Dark Forest“ des Mempools abziehen. Heute machen wir Ernst und legen das Fundament für unser eigenes Tool. Unser Ziel: Wir lernen, wie man Transaktionen am öffentlichen Mempool vorbei direkt an die Validatoren schickt.
1. Das Konzept der Bundles: Warum ist das sicher?
Normalerweise landet deine Transaktion nach dem Absenden im Mempool – einer Art öffentlichem Warteraum. Dort kann sie jeder sehen: von normalen Nodes bis hin zu räuberischen MEV-Bots. Letztere analysieren deine Transaktion und führen, falls sie profitabel erscheint (z. B. bei einem großen Swap), eine „Sandwich-Attacke“ aus.
Flashbots bietet einen Ausweg: Bundles. Das sind Pakete aus einer oder mehreren Transaktionen, die über einen privaten Relay-Server direkt an die Validatoren gehen.
Die entscheidenden Vorteile von Bundles:
- Unsichtbarkeit: Die Transaktion taucht nie im Mempool auf. Die Außenwelt erfährt erst davon, wenn sie bereits in einem Block festgeschrieben ist. Bots haben keine Zeit zu reagieren.
- Atomizität: Entweder werden alle Transaktionen im Paket ausgeführt oder gar keine. Das verhindert das Risiko, dass dein Trade nur teilweise oder zu miesen Konditionen durchgeht.
- Keine Gebühren bei Fehlschlag: Wenn das Bundle nicht in den Block aufgenommen wird (z. B. weil der Gas-Preis zu niedrig war), zahlst du keine Gebühren für eine fehlgeschlagene Transaktion (Revert).
2. Vorbereitung der Infrastruktur
Damit das Ganze läuft, brauchen wir zwei Dinge: Zugang zu einer Ethereum-Node und zwei Private Keys.
Wozu zwei Keys?
- SENDER_PRIVATE_KEY: Das ist dein Haupt-Wallet, auf dem die Funds für den Swap und das ETH für die Gas-Gebühren liegen.
- FLASHBOTS_AUTH_KEY: Das ist dein „Identitäts-Key“. Er sollte zu einem komplett neuen, leeren Wallet gehören. Flashbots nutzt ihn, um deine „Reputation“ als Absender aufzubauen. Falls du schlechte Bundles spammst, landet dieser Key auf der Blacklist, aber dein Geld auf dem Haupt-Wallet bleibt sicher.
Umgebung einrichten
Erstelle eine .env Datei im Projektverzeichnis:
ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/DEIN_API_KEY
SENDER_PRIVATE_KEY=dein_haupt_key
FLASHBOTS_AUTH_KEY=dein_leerer_reputations_key
3. Initialisierung des Stealth-Providers
Wir nutzen TypeScript, Ethers.js v6 und das offizielle Flashbots SDK.
Abhängigkeiten installieren: npm install ethers @flashbots/ethers-provider-bundle dotenv
Hier ist der Code für die Initialisierung:
import { ethers } from "ethers";
import { FlashbotsBundleProvider } from "@flashbots/ethers-provider-bundle";
import * as dotenv from "dotenv";
dotenv.config();
async function initStealthProvider() {
// 1. Verbindung zur Standard-Node (Alchemy/Infura)
const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);
// 2. Wallets initialisieren
const wallet = new ethers.Wallet(process.env.SENDER_PRIVATE_KEY!, provider);
const authSigner = new ethers.Wallet(process.env.FLASHBOTS_AUTH_KEY!, provider);
// 3. Flashbots-Provider erstellen
// Das ist unser privater Tunnel zu den Validatoren
const flashbotsProvider = await FlashbotsBundleProvider.create(
provider,
authSigner,
"https://relay.flashbots.net", // Relay-Adresse für das Mainnet
"mainnet"
);
return { wallet, flashbotsProvider, provider };
}
async function main() {
try {
const { wallet, flashbotsProvider } = await initStealthProvider();
console.log("--- Stealth Infrastructure Ready ---");
console.log(`Main Wallet: ${wallet.address}`);
console.log(`Relay: https://relay.flashbots.net`);
} catch (error) {
console.error("Fehler bei der Initialisierung:", error);
}
}
main();
Was haben wir erreicht?
Wir haben jetzt eine „sichere Leitung“ stehen. Wir verbinden uns nicht einfach nur mit der Blockchain, sondern authentifizieren uns direkt im Flashbots-Netzwerk.
Wichtiger Punkt: Flashbots ist im Grunde eine Auktion. Damit dein Bundle von einem Validator gewählt wird, muss es profitabler sein als andere. Im nächsten Teil lernen wir, wie man die Gebühren richtig berechnet und bauen den eigentlichen Uniswap V3 Swap, den kein Bot-Scanner kommen sieht.
Im nächsten Artikel: Wir bauen das Bundle, simulieren die Transaktion und lernen, wie man den Balance-Check umgeht.