在 Uniswap 等去中心化交易所(DEX)中,存在各种最大可提取价值(MEV)攻击手法。很多人只知道“三明治攻击”,但对JIT(Just-In-Time)流动性攻击一头雾水。
本文从最基础的概念讲起,用最通俗的方式带你理解:
两者是什么
为什么 JIT 是 Uniswap v3 特有
三明治攻击到底怎么赚钱
两者之间本质区别是什么
哪些误区你可能踩过
希望看完这篇文章,你能真正理解这两种攻击的原理,并不再被绕晕。
一、什么是三明治攻击?(Sandwich Attack)
这是区块链世界最经典的 MEV 攻击之一。
它的逻辑非常简单:
📌 攻击流程(3 步):
攻击者先买入(Front-run)
看到用户要大额买入某个代币,攻击者提前买一笔,把价格推高。用户按更高价格买入(Victim)
因为攻击者已经推高价格,用户会在更差的价格成交(滑点更大)。攻击者卖出赚钱(Back-run)
用户买完之后,攻击者再卖出,把价格砸回去,从价差中获利。
所以叫“三明治” —— 用户的交易被夹在攻击者的两笔交易中间。
🔍 为什么攻击者一定需要“受害者”?
因为:
他提前买,会自己推高价格(自己付滑点)
他卖时又会把价格砸低(再次付滑点)
没有用户在中间把价格推得更高 → 他必亏
三明治攻击不能自嗨,没有受害者就无法赚钱。
📌 三明治攻击发生在交易者之间(Buyer / Seller)
攻击者本质是一个主动交易者(Trader)。
他不提供流动性,只是利用 AMM 结构和其他用户的交易来赚价差。
二、什么是 JIT(Just-In-Time)流动性攻击?
JIT 是Uniswap v3 特有的一种攻击方式。
它不是交易攻击,而是流动性提供者(LP)的 MEV 方式。
📌 JIT 的运作方式:
攻击者在 mempool 中监控到即将发生的“大额 swap”
在交易执行前立刻在非常窄的价格区间添加大量 v3 流动性
利用这一笔大额 swap,攻击者的 LP 份额几乎吃掉全部手续费
在同一区块中立即移除流动性,领走手续费
过程中的关键:
JIT 攻击者不会大量买卖代币
他们只是“瞬间当一下 LP”,吃掉手续费、然后走人
所以叫“即时(Just-In-Time)流动性”。
🔍 为什么 JIT 是 v3 特有的?
因为只有 v3 有可集中流动性(Concentrated Liquidity):
LP 可以把资本集中在一个很窄的价格区间
在这个窄区间内,LP 会吃掉绝大部分手续费
JIT 就是利用这个机制来“狙击型插入”
v2 只有均匀分布的池子,没有办法这样“突然插进来并吃下大部分收益”,所以 v2 没法做 JIT。
📌 JIT 是 LP 身份(Liquidity Provider)
与三明治不一样,JIT 攻击者不是交易者,而是:
瞬间加入流动性
骗取大额 swap 的手续费
迅速撤走
他们并不操纵价格,不会买也不会卖。
三、三明治 vs JIT:核心区别总结
| 机制 | 三明治攻击 | JIT 流动性攻击 |
|---|---|---|
| 做什么 | 买入 → 用户交易 → 卖出 | 添加 LP → 收手续费 → 撤出 |
| 角色 | 交易者(Trader) | 流动性提供者(LP) |
| 目标 | 赚差价 | 抢高额手续费 |
| 是否操纵价格 | 是(先买抬价,后卖砸价) | 否(只提供流动性,不买卖) |
| 是否需要受害者 | 要(必须有人夹在中间) | 不需要受害者(只需要大单) |
| 是否 v3 特有 | 否 | 是 |
| 风险来源 | 滑点风险、抢跑竞争 | 价格滑出区间、Gas 风险 |
一句话总结:
👉三明治靠“交易差价”赚钱,JIT 靠“流动性手续费”赚钱。
四、常见误区:为什么 JIT 不会影响价格?
很多人会问:
“黄牛大量加流动性,不会把价格拉高吗?”
不会。
因为:
LP 加池子不会改变 token 的数量比例
也就不会动价格(因为 AMM 的价格取决于 x / y)
只要不是进行 Swap,价格不会变。
JIT 完全通过“临时提供流动性 → 拿手续费”来赚钱,不涉及买卖代币。
五、小白理解三明治的最佳例子
假设:
攻击者先买 → 价格从 100 → 110
用户大额买 → 价格从 110 → 130
攻击者卖 → 套现 20 的差价(130 → 110)
攻击者为什么能赚钱?
因为用户的那笔交易帮攻击者把价格推到了更高。
如果没有用户,攻击者只能:
100 买
110 卖
扣手续费 + 滑点,还亏。
所以三明治攻击,本质上是在利用用户的交易往上推价格。
六、为什么 MEV 机器人可以持续盈利?
因为它们专盯:
大单
滑点设置宽的交易
Gas 给得低的用户
无保护的交易(无私有内存池、无 Flashbots)
一旦交易被它捕捉到,它就能极大概率在用户交易前后抢跑。
七、两者共同点:都依赖 Mempool
三明治与 JIT 都依赖:
监听用户交易
预测影响
抢在用户之前/同块执行
区别只是“做的事情不同”。
八、写在最后:为什么理解它很重要?
不管你是:
做合约
做 DeFi
做交易
或想保护自己免受 MEV 影响
理解 JIT 和三明治攻击都是基本功。
现在你应该能清晰区分:
三明治:操纵价格,从差价获利
JIT:提供瞬时流动性,从手续费获利
两者完全是不同的逻辑链路。