以太坊改进提案 EIP-4844

一、背景

有一个叫以太坊的新建小镇,镇子里住的都是想要做出一番事业的热血青年,镇子不大,只有几条主干道,基本能满足人们日常的出行需要。随着更多的人慕名而来,往日安静的小镇开始变得热闹,最明显的标志就是早晚上下班高峰时,道路异常拥堵,人们花在路上的时间更长,拥堵也产生了更多油耗,汽车尾气也带来了环境污染问题,出行成本越来越高,人们开始抱怨起来,也让想要搬到这里的人们望而却步......

这个小故事,其实就是以太坊生态当前面临的一个窘境:日益增加的交易量带来了以太坊的繁荣,但也导致了以太坊网络的拥堵。于是,以太坊生态的建设者们提出了一些列的改进提案(E thereum I mprovement Proposal),今天我们要聊的,就是EIP-4844提案。

二、目的

有了刚才的故事的铺垫,现在我们进入正文:如何提高整个以太坊网络的吞吐量,并降低交易费用,进而解决以太坊面临的可扩展性问题?

从短期和中期来看,Rollup 可能是以太坊唯一的无需信任的扩展解决方案。基于乐观证明的Rollup方案:Optimism 和 Arbitrum 的交易费用,比以太坊基础层降低了约 3-8 倍;基于零知识证明的 ZK rollups方案,比以太坊基础层降低了约 40-100 倍。然而,即使是这些费用对于许多用户来说也太昂贵了。试想以下,在如今5G盛行的移动互联网网络中,我们在刷短视频、B站、浏览商品图片时,还会去担心是否超出流量限额吗?当然不会,因为流量费已经低到大多数人不会care的地步。这种流畅丝滑、毫无后顾之忧的移动互联网用户体验,正是区块链网络要大力改进的地方。

从长期来看,Data Sharding数据分片也许是解决该问题的终极答案。这种方案有点类似于大数据领域里用到的一种技术:MapReduce,即将海量的数据切割成小块,分发到不同的节点并行计算,最后将各个节点的结果汇总处理,生成最终结果。但要在去中心化的区块链网络中实现这一技术,仍然需要相当长的时间完成实施和部署,长途漫漫......

于是,诞生了EIP-4844这种方案,也叫 Proto-Danksharding,前缀 "Proto "表示它是全面数据分片解决方案的初步或初始阶段,同时也是以以太坊研究员 Dankrad Feist(@dankrad) 命名的更先进的 danksharding 技术的原型或早期版本。该提案会完成全面数据分片的很多前置工作,也可以将Rollup费用降低几个数量级,并使以太坊能够在不牺牲去中心化的情况下保持竞争力。这种权宜之计颇有点互联网公司小步快跑、快速迭代的味道,既然一口吃不成胖子,那就一步一个脚印,步步为营!

三、主要内容

3.1、EIP-4844(Proto-danksharding)

  • 该提案实现构成完整 Danksharding 规范的大部分逻辑和 "脚手架"(例如交易格式、验证规则)的提案,但并不实际实现任何分片。本质上就是为以后实现全面分片打基础,完成前置工作,具体的改造内容,大家可以看这个任务列表

  • 其核心特征是在以太坊中引入了一种新的交易类型:blob-carrying transactions,与常规交易类似,但它携带了一个额外的数据块Blob(128kb),目标区块为1Mb,最大可达2Mb。Blob的结构如下: 如今,Rollup 使用 calldata。未来,Rollup 将别无选择,只能使用分片数据Blob,因为它会便宜得多,至于便宜多少,我们接着往下看。

  • 需要注意的是,以太坊自2020年以来的扩展性方案一直遵循的是 Rollup-centric roadmap,即以Rollup为中心的路线图,因此该EIP并不是直接在原来的交易中增加空间(以太坊也一直反对这种直接增加Block大小的做法),而是为Rollup的数据块增加了空间,这两者有很大的不同。

    Block空间 Blob空间
    对所有节点可见
    存储时长 永久 数周
    EVM可见
    存储位置 执行层 共识层
    大小 最大940KB 初始目标1MB
    Gas成本 16gas/byte 1 gas/byte

其中最主要的区别有三点:

① Block空间为永久有效,而blob空间的有效期为两周~三周。试想下按照12s一个约1MB的区块,一年将达到2.5TB的数据量,如果永久保存的话,这哪里是改进提案,明明就是添乱嘛。两周的时间足够Rollup的L2层检索和验证这些数据,同时也使得有需求的用户或协议来备份该数据。

② Block空间的gas费为16 gas/字节,而Blob空间的gas费为1 gas/字节⬇️⬇️⬇️(因为它不需要永久存储),这也就是为什么Blob方案会降低gas费的一个重要原因。

③ Blob数据位于共识层,并且对EVM不可见,也就意味着不存在EVM执行的成本⬇️⬇️⬇️,这在另一个维度降低了交易成本。

3.2、如果Blob数据数周之后删除了,用户要访问怎么办?

首先要声明的是:以太坊共识协议的目的并不是保证所有历史数据的永久存储。相反,其目的是保证安全性和去中心化这些最重要的特性。

这也就反驳了在有些人看来,区块链就是个数据库的说法。区块链是为了去中心化而设立的,这里不可避免的要存储一些数据,比如区块结构中的data字段可以用来存储智能合约bytecode或者函数调用参数等,但是纯粹把它当做数据库来存储,这是跟区块链的初衷相违背的。

所以,谁关心这些数据,谁存储。以太坊只需要保证这些Blob数据是可证明的、正确的,遵循其共识机制即可,它会把Blob数据保存数周,供其他人下载备份使用。那谁需要这些数据呢?

依赖这些数据的应用、区块链浏览器、API提供商、进行数据分析的学者、个人爱好者、The Ethereum Portal Network(专门用来存储历史数据)、第三方索引协议The Graph......总之,既然你们关心这些数据,那你们自己保存~

3.3、如何应对Gas定价的挑战--平均负载和最坏情况负载不匹配?

我们知道以太坊区块的大小是由区块的gas limit决定的,gas成本降低,区块就可以打包更多的交易,进而提高交易吞吐量TPS。当前Rollup扩展性方案使用calldata存储数据,如果把calldata的存储成本降10倍,那带来的交易吞吐量TPS的提升可能不止10倍,但为什么不这么做呢?

这其实与平均负载最坏情况负载 之间的差异有关。今天,我们已经遇到这样的情况:平均区块大小约为 160 kB,但理论上可能的最大区块大小(如果一个区块中的所有 30M Gas 都进入了 calldata)约为 1.8 MB。以太坊网络过去曾处理过接近最大值的区块。然而,如果我们只是将 calldata 的 Gas 成本降低 10 倍,那么虽然平均区块大小会增加到仍然可以接受的水平,但最坏的情况将变成 18 MB,这对于以太坊网络来说太大了,无法处理。

对于以太坊采用P2P的网络架构,每个节点之间的数据传输本来是 160 KB,现在突然变成了 18 MB,这就对节点的带宽和磁盘提出了更高的要求,否则就会带来更多的网络延迟,这种感觉就像一个人1天只吃1顿饭,但这1顿饭包含了早中晚三餐的饭量,所以这个人要么撑死,要么饿死,除非变成一只骆驼🐪。

所以,如何避免平均情况 / 最坏情况负载不匹配,并在每个区块中包含接近我们可以安全处理的最大数据量? Proto-danksharding 和 EIP-4488(注意:这是又一个提案) 正是做到这一点的两个提案。

3.4、EIP-4844(Proto-danksharding) Vs EIP-4488

为了避免混淆,这里使用Proto-danksharding的术语。

平均情况区块大小 最坏情况区块大小
当前状态 160kb 1.8MB
EIP-4488 350kB 1.4MB
Proto-danksharding 1MB(可根据需要调整) 2MB

EIP-4488 是解决相同平均情况 / 最坏情况负载不匹配问题的更早且更简单的尝试。 它通过两个简单的规则做到了这一点:

  • Calldata Gas 成本从每字节 16 Gas 减少到每字节 3 Gas
  • 每个块的限制为 1 MB,加上每个交易的额外 300 字节(理论最大值:1.4 MB)

我们看到EIP-4488的方案简单粗暴,先降低gas成本,但gas太低了又会造成大区块的问题,那干脆再限制下区块大小。

Proto-danksharding则引入多维度的 EIP-1559 费用市场解决 gas 定价危机。

每个区块目标值 每个区块最大值 基础gas费
Gas limit 15 million 30 million 变化的
Blob 数量 8个 16个 变化的

这里有 Gas 和 Blob 两个维度的约束。简单来说,其中Gas limit即每个区块所有交易的gas limit之和不超过30 million,Blob的数量不超过16个,其中每个 128 KB。更加具体的逻辑,可以看这里 multidimensional-fee-market。在这个双重约束下,区块的大小会接近目标值,而不是大到区块链网络无法承受。

不管怎么说,EIP-4488 和 Proto-danksharding 提案都以不同的方式解决了平均情况/最坏情况不匹配的问题,那它的区别在哪里呢?

EIP-4488解决的是当下的问题,尝试最小化当下所需的更改,而Proto-danksharding解决的是未来的问题,它引入了Blob并进行了大量更改,因此将来升级到完全分片只需要很少的更改。一旦推出Proto-danksharding,执行层客户端团队、Rollup开发人员和用户无需做进一步的工作即可完成向完全分片的过渡。 Proto-danksharding 还将 blob 数据与 calldata 分开,使客户端更容易在更短的时间内存储 blob 数据。

四、EIP-4844 对未来以太坊发展的影响

EIP-4844遵循以太坊的以Rollup为中心的发展线路,也为未来完成 Danksharding 实现了大量的基础工作,据估计,实现 Rollup + Danksharding 的宏伟目标后,以太坊的交易吞吐量TPS可达到百万级别,我们不难看出 EIP-4844 在这蓝图中的重要性:

  • 大幅降低Rollup交易费用: EIP-4844的blob交易和多维费用市场可将Rollup交易费用减少多达100倍,从而促进以太坊第二层解决方案的广泛采用并使用户受益。
  • 提高数据可用性: 该提案允许以显著较低的成本为每个以太坊区块提供更多数据,从而提高了数据可用性,这对第 2 层Rollup至关重要。
  • 简化数据管理: 该提案引入了有效的Blob数据删除机制,减少了长期存储需求,并与可持续发展目标保持一致,使以太坊更加生态友好。
  • 面向未来的网络升级: EIP-4844 的模块化结构和专用数据层为未来增强提供了灵活性,促进了以太坊生态系统内的持续创新。

按照相关报道,EIP-4844 提案也将于近期完成,也许,我们即将迎来清晨的第一缕阳光~🌞

五、展望

web2互联网的发展历程,其实为web3的发展提供了清晰的道路指引。10年前当网络通信从3G升级到4G后,迎来了移动互联网的蓬勃发展,各种移动应用层出不穷,如今我们一部手机走天下,到5G时代,又促进了物联网的应用场景的发展,所以,当区块链的网络能够像互联网那样丝滑流畅,必然会催生各种应用,吸引更多地用户参与到web3中,我们期待以太坊的终极分片早日完成。

相关推荐
Minner-Scrapy7 小时前
什么是DeFi (去中心化金融)
金融·去中心化·区块链
0x派大星1 天前
区块链中的递归长度前缀(RLP)序列化详解
区块链·以太坊
礼小七1 天前
区块链相关方法-波士顿矩阵 (BCG Matrix)
区块链
yoona10201 天前
Rust编程语言入门教程(八)所有权 Stack vs Heap
开发语言·后端·rust·区块链·学习方法
OpenBuild.xyz1 天前
我是如何从 0 到 1 找到 Web3 工作的?
人工智能·web3·去中心化·区块链·智能合约
Sui_Network1 天前
Sui 如何支持各种类型的 Web3 游戏
大数据·数据库·人工智能·游戏·web3·区块链
区块链蓝海2 天前
Secured Finance携手Axelar及Squid提升流动性,迎接USDFC主网
区块链
yunteng5212 天前
solidity之Foundry安装配置(一)
web3·区块链·solidity·foundry
qiquandongkh2 天前
2025年股指期货和股指期权合约交割的通知!
大数据·金融·区块链
yoona10203 天前
Rust编程语言入门教程 (七)函数与控制流
开发语言·rust·区块链·学习方法