10分钟智能合约:进阶实战-4.7 预言机操纵

76 阅读5分钟

欢迎订阅专栏10分钟智能合约:进阶实战

MEV 攻击:定义、类型与防御

MEV(Miner/Validator Extractable Value,矿工/验证者可提取价值) 是指通过在区块内重新排序、插入或审查交易所能获取的超过标准区块奖励和 Gas 费的额外价值。虽然在 PoW 中称 MEV,在 PoS 中更常称为 VEV,但概念相同。

核心来源:区块链的公开交易池(Mempool)和矿工/验证者对区块内交易的最终排序权。


1. 为什么 MEV 存在?

  • 交易排序权:矿工/验证者决定区块内交易的顺序,且可自己插入交易。
  • 信息差:任何人都能监控 Mempool 中的待处理交易(如一个巨额的 Uniswap 买单)。
  • 确定性执行:智能合约的执行结果高度依赖交易顺序。

MEV 本身不是漏洞,而是区块链底层架构的副产品。但当它被恶意利用时,会给普通用户造成损失。


2. 常见 MEV 攻击类型

类型描述危害等级
抢跑(Front-running)监控到目标交易后,支付更高 Gas 让自己的交易在目标之前执行。常用于抢购代币、抢清算、抢 NFT 铸造。
尾随(Back-running)在目标交易之后立即执行交易,利用目标交易产生的价格滑点获利。常见于 DEX 套利。
三明治攻击(Sandwich Attack)在目标交易前后各插入一笔交易:先买入推高价格,目标交易高价买入,再卖出获利。
时间强盗攻击(Time-bandit Attack)矿工/验证者重组已确认的区块,将对自己有利的交易重新打包(需重写整条链的历史,PoW 中极难,PoS 中理论可能)。极高(破坏最终性)
清算抢跑监控到链上借贷仓位即将触及清算线,抢先调用 liquidate 函数,获取清算奖励。
NFT 铸造狙击监听 NFT 项目开售交易,抢先铸造稀有编号或属性。

3. 攻击原理详解

3.1 抢跑(Front-running)示例:DEX 大额买单

假设 Mempool 中有一个交易:用 100 ETH 在 Uniswap 上购买代币 A。

  1. 攻击者监控到此交易。
  2. 攻击者发送自己的交易,Gas 价格更高,且以更高滑点买入同样的代币 A。
  3. 攻击者的交易先被执行,抬高了代币 A 的价格。
  4. 原用户的交易随后执行,被迫以更高的价格买入。
  5. 攻击者可立即卖出获利(也可能不卖,等待后续上涨)。

3.2 三明治攻击(Sandwich Attack)原理

攻击者买单 (高 Gas) → 用户买单 (中 Gas) → 攻击者卖单 (高 Gas)
  • 攻击者买:瞬间拉高价格。
  • 用户买:被迫高价成交。
  • 攻击者卖:以高价卖给市场,获利差价,同时用户交易结束后价格回落,攻击者平仓。

3.3 清算抢跑

借贷协议中,当抵押品价值跌破债务阈值,任何人都可调用 liquidate 获得清算奖励(通常是抵押品折价)。攻击者监控所有仓位,一旦满足条件,便抢在别人之前发起清算。


4. MEV 的危害

  • 普通用户交易成本增加:滑点、更差的执行价格。
  • 网络拥堵和 Gas 战:抢跑导致 Gas 价格飙升。
  • 降低 DeFi 可信度:用户感觉“被系统割韭菜”。
  • 潜在链不稳定:时间强盗攻击可能导致重组。

5. 防御与缓解措施

策略实现方式效果
使用私有交易池Flashbots、BloXroute 等,直接与矿工/验证者通信,避免交易进入公开 Mempool。有效防止抢跑,但仍有中心化风险。
最小化滑点与引入 commit-reveal用户提交订单的哈希,后再揭示具体数量,无法被提前预测。对三明治有效,但体验复杂。
批量拍卖机制如 CowSwap,通过批量订单统一结算,消除顺序依赖。彻底消除 MEV,但流动性有限。
交易延迟与随机排序协议内实现队列或随机排序,使用户交易不直接依赖 Mempool 顺序。增加攻击难度,但 Gas 成本增高。
链级 MEV 抑制如以太坊的 Proposer-Builder Separation (PBS)MEV-Boost,将区块构建权与提议权分离。降低中心化风险,但不能根除。
用户设置合理的滑点与交易时间避免在极度波动时进行大额交易,使用限价单。个人防护。

6. 真实案例

  • 以太坊上的“Jared from Subway” bot:活跃的三明治攻击机器人,每日获利数十万美元。
  • NFT 抢跑:如 BAYC 开售时,许多交易被狙击,稀有 NFT 被抢铸。
  • 清算机器人:Compound、Aave 等借贷协议上的清算人通过 MEV 获利。
  • EigenLayer 的 MEV 赛道:将 MEV 再分配作为研究方向。

7. 总结

  • MEV 不是漏洞,而是区块链交易顺序权限的自然产物
  • 对协议开发者,应尽量减少对交易顺序的依赖(例如使用 TWAP 预言机、批量拍卖)。
  • 对普通用户,可以使用 Flashbots RPC去中心化交易所聚合器 来减轻 MEV 影响。
  • 以太坊未来将通过 PBS 等机制重塑 MEV 分配,但难以完全消除。

审计重点:检查协议逻辑是否可被交易顺序操纵(如价格依赖于单笔交易的顺序),并提出缓解措施(如添加时间锁、使用 commit-reveal)。