cryptofoundry

联系 cryptofoundry

告诉我们您想构建或自动化的内容。

文章

狙击机器人监视器:保护做市资本免受抢跑攻击

狙击机器人监视器:保护做市资本免受抢跑攻击

做市需要在提供流动性和保护资本之间取得平衡。ADAMANT mm 机器人使代币发行方和交易所能够以受控、自动化的方式创建动态流动性和交易量。然而,随着市场的发展,攻击者也在不断进化。

问题 #93 引入了一项关键的防御性升级:狙击机器人监视器(Sniper Bot Watcher)。该功能解决了几乎影响所有自动化做市策略的结构性漏洞——被超高速外部机器人利用。

自动化做市的弱点

做市机器人通常通过在订单簿两侧挂单来生成交易量并维持价差。一种常见机制是内部撮合:机器人在价差内挂出挂单(maker order),稍后挂出相应的吃单(taker order)来成交,从而在保持库存平衡的同时产生合法交易活动。

问题在于这两个步骤之间不可避免地存在延迟。即使延迟极短,它依然存在,而在现代电子市场中,毫秒级时间已足够。外部高速机器人实时监控订单簿,一旦出现新流动性便立即响应。当做市机器人发布其挂单后,这些机器人会在其内部撮合订单到达前抢先截取。

由此产生两种主要的攻击模式。第一种,第三方立即吃掉买入订单,导致随后的卖出订单无法成交或部分成交,机器人因此损失 USDT。第二种,第三方在机器人订单上方挂出更高的买入单,导致机器人的卖出单与其成交,机器人因此损失 TOKEN。其结果不是偶发性亏损,而是系统性剥削。

为何传统防御手段不足

表面上看,似乎可以通过消除延迟或调整执行时机来解决问题。但实际上这是不可能的。交易所 API 存在延迟,网络通信需要时间,即使最快的基础设施也无法保证在外部系统中实现订单提交与执行的原子性。增加延迟会使攻击更容易;减少延迟虽有帮助,但无法完全消除时间差。随机化执行时间可引入不确定性,但狙击机器人具有适应性,会随时间分析并学习模式。

真正需要的不是更快的执行,而是智能的检测与响应机制。

狙击机器人监视器的引入

狙击机器人监视器是集成在 ADAMANT mm 机器人中的检测与缓解层。它的目的不是阻止交易,而是监控行为模式,识别外部机器人是否正在利用系统。当检测到可疑活动时,机器人可通过调整执行行为、暂停交易策略、修改挂单逻辑或启动防御模式来减少暴露风险。

以下代码展示了狙击机器人活动的检测逻辑:

} 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
  });
}

当干预次数超过阈值时,机器人将进入安全模式:

/**
 * 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();
  }
}

对代币项目的意义

做市对代币生态系统至关重要,但如果资本被狙击机器人系统性地抽走,项目将面临隐性成本。流动性变得昂贵,预算消耗加快,做市效果下降。通过引入狙击机器人监视器,ADAMANT mm 机器人有助于确保做市资源用于其本来目的——建设市场,而非喂养攻击者。