比特币的安全模型核心依赖于这一基本博弈论——矿工们拿着他们的数字镐子,不断追逐利润。而正是这种追逐保持了网络的安全。基本的简单挖矿涉及生成区块以获得区块奖励和交易费用,但你是否考虑过矿工可能还有其他方法从区块链中提取价值,超越这种标准的挖矿过程?矿工是否有其他途径可以利用他们作为验证者的独特位置在区块链上获利?
什么是MEV?
在工作量证明系统中,“矿工可提取价值”(MEV)是一个描述矿工通过操纵交易优先级、排除、重新排列或更改他们所挖区块中的交易来赚取利润的术语。然而,自从以太坊升级到以太坊2.0,将网络转移到权益证明后,MEV的概念在权益证明系统中有了一个新名称,现在被称为“最大提取价值”。在这种情况下,提取价值的机会在区块提议者而不是矿工——即验证者——手中。
矿工(或以太坊中的验证者)在这些网络中扮演着确认区块中交易的特殊角色。他们的位置使他们比其他用户更领先一步,并允许他们决定链中交易的最终顺序。在一个区块内,交易通常按照最高费用的顺序排列,但偶尔会出现一些机会,允许矿工通过战略性地改变交易顺序来获取额外利润。
你可能会想,让矿工多赚点额外利润有什么坏处?问题开始出现,当一些配备了更高级分析能力和更强大计算能力的矿工,比其他人更有效地识别和利用MEV获利机会时。
这些机会可能并不总是容易被发现,但通过分析链可以提取的价值越多,配备机器人进行这项工作的研究团队的激励就越强。随着时间的推移,这种矿工获利能力的差异趋势导致网络内的集中化,最终破坏了区块链的核心原则:去中心化。
这正是比特币开发者社区在考虑如何最好地管理比特币上的更多表达能力时试图防止的情况。
为什么我们需要可编程货币?
历史上,比特币运行相对简单的智能合约。然而,这种模型在处理中等复杂的交易时表现不佳。比特币脚本只能验证认证数据,无法对交易进行限速或定义币的目的地,因为比特币脚本无法访问交易数据。
作为一个稍微独立的问题,对于那些不完全了解其安全要求的用户来说,使用和编写比特币智能合约可能具有挑战性。一个名为“vaults”的提议功能旨在通过引入时间锁定条件来解决这些问题之一。基本上,vaults可以作为一种紧急“逃生舱”,允许用户在私钥被泄露的情况下恢复其资金。但这些功能只有在具有更多表达能力的情况下才有可能。
以太坊因其高度表达能力的脚本功能而广为人知,但它也显著地面临MEV问题。大多数用户通常认为比特币没有MEV,这与以太坊相比显得相当温和,后者被视为MEV的狂野西部。但这是不是全貌?
更具表达能力的智能合约是否会自动激励更多的MEV场景?
有几个因素导致MEV:(1) 内存池透明度,(2) 智能合约透明度,和 (3) 智能合约的表达能力。每一个因素都打开了新的MEV通道;我们将在这里回顾每一个。
坏的:(1) 内存池透明度
像比特币的内存池一样,大多数区块链的内存池是完全透明、开放和可见的,因此每个人都可以在交易被验证和确认到一个区块之前看到正在等待的交易。比特币区块通常需要约10分钟找到,这在理论上给了矿工同样的时间来利用和抢先交易。
在实践中,在比特币上,这不是MEV的来源,原因有几个:(1) 比特币交易足够简单,没有矿工能在分析能力上对其他矿工有显著优势,(2) 比特币交易通常不执行多资产交易,如交换或开放交易,这可能被抢先交易。
与此形成对比的是,以太坊在公共去中心化交易所(DEX)上进行一些最复杂的多资产交易。官方上,以太坊的区块时间为15秒,但在内存池交通高峰期间,即时区块包含所需的燃料费用可能轻松超过一百美元。结果,费用较低的交易最终等待数分钟甚至数小时才会被包含在区块中。这可能会延长这些恶意抢先交易机会的窗口,尤其是在以太坊上,由于大量价值被包裹在二层代币中,这些机会更为普遍。
坏的:(2) 智能合约透明度
在比特币中,“智能合约”是比特币脚本固有的简单锁定和解锁机制。交易值、发送者和接收者的详细信息在区块链上都是公开可见的。虽然这种完全和赤裸的透明度从隐私角度来看并不理想,但这是比特币允许网络中所有参与者验证区块链完整状态的一部分。任何观察者都可以分析这些合同细节,可能会打开某些MEV相关策略的大门。
但比特币脚本语言的设计目的非常有限,主要专注于资金的基本发送和接收功能,以及通过签名或哈希锁验证交易。这种简单性本质上限制了比特币上的MEV策略范围,使这些机会相比其他链条相对稀少。
像以太坊、Solana和Cardano这样的平台也有完全透明的智能合约,但它们与比特币不同,它们还具有高度复杂和表达能力强的脚本语言。它们的图灵完备系统可以理论上执行几乎任何计算任务,其中包括:自执行合同,通过预言机集成现实世界数据,去中心化应用程序(dApps),二层代币,在DEX中进行交换和自动做市商(AMM)。这些结合起来,为MEV机会提供了丰富的环境。基于零知识证明的方案,如STARKex,可以理论上避免其中的一些问题,但这种权衡会带来其他复杂性。
丑的:(3) 智能合约表达能力
在一些链上,MEV机会如此有利可图,以至于有“MEV交易公司”每月带来“五位数高,中六位数”的利润。这种趋势变得如此显著,以至于有专门的仪表板用于扫描以太坊和Solana上的盈利机会。它们的利润通过执行全套MEV策略来获得:抢先交易、夹心交易、代币套利、跟进交易和清算等。每种策略都利用不同的智能合约动态来获利。
这些MEV策略中的一些适用于一层和二层。
广义抢先交易:机器人扫描内存池寻找盈利交易,然后抢先原始交易获利。
夹心交易:攻击者在大交易之前和之后下单以操纵资产价格获利。这一策略利用了大交易引起的可预测价格波动。
然后某些策略是二层代币和智能合约独有的。
跨不同DEX的套利:机器人利用各种DEX上同一资产的价格差异,通过在一个上低价买入,在另一个上高价卖出获利。
DeFi债券曲线中的跟进交易:MEV机器人利用DeFi债券曲线中的可预测价格上涨,通过在大交易之后立即下单,在上升趋势中买入并获利。
DeFi清算:MEV机器人在DeFi借贷中发现抵押品价值低于设定阈值的机会,允许验证者优先处理其交易,以较低价格买入被清算的抵押品。
合同的复杂性显著增加了与MEV相关的挑战。
重入攻击:这些攻击利用智能合约逻辑漏洞,允许攻击者在第一次执行完成之前反复调用一个函数,多次提取资金。在MEV背景下,熟练的个人可以通过这种方式显著获利,特别是在有大量资金的合同中。
互连合同和全局状态:在以太坊等平台上,智能合约可以相互交互,从一个交易引发多个合同的链式反应。这种互连性使得复杂的MEV策略成为可能,一个合同中的交易可能影响另一个合同,提供连锁反应的获利机会。
问题的一部分是,由于二层代币和dApps所创造的总价值通常超过一层链上的原生资产价值,这削弱了验证者纯粹基于费用选择和确认交易的激励。
更糟糕的是,许多这些机会并不严格限于网络验证者。
其他配备MEV扫描机器人的网络参与者可以竞争这些机会,导致网络拥堵,提高燃料费,并增加交易成本。这种情况为网络和其用户带来了负外部性,所有人都受到较高交易费用的影响,因为链条变得不那么高效,运营成本更高。DeFi中的MEV如此普遍,以至于用户几乎接受它作为网络中每个人的隐形税。
这些MEV机会是否自然地作为高度表达能力智能合约的副产品出现,还是存在实现完全可编程货币梦想的替代途径?
除了避免具有高度表达能力智能合约和二层代币的协议,用户可以通过使用支持机密交易的协议来避免一些这些风险,如Liquid,它隐藏了交易细节。但与这些具有更强表达能力脚本语言的平台不同,比特币缺乏你期望从可编程货币中获得的功能。
好的:可编程货币的权衡
在考虑比特币智能合约功能的发展时,我们的选择是将复杂性推到链外,小心地整合有限或狭窄的契约功能,或拥抱完全表达能力的路径。让我们探索每个选项中的一些提议。
(1)链外合约的新结构:ANYPREVOUT
链外解决方案,如闪电网络,旨在提高比特币的可扩展性和功能,而不会增加主链的负担,保持交易快速和费用低廉。这一切听起来都很好。
SIGHASH_ANYPREVOUT(APO)是一个新的公钥类型提议,允许在签名后对交易进行某些调整。它简化了交易的更新方式,使交易更容易引用以前的UTXO,使闪电网络通道更快、更便宜、更安全,特别是在解决争议时。
在底层,APO是一个新的拟议类型的sighash标志。每个比特币交易必须有一个签名来证明其合法性。在创建此签名时,您使用一个“sighash标志”来确定您签署交易的哪些部分。使用APO,发送者将签署所有输出而没有任何输入,以承诺交易的输出,但不具体说明资金来自哪个交易。
APO启用了Eltoo,允许用户在链外交换预签名交易。然而,APO可能会通过使交易可重新排序无意中引入MEV。只要您允许绑定交易图的签名,您就可以交换交易。只要新输入仍与签名兼容,就可以交换输入。
(2)契约:CAT + CSFS和CTV
契约将允许用户控制币的移动,通过设定速度限制或为交易设定特定的目的地。契约有两种不同的类型:递归和非递归。
递归契约允许币不断返回同类型的契约。
非递归契约将这种控制限制在下一个交易上,要求提前定义币的整个未来路径。
CAT + CSFS是一个契约提议,允许脚本构建或定义未来交易的某些部分。CHECKSIGFROMSTACK(CSFS)根据OP_CAT构建的数据验证签名。通过使用CSFS要求签名与OP_CAT动态构建的某些格式匹配,我们可以定义这些UTXO未来的支出方式,并创建一个递归契约,尽管有些笨拙。
OP_CHECKTEMPLATEVERIFY(CTV)是一种创建非递归契约的方法。CTV不定义和验证交易的特定部分,而是限制资金的支出方式,而不指定它们必须去的确切下一个地址。它定义了下一个交易必须确认的“模板”。
递归契约的一个风险可能是创建一个场景,币必须遵循一套不断重复的规则,陷入一个没有出路的循环中。另一个风险是,由于契约是透明和自执行的,它们可能会像其他链条上的MEV策略那样打开比特币。
这里的好消息是什么?
好消息是这些提议都引入了新的表达能力!
现在我们能获得的最大表达能力是多少?
(3)完全表达能力:Simplicity
Simplicity是一种基于区块链的编程语言,与其他脚本语言不同,它非常低级。它不是比特币脚本上的一种语言,也不是其中的一种新的操作码,而是它的替代品。理论上,Simplicity可以实现所有契约提议,并实现许多密码朋克想要的可编程货币合同,但没有以太坊的负外部性。
Simplicity保持了比特币的设计原则,即自包含的交易,其中程序无法访问交易之外的任何信息。Simplicity的设计目标是最大表达能力和安全性,支持形式验证和静态分析,为用户提供更可靠的智能合约。
将Simplicity和Simfony(Simplicity的前端)与:(1)比特币契约提议和(2)其他区块链上的脚本语言进行比较:
比特币脚本上的契约提议,尽管比Simplicity简单得多,但缺乏处理脚本中费用估算的表达能力,因为比特币缺乏算术功能。没有办法乘除,没有条件语句或堆栈操作码;也很难估计与给定合同或契约相关的合理费用率。用户最终会得到一团糟的代码,其中80%的合同逻辑用于尝试确定其费用率。这使得这些契约合同超级复杂且难以理解。
EVM有循环结构,使得燃气使用的静态分析非常困难。而在Script或Simplicity中,您可以只计算每个操作码,或递归地加总每个函数的成本。由于Simplicity有一个形式模型,您可以形式推理程序行为。虽然您可以对资源使用进行静态分析,但Script无法做到这一点。
Simplicity将为用户提供最高的表达能力,以及静态分析和形式验证等其他有价值的功能。用户被激励(虽然不是被限制)构建抵抗MEV的智能合约。此外,即使单个合同没有,也可能通过组合不同的合同引发MEV。这代表了一种根本性的权衡。
推进比特币智能合约功能的想法无疑是令人兴奋和激动的。但重要的是要认识到所有这些提议都带有一定程度的MEV风险——尽管可能不像其他链条上那么严重。当我们考虑为比特币引入更多的可编程货币时,我们必须问一些问题:
我们能否建立一个零MEV风险的协议,或者这是一个无法实现的理想?
鉴于许多提议中固有的MEV风险,什么程度的MEV风险是可以接受的?
最后,什么是提供最大表达能力的最简单的提议?
每个提议都有自己的优势和劣势。然而,无论我们选择哪个方向,我们都应该始终优先考虑安全性和坚持去中心化的原则。
有关详细更新和更多信息,请关注Blockstream Research的𝕏 feed。
注意:本文最初发表于比特币杂志,可以在此处阅读。