下一步,在以太坊的技术发展目标上,又将要迎来怎样的新变化?
原文作者:布噜
原文来源:布噜说
自 2022 年 9 月 15 日以太坊合并后,一直颇受众人关注的 Shapella 升级也正式于 2023 年 4 月顺利完成。下一步,在以太坊的技术发展目标上,又将要迎来怎样的新变化?
2023 年 4 月 29 日,以太坊基金会召开了第 160 次核心开发者电话会议,确定了以太坊下一场重要变化——坎昆升级(Cancun Network Upgrade)所需要进行的各项改进协议(Ethereum Improvement Proposal,简称 EIP)。
如果说 Shapella 升级是以太坊合并之后确保 PoS 共识机制在未来的以太坊上稳定实施的技术分水岭,那么坎昆升级的意义,更是不亚于 Shapella 升级——它是以太坊实现进一步扩容的关键,也将开启以太坊数据存储和检索能力的发展新阶段。
坎昆,是墨西哥一个著名的旅游城市,也是 Devcon 3 大会的举办地,按照以太坊升级命名的规律,以地名命名的升级,是针对以太坊执行层的升级。
此次升级中,会有哪些值得关注的以太坊改进协议(EIP),让我们一起了解。
01
坎昆升级的主角:EIP-4844
以太坊分片的原型
▶改进目标:解决以太坊的可扩展性(即扩容需求),帮助降低以太坊第 2 层(Layer2) Rollups 解决方案的交易成本,提升 Rollups 的速度。
▶改进背景:以太坊第 1 层主网(Layer1)的费用一直居高不下,迫切需要必要的改进,来降低整体操作费用。
目前,以太坊上的扩展解决方案主要是第 2 层的 Rollups。
在实践中,Rollups 解决方案帮助用户节约了很多操作费用(下文简称 Gas Fee),比如代表项目 Optimism,Gas Fee 的常规开销只有 0.001 gwei,远低于以太坊第 1 层主网的常规开销;ZK Rollups 的解决方案具有更好的数据压缩性能,并且不需要包含签名数据,费用更低,甚至可以降至以太网第 1 层主网的百分之一。
但是,对于更广泛的用户而言,即使经过 Rollups 解决方案,Gas Fee 依然还是相对昂贵的负担。此外,以太坊处理并行交易的效率仍然较低,每秒钟最多只能处理两位数的交易量,这些都需要新的改进方案去帮助提升可扩展性。
分片(Sharding)——是解决上述问题的一个强大的改进方法,但现在的以太坊还实施不了,而改进方案 EIP-4844 的适时提出,则是为解决上述需求与落实分片升级之间,找到了一个能够适用于现阶段以太坊的权衡之计,为以太坊未来实现整体数据分片奠定前期的技术基础。
因此,EIP-4844 又被称为 「Proto-danksharding」,即「分片的原型」。dank 这个单词也别有来头,是取自以太坊研究人员 Dankrad Feist 的名字,他曾经表示:「EIP-4844 将成为 Rollups 的加速器。」
▶改进内容(已完成的技术改进):
△ 完整分片构想图 / Vitalik Buterin
图源/foresightnews
▶注意事项:Blob 被设计出来的初衷,是要帮助承载以太坊第 2 层的数据。与此同时,Blob,这组数据向量,是由以太坊共识层的节点进行存储,因此不能够被执行层的以太坊虚拟机(简称 EVM)读取,而正是这种数据的分离,实现了以太坊第 2 层 Rollups 解决方案费用的降低。
此外,Blob 的数据会在 30 天之后被删除。
为了减少改进提案给主网造成压力,相比未来实施完整分片,EIP-4844 对每个信标块增加的存储空间设置了上限,至多限制在约 0.5 MB 的数据量大小(约 4 个 Blob),但这个上限预计在未来会提高。
02
坎昆升级已确定实施的其他改进提案
除了备受关注的 EIP-4844,此次坎昆升级已经确定实施的改进提案还包括:
▶EIP-1153:添加瞬态存储操作码(Transient Storage Opcodes)。瞬态存储是专门用来解决区块内部通讯的解决方案。
瞬态存储不改变现有操作的语义,瞬态存储的数据在每次交易后会被丢弃,不会访问服务器磁盘,使用后也无需清除存储槽,客户端也不需要加载原始数据。
因此,相对来说,使用瞬态存储解决区块内部之间通讯问题的优势在于 Gas Fee 较低,且未来的以太坊数据存储设计中不需要考虑因临时存储而产生的操作费用退费的情况。
但是,EIP-1153 并不适用于解决现有智能合约中临时存储数据的使用问题。
▶EIP-6780:修改 SELFDESTRUCT 操作码的功能,为未来以太坊应用 Verkle Tree 架构(常见简称「沃克尔树」)做准备。
当前,以太坊应用的是 Merkle Tree 架构(常见简称「默克尔树」)架构,使用 SELFDESTRUCT 操作码可以对账户状态进行大量更改,比如,可以删除代码和存储。但是,当未来以太坊上应用 Verkle Tree 架构时,就无法轻易对账户进行修改或删除,因为 Verkle Tree 架构会把每个账户存储在不同的账户密钥中,这些密钥不会连接到根账户。
因此,EIP-6780 提出了对 SELFDESTRUCT 操作码功能的修改建议。根据 EIP-6780,修改后的 SELFDESTRUCT 操作码,在使用中不再具备更改或删除账户的能力,将只用于传送 ETH 给调用者,但有一种例外的情况是,当 SELFDESTRUCT 在由一个智能合约创建的相同交易中被调用。
△ 以太坊坎昆升级相关改进提案的实施进度(截至 2023/5/30)
图源/github@Cancun Network Upgrade Specification
坎昆升级已确定的三个改进协议 EIP-4844 、EIP-1153、EIP-6780 预计激活时间将在 2023 年 10 月。
03
坎昆升级尚在考虑纳入实施的改进协议
EOF 相关的改进协议暂未纳入考虑
▶EIP-2537:预编译 BLS12-381 曲线操作,并添加到 BLS 签名验证和执行 SNARKs 验证所需的操作集合中,以更好执行相关的验证操作。
目前这个改进方案的开发进度较为缓慢。执行 EIP-2537 改进方案后,与现有预编译 BN254 相比,将会获得更好的操作安全性,并能够允许匹配更友好的曲线操作,会更有利于以太坊第 2 层的用例开发。
▶EIP-4788:在以太坊虚拟机中公开信标链区块根。信标链区块根(Roots of the Beacon Chain Blocks)是一种密码蓄能器(Accumulators),用于证明任意的共识状态。
在以太坊虚拟机中公开信标链区块根会允许实现对以太坊共识层最小化信任的访问。这也是一个有助于用例开发的改进协议,将支持 Staking Pools 、智能合约桥等用例改进其信任假设(Trust Assumptions)。
▶EIP-5656:提供一个能够用于复制内存区域的、高效的以太坊虚拟机指令。内存复制是一个基础操作,对于各种计算量大的操作非常有用,不过未来实施到以太坊虚拟机上也会产生操作费用。
EIP-5656 引入的指令是一个以前不存在的新指令,已经发布的智能合约如果使用这个新指令要注意兼容性,可能需要调整操作。
▶EIP-5920:引入新的操作码 PAY。使用 PAY 操作码将 ETH 发送到账户地址,可以不需要调用账户地址的任何函数。
PAY 操作码是一个专门服务于 ETH 传输的操作码,它不需要调动地址函数,则能够节约网络使用费用,对于小量 ETH 传输来说,十分有利。
▶EIP-7069:修改 CALL 指令,此协议已启用。