以太坊网络向权益证明的过渡(TheMerge)即将到来:目前开发网络正在建立,规范也进入最终确定,社区外展准备工作已经认真开始。TheMerge旨在过渡过程中对最终用户、智能合约和dapps的运作方式产生最小的影响。也就是说,在这个过程中,有一些小的变化值得强调。在我们深入研究这些变化之前,下面有一些链接可以提供有关TheMerge整体架构的一些了解:
- [路线图演变](链接) - [合并后客户端架构](链接)
本文的其余部分将假设读者熟悉上述内容。对于那些想要更深入挖掘的人,下面可获得TheMerge的完整规范:
- [执行层](链接) - [共识层](链接) - [引擎API](链接)
对于最终用户和应用开发人员来说,这些ExecutionPayloads是与以太坊进行交互的地方。该层上的交易仍将由执行层客户端(Besu、Erigon、Geth、Nethermind等)处理。幸运的是,由于执行层的稳定性,TheMerge只引入了最少的破坏性更改。
因为PoS不会像PoW那样自然产生ommers(又名叔块),所以每个叔块(ommers)中的这些列表将为空,这个列表的哈希(ommersHash)将成为RLP编码哈希的一个空列表。同样,因为PoW还包含了难度和随机数,所以此后它们将被设置为0,同时赋予它们字节大小值。
另一个与挖矿相关的字段mixHash不会设置为0,而是包含信标链的RANDAO值。下文将会对此进行更多介绍。
相关地,DIFICULTY操作码(0x44)将被更新并重命名为RANDOM。合并后,它将返回信标链提供的随机信标的输出。因此,与BLOCKHASH相比,尽管仍然存在偏差,此操作码将成为应用程序开发人员使用的更强大的随机源。
RANDOM公开的值将存储在ExecutionPayload中,其中存储了与PoW计算相关的值mixHash。Payload的mixHash字段也将被重命名为random。
这是DIFICULTY&RANDOM操作码在合并前和合并后如何工作的说明:
合并前,我们看到0x44操作码返回区块头中的难度字段。合并后,重命名为RANDOM的操作码指向先前包含mixHash的区块头字段,现在存储来自信标链状态的随机值。
这一变化在EIP-4399中得到正式化,也为链上应用程序提供了一种评估合并是否发生的方法。根据这个EIP的介绍:
此外,此EIP提出的更改允许智能合约确定是否已升级到PoS。这可以通过分析DIFICULTY操作码的返回值来完成。如果值大于2^64,则表示交易正在PoS区块中执行。