跳转到内容

MEV 基础

MEV 基础

本页内容正在整理中,欢迎贡献

概述

MEV(Maximal Extractable Value,最大可提取价值)是指区块生产者(矿工/验证者)或其他参与者通过控制区块内交易的排序、插入或删除来获取的额外利润。MEV 是以太坊生态中不可忽视的力量,既影响用户体验,也催生了专业的生态系统。

主要内容

MEV 的来源

MEV 机会来自信息不对称和交易排序控制:
1. Mempool(内存池):交易在被打包前对所有人可见
2. 排序权:区块构建者可以任意排列交易顺序
3. 插入能力:可以在任意位置插入自己的交易

主要 MEV 类型

1. 套利(Arbitrage)

不同 DEX 之间的价格差异:

发现 Uniswap 上 ETH = $2000,Curve 上 ETH = $2010:
在 Uniswap 买入 ETH
在 Curve 卖出 ETH
→ 每 ETH 获利 ~$10(减去 Gas)

这是”善意”MEV,帮助统一市场价格。

2. 清算(Liquidations)

监控接近清算线的借贷头寸,抢先清算获取奖励(详见借贷协议)。

3. 三明治攻击(Sandwich Attack)

利用大额交易会推高价格来夹击普通用户:

用户想用 10 ETH 买 USDC(估计价格 $2000/ETH):
攻击者发现这笔交易在 mempool 中:
1. 【前置交易】抢先买入 ETH,推高价格
2. 【用户交易】用户按更高价格购买(受害)
3. 【后置交易】攻击者卖出 ETH 获利
用户损失:实际成交价比预期更差(滑点被放大)
攻击者利润:两次交易的价差 - Gas 费

4. 抢先交易(Front-running)

看到有利可图的交易后,支付更高 Gas 费抢先执行。

5. 反向交易(Back-running)

在特定大额交易之后立即执行,利用其价格影响。

MEV 的规模

  • 自 2020 年以来,以太坊 MEV 总提取量已超过 数十亿美元
  • 每日 MEV 金额从数百万到数千万美元不等
  • 追踪数据:explore.flashbots.net

Proposer-Builder Separation(PBS)

以太坊通过 PBS 机制将区块提议与构建分离:

当前(ePBS/mev-boost):
Validator(提议者)
↕ mev-boost
Builder(区块构建者,如 Flashbots、BloXroute)
↕ Searcher(搜索者,发现 MEV 机会)
流程:
Searcher 在 mempool 中发现 MEV 机会
→ 将包含 MEV 交易的 bundle 提交给 Builder
→ Builder 构建区块,出价给 Validator
→ Validator 选择出价最高的区块
→ Searcher 和 Builder 分享 MEV 利润

Flashbots

Flashbots 是最重要的 MEV 基础设施:

  • MEV-Boost:验证者扩展,允许外部区块构建者出价
  • Flashbots Protect:用户保护 RPC,防止三明治攻击
  • MEV-Share:让用户参与分享 MEV 利润
// 使用 Flashbots Protect RPC(防止三明治攻击)
import { createPublicClient, http } from "viem";
const client = createPublicClient({
chain: mainnet,
transport: http("https://rpc.flashbots.net"), // 私有内存池,不泄露给攻击者
});

开发者防护措施

防止三明治攻击:

// 在 DEX 交易中设置合理的最小输出量(滑点保护)
function swapWithProtection(
uint amountIn,
uint amountOutMin, // 设置滑点保护,建议 0.5% 以内
address[] calldata path
) external {
router.swapExactTokensForTokens(
amountIn,
amountOutMin,
path,
msg.sender,
block.timestamp + 15 minutes
);
}

使用私有 RPC:

服务地址特点
Flashbots Protecthttps://rpc.flashbots.net不暴露到公共 mempool
MEV Blockerhttps://rpc.mevblocker.io共享 MEV 收益给用户
CowswapDEX 本身批量撮合,防止三明治

合约设计:

  1. 使用 deadline 参数,超时自动 revert
  2. 使用可信预言机而非 AMM 即时价格
  3. 批量操作减少交易暴露窗口
  4. 使用 TWAP 价格代替即时价格

深入阅读