矿工可提取价值(Miner Extractable Value), 我们通常理解为矿工可以通过重新排序,审查或者插入交易而无需许可提取的总价值,而正是单个矿工对于所在区块交易掌握的控制权,赋予了其获得利益的可能性。MEV 所谓的“矿工”可提取价值是由学术界的智能合约研究院Phil Daian定义的。而实际上这个定义并不准确,现在人们称其为最大可提取价值(Maximal Extractable Value), Osmosis 创始人Sunny Aggarwal 也重新将其定义为区块提议者可提取价值(Proposer Extractable Value)。在这场经济博弈中,我们看到除了矿工以外,搜索者,Solver, 用户, 应用和协议开发者等的参与,MEV 本质上并不能完全消除,但是在不同协议和系统之间,基于不同的假设,参与方可以通过协商MEV提取的条款而减少矿工的提取价值。这里的矿工,我们通常认为是区块生产者,而在其他生态中,我们也可以称为验证者(例如在ETH2.0) 中,他们负责生产区块,添加/删除交易,排序交易等。用户,你可以理解为在区块链网络上产生一系列经济价值的个人或者组织,比如在去中心化交易所进行一笔交易,比如在流动性池子中添加流动性,比如在借贷协议上进行抵押借贷等行为,比如在NFT市场参与一系列NFT作品的发售等,而这些经济活动创造了大量的可提取价值。搜索者可以理解为那些通过交易排序, 加密解密等手段获取MEV价值的个体。钱包等DAPP,通过设计和激励,将私有交易流提供给搜索者,为用户和搜索者带来额外价值。而协议层也是至关重要的,作为这场大规模经济活动的创建者,通过不同技术和经济激励设计,赋予区块提议者(矿工)相应的价值和权利,从而促使了MEV的诞生。
在了解MEV之前,我们知道矿工可以对区块进行生产,交易添加/删除,交易排序等,那么矿工还有什么权利?矿工可以改变其区块时间戳,通过“Randomness” 操纵和时间戳劫持等方式进行时间戳操纵,以比特币网络为例,最早的时候比特币的难度调整是基于时间戳的,这时候攻击者会通过分叉链,伪造时间戳降低难度,从而实现快速出块的目的,网络是按照最长链设计原则进行出块,因此所有奖励都会给到攻击者。所以后来社区对规则进行了修改,将算力最多,累计难度最多的链定义为主链,从而避免了这样的问题。区块提议者拥有共识投票审查权利,操纵投票结果的权利,比如POW中的自私挖矿(Selfish Mining), 当矿工自身所获得链比别人长的的时候,不会立即发布自己的链,而是选择在自己的链上继续挖。而BFT机制中我们称为BFT 投票审查。除此以外,Flashbot这种中继服务商的出现,使得区块提议者可以从内存池中读取交易。当然还有我们上文提到的控制交易的添加/删除和交易的排序。
而针对交易权利的攻击,我们可以将其分为审查操纵和交易顺序操纵。交易顺序可以分为绝对顺序和相对顺序。绝对顺序(Absolute Ordering),意味着你的交易并不是基于区块中的另一笔交易而进行的,而你的交易在区块中有绝对位置。比如有一笔清算正在发生,那么必须有人触发清算机制,并且通过此方式来获利。而区块提议者可以保证他们是第一个,并且获取可提取价值。Osmosis对于这类问题有一些解决方案,但是他们目前侧重点并不在这,因为理论上这类攻击并不会给其他参与者造成伤害,这种攻击通过为网络提供服务而获得稳定的收入来源,而Osmosis更希望解决网络上负面的攻击事件,也就是相对顺序(Relative Ordering), 你可以理解为当你试图将你的交易位置建立在其他人的交易之上,我们称为Normal Frontruning( 当然也包括Backrunning)。例如三明治攻击(一种抢跑交易),你看到交易机会,例如攻击者发现网络上一个购买资产的交易者,攻击者抢先在交易者下单前进行该资产的购买,尽管交易者最先提交交易,但是攻击者可以通过优先排序,将自己的交易排至第一的位置,并且广播至网络进行交易,从而推高资产价格,再通过更高的价格卖给交易者。这种交易本质上以牺牲其他参与者的利益为代价,从而获取利润的,会造成用户资金的损失,共识机制的不稳定,燃料费的飙升,区块生产的中心化等问题。
对于交易的读取权利,我们可以对交易进行加密,当交易被添加至内存池中进行加密。内存池,顾名思义,就是交易的一个缓存功能,内存池会对接受的交易进行初步合法性的校验,过滤掉一些非法的交易。而针对内存池的加密,目前有几种解决方案。一种是SGX(Trusted Hardware),一种是Timelock 加密,如果我要进行交易,在运行几分钟顺序过程后,任何人都可以解密,第三种是阈值加密。如果你有一些社区,有些权重,那么可以共同解密,2/3的参与者可以解密。这个和Tendermit POS的共识机制假设非常类似,如果有2/3的信任节点,他们通过信任的方式做事,当然确保我们不会攻击他们, Slash 他们。对于POS机制,对于Tendermint来说,社区是非常重要的。而Timelook 不强调社区的概念,但是你需要确保所有人都参与并且使用,需要确保锁定的时间,并且不会在内存池中被解密,其延迟时间比较长,会影响用户体验。而阈值加密技术,也是我们之后要讲到的Osmosis采用的MEV技术,你可以选择是否参与,给验证者提供了很高的灵活度。
这种Timelock笔者认为或者可以尝试应用在非交易本身,而是流动性添加撤销行为。目前很多机器人已经开始通过交易前后进行夹层攻击短时间增大流动性并且取消流动性的方式,进行获利。但是和一般的攻击不同,用户反而可以获得更好的交易价格,而实质上流动性提供者的利益受到了威胁。这是三明治游戏中比较有趣的转折。
Osmosis选择了阈值加密技术。不同公链在内存池的加密这块设计不同,例如Solana 并没有所谓的公共内存池概念,私有的内存池仅节点可以看到,而我们看到像Flashbot这样的中继解决方案,下文会介绍,它也不能实现完全私密性,它通过创建私人内存池,实现了交易捆绑并且将其直接发送给矿工,而无需通过公共内存池,并且通过私有竞价,防止了三明治等机器人的攻击,但是对于Flashbot, 矿工,节点,对于Flashbot API 用户而言,所有的捆绑和交易信息都是公开透明的,而且仍然是比较中心化的解决方案。因此很多长尾的策略并不会通过他们中继,搜索者会通过ArcherDAO, BloxRoute,或者直接给到矿工的方式提交捆绑包。目
Flashbot是一个全新的中继系统,它方便了生态系统中搜索者和矿工的沟通。通过创建私有池子,搜索者将交易放入捆绑包,并通过Flashbot发送给矿工,通过拍卖的方式获得一定的网络价值。搜索者或者可以通过提高手续费的方式提交交易,或者在无需提交手续费,直接通过贿赂矿工/验证者的方式提交交易。
拍卖应该是私密的,Flashbot逐步解决这个问题,它作为一个第三方机构(目前较为中心化,几个节点,你需要信任他们的节点)。当然Flashbot将所有的捆绑包发送给矿工前,会根据历史提交记录,提交内容质量等信息对发送者(搜索者)进行高优先级和低优先级的分类,有效减少DDOS攻击,将好的交易捆绑包发送给矿工。
根据Flashbot的最新路径,他们会使用 SGX 实现更深层意义的隐私和去中心化。他们会继续迭代私有内存池。矿工可以拥有他们的自己的 SGX 内存池,而普通用户也可以使用它。可以将SGX理解为其创建私有内存池的一种方式。当然SGX需要比较高的安全预算,例如如果破解它,需要花费聘请10名顶尖工程师,1000万美金的预算,但对于巨大的MEV市场这个不算什么,当然你只需要破解一个SGX,拿出一个密钥,就可以破解内存池。
Osmosis 似乎正在实现我们所谓的MEV endgame,未来的MEV的竞争是否会变成生产区块的竞争?矿工在验证和排序交易这方面的工作是否能够被外包出去,而矿工可以专注在证明,而最终你会有一个交易市场,你可以选择最好的区块,当然捆绑包(交易)或者只是一个过渡方案,未来或者是一个区块的市场?
Osmosis试图过阈值加密技术来实现。交易一旦进入内存池(被包含在区块之前)便会被加密, 这隐藏了交易信息,从而阻止了验证者的交易排序/审查。交易被加密之后,用于解密交易的私钥在所有验证者之间进行共享,2/3的验证者就能够解密。最终,区块几乎会同时在确认时进行解密。
这种MEV 保护是 Osmosis 所独有的,因为它是基于Cosmos SDK开发的主权应用链,并且通过BFT 机制的Tendermint 共识实现。Tendermint 共识不能同时出块,新区块不能在当前的区块提案由 ⅔ 的验证者投票最终确定前提议。所以不会出现POW中当两个矿工同时获得胜利,但一个矿工却并不知晓的情况出现,所有区块内容都可以在全网知晓的情况下进行解密。所有区块生产者都参与了同一个区块的解密过程,确保了所有节点在MEV提取方面都能够相对公平。而在像 PoW 这样的网络中会更难实现,POW中区块是同时提出的,而交易确认过程也是逐步的,所以在解密后它仍然会因为可能的重组(Reorg) 问题(重组攻击, Time Bandit 攻击, 或者叫双花攻击),而使得网络暴露在MEV漏洞下。
而且阈值加密还解决了延迟性的问题,延迟性问题即区块在确认后才能被执行。区块提议者生产区块,添加和排序交易,而Tendermint中,验证者可以理解为投票者。Osmosis 创建了所谓的投票延期,增加了Tendermint的功能,每个验证者除了共识投票以外,还能贡献额外的数据,所以加密被共享了。通过共同提议(Joint Proposal),每个验证者都可以在他们的投票中添加交易,而下一个提议者可以将这些交易添加至区块,当然会有重叠的交易,但是仍然可以添加,至少需要添加其他验证者的一笔交易。这防止了区块提议者的垄断性,让所有的验证者都可以参与进来。这里我们将区块者生产者和验证者分开,我们希望能够在POS实现更多这样功能划分。目前我们已经看到了小范围的分类,比如作为矿池的矿工(POW),比如作为验证节点的矿工(ETH2.0), 还有通过Flashbot的将不同交易添加至捆绑包的矿工等等,我们希望未来能购实现更多劳务的划分。
同时,Osmosis实现了捆绑包的原子性,区块生产者只需要负责他们的本分工作,执行必要的工作确保该区块为网络的有效区块,而他们并不能看到区块的内容,这给到了搜索者巨大的隐私保护,同时确保了捆绑包不会被破坏,长期来看实现了更加有效的交易市场,而我们也能够真正实现协议层的捆绑包原子性,在协议层上进行交易排序。
而通过共同提议,我们可以将个人最好的交易选出来,放在池子中,这为未来的区块市场创建了雏形。Flashbot实现了将单笔或者多笔交易进行捆绑,并且解绑,而Osmosis能否实现将区块捆绑,并且将区块解绑呢? 我们可以想象下将捆绑(Bundle) 由几笔交易和一个区块模板(一个充满交易的区块)组成,而我们给它一个新的名称,区块模块捆绑。我们或者可以想象未来提议者可以提议将几个区块模块连续替换现在存在于以太坊中的现有区块。我们坚信当目前的捆绑包(交易)只是一个过渡方案,未来或者是一个更大的区块模块交易市场。而正如Sunny Aggarwal 所说:Flashobot试图解决,减少MEV带来的副作用,比如高手续费,比如共识的不稳定性等问题,而Osmosis试图解决MEV问题本身。
当然,我们还有看到其他的解决方案,比如类似于Uniswap V3, 试图通过集中性流动性提升资金利用率,优化滑点,减少资产减值损失等。比如Cowswap, 通过Solver, 通过线下运行的逻辑给到用户最好的执行价格,当然在极端情况下,如果有10亿美金的大宗交易,你很难阻止Solver去破坏交易从而获得激励,这毕竟不是一般的交易。所以MEV总是存在的,只是说如何去减少MEV的发生,减少带来负面影响的三明治攻击,AMM这类的攻击,不会伤害用户和网络参与者。而对于无许可的MEV 套利,清算交易,我们认为这都是目前非常稳定的商业模式,我们看到很多MEV都是大矿工,中心化程度很高,Ethermine占据全网30%的算力,F2POOL, Sparkpool等也都是头部的玩家。当然除了应用层,我们也可以通过在公识层,P2P层寻找解决方案,例如Osmosis的阈值加密就是共识层的方案,而TX的公平排序也可以在共识层实现。P2P层我们可以通过钱包,dapp,与搜索者直接建立,为其带来私人交易流等沟通方式,减少交易的费用,(Mining DAO就是将搜索者直接和用户连接), 为用户带去最好的执行价格,内存池的隔离也是不错的方案,我们可以选择多种不同策略的中继服务商(例如Archer DAO, BloxRoute)等,更好地覆盖捆绑包所包含的平均块。
上文提到在POW系统,矿工通过概率算法生产区块,而两个矿工可以同时赢得概率算法,而因为网络的延迟性,两个矿工并不知道对方已经赢得了比赛,而网络会选择拥有更多计算总量的区块。所以如果其中快速连续挖取两个区块的矿工最终会获得胜利。但问题来了,这意味着你可以回到几个块之前,快速执行比实际规范链更多的计算工作,然后将其显示给网络。由于这种选择,网络遵循使用量最大或与之相关的计算工作量最大的链的规则,现在成为了主链。那么这个矿工可以做很多非常糟糕的事情。当然这很难实现,但如果理论真的有人能够做到这点,那么你可以回到过去,清算别人准备清算的仓位,因为你是矿工,你可以将自己的交易优先排序,自己执行清算并从中捕获所有 MEV价值,或者可以通过排序别人的交易获取 MEV 或其他任何可能的方法。这被称为时间Time Bandit Attack (或者双花攻击,Reorg攻击)。
这有什么危害呢?举个例子,目前的预言机,包括 Chainlink 和 Maker 预言机,他们的预言机更新实际上并没有与特定的区块高度或区块哈希绑定。比如在当前区块,可能会有一个用户关闭他的清算 - 关闭贷款,然后五个区块过去了,然后你知道,Compound 或 Maker 或 Chainlink 发布价格更新,而用户,现在几分钟后就会被清算。然后矿工可以接受这个预言机更新,及时返回五个区块,并在用户可以在实际无法清算的时候关闭仓位之前,用未来的预言机更新清算用户。这实际上非常具有破坏性。而我们上文也提到,阈值加密这种技术无法在POW网络中的实现。区块是同时提出的,而交易确认过程也是逐步的,所以在解密后它仍然会因为可能的重组(Reorg) 问题(重组攻击, Timebandit 攻击, 或者叫双花攻击),而使得网络暴露在MEV漏洞下。当然,以Ethermin为代表的大矿工明确表态不会参与此种行为。而以太坊ETH2.0 的设计Attestation game(注意力游戏)的设计也帮助解决了此类问题,我们将会在之后的文章中介绍。