仅供教育参考,不构成安全或投资建议。滑点控制与私有路由可降低夹击风险,但不能保证成交质量、纳入区块、最终性或追回损失。
直接答案
夹击攻击是一种有害的最大可提取价值行为:攻击者在用户兑换前紧接着放入一笔交易,并在其后再放入一笔。第一笔交易把资金池价格推向不利于用户的方向,用户以更差汇率成交,最后一笔交易则按部分由用户订单造成的价格平掉攻击者仓位。
攻击成立需要攻击者提前看到用户意图或拥有排序优势,订单须产生足够价格影响,而且用户的执行限制仍允许兑换成功。它最常见于自动做市商兑换,但更广泛的风险是:任何可预测的状态变化,只要排序能让他人提取价值,就可能受影响。
工作原理
用户签署并广播兑换。若详细信息在纳入区块前进入公开交易池或其他可观察订单流,搜索者便可解码资产、数量、路径、最低输出和截止时间,并模拟不同交易顺序。
对于 AMM 资金池中的买入,搜索者先行买入。该抢跑交易改变储备并提高用户的成交价格。只要结果仍满足用户的最低输出条件,用户随后会获得少于交易前报价的输出代币。搜索者再在用户之后卖出,通过尾随交易捕获部分价格变动。
总回款不等于利润。攻击者还须支付两次兑换费、Gas 或构建者费用,并承担失败尝试和库存风险。竞争、其他交易、用户兑换回滚或区块顺序变化都可能使整组交易亏损;夹击并非天然原子化,也不保证成功。
滑点保护限制的是可接受的最差输出,并不阻止排序。容忍度过宽会给不利成交留下更多空间,过紧则可能在波动中让正常兑换回滚。应用和集成合约应执行基于当前报价、经用户认可的最低输出和适当截止时间,不能使用零值或陈旧的硬编码值。
私有提交、受保护订单流、批量拍卖、基于意图的执行和拆单在某些系统中可降低暴露。保护效果取决于哪些中间方能看到订单、构建者覆盖、回退行为、流动性、费用和实现方式;“私有”或“MEV 保护”标签并非通用保证。
示例
用户提交一笔可见兑换,准备从 AMM 资金池用代币 A 买入代币 B。搜索者模拟后发现,订单足以推动资金池价格,而用户设置的最低输出也容许价格向不利方向变动后继续成交。
搜索者先买入代币 B,用户随后以恶化后的汇率买入,搜索者紧接着卖出代币 B。用户仍收到不低于签名时设定的最低数量,却少于之前的报价;搜索者只能保留扣除兑换费、排序费用和执行成本后的余额。
风险
用户受到的直接损害是成交更差、实际滑点更高。在会对失败执行收费的链和交易设计中,兑换回滚后还可能消耗 Gas。流动性薄弱、可见大单、宽松限制、市场波动和可预测路径会增加暴露,但不存在一个能证明攻击必然发生的单一阈值。
缓解措施也有取舍。拆成小单可能增加总费用或泄露重复策略;严格限制会增加回滚;私有路由带来信任、审查、日志和回退问题;受保护界面也可能只覆盖部分链或路径。应核验签名中的最低输出、截止时间、路径、端点政策、回执和所需最终性,而不能只相信保护标识。
常见误区
- 每次不利价格变动都是夹击攻击。 正常价格影响、市场波动、路由变化和套利也会使成交偏离报价;判断夹击需要交易排序证据。
- 攻击者只是从钱包里偷走代币。 典型夹击是在用户授权兑换前后改变资金池状态,并不要求攻击者的交易直接从用户钱包转出资产。
- 设置任意滑点容忍度就能阻止攻击。 最低输出只能限制可接受的恶化程度,搜索者仍可能优化夹击,使兑换贴近该边界成功。
- 私有提交会消除 MEV。 它可对公开池隐藏订单,但 RPC 运营者、中继、构建者、求解器或公开回退仍可能观察或影响订单。
- 成功回执证明成交公平。 成功只证明合约条件通过,不证明用户获得了最佳可用价格或避开了有害排序。
相关主题
来源
- Maximal extractable value (MEV) - Ethereum.org (accessed: 2026-08-21)
- What is a sandwich attack? - Uniswap Labs (accessed: 2026-08-21)
- SCWE-090: Missing Slippage Protection in Automated Token Swaps - OWASP Smart Contract Security (accessed: 2026-08-21)