关于上海升级即将激活的4个EIP

上海升级

上海升级将是以太坊网络实现合并后的首次重大升级。上海升级除了质押 ETH 提款之外,还纳入了四项即将激活的EIP 。为什么要急于开始上海升级呢?主要是当前的以太坊网络,只能存款ETH但不能提取。而解锁以太坊质押提款功能不仅有利于保持以太坊网络活力,还有利于以太坊未来可持续性发展,继续吸引更多的验证者进入以太坊网络。那么以太坊上海升级即将激活的EIP又能带来什么?

我们总结了上海升级即将激活的四个EIP:
EIP-3651 : Warm COINBASE
开始COINBASE地址预热
概述:根据读取账户的实际成本,COINBASE地址在交易开始执行时应是经过预热的。
解释一下这里的 COINBASE 是来自比特币的概念,即区块中的第一笔交易是笔特殊交易,称为 COINBASE 交易,这种交易早期设计用于矿工打包收集挖矿的 gas 小费收入。交易执行时 COINBASE地址是预热过的(已加载至系统),避免每次获取小费时都需要重新从0获取 COINBASE地址的信息。
动机:COINBASE直接支付正变得越来越受欢迎。COINBASE付费被采纳是因为他们允许有条件付费,这对网络是有益的,例如可防止打包回滚的交易。但是与COINBASE交易价格很高,在EIP-2929引入的交互列表框架中COINBASE地址被列为“冷地址”,每次交易必须重新获取COINBASE地址的信息。这种gas成本不匹配虽然可以激励除ETH以外的其他付费方式,如ERC20,但ETH才是以太坊交易的主要付费手段。EIP-3651 有利于让矿工节省gas费,加快矿工交易的速度。

EIP-3855,PUSH0 (0x5f)指令
引入一条新指令,将常量值0压入堆栈
概述:引入PUSH0 (0x5f)指令,它将常量值0压入堆栈。

动机:许多指令期望将偏移量作为输入,在许多情况下偏移量为0。一个很好的例子是call的返回数据参数,如果合约更喜欢使用RETURNDATA*,则将其设置为零。这只是一个例子,但是还有许多其他原因导致合约需要推入0值。他们现在可以通过PUSH1 0实现这一点,它在运行时消耗3个gas,并被编码为两个字节,这意味着2 * 200的gas部署成本。有了 PUSH0 指令后,就不需要消耗这额外的 gas 部署成本。此外,从“浪费”的角度来看,在现有的帐户中,在push1 00指令上浪费了340,557,331个字节,这意味着部署它们需要消耗68,111,466,200个gas。EIP-3855目标就是降低无意义的 gas消耗。

EIP-3860,Limit and meter initcode
将initcode的最大大小限制为49152,并为每个32字节的initcode chunk 应用2个gas成本。
概述:通过引入initcode的最大大小限制(MAX_INITCODE_SIZE = 2 * MAX_CODE_SIZE = 49152),扩展了EIP-170。此外为每 32 字节的 initcode chunk 引入 2 个 gas 费用,以表示 jumpdest-analysis 的成本。

动机:在合约创建过程中,客户端必须在执行 initcode之前对初始化代码执行 jumpdest-analysis。所执行的工作随initcode的大小线性扩展。基于 EIP170 是限制了 initcode 大小为 24576,而如今则是将 initcode 的最大大小限制提升为 49152 。显然,更大的代码容量,就意味合约大小可以扩展一倍,合约开发者可以部署更丰富的功能。简言之,EIP-3860目的是支持更大型的Dapp。

EIP-4895 信标链将提款作为操作指令
支持验证者通过新的“系统级”操作类型从信标链提款到EVM。
概述:引入一个系统级“操作”来支持从信标链“推”到EVM取款。部署完成后,以太坊信标链质押提款功能将被激活。

动机:这个EIP为信标链上的验证者提款提供了一种进入EVM的方法。从结果上讲,实现的是质押的 ETH 提款操作,而实现方式是引入了系统级的指令 withdrawal 基于信标链(共识层)的信息,无条件地直接控制指定地址的 ETH 余额。EIP-4895的目的就是实现质押提款功能。

除了确定包含的 4个EIP:EIP-3651,EIP-3855,EIP-3860,EIP-4895,在最近的以太坊核心开发者电话会议上这次电话会议期间,开发者们还讨论了其他可能纳入上海升级的 EIP。虽然每个提案确实为以太坊带来了一些独特的优点及好处,但开发者们对优先考虑纳入哪些 EIP 的问题,仍存在较大的争议。

参考:
https://ethereum.org/en/developers/docs/consensus-mechanisms/pos/keys/#withdrawal-key
https://ethereum.org/en/upgrades/merge/issuance/#cl-issuance-post-merge
https://eips.ethereum.org/EIPS/eip-3651
https://eips.ethereum.org/EIPS/eip-3855
https://eips.ethereum.org/EIPS/eip-3860
https://eips.ethereum.org/EIPS/eip-4895

11-14
EIP即企业集成模式(Enterprise Integration Patterns),是网络中很重要的概念,有着不同的使用场景和应用范围,了解它能帮助理解网络的运作规律,更好地处理网络问题[^1]。 ### 含义 EIP 是一组用于解决企业应用集成问题的模式和最佳实践。它提供了一套通用的词汇和设计模式,帮助开发者更好地理解、设计和实现企业级的应用集成解决方案。这些模式涵盖了消息传递、数据转换、路由、消息队列等多个方面,旨在解决企业内不同应用系统之间的数据交互和业务流程协同问题。 ### 应用场景 - **系统集成**:在大型企业中,往往存在多个不同的业务系统,如 ERP(企业资源规划)、CRM(客户关系管理)、SCM(供应链管理)等。这些系统可能由不同的供应商开发,使用不同的技术栈和数据格式。EIP 可以帮助实现这些系统之间的数据同步和业务流程的衔接,确保企业内各个部门之间的信息流通顺畅。 - **数据交换**:企业可能需要与外部合作伙伴、供应商或客户进行数据交换。例如,企业需要将订单信息发送给供应商,或者接收客户的反馈信息。EIP 可以处理不同系统之间的数据格式转换和传输,确保数据的准确和及时传递。 - **业务流程自动化**:通过 EIP 可以将多个业务系统中的业务流程进行整合和自动化。例如,当一个客户提交订单后,系统可以自动触发库存检查、订单处理、发货等一系列流程,提高业务处理效率和准确性。 ### 相关技术 - **消息队列**:消息队列是 EIP 中常用的技术之一,如 RabbitMQ、Kafka 等。消息队列可以实现异步消息传递,解耦发送者和接收者,提高系统的可扩展性和可靠性。例如,当一个系统产生大量数据时,可以将数据发送到消息队列中,由其他系统根据自身的处理能力从队列中获取数据进行处理。 - **企业服务总线(ESB)**:ESB 是一种基于 EIP 理念的集成中间件,如 Mule ESB、Apache ServiceMix 等。ESB 提供了消息路由、数据转换、服务编排等功能,是企业应用集成的核心基础设施。它可以将不同的应用系统连接在一起,实现系统之间的互联互通。 - **Spring Integration**:Spring Integration 是基于 Spring 框架的企业集成框架,它遵循组件松耦合、业务逻辑和集成逻辑关注点分离等原则,提供了丰富的 EIP 实现。开发者可以使用 Spring Integration 快速搭建企业级的集成解决方案,通过配置的方式实现消息传递、数据转换等功能 [^2]。 ```java // 以下是一个简单的 Spring Integration 示例,实现消息的发送和接收 import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.annotation.ServiceActivator; import org.springframework.integration.channel.DirectChannel; import org.springframework.integration.config.EnableIntegration; import org.springframework.messaging.MessageChannel; import org.springframework.messaging.support.GenericMessage; @Configuration @EnableIntegration public class SpringIntegrationExample { @Bean public MessageChannel inputChannel() { return new DirectChannel(); } @ServiceActivator(inputChannel = "inputChannel") public void handleMessage(String message) { System.out.println("Received message: " + message); } public static void main(String[] args) { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(SpringIntegrationExample.class); MessageChannel inputChannel = context.getBean("inputChannel", MessageChannel.class); inputChannel.send(new GenericMessage<>("Hello, Spring Integration!")); context.close(); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值