作者说明:init4 是一个研究团队,致力于下一代以太坊工具的开发。这是一份研究笔记,而非披露文档。虽然我们将讨论已部署和提议系统的安全模型中的细微差别和不足,但将这些描述为“漏洞”或“之前未知的”是不准确的。
抗审查仍然是加密货币,尤其是以太坊的核心价值之一。我们相信,链上交易的好处应该对所有人开放,链的规则应平等适用于所有用户和使用场景。价值观是这个领域发展的推动力。工程学的任务是将这些价值观与现实对照,发现它们在哪里以及如何失效。
多米诺骨牌也有序列 :) 图片由 Tom Wilson 提供,来源于 Unsplash
我们通常将审查定义为故意阻止交易出现在标准排序中(即交易排除)。当排序完全依赖于排序系统的经济结果时,我们认为排序是公平或中立的;而当排序依赖于其他信息时,我们认为排序是不公平的或被审查的。例如,在创建区块时,拒绝包含低费用的交易是可以接受的,但因为交易是由特定人士发送的而拒绝包含该交易则不可接受。因此,我们说当交易的包含依赖于非经济信息时,该交易就是被审查的。如果一笔交易为排序系统带来的可观察利润多于任何已包含的交易,但这笔交易本身却未被包含,则该交易被认为是被审查的。这一定义促使了对审查抗性强制包含机制的研究。如果用户能够强制包含他们的交易,那么根据这个定义,该交易就不能被审查。
OP Stack 链的核心安全目标之一是排序器不应该能够阻止用户向 L2 链提交交易。
现代 Rollup 通常具有中心化的排序。这意味着,排序器的审查变得非常简单,因为他们可以选择不包含任何特定用户的交易。为了缓解这一问题,几个 Rollup,包括 Optimism 和 Arbitrum,采用了强制包含机制。这些机制允许用户确保他们的交易将在一定时间延迟后由 Rollup 执行,无论排序器的行为如何。强制包含是通过部署在 L1 上的合约实现的。因此,理论上,强制包含的交易具有与其他以太坊交易相同的抗审查性。
强制包含指定了在任何有效排序中必须保留的子范围。以 EIP-7547 为例,已经提出了一个针对以太坊的强制包含机制。包含列表将允许区块提议者部分指定下一个区块的内容。在假设区块提议者的审查动机低于区块构建者的情况下,这将有效缓解审查问题。
一般来说,强制包含机制为有效排序设定了新的约束条件。根据协议规则1.,它使得广泛的排序类别无效。强制包含应被视为允许用户指定未来排序的一个子集。所有有效排序必须在强制子集的基础上进行扩展。
不幸的是,交易确认只是手段,而非目的。我们的审查模型是不完整的!
审查必须根据目标来定义。用户希望发送代币、购买 NFT、借入资金等。交易的确认只是实现这些目标2的附带结果。审查者也有特定的目标。这个目标可能是阻止某个黑客交易成功、遵守某些法律,或干扰竞争对手的业务。尊重双方的意图,我们需要重新定义审查。
考虑到这一点,我们应当扩展对审查的定义:如果第三方可以阻止交易实现其目标,那么这笔交易就是被审查的。也就是说,审查者不需要阻止交易的确认;他们只需使智能合约执行回退。使 EVM 交易回退就是对该交易的审查,尽管该交易属于标准链的一部分。忽视交易内容的威胁模型不能准确模拟审查,因此无法有效保护用户免受审查。
从半正式的角度来看,对于链上的每次交互,我们使用一个评分谓项 f 来评估排序结果,并生成 0(目标未达成)或 1(目标达成)。在这个模型中,审查者的评分函数实际上是 f’ 的相反值:f’ = !f。也就是说,当用户没有实现目标时,审查者就达到了他们的目的。3
虽然用户的目标可能是隐藏的,但交易本身几乎总是包含足够的信息用于推断它。Uniswap 交易有明显的目标。此外,由于区块链是确定性的,审查者可以完美预测哪些排序会满足审查者的谓项。因此,用户不能依赖隐藏信息来保护自己免受 EVM 模型中的审查。交易细节必须公开,这意味着用户目标的信息是公开的。
为了简单起见,假设我们在标准的提前排序器模型4中工作。我们将在后面处理排序器轮换下的强制包含。在这个模型中,排序器对排序有完全的控制权,并可以完美模拟任何结果。也就是说,他们可以从所有可能的排序中选择。因此,我们半正式地询问关于审查的问题:“是否存在某个有效的排序,使得 f 评估结果为 0?”如果这样的排序存在,排序器就可以选择它。
从这里,我们可以扩展模型以考虑强制包含。“是否存在某个有效的排序,其中包含用户的子排序,使得 f 评估结果为 0?”如果存在这样的排序,排序器就可以选择它。强制包含并不阻止排序器对排序的控制,它只是约束了他们的行为。不幸的是,强制包含存在一些根本性的问题,使其在许多交易中无法成为有效的审查抵抗机制。
强制包含机制意味着排序发生在两种模式之一:非强制或强制。存在一个定义的点,在此点上排序从非强制过渡到强制(反之亦然)。这个点就是交接。交接给强制包含机制的设计带来了棘手的问题。
必须从非强制包含过渡到强制包含。在交接时,强制交易在那个状态下执行。因此,状态争用5问题再次出现。当交接发生在一个交易批次(如区块)内时,批次的创建者可以控制交接时的状态。如果强制包含的交易读取了任何公共状态,那么批次创建者可以在强制交易执行前后修改这个状态。状态争用足以导致审查。
由于批次创建者可以控制交接时的状态,因此他们可以影响强制交易的结果。如果他们能影响结果,就有可能影响评分谓项的结果。例如,考虑一个简单的 AMM 交互。用户设置了一个最低可接受价格,但批次创建者可以确保在交接点市场价格低于这个最低可接受价格。这会导致用户的交易回退,实际上就是对用户进行审查。67
值得注意的是,通过状态争用进行的审查比通过排除进行的审查更有效。被排除的交易可以被包含在未来的区块中。而通过争用被审查的交易则会被永久无效。它已经包含在链上,永远不能再次包含。这个交易永远无法实现用户的目标。要重新尝试,用户必须重新创建并重新提交交易(这可能再次被审查)。
任何用户都可以完全绕过排序器,直接从 L1 提交任何 Arbitrum 交易(例如,发起一个 L2 到 L1 的消息以提取资金)。因此,这种机制即使在排序器完全无响应或甚至恶意的情况下,也能保持抗审查性。
在提前排序模型中,排序器对交接位置有近乎完美的控制,并且支付的费用减少(因为他们不需要支付小费,并且可以对 EIP-1559 的 basefee 执行一定的控制)。因此,排序器在使用状态争用来审查用户操作方面处于特权位置,这非常简单。交接问题确保排序器可以审查大量的交易类别。
对于 EIP-7547,构建者选择区块中交接发生的位置。因此,构建者能够选择区块内交接的具体位置。这意味着他们可以随意9 选择前缀和后缀,只要遵守区块Gas规则。前缀可以将链置于一个交易会回退的状态,而后缀则会将链恢复到正常状态。EIP-7547 的包含列表不足以防止任何访问有争议状态的交易被审查。交接问题阻止了包含列表在大多数情况下确保交易执行。
强制包含对于大多数区块链的非一般使用而言并不能有效保护用户免受审查。交接问题确保了审查者即使在排序上没有足够的自由度,也有足够的状态控制权。这一问题影响 AMM、借贷市场、拍卖以及大多数其他 DeFi 行动。即使你能保证交易的包含,许多重要的行动也可能被审查。状态争用对强制包含作为审查抵抗机制的有效性设置了严格的限制。
为了理解这一点的深远影响,可以想想一个用户在 Optimism 上的借贷市场中借出 USDC。当用户想从市场中提取 USDC 时,他们提交了一个 Optimism 交易,但排序器对其进行了审查。他们然后使用官方的强制包含机制将交易排队到以太坊,绕过了排序器。
排序器可以看到这个排队中的交易,并选择对其执行夹心交易。为了审查这个交易,排序器在强制交易前立即从市场上借出所有可用的 USDC。由于市场不再有流动性,强制交易会回退。然后,排序器可以立即偿还 USDC。
排序器或构建者可以操控交接时的状态。这要求排序器拥有足够的抵押品来借取 USDC,但实际借款成本非常低。10此外,抵押品在所有审查操作中都是可重复使用的,因为借款不会保持开放。因此,在 Optimism(或 Arbitrum 或其他集中排序的 rollup)上使用 AAVE 或 Compound 的用户无法保证他们能赎回抵押品。排序器可以在任何时间审查任何借贷市场的提款。强制包含根本无法保护用户免受审查。
我们有几个后续研究方向。
首先,EIP-7547 可以通过要求 IL 交易在下一个区块末尾处理来简单地改进。在 PBS 拍卖的背景下,审查即 MEV。构建者从中获得一些非经济价值,这些价值必须以 ETH 为单位分配主观价值。因此,构建者的审查会导致其区块竞标11增加。这也扩展到了搜索者,他们可能会制作审查捆绑包。审查的部分经济价值随后会被提案者捕获,从而提供了即使在不直接参与审查的情况下也容忍审查的激励。将强制包含交易放在区块末尾可以消除区块构建者轻松夹在 IL 交易中的能力,并增加有争议审查的经济成本。例如,通过状态争用审查 AMM 交互可能需要放弃一些 AMM 套利,或者需要花费很高的成本扩大市场的范围,这些成本无法通过关闭夹层来弥补。此外,这将限制搜索者(而非构建者)每个区块生成的审查捆绑包数量。12我们建议在区块顶部执行,因为前缀比后缀更重要。然而,这会显著增加 IL 交易的成本,因为它允许通过强制包含在区块顶部提取 MEV。13取消审查者原子地附加 IL 交易的权利是一项小的改进。
其次,交接问题存在的原因是审查者可以通过交易模拟预见并控制输入状态。许多 MEV 抵抗机制引入了隐藏信息,以去除审查者推断用户目标和模拟结果的能力。通常这些机制是「提交-揭示」方案,其中一些交易信息在排序发生后才公开。排序执行分离和隐藏信息似乎很有前景,但与 MEV 供应链、以太坊共识过程以及排序的 rollup 模型大多不兼容。某种程度上消除模拟交易能力的方法将解决审查和大类 MEV,但对协议、协议操作员、应用程序和最终用户都会极具侵入性。
第三,有一种有趣的“顺序无关”的评分函数。这些是无法通过状态争用进行审查的目标,要么是因为它们不访问有争议的状态,要么是因为它们访问的有争议状态具有足够的约束,使其在某种意义上“可靠”。与顺序无关的操作包括将 ETH 发送到 EOA、大多数 ERC-20 转账14,以及一些 DeFi 交互如向市场添加抵押品。这些操作通过争用保护免受审查。这类目标在安全的跨链通信和 MEV 抵抗中也有有趣的对应关系,值得深入研究。应用程序和协议可以设计为在某些情况下仅包含与顺序无关的操作,但仍需进一步研究。
丰富的状态使恶意行为者能够在仍然包含交易的情况下对其进行审查。交接问题是强制包含机制的根本问题,只能进行缓解。在中心化排序的 rollup 中,无法进行缓解。强制包含无法解决存在有争议状态时的审查问题。即使通过强制包含,也可以审查大量经济重要的交易。交接问题在现代 rollup 中是普遍存在的,并且在以太坊的抗审查 EIP 中也存在。因此,强制包含虽然有益,但永远不足以为丰富状态的链提供抗审查性。Rollup 并不“继承”以太坊的安全属性,认为它们会这样做是愚蠢的。当你不再过度关注包含时,很明显抗审查性是抗 MEV 的一个特例。
非常感谢 Mike Neuder、Tarun Chitra 和 Brandon Curtis 对本工作的审阅帮助以及提供的反馈。
如同常见的做法,对于 L1 协议,通常是通过拒绝无效的区块来实现,而在 rollup 中,则是通过某种筛选功能将无效的序列转变为有效序列来实现的。
这不是关于意图的讨论,目前世界上并不需要更多这种讨论。
这显然是一个不完整的模型,因为它没有考虑结果的主观价值。例如,如果审查失败,审查者可能会损失任何金额(例如,因为如果他们未能审查某些行为,可能会被法国警方逮捕)。另一方面,如果用户在特定时间内未能实现目标,他们可能会赢得或失去所有金额(例如,他们已经用自己的代币借取了 1 亿多美元的贷款,需要在被清算之前再抵押)。
这与“基于”排序器模型相对。在大多数现代 rollup 中,排序器“跑在”以太坊前面,因为它在交易提交到以太坊之前就提供了包含和执行证明。在这种模型中,排序器对序列具有完全控制权,交易结果必须独立于以太坊的重组。
当多个用户希望访问相同的合约、资产或状态时,他们的交易会相互“争夺”,并可能干扰彼此的结果。争用可能是偶然发生的,也可能是故意的。这是区块链系统中富有状态的一个棘手问题。公共访问共享状态是 MEV、可扩展性问题以及现代社会文明衰退的根源。
一般来说,你应该将通过状态争用进行的审查视为 MEV 的一个特殊情况。由于提取的价值是链下的、不可观察的,并且可能非常大,因此很难预测何时会发生状态争用审查。
我们在 2017 年的文章《矿工不是你的朋友》中专门讨论了如何利用状态争用来撤销交易。当时“MEV”这个术语尚未得到使用。
众所周知,PBS 使抗审查变得极为复杂。请参见 VB 的@vbuterin/pbs_censorship_resistance">研究笔记。
在交易中添加前缀和后缀通常被称为“夹心交易”,并且被普遍认为是使用状态争用提取 MEV 的一种方法。
借款仅持有几秒钟时间。如果排序器在某些情况下能够保持时间戳或区块边界,这样实际上借款时间可以为零。
构建者愿意支付高达他们对审查的主观价值,可能将竞标价格推高到超出区块的客观可提取价值。在极端情况下,这可能导致审查者的 ETH 余额发生负变化(即他们支付的 ETH 超过了从区块中获得的费用和奖励)。
注意这依赖于 MEV 拍卖规则,它能防止不同捆绑包中的交易交错,并且不允许“必须撤销”交易。如果这些规则被放宽以允许捆绑包中的交易交错,和/或构建者开始支持捆绑包中的“必须撤销”区块,那么保护就不复存在。这种动态出现是因为如果 IL 交易必须在区块末尾,则不能有非强制包含的交易交错,因此最多只能出现一个搜索者审查捆绑包。
实际上允许构建者创建有限的跨区块捆绑包。像 FOCIL 这样的预共识系统可以缓解这个问题。
对于标准 ERC-20 代币,转账调用通常不会通过争用进行审查,因为第三方无法减少用户的余额。然而,考虑一下 transferFrom 调用。如果批准的转账方是一个允许自己状态争用的合约,那么该操作可能会通过争用进行审查(以某种意外的方式消耗 transferFrom 所需的批准)。
作者说明:init4 是一个研究团队,致力于下一代以太坊工具的开发。这是一份研究笔记,而非披露文档。虽然我们将讨论已部署和提议系统的安全模型中的细微差别和不足,但将这些描述为“漏洞”或“之前未知的”是不准确的。
抗审查仍然是加密货币,尤其是以太坊的核心价值之一。我们相信,链上交易的好处应该对所有人开放,链的规则应平等适用于所有用户和使用场景。价值观是这个领域发展的推动力。工程学的任务是将这些价值观与现实对照,发现它们在哪里以及如何失效。
多米诺骨牌也有序列 :) 图片由 Tom Wilson 提供,来源于 Unsplash
我们通常将审查定义为故意阻止交易出现在标准排序中(即交易排除)。当排序完全依赖于排序系统的经济结果时,我们认为排序是公平或中立的;而当排序依赖于其他信息时,我们认为排序是不公平的或被审查的。例如,在创建区块时,拒绝包含低费用的交易是可以接受的,但因为交易是由特定人士发送的而拒绝包含该交易则不可接受。因此,我们说当交易的包含依赖于非经济信息时,该交易就是被审查的。如果一笔交易为排序系统带来的可观察利润多于任何已包含的交易,但这笔交易本身却未被包含,则该交易被认为是被审查的。这一定义促使了对审查抗性强制包含机制的研究。如果用户能够强制包含他们的交易,那么根据这个定义,该交易就不能被审查。
OP Stack 链的核心安全目标之一是排序器不应该能够阻止用户向 L2 链提交交易。
现代 Rollup 通常具有中心化的排序。这意味着,排序器的审查变得非常简单,因为他们可以选择不包含任何特定用户的交易。为了缓解这一问题,几个 Rollup,包括 Optimism 和 Arbitrum,采用了强制包含机制。这些机制允许用户确保他们的交易将在一定时间延迟后由 Rollup 执行,无论排序器的行为如何。强制包含是通过部署在 L1 上的合约实现的。因此,理论上,强制包含的交易具有与其他以太坊交易相同的抗审查性。
强制包含指定了在任何有效排序中必须保留的子范围。以 EIP-7547 为例,已经提出了一个针对以太坊的强制包含机制。包含列表将允许区块提议者部分指定下一个区块的内容。在假设区块提议者的审查动机低于区块构建者的情况下,这将有效缓解审查问题。
一般来说,强制包含机制为有效排序设定了新的约束条件。根据协议规则1.,它使得广泛的排序类别无效。强制包含应被视为允许用户指定未来排序的一个子集。所有有效排序必须在强制子集的基础上进行扩展。
不幸的是,交易确认只是手段,而非目的。我们的审查模型是不完整的!
审查必须根据目标来定义。用户希望发送代币、购买 NFT、借入资金等。交易的确认只是实现这些目标2的附带结果。审查者也有特定的目标。这个目标可能是阻止某个黑客交易成功、遵守某些法律,或干扰竞争对手的业务。尊重双方的意图,我们需要重新定义审查。
考虑到这一点,我们应当扩展对审查的定义:如果第三方可以阻止交易实现其目标,那么这笔交易就是被审查的。也就是说,审查者不需要阻止交易的确认;他们只需使智能合约执行回退。使 EVM 交易回退就是对该交易的审查,尽管该交易属于标准链的一部分。忽视交易内容的威胁模型不能准确模拟审查,因此无法有效保护用户免受审查。
从半正式的角度来看,对于链上的每次交互,我们使用一个评分谓项 f 来评估排序结果,并生成 0(目标未达成)或 1(目标达成)。在这个模型中,审查者的评分函数实际上是 f’ 的相反值:f’ = !f。也就是说,当用户没有实现目标时,审查者就达到了他们的目的。3
虽然用户的目标可能是隐藏的,但交易本身几乎总是包含足够的信息用于推断它。Uniswap 交易有明显的目标。此外,由于区块链是确定性的,审查者可以完美预测哪些排序会满足审查者的谓项。因此,用户不能依赖隐藏信息来保护自己免受 EVM 模型中的审查。交易细节必须公开,这意味着用户目标的信息是公开的。
为了简单起见,假设我们在标准的提前排序器模型4中工作。我们将在后面处理排序器轮换下的强制包含。在这个模型中,排序器对排序有完全的控制权,并可以完美模拟任何结果。也就是说,他们可以从所有可能的排序中选择。因此,我们半正式地询问关于审查的问题:“是否存在某个有效的排序,使得 f 评估结果为 0?”如果这样的排序存在,排序器就可以选择它。
从这里,我们可以扩展模型以考虑强制包含。“是否存在某个有效的排序,其中包含用户的子排序,使得 f 评估结果为 0?”如果存在这样的排序,排序器就可以选择它。强制包含并不阻止排序器对排序的控制,它只是约束了他们的行为。不幸的是,强制包含存在一些根本性的问题,使其在许多交易中无法成为有效的审查抵抗机制。
强制包含机制意味着排序发生在两种模式之一:非强制或强制。存在一个定义的点,在此点上排序从非强制过渡到强制(反之亦然)。这个点就是交接。交接给强制包含机制的设计带来了棘手的问题。
必须从非强制包含过渡到强制包含。在交接时,强制交易在那个状态下执行。因此,状态争用5问题再次出现。当交接发生在一个交易批次(如区块)内时,批次的创建者可以控制交接时的状态。如果强制包含的交易读取了任何公共状态,那么批次创建者可以在强制交易执行前后修改这个状态。状态争用足以导致审查。
由于批次创建者可以控制交接时的状态,因此他们可以影响强制交易的结果。如果他们能影响结果,就有可能影响评分谓项的结果。例如,考虑一个简单的 AMM 交互。用户设置了一个最低可接受价格,但批次创建者可以确保在交接点市场价格低于这个最低可接受价格。这会导致用户的交易回退,实际上就是对用户进行审查。67
值得注意的是,通过状态争用进行的审查比通过排除进行的审查更有效。被排除的交易可以被包含在未来的区块中。而通过争用被审查的交易则会被永久无效。它已经包含在链上,永远不能再次包含。这个交易永远无法实现用户的目标。要重新尝试,用户必须重新创建并重新提交交易(这可能再次被审查)。
任何用户都可以完全绕过排序器,直接从 L1 提交任何 Arbitrum 交易(例如,发起一个 L2 到 L1 的消息以提取资金)。因此,这种机制即使在排序器完全无响应或甚至恶意的情况下,也能保持抗审查性。
在提前排序模型中,排序器对交接位置有近乎完美的控制,并且支付的费用减少(因为他们不需要支付小费,并且可以对 EIP-1559 的 basefee 执行一定的控制)。因此,排序器在使用状态争用来审查用户操作方面处于特权位置,这非常简单。交接问题确保排序器可以审查大量的交易类别。
对于 EIP-7547,构建者选择区块中交接发生的位置。因此,构建者能够选择区块内交接的具体位置。这意味着他们可以随意9 选择前缀和后缀,只要遵守区块Gas规则。前缀可以将链置于一个交易会回退的状态,而后缀则会将链恢复到正常状态。EIP-7547 的包含列表不足以防止任何访问有争议状态的交易被审查。交接问题阻止了包含列表在大多数情况下确保交易执行。
强制包含对于大多数区块链的非一般使用而言并不能有效保护用户免受审查。交接问题确保了审查者即使在排序上没有足够的自由度,也有足够的状态控制权。这一问题影响 AMM、借贷市场、拍卖以及大多数其他 DeFi 行动。即使你能保证交易的包含,许多重要的行动也可能被审查。状态争用对强制包含作为审查抵抗机制的有效性设置了严格的限制。
为了理解这一点的深远影响,可以想想一个用户在 Optimism 上的借贷市场中借出 USDC。当用户想从市场中提取 USDC 时,他们提交了一个 Optimism 交易,但排序器对其进行了审查。他们然后使用官方的强制包含机制将交易排队到以太坊,绕过了排序器。
排序器可以看到这个排队中的交易,并选择对其执行夹心交易。为了审查这个交易,排序器在强制交易前立即从市场上借出所有可用的 USDC。由于市场不再有流动性,强制交易会回退。然后,排序器可以立即偿还 USDC。
排序器或构建者可以操控交接时的状态。这要求排序器拥有足够的抵押品来借取 USDC,但实际借款成本非常低。10此外,抵押品在所有审查操作中都是可重复使用的,因为借款不会保持开放。因此,在 Optimism(或 Arbitrum 或其他集中排序的 rollup)上使用 AAVE 或 Compound 的用户无法保证他们能赎回抵押品。排序器可以在任何时间审查任何借贷市场的提款。强制包含根本无法保护用户免受审查。
我们有几个后续研究方向。
首先,EIP-7547 可以通过要求 IL 交易在下一个区块末尾处理来简单地改进。在 PBS 拍卖的背景下,审查即 MEV。构建者从中获得一些非经济价值,这些价值必须以 ETH 为单位分配主观价值。因此,构建者的审查会导致其区块竞标11增加。这也扩展到了搜索者,他们可能会制作审查捆绑包。审查的部分经济价值随后会被提案者捕获,从而提供了即使在不直接参与审查的情况下也容忍审查的激励。将强制包含交易放在区块末尾可以消除区块构建者轻松夹在 IL 交易中的能力,并增加有争议审查的经济成本。例如,通过状态争用审查 AMM 交互可能需要放弃一些 AMM 套利,或者需要花费很高的成本扩大市场的范围,这些成本无法通过关闭夹层来弥补。此外,这将限制搜索者(而非构建者)每个区块生成的审查捆绑包数量。12我们建议在区块顶部执行,因为前缀比后缀更重要。然而,这会显著增加 IL 交易的成本,因为它允许通过强制包含在区块顶部提取 MEV。13取消审查者原子地附加 IL 交易的权利是一项小的改进。
其次,交接问题存在的原因是审查者可以通过交易模拟预见并控制输入状态。许多 MEV 抵抗机制引入了隐藏信息,以去除审查者推断用户目标和模拟结果的能力。通常这些机制是「提交-揭示」方案,其中一些交易信息在排序发生后才公开。排序执行分离和隐藏信息似乎很有前景,但与 MEV 供应链、以太坊共识过程以及排序的 rollup 模型大多不兼容。某种程度上消除模拟交易能力的方法将解决审查和大类 MEV,但对协议、协议操作员、应用程序和最终用户都会极具侵入性。
第三,有一种有趣的“顺序无关”的评分函数。这些是无法通过状态争用进行审查的目标,要么是因为它们不访问有争议的状态,要么是因为它们访问的有争议状态具有足够的约束,使其在某种意义上“可靠”。与顺序无关的操作包括将 ETH 发送到 EOA、大多数 ERC-20 转账14,以及一些 DeFi 交互如向市场添加抵押品。这些操作通过争用保护免受审查。这类目标在安全的跨链通信和 MEV 抵抗中也有有趣的对应关系,值得深入研究。应用程序和协议可以设计为在某些情况下仅包含与顺序无关的操作,但仍需进一步研究。
丰富的状态使恶意行为者能够在仍然包含交易的情况下对其进行审查。交接问题是强制包含机制的根本问题,只能进行缓解。在中心化排序的 rollup 中,无法进行缓解。强制包含无法解决存在有争议状态时的审查问题。即使通过强制包含,也可以审查大量经济重要的交易。交接问题在现代 rollup 中是普遍存在的,并且在以太坊的抗审查 EIP 中也存在。因此,强制包含虽然有益,但永远不足以为丰富状态的链提供抗审查性。Rollup 并不“继承”以太坊的安全属性,认为它们会这样做是愚蠢的。当你不再过度关注包含时,很明显抗审查性是抗 MEV 的一个特例。
非常感谢 Mike Neuder、Tarun Chitra 和 Brandon Curtis 对本工作的审阅帮助以及提供的反馈。
如同常见的做法,对于 L1 协议,通常是通过拒绝无效的区块来实现,而在 rollup 中,则是通过某种筛选功能将无效的序列转变为有效序列来实现的。
这不是关于意图的讨论,目前世界上并不需要更多这种讨论。
这显然是一个不完整的模型,因为它没有考虑结果的主观价值。例如,如果审查失败,审查者可能会损失任何金额(例如,因为如果他们未能审查某些行为,可能会被法国警方逮捕)。另一方面,如果用户在特定时间内未能实现目标,他们可能会赢得或失去所有金额(例如,他们已经用自己的代币借取了 1 亿多美元的贷款,需要在被清算之前再抵押)。
这与“基于”排序器模型相对。在大多数现代 rollup 中,排序器“跑在”以太坊前面,因为它在交易提交到以太坊之前就提供了包含和执行证明。在这种模型中,排序器对序列具有完全控制权,交易结果必须独立于以太坊的重组。
当多个用户希望访问相同的合约、资产或状态时,他们的交易会相互“争夺”,并可能干扰彼此的结果。争用可能是偶然发生的,也可能是故意的。这是区块链系统中富有状态的一个棘手问题。公共访问共享状态是 MEV、可扩展性问题以及现代社会文明衰退的根源。
一般来说,你应该将通过状态争用进行的审查视为 MEV 的一个特殊情况。由于提取的价值是链下的、不可观察的,并且可能非常大,因此很难预测何时会发生状态争用审查。
我们在 2017 年的文章《矿工不是你的朋友》中专门讨论了如何利用状态争用来撤销交易。当时“MEV”这个术语尚未得到使用。
众所周知,PBS 使抗审查变得极为复杂。请参见 VB 的@vbuterin/pbs_censorship_resistance">研究笔记。
在交易中添加前缀和后缀通常被称为“夹心交易”,并且被普遍认为是使用状态争用提取 MEV 的一种方法。
借款仅持有几秒钟时间。如果排序器在某些情况下能够保持时间戳或区块边界,这样实际上借款时间可以为零。
构建者愿意支付高达他们对审查的主观价值,可能将竞标价格推高到超出区块的客观可提取价值。在极端情况下,这可能导致审查者的 ETH 余额发生负变化(即他们支付的 ETH 超过了从区块中获得的费用和奖励)。
注意这依赖于 MEV 拍卖规则,它能防止不同捆绑包中的交易交错,并且不允许“必须撤销”交易。如果这些规则被放宽以允许捆绑包中的交易交错,和/或构建者开始支持捆绑包中的“必须撤销”区块,那么保护就不复存在。这种动态出现是因为如果 IL 交易必须在区块末尾,则不能有非强制包含的交易交错,因此最多只能出现一个搜索者审查捆绑包。
实际上允许构建者创建有限的跨区块捆绑包。像 FOCIL 这样的预共识系统可以缓解这个问题。
对于标准 ERC-20 代币,转账调用通常不会通过争用进行审查,因为第三方无法减少用户的余额。然而,考虑一下 transferFrom 调用。如果批准的转账方是一个允许自己状态争用的合约,那么该操作可能会通过争用进行审查(以某种意外的方式消耗 transferFrom 所需的批准)。