以太坊PoW&PoS合并The Merge在即,应用层会受到哪些影响?_POW:SDT

来源:以太坊官方博客

作者:以太坊开发者、以太坊基金会社区经理TimBeiko

以太坊网络向权益证明的过渡即将到来:目前开发网络正在建立,规范也进入最终确定,社区外展准备工作已经认真开始。TheMerge旨在过渡过程中对最终用户、智能合约和dapps的运作方式产生最小的影响。也就是说,在这个过程中,有一些小的变化值得强调。在我们深入研究这些变化之前,下面有一些链接可以提供有关TheMerge整体架构的一些了解:

路线图演变?合并后客户端架构?本文的其余部分将假设读者熟悉上述内容。对于那些想要更深入挖掘的人,下面可获得TheMerge的完整规范:

执行层?共识层?引擎API?

区块结构

以太坊合并之后,网络上将不再存在工作量证明。相反,以前的PoW部分将成为信标链上创建的区块的组成部分。然后,您可以将信标链视为以太坊新的PoS共识层,取代之前的PoW共识层。信标链区块将包含ExecutionPayloads,这是当前PoW链上区块的合并后等价物。下图显示了这种关系:

对于最终用户和应用开发人员来说,这些ExecutionPayloads是与以太坊进行交互的地方。该层上的交易仍将由执行层客户端处理。幸运的是,由于执行层的稳定性,TheMerge只引入了最少的破坏性更改。

挖矿和Ommer区块字段

合并后,之前包含在PoW区块头中的几个字段不再使用,因为它们与PoS无关。为了最大限度地减少对工具和基础设施的破坏,这些字段被设置为0,或者它们的数据结构的等效项,而不是从数据结构中完全删除。你可以在EIP-3675中找到对区块字段的完整更改内容。

因为PoS不会像PoW那样自然产生ommers,所以每个叔块中的这些列表将为空,这个列表的哈希将成为RLP编码哈希的一个空列表。同样,因为PoW还包含了难度和随机数,所以此后它们将被设置为0,同时赋予它们字节大小值。

另一个与挖矿相关的字段mixHash不会设置为0,而是包含信标链的RANDAO值。下文将会对此进行更多介绍。

BLOCKHASH&DIFFICULTY操作码更改

合并后,BLOCKHASH操作码仍可使用,但考虑到它不再通过PoW哈希程序伪造,此操作码提供的伪随机性将弱得多。

相关地,DIFFICULTY操作码(0x44)将被更新并重命名为RANDOM。合并后,它将返回信标链提供的随机信标的输出。因此,与BLOCKHASH相比,尽管仍然存在偏差,此操作码将成为应用程序开发人员使用的更强大的随机源。

RANDOM公开的值将存储在ExecutionPayload中,其中存储了与PoW计算相关的值mixHash。Payload的mixHash字段也将被重命名为random。

这是DIFFICULTY&RANDOM操作码在合并前和合并后如何工作的说明:

合并前,我们看到0x44操作码返回区块头中的难度字段。合并后,重命名为RANDOM的操作码指向先前包含mixHash的区块头字段,现在存储来自信标链状态的随机值。

这一变化在EIP-4399中得到正式化,也为链上应用程序提供了一种评估合并是否发生的方法。根据这个EIP的介绍:

此外,此EIP提出的更改允许智能合约确定是否已升级到PoS。这可以通过分析DIFFICULTY操作码的返回值来完成。如果值大于2**64,则表示交易正在PoS区块中执行。

出块时间

合并将影响以太坊的平均区块时间。目前在PoW下,平均每约13秒产出一个区块,实际区块间隔时间有相当大的差异。在权益证下,区块间隔将恰好为12秒,除非由于验证者离线或因为他们没有及时提交区块而错过了某个时隙。在实践中,发生这种情况的插槽<1%。

这意味着网络上的平均出块时间减少了约1秒。在计算中假设特定平均区块时间的智能合约需要考虑到这一点。

安全头区块和最终区块

在PoW下,区块重组在一直都可能出现。应用通常会等待在新头区块上挖出几个区块,然后再将其视为该区块已不太可能从规范链中被删除,或已经得到“确认”。在合并之后,我们有了最终和安全的头部区块的概念。这些区块可以比“已确认”的PoW区块更可靠地使用,但需要改变理解才能正确使用。

最终确定的区块是指被超过2/3的验证者接受为规范的区块。要创建一个冲突区块,攻击者必须至少销毁ETH总质押数量的1/3,在撰写本文时,这意味着超过100亿美元的ETH。

安全头区块是指在正常网络条件下,我们希望包含在规范链中的区块。假设网络延迟小于4秒,大多数验证者都是诚实的,并且没有对分叉选择规则的攻击,那么safehead将永远不会成为孤儿块。此处提供了详细介绍如何在各种情况下计算safehead的演示文稿。此外,safehead的假设和保证将在即将发表的论文中得到正式定义和分析。

合并后,执行层API在要求提供最新区块时将默认返回安全头。在正常的网络条件下,safehead和链的实际顶端将是等效的。与当前的PoW最新区块相比,safehead不太可能被重组。为了公开PoW链的实际提示,将向JSONRPC添加一个unsafe标志。

最终区块也将通过JSONRPC公开,通过一个新的finalized标志。然后,这些可以作为PoW证明的更强大的替代品。下表总结了这一点:

区块类型共识机制JSONRPC发生重组的条件headPoWlatest可以预料到,必须小心使用headPoSunsafe可以预料到,必须小心使用safeheadPoSlatest可能发生,但需要大的网络延迟或对网络的攻击才能实现。confirmedPoWN/A不太可能发生,因为需要大部分算力来挖一个深度>#确认的竞争链。finalizedPoSfinalized极不可能发生,因为需要超过2/3的验证者来完成一个竞争链,需要至少1/3被削减。

下一步

我们希望这篇文章可以帮助应用程序开发人员为备受期待的PoS过渡做好准备。在接下来的几周内,有一个测试网将可供更广泛的社区进行测试。还有一个即将到来的TheMerge社区呼吁基础设施、工具和应用程序开发人员提出问题并听取有关TheMerge的最新技术更新。

--------------------------------------------------------------------------------

感谢MikhailKalinin提供“SafeHead”部分的核心内容,感谢DannyRyan和MattGarnett审阅这篇文章的草稿。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金宝趣谈

[0:15ms0-3:521ms