什么是三明治攻击?它的运行逻辑是怎样的?

在DeFi交易中,“被夹”(即​三明治攻击​)是一种通过操纵交易顺序和价格差来掠夺用户资产的MEV(最大可提取价值)攻击手段。其核心原理如下:


🔍 ​​三明治攻击的基本流程​

攻击者通过监控区块链内存池(Mempool)中的待处理交易,锁定目标用户的交易后,按以下步骤操作:

  1. ​前置交易(Front-Run)​
    攻击者以更高的Gas费抢先提交一笔交易,通过大额买入或卖出目标代币,​​人为改变流动性池中的价格​​。例如,用户计划用USDC兑换USDT时,攻击者会先买入大量USDT,导致USDT价格被抬高。

  2. ​夹击目标交易​
    用户交易在价格已被操纵后执行。由于流动性池的代币比例被前置交易破坏,用户实际兑换的金额​​显著低于预期​​(例如原本预期兑换5,271 USDT,实际仅获得3,378 USDT)
  3. ​后置交易(Back-Run)​
    攻击者立即以高价卖出前置交易中获得的代币,​​套取差价利润​​。例如,将此前低价买入的USDT以用户交易后的高价卖出,完成低买高卖的闭环

⚙️ ​​关键机制与条件​

  1. ​内存池透明性与Gas费竞争​
    区块链内存池的公开性允许攻击者实时监控交易,而Gas费机制使攻击者可通过支付更高费用抢占交易打包顺序
  2. ​流动性池的脆弱性​
    低流动性池更容易被攻击:

    • 攻击者只需少量资金即可显著改变代币价格(如抽空流动性池的USDC/USDT后重新注入)。
    • 大额交易会引发更大的价格滑点,为攻击者创造更大套利空间。
  3. ​滑点容忍度的利用​
    用户若设置较高的滑点容忍度(如5%),攻击者可利用价格波动扩大利润;若滑点过低,用户交易可能失败,但攻击者仍可能通过其他策略获利
  4. ​链特性的影响​
    • ​以太坊​​:依赖公开内存池,Gas费竞价机制使攻击成本较高。
    • ​Solana​​:验证节点集中化可能泄露交易数据,攻击者无需Gas竞价即可实现精准夹击。

💥 ​被夹的典型场景(以USDC-USDT兑换为例)​

  1. ​攻击者抽空流动性​
    攻击者通过闪电贷借入资金,将流动性池中的USDC全部换出,导致USDT价格虚高。
  2. ​用户交易执行​
    用户以虚高价格兑换USDT,实际获得金额大幅缩水(如220,764 USDC仅兑换5,271 USDT)。
  3. ​攻击者恢复流动性并套利​
    攻击者将USDT重新注入流动性池,并通过后置交易卖出获利,同时支付矿工高额Gas费以保障交易顺序。

🛡️ ​​防御措施​

  1. ​降低滑点容忍度​​:设置滑点≤0.5%,但需权衡交易成功率。
  2. ​使用隐私交易通道​​:通过MEV Blocker等工具隐藏交易,避免暴露在公共内存池。
  3. ​选择高流动性池​​:流动性越高,价格操纵成本越大。
  4. ​拆分大额交易​​:将单笔交易拆分为多笔小额操作,降低攻击吸引力。
© 版权声明

相关文章