Нажмите ESC, чтобы закрыть

Пишем Anti-MEV Stealth Swap бота: Гайд по Flashbots и Node.js

В блоге Академии EXMON мы уже публиковали статью о том, как MEV-боты грабят обычных пользователей в «темном лесу» мемпула. Сегодня мы переходим к практике и закладываем фундамент нашего инструмента. Наша цель - научиться отправлять транзакции в обход публичного мемпула напрямую валидаторам.

1. Концепция Bundles: Почему это безопасно?

Обычно ваша транзакция после отправки попадает в mempool — публичный лист ожидания. Там её видят все: от обычных узлов до хищных MEV-ботов. Последние анализируют её и, если она сулит выгоду (например, крупный свап), проводят «сэндвич-атаку».

Flashbots предлагает альтернативный путь — Bundles (Бандлы). Это пакеты из одной или нескольких транзакций, которые передаются напрямую валидаторам через приватный реле-сервер.

Ключевые преимущества бандлов:

  • Невидимость: Транзакция не появляется в мемпуле. О ней узнают только тогда, когда она уже включена в блок. У ботов нет времени на реакцию.
  • Атомарность: Либо выполняются все транзакции в пакете, либо ни одной. Это исключает риск того, что ваша сделка пройдет частично или в невыгодных условиях.
  • Отсутствие платы за неудачу: Если бандл не включен в блок (например, из-за низкой цены газа), вы не платите комиссию за неудачную транзакцию (Revert).

 

2. Подготовка инфраструктуры

Для работы нам понадобятся две вещи: доступ к Ethereum-ноде и два приватных ключа.

Зачем два ключа?

  • SENDER_PRIVATE_KEY: Ваш основной кошелек, на котором лежат средства для обмена и оплаты газа.
  • FLASHBOTS_AUTH_KEY: Это «ключ идентификации». Он должен принадлежать новому, абсолютно пустому кошельку. Flashbots использует его для создания вашей «репутации» как отправителя. Если вы будете спамить плохими бандлами, этот ключ попадет в черный список, но ваши деньги на основном кошельке останутся в безопасности.

Настройка окружения

Создайте файл .env в корне проекта:

ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/YOUR_API_KEY
SENDER_PRIVATE_KEY=ваш_основной_ключ
FLASHBOTS_AUTH_KEY=ваш_пустой_ключ_репутации

 

3. Инициализация Stealth-провайдера

Мы будем использовать TypeScript, Ethers.js v6 и официальную библиотеку Flashbots SDK.

Установите зависимости: npm install ethers @flashbots/ethers-provider-bundle dotenv

Ниже представлен код инициализации нашего инструмента:

import { ethers } from "ethers";
import { FlashbotsBundleProvider } from "@flashbots/ethers-provider-bundle";
import * as dotenv from "dotenv";

dotenv.config();

async function initStealthProvider() {
    // 1. Подключаемся к стандартной ноде (Alchemy/Infura)
    const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);

    // 2. Инициализируем кошельки
    const wallet = new ethers.Wallet(process.env.SENDER_PRIVATE_KEY!, provider);
    const authSigner = new ethers.Wallet(process.env.FLASHBOTS_AUTH_KEY!, provider);

    // 3. Создаем Flashbots-провайдер
    // Это наш приватный туннель к валидаторам
    const flashbotsProvider = await FlashbotsBundleProvider.create(
        provider, 
        authSigner,
        "https://relay.flashbots.net", // Адрес реле основной сети
        "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("Ошибка инициализации:", error);
    }
}

main();

 

Что мы получили?

На данном этапе мы построили «защищенный канал связи». Мы не просто подключаемся к блокчейну, мы авторизуемся в сети Flashbots.

Важный нюанс: Flashbots — это аукцион. Чтобы ваш бандл был выбран валидатором, он должен быть выгоднее других. В следующей части мы научимся правильно рассчитывать комиссии и сформируем саму транзакцию обмена (Swap) через Uniswap V3, которую не увидит ни один бот-сканер.

В следующей статье: Формируем Bundle, симулируем транзакцию и учимся обходить проверку баланса.

Sying Yu

I am a blockchain developer specializing in building secure, scalable, and innovative decentralized solutions. My expertise covers smart contracts, payment systems, and integrating crypto with fiat to optimize financial workflows. I thrive on creating modern, efficient tools for the evolving digital economy....

Поделитесь своим мнением

Ваш e-mail не будет опубликован. Обязательные поля отмечены *