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.