EXMON Academy blogunda, MEV botlarının mempool’un o meşhur "karanlık ormanında" normal kullanıcıları nasıl soyup soğana çevirdiğini daha önce anlatmıştık. Bugün işin teorisini bir kenara bırakıp pratiğe geçiyoruz ve kendi aracımızın temellerini atıyoruz. Hedefimiz net: İşlemlerimizi halka açık mempool’a hiç düşürmeden, doğrudan doğrulayıcılara (validator) göndermeyi öğrenmek.
1. Bundle Kavramı: Neden Daha Güvenli?
Normalde bir işlemi gönderdiğinizde, o işlem önce mempool denilen halka açık bir bekleme salonuna düşer. Orada sıradan düğümlerden (node) yırtıcı MEV botlarına kadar herkes işleminizi görebilir. Bu botlar işleminizi analiz eder ve eğer ucunda kar varsa (örneğin yüklü bir swap işlemi), size "sandwich atağı" çekerler.
Flashbots ise bize alternatif bir yol sunuyor: Bundles (Paketler). Bunlar, özel bir relay sunucusu aracılığıyla doğrudan doğrulayıcılara iletilen bir veya birden fazla işlemden oluşan paketlerdir.
Bundle kullanmanın başlıca avantajları:
- Görünmezlik: İşleminiz mempool’da asla görünmez. Dünya bu işlemden ancak o bir bloğa dahil edildikten sonra haberdar olur. Botların tepki verecek vakti kalmaz.
- Atomik Yapı: Paketteki işlemler ya hep beraber gerçekleşir ya da hiçbiri gerçekleşmez. Bu da işleminizin kısmen gerçekleşmesi veya kötü şartlarda onaylanması riskini ortadan kaldırır.
- Başarısızlık Durumunda Ücret Yok: Eğer paketiniz bloğa girmezse (örneğin gaz fiyatı düşük kaldığı için), başarısız olan işlem (Revert) için boşuna komisyon ödemezsiniz.
2. Altyapının Hazırlanması
İşe koyulmak için iki şeye ihtiyacımız var: Bir Ethereum node erişimi ve iki adet özel anahtar (private key).
Neden iki anahtar?
- SENDER_PRIVATE_KEY: Bu sizin ana cüzdanınızdır; içinde swap yapacağınız fonlar ve gaz ücreti için gereken ETH durur.
- FLASHBOTS_AUTH_KEY: Bu sizin "kimlik kartınız" gibidir. Tamamen yeni ve içi boş bir cüzdana ait olmalıdır. Flashbots bunu, gönderici olarak "itibarınızı" (reputation) oluşturmak için kullanır. Eğer sürekli "çöp" paketler gönderirseniz bu anahtar kara listeye alınır ama ana cüzdanınızdaki paralar güvende kalır.
Ortam Kurulumu
Projenizin ana dizininde bir .env dosyası oluşturun:
ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/SİZİN_API_ANAHTARINIZ
SENDER_PRIVATE_KEY=ana_cüzdan_anahtarınız
FLASHBOTS_AUTH_KEY=boş_itibar_anahtarınız
3. Stealth-Provider Kurulumu
Bu projede TypeScript, Ethers.js v6 ve resmi Flashbots SDK kütüphanesini kullanacağız.
Bağımlılıkları yükleyin: npm install ethers @flashbots/ethers-provider-bundle dotenv
İşte aracımızı başlatan kod bloğu:
import { ethers } from "ethers";
import { FlashbotsBundleProvider } from "@flashbots/ethers-provider-bundle";
import * as dotenv from "dotenv";
dotenv.config();
async function initStealthProvider() {
// 1. Standart bir node'a bağlanıyoruz (Alchemy/Infura)
const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);
// 2. Cüzdanları hazırlıyoruz
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'ını oluşturuyoruz
// Bu, doğrulayıcılara giden bizim özel tünelimizdir
const flashbotsProvider = await FlashbotsBundleProvider.create(
provider,
authSigner,
"https://relay.flashbots.net", // Mainnet relay adresi
"mainnet"
);
return { wallet, flashbotsProvider, provider };
}
async function main() {
try {
const { wallet, flashbotsProvider } = await initStealthProvider();
console.log("--- Gizli Altyapı Hazır ---");
console.log(`Ana Cüzdan: ${wallet.address}`);
console.log(`Relay: https://relay.flashbots.net`);
} catch (error) {
console.error("Kurulum hatası:", error);
}
}
main();
Ne Elde Ettik?
Bu aşamada "güvenli bir iletişim hattı" kurmuş olduk. Blockchain'e sadece bağlanmıyoruz, Flashbots ağı üzerinde kimliğimizi doğruluyoruz.
Önemli Not: Flashbots aslında bir açık artırmadır. Paketinizin bir doğrulayıcı tarafından seçilmesi için diğerlerinden daha karlı olması gerekir. Bir sonraki bölümde komisyonları doğru hesaplamayı öğreneceğiz ve hiçbir botun radarına yakalanmayacak Uniswap V3 swap işlemini oluşturacağız.
Gelecek yazıda: Bundle oluşturma, işlem simülasyonu ve bakiye kontrolünü atlatma.