走向多维——EVM Gas计量实证分析 - 执行层研究

本文总结了一项实证分析的关键结论,该分析侧重于理解不同的EVM gas计量方案如何影响网络吞吐量和区块利用率,特别是多维方案,其中不同资源的使用被分别计量。研究发现,采用多维gas计量方案可以显著提高L1的可扩展性,但同时也增加了复杂性,需要在复杂性和潜在收益之间进行权衡。

3c0abdf68fa4364964ce6215fd77eb689ec5a217e9b2a2a0806125d3cb2b0db3

这篇文章总结了一项实证分析的主要结论,该分析侧重于了解不同的 EVM gas 计量方案如何影响网络吞吐量和区块利用率。具体而言,我们专注于多维度方案,其中不同资源的使用情况被单独计量。

为了简洁起见,我将跳过许多技术细节。请参阅项目文档了解更多详细信息。

我要感谢 @dcrapis 提供的宝贵审查、意见和讨论,感谢 Shouqiao Wang 提供的早期讨论和分享的初步分析,以及 ethPandaOps 团队提供的精彩数据。 该项目得到了 Robust Incentives Group 提供的 ROP-15: EVM Gas Metering 资助的支持。

Gas 计量和区块利用率

Gas 是量化在以太坊网络上执行操作所需的计算工作的单位。以太坊上的每笔交易都会消耗资源,为了防止垃圾邮件和无限循环,用户必须为这些资源付费。

此过程的一个重要组成部分是 gas 计量方案,即负责测量区块的完整程度以及剩余可用资源数量的函数。所有去中心化网络的资源都是有限的,因此,协议必须有一种方法来计量使用情况并确定区块何时达到这些限制。

在以太坊中,当前的计量方案为每个操作分配一个成本(以 gas 单位衡量),并加上每笔交易的 gas。然后,它将此总和与 3600 万 gas 单位的固定限制进行比较。一旦一个区块达到 3600 万 gas 单位,它就被认为是完全满的。除了这个限制之外,协议还将区块使用的 gas 与 1800 万的目标进行比较,该目标用于设置所有交易必须支付的基础费用。

该方案的优点是简单,因此易于与其进行交互。 但是,它的缺点是高估了一个区块离网络资源限制有多近。

为了说明这一点,让我们从一个简单的例子开始。在此示例中,我们有两个区块 B_1 和 B_2,以及一个仅关心两个资源 x 和 y 的网络,它们的限制为 1。B_1 的资源使用情况为 (x=1, y=0),B_2 的资源使用情况为 (x=0.5, y=0.5)。根据当前的方案,两个区块的使用量均为 1 个单位。但是,我们可以看到,两个区块都没有达到可用资源的限制。B_1 达到了资源 x 的限制,但它不使用资源 y。另一方面,B_2 仅使用两种资源的一半。

当前方案中缺乏表现力导致了用一种单独考虑不同资源的使用情况和限制的方案来取代它的想法。这些通常被称为“多维方案”。

一种可能的方法是类似于 Vitalik 描述 的方案。在这种方法中,我们将资源分成几个组(在我们之前的例子中,资源 x 为一个组,资源 y 为另一个组)。然后,对于每个区块,我们添加每个组的 gas 单位(g_x 和 g_y),并将区块资源利用率定义为组的最大值 ( \text{utilization}=\max(c_x*r_x+c_y*r_y, c'_x*r_x, g_y))。但请注意,Vitalik 的方法是在交易级别,而不是在区块级别。我们可以看到,在我们之前的例子中,这种计量方案将允许我们用更多的交易来填充两个区块:B_1 可以额外包含 0.5 个单位的每个资源,而区块 B_2 可以包含 1 个单位的资源 y 而不达到区块限制。

这个例子突出了多维计量的一个潜在优势。通过允许更有效地计算资源利用率,我们可以提高网络吞吐量(即,在一个区块中处理更多的交易),而不会显着影响资源过度使用的风险。但是,这里有两个关键问题需要考虑:

  1. 我们应该期望从多维度获得什么样的实际吞吐量收益?
  2. 多维方案的设计空间是什么? 决定最佳设计的后续步骤是什么?

我们将在以下各节中尝试解决这些问题。

走向多维。为什么?

按资源划分的历史 gas 使用情况

为了了解多维计量的潜在吞吐量收益,我们首先需要检查每个资源正在使用多少 gas。为此,我们设计了一个数据管道,该管道从 Xatu 的数据集 和 Erigon 节点的 debug traces 收集原始交易数据,处理并聚合这些数据,以计算每个交易的各个 gas 成本组成部分(内在成本,输入数据,操作码和退款),并将这些成本映射到特定的 EVM 资源(计算,内存,状态,历史记录,访问和 bloom topics)。

操作和资源之间的映射是此分析的基础,是一项重要假设;不同的映射将对最终的资源分解产生重大影响。我们的映射基于对基础操作的了解(例如,我们知道某些操作码仅使用计算资源)以及 按资源划分的某些操作码成本 的部分分解,该分解是在首次设计 gas 模型时进行的。

我们还应该进一步注意,此分析忽略了与 blobs 相关的成本和资源利用率。尽管目前这是一个平行的自由市场,但它仍然会对带宽限制施加约束,因此在设计新的 gas 计量模型时应考虑这一点。

下图显示了 22000000 到 22005000 区块(于 3 月 8 日处理)之间观察到的每个资源对总 gas 消耗的贡献。为了提高可见性,我们汇总了 10 个连续区块组的成本。由于每个柱状图都是 10 个区块的总和,因此每个柱状图可以使用的最大 gas 为 3.6 亿个单位,而目标 gas 为 1.8 亿个单位。 我们绘制了 1.8 亿个单位的目标线。

image

在我们的数据中,state 代表了以太坊区块中使用的大部分 gas,占 22000000 到 22005000 区块之间消耗的所有 gas 的 30.2%。 gas 使用量第二多的资源是 compute (26.8%),其次是 access (21.9%)。History、bandwidth 和 bloom topics 的贡献较小,分别占所有 gas 使用量的 9.9%、6.9% 和 1.6%。

这意味着 state、compute 和 access 是瓶颈资源,因为它们覆盖了可用区块空间的重要部分。因此,我们预计分离这些资源的计量模型将显示出最大的收益。

在考虑资源约束以及多维计量方案对网络可扩展性的影响时,调查拥塞或“高负载”时段也很重要。使用与之前相同的数据,我们过滤了利用率高的区块(超过 95%),并绘制了按资源划分的区块利用率分布和按顶级资源划分的区块计数。这些区块占连续区块数据集的 9.7%。

image\<br>image4920×1919 384 KB image\<br>image1920×1920 156 KB

有趣的是,state 在这些区块中占主导地位(compute 和 access 有一些贡献),与平均区块相比,这是一个显着的变化。这表明,在高需求时期,更常用的操作类型与平均区块中使用的操作类型不同。因此,对于 EVM 的当前使用情况,state 可能是设计多维方案时要考虑的最重要资源。

区块构建模拟和计量方案

到现在为止,我们知道 state、compute 和 access 是最有可能实现吞吐量收益的资源。但是,我们仍然没有回答实际收益可能是多少。为了实现这一目标,我们构建了一个基于 蒙特卡洛方法 的模拟,该模拟使用重复的随机抽样来估计在不同的计量方案和交易需求水平下观察到的吞吐量。

我们通过场景对交易需求进行建模。它们控制着交易的数量,以及在每个 12 秒的Slot中,哪些交易到达 mempool。对于每个Slot,我们使用需求场景生成的交易来刷新 mempool。然后,我们为该Slot构建一个区块。首先,我们按交易费用对 mempool 交易进行排序(费用最高的排在第一位)。其次,我们迭代地将交易添加到区块中,直到根据正在测试的计量方案将区块填满为止。当然,一旦我们将交易添加到区块中,我们就会将其从 mempool 中删除,以便无法再次选择它。此 mempool 刷新和区块构建循环会重复预定义的区块数。

我们想要讨论的第一个场景旨在模仿对历史交易的无限需求。换句话说,它试图估计在不同的计量方案下我们可以实现的最大收益,假设总是有更多的交易可用来将区块填充到 3600 万 gas 单位的限制。此场景从 3 月 8 日处理的同一历史区块中抽取交易样本,直到区块已满。

下表显示了各种计量方案的交易吞吐量(即,区块中包含的交易数量)和使用的总 gas(即,区块中包含的 gas 单位总数)的平均收益。平均值是在此场景下构建的单个区块的 100,000 次蒙特卡洛迭代中计算得出的。

计量方案 吞吐量的平均增益 使用的 gas 的平均增益
Compute vs. Others 60.1% 44.0%
State vs. Others 58.9% 52.5%
Access vs. Others 49.6% 34.1%
Bandwidth vs. Others 26.2% 11.7%
State vs. Compute vs. Others 145.2% 133.8%
State vs. Compute vs. Access vs. Others 241.3% 219.1%

在二维方案中,与当前的一维方案相比,Compute vs. Others 和 State vs. Others 在吞吐量方面显示出最大的增益。Access vs. Others 也显示出显着的增益,尽管略低于其他两个方案。此外,三维和四维方案都比当前方案产生更大的收益,这突出了 compute、state 和 access 在历史交易中具有相关的 gas 使用量,因此,单独计量这些资源可能会对这些交易的无限需求情况下的吞吐量产生重大影响。

在区块中包含的 gas 单位总数中也观察到了这种趋势。但是,gas 使用的增益略低于在交易吞吐量中观察到的增益。

现在我们已经估计了在各种计量方案中可以观察到的最大增益,很自然地会问,在每个计量方案中,需要多少额外的需求才能填充以太坊区块并实现先前观察到的吞吐量。为此,我们设计了一组场景,在这些场景中,我们以不同的需求水平从 3 月 8 日抽取历史交易样本。

需求由 3 月 8 日观察到的经验分布建模,并使用一个乘数来增加平均需求。例如,2 倍的乘数将导致平均需求是 3 月 8 日观察到的需求的两倍。下图显示了测试的四个需求乘数的交易到达计数分布。

image\ image4920×1920 301 KB

下图显示了按计量方案和需求水平划分的中值区块利用率和四分位距 (IQR)。回想一下,区块利用率表示区块的完整程度,定义为区块的计量 gas 除以 3600 万 gas 单位限制。

image\ image4928×1920 431 KB

与之前的结果一致,基本需求(乘数 = 1x)不足以在所有计量方案中实现高利用率。随着需求水平的提高,中值利用率也会上升。在二维方案中,需要 3 倍的需求水平才能在中间情况下实现完整区块。三维方案需要 5 倍的需求。关于四维模型,所有测试的需求水平都会导致中间情况下部分填充的区块。

走向多维。怎么做?

根据我们的实证分析,转向多维计量方案可以显着提高 L1 的可扩展性。但是,有什么缺点吗?关键的权衡是复杂性。

多维计量在两个层面上增加了复杂性。第一个层面是实现复杂性。我们需要能够跟踪每个 EVM 操作消耗的每个资源的 gas 量,这需要在执行客户端上进行硬分叉,以添加新的资源维度。此外,我们需要对每个操作和每个资源之间的映射进行编码。此映射对于确保网络继续正常运行至关重要;因此,至关重要的是对每个操作的资源使用情况进行深入的基准测试。这可能类似于 gas-cost-estimator 的分析,但适用于所有相关的 EVM 资源。最后,我们正在引入一个仅用于跟踪区块利用率的新变量。与此同时,我们继续使用总 gas 来计算交易费用,这可能会造成混淆。

第二个复杂性级别与区块构建有关。即使用户的体验保持不变 - 交易成本相同,并且用户继续提交单个 gas 限制和最大费用 - 区块构建者现在面临着更复杂的优化问题。他们不仅需要考虑 MEV 和交易费用,还需要考虑如何有效地将区块打包到各种资源中。

  • 原文链接: ethresear.ch/t/going-mul...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太坊中文
以太坊中文
以太坊中文, 用中文传播以太坊的最新进展