• 元宇宙:本站分享元宇宙相关资讯,资讯仅代表作者观点与平台立场无关,仅供参考.

MEV三明治攻击全解析:从排序到闪兑的致命链条

  • 2025年3月20日 11:30

作者:Daii来源:mirror

上周三(3月12日),一位加密交易者,被MEV攻击一次性损失21.5万美元的事情刷屏了。

yDgyTJBzWhnGWbbjWdCfwzNHy2RWfixeFPAhUl16.png

gOBtJtdKthPSTi4uxT3qT8ZxgrXMXxlFAbOEp7RC.png

2.MEV的原理

要理解MEV的工作原理,我们需要先明白Blockchain是如何记录和更新信息的。2.1Blockchain状态更新机制

Blockchain可以被看作是一个不断增长的账本,它记录了所有发生的交易。这个账本的状态,例如每个账户的余额、Uniswap交易池中各种Tokens的储备量等,都是由之前的交易决定的。

当一个新的区块被添加到Blockchain上时,这个区块中包含的所有交易都会被按照它们在区块中的排列顺序逐一执行。每执行一笔交易,Blockchain的全局状态就会相应地发生改变。

也就是说,不只是区块的顺序很重要,区块中的交易排序也很重要。那么区块中的交易排序又是如何决定的呢?2.2验证者决定交易排序

当用户在Blockchain网络上发起一笔交易时,例如这一笔通过Uniswap把USDC转换为USDT的交易,首先会被广播到网络中的节点。经过初步验证后,这笔交易会进入一个名为“内存池”(mempool)的区域。内存池就像一个等待区域,其中的交易尚未被确认并添加到Blockchain的下一个区块中。

以前的矿工(在PoW系统中),现在的验证者(在PoS系统中)有权从内存池中选择交易,并决定这些交易在下一个区块中的排列顺序。

区块中交易的顺序至关重要。 在一个区块被最终确认并添加到Blockchain上之前,这个区块中的交易会按照验证者(比如bobTheBuilder)确定的顺序执行。这意味着,如果一个区块中包含了多笔与同一个交易池交互的交易,那么这些交易的执行顺序将直接影响到每一笔交易的结果。

这种能力使得验证者可以优先处理特定交易、延迟或排除其他交易,甚至插入自己的交易来最大化利润。

本次交易的排序,同样重要,稍有差池就不可能攻击成功。2.3本次MEV攻击的交易排序

我们先简单了解一下,本次MEV攻击相关的3个交易:

vi4i8ramCtgyZuTSNZLLVLsqry8MONxhGPRUVOsC.png

此时这个池的USDC与USDT之间的兑换比例就远远不是1:1了,而是1:17了,也就是说此时需要17USDC才能兑换到1个USDT,不过这个比例只是大概,因为这个池是V3的,里面的流动性不是均匀分布的。

还有一点,我要告诉你。实际上攻击者并没有一次性动用1865万的USDC,实际使用的USDC为109万,连6%都不到。他是如何做到的呢?等我们把攻击讲完了会再详细讲。3.2交易2,执行22万USDC兑换USDT

点击上图交易2的链接可以看到下图。

rqLjmsxfcI06dN56OvKVyTctzoiWpvUPvCyEWYom.png

hco4wljEJ9HngbaT8S3asZcEGGNpt9HjUPoAA1ka.png

交易A,将池里的流动性恢复正常,用1732万USDT换回了交易1860万USDC;

交易B,分赃准备,将部分收益——20.4万USDC兑换为105ETH;

交易C,分赃,将100.558ETH支付给验证者bob-The-Builder.eth。

至此,三明治攻击结束。

现在来回答上面提到的一个很重要的问题:攻击者如何用109万USDC实现了1800万的攻击的。4.攻击者是如何实现1800万USDC的池攻击的

攻击者之所以能只用 109万USDC 的本金,实现 1800万美元级别 的攻击,是因为Blockchain世界存在一个神奇又特殊的机制——UniswapV3的闪电兑换(FlashSwap)。4.1什么是闪电兑换(FlashSwap)?

简单来说:

闪电兑换允许用户在同一笔交易中先从Uniswap池中取出资产,再用另一种资产(或同种资产加手续费)偿还。

只要整个操作在同一个交易内完成,Uniswap就允许这种「先取货、再付款」的行为。请注意,必须是在同一个交易内完成。这样设计,是为了保障Uniswap平台自身的安全性:

零风险借贷:Uniswap允许用户无抵押从池子临时取走资金(类似借贷),但必须在交易结束时立即偿还。

原子性(Atomicity):整个操作必须是原子的,要么完全成功(资金归还),要么彻底失败(交易回滚)。

闪电兑换的设计初衷是为了更有效地进行链上套利(Arbitrage),但却不幸地被MEV攻击者利用,成为市场操纵的利器。4.2闪电兑换,是如何助攻的?

下面我们看图说画,一步一步来了解一下本次攻击的闪电兑换是如何实现的,见下图。

o1LnGSaUlzRjt7vqs5YOy0wqTRznOxzRkjVHSdEw.png

F4攻击者再将Curve兑换来的1755万USDC,加上自己原本准备的109万USDC(Aave借贷所得),共1864万USDC,一次性还给Uniswap,闪电交换完成;

这笔交易(交易1)过后,攻击者的账户余额减少了109万USDC,因为归还给Uniswap的1864万USDC中只有1755万USDC是从Curve换来的,其余的109万USDC是攻击者的自有资金。

你应该发现了,这一笔交易实际让攻击者损失了109万。但是,后面的交易3,同样通过闪电交换的手法,不但把109万USDC拿回头了,而且,还赚了20多万。

下面我们根据交易3的数据一步一步来分析一下。

K1攻击者,用闪电交换取出在Uniswap1860万USDC;

K2攻击者,通过用刚刚从Uniswap取出的USDC中的一部分1730万USDC,换回了1732万USDT;

K1攻击者,把从Curve换回来的1732万USDT还给了Uniswap。闪电交换完成。你需要注意的是,攻击者通过K2只花了1730万USDC就获得了1732万USDT。余下的130(=1860-1730)万USDC中,有109万的自有资金,其余的21万USDC就是本次攻击的利润了。

K3攻击者,把本金还回AAVE,拿走自己701WETH,同时把20万USDC兑换成了105ETH,并把其中的100.558ETH发给验证者作为小费(约20万美元),自己只留了1万美元不到的收益。

你或许会惊讶,为什么攻击者愿意将高达20万美元的利润拱手让给验证者?4.3为什么要给20万美元的「小费」?

其实,这并不是慷慨,而是三明治攻击这种MEV攻击成功的必要条件:

攻击成功的核心就是交易顺序的精准控制,而控制交易顺序的正是验证者(bobTheBuilder)。

验证者不仅帮助攻击者确保受害者的交易处于攻击交易之间,更关键的是验证者能确保其他竞争的MEV机器人无法插队或干扰攻击的顺利完成。

因此,攻击者宁可牺牲绝大部分利润来确保攻击成功,并保留一定的利润给自己。

需要特别说明一下,MEV攻击也是有成本的,在Uniswap闪电兑换有成本,在Curve交易也有成本,只是由于费率比较低大概是0.01~0.05%,所以与攻击所得相比可以不值一提。

最后再提醒一下,MEV攻击的防御其实也很简单,你只需:设定好滑点容忍度,不要超过1%;大笔交易分几笔执行。所以,你大可不必因噎废食,从此不敢在DEX(DEX)交易了。结语:黑暗森林中的警示与启示

这起21.5万美元的MEV攻击事件,无疑是Blockchain世界“黑暗森林”法则的又一次残酷展现。它生动地揭示了在去中心化、无需许可的环境下,潜藏着利用机制漏洞攫取利益的复杂博弈。

从更高的层面来看,MEV的出现是Blockchain透明性和可编程性双刃剑效应的体现。

一方面,所有交易记录公开可查,使得攻击行为能够被追踪和分析;

另一方面,智能合约的复杂逻辑和交易执行的确定性,也为精明的参与者提供了可乘之机。

这并非简单的黑客行为,而是对Blockchain底层机制的深刻理解和利用,它考验着协议设计的鲁棒性,也挑战着参与者的风险意识。

理解MEV,认识其风险,才能更好地在这个充满机遇但也暗藏危机的数字世界中航行。记住,在Blockchain的“黑暗森林”中,唯有敬畏规则、提升认知,方能避免成为下一个被吞噬的猎物。

这也是我想通过本文努力达到的效果。

Copyright © 2021.Company 元宇宙YITB.COM All rights reserved.元宇宙YITB.COM