Di blog Akademi EXMON, kita sudah pernah bahas gimana cara bot MEV "merampok" user biasa di "hutan belantara" alias mempool. Hari ini, kita langsung gas ke prakteknya buat bangun pondasi tool kita sendiri. Goal-nya simpel: kita mau belajar cara ngirim transaksi tanpa lewat mempool publik, tapi langsung tembak ke validator.
1. Konsep Bundles: Kenapa Jauh Lebih Aman?
Biasanya, pas kamu kirim transaksi, transaksi itu bakal mampir dulu di mempool — semacam ruang tunggu publik. Di sana, semua orang bisa lihat: mulai dari node biasa sampai bot MEV yang haus mangsa. Mereka bakal analisa transaksi kamu, dan kalau dirasa cuan (misalnya swap dalam jumlah gede), mereka bakal hajar pakai "sandwich attack".
Flashbots nawarin jalan ninja — Bundles (Bundel). Ini adalah paket berisi satu atau beberapa transaksi yang dikirim langsung ke validator lewat server relay privat.
Keunggulan utama pakai bundle:
- Mode Senyap (Invis): Transaksi kamu nggak bakal nongol di mempool. Orang baru tau ada transaksi itu pas sudah masuk ke dalam blok. Bot nggak bakal punya waktu buat bereaksi.
- Atomisitas: Pilihannya cuma dua: semua transaksi di dalam paket berhasil, atau nggak ada yang jalan sama sekali. Ini ngilangin risiko trade kamu cuma jalan setengah atau kena harga ampas.
- Gratis Kalau Gagal: Kalau bundle kamu nggak masuk ke blok (misalnya karena harga gas kerendahan), kamu nggak perlu bayar fee buat transaksi yang gagal (Revert).
2. Persiapan Infrastruktur
Buat eksekusi, kita butuh dua hal: akses ke node Ethereum dan dua private key.
Kenapa harus dua key?
- SENDER_PRIVATE_KEY: Ini wallet utama kamu, yang isinya saldo buat swap dan bayar gas fee.
- FLASHBOTS_AUTH_KEY: Ini semacam "KTP identitas". Harus pakai wallet baru yang bener-bener kosong. Flashbots pakai ini buat ngebangun "reputasi" kamu sebagai pengirim. Kalau kamu nyampah pakai bundle busuk, key ini bakal di-blacklist, tapi aset di wallet utama kamu tetep aman sentosa.
Setup Environment
Bikin file .env di root folder project kamu:
ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
SENDER_PRIVATE_KEY=key_utama_kamu
FLASHBOTS_AUTH_KEY=key_kosong_buat_reputasi
3. Inisialisasi Stealth Provider
Kita bakal pakai TypeScript, Ethers.js v6, dan library resmi Flashbots SDK.
Install dulu dependensi-nya: npm install ethers @flashbots/ethers-provider-bundle dotenv
Ini dia kode buat inisialisasi tool kita:
import { ethers } from "ethers";
import { FlashbotsBundleProvider } from "@flashbots/ethers-provider-bundle";
import * as dotenv from "dotenv";
dotenv.config();
async function initStealthProvider() {
// 1. Konek ke node standar (Alchemy/Infura)
const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);
// 2. Setup wallet
const wallet = new ethers.Wallet(process.env.SENDER_PRIVATE_KEY!, provider);
const authSigner = new ethers.Wallet(process.env.FLASHBOTS_AUTH_KEY!, provider);
// 3. Bikin Flashbots provider
// Ini adalah jalur privat kita langsung ke validator
const flashbotsProvider = await FlashbotsBundleProvider.create(
provider,
authSigner,
"https://relay.flashbots.net", // Alamat relay mainnet
"mainnet"
);
return { wallet, flashbotsProvider, provider };
}
async function main() {
try {
const { wallet, flashbotsProvider } = await initStealthProvider();
console.log("--- Stealth Infrastructure Ready ---");
console.log(`Wallet Utama: ${wallet.address}`);
console.log(`Relay: https://relay.flashbots.net`);
} catch (error) {
console.error("Gagal inisialisasi:", error);
}
}
main();
Hasilnya Apa?
Di tahap ini, kita sudah berhasil ngebangun "jalur komunikasi rahasia". Kita nggak cuma sekadar konek ke blockchain, tapi kita sudah terverifikasi di jaringan Flashbots.
Catatan penting: Flashbots itu sistemnya lelang. Biar bundle kamu dipilih validator, tawaran kamu harus lebih cuan dibanding yang lain. Di part berikutnya, kita bakal belajar cara ngitung fee dengan bener dan bikin transaksi swap lewat Uniswap V3 yang nggak bakal bisa diendus sama bot scanner manapun.
Artikel selanjutnya: Ngeracik Bundle, simulasi transaksi, dan trik bypass pengecekan saldo.