[DEX 系列] 4. MEV

  • JwagmiB
  • 发布于 2022-03-04 17:51
  • 阅读 9

本文深入探讨了最大可提取价值(MEV)在以太坊网络中的影响及其攻击类型,涵盖了抢跑交易、尾随交易、三明治攻击等具体实例。同时,文章详细介绍了现有的解决方案,如Flashbots和Cowswap等,力求减轻MEV对以太坊用户和网络安全的负面影响。

[DEX 系列] 4. MEV

前言

首尔大学区块链学会Decipher的DeFi系列团队发布了DEX系列文章。从使用基本AMM模型的多个DEX开始,进一步探讨了采用订单簿的DEX和进行期货交易的DEX。这些都是各自在应对问题时找到了解决方案的案例。但在应用层面上存在的问题,以太坊网络上的应用必然会面临的一个问题就是MEV(Maximal Extractable Value)问题。

[DEX 系列] 1. 不同价值资产的交易

2. 同一价值资产的交易

3. 期货交易

4. MEV

作者

Decipher的Jason,‘DeFi系列’团队

首尔国立大学区块链学院Decipher(@decipher-media)

审稿人:郑재焕

MEV(Maximal Extractable Value)是什么?

MEV的概念首次出现在2019年4月,Philip Daian的论文《 Flash Boys 2.0》中。MEV是指网络矿工通过任意的包含、排除或重新排列区块中的事务而获得的收益。为了理解这一点,我们先简单了解用户在网络上生成事务的过程。​

待处理的事务存在于客户池(mempool)中,任何人都可以查看。

本文的读者们可能也有使用 MetaMask 个体钱包生成事务的经历。然而,在包含Gas费(Gas fee)生成事务时,事务并不会立即被处理,事务并不会立刻包含在区块链的区块中。事务传播到网络的时刻和实际上打包到区块的时刻之间存在时间差。在此期间,事务会暂时处于挂起状态,存放在客户池(mempool)中。客户池内的待处理事务可以被任何人查看。

由于任何人都可以查看待处理的事务,结合以太坊网络中矿工按Gas费排名处理事务的特点,套利者(Arbitrageurs)和矿工等便可以利用这一点,寻找提取MEV以最大化收益的机会。​

在早期,MEV这一术语被定义为矿工可提取价值(Miner Extractable Value)。但是,随着当前大多数MEV的收益来源于套利机器人(Arbitrage bot)或者借贷协议的清算机器人(Liquidation bot),如今MEV更常被称为最大可提取价值(Maximal Extractable Value)。

然而,由于机器人竞相提交较高的Gas费以提取MEV,因此即便矿工并没有直接获得MEV,他们也必然会间接获益。因此,矿工与机器人之间的关系可视为一种共生关系,而非单纯的敌对关系。

MEV 攻击种类​

来源:Delphi Digital

前置运行(Front-Running)

MEV攻击者在客户池中捕获目标事务后,通过提交更高的Gas费,使其事务可以在目标事务处理之前先行处理。以下是一个例子。

Alice用10,000 USDC提交了一笔交易,试图通过Uniswap的AMM购买X代币。攻击者在客户池中捕获了这一事务,并提交了一笔更高Gas费的购买X代币的事务。如果攻击者的事务被优先处理,由于Uniswap的AMM模型CPMM的特性,攻击者将首先购买X代币,因此X代币的价格将会上涨。这样,Alice将会以更高的价格购买X代币,从而造成经济损失。

后置运行(Back-Running)

针对目标事务,攻击者将其事务处理在目标事务之后或紧随其后,以捕获目标事务的收益。为此,攻击者提交的事务Gas费将与目标事务的Gas费几乎相同,或者稍微低一些。以下是一个例子。​

后置运行机器人可以利用AMM DEX中新代币以低价上市的机会进行攻击。当机器人查看以太坊网络的客户池时,如果捕捉到Uniswap新流动性池的生成,若能在池子开启后立刻成功进行代币交换,机器人就能以低价大量购买代币。为了提高成功概率,机器人会以适当的Gas费重复在短时间间隔内发送相同的事务。​

三明治攻击(Sandwich Attacks)

同时使用上述的前置运行和后置运行攻击,在目标交易前后分别插入攻击者的事务。以下是一个例子。

Alice恰好想用10,000 USDC在Uniswap上购买50个Y代币。攻击者Bob捕获了这一事务,并提交了一笔更高Gas费的事务,先行购买了10,000 USDC的50个Y代币(前置运行)。因此,由于Bob的操作,AMM中的Y代币价格上升,Alice不再能以10,000 USDC购买到50个Y代币,而只能购买更少的Y代币。Bob可以在Alice交易结束后,以更高的价格出售刚刚购买的Y代币,从而获得超出10,000 USDC的收益(后置运行)。​

时间劫持攻击(Time-Bandit Attacks)

矿工挖掘以太坊网络的过去区块,从中提取尚未被提取的MEV。有关详细说明将在“为什么MEV是一个问题?”部分中介绍。

Uncle Bandit Attack

上述提到的前置运行、后置运行和三明治攻击,都是针对公共客户池中待处理事务的MEV攻击。时间劫持攻击将目标锁定在已经挖掘的过去区块中的事务。即便事务不在客户池中,也不在过去的区块中,仍然可能遭遇MEV攻击,这就是Uncle Bandit Attack。

由于网络的共识协议的特性,有时以太坊网络的区块几乎同时被挖掘。然而,在区块链网络中,最终只有一个区块能被记录下来,而另一个未录入的区块被称为uncled或者orphaned区块。与任何人都可以查看客户池相似,任何人均可查看uncled区块。如果MEV攻击者查看了uncled区块,并发现某个事务包含在其中,但未包含在正式区块中,他就可以通过这个事务进行攻击,因为该事务已经暴露。

MEV的问题

首先,使用以太坊网络的用户遭受了金钱损失。上述提到的三明治攻击使事务发送者Alice以高于意图价格的价格购买代币,从而遭受金钱损失。

其次,为了提取MEV,网络上存在大量的机器人,且因它们的Gas费竞争导致网络和链负担极重。这给使用以太坊网络的其他用户带来了时间和金钱上的不便。​

第三,MEV攻击会破坏以太坊网络的共识,使整个网络受到影响,其中提到的“时间劫持攻击”便属于这一类。以下是一个例子。

假设有两个矿工Carol和Dan。假设每当他们成功挖掘1个以太坊区块时,会获得$100的奖励,且Carol已经挖掘到3个区块。那么Dan发现其中第一个区块中包含一个$10,000的MEV提取机会。如果按照常规,Dan必须在Carol挖掘的3个区块之后再挖掘一个,但是为了提取这$10,000的MEV,他可以重新挖掘这三个以太坊区块。从Dan的角度来看,MEV相较于挖矿奖励更具吸引力,因此他会再次尝试从上开始挖掘3个区块,并在此之后引导Carol挖掘的3个区块背后再挖掘他的区块,随后引发长链规则下的重组(re-org)。

如上例所示,如果区块挖矿奖励与MEV相比没有吸引力,矿工可能会选择为了获取MEV而伤害以太坊网络的稳定性,而不是遵循维护以太坊网络安全性的共识算法。

MEV的解决方案​

针对MEV问题的解决方案日益多样化。根据解决方式的大方向,主要可以分为两种方法。第一种是将MEV视为网络中不可避免的存在,采取更为民主和有效的方式进行提取的进攻性方法。代表性案例包括Flashbots及其使用的DEX MistX,其他还有 KeeperDAOEden Network 等。

第二种是尽量减少或防止MEV的防御性方法。代表性案例包括Automata的Conveyor服务和Gnosis Protocol v2上运行的交易接口Cowswap。其他如ChainlinkArbitrum也提出了多种解决方案,而作为DEX系列,我们来探讨与DEX相关的主题。

Flashbots

Flashbots是一个旨在缓解MEV的负面外部效应,并减少MEV可能带给以太坊网络的风险的研究与开发组织。Flashbots的目标是创建一个无需许可证、透明且公正的生态,达到三大目标:民主化MEV收益的获取、透明化MEV提取过程、重新分配MEV收益。​

我们首先看一下Flashbots的服务Flashbots Auction。Flashbots Auction由MEV-geth和MEV-relay组成,可以将MEV-geth视为go-ethereum客户端的补丁版本。矿工在使用Flashbots服务进行挖掘时,应使用MEV-geth而不是原来的go-ethereum客户端。如下面将要描述的,这为矿工提供了最大化收益的动物。

Flashbots Auction的三个角色群体

参与Flashbots Auction的角色群体为Searcher、Relay和Miner,并决定事务依照排列顺序传递。我们逐个来检查这三种角色群体。

Searcher

Searcher是指那些不使用普通公共客户池网络,而选择使用Flashbots提供的私有事务池的用户。Searcher通常有三种类型。第一种是寻找快速且无风险环境的套利机器人或清算机器人操作员;第二种是希望避免前置运行攻击的Uniswap交易员等普通用户;第三种为如mistX那样希望在dApp层面提供MEV防护或无Gas费事务等服务的以太坊网络中的dApp。

大部分Searcher都是机器人,它们通过监视公共客户池收集可能获得MEV的事务,并将其组成捆绑(bundle),为了这些事务提交私有出价(bid),将其传递给Relay所操作的私有通道。换句话说,进行MEV竞标。

如果有机会提取价值$10,000的MEV,它会将这些事务捆绑并附上价值$9,500的出价发送给Relay。如果该捆绑被选择,则Searcher将获得意外收益$500。因此,出价最高的捆绑通常会相应提高至MEV的价值。

与机器人不同,普通用户的事务不会经过公共客户池,因此可以免受对获得MEV的机器人威胁。参与Flashbots的矿工会优先处理来自普通用户提交的事务。这一规则通过Flashbots公平市场原则(FFMP)被强制执行,矿工需要遵循这一规则。如果不遵循,矿工将被排除在外。

然而,普通用户通过使用Flashbots Auction提交捆绑事务的过程是十分复杂且繁琐的。因此,Flashbots还提供了‘ Flashbots Protect’功能。普通用户借助此功能可以有效杜绝前置运行威胁。只需在MetaMask个体钱包中输入RPC endpoint的URL,即可简单添加网络。通过这一网络,普通用户也能将事务发送至Flashbots Auction。​

普通用户使用Flashbots Protect有四个优势:

1. 能够抵御前置运行攻击。因为发送的事务对监视MEV提取机会的机器人是不可见的。

2. 事务不会失败。即,节省因事务失败而支付的Gas费。

3. 被Flashbots发送的事务会优先被矿工处理。根据上述FFMP规定。

4. 与Etherscan服务集成,尽管事务通过私有通道发送,用户仍然可以通过Etherscan跟踪事务状况。

Relay

Relay则负责验证并路由从Searcher接收到的捆绑事务。由于Searcher不会对未被写入区块的失败捆绑支付费用,因此不合理的捆绑可能会对网络造成垃圾邮件攻击,以太坊矿工无法承担这额外的负担,因此Relay的目的在于降低这一DOS威胁。然而,目前在Flashbots中,Relay角色仍处于中心化。Flashbots团队最终目标是实现这一角色的去中心化目标

Miner

Miner即为矿工。他们从Relay接收捆绑,然后将其打包并挖掘区块。矿工通常使用go-ethereum客户端按照Gas费高低顺序排列事务生成区块,而与Flashbots连接的矿工则使用MEV-geth客户端。MEV-geth客户端的节点会从输入的捆绑中选择出最具盈利性的捆绑进行挖矿。因此,矿工的收益得以最大化。

来源:Delphi Digital

通过Flashbots,尽管能够缓解以太坊网络上广泛存在的MEV问题,但更重要的是解决由此所带来的负面外部效应。自Flashbots推出服务以来,抽取MEV的平均Gas费有所减少,且失败的事务数量显著降低。Flashbots提供的各种数据,均可在其网站上获取。目前Flashbots的不足是防御前置运行攻击的能力尚可,但对后置运行攻击的防御仍显薄弱。

MistX

MistX 是基于Flashbots技术运行的DEX。用户使用MistX发送事务时,系统将通过Flashbots捆绑将事务传递给矿工。由于使用Flashbots的服务,用户无需支付Gas费,而是支付所产生的矿工小费。

Automata的传送带(Conveyor)

来源:Automata文档

上述的解决方案是对MEV问题的进攻性手法。然而,Automata等项目对MEV的处理方式则是防御性方法。当事务进入Automata的传送带时,将会依次进行排序,矿工无法对这些已排序的事务进行新增或删除,因此就能防御通过重新排序获利的MEV攻击。

Cowswap

Cowswap 是DEX聚合器的聚合器,通过其独特的批量竞标系统和能够在批量交易中发现互惠需求(Coincidence of Wants,CoWs)系统,它能够有效预防MEV问题,并提供最佳的交易条件。Cowswap是基于Gnosis Protocol v2(GPv2)构建的交易界面。

来源:Cowswap文档

该协议的基本结构如下。使用GPv2的交易者的事务以批量方式在线下汇总,因此用户在使用GPv2进行交易时不需要发送事务,签名即可,所以不需支付Gas费,只需支付一定费用给解决协议提供最优路径的求解者(solver)。在这种离线过程中,交易聚合的同时,去中心化的求解者们竞争找到最佳交易方案。找到最佳路径的求解者将获得代币奖励,并促成交易的达成。接下来,进一步详细了解批量内的交易是如何成功的。​

互惠需求(CoWs)是协议中最具创新性的功能。当批量内的人们彼此恰好拥有希望交换的资产时,系统计划通过点对点(p2p)交易完成这一过程,而不经过链上的AMM。以下是一个例子。

假设Alice希望用5,000 USDT交换1个ETH,Bob希望用1个ETH交换5,000 USDC,Carol希望用6,000 USDC交换6,000 USDT。这三笔交易将在链外提交,然后被捆绑成批量。求解者利用这些信息查找最佳的交易路径,首先巡查是否存在CoWs。在此机缘下发现他们彼此需要相互交换的资产,因此可以先在批量内进行交易:Carol向Bob传递5,000 USDC,Bob向Alice传递1个ETH,Alice向Carol传递5,000 USDT。这算是第一交易完成。这便是CoWs的例子。交易完成后,Carol依然有1,000 USDC未兑换成1,000 USDT,因此残余的交易则通过链上的流动性进行交易,即寻找如Uniswap等具有流动性的AMM或者像1inch这样的AMM聚合器,以最佳价格条件完成交易。​

换言之,若使用Uniswap等AMM,原本需要进行3次交易并只能使用在Uniswap内的流动性;但是在Cowswap中,通过在批量内找到CoWs,并以最佳价格进行一次p2p交易后,再使用链上的整体流动性完成剩余交易,因而能提供比任何AMM或AMM聚合器更优化的交易条件。

12个事务在GPv2上汇聚共享流动性。

实际例子可以在etherscan的事务记录中找到。批量中的12个交换事务相互交织并共享流动性,剩余的交易则通过链上AMM完成。

此外,Cowswap在与MEV相关的问题上,防范了前置运行、后置运行以及三明治攻击。由于交易以订单批次的形式集合,而非链上进行,因而避免了受到公共客户池上监视的机器人的威胁。​

结语

在区块链上进行资产交易时,由于扩展性限制,DEX不得不选用与人们所熟悉的订单簿方式不同的AMM模型。我们在系列的第一篇和第二篇中探讨了为了交换资产的特性优化的多种AMM模型。然而AMM模型也有其根本的问题,因此我们还探讨了一些改善区块链扩展性的DEX(第三篇),以及使现货交易得以进行的DEX,甚至进行期货交易的DEX(第四篇)。最后,本文回顾了区块链网络上不可避免存在的MEV问题。感谢读者耐心阅读,我们将就此结束DEX系列。​

参考文献

  • 原文链接: medium.com/decipher-medi...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
JwagmiB
JwagmiB
江湖只有他的大名,没有他的介绍。