以太坊上海升级,也被众多媒体称为Web3下一场新的叙事,这也是目前大家讨论最多的一热点。2023年3月,以太坊将推出预期的上海升级,截止发稿前,本次升级主要包括EIP-3540、EIP-3651、EIP-3670、EIP-3855、EIP-3860、EIP-4895、EIP-4200、EIP-4750以及EIP-5450。而备受瞩目的EIP-4844将推迟到5月至6月进行更新。
图片:Shutterstock首先,在以太坊生态中,我们经常听到一个词“EIP”,这个词是什么意思呢?EIP全称是EthereumImprovementProposal。它是一系列以太坊平台上推荐使用的标准和协议的统称。它所包含的具体标准和协议涉及以太坊的核心协议、客户端API、智能合约标准等。每一个EIP包含对某个标准或协议的定义。我们先来了解以太坊上海升级将涉及的几个标准。EIP-3540该EIP主要是针对EVM对象格式(EOF)合约字节码进行的更新,为EVM引入了一种可扩展和版本控制的容器格式。在合约字节码中添加了代码和数据的标记,实现了代码与数据的分离,这种分离对于链上代码验证器特别有利,因为验证器可以区分代码和数据。EIP-3651该EIP主要目的是将「COINBASE」地址由冷地址变为热地址。目前,COINBASE直接交易正变得越来越流行,因为它们允许有条件的支付,这提供了如隐式取消交易等好处。但是访问COINBASE的价格过高,原因是最初在EIP-2929中引入的访问列表框架下COINBASE是按冷地址访问成本来进行gas计算的,而冷地址访问成本相比于热地址访问成本相对较高。EIP-3670该EIP主要是配合上述EIP-3540合约创建时引入代码验证。拒绝包含截断PUSH数据或未定义指令的合约字节码。EIP-3855该EIP主要是增加了PUSH0指令,作用是将常量0压入堆栈。目前只有将1字节到32字节压入堆栈的PUSH1-PUSH32指令,而将常量0压入堆栈,需要使用PUSH10指令进行操作,而该指令在runtime中需要消耗3gas,并且额外需要消耗2字节的存储成本费用2*200gas。目前大约存在11.5%的PUSH指令压入了一个常量0到堆栈,而新增PUSH0指令后,可以节约一定量的gas费用。EIP-3860该EIP主要是对initcode的最大值进行了修改。目前initcode的最大值在之前EIP-170中设置为MAX_CODE_SIZE:24576,在EIP-3860中,新的initcode的最大值为MAX_INITCODE_SIZE=2*MAX_CODE_SIZE=49152。这使得合约大小的最大值扩展了一倍,合约可以拥有更加丰富的功能。但initcode每字节将添加0.0625gas的成本,合约部署gas成本微微上涨。EIP-4895该EIP主要是激活以太坊信标链质押提款的功能。EIP-4200该EIP引入了三个新的EVM静态跳转指令,分别为RJUMP、RJUMPI和RJUMPV,其目的是为了优化网络以及降低成本。目前EVM仅拥有动态跳转机制,这虽然能让字节码非常灵活,但是也同样增加了代码分析的复杂程度。这些静态指令的主要好处是降低了gas成本以及拥有更好的分析属性。EIP-4750该EIP主要是对代码的优化。主要是在上述EOF格式(EIP-3540)的基础上引入了在字节码中包含多个代码段的能力,每个代码段所代表的是一个单独的子程序或函数。在字节码中引入了CALLF以及RETF两个新操作码来负责调用和返回这种子程序或函数。此外,该EIP还引入了JUMPF指令来执行跳转到这种子程序或函数的操作。EIP-5450该EIP主要是改变了代码的验证过程,对网络进行了优化。目前EVM对每条执行的指令进行大量的有效性检查,例如溢出、gas是否充足等,而该EIP将使得合约在部署时便进行相关验证,从而减少代码在运行的时候进行的此类验证次数。
本次上海升级主要分为以下几个大的类型
1、EVM细节优化主要有两个细节改进的EIP,分别是:EIP-3651以及EIP-3860。主要是针对现有的细节问题以及优化体验方面进行的细节改动,其中EIP-3860能够缓解目前智能合约字节码长度限制导致部分复杂的合约必须拆分成多个合约才能够部署到主网的问题,该EIP的引入将会显著增加智能合约功能的丰富性与多样性。2、信标链提款主要通过EIP-4895进行实现。目前,信标链上的ETH质押数量超1500万枚,占以太坊流通总量的近13%,本次升级之后,将开放这超1500万枚以太坊的提取功能。本次提取功能将采用“推”的方式将款项从共识层推送到执行层,将定义一个分叉时间戳FORK_TIMESTAMP,从该时间戳开始,执行层便要对提款进行处理。共识层会定义一个负载级对象withdrawal,该对象会提供包括:index、validator_index、address以及amount的关键信息,会主动推送到执行层。执行层中也将定义一个新字段withdrawals,该字段保存的是withdrawal对象的列表,执行负载获取到一个withdrawal对象后,添加到withdrawals列表。在经过验证之后,便会对address地址增加amount数量的以太坊,从而实现以太坊的提取。
3、字节码改进主要有六个字节码相关改进的EIP,分别是:EIP-3540、EIP-3670、EIP-3855、EIP-4200、EIP-4750以及EIP-5450。这类升级主要是增加部分新字节码指令,包括:PUSH0、RJUMP、RJUMPI、RJUMPV、CALLF、RETF、JUMPF。还对字节码进行了分类,添加字节码的标记用于区分字节码的类型,并对字节码每个类型进行了模块化。另一方面,更新了字节码的验证机制,优化了网络以及使用费用。这部分升级是本次上海升级的主要内容,将会对以太坊虚拟机系统产生相对较大的影响。Beosin会将本次上海升级中的所有指令同步纳入Beosin-VaaS智能合约代码检测工具中。以太坊可扩展解决方案是什么?
另一方面,备受瞩目的EIP-4844被推迟到了今年5月至6月进行更新,其功能是引入一种“携带blob的交易”的新交易格式,该格式是为L2数据传输所专门设计出的数据类型。Rollups是一种扩展解决方案,在短期、中期甚至可能在长期内,该方案是以太坊唯一的去信任扩展解决方案。近期几个月中,L2向L1传输数据的费用一直高居不下,而Rollups很明显的降低了许多以太坊用户的交易费用,其中Optimism和Arbitrum拥有比以太坊基础层本身低3-8倍费用的功能,而ZKrollups甚至拥有比以太坊基础层本身低40-100倍费用的功能。然而,即使是这样的费用,对于许多用户来说也太贵。长远看,数据分片是解决rollups自身不足的很好的解决方案,可以为使用rollups的链的每个区块增加16MB的专用数据空间。但是,数据分片功能的实施和部署需要漫长的时间才能实现。
该EIP提供了一个解决方案,通过实现“携带blob的交易”这一新的交易类型,该交易类型是为了承载L2的原始交易压缩数据,相当于之前的calldata。由于L2的交易压缩数据上传的目的只是为了供其他人下载验证,所以calldata其实并不需要被L1执行从而产生gas费用。新交易类型blob便不会像calldata那样被EVM读取,其会保留在共识层,并在30天的延迟之后被删除。简单来讲,就是将之前的calldata数据保留到共识层,而不会像之前那样发送到执行层,从而产生高昂的gas费用,也正是Rollup费用能因此降低的原因。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。