为什么需要一份系统化的 Sandwich 攻击中文文档
过去两年,中文社区里关于 Sandwich 攻击的资料散落在论坛贴、推特线程和零散的 GitHub README 中,质量参差不齐,初学者很难形成完整图谱。一份合格的 Sandwich 攻击中文文档应当串起三层视角:交易层(pending 池排序)、协议层(AMM 价格曲线)以及套利层(机器人盈利模型)。当读者能在这三层之间自由切换,才能真正理解为什么夹击交易能在毫秒级别完成「前置买入、夹住目标、后置卖出」的闭环。
本文档不再罗列定义,而是带读者从一笔真实链上交易反推:先观察 Binance 智能链上某次大额换币,再用区块浏览器回放该笔交易前后两个 nonce,看 MEV 机器人如何精确插入两条交易把目标用户的滑点榨干。
攻击链路与价格曲线推导
Sandwich 攻击的数学骨架是恒定乘积公式 x·y=k 的反身性。机器人在目标交易之前买入相同方向的资产,把价格推高;待目标用户以更差的价格成交后,机器人立刻反向卖出,赚取价格差并扣除两笔 Gas。完整推导需要引入滑点系数 s、目标交易体量 V 与池子流动性深度 L,最终得到机器人的预期收益函数 R(V, L, s)。
实践中,机器人会在 mempool 中扫描所有 swap 类调用,并对接 BN交易所 公开的现货行情,把套利路径扩展到「链上夹击 + 链下对冲」的复合模式。理解了这一层,再去看 bn 生态里的聚合器为何要主动隐藏路由细节,就豁然开朗。
检测脚本与可疑特征
在中文文档里,检测部分往往一笔带过,但工程价值最大的恰恰是这里。建议沿着三条主线建立检测规则:
第一,区块内序列分析。同一区块内若出现「机器人地址买入 → 用户大额交易 → 机器人卖出」的连续 nonce 模式,几乎可以判定为夹击。第二,地址特征聚类。MEV 机器人地址通常具有高 nonce、低余额波动、与 builder 强绑定的特点。第三,路径回环检测。机器人会在多池之间循环兑换,路径终点回到起始 token,套利利润落在矿工小费与利润分成中。
配合 币安交易所 公开 API 同步当时的现货中间价,可以反算每笔夹击对用户造成的真实滑点损失,进而生成可视化报表。
防御策略与最佳实践
用户侧最朴素的防御是设置严格的滑点上限。但 Sandwich 攻击的高级形态会动态调整夹击体量,刚好卡在滑点容忍内,因此固定阈值并不可靠。更稳妥的方案是采用 commit-reveal 机制、私有交易池(如 builder 直送)、或聚合器层面的 RFQ 报价。
协议侧则可考虑批量拍卖(FBA)、统一价格机制(uniform clearing)以及订单加密池。这些方案会在一定程度上牺牲即时性,但可以从根上压缩 MEV 抽取空间。对于追求极致用户体验的项目,可以在前端动态推荐使用专用 RPC 端点,使交易绕过公共 mempool。
后续学习路线与延伸阅读
要把 Sandwich 攻击中文文档读厚,再读薄,读者需要补齐三块拼图:MEV 经济学、AMM 数学以及链上数据工程。建议先吃透 Flashbots 早期论文,再实战编写一个最简夹击模拟器,最后用真实区块数据回测。当你能在 Foundry 里完整复现一次夹击并修复某个 DEX 的脆弱点,这份中文文档才算真正读完。
持续关注 Binance Research 与社区博客的最新案例,能让你的知识库始终贴近实际攻防节奏。