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 , 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:
- 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.
- 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.
- 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.
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 , 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.
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 ETH e USDC, así que el invariante es
El precio spot inicial es 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 :
- Comprar ETH: paga USDC al pool; recibes ETH.
- Vender ETH: mete ETH en el pool; recibes USDC.
Línea base — la víctima sola, sin atacante. Los $20.000 de la víctima impactan en el pool intacto:
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 ETH. El pool queda ahora en
Nuevo precio spot: 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 :
La víctima obtiene solo 7.5758 ETH — frente a 9.0909 sin interferencias. El pool se mueve a
así que el precio spot es ahora USDC/ETH.
Paso 3 — Cierre por detrás. El atacante revende exactamente los ETH que compró, hacia el pool :
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 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:
| Paso | Reservas (ETH) | Reservas (USDC) | Precio spot (USDC/ETH) | Quién ejecuta, y cuánto |
|---|---|---|---|---|
| Inicio | 100.0000 | 200,000 | $2.000 | — |
| Tras el adelanto | 90.9091 | 220,000 | $2.420 | El atacante compra 9.0909 ETH |
| Tras la víctima | 83.3333 | 240,000 | $2.880 | La víctima compra solo 7.5758 ETH |
| Tras el cierre | 92.4242 | ≈217,393 | ≈$2.341 | El atacante vende 9.0909 ETH por ≈$23.607 |
El remate. La víctima perdió 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ó.
- Adelanto
El atacante compra primero, empujando el precio al alza.
- Swap de la víctima
La víctima compra ahora al peor precio.
- Cierre por detrás
El atacante revende, embolsándose la diferencia.
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
- Anatomía (un bloque)
Repaso: ataques sándwich
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 . 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.