Presiona ESC para cerrar

Crea un bot Anti-MEV Stealth Swap: Guía Flashbots y Node.js

En el blog de EXMON Academy ya hemos hablado sobre cómo los bots de MEV despluman a los usuarios comunes en el "bosque oscuro" del mempool. Hoy pasamos a la acción y vamos a construir los cimientos de nuestra propia herramienta. El objetivo es claro: aprender a enviar transacciones saltándonos el mempool público, directamente a los validadores.

1. El concepto de Bundles: ¿Por qué es más seguro?

Normalmente, cuando envías una transacción, esta cae en el mempool, que es básicamente una sala de espera pública. Allí todo el mundo puede verla: desde nodos normales hasta los depredadores bots de MEV. Estos últimos la analizan y, si ven que hay beneficio (como en un swap grande), te lanzan un "sandwich attack" antes de que te des cuenta.

Flashbots ofrece una alternativa: los Bundles (Paquetes). Son paquetes de una o varias transacciones que se envían directamente a los validadores a través de un servidor relay privado.

Las ventajas clave de los bundles:

  • Invisibilidad: Tu transacción nunca aparece en el mempool. El mundo solo se entera de ella cuando ya está incluida en un bloque. Los bots no tienen tiempo de reacción.
  • Atomicidad: Es todo o nada. O se ejecutan todas las transacciones del paquete, o no se ejecuta ninguna. Esto elimina el riesgo de que tu trade pase a medias o en condiciones pésimas.
  • Sin costes por fallo: Si el bundle no entra en el bloque (por ejemplo, porque el precio del gas era muy bajo), no pagas comisión por transacción fallida (Revert).

 

2. Preparación de la infraestructura

Para que esto rule, necesitamos dos cosas: acceso a un nodo de Ethereum y dos claves privadas.

¿Para qué queremos dos claves?

  • SENDER_PRIVATE_KEY: Tu wallet principal, donde tienes la pasta para el swap y el ETH para pagar el gas.
  • FLASHBOTS_AUTH_KEY: Esta es tu "llave de identidad". Debe ser de un wallet nuevo y totalmente vacío. Flashbots la usa para crearte una "reputación" como emisor. Si te lías a mandar bundles basura, esta clave irá a la lista negra, pero tus fondos en el wallet principal estarán a salvo.

Configuración del entorno

Crea un archivo .env en la raíz de tu proyecto:

ETH_RPC_URL=https://eth-mainnet.g.alchemy.com/v2/TU_API_KEY
SENDER_PRIVATE_KEY=tu_clave_principal
FLASHBOTS_AUTH_KEY=tu_clave_vacia_de_reputacion

 

3. Inicialización del Stealth Provider

Vamos a usar TypeScript, Ethers.js v6 y la librería oficial de Flashbots SDK.

Instala las dependencias: npm install ethers @flashbots/ethers-provider-bundle dotenv

Aquí tienes el código para arrancar nuestra herramienta:

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

async function initStealthProvider() {
    // 1. Conexión a un nodo estándar (Alchemy/Infura)
    const provider = new ethers.JsonRpcProvider(process.env.ETH_RPC_URL);

    // 2. Inicializamos los wallets
    const wallet = new ethers.Wallet(process.env.SENDER_PRIVATE_KEY!, provider);
    const authSigner = new ethers.Wallet(process.env.FLASHBOTS_AUTH_KEY!, provider);

    // 3. Creamos el provider de Flashbots
    // Este es nuestro túnel privado directo a los validadores
    const flashbotsProvider = await FlashbotsBundleProvider.create(
        provider, 
        authSigner,
        "https://relay.flashbots.net", // Dirección del relay de la mainnet
        "mainnet"
    );

    return { wallet, flashbotsProvider, provider };
}

async function main() {
    try {
        const { wallet, flashbotsProvider } = await initStealthProvider();
        console.log("--- Infraestructura Stealth Lista ---");
        console.log(`Wallet Principal: ${wallet.address}`);
        console.log(`Relay: https://relay.flashbots.net`);
    } catch (error) {
        console.error("Error de inicialización:", error);
    }
}

main();

 

¿Qué hemos conseguido?

En este punto ya hemos montado una "línea segura de comunicación". No estamos simplemente conectándonos a la blockchain; nos estamos identificando en la red de Flashbots.

Ojo al dato: Flashbots funciona como una subasta. Para que un validador elija tu bundle, este tiene que ser más rentable que los de la competencia. En la siguiente parte aprenderemos a calcular las comisiones correctamente y montaremos el swap en Uniswap V3 que ningún bot-escáner podrá detectar.

En el próximo artículo: Cómo montar el Bundle, simular la transacción y saltarse la comprobación 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....

Escribe una opinión

Tu correo electrónico no será publicado. Los campos obligatorios están marcados *