W3
技术原理进阶预计 30-40 分钟8 个步骤19 次学习

MEV 与交易排序:从三明治攻击到 PBS

解释一个普通人本该关心、却常被忽略的事实:<strong>区块空间是稀缺资源,而谁决定交易的先后顺序,就能从中提取价值。</strong> 先用具体数字走完一次三明治攻击的全过程,再梳理 MEV 的几大来源(DEX 套利、清算、抢跑、NFT 抢购),然后把区块生产的产业链摊开——搜索者、构建者、中继、提议者各自拿什么、为什么会有 PBS(提议者与构建者分离)。最后回到用户侧:私有内存池如何避免被夹、滑点设置与三明治的关系、以及为什么「把滑点调到 50% 让交易一定成功」是一个会让你损失更多的选择。

⚠️
操作前必读

MEV 造成的损失通常是「看不见的手续费」:你的交易成功上链了,只是成交价比应得的更差。要避免这类损失,请改掉两个习惯:一、不要为了「让交易一定成功」把滑点调到很高(例如 20% 以上)——高滑点等于公开告诉所有人「我接受很差的成交价」,三明治攻击者会优先盯上你;二、不要把大额交易直接发到公共内存池,改用提供私有通道的 RPC 或聚合器。

另外请注意:私有的失败代价更高——如果交易被夹后再失败,你付出了 Gas 却什么也没得到,所以「先小额试一次、确认路径与参数正确」这个动作,在大额交易前是必须的。

01

MEV 是什么:从「谁决定交易顺序」说起

登录记录进度

MEV(Maximal Extractable Value,最大可提取价值)指的是:区块生产者(或能影响交易排序的人)通过选择包含哪些交易、排除哪些交易、以及按什么顺序排列所能获得的额外利润。

为什么排序有价?因为交易不是原子的——同一时刻有成千上万笔交易在竞争,顺序不同,结果就不同。最直观的例子是 DEX 套利:如果 Uniswap 上 ETH 价格比 SushiSwap 低 1%,谁先在便宜的池子买入、再在贵的池子卖出,谁就赚到这 1%;而这两笔交易的顺序必须正确(先买后卖),且要被及时打包,否则机会消失。

这类「必须排在特定位置才有意义」的交易,催生了一个专门抢这些机会的产业。理解 MEV 的关键是接受一件事:在公链上,「晚一步」不只是慢,而是「结果不同」。这也解释了为什么单纯提高 Gas 价格(优先费)会成为竞价手段。

💡
小技巧:

MEV 不全是坏事:套利让不同交易所的价格重新对齐,清算让借贷协议不坏账。问题在于它也可能以直接损害普通用户的方式发生(如三明治攻击)。

02

走一遍三明治攻击的完整过程

登录记录进度

用一个具体场景把攻击掰开。假设某流动性较薄的池子里 ETH 价格 1000 USDT,你要用 500 USDT 买入 ETH,为了「保证成功」你把滑点设成 10%(即接受最差 1100 USDT 的成交价)。

攻击者看到你挂在公共内存池里的这笔待打包交易,于是:第一步(前置,frontrun):用更高的 Gas 费抢先买入 ETH,把池子价格从 1000 推高到约 1040;第二步(你成交):你的交易在 1040 附近成交,本来 500 USDT 能买到的 ETH,现在少买了约 4%;第三步(后置,backrun):攻击者立刻把刚买入的 ETH 卖回池子,收回约 520 USDT。

攻击者净赚的钱,正是你多付的价差,而你得到的是「交易成功、数量变少」——区块浏览器上不会显示「你被攻击了」。攻击者还要与区块构建者分成(这叫 payment for order flow 或直接贿赂),所以真正吃掉的不止他一个。

看出关键了吗:滑点设得越宽,攻击者能吃的空间越大;你的交易越值得夹,你越容易被夹。

🚫
避坑提醒:

把滑点当成「成功率开关」是非常危险的。 滑点 10% 意味着你主动授权「成交价比预期差 10% 我也认」。在大额或低流动性池子上,这几乎等于邀请三明治攻击。正确做法是:先小额试探真实成交价,再按真实价格设一个的滑点(例如 0.5%–1%),并接受「可能要重试」。

03

MEV 的其他来源:套利、清算与抢跑

登录记录进度

三明治只是最常被讨论的一种,MEV 的来源至少还有四类。一、DEX 套利(arbitrage):不同池子出现价差时,抢先对齐价格——这类通常被认为有益(价格发现),也是 MEV 里占比最大的部分之一。

二、清算(liquidation):借贷协议中抵押率跌破阈值的仓位可被清算,清算人获得折扣或奖励,所以大家争抢「第一个触发清算」,速度竞争极其激烈。三、抢跑(frontrunning):看到一笔会明显影响价格的交易(如大额买入、抢购)后,抢在它前面执行同样的操作,常见于 NFT 抢购与代币上线。

四、尾随(backrunning):跟在某笔交易之后立即执行,赚取它造成的价格偏移,通常被认为是相对良性的。这里的共同点是:机会值多少,取决于你能不能在正确的位置上链,所以这些都变成对区块空间的竞价。

理解这些来源,你就能读懂为什么有新项目宣传「MEV 返还给用户」——那是把本来被第三方拿走的一部分,试图还给交易发起者。

04

区块生产产业链:搜索者、构建者、中继、提议者

登录记录进度

在现在的以太坊上,「谁打包你的交易」已经是一条分工明确的生产线。搜索者(Searcher):在内存池与链上数据里找机会,构造有利可图的交易组合(多个交易打包成一套,必须同时成立),然后把「出价」提交给构建者。

构建者(Builder):收集大量搜索者的出价与普通用户的交易,组装出总收益最高的区块,并把区块头与出价交给中继。中继(Relay):在构建者与验证者之间做可信传递,负责「验证者不知道区块内容却要先签名」这一环的信任问题。

提议者(Proposer):也就是当轮的验证者,在中继送来的若干候选区块里选出价最高的那个签名发布。这条链的经济逻辑很直白:谁的区块能带来更多价值,谁就更可能被选中

而普通用户在这条链条的最末端——你的交易只是被当成「可提取价值的原料」之一参与排序。

💡
小技巧:

搜索者构造的是「打包成一套的多个交易」,所以你在浏览器上常会看到同一区块里有几笔顺序紧密相关的交易——那不一定是攻击,也可能是一次套利组合。

05

PBS:为什么要把造块和提议拆开

登录记录进度

PBS(Proposer-Builder Separation,提议者与构建者分离)是理解当前 MEV 格局的核心概念。在早期,验证者自己既选交易又造区块,问题有两个:一、专业化作弊——会跑复杂搜索策略的验证者能赚到远超其他验证者的收益,质押变得「技术越好收益越高」,加剧中心化;二、风险暴露——验证者要自己维护复杂的搜索与排序逻辑,一旦出错可能被罚没。

PBS 的做法是把两件事分开:构建者专门负责「把区块造得最赚钱」提议者只负责「在候选区块里选出价最高的」。好处是验证者不必懂 MEV 也能获得可观收益,质押门槛更均匀;代价是引入了新的中心化风险——构建者与中继是少数几个实体,如果构建者市场集中在两三家手里,他们事实上掌握了全网的交易排序权。

所以学界与工程界一直在讨论更彻底的方案(如将构建者角色协议化),目的都是削弱「少数人决定全网顺序」这件事

06

私有内存池:让交易不在公开场合排队

登录记录进度

对付三明治攻击最直接的办法是不让攻击者看到你的待处理交易。公共内存池(public mempool)是所有节点都能看到的待打包交易池,也是搜索者捡机会的地方;私有内存池 / 私有通道(private RPC)的思路是:你把交易发给一个可信的中继,它不广播到公共内存池,而是直接交给构建者打包。

攻击者看不到你的交易,就无法精确地在你前后插单——他们最多只能盲目猜测,成本与风险都高得多。主流做法包括 Flashbots Protect 一类私有 RPC、以及一些钱包/聚合器内置的私有路由。使用时需要注意三件事:一、私有通道通常失败率更高(因为它不参与公共竞价,遇到区块满载可能排不上),所以不要把「一定成功」寄托在它上面;二、不同私有通道的信任假设不同(有的会记录你的交易用于分析),选之前看清它收集什么数据;三、私有通道防的是「被夹」,不防「成交价差」——报价本身差,你依然会亏。

💡
小技巧:

实用组合:私有通道 + 紧滑点 + 先小额试探。三者叠加才能同时防住「被夹」与「滑点过宽」。

07

滑点设置:一个直接决定你损失多少钱的参数

登录记录进度

把滑点单独拿出来说,因为它是唯一完全由你自己控制、且直接影响损失大小的参数。滑点的本质是一次授权:「只要成交价在我预期的 X% 以内,就允许成交,不用再问我」

设得太紧,交易容易因价格波动而失败(你只损失 Gas);设得太宽,就等于给攻击者留出提取空间,并且让「失败」变成「以很差的价格成功」。实务上有三条经验:一、按池子深度设——主流币兑主流币、深度好的池子可以设 0.1%–0.5%;小市值币、新池子波动大,但也不要超过 1%–2%,宁可分开多次。

二、看真实成交价再定——先用极小金额走一次,看到实际成交价与报价的偏差,再决定正式交易滑点。三、大额拆单——单笔金额越小,越不值得被夹;把一笔大额拆成几笔小额、间隔一段时间,能显著降低被针对性攻击的概率。

最后请记住一个反直觉的事实:「交易成功」不是目标,「以合理价格成交」才是目标。

🚫
避坑提醒:

不要用滑点来「解决交易失败」。 如果一笔交易总是因为滑点失败,正确做法是查清原因(池子深度不足?报价过期?代币有转账税?),而不是把滑点调到 50%。后者在貔貅盘与假币场景下会让你的资金以最差价格被全部吃掉。

08

用户自保清单与 MEV 的再分配尝试

登录记录进度

先说行业侧的进展:既然 MEV 客观存在,一部分项目尝试把它还给用户——例如批量拍卖(把同一时间段内方向相反的交易配对,减少对价格池的冲击)、意图式成交(由求解器竞争给你报价,见另一篇关于 Intent 的章节)、以及 MEV 返还型 RPC。

这些机制在特定条件下确实能改善成交价,但要注意它们的收益来源仍然是 MEV,只是分配方式变了,且依赖其内部竞争是否真实存在。用户侧的自保清单可以收成五条:一、优先用主打 MEV 保护的私有 RPC 或聚合器;二、滑点按池子深度设紧,绝不为了成功率放宽;三、大额拆单、间隔执行;四、避开流动性极薄的池子做市价单,优先限价或聚合器比价;五、把「交易失败」当成正常结果,失败只损失 Gas,被夹则直接损失资金。

做到这五条,你无法完全摆脱 MEV,但能把它对你钱包的影响降到很低。

💡
小技巧:

把 MEV 理解成「区块空间的市场化定价」:你无法关闭这个市场,但可以选择不在最显眼的位置、以最宽的条件参与它。

全部步骤已完成

操作完成后建议再核对一次到账金额与手续费,并保留交易哈希作为凭证。

相关教程

共识机制:PoW、PoS 与 BFT
技术原理中级25-35 分钟

共识机制:PoW、PoS 与 BFT

从拜占庭将军问题讲起,说清区块链为什么必须有共识机制:PoW 如何用算力与难调整换来安全,PoS 如何用质押与罚没替换矿工,以太坊的 Gasper 如何把 LMD-GHOST 与 Casper FFG 拼在一起,PBFT 与 Tendermint 代表的三阶段 BFT 有什么取舍。再用一张表格横向对比三种路线的去中心化、能耗、最终性、TPS 与攻击成本,最后落到最终性、软硬分叉、链重组,以及「PoS 是不是更中心化」「Nothing at Stake」两个高频误区。

9 个步骤
账本与交易的技术实现
技术原理中级30-40 分钟

账本与交易的技术实现

把「一笔交易到底发生了什么」拆到最底层:先用表格对比 UTXO 与账户模型两种账本,再逐步跟踪交易从签名、广播、内存池、打包到确认的完整生命周期,讲透 Nonce 与交易顺序、EIP-1559 前后的 Gas 费用模型、世界状态与状态根、EVM 的三种数据位置成本差异、节点同步方式与数据可用性,最后读懂交易回执与事件日志,并带你到 Etherscan 上把每个字段和概念一一对上。

9 个步骤
技术原理进阶30-40 分钟

Intent 与 Solver:从「怎么交易」到「要什么结果」

传统交易要求用户自己说清每一步怎么执行(调用哪个合约、走哪条路径、接受多少滑点);<strong>意图(Intent)</strong>换了个思路:用户只声明想要的结果(例如「用不超过 1000 USDT 换到至少 0.29 ETH」),由一群<strong>求解器(Solver)</strong>竞争去实现它。这一篇讲清意图的生命周期、求解器承担了什么风险、为什么这种结构天然带 MEV 保护、以及订单流拍卖(OFA)与批量拍卖是怎么运作的。同时把新风险摊开:求解器集中化、报价不透明、签名本身就是一个授权范围、失败后无人补偿。最后给出比较不同意图协议的方法,以及使用时的自保清单。

9 个步骤