通过链上数据和交易 一文带你读懂MEV
通过链上数据和交易 一文带你读懂MEV
MEV(最大可提取价值)是区块链和DeFi领域一个颇具吸引力且有争议的话题。本文通过链上数据和交易示例,深入探讨MEV的相关概念和运作机制,帮助读者更好地理解这一复杂但重要的现象。
什么是 MEV?最大有多大?
MEV是指矿工、验证者或交易订单者在将区块中的交易添加到链上之前,通过对区块中的交易顺序进行重组而获取的潜在利润。这种行为提供了获取利润的机会。
下图展示了近14天内两种MEV策略(即套利和三明治)产生的每日收入和利润,以证明MEV的机会有多大。每日总收入平均值超过50万美元,每日利润平均值在10万美元左右。仅jaredfromsubway.eth(蓝色区域)收入就占据了三明治攻击的总利润和收入金额的一半。
MEV 是如何运作的?
套利
让我们从最「简单」的套利策略开始,来说明MEV交易的工作原理。首先,MEV机器人发现2个流动性池之间存在价格差距;随后机器人可以在单笔交易中从低价池买入并在高价池卖出,从而产生利润。
例如,交易A是套利交易,点击交易A链接就可以在Sentio调试器的帮助下查看详细的资金流向、持仓变化和交易跟踪,以逐步了解此交易的执行情况。
图中的MEV交易是由0x1a6开头交易机器人发起的,本次交易中,MEV-bot能够检测到Uniswap V3池中SDEX中WETH的价格比SmarDex池中的WETH价格更便宜(SmarDex是一个类似Uniswap V2的DEX)。MEV-bot首先在低价池中swap,然后将收到的WETH到高价池卖出,最终获利0.07ETH(5.91-5.98)。
此外,本次交易中的第5步支付了0.047ETH给Flashbots,这是MEV机器人向区块构建者支付的贿赂,以使其包含在后面的区块中,考虑到贿赂费用,MEV机器人私下赚取了0.02WETH收益。
让我们更深入地了解MEV-bot是如何在0x1a6上找到获利机会的。可以看到本次MEV交易位于Block 17935927上,在该交易之前,同一区块还有一笔交易B,这笔交易在SmarDex池中进行了大额swap(在SDEX上swap了8.52WETH),该交易使该池中的ETH价格上涨。
上面的MEV-bot很快注意到这一过程,并在这笔交易之后添加了自己的交易,抓住了这个「低入高出」的机会。
在交易被纳入区块之前,MEV机器人如何发现交易的呢,这就不得不提到mempool了,在交易被添加到区块并上链前,它们存在于一个被称为mempool的池中,mempool中的交易尚未确认时会等待纳入到下一个区块。区块构建者负责选择要纳入哪些交易以及按什么顺序纳入,这个过程可能会受到交易费用和Gas价格等因素的影响(这是MEV机器人为获得参与而支付的费用)。
在上述情况下,MEV机器人可以查看所有mempool交易,并发现该某笔交易存在。随后MEV机器人在其后面添加另一笔交易,形成bundle以获取利润。MEV机器人可以使用Flashbot等工具创建bundle,并强制bundle交易包含在同一块中并按所需顺序执行。
事实上,在这个特定的区块中发生了更多的MEV交易。由于这是一个Flashbot构建块,你可以点击进入Marto构建的Flashbot浏览器来查看更多交易,并在Sentio调试器中查看资金流、余额变化和调用跟踪详细信息。
三明治攻击
套利策略通常是在有利可图的交易后追加交易,但三明治攻击是一种通过在目标交易之前和之后添加1个(或更多)交易并强制这些交易按顺序执行来获利的策略。让我们从上帝视角看一下典型MEV三明治攻击的运作流程:
首先,用户向mempool提交交易,MEV机器人持续监控所有mempool交易,并追踪该交易,并确定该交易是否可以成为三明治的盈利机会。一旦发现机会,MEV机器人需要通过在目标交易之前和之后插入交易(就像包装三明治)来创建一个bundle,并向区块构建者提交该bundle。当mempool交易被包含在下一个区块中并执行时,bundle交易将按照下面的确切顺序执行。
MEV机器人通过操纵池流动性来产生利润。在抢先交易中,MEV机器人可以以较低的价格购买资产。在目标交易之后,攻击者以更高的价格出售之前购买的token。
我们以区块17786884上的最近3笔交易为例(Position 0—2)。
Position 0(抢先交易):0×850开头的交易
该交易是由MEV机器人插入的,以swap 724.6 WETH为1.34M USDC,目标交易之前,该交易是按1857 ETH/USDC价格进行的。
Position(目标交易者):0xc3ae开头的交易
目标交易者希望swap 2743 ETH为USDT(Uniswap V3),最终由Uniswap Router处理并以平均1851 ETH/USDC价格完成交易。由于抢先交易的出现,目标交易者遭受了不同的价格,在MEV机器人抢跑的池中以1850 ETH/USDC的价格swap了1782 ETH。
Position 2(后跑):0×040开头的交易
该交易是由MEV-bot在目标交易之后插入的,134M USDC被swap为727.6 ETH。Position 0和Position 2结合的最终结果是MEV-bot获利了3 ETH,而目标交易者则遭受了更高的swap价格。下面这两个Position的持仓变化可以让您快速了解MEV机器人获取的利润。
为了保护swap免受三明治攻击的影响,你应始终设置最大滑点。否则,滑点将被三明治攻击利用,并成为MEV-bot的收入(例如,以编程方式设置时,在应用UI或amountOutMinimum/sqrtpricelimitx 96参数内的swap设置中设置一个百分比)。
清算
MEV机器人还可以在借贷协议中获利,借贷协议是连接贷款人和借款人的DEX(例如MakerDAO、Aave、Compound等)。借款人提供平台支持的抵押品后可以借入一定价值的资产,当借款人的抵押品无法偿还债务时,就会发生清算,清算人被激励以低价购买抵押品偿还债务。
让我们以0×652开头的交易为例。
0×310地址开头的MEV机器人通过从Balancer获得闪电贷获得212 USDT借款,然后MEV-bot在步骤3-8中清偿了借款人所欠的USDT,0×994地址开头的MEV机器人以折扣价获得了抵押品作为回报,在步骤8-11中,MEV机器人将所有收到的TUSD swap为WETH和USDT,并在步骤12中还清了初始闪电贷,所有步骤都在一次交易中完成。
长尾 MEV
套利、三明治攻击和清算是提取MEV的主要方式。此外,MEV中还有其他一些策略,这些策略是利基的、神秘的和未被发现的,这些均被称为长尾MEV。