BTC 68,420 ▲ +2.34% ETH 3,542 ▲ +1.08% SOL 168.4 ▼ -0.82% BNB 604.1 ▲ +0.46% USDT 1.000 ▲ +0.01% ARB 0.842 ▼ -1.24% MATIC 0.523 ▲ +3.11% AVAX 34.62 ▼ -0.55% BTC 68,420 ▲ +2.34% ETH 3,542 ▲ +1.08% SOL 168.4 ▼ -0.82% BNB 604.1 ▲ +0.46% USDT 1.000 ▲ +0.01% ARB 0.842 ▼ -1.24% MATIC 0.523 ▲ +3.11% AVAX 34.62 ▼ -0.55%
MEVDEX滑点

MEV 是什么?三明治攻击如何夹走你的链上交易利润

链上交易在确认前是公开的,机器人可以抢在你前面买、在你后面卖,赚走的正是你的滑点。讲清楚 MEV 从哪来、三明治攻击的完整过程、哪些交易容易被盯上,以及实用的防御方法。

编辑部 |

我们在讲滑点AMM 时都提过一句:链上交易公开可见,机器人可能抢在你前面买、在你后面卖,赚走你的滑点。

这件事有个正式名字——MEV。它不是某个黑客团伙的代号,而是区块链结构里天然存在的一块利润,每天都在被自动化程序稳定地收割。这篇文章讲清楚它从哪来、你怎么被夹的、以及能做什么。

先看一个真实的挨夹过程

假设你要在 DEX 上用 10,000 USDT 买入某个币,滑点容差设的是 3%。你点了确认,交易发出去了。

在它被写进区块之前,发生了这样一串事:

  1. 机器人先看到了你的交易——它还没确认,但已经躺在公开的「待处理区」里,金额、买什么、能接受多少滑点,全都写得明明白白
  2. 机器人抢在你前面买:它用更高的 Gas 费(或走专门通道)让自己的买单排在你前面成交,把池子里的价格推高
  3. 轮到你成交:你买在了被抬高之后的价格上,拿到的币比原本少——但因为还没超过你设的 3%,交易正常成功
  4. 机器人立刻卖出:它在你后面紧跟一笔卖单,把刚才买的币按被你推高的价格抛掉

一买一卖把你的交易夹在中间,所以叫三明治攻击(Sandwich Attack)。整个过程在同一个区块里完成,前后不过几秒。

最容易被忽略的一点是:你的交易成功了,界面上没有任何报错。 你只会觉得「今天滑点有点大」,而那笔差价已经进了别人的口袋。

MEV 到底是什么

MEV 全称 Maximal Extractable Value(最大可提取价值),早期叫 Miner Extractable Value。定义听起来抽象,但拆开很好懂:

谁有权决定一个区块里放哪些交易、按什么顺序排,谁就能从这个排序权里额外榨出一部分利润。这部分利润就是 MEV。

它的根源是区块链的两个基本性质:

  • 交易在确认前是公开的:你广播出去的交易会先进入一个公开的待处理池(内存池 / mempool),任何人都能读到内容。这和你在中心化交易所下单完全不同——那里的订单只有交易所看得见
  • 区块内的顺序不是先到先得:谁排前面,很大程度上由出块者(矿工/验证者)说了算,而这个权力是可以卖钱的

于是形成了一条完整的产业链:扫描机器人找机会 → 出价争夺排序 → 出块者收钱执行。这不是漏洞,是链上一切公开透明这个设计的副产物。

MEV 不全是坏事

值得先说清楚:MEV 里有相当一部分是中性甚至有益的。

类型机器人做了什么对你的影响
跨市场套利A 池贵、B 池便宜,同时买低卖高中性偏好,让各处价格趋于一致
清算抵押率跌破线时抢先清算头寸中性,保障借贷协议不产生坏账
尾随交易在你交易之后跟一笔,吃你留下的价差基本无害,不改变你的成交价
抢跑 / 三明治抢在你前面成交,抬高你的成本直接损害你,钱从你身上出

前三类是市场效率的一部分,没有它们,DEX 之间价格会长期错位、借贷协议会积累坏账。真正需要防的是最后一类——唯一一种利润直接来自你口袋的 MEV

顺带一提,机器人做套利和清算时常常搭配闪电贷:无需本金就能调动巨额资金,做完在同一笔交易里还清。这也是为什么 MEV 和闪电贷总是一起出现。

关键认知:你的滑点容差,就是被夹的上限

这是全文最实用的一条。

三明治攻击能榨走多少,不是机器人想拿多少就拿多少——它受一个硬约束:如果它把价格推得太高,你的交易会因为超出滑点容差而直接失败回滚,它前面那笔买入就砸在手里,反而亏钱。

所以机器人的最优策略是:把你的价格恰好推到你容差的边缘,让你「刚好还能成交」。

你设的滑点容差,实际上是在告诉机器人:夹我夹到这个数就行了。

设 3% 的容差,你就默认交出了最多 3% 的空间;设 0.5%,可榨取的空间就只有 0.5%,很多时候扣掉机器人自己的 Gas 成本后根本不划算,它就放过你了。

这解释了一个反直觉的现象:滑点容差设得越高,你越容易挨夹。很多人交易失败后第一反应是把容差调到 5% 甚至 10% 强行成交,那等于主动把肉送到嘴边。

哪些交易容易被盯上

机器人也要算账——抢跑要付 Gas、要承担价格反向的风险。它挑的是「油水足够厚」的目标:

  • 金额大:小额换币的利润盖不住成本,通常没人理你
  • 池子浅:同样的金额,浅池被推动的幅度大得多,价格冲击越大越有得赚
  • 滑点容差高:可操作空间大,见上一节
  • 交易的是波动大的币:主流币深度好、稳定币之间换币价差极小,都不是好目标;Meme 币那种浅池 + 高容差 + 抢着买的场景才是重灾区

普通用户几百 U 换点主流币,被专门夹的概率很低。 真正高危的是大额、冷门币、开盘抢筹这三类场景。

怎么保护自己

从最容易做到的开始:

  • 把滑点容差压到够用就行:主流币 0.1%–0.5%,中小币种 0.5%–1%,别习惯性拉到 3% 以上。失败重试的那点 Gas,通常比被夹走的少得多
  • 大额分批换:既减小价格冲击,也让每一笔的油水都不足以吸引机器人
  • 看清「最低到手数量」再确认:这个数字就是你的最坏情况,接受不了就别点
  • 用支持 MEV 保护的 RPC 节点:主流钱包现在大多提供这类选项(名字通常带「MEV 保护」「防抢跑」字样)。原理是不把你的交易广播到公开的待处理池,而是直接送给出块方,机器人看不到就无从下手。这是目前最有效的单一手段
  • 用会给出确定报价的兑换工具:好的聚合器会先比较各处流动性、给出预计到手与最低到手数量,等于把可被夹走的空间预先框死。跨链换币时尤其明显,因为涉及两端流动性和中间路由,人工比价几乎不可能,可以用 AllSwap 跨链兑换 这类工具先看报价再成交,完整步骤见跨链兑换教程
  • 避开开盘抢筹:新币刚开盘时池子最浅、机器人最密集,抢跑几乎是必然的,这也是新币开盘散户很难赚钱的结构性原因

为什么这个问题解决不掉

看到这里你可能会问:既然三明治攻击明摆着损害用户,为什么协议不干脆禁止?

因为没有人可以禁止。区块链上没有管理员能审查交易,机器人发出的交易和你发出的在协议看来一模一样,都是合法交易。排序权带来的收益是这套结构的自然结果,只能被重新分配和缓解,无法被消灭。

行业目前的方向是「把这块利润管起来」,而不是「消灭它」:

  • 私有交易通道:交易绕过公开池直接给出块方,从源头切断机器人的信息优势——上面说的 MEV 保护 RPC 就属于这类
  • 出块分工:以太坊转 PoS 后,「谁打包交易」和「谁出块」被拆开,专门的构建者竞标区块,把大部分 MEV 收益返还给验证者,用于降低对普通用户的直接掠夺
  • 意图(Intent)类交易:你只表达「我要用 A 换 B,至少要拿到多少」,具体路径交给撮合方去竞争,你的意图不暴露在公开池里
  • Layer 2 的排序器:目前多数 L2 由官方排序器按先到先得处理,公开池不存在,三明治攻击少见得多——但代价是排序权集中在单一方手里,属于另一种信任假设

常见问题

Q:我怎么知道自己有没有被夹过? 可以在区块浏览器上打开你那笔交易,看它所在区块里前后紧邻的交易——如果紧挨着的前后两笔是同一个地址在同一个池子里一买一卖,那基本就是被夹了。也有专门的 MEV 查询站点支持直接粘贴交易哈希查询。

Q:把滑点设成 0 是不是就绝对安全了? 理论上没人能夹你,实际上你的交易几乎必然失败——正常的市场波动就足以让成交价偏离报价。持续失败还要白付 Gas。合理做法是压到「够用的最低值」,不是设成零。

Q:普通转账(不是换币)会被夹吗? 不会。三明治攻击赚的是价格被推动的差价,而普通转账没有「成交价」这回事,机器人无从下手。MEV 主要发生在换币、借贷清算、NFT 抢购这类涉及价格和先后顺序的操作上。

Q:中心化交易所有 MEV 吗? 没有链上意义的 MEV——你的订单不进公开池,也没有区块排序可争。但这不等于更公平,中心化平台有它自己的问题(内部人提前交易、撮合不透明等),只是风险换了个形态,参考交易所风险自保

Q:MEV 违法吗? 目前没有明确的法律定性,各地监管态度也不一致。从协议层面看,机器人的交易完全合规——它没有攻破任何东西,只是比你更快地用了同一套公开规则。实务上更该把它当作一项必须计入成本的市场环境,而不是等待谁来取缔的违规行为。

Q:用 MEV 保护的 RPC 有什么代价? 主要是交易可能确认得稍慢一点(因为不走最快的公开广播路径),以及你需要信任那个中继方不作恶。对大额交易来说,这个代价通常远小于被夹的损失。

小结

MEV 是「谁来决定区块内交易顺序」这个权力天然衍生的利润,其中套利和清算对市场有益,而三明治攻击是唯一一种直接从你口袋里掏钱的:机器人在公开池里看到你的待确认交易,抢在前面把价格推到你滑点容差的边缘,再紧跟一笔卖出获利,全程你的交易还是「成功」的。

理解了这条机制,防御就非常明确——滑点容差就是你交出去的上限,把它压低;大额分批;确认最低到手数量;开启钱包的 MEV 保护 RPC 让交易绕开公开池。 这个问题在链上无法被彻底消灭,但它完全可以被控制在很小的范围内,前提是你知道它存在。

Related // 延伸阅读
DEXDeFi

什么是自动做市商(AMM)?DEX 没有对手盘也能换币的原理

去中心化交易所没有买卖双方撮合,靠的是自动做市商和流动性池。用恒定乘积公式和具体例子讲清楚 DEX 如何定价、为什么大额会产生价格冲击、套利如何锚定价格,以及聚合器怎么帮你换得更划算。

DeFiDEX

无常损失是什么?做 LP 提供流动性前必须搞懂的风险

在 DEX 提供流动性赚手续费看起来稳赚,但很多人忽略了无常损失。用具体例子讲清楚它怎么产生、大概有多大、为什么叫「无常」,以及做 LP 前怎么判断划不划算。

滑点DEX

加密货币交易滑点是什么?为什么会滑点、怎么设置更稳

换币时看到的价格和实际成交价常常有差,这就是滑点。讲清楚滑点怎么产生、和流动性与波动的关系、滑点容差怎么设置,以及大额或跨链兑换时如何减少损失。