EIP-7691: 增加 Blob 吞吐量
增加 blob 的数量,分别达到每个区块 6 个和 9 个 blob 的新目标和最大值
Authors | Parithosh Jayanthi (@parithosh), Toni Wahrstätter (@nerolation), Sam Calder-Mason (@samcm), Andrew Davis (@savid), Ansgar Dietrichs (@adietrichs) |
---|---|
Created | 2024-04-17 |
摘要
增加一个区块中的 blob 数量,通过依赖 L1 数据容量的 L2 解决方案,为以太坊提供更大的扩展性。
动机
以太坊及其以 Rollup 为中心的路线图,通过依赖 L2 进行扩展。自从 Dencun 分叉以来,blob gas 目标和最大值分别设置为 3/6。blob gas 限制是基于在以太坊主网络上以及一系列测试网上执行的一系列大区块测试得出的。这些值的选择非常谨慎,因为非常难以预测以太坊主网络的准确 p2p 行为。
由于我们现在已经有了上线的 Dencun 升级,我们能够使用监控工具来检查网络健康状况。初始监控表明,在当前 gas 目标下,我们的网络是稳定的,并且 re-org 率呈下降趋势。此外,对 gossipsub 中消息的分析表明,包含 IDONTWANT
消息可以为我们带来显著的带宽节省。这使我们能够考虑开始一系列大区块和 blob 测试,以确定我们目前拥有的理论上限。该 EIP 规定了基于一系列测试的 proposed new blob gas 目标和限制。
该 EIP 旨在增加短期吞吐量,以提供一定的扩展,直到部署未来的解决方案。为了缓解对 solo-staker 的合理担忧,可以考虑诸如包含一个标志来指示本地构建的区块的每个区块的最大 blob 数量之类的方法。
规范
参数
常量 | 值 |
---|---|
MAX_BLOBS_PER_BLOCK_ELECTRA |
9 |
TARGET_BLOBS_PER_BLOCK_ELECTRA |
6 |
MAX_BLOB_GAS_PER_BLOCK |
1179648 |
TARGET_BLOB_GAS_PER_BLOCK |
786432 |
BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE |
5007716 |
MAX_BLOBS_PER_BLOCK_ELECTRA
和 TARGET_BLOBS_PER_BLOCK_ELECTRA
由共识层客户端使用,并且从 PECTRA_FORK_EPOCH
开始替换各自的旧最大值和目标值。
MAX_BLOB_GAS_PER_BLOCK
, TARGET_BLOB_GAS_PER_BLOCK
和 BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE
由执行层客户端使用,并且从该 EIP 激活的 epoch 开始,替换旧的最大值、目标值和更新比例值。
EIP-4844 中对 MAX_BLOB_GAS_PER_BLOCK
和 TARGET_BLOB_GAS_PER_BLOCK
的任何引用都应在处理激活区块时更新为该 EIP 中定义的新值。
值 BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE
在处理激活区块时替换其先前的等效值。
这些更改意味着 EIP-4844 中定义的 get_base_fee_per_blob_gas
和 calc_excess_blob_gas
函数对分叉的第一个区块(以及所有后续区块)使用新值。
原理
简洁性
该 EIP 旨在最大限度地减少客户端团队的测试和实施工作量,以便将更多资源分配给 peerDAS 和其他扩展研究。
虽然此 EIP 可能无法实现新的最佳 blob 限制,但它为短期增加提供了一种折衷方案。
更新比例
EIP-4844 中的原始目标值和最大值之比为 1:2。因此,对完整和空 blob 部分的响应是对称的:
- 完整的 blob:basefee 增加约 12.5%
- 没有 blob:basefee 减少约 11.1%
此 EIP 中的新目标值和最大值之比为 2:3,这打破了对称性。因此,basefee 对空 blob 部分(低于目标 6 个 blob)的响应比对完整 blob 部分(高于目标 3 个 blob)的响应更为敏感。这是设计使然,因为需要连续两个具有完整 blob 的区块才能弥补单个没有 blob 的区块。然而,这带来了找到一个好的折衷 base fee 敏感度水平的挑战。
此 EIP 中的 BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE
值被选择为保持对完整 blob 和没有 blob 的响应度恒定的中间点:
- 完整的 blob:basefee 增加约 8.2%
- 没有 blob:basefee 减少约 14.5%
向后兼容性
共识客户端将继续对 deneb 分叉使用 MAX_BLOBS_PER_BLOCK
和 TARGET_BLOBS_PER_BLOCK
,并且一旦 ELECTRA
分叉处于活动状态,它们将分别使用 MAX_BLOBS_PER_BLOCK_ELECTRA
和 TARGET_BLOBS_PER_BLOCK_ELECTRA
。
执行客户端将继续对 cancun 分叉使用 MAX_BLOB_GAS_PER_BLOCK
、TARGET_BLOB_GAS_PER_BLOCK
和 BLOB_BASE_FEE_UPDATE_FRACTION
,并且一旦 prague 分叉处于活动状态,它们将分别使用 MAX_BLOB_GAS_PER_BLOCK
、TARGET_BLOB_GAS_PER_BLOCK
和 BLOB_BASE_FEE_UPDATE_FRACTION_PRAGUE
。
安全考虑
网络影响
通过在以太坊主网以及测试网上使用大区块/blob 测试,我们可以高度确定 blob 限制增加不会对网络产生负面影响。这些测试以及相关的分析主要可以由非客户端团队实体执行,只需要最少的输入。由于更改非常有限,因此 EIP 应该能够降低 blob 限制增加的风险。
分叉时期前后的稳定性
从实施的角度来看,分叉过渡期间的 blob 限制增加相对简单。我们需要在分叉时期前后部署更多的监控,但是在一段稳定期之后,我们可以假设 blob 限制增加是成功的,从而减少任何意外的协调工作。
版权
版权及相关权利通过 CC0 放弃。
Citation
Please cite this document as:
Parithosh Jayanthi (@parithosh), Toni Wahrstätter (@nerolation), Sam Calder-Mason (@samcm), Andrew Davis (@savid), Ansgar Dietrichs (@adietrichs), "EIP-7691: 增加 Blob 吞吐量," Ethereum Improvement Proposals, no. 7691, April 2024. [Online serial]. Available: https://eips.ethereum.org/EIPS/eip-7691.