本文探讨了以太坊EIP-4844升级引入的blob新功能以及后续提案EIP-7762和EIP-7691,分析了blob在数据可用性(DA)中的重要性,提出了调整最低blob基础费用的必要性,以及增加每个区块最大blob数量的可行性。文章结构清晰,逻辑性强,涵盖了多个方面的讨论与分析。
现在Ethereum网络通过EIP-4844升级引入blob已经过去了8个月。正如预期的那样,rollup受益于显著降低的批量发布费用,使其能够通过更具成本效益的blob选项向Ethereum提交更多交易。
然而,blob的使用率仍然很低如预期--仍然没有足够的rollup或去中心化应用程序(DApps)利用blob。因此,blob的gas基础费用仍然维持在最低价格仅为1 wei。尽管经历了四个高需求期,整体成本仍然异常低。这使得Ethereum成为rollup的一个有吸引力的数据可用性(DA)层,但这也引起了社区的担忧,关于rollup是否足够贡献于主网。此外,自从blob被采纳以来,Ethereum经历了发行通胀,激发了关于其影响的辩论。
一些人认为,blob使Ethereum能够扩展,并且更多的rollup服务将最终迁移到该网络上。其他人则持相反意见,认为目前rollup对Ethereum几乎没有贡献。
除了价格影响,围绕blob的更广泛影响也引发了讨论。一个主要话题是是否应该调整最小blob基础费用,正如EIP-7762中提议的那样。该提案的结果仍不确定。另一个讨论在EIP-7691中,主要围绕是否应该增加blob的数量,支持者主张这样做不会妨碍共识安全。这两个提案正在考虑即将到来的Pectra硬分叉。
本文深入探讨每个提案的细节,探索背景、提出的具体内容及潜在的优缺点。
对于那些不熟悉blob的人,我们将首先介绍基础知识。如果你已经了解了EIP-4844和blob,并且对提案特别感兴趣,可以直接跳到关于EIP-7762的讨论。
让我们首先深入了解一下数据可用性的确切概念,以及EIP-4844如何增强Ethereum作为DA层的功能。
数据可用性是确保特定数据在给定时间点可以访问的属性,特别是为了验证区块链网络中的新区块。它关注于验证新块所需的实时访问,以确保达成共识。它确保当前块验证所需的数据对所有参与节点都可用,使它们在将块添加到链之前能够验证交易。
DA往往与数据可检索性混淆,后者指的是访问历史数据的能力。可检索性涉及检索过去的数据,例如来自旧块的信息,通常用于同步新节点或查看交易历史。然而,可检索性并不影响创建块所需的实时验证。
例如,Ethereum区块链通过在块提议时使块验证所需的数据对节点可用来确保DA。即使在某些情况下,Ethereum节点并未向同步节点提供所有历史数据,共识机制仍确保了验证时所需的数据是可用的。如果当时数据不可用,则该块将不会被添加到区块链中。
还需要注意的是,DA不是一个二元属性——它并不简单地意味着“可用”或“不可用”。相反,它存在于一个连续的范围内。像Ethereum这样的安全且去中心化的区块链提供强大的DA,但可用性的程度会根据共识机制和去中心化的程度等因素而有所不同。
数据可用性(DA)对于rollup至关重要,因为它确保交易数据可以被访问以验证状态更新并重建rollup的当前状态。对于乐观rollup,DA对于构建欺诈证明是必不可少的。如果发布了错误的状态转变,用户可以依靠存储在DA层中的交易数据来验证转变并证明欺诈行为。在没有DA的情况下,用户将不得不完全信任rollup操作员,这可能会让他们在操作员恶意或隐瞒数据时面临风险。
对于ZK rollup,DA确保存在加密证明以验证状态转变,而不需要发布所有交易数据。然而,实际上,许多ZK rollup仍然会将交易数据发布到DA层,以增强透明度并便于用户验证。
Ethereum强大的DA保证是rollup使用它作为DA层的原因。在EIP-4844之前,rollup利用Ethereum的calldata字段作为DA。现在,他们可以同时利用blob和calldata,改善rollup实现的可扩展性和效率。
EIP-4844引入了一种新的数据结构,称为blob,与calldata不同,它在共识层暂时存储大约18天后再删除。Ethereum验证者为临时blob存储分配大约50GB的空间。blob与calldata不同,因为它们无法被Ethereum虚拟机(EVM)访问;只有它们的blob承诺是可访问的,从而降低了数据占用空间,同时仍然确保DA。blob通过仅提供rollup所需的基本功能,提供高效的DA,促进了交易费用的显著降低。
每个blob大约为128 KiB,每个块最多可以包含6个blob,总体约为0.784 MiB每块。blob是通过一种新的交易类型,称为blob交易添加的,与传统交易一样,至少使用21,000 gas,并且可以包括1到6个blob。
来源 : https://notes.ethereum.org/@vbuterin/proto_danksharding_faq
blob是使用一种新的单位称为blob gas定价的,每个blob消耗217 = 131072 blob gas单位。
类似于Ethereum的EIP-1559 gas费用机制,blob gas价格根据最近块中的blob拥堵动态调整。blob gas基础费用 Bblobgas,k+1 在下一个块 k + 1 的计算如下:
Bblobgas,k+1 = Bblobgas,k x exp(u-t/8t)
其中 Bblobgas,k+1 代表在块 k 中的blob gas当前基础费用,
u 表示在 k 中使用的总blob gas,
而t是目标blob gas使用量,设定为每块3 x 217 blob gas单位。
当一个块被填充到最大6个blob时,下一块的blob gas基础费用可能增长约12.5%。目前,最小的blob基础费用设定为1 wei,从而为每个blob设定最低费用为131072 wei。
每个blob交易还包括标准的执行费用21,000 gas乘以gas价格。1 wei的最低基础费用正在积极讨论中,EIP-7762提议通过提高费用来更好地平衡成本和数据可用性需求。
EIP-7762提议提高blob gas基础费用(在中心附近预定酒店)以加快价格发现。它试图改变的只有一个参数:MIN_BLOB_BASE_FEE
。它提议将其从1 wei改为225 wei。但是这个提议的理由是什么?
问题并不在于rollup对主网交易的贡献微乎其微或支付的费用过少。相反,Ethereum的目标—尤其是EIP-4844—是支持可扩展、低成本的rollup交易。
自EIP-4844启动以来,blob gas基础费用始终维持在1 wei,只有在blob需求激增时短暂飙升。如果基础费用可以无限期保持在1 wei,那么这就不算问题。重要的是,在突然的需求暴涨期间,低起点的blob基础费用在价格发现中带来了挑战。
在这些激增期间,blob gas基础费用从1 wei的逐步调整可能跟不上实际需求的变化。让我们设想一个假设场景:想象参加ETH Bangkok 2024,你决定住在离会议中心很远的几乎是免费的酒店。日常需求时这很理想。然而,当你需要参加会议中心的活动时,正常情况下需要六个小时才能到达。再加上交通和缺乏直接路段,这段旅程可能会延续到14个小时。
同样,当最小blob gas基础费用定为1 wei时,rollup在需求低迷时可以享受低廉的blob费用。但在需求激增期间,blob gas基础费用的上涨调整缓慢,导致在达到公平市场利率之前,价格发现周期延迟。
此外,理论上达到适当价格的最小时间在实践中可能不成立。如果验证者或区块构建者将blob交易排除在外,这个发现周期可能会进一步延长。例如(来自dataalways的帖子),在6月20日LayerZero空投期间,blob基础费用从1 wei猛增到7471 Gwei。理论上,这应该大约需要252块或51分钟的时间(计算如下):
log1.125 (7.471 x 1012) = 251.66
然而,实际所需时间约为6个小时——比预期长近5至6倍。
延长的价格发现周期意味着基础费用未能准确反映blob需求。这个差异可能导致rollup和blob用户通过优先费用激烈竞价,最终推动出一个不可预测和高度竞争的费用市场。总之,设置过低的基础费用会延迟价格发现,导致费用与实时需求的不对齐。
EIP-7762提出的措施就像是住在离展会中心更近的酒店。虽然你可能会在附近的杂货店买得更贵,但更近的距离让你在需要时更快地到达会议中心。
如果最小blob基础费用上升,rollup确实会因此而为提交blob交易支付更高的费用。然而,将最小blob基础费用从1 wei提高到225 wei并不意味着rollup在blob交易中的费用会增加225倍。这是因为blob交易不仅支付blob gas的费用,还支付blob交易的执行费用。与非blob交易一样,blob交易至少需要21,000 gas。如果它们发布了calldata,执行费用还会增加。
假设基本gas费用为5 Gwei,blob交易的执行费用(至少)约为 21,000 x 109 = 2.1 x 1013
wei。相比之下,单个blob的最低费用为 131072 = 1.3 x 105 wei
,使得blob基础费用微不足道——约为 1.6 x 108 = 160000
倍便宜于执行费用。直观来看,适度提高最小blob基础费用不会极大影响blob交易的总成本。
例如,根据EIP-7762建议的225 wei最低blob基础费用,blob费用成为 225 x 1.3 x 105 = 4.3 x 1012
wei。因此,总费用(执行费用 + blob费用)成为 2.1 x 1013 + 4.3 x 1012 = 2.5 x 1013
。
这代表了相较于当前1 wei最低blob基础费用大约20%的增长。在填充最多6个blob的情况下,增长幅度可能达到约120%。
EIP-7762带来的实际费用增长还取决于每个rollup的交易策略。rollup在blob提交策略上各有不同:它们每笔交易使用blob的数量不同,发布的calldata量也不同,因此承担的执行费用也不同。发布更复杂证据的rollup将支付更高的执行费用,因此建议的blob基础费用上升对其整体交易成本的影响可能不那么明显。
来自历史模拟的数据显示,像Base、Optimism和Blast这样的基于OP Stack的rollups,blob基础费用为225 wei时,费用可能增加多达16%。而其他rollup则显示的增加不足2%,这表明对总blob交易成本的影响很小。
来源 : dataalways.eth
除了调整 MIN_BLOB_BASE_FEE
,对多余blob gas的计算方式进行了小幅调整。此前,对于excess_blob_gas的计算可能会导致blob基础费用不必要的激增。为避免这种情况,EIP引入了一项修改,在分叉高度重置多余的blob gas。该调整确保分叉事件时的平滑过渡。
自EIP-7762提议以来,激发了相当多的讨论。虽然研究人员在这一提议的动机及解决价格发现问题的需求上大体达成一致,但仍有一些担忧仍然存在。一个主要问题是频繁的协议调整可能对Ethereum的稳定性产生潜在影响。常规的微调可能会带来无法预见的复杂性和风险。
另一个担忧集中在确定适当的最小blob基础费用上。任意选择的225 wei缺乏强有力的实证基础,导致呼吁进行进一步调查以确保该值支持协议的长期目标。确立这一基线费用的可靠理由对于避免潜在的不稳定或意想不到的市场扭曲至关重要。
EIP-7691提出了一项简单的更改:增加每个块的blob最大数量。目前,每个块的上限为6个blob,目标为3。EIP-7691建议,通过提高这一限制(现在还没有具体数字),rollup可以实现更大的可扩展性,而不妨碍Ethereum的共识稳定性。
增加每个块的blob数量可能会增加在Ethereum点对点(p2p)网络上传输的数据总大小,从而可能导致达到共识的延迟。每个blob包含128 KiB的数据,因此6个blob的总计为784 KiB。考虑到Ethereum的最大区块大小约为2 MB,包括blob在内的每个slot的总数据传输量可能达到约2.78 MB。
随着blob数量的增加,数据大小也会增加,这会延长块和blob在节点间传播所需的时间。这种延迟可能会对Ethereum的共识过程构成挑战,尤其是因为验证者必须在每个slot结束前的4秒内提交证明。因此,确保共识稳定性需要谨慎管理这些传播时间。
有些人可能会辩称,由于每个blob通过单独的通道进行传播,blob数量的增加不应显著影响共识。然而,节点仍需等待所有blob和块数据到达,这意味着较高的blob数量可能会导致更长的等待时间。
关于EIP-4844后的实证分析(见帖子1,帖子2)揭示了分叉率在实施后增加,并且随着每个块的blob数量增加而上升。下面的图表展示了从2024年4月6日至6月6日的blob数量引起的重组率。包含最多6个blob的块比包含少于4个blob的块表现出了显著更高的重组率,激起了对EIP-4844对Ethereum共识安全影响的担忧。
重组可能由于多种原因发生,而P2P网络上的数据负载增加只是一个因素。次优的客户端实现也可能导致重组率提高。
我最初的分析表明,数据可用性(DA)时间,即节点等待最后一个blob到达的时间非常短,平均不到20毫秒,0个blob的块与6个blob的块之间的差异也不到5毫秒。鉴于节点在提交证明之前需要等待约4000毫秒,这种延迟似乎可以忽略不计,并不可能严重影响共识。下面的图表显示了不同blob数量所估计的DA时间。
此外,Toni的分析表明,自EIP-4844实施以来,整体重组率已下降。虽然早期数据表明重组率与blob数量之间存在强烈相关性,直到6月为止,但是近三个月的最新数据揭示不同blob数量的块之间的重组率差异微乎其微。这些研究结果归因于Ethereum客户端性能持续改善,意味着提高blob限额不会对共识稳定性构成重大风险。
来源: ethresear.ch/t/steelmanning-a-blob-throughput-increase-for-pectra
最近,Vitalik建议:“我认为我们应该重新考虑为PectraA增加EIP-7623和少量blob数量的提升(例如,目标从3->4,最大从6->8)。”要理解EIP-7623如何实现这一增长,我们首先要考察其核心提案。(参见这里以获取EIP-7623的详细解释)
EIP-7623提议调整针对以数据可用性(DA)为主要目的的交易的calldata gas费用。基本上,执行gas相对较小的colldata的交易,将面临高达3倍的gas费用——因此,外部传递具有大量calldata但执行最小的交易将经历更高的费用,鼓励使用blob而非calldata来处理DA相关功能。
这一调整的初衷是减少对日常非DA用户交易的影响,同时优化DA框架。通过提高DA特定交易的calldata费用,EIP-7623鼓励大量数据操作从calldata转向blob,从而优化网络的存储和DA效率。此外,该提案旨在将最坏情况下的区块大小从2.78 MB降低到约1.2 MB,解决Ethereum平均区块大小约为125 KB的当前缺口,未来可能达到更大限制。
如果EIP-7623有效减少了最大块大小,它为更高的blob数量创造了空间,支持EIP-7691的目标。即使blob数量增加,总数据大小在最坏情况下仍然是可管理的,因为对calldata的依赖减少了。EIP-7623与EIP-7691之间的协调,使得在不超出可持续限制的情况下注入更多的blob。
本文介绍了专注于增强Ethereum的blob功能的近期EIP。EIP-7762提议提高最小blob基础费用,以促进在需求激增期间的快速价格发现,同时最大程度降低对整体blob交易成本的影响。EIP-7691则寻求增加每个块的blob数量,从而进一步扩展Ethereum的数据可用性(DA)层。随着blob数量的增加,blob基础费用将在需求高峰期间经历更可控的上升,从而实现更平滑的价格调整。
关于这些提议变更的详细讨论正在进行中。例如,辩论包括将目标blob数量设定为4,将最大blob数量定为6,以及确定基础费用更新规则是否应对称或非对称。其他考虑因素涉及标准化多余blob gas以及调整blob基础费用更新的比例。
blob是Ethereum生态系统的一个新补充,与它们相关的每一个变更都需谨慎对待,因为它们对应用层和共识安全都有影响。尽管如此,Ethereum正在迅速发展,研究社区也在努力推动开发,以确保网络持续增长和演进。
- 原文链接: research.2077.xyz/eip-77...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!