Bupt3 分享10—mev 拆解

Hacker Dōjo Workshop:
研究种类:课题研究
资助金额:120 USDT
分享者:Syshems 北邮在读硕士
本项目由Hacker Dōjo资助,文章转载请联系
Telegram: @DoraDojo0
WeChat: @HackerDojo0

19 世纪初,罗斯柴尔德家族以法兰克福为起点进行业务拓展,先后在伦敦、巴黎、维也纳和那不勒斯建立起信息网络,使用信鸽、信使和租船在欧洲传递信息,速度比任何人都快。通过该网络,罗斯柴尔德家族比任何人都能更快地获得新闻和信息,并利用这些信息在套利和事务中获利。

在所有市场中,信息都具有价值的。人们为了能优先接触到信息,进行着非常激烈的竞争。即使在今天,在传统市场上,高频交易机构和对冲基金在世界各地的发射塔和电缆上花费数十亿美元,进行军备竞赛,以获得仅以毫秒为单位的信息优势。

加密世界也不例外。在链上,对订单流和下单权优先访问的竞争愈演愈烈。这种「最大可提取值」的概念(MEV,Maximal Extractable Value)已从一个小众话题出现在几乎所有加密协议的前沿。

一、常见的 MEV 方式

1、MEV 是什么

MEV 代表最大可提取价值 (Maximal Extractable Value)。矿工 (或验证者、序列器) 在其生产的区块中通过其能力任意打包、排除或重新排序交易可以获得一定的利润,而 MEV 便是衡量该利润的一种度量。

MEV 有两个参与方,搜寻者(searcher)和矿工(miner)。

searcher 搜索以太坊上面有利可图的交易(transaction),例如Dex套利、三明治套利、清算交易、NFT minting 等等,他们通过智能合约实现一笔复杂的交易,发送给到mempool中,矿工将mempool中的所有交易排序、打包、执行,searcher 会将交易利润的一部分作为燃油费(gas fee)支付给矿工,矿工则根据燃油价(gas price)的大小决定在下一个区块中这些交易的顺序(indexing)。

还有一种特殊类型的 searcher,他们不会自己去搜索机会,而是会观察mempool中别的searcher提交的交易,把交易的签名者变成自己的钱包地址,以更高的gas price发送给矿工抢先成交,这种人统称为抢跑者(front runner)。

可见 gas price 非常重要,因为它决定了交易的顺序。在以太坊黑暗森林里不只一个猎人,当一个机会出现时会有许多searcher发现并提交自己的交易,在下一个区块中如果你的交易没有排名第一,那么就会失败,因为利润已经被其它的searcher抢走了。这就不可避免的出现一场gas战争(gas war),seacher会把交易利润的90%以上变成gas fee支付给矿工,以提高自己的排名。如果交易失败,矿工并不会把 gas fee 返还给 searcher。最后造成恶性竞争,网络拥堵,而矿工成了这场战争的唯一赢家。

2、MEV 是怎么发生的

以太坊的原始架构要求将所有待处理的交易保存在 mempool 中,对公众开放,并提交给对等网络进行处理。

通过提交相同的交易,并将自己作为受益人和用更大的 gas 费用,厉害的用户可以评估待处理交易,并在套利者之前执行他们的交易。然而,矿工是网络中领先于其他参与者的最佳人选,因为他们最终决定哪些交易在区块中完成,以何种顺序完成。此外,他们可以迅速复制来自 mempool 的所有获胜交易,并在套利者和任何试图超越他们的人(另外的抢跑者)前面执行交易 - 称之为 抢跑(front-running)。和抢跑交易一样,矿工也可以选择尾随交易(back-running),这发生在矿工在注意到一个重要的买盘后,输入一个卖盘,卖掉购买压力。另外,在三明治交易(Sandwich attack)中,矿工会在影响市场价格的交易后马上下卖单,在交易前下买单,也就是说,通过同时进行买单和卖单来控制风险。

3、Flashbots

为了解决这种乱象,Flashbots应运而生。Flashbots提供这样一种服务,searcher不用把交易发送到mempool,而是把一笔或者多笔交易捆绑(bundle)直接发送给矿工,如果成功开采下一个区块的矿工恰好也运行了Flashbots的客户端(Flashbots的哈希率目前大概是80%),他就会按照如下规则执行所有bundle:

  1. 模拟独立执行所有的bundle,记录每个bundle的price,bundle_price =矿工从bundle中获得的总收益/bundle的总gas_use,具体计算公式参考:Bundle Pricing | Flashbots Docs
  2. 将bundle_price从高到低排序,按照顺序模拟执行一遍,把包含失败(revert)交易的bundle剔除掉,剩下成功的bundle按照既定顺序打包上链(include),在一下个区块中,这些bundle会排在最前面
  3. 如果一个bundle中包含多笔交易,只要其中一笔交易失败,整个bundle都不会被include,searcher也不会有任何损失(但是有5%的概率发生uncle bandit攻击,bundle会被泄露到mem pool中被其它矿工执行,如何避免被uncle,参考https://docs.flashbots.net/flashbots-protect/rpc/uncle-bandits)

由于交易不发送到 mempool ,searcher 就不用担心被抢跑,由于失败的交易不会上链,也不用担心交易失败造成的燃油费损失,避免了大规模gas war造成的网络拥堵。接下来,searcher只需关心如何提高自己的bundle_price获得排名第一的位置。

  1. 提高矿工的总收益,即把交易利润中的更多比例变成矿工费
  2. 减少gas_use,通过优化代码减少交易中gas使用量

支付矿工费有两种方式:

  1. maxPriorityFeePerGas(tip price),在EIP-1559中,gas_price = base_price + tip_price,其中base_price直接燃烧掉,tip_price支付给矿工。
  2. 在智能合约中直接通过coinbase.transfer向矿工转账ETH

以上两种方式是完全等价的。

4、常见的 MEV 方式

4.1 背后套利(BackRun)

监控mempool,发现其它用户提交的swap交易。比如有一笔交易,调用Uniswap Router合约,发送了一笔WETH兑换为USDT的交易,由于数额巨大,该交易如果完成,将会显著抬高WETH/USDT池子中的USDT价格,和其它的Dex(比如Curve)出现价差。searcher会在它之后,在Uniswap和Curve之间进行套利,两笔交易捆绑成一个bundle发送给矿工:

(1) 用户: Uniswap WETH=>USDT

(2) searcher: Curve(WETH=>USDT) => Uniswap(USDT=>WETH)

由于Uniswap中USDT的价格比Curve中要高,所以searcher低买高卖,获得更多了WETH,除去本金以及交易成本,获得利润。

4.2 清算(Liquidations)

贷款协议清算提供了另一个众所周知的 MEV 机会。

像 Maker 和Aave这样的贷款协议要求用户存入一些抵押品(例如 ETH)。这些存入的抵押品随后被用来贷给其他用户。然后,用户可以根据需要从其他人处借入不同的资产和代币(例如,如果他们想对 MakerDAO 治理方案进行投票,他们可以借入 MKR,如果他们想在 Sushis Swap 上赚取一部分交易费用,他们可以借入 SUSHI),最高可达到其所存抵押品的一定比例(协议确定了精确的借用功率百分比)。 例如,如果借款金额的上限是 30% ,那么在协议中存入 100 DAI 的用户可以借款另一项资产的最高价值为 30 DAI。

随着借款人抵押品价值的波动,他们的借款能力也会波动。 如果由于市场波动,借入资产的价值超过了抵押品价值的 30% (同样,确切的百分比由协议决定),协议通常允许任何人清算抵押品,立即偿还出借人(这与传统金融中追加保证金的方式类似)。 如果清算,借款人通常必须支付大笔清算费, 其中有些是流向清盘人的——这就是 MEV 机会出现的地方。

searcher 竞相以最快的速度解析区块链数据,以确定哪些借款人可以被清算,并成为第一个提交清算交易并自行收取清算费的人。

4.3 三明治攻击(Sandwich attack)

监控 mempool,发现其他用户提交的 swap 交易。比如有一笔交易,调用 Uniswap Router 合约,发送了一笔 WETH 兑换为 USDT 的交易,并设置了 10% 的滑点(slippage),searcher会在它之前,提前在Uniswap的WETH/USDT池子中将WETH兑换为USDT,然后在它之后将USDT换回WETH,把三笔交易捆绑成一个bundle发送给矿工:

(1) searcher: WETH=>USDT

(2) 用户: WETH=>USDT

(3) searcher: USDT=>WETH

由于用户的兑换行为提高了USDT的价格,所以searcher会得到更多的WETH,除去本金以及交易成本,获得利润。

searcher会精心计算WETH的初始数量,保证用户的兑换结果恰好在10%滑点范围之内,因为如果超出了10%,用户的交易就会失败,从而整个bundle不会被矿工include。

4.4 Uncle-Bandit 攻击

当两个区块被挖矿并同时广播,且区块编号相同时,就会产生叔块。在后续区块收到节点的更大验证后剩下的另一个区块,其交易不改变任何状态,被称为叔块或孤块。

叔块内的交易是公开的,为搜索者或攻击者提供MEV机会。例如,当flashbots用户(搜索者)提交一个三明治交易(一捆交易)时,他们可以在取走三明治的买入部分后应用套利。此外,运行 MEV-Geth 的矿工使用户能够绕过公共mempool,并通过直接向验证者提交捆绑交易来避免抢跑风险。

4.5 NFT MEV

NFT 领域的 MEV 是一种新兴现象,而且不一定能赚钱。

然而,由于 NFT 交易发生在所有其他以太坊交易共享的同一个区块链上,searcher 也可以在 NFT 市场上使用与传统 MEV 机会类似的技术。例如,如果有一个流行的 NFT 下降,并且 searcher 想要某个 NFT 或一组 NFT,他们可以对一个交易进行编程,使他们成为第一个排队购买 NFT 的人,或者他们可以在一次交易中购买整个 NFT 组合。 或者,如果一个 NFT 被错误地以低价挂出,searcher 就可以抢在其他购买者前面,低价抢购。

4.6 Time-Bandit 攻击

Time-Bandit 攻击的目的是逆转区块链上的交易。例如,如果搜索者在先前验证的区块中发现了极其有利可图的MEV机会,他们可以提议改变以太坊的历史进程,并重发/重新验证这些区块以利用他们刚刚发现的机会。为了逆转交易,他们通过提供有利可图的激励措施,鼓励验证者进行 Time-Bandit 攻击。

由于这种攻击允许任何人发布改变区块链历史的提案,它们的功能是将区块链当前状态的共识拍卖给出价最高的人,使以太坊网络的完整性面临风险。

4.7 长尾 MEV

长尾 MEV 机会比比皆是。比如:利用 NFTX 实现 Apecoin 空投套利

  • Apecoin项目方在空投时按照无聊猿NFT持有即可获取Apecoin代币。
  • 一些无聊猿NFT持有者将其放在NFTx中的碎片化金库(Vault)中。
  • 套利者通过购买 Vault Token ,赎回完整池,认领 Apecoin 空投,最后重新供给该池。
  • 套利者通过在一个transaction中反复使用NFTx的mint/redeem,来获得多个的无聊猿NFT的所有权,从而claim Apecoin。
  • 套利者通过这种方式获得了大量的Apecoin代币,从而获得了套利利润。

再比如 1inch 遗留代币:1inch 偶尔会因某些原因在路由器合约中留下少量代币。一个被编程的 MEV 机器人会扫描这个路由器合约来获利。

二、MEV 的影响与重要性

1、优点

许多 DeFi 项目依靠经济上的理性行为者,来确保其协议的有用性和稳定性。 例如,DEX 套利确保用户为他们的代币获得最好、最正确的价格,而借贷协议在借款人低于抵押率时依靠快速清算来确保贷款人得到回报。

如果没有理性的搜索者寻求和修复经济上的低效率,并利用协议的经济激励,DeFi 协议和一般的 dapps 可能不会像今天这样强大。

2、缺点

在应用层,某些形式的 MEV,如夹心交易,会导致用户的体验明显变差。 被夹在中间的用户面临更高的滑点和更差的交易执行。

在网络层,一般的抢跑者和他们经常参与的矿工费拍卖(当两个或更多的先行者通过逐步提高自己交易的矿工费,从而使他们的交易被打包到下一个区块),导致网络拥堵和试图运行正常交易的其他人的高矿工费。

除了区块发生的,MEV 也可能会在区块间产生有害的影响。 如果区块中可用的最大可提取价值大幅超过标准区块奖励,验证者可能会被激励重组区块并为自己捕获最大可提取价值,从而导致区块链重组和共识不稳定。

三、MEV 未来的展望

根据 Flashbots 的数据,MEV 的毛利自 2020 年至今已经超过 6 亿美元,而且这个数据并不包括抢跑或三明治攻击,一些通过中心化交易所套利的数据,真实的 MEV 可能远超想象。对于 MEV 的未来,Flashbot 的领导者 Hasu 在一次黑客松中提出对 MEV 的 8 个预测,包括:

  • L1 上将会出来减小 MEV 的技术
  • MEV 拍卖会成为执行交易的标准
  • 公共内存池将逐渐消失
  • 外部订单问题会凸显
  • MEV 会返回给用户
  • 跨链 MEV 的会兴起
  • 延迟拍卖会越来越重要
  • 应用层将会出现更多的 MEV 解决方案

1、跨链MEV

假设L1以太坊上的Uniswap和Arbitrum上的Uniswap存在价格差异。ETH在以太坊上售价1400美元,在Arbitrum上售价1300美元。该如何套利呢?

  1. 官方桥:在Arbitrum上购买1个ETH,使用Arbitrum的官方桥将ETH移动到L1以太坊,需要7天。希望到那时价格不会波动太大(或者用永久期货对冲)。然后在L1以太坊出售。
  2. 第三方桥:使用第三方桥将ETH移动到L1以太坊。需要5-20分钟,取决于用户对速度、安全性和收益的优先级考量。
  3. CEX:一些事务所直接接受Arbitrum的存款。从存款到取款时间不定,但大致在5-20分钟之间。
  4. 自营资产负债表:在两条链上持有ETH和USDC的组合,并在机会出现时在两条链之间进行套利。不时重新平衡,以确保两条链上都有足够的库存。

显然,备选方案4几乎总是能使你获利。但这种策略也是最资本密集型的选择,有利于专业做市商和机构。

事实上,这种动态刺激了跨多个链的连结。跨链MEV执行是概率事件,一个机构可以在多个链上设置验证者,以最大程度降低风险并更有效地捕获MEV。

2、PFOF与交易流拍卖

PFOF(Payment for Order Flow)是一种交易模式,在PFOF模式下,经纪商通过与做市商进行交易来执行订单,做市商会根据提供的最佳价格来竞争执行这些订单。交易流拍卖是 SEC 计划推出的一项改革措施,要求零售经纪商通过拍卖的方式提交零售订单,以增加交易的透明度和公平性。

用户意图和交易流是MEV的主要来源。因此,我们可以想象一个场景,钱包或应用程序将它们的交易流「拍卖」给构建者。钱包、应用程序和基础设施提供商处于有利地位,可以从聚合和拍卖订单流中受益,从而获得收益。

3、以太坊权益证明 (POS) 机制下的最大可提取价值

MEV 对用户综合体验和共识层安全性产生了不利影响,但以太坊向权益证明共识的过渡(称为“合并”)还可能带来与最大可提取价值有关的新风险:

3.1 多区块MEV

受功率限制,多区块MEV以前在以太坊(POW)上是不可行的,因为没有人事先知道下一个提议者是谁。然而,以太坊合并后,任何人都知道谁将在一个纪元内提出接下来的32个区块。目前有超过44.5万个活动验证者,看起来一个验证者似乎不太可能被选中在一个纪元中提出多个区块,更不用说多个连续区块。然而,多个验证器通常存在于一个实体或池下。仅比特币基地就控制了13%的活动验证者——这让他们有大约39%的机会连续提出至少2个区块。

也许,多区块MEV带来的最大威胁就是操纵TWAP价格预言机,从而利用货币市场协议。虽然这不是主要威胁,但当TVL回归时,这些攻击的风险就会增加。

但这只是一个可能,我们还没有看到多区块MEV有这样的动机,特别是持续几个区块都有这种动机。五个连续的区块意味着一个实体可以在以太坊上控制整整一分钟的区块生产。

3.2 验证者中心化(验证门槛+合并倾向)

在合并后的以太坊中,验证者(已经存入 32 个以太币作为保证金)就添加到信标链的区块的有效性达成共识。 由于 32 个以太币可能超出了许多人的能力范围,加入质押池是一种更可行的选择。

同时,最大可提取价值提取被认为能够加速验证者中心化。 部分原因是,由于验证者在提出区块时收益要低于当前矿工提出区块的收益,合并后最大可提取价值提取可能会显著影响验证者的收益。更大的质押池可能会有更多的资源投资进行必要的优化,以抓住最大可提取价值机会。 这些质押池提取的最大可提取价值越多,它们用来提升最大可提取价值提取能力(并增加总收入)的资源就越多,这在本质上形成了规模经济

3.3 许可内存池 vs 公共内存池

为了应对三明治攻击和抢先交易攻击,交易者可能会开始与验证者进行链下交易以确保交易隐私。 交易者将潜在的最大可提取价值交易直接发送给验证者而非公共内存池,验证者将交易添加到区块中并与交易者分配利润。

“暗池”扩展了这种模式,是一种只供访问的许可内存池,对愿意支付一定费用的用户开放。 这一趋势将弱化以太坊的无许可和免信任特性,并有可能将区块链转变成一种有利于最高出价者的“付费参与”机制。

许可内存池还会增加上一节中描述的中心化风险。 运行多个验证者的大型池可能会受益于为交易者和用户提供交易隐私,增加其最大可提取价值收入。

在合并后的以太坊中解决这些与最大可提取价值相关的问题是一个核心研究领域。 迄今为止,为了减少最大可提取价值对合并后以太坊去中心化和安全性的负面影响,提出了两种解决方案:提议者-构建者分离 (PBS)构建者应用程序接口

3.4 提议者-构建者分离

在工作量证明和权益证明机制中,构建区块的节点面向参与共识的其他节点提出区块以将其添加到链中。 新区块在另一位矿工在其上构建区块(在工作量证明中)或从大多数验证者那里获得认证(在权益证明中)后,成为规范链的一部分。

区块生产者和区块提议者角色的合并造成了大多数前面描述的与最大可提取价值相关的问题。 例如,在时间盗贼攻击中,共识节点受到激励引发区块链重组,以最大限度增加最大可提取价值收入。

提议者-构建者分离(PBS) 旨在减轻最大可提取价值的影响,尤其是对共识层的影响。 提议者-构建者分离的主要特点是区块生产者和区块提议者规则的分离。 验证者仍然负责提出区块并投票,但有一类新的特别实体(称为区块构建者),其任务是对交易排序和构建区块。

在提议者-构建者分离解决方案下,区块构建者创建一个交易包并出价将其包含在信标链区块中(作为“执行有效负载”)。 选中提出下一个区块的验证者随后查看不同的出价,并选择费用最高的交易包。 提议者-构建者分离实际上创建了一个拍卖市场,让构建者和出售区块空间的验证者谈判。

Danksharding 提出了一个新的机制**出块者-打包者分离(PBS,Proposer-Builder Separation)**来解决 MEV 带来的问题,

  • 性能配置高的节点可以成为打包者(Builder),打包者只需要负责下载 Blob 数据进行编码并创建区块(Block),然后广播给其他的节点来进行抽查,对于打包者(Builder)来说,因为同步数据量和带宽要求较高,所以会相对中心化。
  • 性能配置较低的节点可以成为提议者(Proposer),提议者只需要验证数据的有效性并创建和广播区块头(Block Header),但对于提议者(Proposer)来说,同步数据量和带宽要求较低,所以会去中心化。

  • 抗审查清单(crList)限制解决出块者 MEV 的能力

对于打包者(Builder)来说其实是拥有了更大的审查交易的能力,打包者可以故意忽略掉某些交易并且随意排序并插入自己想插入的交易去获取 MEV,抗审查清单(crList)解决了这些问题。

抗审查清单(crList)的机制如下:

1、在打包者(Builder)打包区块交易之前,提议者(Proposer)会先公布一个抗审查清单(crList),这个 crList 中包含着 mempool 中的所有交易

2、打包者(Builder)只能选择打包并对 crList 里的交易进行排序,这意味着打包者不能插入自己的私有交易去获取 MEV,也不能去故意拒绝某个交易(除非 Gas limit 满了)

3、打包者(Builder)打包好之后将最终版本的交易列表 Hash 广播给提议者(Proposer),提议者选择其中一个交易列表生成区块头(Block Header)并广播

4、节点同步数据时会从提议者(Proposer)那获取区块头,然后从打包者(Builder)那获取区块 Body,确保区块 Body 是最终选择的版本。

四、总结

尽管 MEV 目前的影响力可以忽略不计,但它可能成为一股高度集中的力量,影响所有区块链发展。MEV 对区块链网络的稳定性也是长远来看日益增长的威胁。

从「抑制 MEV 」的角度来说,目前主要有两个方向:
1、抑制矿工实施 #MEV 的能力
2、让更多普通用户可以接触到 #mempool

作为普通人,为了减少遭到 #MEV 攻击,我们可以通过调低滑点、调高 #Gas、尽量使用返还 gas 的协议(如 @1inch)等方式提升 MEV 的攻击成本来保护自己。

参考:

WEV-wiki:Uncle bandit attack - MEV Wiki

登链:[科普] 什么是MEV:区块链的隐形税 | 登链社区 | 区块链技术社区

Twitter:https://twitter.com/whiskoy_eth/status/1655062649120653314

flashbots:区块链开发课第二讲 MEV套利原理 — yueying007

PBS:详解 PBS 机制:对以太坊协议和 MEV 生态有何影响?_MarsBit