Sniper Bot Watcher: Schutz des Market-Making-Kapitals vor Front-Running-Ausnutzungen

Market Making erfordert ein Gleichgewicht zwischen der Bereitstellung von Liquidität und dem Schutz des Kapitals. Der ADAMANT mm Bot ermöglicht es Token-Anbietern und Börsen, dynamische Liquidität und Handelsvolumen auf kontrollierte, automatisierte Weise zu erzeugen. Doch während sich Märkte weiterentwickeln, tun dies auch die Gegner.
Issue #93 führte eine wichtige defensive Verbesserung ein: den Sniper Bot Watcher. Damit wird eine strukturelle Schwachstelle behoben, die nahezu alle automatisierten Market-Making-Strategien betrifft – die Ausnutzung durch extrem schnelle externe Bots.
Die Schwachstelle des automatisierten Market Makings
Market-Making-Bots erzeugen häufig Volumen und halten Spreads aufrecht, indem sie Aufträge auf beiden Seiten des Orderbuchs platzieren. Ein gängiger Mechanismus ist das interne Matching: Der Bot platziert einen Maker-Auftrag innerhalb des Spreads und kurz danach einen entsprechenden Taker-Auftrag, um diesen zu füllen. Dadurch entsteht legitime Handelsaktivität, während das Inventar ausgeglichen bleibt.
Das Problem liegt in der unvermeidbaren Verzögerung zwischen diesen beiden Schritten. Selbst wenn sie extrem gering ist, existiert sie – und in modernen elektronischen Märkten reichen Millisekunden aus. Externe Hochgeschwindigkeits-Bots überwachen das Orderbuch in Echtzeit und reagieren sofort, sobald neue Liquidität erscheint. Sobald der Market-Making-Bot seinen Maker-Auftrag veröffentlicht, nehmen diese Bots ihn wahr, bevor der interne Matching-Auftrag eingeht.
Es ergeben sich zwei Hauptmuster der Ausnutzung. Im ersten Fall nimmt ein Dritter den Kaufauftrag sofort an, wodurch der nachfolgende Verkaufsauftrag unvollständig oder gar nicht ausgeführt wird und der Bot USDT verliert. Im zweiten Fall platziert ein Dritter einen höheren Kaufauftrag direkt über dem des Bots, sodass der Verkaufsauftrag des Bots stattdessen mit dem Dritten matched – der Bot verliert TOKEN. Das Ergebnis sind keine gelegentlichen Verluste, sondern strukturelle Ausbeutung.
Warum traditionelle Abwehrmaßnahmen unzureichend sind
Es mag den Anschein haben, als ließe sich die Verzögerung eliminieren oder die Ausführungszeit anpassen. In der Praxis ist dies jedoch unmöglich. Börsen-APIs weisen Latenz auf, Netzwerkkommunikation benötigt Zeit, und selbst die schnellste Infrastruktur kann keine atomare Auftragsplatzierung und -ausführung über externe Systeme hinweg garantieren. Größere Verzögerungen erleichtern die Ausnutzung; kürzere helfen, beseitigen die Lücke aber niemals vollständig. Die Zufallsverteilung der Ausführungszeiten erhöht die Unvorhersehbarkeit, doch Sniper-Bots passen sich an und analysieren Muster über die Zeit.
Erforderlich ist nicht schnellere Ausführung, sondern intelligente Erkennung und Reaktion.
Einführung des Sniper Bot Watchers
Der Sniper Bot Watcher ist eine in den ADAMANT mm Bot integrierte Erkennungs- und Minderungsschicht. Seine Aufgabe besteht nicht darin, den Handel zu verhindern, sondern Verhaltensmuster zu überwachen und zu erkennen, wann externe Bots das System ausnutzen. Bei Erkennung verdächtiger Aktivitäten kann der Bot defensiv reagieren, indem er sein Ausführungsverhalten anpasst, Handelsstrategien pausiert, die Logik der Auftragsplatzierung verändert oder defensive Modi aktiviert, die darauf abzielen, das Risiko zu verringern.
Der folgende Code zeigt die Erkennung von Sniper-Bot-Aktivitäten:
} 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
});
}
Wenn die Anzahl der Eingriffe einen Schwellenwert überschreitet, wechselt der Bot in den Safe-Modus:
/**
* 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();
}
}
Warum dies für Token-Projekte wichtig ist
Market Making ist für Token-Ökosysteme unverzichtbar. Werden jedoch systematisch Kapitalreserven durch Sniper-Bots abgeschöpft, entstehen für Projekte versteckte Kosten. Liquidität wird teurer, Budgets schmelzen schneller dahin und die Effektivität des Market Makings nimmt ab. Mit der Einführung des Sniper Bot Watchers sorgt der ADAMANT mm Bot dafür, dass Market-Making-Ressourcen ihrem eigentlichen Zweck dienen – dem Aufbau von Märkten, nicht der Versorgung von Ausnutzern.