写点什么

以太坊柏林硬分叉正式激活,主网将迎哪些更新?

2021 年 4 月 15 日

以太坊柏林硬分叉正式激活,主网将迎哪些更新?

2021 年 4 月 15 日(星期四)下午 6:12 分左右,柏林硬分叉在主网的 12244000 区块上正式激活。近一周以太坊全网算力均值为 502.37 TH/s,平均出块时间 13 秒。目前已有 74.6%的客户端准备就绪。



据悉,因 Geth 客户端的过于集中化的问题,本预期在 2020 年 7 月上线的柏林硬分叉一路延期至今。与早期以太坊网络升级略有不同,此轮升级不需要在 Meta EIP 中进行跟踪。柏林硬分叉之后,其他升级工作均将在 eth1.0-specs repo 当中进行。


柏林硬分叉中包含哪些变更?


此次柏林硬分叉主要优化以太坊的主网性能、优化合约,涵盖 Gas 效率、以太坊虚拟机 (EVM) 读取代码方式的更新,以及防止拒绝服务 (DDOS) 攻击等。在部署到主网以前,此次升级会先在 Ropsten、Goerli 和 Rinkeby 测试网上运行。


具体操作中,柏林硬分叉将以下四个 EIP 引入以太坊网络。


EIP-2565:降低 ModExp 预编译合约成本


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


该项提案主要是对先前用于模块化乘幂的预编译机制 EIP-198 进行重新定价。EIP-198 是一项专门用于模块化幂去处的函数,引入了多种加密算法以支持 RSA 签名验证。EIP-2565 将降低 gas 成本,使其与其他操作的执行成本保持一致。



PEEPanEIP-2565 发布的 gas 定价图表


EIP-2718: 增加交易类型


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


这项提案将引入一种新的交易类型,能够以“信封”(Envelope)形式轻松支持多种交易类型。


当初在以太坊首次登陆主网时,仅支持一种交易类型,其字段为“To”(交易执行的位置)与“Data”(交易中所包含的一切数据)。以太坊客户端采取同步行动,且必须保证各方在完全相同的时间内执行完全相同的变更。因此,如果“To”字段为 0,则所有客户端就必须将“Data”字段解释为合约部署并以特定方式立即执行。


一段时间以来,用户对于交易类型的需求不断发展。这方面趋势最早在 EIP-155 — 对简单重播攻击的保护 中有所体现。但客户当时并不同意引入新的交易类型,而是更倾向于以差异化方式解释该字段。EIP-155 中的“伪龙(Spurious Dragon)”硬分叉是一项共识变更硬分叉,要求所有客户就该字段的解释达成共识。


此次 EIP-2718 的发布无法直接解释 EIP-155 的复杂性问题,但有助于阻止未来更多复杂性因素的引入,同时也让新型交易类型(例如 EIP-1559 式交易)的添加变得更加轻松易行。


EIP-2929: 增加状态访问操作码的 GAS 消耗


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


这项提案关注的是在交易中首次使用 SLOAD,CALL, BALANCE, EXT 与 SELFDESTRUCT 时,存在的 Gas 成本增加问题。


例如,首次执行会令 CALL 系列函数的 gas 成本由 700 大幅增加至 2600,SLOAD 系列函数则增加至 2100。但对于各个地址或存储槽位,这种高额费用只会产生一次。这意味着除首次调用之外,交易中任意数量的后续调用都仅耗费 100 gas。


之所以上调首次调用的 Gas 成本,是为了缓解以太坊中的最大 DoS 攻击向量。这种设计也有助于在无状态以太坊环境下限制必要的见证人规模。目前,Merkle 证明所需要的见证人数量要远大于验证特定区块链的必要数量,以太坊正在寻求新的规模控制方法。


虽然 EIP-2929 还无法彻底解决证人数量问题,但至少控制住了过高的 Gas 成本。另外,EIP-2929 还能降低预编译的调用成本,消除预编译访问所产生的额外 700 gas 开销。


EIP-2930: 可选访问列表


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


此项提案的主要目标是修复现有合约中的重大变更并缓解由 EIP-2929 所引发的部分 Gas 成本增长。此提案将添加一种交易类型,其中包含交易操作打算访问的目标列表(即地址与存储键列表)。通过指定访问列表,客户可以更轻松地处理交易,更安全地降低 Gas 成本。


EIP 管理与治理方面迎来哪些变更?


“缪尔冰川”是一项独立的升级提案,也是当初在链上发布 Ice Age 功能时的必要网络要求。为了趁早与其他提案一同部署,以太坊团队在 2020 年 1 月将“缪尔冰川”部署在了主网之上。


为了设计出更好的网络升级流程,EIP 编辑、EIP 作者、客户端开发者、ECH 以及其他社区成员组成了 EIP 改进流程(EIPIP)小组。以太坊 Cat Herders 还组织了一轮项目关键安装调查,希望了解以太坊客户群体中的多样性现状。


此外,客户端开发者将持续研究不同建议,不断改善网络性能与安全性,并为后续升级打下坚实的基础。由于升级周期较为平缓,我们可以充分利用这段时间为下一次的“伦敦(London)”升级添加更多新功能。


节点运营者或矿工需要下载以太坊客户端的最新版本,目前可升级的 Eth1.0 客户端包括:



注:如果您在以太坊公链上使用 Besu,则必须升级至 21.1.2。此版本包含所有受支持的测试网与以太坊主网 Berlin 激活区块。


相关链接:


https://medium.com/ethereum-cat-herders/the-berlin-upgrade-overview-2f7ad710eb80


2021 年 4 月 15 日 18:292484

评论

发布
暂无评论
发现更多内容

Spring Boot 搭建实际项目开发中的架构

武哥聊编程

Java 架构 springboot SpringBoot 2 28天写作

CNCF CTO解读:2021云原生最新趋势

华为云原生团队

Kubernetes 开发者 云原生 开源项目 边缘技术

Mybatis系列全解(三):Mybatis简单CRUD使用介绍

潘潘和他的朋友们

Java 后端 mybatis 后端开发 mybatis源码

一看就懂的网络传输介质介绍

一点点感慨--移民二代

张老蔫

28天写作

低成本更清晰,下一代视频编码技术将如何实现这一目标?

华为云开发者社区

AI 5G RTC 视频编码 vr

聊聊架构模式的变迁:从分层架构到微服务架构

华为云开发者社区

架构 软件 微服务 分布式架构 软件设计

MapReduce练习案例1-统计求和

小马哥

大数据 mapreduce 七日更

Mybatis系列全解(一):手写一套持久层框架

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

Mybatis【15】-- Mybatis一对一多表关联查询

秦怀杂货店

mybatis

SpringBoot 2.0 中 HikariCP 数据库连接池原理解析

vivo互联网技术

数据库 ThreadLocal springboot Spring Boot 2 HikariCP

智慧平安社区开发,江西老旧小区改造解决方案

WX13823153201

智慧平安社区开发

实习流水帐(一)

是鱼头啊啊啊

Java 程序经验小结:反射机制勿滥用

后台技术汇

28天写作

浅析整洁架构之道(三) 明析分层原则

御剑

架构 方法论 领域驱动设计

如何方便记忆和理解类图里的线条

华为云开发者社区

Java 函数 二叉箭头 类对象

产品经理第二周作业

朱琴

融资融券系统搭建

v16629866266

产品经理训练营 - 第二周作业

泡面加煎蛋

拆解 抽奖助手 的利益相关者

Sicolas Flamel

产品经理 产品经理训练营 无码科技

产品经理训练营 - 第二章作业

Ryun

【Skeleton】布局

学习委员

CSS 前端 html/css 28天写作 纯CSS

面试必问:如何实现Redis分布式锁

华为云开发者社区

redis 分布式锁 redisson

作业

让我思考一会儿

面试官:你说说ReentrantLock和Synchronized区别

叫练

AQS 多线程 ReentrantLock lock 独占锁

产品训练营 - 对二次作业

Wangyunnfei

Spring 是如何解决循环依赖的?

程序员小航

Java spring 源码 循环依赖

《分布式云边缘容器服务能力要求》《分布式云运维服务能力要求》标准研讨会成功召开

浪潮云

云计算 分布式

从JAVA内存到垃圾回收,带你深入理解JVM

华为云开发者社区

Java JVM 内存 虚拟机 垃圾回收

anyRTC在音频领域的探索

anyRTC开发者

ios android 音视频 WebRTC 在线教育

Mybatis系列全解(二):Mybatis简介与环境搭建

潘潘和他的朋友们

Java 后端 mybatis mybatis源码

海量并发场景下的缓存架构设计

海量并发场景下的缓存架构设计

以太坊柏林硬分叉正式激活,主网将迎哪些更新?-InfoQ