Saltar al contenido
Lecciones de Finanzas

MEV y ordenación de transacciones

Ataques sándwich

El ataque MEV insignia de las DeFi: adelantarse al swap de una víctima para mover el precio en su contra, dejar que ejecute al peor precio y luego cerrar por detrás para embolsarse la diferencia. La matemática exacta de producto constante de la pérdida de la víctima y el beneficio del atacante.

10 min Actualizado 5 jun 2026

Ya habéis visto qué es el MEV y cómo la subasta de flujo de órdenes decide quién se sienta dónde dentro de un bloque. Ahora conoced el ataque que puso al MEV en el mapa: el que grava a los traders DeFi corrientes miles de veces al día, de forma mecánica y con precisión quirúrgica. Se llama sándwich, y una vez que hayáis visto la matemática de producto constante, nunca más miraréis un swap pendiente de la misma manera.

Todo se sostiene sobre un único hecho que ya conocéis: un swap en un creador de mercado automatizado (AMM) mueve el precio. El pool se asienta sobre la curva xy=kx \cdot y = k, y cada operación lo desplaza a lo largo de esa curva. El truco entero del atacante consiste en mover el precio antes que tú, para que ejecutes en un punto peor, y luego moverlo de vuelta después de ti, embolsándose la diferencia. Tu pérdida es, casi al céntimo, su ganancia.

Antes de leer — arriésgate a adivinar

¿Qué es un ataque sándwich, en una sola frase?

La anatomía: comprar, dejar que ejecuten, vender, en un solo bloque

Analogía. Imaginad a un revendedor de entradas de conciertos plantado junto a la taquilla. En el instante en que os ve a vosotros acercaros a la cola, corre a la ventanilla, compra todos los asientos de primera fila y observa cómo sube el precio según desaparecen las buenas localidades. Llegáis a la ventanilla, encontráis solo los asientos ahora más caros y los compráis a regañadientes. En cuanto vuestro dinero se confirma, el revendedor da media vuelta y revende su acopio a la demanda que él mismo acaba de fabricar. Nunca iba a ir al concierto. Iba a por vosotros.

Definición. Un ataque sándwich es una estrategia MEV de tres transacciones ejecutada dentro de un mismo bloque, en este orden exacto:

  1. Adelanto (front-run) — el atacante, al ver el swap pendiente de la víctima, compra el mismo activo primero, empujando el precio spot al alza.
  2. Swap de la víctima — la transacción de la víctima ahora se ejecuta contra el pool empeorado y recibe menos tokens de los que habría recibido sin interferencias.
  3. Cierre por detrás (back-run) — el atacante vende inmediatamente exactamente lo que compró, hacia el precio que la propia operación de la víctima acaba de sostener. La diferencia, menos comisiones, es el beneficio.

La parte de “en un solo bloque, en ese orden” es innegociable. El atacante paga por ese ordenamiento —mediante comisiones de prioridad o una puja directa al constructor de bloques—, que es precisamente la maquinaria de subasta MEV de las lecciones anteriores. Un sándwich no es más que una preferencia de ordenamiento con un afán de lucro pegado.

Warning:

La víctima no es una ballena a la que apuntan personalmente

Una idea errónea común: “los sándwiches solo golpean operaciones enormes y descuidadas”. Falso. Los bots rastrean la mempool pública en busca de cualquier swap cuyo tamaño y tolerancia al deslizamiento dejen margen para el beneficio: una rutinaria compra de tokens de $2.000 es presa legítima. Ni es personal ni es raro; es un impuesto automatizado sobre el flujo de órdenes visible. La defensa no es ser pequeño, es ser impredecible (flujo de órdenes privado) o no dejar margen (tolerancia al deslizamiento ajustada).

Por qué funciona: una orden de mercado mueve el precio, la tolerancia al deslizamiento te hace ejecutable

Analogía. La tolerancia al deslizamiento es el espacio en blanco que dejas en un cheque firmado. Ponla al 0,5% y le has dicho al pool: “ejecútame siempre que me quede dentro del 0,5% de la cotización; si no, rómpelo”. Ponla al 20% y has firmado un cheque con un enorme espacio en blanco, e invitas a cualquiera que mire a rellenar una cifra hasta el límite. El atacante lee ese límite directamente de tu transacción y empuja el precio justo hasta el borde.

Aquí está la cadena de causa y efecto:

  • Un swap en un AMM es una orden de mercado: recorre la curva xy=kx \cdot y = k, y las órdenes más grandes la recorren más lejos, así que el precio medio al que ejecutas empeora cuanto más compras. (Es exactamente la curva de impacto de precio de las lecciones de AMM.)
  • La compra de adelanto del atacante mueve el pool curva arriba primero, de modo que cuando tu swap aterriza, parte de un precio spot peor que el que viste al firmar.
  • Tu transacción aun así se ejecuta, gracias a tu tolerancia al deslizamiento. Autorizaste una ejecución en cualquier punto hasta spot × (1 − tolerancia). La tarea del atacante es empujar el precio lo más cerca posible de ese suelo sin cruzarlo.

Así que la tolerancia al deslizamiento es todo el juego:

  • Tolerancia demasiado alta → un sándwich gordo. Has autorizado un gran movimiento de precio, así que el atacante puede adelantarse de forma agresiva y aun así dejar tu operación ejecutable. Más margen = más beneficio extraíble.
  • Tolerancia demasiado baja → el ataque fracasa. Si el adelanto del atacante empuja el precio más allá de tu suelo, tu swap revierte (no puede ejecutar dentro de la tolerancia), el atacante se queda con tokens sin víctima a quien vender, y se come la pérdida. Una operación que revierte no paga ningún sándwich.

La curva de abajo es la relación de impacto de precio que el atacante explota. Fijaos en cómo una tolerancia al deslizamiento ajustada (la barrera discontinua) cancela operaciones que ejecutarían demasiado lejos de la cotización: esa misma barrera es lo que te protege de un sándwich.

El impacto de precio es la palanca que acciona el atacante9.09%
0%9%18%26%35%Tolerancia al deslizamiento 0.5%0%Tamaño de la operación (parte del pool)50%Impacto de precio

Profundidad del pool

Precio spot
$2,000.00
Precio medio de ejecución
$1,818.18
Impacto de precio
9.09%
Recibes
$18,181.82
Mínimo recibido
$19,900.00
Tolerancia al deslizamiento
0.5%

Supera la tolerancia al deslizamiento: la operación revertiría

Un swap recorre la curva x·y=k, así que el precio medio de ejecución empeora según crece la operación: ese es el impacto de precio que un sándwich fabrica al ir primero. La línea discontinua es tu tolerancia al deslizamiento: bájala y la operación revierte en lugar de ejecutar lejos de la cotización, que es exactamente lo que deja al atacante sin sándwich.

Detecta la trampa. Un trader fija una tolerancia al deslizamiento del 15% en un swap de tokens para 'asegurarse de que pasa'. ¿Por qué es peligroso?

La matemática exacta, desarrollada

Calculemos un sándwich real sobre un pool limpio, sin comisiones, para que cada cifra sea rastreable. Esto coincide exactamente con los valores por defecto del widget interactivo de abajo.

Planteamiento. Un pool de producto constante contiene x=100x = 100 ETH e y=200,000y = 200{,}000 USDC, así que el invariante es

k=xy=100×200,000=2×107.k = x \cdot y = 100 \times 200{,}000 = 2 \times 10^{7}.

El precio spot inicial es y/x=200,000/100=2000y / x = 200{,}000 / 100 = 2000 USDC por ETH. La víctima quiere gastar $20.000 comprando ETH. El atacante también se adelanta con $20.000.

Las dos fórmulas que necesitamos (comprar ETH con USDC, y luego revender ETH por USDC), ambas directas de xy=kx \cdot y = k:

  • Comprar ETH: paga Δy\Delta y USDC al pool; recibes Δx=xky+Δy\Delta x = x - \dfrac{k}{y + \Delta y} ETH.
  • Vender ETH: mete Δx\Delta x ETH en el pool; recibes Δy=ykx+Δx\Delta y = y - \dfrac{k}{x + \Delta x} USDC.

Línea base — la víctima sola, sin atacante. Los $20.000 de la víctima impactan en el pool intacto:

Δx=1002×107200,000+20,000=1002×107220,000=10090.9091=9.0909 ETH.\Delta x = 100 - \frac{2 \times 10^7}{200{,}000 + 20{,}000} = 100 - \frac{2 \times 10^7}{220{,}000} = 100 - 90.9091 = 9.0909 \text{ ETH}.

Así que sin ataque la víctima obtiene 9.0909 ETH. Retened ese número.

Paso 1 — Adelanto. El atacante compra primero con $20.000, contra el mismo pool intacto. La aritmética es idéntica a la línea base, así que el atacante recibe 9.09099.0909 ETH. El pool queda ahora en

x1=1009.0909=90.9091 ETH,y1=200,000+20,000=220,000 USDC.x_1 = 100 - 9.0909 = 90.9091 \text{ ETH}, \qquad y_1 = 200{,}000 + 20{,}000 = 220{,}000 \text{ USDC}.

Nuevo precio spot: y1/x1=220,000/90.9091=2420y_1 / x_1 = 220{,}000 / 90.9091 = 2420 USDC/ETH. El precio saltó de $2000 a $2420 antes de que la operación de la víctima siquiera se ejecute.

Paso 2 — Swap de la víctima. Ahora los $20.000 de la víctima impactan en el pool empeorado (x1,y1)(x_1, y_1):

Δx=90.90912×107220,000+20,000=90.90912×107240,000=90.909183.3333=7.5758 ETH.\Delta x = 90.9091 - \frac{2 \times 10^7}{220{,}000 + 20{,}000} = 90.9091 - \frac{2 \times 10^7}{240{,}000} = 90.9091 - 83.3333 = 7.5758 \text{ ETH}.

La víctima obtiene solo 7.5758 ETH — frente a 9.0909 sin interferencias. El pool se mueve a

x2=90.90917.5758=83.3333 ETH,y2=240,000 USDC,x_2 = 90.9091 - 7.5758 = 83.3333 \text{ ETH}, \qquad y_2 = 240{,}000 \text{ USDC},

así que el precio spot es ahora 240,000/83.3333=2880240{,}000 / 83.3333 = 2880 USDC/ETH.

Paso 3 — Cierre por detrás. El atacante revende exactamente los 9.09099.0909 ETH que compró, hacia el pool (x2,y2)(x_2, y_2):

Δy=240,0002×10783.3333+9.0909=240,0002×10792.4242=240,000216,393=23,607 USDC.\Delta y = 240{,}000 - \frac{2 \times 10^7}{83.3333 + 9.0909} = 240{,}000 - \frac{2 \times 10^7}{92.4242} = 240{,}000 - 216{,}393 = 23{,}607 \text{ USDC}.

El atacante gastó $20.000 y recibió $23.607, para un beneficio de ≈ $3.606. El cierre por detrás baja el precio a aproximadamente 217,393/92.42422341217{,}393 / 92.4242 \approx 2341 USDC/ETH — fijaos en que no vuelve a $2000, porque la compra de la víctima desplazó las reservas de forma permanente.

Aquí está toda la secuencia como un libro mayor de estados del pool y precios:

PasoReservas xx (ETH)Reservas yy (USDC)Precio spot (USDC/ETH)Quién ejecuta, y cuánto
Inicio100.0000200,000$2.000
Tras el adelanto90.9091220,000$2.420El atacante compra 9.0909 ETH
Tras la víctima83.3333240,000$2.880La víctima compra solo 7.5758 ETH
Tras el cierre92.4242≈217,393≈$2.341El atacante vende 9.0909 ETH por ≈$23.607

El remate. La víctima perdió 9.09097.5758=1.51529.0909 - 7.5758 = \textbf{1.5152} ETH por el sándwich (que valen unos $3.030 al precio inicial de $2000). El atacante se marchó con ≈ $3.606. Los dos números no son idénticos —las comisiones, la asimetría de la curva y el cierre por detrás vendiendo hacia un precio que el propio cierre del atacante deprime hacen que el beneficio del atacante y la pérdida de la víctima no cuadren exactamente—, pero la pérdida de la víctima es la fuente de la ganancia del atacante. Se transfirió riqueza, no se creó.

Ataque sándwich sobre un AMM$3,606.56
  1. Adelanto

    El atacante compra primero, empujando el precio al alza.

  2. Swap de la víctima

    La víctima compra ahora al peor precio.

  3. Cierre por detrás

    El atacante revende, embolsándose la diferencia.

$2,000Inicio$2,000Tras el adelanto$2,420Tras la víctima$2,880Tras el cierre$2,341Precio spot

Precio spot a lo largo del sándwich

La víctima obtiene (sin ataque)
9.0909 ETH
La víctima obtiene (con sándwich)
7.5758 ETH
La víctima pierde
1.5152 ETH$3,030.30
Beneficio del atacante
$3,606.56

Los valores por defecto aquí son exactamente el ejemplo desarrollado: un pool de 100 ETH / 200.000 USDC, un swap de víctima de $20.000 y un adelanto de $20.000. Observa cómo el precio recorre $2000 → $2420 → $2880 → $2341 según aterrizan las tres operaciones. La víctima obtiene 9.0909 ETH sola pero solo 7.5758 ETH con sándwich (una pérdida de 1.5152 ETH), mientras que el atacante embolsa unos $3.606. Arrastra los deslizadores: una operación de víctima más pequeña o un adelanto más pequeño encogen el mordisco.

Usando el pool desarrollado (100 ETH / 200.000 USDC, k = 2×10⁷), la víctima obtendría 9.0909 ETH sin sándwich pero solo 7.5758 ETH tras el adelanto. ¿Cuál es la pérdida de la víctima?

Completa la mecánica de producto constante del sándwich.

Pick the right option for each blank, then check.

Un swap recorre el pool a lo largo de . El adelanto del atacante el precio spot antes de que la víctima ejecute, así que la víctima recibe tokens. El ataque solo prospera porque la de la víctima autoriza una ejecución al precio empeorado; ajústala lo suficiente y la operación de la víctima , dejando al atacante sin nada.

La optimización del atacante: hay un tamaño de adelanto de Ricitos de Oro

El atacante no elige un tamaño de adelanto cualquiera: hay uno óptimo, y ambos extremos dejan dinero sobre la mesa.

Analogía. Pensad en escurrir una esponja para sacar el agua. Apretad demasiado suave y el agua se queda atrapada (beneficio dejado sobre la mesa). Apretad con todo el peso de vuestro cuerpo y habréis gastado más esfuerzo del que valen las últimas gotas, y podríais aplastar la esponja por completo (la operación de la víctima revierte). Hay un apretón intermedio óptimo que extrae lo máximo.

Los compromisos:

  • Adelanto demasiado pequeño → apenas mueves el precio, la víctima ejecuta casi tan bien como lo habría hecho, y el hueco que puedes cosechar en el cierre por detrás es minúsculo. Beneficio dejado sobre la mesa.
  • Adelanto demasiado grande → se acumulan dos problemas. Primero, has comprado muchísimo ETH a precios progresivamente peores, y cuando cierras por detrás estás vendiendo hacia un precio que tu propio cierre deprime (una venta grande recorre la curva de vuelta hacia abajo), así que tu salida media es pobre. Segundo, y peor, si tu adelanto empuja el precio spot más allá del suelo de deslizamiento de la víctima, la operación de la víctima revierte — y ahora te quedas con un gran inventario de ETH y ninguna víctima a quien vender, posiblemente con pérdidas.

Así que el adelanto óptimo está acotado por arriba por la tolerancia al deslizamiento de la víctima: empujas el precio tan lejos como puedas sin disparar la reversión, y ni un paso más. El óptimo exacto tiene una solución en forma cerrada en términos de las reservas y el tamaño de la víctima, pero lo que importa aquí es la intuición: el apretón que maximiza el beneficio se sitúa justo en el borde de lo que la víctima autorizó. Sube el deslizador del atacante en el widget de arriba más allá de cierto punto y verás cómo el beneficio del atacante cae, no sube: ese es el sobre-apretón.

Causa y efecto: un atacante sigue aumentando el tamaño de su adelanto sobre una operación de víctima fija. Más allá del punto óptimo, ¿qué le ocurre al beneficio del atacante, y por qué?

Adelanto de las defensas: deja al sándwich sin comida

No tienes por qué ser el almuerzo. Cada defensa ataca uno de los dos ingredientes que un sándwich necesita: la visibilidad de tu swap pendiente, o el margen en tu tolerancia al deslizamiento. Daremos a cada una un tratamiento completo en la lección de mitigaciones, pero aquí está el mapa:

  • Tolerancia al deslizamiento más ajustada. No le dejes margen al atacante. Una tolerancia del 0,1-0,5% en un par líquido significa que el adelanto no puede mover el precio mucho antes de que tu operación revierta — así que no hay sándwich rentable que hacer. El coste: la volatilidad legítima también puede revertir tu operación.
  • Operaciones más pequeñas / divididas. Una orden grande es un objetivo grande y jugoso con mucho impacto de precio que cosechar. Dividirla en piezas más pequeñas (o enrutar a través de pools más profundos) encoge el impacto por ejecución y el beneficio disponible.
  • Flujo de órdenes privado / RPC con protección MEV. Si el atacante no puede ver tu swap pendiente, no puede adelantarse a él. Enviar transacciones a través de un relé privado o un RPC protegido contra MEV las mantiene fuera de la mempool pública hasta que ya están en un bloque.
  • Routers conscientes del MEV. Los routers modernos dividen órdenes entre pools, fijan tolerancias por defecto sensatas y pueden enrutar a través de flujo de órdenes privado automáticamente — agrupando varias de las anteriores en un solo clic.

Visión de conjunto

Ataques sándwich — el mecanismo completo

  • Ataque sándwich
    • Anatomía (un bloque)
      • 1. Compra de adelanto → precio arriba
      • 2. La víctima ejecuta a peor precio
      • 3. Venta de cierre → embolsar el hueco
    • Por qué funciona
      • El swap AMM recorre x·y=k → impacto de precio
      • El adelanto empeora el spot de la víctima
      • La tolerancia al deslizamiento hace ejecutable a la víctima
    • La matemática (desarrollada)
      • Pool 100 ETH / 200k USDC, k=2×10⁷
      • Precio $2000 → $2420 → $2880 → $2341
      • La víctima pierde 1.5152 ETH
      • Beneficio del atacante ≈ $3.606
    • Optimización del atacante
      • El beneficio tiene forma de joroba en el tamaño del adelanto
      • Demasiado grande → mala salida + riesgo de reversión
      • Acotado por el suelo de deslizamiento de la víctima
    • Defensas (adelanto)
      • Tolerancia al deslizamiento más ajustada
      • Operaciones más pequeñas / divididas
      • Flujo de órdenes privado / RPC con protección MEV
      • Routers conscientes del MEV
Dos transacciones envuelven a la víctima, explotando el impacto de precio y la tolerancia al deslizamiento; las defensas eliminan o bien la visibilidad o bien el margen que el ataque necesita.

Repaso: ataques sándwich

Pregunta 1 de 50 correctas

Ordena las tres transacciones de un sándwich según se ejecutan dentro del bloque.

Comprueba tu respuesta para continuar.

Ya entendéis la cara más notoria del MEV — el sándwich depredador, desarrollado hasta el último decimal de xy=kx \cdot y = k. Pero no todo el MEV es robo. A continuación, arbitraje y liquidaciones — el lado benigno del ordenamiento, donde el mismo juego de velocidad y secuencia mantiene los precios consistentes entre plataformas y limpia la deuda incobrable de los protocolos de préstamo. La misma mecánica, una ética muy distinta.

Marcar lección como completada