您的位置:首页 >期货 >

全面梳理抗MEV的八项方案

2021-07-30 18:50:12来源:金色财经

在 2020 年 8 月,Paradigm 的交易员 Dan Robinson 尝试收回原本质押在 Uniswap 的流动性代币。为此他部署了 setter 和 getter 两个合约,并先后调用两个合约实现收回流动性代币。但其合约调用并没有成功完整实施,反被攻击者发现并捷足先登。攻击者执行了他原本要调用的合约。同年次月,Sam Sun 发现了 lien finance 的合约漏洞问题,该漏洞一旦被攻击可造成 2.5 万个 ETH 的巨额损失。作者尝试拯救 lien finance 的合约漏洞,但却担心遭遇 Robinson 相似的问题。若攻击者发现他的拯救计划,攻击者将可以发现此漏洞、执行攻击并拿走平台上的 2.5 万个 ETH。

为此,尽管此次拯救行动事发突然,Sam 联系多方人士,并最终在星火矿池的帮助下躲避攻击者监听、攻击,成功实施漏洞修复。星火矿池在此事件中将执行的交易放进其私密的 mempool,防止被链上的攻击者监听。而这同时也是决定两个事件成败的根本原因。

这两个事件揭露了当前的区块链是黑暗森林这一事实。实际上区块链节点网络构成的黑暗森林中存在一批伺机而动的套利机器人 / 攻击者。所有等待被打包的待确定状态交易(pending transaction)在等待池(Mempool)中被曝露在黑暗森林中。攻击者可查看追踪每笔交易、每一个内部合约调用以及每一条指令,并对这些交易进行当前链上最常见的抢跑和三明治攻击。

我们认为链上攻击产生的本质原因在于区块链的设计。

首先是区块链的 mempool 设计,所有交易被发送出去后,并不是直接由矿工打包,而是需要先暂时进入 mempool。mempool 包含着待确认交易(pending transactions),且由于 mempool 具有公开性,任何人可以监听 mempool 的每笔交易、每个调用的函数。这为攻击者提供了监听交易事件的条件。

其次区块链出块时间为攻击者提供了执行时间。据 Etherscan 数据显示,目前以太坊的平均出块时间为 13s。

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

以太坊平均出块时间,来源:Etherscan

在 2019 年的 《Flashboy 2.0》 这篇文章中,首次提到了矿工可提取价值(MEV:Miner-extractable value)这一概念:指矿工可以通过在他们生产的区块中包含、重新排序、插入或忽略交易来获得的额外利润。经过区块链这两年的发展,以及链上活动的研究进程推进,目前 MEV 已经延伸为最大可提取价值(Most extractable value)。

当前 MEV 掠夺战参与者包括非矿工和矿工两者。非矿工主要指套利 / 清算等机器人,矿工指负责挑选交易并且打包上链的个体,矿工拥有的权力是非矿工群体无可比拟的。我们归纳总结了如下图表,以展示现有 MEV 掠夺的相关特征。

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

MEV 解决方案尚存可提取型、可消除型

目前如何解决 MEV 掠夺问题,保护普通交易者的利益成为了 MEV 这一领域中争相研究、开发的课题。目前主要有两方态度,一是认可 MEV 存在的不可避免性,并通过提取解决当下的困境,二是从交易源头抹杀或降低 MEV。基于此,本篇报告分别从 MEV 提取、MEV 消除两种思路对现有 MEV 解决方案进行讨论。

提取 MEV 的解决方案

从目前已研究结果来看,关于提取 MEV 方案目前有如下三类方式 :

隐私交易:通过将交易存入隐私 mempool,而非公开型的 mempool,以躲开攻击者的监听。

FRaaS:FRaaS(Front-running as a Service)通过提取交易的 MEV 并进行利润再分配的方式保护交易者利益,同时矿工由于有赏金激励将放弃攻击。

MEV Auction:将矿工的挑选交易权力和交易排序权力进行分拆,矿工仍然保留挑选交易的权力,而交易排序权力则通过拍卖的方式拍卖给第三方。

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

隐私交易

正如前文所述,交易在 mempool 中等待被矿工打包,同时也面临被监听、攻击的风险。因此有些协议希望以绕过公开的 mempool 的方式,让交易在隐私的 mempool 里排队等待打包,使其无法被广播至其他节点。

提供这类服务的协议目前有 1inch 的 Stealth Transactions,太极网络以及 bloXroute。

1inch 的 Stealth Transactions 目前仅在 1inch 钱包 ios 客户端提供。目前这种方式面临交易可能被打包进叔块从而被公开。

太极网络由星火矿池创立,用户可以通过太极网络提供的接口直接发送交易到星火矿池的隐私池。由于星火矿池并不对这笔交易进行网络广播,这笔被发送出去的交易在未被正式确认前,在 Etherscan 上无法看到该笔交易的状态。

bloXroute 提供隐私通信功能,允许交易在不被暴露情况下直接到达矿工手中。

bloXroute 的 BDN(区块链分发网络)通过自己的网关软件将区块链节点与 BDN 链接,网关软件和区块链节点首先翻译从区块链进入 BDN 的信息。然后,在第二层,它会进行区块压缩。通过极大缩小区块大小,使其随后更高效地在区块链分发网络 (BDN) 中发送 / 传输。

MEV Auction——Optimism

MEV Auction 最早出现于 2020 年年初,由 Karl Floersch 提出。Karl Floersch 是 L2 方案 Optimism 的 CTO。MEVA 成为契合 Optimism 的一个良好抗 MEV 的方式。

谈及 MEVA 需先说明矿工在 MEV 掠夺战中作为最大赢家具有的两大权力交易抉择权力和交易排序的权力。MEVA 机制在技术上将矿工的两大权力进行拆分:矿工保留原有的交易抉择权力,但选择之后矿工不可对交易进行排序,而由一个名为 Sequencer 的角色对矿工挑选的交易进行排序权力。矿工通过拍卖过程选取唯一的 Sequencer。

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

在 Optimism L2 系统中,矿工所具有的角色(交易排序和验证区块)被划分为两个部分。Sequencers 管理交易排序,Validators 将其添加到 Optimism L2 区块链上。该方案契合 Layer2,是由于 L2 架构上早已存在 Sequencer。交易被提交给「Sequencer」序列器,由序列器生成保证交易执行和排序的已签名收据。

但 MEVA 这一方式目前仍然存在问题:

Sequencers 之间存在串通、Sequencer 自身作恶,造成人为压低拍卖价格。针对这一问题,目前的解决方案是开发一个开源的 sequencer 软件,增加用户参与 sequencer 竞价活动的容易度。

无法完全避免矿工同时仍然保有两个权力:sequencer 可以自己成立矿池。

FRaaS

Front-running as a Service 指通过提取 MEV、并将其进行利润再分配的方式解决 MEV 问题。这一方式本质上通过补偿交易者以及让利矿工、攻击者,使多方达成合作,造成多赢局面。在 FRaaS 方案中,攻击者变成了搜寻者,搜寻者负责搜寻交易中可能出现的 MEV,并通过一定策略完成 MEV 提取。目前采用该种抗 MEV 方式的协议较多,是当前较为受欢迎的解决 MEV 的方式。

Flashbots

Flashbots 是一个专门针对 MEV 的研究及发展平台,目前主要有三个垂直业务:

Flashbots Auction:矿工和搜寻者之间的隐私通信渠道。

Flashbots Data:检测 MEV 数据情况;目前具体产品是 MEV-Explore 和 Dashboard。前者目前捕捉覆盖 8 个主要的 defi 协议。 Flashbots research。:一个开放、透明和合作的研究平台,解决与 MEV 有关的短期和长期的研究问题。

Flashbots Auction 构成包括:MEV-Geth 和 MEV-Relay,前者是 go-ethereum 以太坊节点客户端,后者是一个交易捆绑中继器。

三个主要的角色:搜寻者(searcher)、中继(relayer)、矿工(miner)。三者之间传送的信息是 Flashbots Bundle 交易,每个 bundle 交易内容包括一个交易列表(指明发送者希望打包上链的多笔连续交易,包含先跑 / 尾随等交易),区块高度,最小超时时间、最大超时时间。

搜寻者 Searchers

目前 Flashbots 的搜寻者可划分为三类人:套利、清算机器人,寻求抢跑防御的交易者,以及以太坊 Dapp,如 mistX。由 searchers 直接向 relayers 提交 bundles,保证该笔交易不被网络中其他节点发现。

发送者发送交易时需向矿工支付一定小费,这一小费并不是以 Gas 费用支付的方式实现,而是通过 coinbase 交易,向出块者(即矿池)支付 ETH 作为分佣。这种支付方式保证了即使交易失败也不需要支付成本,但这个方式存在攻击隐患。

中继 Relayers

从 searchers 处收集 bundles 并发送给矿工。在这一个过程中 relayers 本身可能也成为攻击者,因此此处需要信任 relayers 将诚实行动。

relayers 除了隐私传送 bundle 交易外,还具有缓解 DOS 威胁的功用。由于 searchers 发送失效的 bundles 也为零成本,因此可能出现 searchers 可以随意提交 bundles,即这就为他们提供了用无效的 bundles 向网络发送垃圾邮件的能力,从而对其他网络参与者形成拒绝服务攻击。由于以太坊节点没有能力自行处理这种水平的负载,中继器成为缓解这种 DOS 威胁的手段。

矿工

矿工作为接收 bundle 交易的最终人,通过运行 MEV-Geth 客户端接入 Flashbots 网络。

矿工每个区块只能打包一笔 bundle 交易,因此为了使自己利益最大化,矿工将选择由 searchers 支付小费最高的 bundle 交易。据悉 Flashbots 目前有计划开发在一个区块里面打包多个 bundles。

同样此处无法完全信任矿工。矿工在接触到 bundle 的内容后,可通过解析交易,通过可以重新排序或增加交易进行 MEV 提取。

ArcherDAO

ArcherDAO 拥有两个独立的产品:Archer Relay 和 Archer Swap。但两个产品均具有抗 MEV 特征。

Archer Relay

Archer Relay 与 MEV-Geth 客户端兼容,使得用户以搜寻者的角色参与 Flashbots 生态。

Archer Swap

Archer Swap 以提前端交易界面形式出现,允许用户直接提交 token 交易。Archer Relay 网络中的 backrunning bots 将针对在 Archer Swap 上产生的交易进行 MEV 搜寻、提取、捆绑等行为,并通过 Flashbots+Archer relayer 发送给矿工。

ArcherDAO 利用了 Flashbots 的技术完成抗 MEV,但仍然与 Flashbots 存在不同点。ArcherDAO 的产品将搜寻者与交易者的角色进行更加清晰的化分,Archer Relay 为搜寻者转发 bundle 交易,此处的搜寻者任务为搜寻各个 DEX 中 MEV 提取的机会。而 Archer Swap 针对寻求 MEV 防御的交易者,这一交易者在 Archer Swap 上进行交易。搜寻者与交易者的角色的化分体现于 Archer Relay 的搜寻者无法接触通过 Archer Swap 发布的交易,只有 ArcherDAO 内部的 backrunning bots 可以。

其次是与矿池合作方不同:目前 ArcherDAO 明确与 2miners、Ezil 达成合作;Flashbots 的三月份的报告宣称其已经与 12 个矿池合作。

mistX by alchemist

alchemist 是由 @thegostep 在 2 月发的一条 twitter 开始,没有开发团队,没有路线图,完全由社区推动。@thegostep 活跃于区块链领域,是以太坊、Ampleforth 的核心开发者之一,同时也参与了 Flashbots。alchemist 团队有 5 个核心项目正在进行:Crucible、Copper、mistX、sandwitched 查询和 Crucible NFT Design。

mistX 同样采用 Flashbots 技术,保护用户发起的交易不会发到公开的 mempool,而是 bundle 在一起进入 Flashbot 系统。此外该团队还开发的 sandwiched.wtf 查询工具可用于查询某一个智能合约账户是否存在被进行三明治攻击过。

KeeperDAO

KeeperDAO 整体项目分为三个主要业务线:Hiding Game、Coordination Game 和 Incentive Game。这三个业务分别解决三个问题:Hiding Game 解决现有交易以及清算问题中的 MEV 问题,Coordination Game 则主要激励 keepers 之间进行合作,Incentive Game 主要关注 $ROOK 和平台治理问题。这三个业务之间以一种有机的方式结合,互相支持彼此。

KeeperDAO 同样认为由于 swap 必不可免产生滑点,攻击者可通过先跑 / 尾随交易进行攻击,对 traders 造成损失。且由于交易被曝露在 mempool 中,容易造成多方竞争或双方互相「竞价」的局面,引发 Gas war。

针对这两种情况 KeeperDAO 认为可让交易者与 Keepers 一起合作。其主要过程为交易者首先提交交易给 KeeperDAO,由给 KeeperDAO 内的 Keepers 分析该笔交易并判断是否可以通过先跑 / 尾随策略获得收益。若这一交易存在可获取收益,keepers 根据平台预先规定的交易排序进行执行这笔交易,获得其中利益。获取的利益需要返还给项目平台,由项目进行每日汇总分配。

对交易者而言,他们在交易中获得了更好的价格,因交易者的交易滑点可通过平台铸造的 $ROOK 被抵消。可见交易者与 keepers 合作带来了双赢局面。

在整个交易体系中,KeeperDAO 将每隔 100 个区块进行一次排序,排序结果决定现有 Keepers 的交易顺序。由于定序交易,keepers 避免遭受 gas war 的困扰。但是,KeeperDAO 之内的 Keepers 仍然需要与 keeperDAO 之外的交易者竞争。

BackRunMe by bloXroute——MEV 的利益分配

bloXroute 除了前文所述的隐私交易外,还利用了 DEX 交易滑点这一特征开发出针对 MEV 的交易设计。

具体的实现过程如下:

bloXroute 发送 metadata 给搜寻者,由搜寻者执行 backrun 交易。

搜寻者将根据交易创建并发送 bundles,bloXroute 检测 searcher 的回复。

bloXroute 以隐私通讯方式发送收益最高 backrunning MEV bundle 给 pools。

当然若搜寻者发现不存在 backrun 的机会,则这笔交易将变成普通的隐私交易发送到矿工手中。

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

其他

MiningDAO

这一项目允许任意以太坊用户 propose 整个区块给矿工,同时每个区块附有一定奖励,若成功被打包上链,则该奖励将支付给矿工。因此矿工为了自己的利益最大化,将选择奖励最高的区块。与前文所述的几个协议不同,该协议针对的对象为下一个区块,而非某笔交易。

如下图显示,该项目将竞争下一个区块视为订单市场 DEX,每个用户可以提交一个可供打包的区块,此处即订单对象,组成区块订单市场 DEX。用户支付的成本为每个区块订单附带的由用户支付的奖励赏金,而矿工从这个区块订单市场中挑选奖励赏金最高的区块订单。一旦成交,则矿工将用户提供的区块订单打包上链,同时获得用户支付的奖励赏金。

BackBone Cabal

该协议针对 sushiswap 的项目,用户向 YCabal 发送交易,产生滑点等套利机会,后由矿工进行先跑 / 后跑等策略。

提取 MEV 方案的优缺点

这类阵营认为 MEV 由用户产生,是一个不可避免的链上交易特质,基于此该阵营的方案对 MEV 采用接纳态度保护用户。目前该阵营存在三大类协议,三类方案具有各自特色:隐私交易方案通过绕过公开 mempool、绕过公开监听保护用户的 MEV 不被提取;MEVA 将矿工的权力进行技术划分保护用户权益;FRaaS 则对将 MEV 提取作为一项服务并进行利润划分实现多赢局面。

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

消除 MEV 的解决方案

MEV 的出现,体现了作为特权阶级的矿工,利用对区块的特权进行权力寻租的产物。前文介绍 MEV 提取型方案覆盖超过 10 种协议,由于这些协议认为 MEV 不可避免,因而采取拥抱 MEV 的态度解决现有 MEV 问题,若以鸽派形容这一阵营,则另有一派作为鹰派认为 MEV 可消除。本文这部分将阐述作为鹰派的开发者们如何选择利用多种手段将权力寻租的空间降至最低乃至消灭。

如何使 MEV 最小化或者阻止其出现?所谓矿工可提取价值(MEV),是指矿工(或验证者、排序器等)通过在其生产的区块内任意包含、排除或重排序交易等能力所获得利润的一种度量。所以目前市面上的抗 MEV 协议设法在交易提交到矿池的时候,进行采取措施。目前已总结如下四种方式:

链内操作

链下操作

加密

新型交易模式

链内操作

Chainlink 方案 -- 无须去改变 L1 主链,将交易队列信息和预言机报告提交给预言机,生成序列号和 Nonce 值,并在预言机网络进行广播。同时预言机可以监控消息池,主动获取交易队列。后续智能合约可以从预言机获取正确序列。

LibSubmarine 方案 -- 链上智能合约,对交易信息进行隐私保护,避免被套利者发现。

Veedo 方案 -- 利用 VDF(时间延迟函数),利用时间锁将交易信息延迟一段时间,然后再公开。套利者无法及时获取套利空间。

链下操作

Automata 方案 -- 交易队列通过加密中间件服务,依据当前的交易队列生成唯一的签名,矿工无法对交易队列插入新的交易,否则签名会发生变化。此时 Dex 在接收交易队列时候,即可识别到签名的变化,即可拒绝该交易。

Arbitrum 方案 - 有些方案觉得不能完全阻止 MEV 的出现,尽可能最小化的阻止 MEV 的出现。将交易聚合打包在智能合约的 CallData 中,这样 L1 对交易无法做修改。在 L2 层,在最短 15 分钟窗口内完成交易的结算。整个流程尽可能减少 MEV 的出现。

Vega Protocol 方案 -- 建立全新的主链,在链本身层面进行,在单位时间内,对最先广播,被节点知晓最多的交易优先执行," 如果有一个时间 t,使所有诚实的验证者在 t 之前看到 a,在 t 之后看到 b,那么 a 必须被安排在 b 之前 "。

加密

Sikka 方案 -- 作为隐私中间件,对交易信息和自身消息池进行加密,交易被 2/3 节点打包验证之后,进行公开。

Shutter Network 方案 -- 利用 DKG 分布式密钥生成服务,在交易发出之前进行加密,通过矿工消息池之后,确认被打包在区块之中,再进行对交易信息的解密。

新型交易模式

CowSwap 方案 -- 两个人同时持有互相想要的资产,即可直接匹配交易,而无需做市商或流动性提供者撮合交易。这样即可以为个人交易者带来最佳的价格,也免除通过做市商或流动性提供者产生的手续费。CowSwap 上允许用户利用 CoW 的方式直接交易。无法通过 CoW 结算的订单直接通过自动做市商 (AMM) 匹配交易。要是批量拍卖订单中有 CoW 订单。小额单完全匹配后,剩余没有通过 CoW 匹配的订单,便会交由 CowSwap 整合的流动性市场匹配。整个订单结算价格以通过外部流动性获取的剩余订单价格为准。

消除 MEV 方案 / 协议对比:

为以太坊黑暗森林建造护栏,全景式解读八项抗 MEV 方案

消除 MEV 解决方案的优缺点

不管是矿工,验证节点,排序器都是对顺序有特权的角色,从以下方式去消除 MEV 的出现,都会存在多多少少的优缺点。

利用 L2 第三方公证组织,对确定的交易序列进行全网公开并进行标记,公开程度越大,越难被篡改。但是需要不同的 DeFi 协议支持该公证结果并且配合。

利用对交易信息进行加密,让容易被套利的信息,隐藏在黑暗森林中,让套利者无法进行追踪。但是对信息的加密和解密,带来的资源消耗,从而导致交易体验上的损耗,也是需要考虑的因素。

新的交易模式,在模式上进行范式转移,却需要经过市场去检验是否能成功。

结论

区块链经过十余年发展,变得愈加成熟和复杂,也因此产生越来越多系统性问题,比如本文粗略探讨的 MEV 问题。正如 Paradigm 的 《MEV and Me》 文章中所描述的,相较于最早出现的比特币,后来出现的以太坊由于其应用层行为的高度复杂性而产生的 MEV 远高于比特币。

目前 Flashbots 所捕捉到的 MEV 也仅覆盖 8 个协议,且每个协议上所识别到的 MEV 也限于可被先跑 / 后跑 / 三明治等提取的种类。

Flashbots 通过 MEV 这一现象的研究加深了用户对区块链的了解。用户开始了解自己在区块链上的行为相对应的风险收益结构,并反之通过开发、改进协议使区块链更加具有真正的使用价值。

本文粗略探讨了市面上现有的各种针对 MEV 的解决方案,并将其归纳为两大阵营。首先 MEV 可提取型,旨在实现对权力再公平分配,但也难以避免屠龙少年终成恶龙的局面。其次是 MEV 可消除型,则讲述了不管如何在黑暗森林中隐身潜行、权力的再转移,不如真正利用加密手段实现跨维压缩权力寻租空间。