Dencun升级之一:EIP6780/5656

本文为Dencun升级系列的第一部分,我们将深入探讨两个特定的(执行层)升级:EIP-6780 和 EIP-5656。

Dencun升级之一:EIP6780/5656
一键发币: SOLANA | BNB | ETH | POLYGON | HECO | OKEX

这是博客系列的第一部分,详细介绍了即将在以太坊上推出的 Cancun-Deneb 硬分叉将实施的关键升级。 在这篇文章中,我们将深入探讨两个特定的(执行层)升级:EIP-6780 和 EIP-5656。

虽然每次以太坊升级(通过“硬分叉”执行)不可避免地会触及以太坊路线图中的许多通道,但它们通常会在特定方向上加权。 例如,Bellatrix 升级的主要目的是将以太坊的共识从工作量证明(PoW)过渡到权益证明(PoS),而最近的上海卡佩拉升级主要旨在使验证者能够从信标链中撤回。

随着即将到来的 Cancun-Deneb 升级,明确的重点是通过创建“数据 blob”来提高以太坊的可扩展性:一种新的交易类型,旨在扩展第 2 层 (L2) 汇总的数据可用性。 除了 blob 创建之外,还有重要的内务升级,我们将在本文中详细介绍其中两个。 在本系列的后面部分,我们将详细介绍将在结构上改变以太坊的更正式的 EIP。

然而,在此之前,让我们为如何实施以太坊硬分叉(升级)奠定基础。

1、以太坊:两层的故事

以太坊网络分为两个主要层:执行层和共识层。 在 Bellatrix 升级(通常被称为“合并”)之前,以太坊的共识层和执行层彼此独立运行(要了解有关合并及其在以太坊路线图中的位置的更多信息,请访问 Consensys 的合并信息中心)。 在我们的合并后世界中,这两层彼此平行运行:

执行层:这是以太坊处理智能合约逻辑执行的部分,也是处理交易并将其广播到网络其余部分的地方。 执行层还负责维护以太坊网络的状态并执行以太坊虚拟机(EVM)代码; 简而言之,这是所有计算工作发生的地方。 执行层硬分叉以之前举办 Devcon 的城市命名:Berlin -> London ->Shanghai -> Cancun -> Prague -> Osaka -> Bogotá。

共识层:该层负责所有节点之间对网络状态的一致。 它确保所有交易和智能合约均通过权益证明 (PoS) 进行验证并达成一致。 每个共识层升级都会被赋予一颗恒星的名称,名称根据第一个字母按字母顺序选择:Altair -> Bellatrix -> Capella -> Deneb -> Electra -> (F)unknown。

2、以太坊层的升级如何以及何时发生?

每个以太坊层都会进行单独的升级,但每个层的客户端团队都会同步每个以太坊硬分叉的时间。 因此,虽然即将到来的坎昆升级和 Deneb 升级在技术上有所不同,但它们是同时实施的。 因此,有时使用混合词“Dencun”来指代这种组合升级。

由于以太坊的去中心化性质和过多的客户团队,这些升级没有遵循严格的时间表或节奏。 尽管如此,最近的硬分叉大约每 8 到 12 个月就会发布一次。

在主网上线之前,每个硬分叉都会通过一系列测试网进行战斗测试; 同样,坎昆和 Deneb 将在以太坊主网络上激活之前先接受本地测试网的测试。 测试路线图可能遵循如下所示的流程(尽管这个时间表也不是绝对的),坎昆和 Deneb 硬分叉预计将于一月份的某个时候在以太坊主网上上线:

这篇文章将详细介绍两个坎昆特定的(执行层)升级:EIP-6780 和 EIP-5656。 对于不熟悉以太坊术语的读者来说,“EIP”指的是“以太坊改进提案”。 以太坊的每次具体升级通常都是从 EIP 开始,并在实施之前经过以太坊社区的审查/讨论。 您可以在以太坊 Cat Herders (ECH) Dencun 页面上看到考虑纳入 Cancun-Deneb 分叉的 EIP。

3、EIP-6780:仅在同一交易中自毁

EIP 6780 旨在禁用 SELFDESTRUCT(拼写为此类)操作码,同时对当前使用它的智能合约造成最小的干扰。 这一变化部分是由于即将实施的 Verkle 树,这将使 EIP 6780 之前版本的 SELFDESTRUCT 操作变得不可能。

如果合约在创建合约中引用了 SELFDESTRUCT,则该 EIP 不会产生影响——资金仍会发送到目标,代码和存储会被删除,nonce 会重置为 0。但是,在 EIP-6780 之后 实施后,如果合约在创建时的同一交易中未引用 SELFDESTRUCT,则仅发送资金,而代码、存储和随机数不受影响。 简而言之,SELFDESTRUCT 的现有用法应该不受影响,而未来对操作码的引用将被剥夺其潜在的负面功能。

4、SELFDESTRUCT简史

SELFDESTRUCT 是 EVM 中的一个旧操作码。 它旨在供主动合约创建者使用,以清理和删除以太坊状态中不需要或已弃用的代码。 然而,大多数以太坊开发者认为 SELFDESTRUCT 未能实现这一目标。 调用此操作码的许多危险和意想不到的后果导致开发人员在最好的情况下偏离它,在最坏的情况下错误地使用它。

SELFDESTRUCT 的半确定性使得开发人员难以使用,并且经常导致数据未完全删除的不完整状态。 部分原因是难以估计删除存储所需的时间,因为无论查询删除的数据量有多少,gas 成本都是相同的。

5、EIP-6780 的优点

从表面上看,这个 EIP 的好处是显而易见的,并且代表了对 EVM 操作码进行必要的内部清理,而这只有在事后才可能实现。 该 EIP 的支持者认为好处远远大于坏处,并参考了以太坊的路线图和未来 Verkle 树的使用,其中错误使用 SELFDESTRUCT 调用的负面后果可能会带来更糟糕的后果。

也就是说,弃用和破坏特定的操作码总是有可能带来意想不到的后果。 在这里,问题与无法解释成千上万的以太坊开发人员以及他们可能使用自毁结构的无数方式有关。 如果智能合约的逻辑依赖于 SELFDESTRUCT 操作码,则删除它可能会影响合约的操作并导致(可能)不安全的执行。

剥夺而不是完全删除 SELFDESTRUCT 操作码是在这些相互冲突的观点之间进行妥协的尝试。 在 EIP-6780 后的理想世界中,以太坊智能合约中几乎不会有新的 SELFDESTRUCT 实现,并且调用 SELFDESTRUCT 操作码的现有智能合约不会受到影响。 要更全面地介绍有关删除自毁的争论双方,我们鼓励阅读《删除自毁:对 EIP-4758 和 EIP-6780 的影响研究》——Dedaub 撰写的关于实施 EIP-6780 影响的综合报告。

6、EIP-5656:内存复制指令

EIP-6780 是一种被动式升级,专注于删除有害且令人遗憾的操作码,而 EIP-5656 是一种新操作码的主动实施,可提高数据在 EVM 中移动的效率。 具体来说,EIP 5656 引入了一种称为 MCOPY 的新 EVM 指令。

MCOPY 的目的是提高内存复制的性能并协助更有效地构建数据结构。 该 EIP 严格来说是对 EVM 的效率改进,并且没有任何权衡或不兼容性,因为当前没有 MCOPY 的功能参考。

从广义上讲,内存复制是指将数据块从内存中的一个位置移动到另一个位置的过程。 这是计算中的基本操作,用于构建数据结构和复制对象等任务。 MCOPY 指令可用于存储器的非重叠区域、重叠区域,并且可用于向后移动存储器。

关于效率提升的背景:在 EIP-5656 下使用 MCOPY 复制 256 字节内存将花费 27 个 Gas,而使用最常见的先前方法至少需要 96 个 Gas,该方法需要多个指令。 目前,如果开发人员需要复制内存,他们最好的选择是引用 MSTORE 和 MLOAD。 MCOPY 的引入本质上是这两个操作码的组合。

展望未来,预计大多数开发人员将使用 MCOPY 代替 MSTORE/MLOAD 是合理的。 然而,值得注意的是,没有开发人员会被迫使用 MCOPY,就像对 MSTORE 或 MLOAD 的现有引用不会受到影响一样。 还值得注意的是,更高效的 Gas 合约最终会让最终用户受益,因为他们是调用合约并花费 Gas 来执行此操作的人。


原文链接:Ethereum Evolved: Dencun Upgrade Part 1, EIP-5656 & EIP-6780

DefiPlot翻译整理,转载请标明出处