Sniper Bot Watcher: Protegiendo el Capital de Market Making de Explotaciones por Front-Running

El market making requiere un equilibrio entre proporcionar liquidez y proteger el capital. El bot ADAMANT mm permite a emisores de tokens y exchanges crear liquidez dinámica y volumen de trading de forma controlada y automatizada. Sin embargo, a medida que evolucionan los mercados, también lo hacen los adversarios.
Issue #93 introdujo una mejora defensiva clave: el Sniper Bot Watcher. Esto aborda una vulnerabilidad estructural que afecta a casi todas las estrategias automatizadas de market making: la explotación por bots externos ultrarrápidos.
La debilidad del market making automatizado
Los bots de market making a menudo generan volumen y mantienen spreads colocando órdenes en ambos lados del libro. Un mecanismo común es la coincidencia interna: el bot coloca una orden maker dentro del spread y poco después coloca una orden taker correspondiente para completarla, creando actividad comercial legítima mientras se mantiene el equilibrio del inventario.
El problema radica en el retraso inevitable entre estos dos pasos. Aunque sea extremadamente pequeño, existe, y en los mercados electrónicos modernos los milisegundos son suficientes. Los bots externos de alta velocidad monitorean los libros de órdenes en tiempo real y reaccionan instantáneamente cuando aparece nueva liquidez. En cuanto el bot de market making publica su orden maker, estos bots la interceptan antes de que llegue la orden interna de coincidencia.
Surgen dos patrones principales de explotación. En el primero, una tercera parte toma inmediatamente la orden de Compra, dejando la orden de Venta subsiguiente sin llenar o parcialmente llenada, y el bot pierde USDT. En el segundo, una tercera parte coloca una orden de Compra más alta justo por encima de la orden del bot, por lo que la orden de Venta del bot se empareja con la tercera parte, y el bot pierde TOKEN. El resultado no son pérdidas ocasionales, sino una explotación estructural.
Por qué las defensas tradicionales son insuficientes
Podría parecer posible eliminar el retraso o ajustar el momento de ejecución. En la práctica, esto es imposible. Las APIs de exchanges tienen latencia, la comunicación de red lleva tiempo, e incluso la infraestructura más rápida no puede garantizar la colocación y ejecución atómica de órdenes en sistemas externos. Aumentar los retrasos facilita la explotación; reducirlos ayuda, pero nunca elimina por completo la brecha. Aleatorizar el momento de ejecución introduce imprevisibilidad, pero los bots sniper son adaptables y analizan patrones con el tiempo.
Lo que se necesita no es una ejecución más rápida, sino una detección y respuesta inteligentes.
Presentación del Sniper Bot Watcher
El Sniper Bot Watcher es una capa de detección y mitigación integrada en el bot ADAMANT mm. Su función no es evitar el trading, sino monitorear patrones de comportamiento e identificar cuándo bots externos están explotando el sistema. Cuando se detecta actividad sospechosa, el bot puede reaccionar defensivamente ajustando su comportamiento de ejecución, pausando estrategias de trading, modificando la lógica de colocación de órdenes o activando modos defensivos diseñados para reducir la exposición.
El siguiente código muestra la detección de actividad de bots sniper:
} else if (order1Status === 'filled' && order2Status === 'filled') {
log.info('Trader: Both maker and taker executeInSpread t-orders are self-filled.');
order.update({
coin1AmountFilled: coin1Amount,
coin2AmountFilled: coin2Amount,
isExecuted: true,
});
} else if (order1Status === 'filled' && ['new', 'part_filled'].includes(order2Status)) {
// Scenario1: After maker order is placed in spread, a third party bot quickly takes it, and the taker order remains unfilled or partially filled
sniperBotActivity(1, order2Details, coin1Amount);
await addFillsDbRecord(order2Details, order, false); // Maker order is partially or fully filled by a sniper bot
order.update({
coin1AmountFilled: order2Details.amountExecuted, // Self-filled amount, excluding sniper bot fills
coin2AmountFilled: order2Details.volumeExecuted,
isExecuted: false, // Not fully executed
});
}
Cuando el número de intervenciones supera un umbral, el bot entra en modo Seguro:
/**
* Records a sniper-bot intervention for a given scenario.
* Triggers safe mode when the total interventions reach the threshold.
* @param {number} scenario Scenario index: 1 or 2
* @param {OrderInfoResult} orderDetails Exchange order details (e.g., order2Details), for logging only
* @param {number} coin1Amount Order amount in base coin, for logging only
* @returns {void}
*/
function sniperBotActivity(scenario, orderDetails, coin1Amount) {
sbwActivityCounters[scenario]++;
const fillPercent = (orderDetails.amountExecuted / coin1Amount * 100).toFixed(2);
log.warn(`Trader: While the maker t-order is filled, the taker is ${orderDetails.status} (${fillPercent}% self-filled). This may be Scenario ${scenario} of third-party bot intervention; incrementing the counters to ${sbwActivityTotalString()} (Safe mode threshold: ${sbwEnabled ? safeModeThreshold : 'Disabled'}).`);
if (sbwEnabled && sbwActivityTotal() >= safeModeThreshold) {
sniperBotSafeMode();
resetSniperBotCounters();
}
}
Por qué esto es importante para los proyectos de tokens
El market making es esencial para los ecosistemas de tokens, pero si el capital se drena sistemáticamente por bots sniper, los proyectos enfrentan costos ocultos. La liquidez se vuelve costosa, los presupuestos se agotan más rápido y la eficacia del market making disminuye. Al introducir el Sniper Bot Watcher, el bot ADAMANT mm ayuda a garantizar que los recursos de market making cumplan su propósito previsto: construir mercados, no alimentar a los explotadores.