您现在的位置是:主页 > 行业动态 >

tokenpocket钱包|以太坊最新研究: 区块大小、Gas上限与可扩展性的研究

2024-02-08 21:03行业动态 人已围观

简介 以太坊社区研究员最近在关于Gas上限和区块大小的讨论中提到了增加Gas上限至4000万的想法,引发了很多争议。本文从经济学的角度分析了以太坊区块大小受到多种要素影响的情…...

以太坊社区研究员最近在关于Gas上限和区块大小的讨论中提到了增加Gas上限至4000万的想法,引发了很多争议。本文从经济学的角度分析了以太坊区块大小受到多种要素影响的情况,包括Gas上限、calldata定价、新增blob交易等因素。同时,对于Gas上限增加的影响也进行了多方面的分析和权衡。总体来说,提高Gas上限需要深思熟虑,以确保不会牺牲去中心化。文章提供了大量的数据分析和K线走势图,并指出在EIP-4844(Proto-Danksharding)上线后,区块大小可能会呈现出更大的变动。

译者导读

最近以太坊社区研究员针对区块大小和 Gas 上限的讨论和分析多有争议,原因大致是在最近一次 EF reddit AMA 中,Vitalik Buterin 提及将 Gas 上限增加 33% 至 4000 万的想法。

那么我们准备好增加区块大小了吗?从经济学的角度分析,实际上以太坊区块大小受到多种要素影响,而每一次增加的波动都会导致区块大小多少?

这里首先解释了区块大小的定义(我们通常所说的gas limit和基于字节去衡量的区块大小是差异却紧密相关的);然后在一定的假设下,给出了最坏的情况下区区块大小的计算方式(指的是一个区块能达到什么程度);并基于此计算方式,给出了不同的变量对区块大小影响的数据分析:gas上限、calldata定价、新增blob交易对区块大小的影响。

区块大小和网络安全以及中心化​​程度相关,增加区块大小的影响不是单一的,在对变量和权衡的多方面去分析下,才能做出更好的决策。

文章|托尼·瓦尔斯塔特

翻译 | 弗朗西

最近关于提高以太坊区块Gas上限的讨论非常多。有些人基于摩尔调整增加区块大小,有些人基于个人直觉,有些人则只是在随意散布消息,还有些人担心其他链如Solana会在用户广泛采用方面超越以太坊。

接下来,我想展示一些K线走势图和数据,这可能有助于我们做出一个在不影响以太坊去中心化的前提下最大化Gas最大化的决策。

从最初讲起

与比特币不同,以太坊限制没有固定的区块大小,而是依赖于一种灵活的区块大小,这种机制由某种单位机制“gas”来缓慢。在以太坊中,Gas是一个缓慢的执行操作(如交易或智能合约)需要计算量的单位。以太坊中的每项操作都需要一定数量的 Gas 来完成,每个区块都有一个 Gas 上限,这决定了一个区块可以包含多少操作。

最开始,2015年时以太坊每个区块有 5000 Gas 的上限。这个上限很快被提高到约 300 万,然后在 2016 年后期提高到约 470 万。随着 Tangerine Whistle 硬分叉 ( EIP-150) 在 2016 年的实施,作为对 DoS 攻击的响应,通过重新定价提高各种 IO 密集型操作码,Gas 上限被到 550 万。在这些攻击之后,矿工持续提高 Gas 上限,在 2017 年7月到约670万,2017年12月到约800万,2019年9月到约1000万,2020年8月到约1250万,最终在2021年4月3日到约1500万。

随时间变化的燃气使用情况

此后,随着伪龙、拜占庭、君士坦丁堡、伊斯坦布尔和柏林硬分叉的激活,某些操作码的定价进一步得到了细化。这些细化的例子包括EIP-145、EIP-160、EIP-1052、 EIP-1108、EIP-1884、EIP-2028、EIP-2200、EIP-2565 和 EIP-2929。

以太坊费用市场最大幅度的变化发生在2021年8月的伦敦硬分叉(EIP-1559)的引入。EIP-1559引入了基本费用,该费用会根据对区块空间的需求随时间/区块而变化高度动态调整。同时引入了“目标大小”,将其设定为每个区块 1500 万 Gas。这个目标用于指导基本费用的动态调整。如果一个区块中使用的总 Gas 数量超过这个目标,下一个区块的基本费用就会增加。相反,如果使用的总 Gas 数量低于目标,则基本费用减少。该机制旨在创建一个更可预测的当前费用市场,并通过稳定交易增加用户体验此外,EIP-1559还引入了基本费用的理论机制,永久地从流通量中移除了那部分以太。这增强了协议的可持续性,同时创造了所谓的超合理货币迷因(超声音)钱模因)。

在EIP-1559下,还设定了一个最大(或“上限”)的Gas上限,设定目标的两倍,即3000万Gas。这意味着一个硬区块预算总可以使用量高达3000万Gas的交易。

以太坊最新研究:关于区块大小、Gas上限与可扩展性伦敦分叉后的燃气使用情况

从那时起,以太坊的区块Gas上限保持不变,截至2024年,仍然是每个区块3000万Gas。

我们准备好增加区块大小了吗?

最近,一些人对以太坊的 Gas 上限表示担忧,并要求将其增加。在 Reddit 上的最新以太坊基金会 AMA 中,Vitalik 表示考虑了将 Gas 上限增加 33% 至 4000 万的想法。他的推理基于摩尔定律,该算法指出微芯片上的晶体管数量大约每两年一翻,从而使得计算能力相应增加。这一原则表明,网络性能,包括处理和执行交易的能力,也可以随时间增加。

来自以太坊基金会的研究人员 Dankrad 和 Ansgar 也支持在评估 Dencun 升级后的情况后增加 Gas 上限的想法。另外,坊以太坊基金会的 Pari 发表了一篇帖子,探索潜在的 Gas 上限增加途径。 Geth的Peter和Marius这样的其他人则对增加Gas上限表示担忧,特别是在没有适当的工具/监控的情况下。这些担忧主要与这些问题相关:加速状态增长、同步时间和重组块率。

块大小是什么?

区块的大小可以通过两种方式简化:

  • 燃气使用量
  • 块大小(以字节为单位)

虽然这种简化方式相关联,但必须独立考虑。

例如,一个包含非零呼叫数据字节的区块在字节大小上可能很大,而实际的 Gas 使用量(每非零字节需要 16 Gas)可能仍然相对较小。

先不考虑压缩后的情况,在忽略Geth每笔交易128 KB限制的前提下,当前可以达到的最大区块大小约为6.88 MB。这样一个区块里将最大化分配128 KB交易的数量。实际计算出来的结果是,包含约 130,900 字节的零字节 calldata(每字节 4 Gas)的 55 笔交易,以及一个填满剩余空间的交易。 然而,经过 snappy 压缩后,这样的区块最终大小约为0.32 MB,这个可以忽略不计。

而另一种情况,考虑最大可能性的区块大小,包含 15 笔进行非零字节 calldata 的交易,压缩后大小约为 1.77 MB。

因此,截至今日,1.77 MB 代表执行层区块的真实区块大小上限。

译者注:

在上面的几个段落中,作者在固定gas上限30M的情况下,想要让区块大小最大,尝试计算最多可以把区块塞到多大。

如果固定gas上限,要让区块大小变大,那么只能塞calldata(因为计算/STORE之类的字节码其实是不会占用区块存储空间的)。

所以,要让区块变大,无非就是往交易塞calldata。然后,有“塞0 calldata”和“塞非0 calldata”两种方法,需要计算才能知道哪种能让区块大小更大。结果是“塞非0 calldata”的块大小更大。

基于 Geth 客户端限制每笔交易最多 128 KB 这个前提,下面开始计算两个例子。

case 1:56个大小为 130,900 B ( (30 M),所以最多只能塞 55 个上述交易+ 1 个小于上述交易的交易。对应的区块大小约为 55*128 = 7040 kB = 6.875 MB。但是,由于 calldata 全为 0,所以压缩后的区块大小约为0.32MB。

case 2:15个大小为 130,900 B ( 30 M。区块大小约为 14 *128 = 1792 kB = 1.75 MB ~ 15 * 128 = 1.875 M。然而,由于 calldata 是非零,不好压缩,所以压缩后区块大小约为 1.77 MB。)

就这个最大的区块大小而言,我们可以识别出几个影响它的因素:

  • Gas上限:Gas上限会影响最大区块大小,这无需庸置疑的。上限上限,区块中可以塞进的数据上限。
  • 操作和数据的定价:操作的gas越便宜,区块内就能执行越多次操作。虽然像CALLDATALOAD或CALLDATACOPY这样的操作,它们的开销都是3 Gas,相对便宜;但其他操作码如CREATE则更加昂贵。 区块中使用的操作码非常昂贵,该区块中用于调用数据(或其他操作)的空间开销少。
  • 客户端限制:虽然客户端限制的影响不那么明显,但就像像 Geth 客户端这样对每笔交易的 128 kb 限制也可以影响最终区块大小。由于每笔交易的固定费用是 21k Gas,客户端每笔交易的大小限制越低,就需要更频繁地支付固定费用,从而“浪费”本可以用于调用数据的gas。所以最终,这个限制可能导致最大区块大小减少约0.07 MB。需要注意的是,客户端限制只影响交易的广播,并不影响已经被确认的区块。

首先,让我们看看每个区块的Gas上限:

以太坊最新研究:关于区块大小、Gas上限与可扩展性区块 Gas 上限对区块大小的最大影响

像以太坊这样的区块链,提高区块Gas上限是最直接和明显的扩容方式。更高的上限意味着更多的数据空间。然而,这也意味着需要每个运行全节点的人传播和下载更大的区块。如上图所示,“最坏的情况(即前面通过计算下面的最大区块大小)”下面的区块大小与区块 Gas 上限的增加大致呈线性关系。通过创建塞满需要多非零字节呼叫数据交易的区块,就可以达到这样的最大区块大小。

接下来,让我们看看另一个影响因素——以太坊的定价机制。在当前的例子中,具体就是目前被设定为 16 Gas 的非零字节calldata的开销:

以太坊最新研究:关于区块大小、Gas上限与可扩展性每非零字节 Calldata 起始对最大区块大小的影响

如上图所示,增加非零呼叫数据的开销会让区块大小减小。话说,将开销降低到相当于每字节 8 Gas,使最坏情况下的区块大小翻倍。这很分析,因为降低价格允许将双倍数量的数据放入区块中。

那么EIP-4844 (Proto-Danksharding)上线后呢?

我不会在这里详细介绍 4844,因为 eip4844.com 上有很好的文档,但简单来说,EIP-4844 引入了类似“sidecar (挎斗)”结构的数据类型,称为 blob,每个 blob 可塞进约 125 kb 的数据。Blob 数据费用机制与 EIP-1559 类似,也存在一个“target”,用于指定 blob 数量。在 Dencun 硬分叉中,target 设置每个 block 3 个 blob,最大限制设定每个区块有 6 个 blob。意思是,blob 拥有自己的费用市场,创建了所谓的多维费用市场。这意味着 blob 不一定与标准交易竞争,而是与 EIP-1559 机制下的费用解耦。

看看,一切都很顺利。让我们这次升级如何影响以太坊的平均区块大小。

以太坊最新研究:关于区块大小、Gas上限与可扩展性添加 blob 对压缩后的信标链平均块大小的影响

今天,采用 snappy 压缩后的信标链区块的平均区块大小约为 125 KB。有了 4844,我们每个区块再增加 375 KB,从而使当前平均区块大小增加 4 倍。如果达到最大数量的 blob,我们实际上将当前区块大小增加了七倍。

最坏情况下的区块大小从约 1.77 MB 增加到约 2.5 MB。这个提示没有将区块的 CL(论证层)部分考虑在内。但无论怎样,在受到 DoS 攻击的情况下,我们必须做做好应对这种最大区块大小的准备。

总结

最终,如果要提高当前的区块 Gas 上限,我们需要在实施前进行彻底的研究和分析。虽然像 Coinbase、Binance、Kraken 或 Lido 节点运营商这样成熟的实体能够应对超过 4000 万的区块 Gas情况有限,但独立质押者可能会比较困难。

因此,这样的决策必须经过深思熟虑,才能确保我们不会牺牲去中心化。

最后,构建一个像 Facebook 这样容量大、性能强的东西相对容易,但重要的是不能失去我们大多数人所追求的东西:去中心化。

可以在这里找到上述所做的说明和K线走势图的代码。

相关链接

优先结构下EIP-4844的设计逻辑

https://www.ethereum.cn/Eth2/4844-design

EIP-4488:通过总调用数据限制降低交易调用数据 Gas 成本

https://eips.ethereum.org/EIPS/eip-4488

维塔利克对论文的评测

I would favor an EIP to increase calldata cost, perhaps back to the original 68 per nonzero byte, now that we have EIP-4844 blobs for data-heavy use cases.

It would address the worst-case data issues and add breathing room to raise not just gas limit but also blob count target.

— vitalik.eth (@VitalikButerin) January 24, 2024

2016年EIP-150,IO密集型操作的Gas成本变化

https://github.com/ethereum/EIPs/blob/6572e92dccb2a581c0082befb953050f75d0ece5/EIPS/eip-150.md

EIP-1559:ETH 1.0 链的费用市场变化

https://eips.ethereum.org/EIPS/eip-1559

超声音钱模因

https://ultrasound.money/

以太坊基金会第十一届 AMA

[AMA] We are EF Research (Pt. 11: 10 January, 2024) byu/JBSchweitzer inethereum

Gas 限制增加的测试路径

https://ethresear.ch/t/testing-path-for-a-gas-limit-increase/18399/1

EIP-4844:分片 Blob 交易,原始 Danks 分片

https://www.eip4844.com/

多维度 EIP-1559

https://www.ethereum.cn/Eth1.x/multiDimension-eip-1559

这里K线走势图分析的代码,eth-gas-limit-analysis

https://github.com/nerolation/eth-gas-limit-analysis

Tags: tokenpocket钱 

本栏推荐

标签云

站点信息

  • 文章统计14583篇文章
  • 标签管理标签云
  • 微信公众号:扫描二维码,关注我们