Pressione ESC para fechar

Crie um Bot Anti-MEV Stealth Swap: Guia Flashbots & Node.js

No blog da EXMON Academy, já soltamos um artigo sobre como os bots de MEV passam o rodo nos usuários comuns na "floresta escura" do mempool. Hoje, vamos sair da teoria e colocar a mão na massa para construir a base da nossa própria ferramenta. O objetivo aqui é aprender a enviar transações contornando o mempool público, direto para os validadores.

1. O Conceito de Bundles: Por que é mais seguro?

Normalmente, quando você envia uma transação, ela cai no mempool — que é basicamente uma sala de espera pública. Lá, todo mundo consegue ver: desde nós comuns até os robôs predadores de MEV. Eles analisam sua transação e, se virem que dá lucro (como num swap grande), mandam um "ataque sanduíche" antes de você.

O Flashbots oferece um caminho alternativo: os Bundles (Pacotes). São conjuntos de uma ou mais transações enviados diretamente aos validadores através de um servidor de relay privado.

As principais vantagens dos bundles:

  • Invisibilidade: Sua transação não aparece no mempool. O mundo só fica sabendo dela quando ela já está minerada no bloco. Os bots não têm tempo de reação.
  • Atomicidade: É tudo ou nada. Ou todas as transações do pacote são executadas, ou nenhuma. Isso elimina o risco de sua troca passar parcialmente ou em condições ruins.
  • Sem taxa por falha: Se o bundle não entrar no bloco (por exemplo, porque o preço do gás estava baixo), você não paga taxa por transação revertida (Revert).

 

2. Preparando a Infraestrutura

Para o negócio rodar, vamos precisar de duas coisas: acesso a um nó (node) de Ethereum e duas chaves privadas.

Por que duas chaves?

  • SENDER_PRIVATE_KEY: Sua carteira principal, onde estão os fundos para o swap e o ETH para pagar o gás.
  • FLASHBOTS_AUTH_KEY: Essa é a sua "chave de identidade". Ela deve ser de uma carteira nova, totalmente vazia. O Flashbots usa isso para criar sua "reputação" como enviador. Se você ficar floodando bundles ruins, essa chave vai para a blacklist, mas seu dinheiro na conta principal continua seguro.

Configurando o Ambiente

Crie um arquivo .env na raiz do projeto:

ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/SUA_CHAVE_API
SENDER_PRIVATE_KEY=sua_chave_principal
FLASHBOTS_AUTH_KEY=sua_chave_vazia_de_reputacao

 

3. Inicializando o Stealth Provider

Vamos usar TypeScript, Ethers.js v6 e a biblioteca oficial do Flashbots SDK.

Instale as dependências: npm install ethers @flashbots/ethers-provider-bundle dotenv

Abaixo está o código para inicializar nossa ferramenta:

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

async function initStealthProvider() {
    // 1. Conecta em um nó padrão (Alchemy/Infura)
    const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);

    // 2. Inicializa as carteiras
    const wallet = new ethers.Wallet(process.env.SENDER_PRIVATE_KEY!, provider);
    const authSigner = new ethers.Wallet(process.env.FLASHBOTS_AUTH_KEY!, provider);

    // 3. Cria o provedor Flashbots
    // Esse é o nosso túnel privado direto com os validadores
    const flashbotsProvider = await FlashbotsBundleProvider.create(
        provider, 
        authSigner,
        "https://relay.flashbots.net", // Endereço do relay da mainnet
        "mainnet"
    );

    return { wallet, flashbotsProvider, provider };
}

async function main() {
    try {
        const { wallet, flashbotsProvider } = await initStealthProvider();
        console.log("--- Infraestrutura Stealth Pronta ---");
        console.log(`Carteira Principal: ${wallet.address}`);
        console.log(`Relay: https://relay.flashbots.net`);
    } catch (error) {
        console.error("Erro na inicialização:", error);
    }
}

main();

 

O que conseguimos com isso?

Nesta etapa, construímos um "canal de comunicação seguro". Não estamos apenas conectando ao blockchain, estamos nos autenticando na rede do Flashbots.

Dica importante: O Flashbots funciona como um leilão. Para seu bundle ser escolhido por um validador, ele precisa ser mais lucrativo que os outros. Na próxima parte, vamos aprender a calcular as taxas do jeito certo e montar a transação de swap via Uniswap V3 que nenhum bot vai conseguir detectar.

No próximo artigo: Montando o Bundle, simulando a transação e aprendendo a pular a verificação de saldo.

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....

Deixe seu parecer

O seu endereço de e-mail não será publicado. Campos obrigatórios estão marcados *