1、我们是如何走到这一步的
以太坊最初的设计理念是由一方来处理区块创建的整个过程。这需要聚合内存池交易,制作区块头,然后要么在工作量证明中找到黄金随机数(golden nonce),要么在权益证明中签署区块头。在最初的几年里,区块创建很简单:挖矿节点从它们的内存池中提取交易,按照gas价格(表示每笔交易的计算工作量)对交易进行排序,并保持在每个区块的gas限制内。然而,随着去中心化金融(DeFi)的兴起,这种区块创建的方法发生了重大变化。
(1)MEV的中心化风险
在DeFi中,交易排序的顺序会带来很大影响。假设内存池中有一个待处理交易,该交易目的是在UniSwap上用1枚ETH兑换BITCOIN(当然,我指的是HarryPotterObamaSonic10Inu)。你收到的BITCOIN数量是基于当前UniSwap池中的ETH与BITCOIN的兑换率。如果其他人的交易(用2枚ETH兑换BITCOIN)在你的交易之前被处理,你最终得到的BITCOIN会更少,因为ETH与BITCOIN的兑换率发生了变化。考虑到交易顺序的重要性,以及交易顺序是由矿工控制的,便导致了我们所谓的MEV(矿工/最大可提取价值)的出现。MEV代表了矿工通过选择包含、排除或重新安排哪些交易可以获得的潜在利润。
MEV乍一看似乎是无害的。它甚至还可以作为网络安全的助推器,挖矿或验证会有更多激励,对吗?除了通常的区块奖励和交易费,现在还有MEV可供争夺。但现实远非无害。如果不加以控制,MEV可能会成为一股强大的中心化力量。有一个故事可以说明这一点:想象一下,你刚刚听说了这个MEV游戏,并且听说验证者因此获得了超过10%的APR。很诱人,是吧?你拼了!你将32枚ETH发送到质押合约启动验证者节点。但是等一下……你只见到了4%的回报。当轮到你提议区块时,交易只是按照它们的gas价格排列。你没看到任何的MEV魔法。你没有复杂的算法和策略来开采MEV黄金。不通晓其中的门道,你就会被困在默认情况下:按gas价格排序交易。
这就是中心化力量发挥作用的地方。即使你是一名计算机专家,你所用的那个简简单单的计算机远远比不上他们运行下一级MEV提取游戏的超级计算机。显然,游戏结局就是关闭你的验证者节点,将你的ETH发送给这些承诺分享MEV蛋糕的超级强大的设置。你可能会看到几个这样的巨头在运行网络,这是一个真正令人不安的中心化结果。如果这就是未来的发展方向,那么以太坊的基本目标就失败了。那样的话,一个由少数人控制的网络也可能是一个中心化数据库。
(2)Flashbots的诞生
康奈尔大学智能合约安全专业的博士生Phil Daian是最早期发现MEV问题的人之一。2017年8月,他发表了一篇题名为“0x和EtherDelta去中心化成本”的博文,文章的灵感来自于他在0x ICO期间发现的抢先交易漏洞。
抢先交易是指在内存池中发现一个欲将代币A兑换为代币B的交易。然后,一个抢先交易者编程启动一个类似的交易,提供更高的gas价格。该策略确保抢先交易者的交易在初始交易之前得到处理。在初始交易被处理后,抢先交易者可以立即将代币B兑换回代币A,最终获得比一开始更多的代币A。这种策略有时被称为三明治攻击,因为用户的交易被夹在抢先交易者发起的两个交易之间。因此,当抢先交易者获得利润时,发起初始交易的那个人收到的代币B要更少。虽然三明治攻击很常见,但人们可以使用各种策略来有效地提取MEV。
在ICO热潮期间,Phil和一个团队部署了一个机器人,年收益大约为100万美元。在我之前提到的博文分享了他们的方法之后,又出现了几个类似的机器人,创造了竞争局面,机器人会进行gas竞价,以获得交易优先权。这促使Phil部署了全局节点,捕捉实时交易数据。这项研究在他著名的“Flash Boys 2.0”一文中得以完成,
这是Phil做客Chopping Block时分享的一个有趣的相关故事。在UniSwap的创始人Hayden Adams在ethresear.ch.分享了他的设计后(UniSwap是目前最受欢迎的去中心化交易所),Phil立即向V神和Hayden提出了他的担忧。Phil认为,UniSwap的设计将导致大量的MEV,使其成为被利用的主要目标,并使用户面临交易重新排序和三明治攻击的风险。V神回应说,这些可以被视为使用区块链的额外费用机制。Phil对这样的反应非常生气,他认为像高盛这样强大的金融实体会像当今的金融体系一样挤压个体散户。然而,随着时间的推移,Phil慢慢理解了V神的观点。
认识到MEV领域的重要性和挑战,Phil与合作伙伴联合创立了Flashbots,专注于MEV领域的研究和解决方案。Flashbots意识到MEV将会持续存在,Flashbots的任务是确保MEV的存在不会导致形成这样一个系统:在这个系统中,成为一个坏人或创造负面外部性对你个人来说更有利,比做好人更加有利可图。TradFi中就有这样的例子,最赚钱的策略通常利用了系统优势。同时,Flashbots认为可能有一种方法可以让用户利用MEV的能量,并补贴那些保护网络安全的人,同时补贴网络上的交易,让人们获得更优的价格,在这些系统中提供给他们想要的执行。如果设计得当,MEV或可成为加密货币超越传统系统的助力。
(3)利用MEV:拍卖和提议者-建设者分离
Flashbots认识到,矿工对交易订单的垄断是一种宝贵的资源。他们的MEV民主化的第一步是创建一个交易排序权的拍卖系统。这导致了MEV GETH的诞生,它首次引入了提议者-建设者分离(PBS)概念。以太坊基金会的Barnabé Monnot将PBS描述为:“一种设计理念,协议参与者可能会在达成共识的过程中使用第三方服务。”在此之前,矿工拥有完全的控制权:他们决定交易顺序,进行哈希计算,然后添加区块。但是MEV GETH改变了这一切。它引入了被称为搜寻者(searcher)的外部参与者,他们付费获得了将自己的交易包包含在矿工区块中的权利。
有了MEV GETH,矿工们就有了一个新的端点。他们可以从搜寻者那里收到针对MEV优化的交易包。每个交易包还会包含一个向矿工付费的交易,激励他们选择这个交易包。自然,矿工们选择了能提供给他们费用最高的交易包。当搜寻者在公共内存池中竞争MEV机会时,他们的出价自然会因为这种竞争而上涨。这种竞争确保了矿工获得最大份额的MEV利润。
让我们用一个例子来详细解释这个问题:假设Alice是一个搜寻者,并发现了两个去中心化交易所之间的套利机会。她可以通过在UniSwap上购买代币X,然后立即在SushiSwap上以更高的价格售出,从而获利0.07 ETH。因此,她创建了一个针对0.07 ETH MEV机会进行优化的交易包,并愿意向矿工支付0.05 ETH,以便在下一个区块中优先处理她的交易。另一位搜寻者Bob也发现了同样的机会。他创建了一个类似的交易包,但为矿工支付0.06 ETH,以获得相同的特权。Alice和Bob都将他们的MEV优化交易包发送给矿工。在另一端,矿工接收这些交易包,然后决定将哪一个包含在下一个区块中。矿工自然会选择Bob的交易包,因为费用更高,可以让矿工获得最大的利益。这是一个双赢的局面。矿工捕获了大部分MEV机会,从0.07 ETH的机会中获得了0.06 ETH。同时,搜寻者获得了0.01 ETH的净利润,这个利润是他们无法以其他方式获取的。MEV GETH机制的实质就是竞价。Alice和Bob相互竞争,为矿工提供激励,从而确保矿工获得MEV收益相当大一部分份额。
然而,如果他们可以为任何人打开一个端点来给矿工发送交易包,那么恶意行为者可能会利用这种开放性来超载他们的系统,有可能发起DOS攻击。为了解决这个漏洞,Flashbots引入了Flashbots Relay。这个中继起着至关重要的筛选作用:它根据矿工的潜在盈利能力、交易的有效性和提供的费用来评估传入的交易包。只有最优的交易包才会被转发给矿工。这种方法确实引入了一定程度的中心化因素,因为该过程依赖于Flashbots Relay来筛掉不受欢迎或可能有害的流量。有趣的是,矿池运营商和旷工之间已经存在一定程度的PBS。通常情况下,运营商构建区块体,包括中继发送的交易包,对区块头进行一次哈希计算,然后将其分发给旷工继续进行哈希计算找到黄金随机数。
2、当前形势
当以太坊从工作量证明(PoW)过渡到权益证明(PoS)时,交易验证和区块提议格局发生了重大变化。PoW依靠矿工和计算能力(哈希率)来验证和添加新的区块到区块链中,PoS将这一责任转移给了验证者,他们质押自己的ETH成为区块提议者。
几乎所有矿池都在使用MEV GETH,但随着以太坊向PoS的转变,系统需要调整。PoS的设计是为了满足独立质押者的需求:在低资源设备(如Raspberry Pi)上操作的个体验证者。PoS的设计目标是确保一个平衡的局面:无论你是一个独立质押者还是一个庞大的质押池的一部分,在验证过程中任何参与者都没有固有的优势。在转变为PoS之前,少数矿池主导了哈希率。这允许在这些池和Flashbots Relay之间建立信任关系。任何不诚实的行为,比如矿池从搜寻者那里窃取MEV,都可能危及这种关系。假设一个矿工从一个搜寻者那里收到了一个三明治攻击交易包。如果矿工进一步将搜寻者的交易夹在自己的交易之间,将带来短期收益,但也将切断与Flashbots的联系,使他们失去未来的MEV收益,因为他们将无法访问Flashbots Relay。
(1)MEV Boost
与大型矿池不同,独立质押者可能没有维持信任的长期动机。在某些情况下,他们可能会发现,利用建设者的MEV,然后从网络中消失,会更加有利可图。这一行为将导致他们被完全罚没,失去所有的32枚ETH,但在某些情况下,窃取MEV的潜在利润可能超过这种损失。这种情况确确实实在4月份就有发生,当时一个恶意验证者在关闭验证节点之前从三明治机器人那里窃取了2000万美元。
为了应对这种新的攻击,Flashbots推出了MEV Boost,这是一种专为独立质押者环境设计的系统。
MEV Boost的机制:
Relay(中继):之前的系统只有Flashbots充当中继,与之不同的是,MEV Boost进行了民主化。现在,任何人都可以成为一个中继节点,扩大参与和安全。Flashbots还开源了他们的relayer代码。
建设者:一个新的角色出现了——建设者。这些实体从搜寻者那里收集交易包,并将它们组合成完整区块。
拍卖系统:建设者竞价以包含他们的完整区块并提交给中继。中继执行一个关键的验证步骤来确保区块的有效性。
验证者交互:中继将从竞争建设者那里收到的最高出价连同相应的区块头转发给验证者,验证者将向以太坊网络提议一个区块。
区块承诺:指定的验证者签署区块头,这是一个承诺。一旦签名,他们就被绑定到该区块。如果他们试图签署另一个区块,这将被视为恶意行为,他们将被罚没。
最终提议:有了承诺,中继将完整的区块细节发送给验证者,向网络发送正式提议。
这种设置引入了信任问题:
建设者-中继信任:建设者需要相信中继不会窃取他们的MEV。请设想这样一种场景:中继从建设者那里接收到一个区块后,在三明治交易中将建设者的地址换为自己的地址。然后他们把被操纵的区块头传递给提议者。
提议者-中继信任:另一方面,提议者必须相信他们签署的区块头是有效的。提议一个无效区块会导致区块奖励丧失,因为网络会拒绝无效区块。
PBS设计看到了一个反复出现的挑战:虽然提议者和交易排序参与者之间的交互是给定的,但显然需要一种机制,其中:
提议者可以在不知道区块内容的情况下提交建设者的区块,但仍然可保证区块的有效性。
建设者可以安全地将他们的区块发送给提议者,确信他们的MEV不会被盗。
在深入研究MEV Boost之前,有必要了解以太坊在不使用MEV Boost的情况下创建区块的默认方式是什么。这种设置依赖于验证者Execution Client(执行客户端)和Consensus Client(共识客户端)之间的协作。执行客户端接收交易后,它检查交易格式,将其添加到内存池中,但不处理该交易。与此同时,共识客户端处理PoS共识,选择一个验证者来创建下一个区块。然后,所选验证者的执行客户端根据gas价格将交易安排为一个新的区块,然后将其转发给共识客户端并提交给网络。其他验证者证明区块的准确性,验证完成后,它就立刻成为区块链最新的一环。
如果验证者选择使用MEV Boost,则此过程将发生变化。当他们提议一个区块时,他们不再依赖于自己的执行客户端,而是连接到一个中继网络。验证者可以选择连接到哪个中继。
MEV Boost是可选的,但是95%的验证者都在使用它。基本上,除了V神运行的验证节点外,几乎每个验证者都将区块创建委托给第三方。这种委托表明,以太坊协议的核心功能——区块创建——现在主要是在以太坊系统自身之外进行的。这种设置中的一个关键角色就是中继,中继的作用与以太坊的基本原则形成了某种对比。目前,大约有9个活跃中继,但其中只有6个中继的区块中继份额超过9%。
信任成为一个问题,是因为中继与建设者、中继与验证者之间的关系并不是无需信任的。另外还有对抗审查性的担忧。在中继拍卖过程中,中继有权决定区块的有效性。这种自由裁量权允许他们排除包含与受制裁地址相关的交易的区块。一个恰当的例子是,OFAC对Tornado Cash制裁后,一些中继就行使了这种权力。最近的数据显示,由于这种中继施加的审查,过去一周有38%的区块遵循了OFAC准则。
3、展望未来
以太坊正在制定战略,以重新整合目前在其核心协议之外操作的过程。目标是强制提议者从建设者那里获得区块,本质上是让协议来处理中继的当前职责。目前的中继系统存在弱点。例如,中继可能无法正确地验证区块,错误地验证与提议者付款相关的建设者竞价,甚至延迟交付区块或交付区块失败。最重要的是,运行中继并不便宜。到目前为止还没有可持续的融资模式。使用率最高的Ultrasound Relay表示,其运营成本估计在每年7万至8万欧元之间,这还不包括软件维护等其他费用。中继目前是作为公共设施运行的。
同样值得注意的是,由于MEV Boost是由一家公司(Flashbots)开发的外部软件,它没有像协议内的软件那样经过严格的测试。这从Shapella升级后的Prism客户端可以明显看出:MEV Boost的集成错误引发了提议者签名问题,导致了slot丢失和罚没。将此过程集成到以太坊协议中的目的是解决这些挑战,确保即使提议者和建设者之间的协议破裂,提议者仍然可以得到补偿。因此,如果建设者提供了一个有缺陷的区块,提议者仍然可以获得完整的出价,而让建设者承担后果。虽然这种集成的具体细节(称为ePBS)仍在研究中,可能还需要几年的时间才能实现,但已经出现了很多同的实现想法了。
(1)如何enshrine提议者-建设者分离
要了解潜在的ePBS实现,首先必须了解以太坊PoS算法的一些基本组件。在以太坊中,时间被分割成12秒的间隔,称为slot。32个这样的slot合在一起就形成了一个epoch。在每个slot中,随机选择一个验证者来提议一个区块。同时,指定一个委员会来证明他们认为符合以太坊PoS分叉选择规则的区块是有效的,理想情况下是验证最新提议的区块作为区块链的头。如果一个区块在给定的slot中没有被提议,那么4秒过后,负责证明的验证者将对前一个区块进行验证。
现在,我们来看ePBS的设计。这个最受欢迎的模型跨越两个slot。首先是竞价阶段,在此阶段,建设者将他们的出价发送给验证者。然后Slot 1开启,提议者选择一个出价,并通过发布一个提交该建设者出价的区块来提交它。然后,一群验证者投票支持该区块,确保其在链中的位置。在Slot 2中,建设者看到在提议者的提交块中提交的出价及其证明。考虑到提议者的提交是不可逆转的,出价被选中的建设者发布了他们的区块,并保证他们的MEV不会被窃取。最后,验证者来验证这个新区块。
新发布的模型类似于两个slot的方法,但引入了一个payload-timeliness committee(有效负载时效性委员会)。首先,建设者的出价由提议者选择并提交,然后验证者委员会给出证明。随后,建设者披露区块的有效负载(其交易),有效负载时效性委员会确认有效负载是按时提供的及有效负载的有效性。这两种方法之间的另一个区别在于以太坊权益证明的操作规范,但这部分内容不在本文的讨论范围。
另一个设计围绕slot拍卖的概念。在这个设计里,建设者在竞价期间承诺epoch中的一个slot,而不指定区块。他们基本上承诺在分配的slot内创建一个区块,并为此支付一定的价格。这提供了适应性,特别是对于需要实时操作的跨域MEV来说。
到目前为止,所有的ePBS设计都授予建设者对区块交易的完全控制权。一个潜在的解决方法是使用包含列表。这个列表(由提议者发送给建设者,理想情况下是所有当前在内存池中或不必在内存池中的所有交易)包含必须成为建设者区块一部分的交易,如果有空间的话。如果建设者区块已满,则必须指出这一点,确认他们已确认该列表。这种方法增强了网络的抗审查能力。如果建设者想要审查交易,那么随着时间的推移,这样做将变得非常困难和昂贵。由于EIP 1559,连续填充的区块将导致基础费用呈指数级增长。因此,如果建设者通过在区块中填充虚拟交易来继续审查交易,那么不断上升的成本将使这种做法变得不再可行。
在某些情况下,提议者可能希望对区块创建产生一些影响。另一个ePBS特性可能会让提议者创建区块的一部分(起始或末尾),并将其余部分委托给建设者。所有这些设计和特性并不是相互排斥的,重点是如何平衡它们的优点和缺点。
(2)Optimistic Relaying(乐观中继)方法
ePBS的另一种做法是利用我们现有的可信中继。想法是逐步减少中继的职责,直到它主要用作优化器,而非关键组件。在第一阶段,我们放弃了中继验证区块有效性这一职责。这大大降低了中继的运行成本,因为不再需要进行区块模拟来确保其有效性。此外,还简化了中继的作用,在与提议者和建设者的通信中减少了大约100到200毫秒的延迟。那么,如果一个区块被证明是无效的,我们如何确保提议者得到他们的补偿呢?在竞价时,建设者将被要求提供与其出价等额的抵押品。如果区块无效,抵押品将支付提议者本应得到的补偿。这个概念被称为Optimistic Relaying(乐观中继)V1。
将乐观中继进一步推向V2,我们可以消除中继下载区块的需求,再减少50到100毫秒的延迟。
最终,乐观中继的游戏结局开始看起来会很像我上文提到的有效负载时效性委员会模型。顺序如下:建设者在点对点层上提交他们的出价。提议者接受出价,并附上已签名的标头。然后,建设者推出区块。在这个阶段,中继的唯一工作是监督点对点层的内存池,基本上是在发生不同活动时进行记录。中继的角色变得非常轻量级,它只需要监视内存池。这使得中继很像有效负载时效性委员会。所有这些步骤都是为了将来中继被有效负载时效性委员会所取代,从而简化整个协议。
(3)利用建设者进行额外的协议增强
PBS的出现是Flashbots对MEV中心化效应的回应,旨在试图利用MEV取得积极成果。考虑到以太坊中专门从事区块建设这一新角色,这些实体有机会像超级计算机一样运行,与轻量级验证者形成鲜明对比。利用这些强大的建设者的协议设计正在浮出水面。这样做的目的是保持验证者的简单和直接,而建设者(没有这样的限制)可以在更高的计算级别上运行。这些强化的建设者主要应用于扩展。
以太坊研究人员Dankrad Feist的Danksharding设计表明,这些高资源密集型建设者可以构建一个包含所有数据的大区块。然后,数据被分割并由多个KZG承诺提交。创建这个区块需要大量的资源,但是验证它们相对要便宜些。然后,轻量级验证者可以应用数据可用性抽样(Data Availability Sampling)来检查区块的一小部分,并几乎确定整个数据集的可访问性,从而使Proto-Danksharding的数据吞吐量增加约16倍。Danksharding很复杂,这里不做介绍,但关键是这些高级建设者可以被委托更多角色,以进一步增强网络能力。
利用建设者的另一个想法是based rollup的潜在实现。几年前,V神讨论了rollup排序模型,并为其中一种模型创造了一个术语叫做Total Anarchy,在这种模型中,任何人都可以发布一个rollup区块,第一个到达链的序列就是正式的区块。这种方法有很多缺点,比如链上垃圾邮件和获胜序列的模糊性。然而,Justin Drake最近关于based rollup的文章强调了一种利用建设者的更有效的策略。在这个模型中,第一层的建设者就像rollup排序器一样,挑选最优的序列包含入链。这确保了只有最优的序列才能被包含。
除了rollup之外,引入强大的建设者还可以刺激其他创新结构,比如无状态客户端。它们使节点能够像往常一样运行,但不需要保留过时状态。这使得节点更加轻量级,并依赖于建设者生成特定加密证明的能力。
(4)协议强制提议者承诺(PEPC)
协议强制提议者承诺(PEPC)是以太坊基金会研究员Barnabé Monnot 于2022年10月提出的概念。PEPC的核心目标是赋予提议者在区块链创建方面更大的权利,他们把整个任务卖给了专门的建设者所以丧失了权利。在PEPC中,除了通常的以太坊要求之外,提议者可以为一个区块添加额外的条件,使其被视为有效区块。如果一个区块不能满足这些额外条件中的任何一个条件,它就会被认为是无效区块,验证者就会拒绝它。这与EigenLayer承诺不同,在EigenLayer承诺中,有额外承诺的验证者要么因为不合格而损失一些质押ETH,要么因为履行承诺而获得奖励。然而,在PEPC中,区块的有效性与承诺无关。
假设Alice是以太坊网络中的一个提议者。通过PEPC,Alice可以灵活地为即将到来的区块做出特定的承诺。她可以承诺她的区块将包含至少三笔与特定智能合约相关的交易,并且她愿意为这些交易分配区块70%的gas。她广播了这个承诺,它成为她的区块有效性条件的一部分。现在,建设者Bob看到了Alice的承诺。他将符合Alice标准的交易打包在一起,发送给她。如果Alice的区块在构建后符合她的承诺(即包含消耗指定gas的指定交易),那么该区块将被认为是有效的,可以添加到区块链中。否则,Alice的区块将不会被接收,这就确保了她会履行自己所宣布的承诺。
ePBS和PEPC之间的一个关键区别在于承诺性质。在ePBS中,提议者和建设者遵循一个固定的、统一的程序。这是一种一刀切的方法。提议者提交一个特定的区块哈希,然后建设者生成一个匹配的有效负载。然而,PEPC引入了多样性。每个提议者都可以设置独特的条件,提供了更大的灵活性。需要注意的是,PEPC的存在依赖于ePBS,它们是相辅相成的。PEPC的具体工作仍在讨论和研究中。
(5)结论
PBS不是一个具体的实现,它是一种设计哲学。它表明,存在劳动分工的激励机制,协议参与者将把一些责任委托给更专业的外部实体。该协议的目的是提供一个可靠的、尽可能无需信任的接口,以确保这种委托是顺利的、公平的和包容的。如果没有这个无需信任的接口,一些参与者可能会有优势,导致出现PBS时代之前首次观察到的MEV中心化问题。PBS的核心是强调公平和去中心化。虽然要集成到协议中的确切元素将在未来的以太坊更新中才能看到,但以太坊的总体目标仍然很明确:由一组去中心化的轻量级验证者监督的可访问、开放、可信的状态计算。
查看更多