以太坊从POW过渡到POS,难度堪称是在正在飞行中的飞机上更换引擎。好在经过漫长的等待,即将迎来本次合并。那么,本次合并什么时候发生,发生后执行层和共识层会发送什么改变?
为了以太坊2.0升级做准备,今年1月底时,以太坊基金会宣布”以太坊 1.0”(ETH1)和“以太坊 2.0”(ETH2)一词将被淘汰,取而代之的是“执行层”和“共识层”,执行层+共识层=新的以太坊。
而目前合并的开发工作已基本完成,正处于公开测试阶段,预计到22年第二季度完成合并。本次合并,将是以太坊有史以来最大的一次升级,如何保障以太坊这个去中心化的网络在不停服的前提下,六千多个节点顺利升级,并且升级后不影响已有合约、资产的使用。
为了本次升级,以太坊核心开发者和整个社区准备已久,所有的以太坊用户也都拭目以待。那么,本次合并什么时候发生,发生后执行层和共识层会发送什么改变?
信标链通过监测当前以太坊的出块难度total difficulty, 一旦出块难度大于等于某一个临界值(TERMINAL_TOTAL_DIFFICULTY),该区块将会是最后一个POW块,之后的区块将由信标链构建。
目前各项工作已准备就绪,预计在第二季度进行合并,更准确的是在6月份之前。当然,也不排除由于一些意外情况导致的推迟,如公测期间发现一个漏洞,修复完成的时间就不确定了。
之所以是6月份,是因为在21年12月的Arrow Glacier(箭形冰川升级)中,通过了EIP-4345,将难度炸弹推迟到了22年6月,也就是说,如果在6月份,合并还没完成,那么难度炸弹会将再次推迟,希望这种情况不会发生。
合并后执行层+共识层等于新的以太坊,其中:
合并后的架构如下图所示。
从图中可以看出:
合并后的执行层会将POW共识相关的部分删除,状态管理、区块构建和验证会有修改,其他的如EVM等功能保持不变。
在区块中,与POW相关的字段会被设置为0,如下表所示。
另外,extraData字段长度会被限制为32字节。
相应的,对区块的有效性校验,会有如下更改:
由于共识从POW切换为POS,将取消叔块的奖励,而执行层会继续处理交易的手续费,手续费将会支付给ExecutionPayload(执行数据)中的feeReceipient(费用接收者)。
合并后,执行层将不会在进行区块广播,具体到客户端上,就是取消NewBlockHashes (0x01)
和 NewBlock (0x07)
的处理逻辑。同时,执行层仍然会同步网络状态,广播交易和维护交易池。
Engine API是执行层不同于JSON RPC API的,一个独立端口的API模块。
Engine API引入了三个接口:
1、engine_newPalyload
engine_newPalyload,引擎执行数据,该接口的主要作用是要求执行层验证ExecutionPayload(执行数据)是否符合要求,执行层响应的状态包括:
2、engine_forkchoiceUpdated
engine_forkchoiceUpdated,引擎分叉选择更新,其功能主要是共识层让执行层生成一个新的区块ExecutionPayload。
3、engine_getPayload
engine_getPayload,引擎获取数据,共识层通过请求engine_getPayload接口,获取执行层中的ExecutionPayload数据。
ExecutionPayload数据结构如下图所示。
信标链在2020年12月1日就已经上线,由于还没有合并,因此目前的信标链是对空快达成共识的。信标链浏览器:https://beaconscan.com/
合并后,信标链负责对区块达成共识,合并后的区块如下图所示。
当共识层需要打包一个新的区块时:
合并后,信标链开始打包区块,如下图所示。
《AllCoreDevs Update 007》https://tim.mirror.xyz/sR23jU02we6zXRgsF_oTUkttL83S3vyn05vJWnnp-Lc
《eip-3675》https://eips.ethereum.org/EIPS/eip-3675
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!