详解 Optimism Bedrock 系列 2 - 主要变化

本文是 Optimism Bedrock Wrap-Up 系列的第二篇,介绍了 Bedrock 升级的关键变化,包括区块创建、Mempool的变化、EIP-1559的引入、L1 Attributes Deposited Transaction、区块推导、以及两阶段提款流程。Optimism 利用以太坊作为数据可用性层,旨在提升以太坊用户及开发者的体验。

Bedrock 升级的关键变化

(01.17.24) 更新了关于 EIP 1559 燃烧如何在 Optimism 上工作的不正确信息)

Onther 旨在为当前对 Optimism 和 Ethereum 生态系统的发展感兴趣的开发人员提供有价值的信息。

图。Optimism Bedrock 插图 (来源: OpLabs)

这篇文章是“Optimism Bedrock 总结系列”的第二篇,该系列由 Onther 计划撰写的五篇文章组成,涵盖了 Bedrock 升级后的主要变化。

考虑到该系列的互联性,我们建议按顺序阅读这些文章,以便获得连贯的理解。

详解 Optimism Bedrock 系列 1. Bedrock 升级概述:它提供了 Bedrock 升级、其组件以及在其层中部署的智能合约的概述。 Optimism Bedrock 总结系列 1

详解 Optimism Bedrock 系列 2. Bedrock 升级以来的主要变化: 在本节中,我们的目标是阐明 Bedrock 升级引入的重大变化,为全面理解奠定基础,从而顺利阅读本系列接下来的部分。

Optimism Bedrock Wrap-Up Series 2 Bedrock 升级的主要变化

详解 Optimism Bedrock 系列 3. 存款/取款流程分析: 我们将对存款/取款流程进行逐步分析,揭示其各层中的核心代码逻辑。

Optimism Bedrock Wrap Up Series 3 存款/取款流程

详解 Optimism Bedrock 系列4. 区块推导: 一旦在 Layer 2(Optimism 主网)上生成区块,系统就会启动一个过程,将这些区块 Roll-up 到 Layer 1。随后,在区块推导阶段,仅使用已 Roll-up 的数据重建 L2 区块。我们将提供详细的步骤指导,并在此过程中进行代码检查。

Optimism Bedrock Wrap-Up Series 4 分析区块推导流程

详解 Optimism Bedrock 系列 5. Optimism Bedrock 组件的角色和行为: 作为本系列的最后一部分,我们将全面检查 Op-Batcher 和 Op-Proposer 的角色和操作逻辑。

Optimism Bedrock Wrap-Up Series 5 Optimism Bedrock 的基本组件的角色和行为

主要变化:Legacy → Bedrock 升级

值得注意的是,Optimism 通过利用 Ethereum 作为数据可用性层来优化其功能,从而为 Ethereum 用户和开发人员带来丰富的体验。特别是通过利用 Ethereum 作为数据可用性层,Optimism 旨在增强 Ethereum 用户和开发人员的体验。

Bedrock 升级是 Optimism 生态系统中 L1 和 L2 网络的关键增强,显着提高了可扩展性和性能。预计这将促进金融、游戏、DeFi、NFT 等各个领域的创新和进步,这得益于该平台改进的性能。

在本系列中,我们旨在简要概述 Bedrock 升级后的主要变化。

区块创建

图。L2 区块的生成路径

在上图中,使用一个简单的示例简要总结了源自 L1 的 L2 交易的传输路径。在 L1 中,区块以 12 秒的间隔生成,在此期间 L1 中累积的 30 笔交易被转发到 L2 并存储在 Mempool 中。随后,L2 中的 Sequencer 根据其优先级和区块大小重新排列交易。重新排列过程涉及预先设置“待处理交易”,以方便每 2 秒生成一个区块。(关于重新排列的优先级顺序的更多细节在 Mempool 部分进行了广泛讨论。)

在比较 Ethereum 和 Optimism 的区块生成过程时,最显着的差异在于 Mempool 和 Sequencer 的去中心化。

Ethereum:在由去中心化节点组成的网络中生成区块。

  1. 当用户发起各种交易(如执行智能合约或转移资产)时,这些交易将存储在 Ethereum 网络的 Mempool 中并进入队列。
  2. 所有在网络上质押 ETH 的验证者都会验证 Mempool 中的交易并确认其有效性(例如,交易格式、签名等)
  3. 在验证者的质押池中,随机选择一个区块提议者,选定的提议者获得创建下一个区块的权限。新区块将在整个 Ethereum 网络中广播,其他节点接收该区块并将其添加到其区块链中。

Optimism:协议中集中运营的 Sequencer 生成区块。

  1. 当中心化的 Sequencer 通过 Mempool 接收用户交易时,它会对这些交易进行验证过程,根据交易结果提供即时批准或拒绝。
  2. 验证后,交易在本地状态中被定义并注册为待处理交易。在这里,待处理交易是指在 L2 中的执行引擎处理之前的等待处理的状态,然后才能执行实际交易。
  3. 然后,执行引擎处理最新的待处理交易,更新 L2 链的状态。

Mempool

图。OP Mainnet 上的优先级费用和基础费用 (来源: optimistic.grafana.net)

在 Legacy 版本中,每笔交易都与一个区块有直接的 1:1 对应关系,从而导致对新创建的交易的顺序处理。但是,在 Bedrock 版本中,支持 EIP-1559,需要一个“Mempool”来存储在以固定时间间隔生成区块的过程中的待处理交易。

当交易存储在 mempool 中时,它不仅仅是被动存储;它会显着影响区块处理的顺序。

  • 你可以通过指定更高的优先级费用来提高交易在下一个 L2 区块中被处理的可能性。
  • 优先级费用是一种根据实时网络使用情况测量的费用,允许网络用户在慢速、中速和快速费用之间进行选择,或者支付任何所需的优先级费用金额。Mempool 可以动态计算网络使用情况,并为优先级费用设置更高或更低的估计值(慢速、中速或快速)。通过调整此估计值,它可以对网络的拥塞施加一些控制。
  • 如果优先级费用太低,交易可能会持续存在于 mempool 中。在这种情况下,用户可以重新提交具有相同 nonce 的交易以取消它,或者使用不同的 nonce 重新提交具有更高优先级费用的交易。

(Optimism 的 Mempool 是私有的,确保交易在正式包含在 L2 区块中之前保持机密。)

EIP-1559

图。标题为“Ethereum 会因为 EIP-1559 而通货紧缩吗?”的插图,(来源: moralismoney)

Optimism 已通过 Bedrock 升级更新了其网络以支持 EIP-1559。EIP-1559 通过动态计算和可预测地管理实时生成的区块中所有交易的费用和流量,增强了 Ethereum 和 Optimism 的基本费用机制。

在 EIP-1559 下,gas 单位成本包括两个要素(如 Mempool 解释中所详述)。

图。取决于 Tx 大小的区块大小变化

在 EIP-1559 下,区块大小在更新前最大区块大小的两倍范围内动态调整。如果由于交易请求导致需求增加,则区块大小(容量)也会增加,反之,随着需求减少,区块大小也会减少。

基础费用: 基础费用同样在 ±12.5% 的范围内测量,具体取决于区块大小的变化。如果发生的交易多于系统的目标区块大小,则基础费用会上涨以抑制需求。相反,如果交易需求低于目标区块大小,则基础费用会降低以鼓励交易发生。与传统上仅根据网络的 TPS(每秒交易数)调整费用的方法相比,这种机制能够预测区块大小的变化,从而有效地抑制了费用的突然波动。

优先级费用: 用户可以通过支付优先级费用(最高可达到他们愿意支付的最大金额)来提高其交易优先级。Sequencer 将首先采用最高优先级费用来处理交易。

此外,EIP-1559 标志着用户费用管理方式的重大转变,将它们从矿工那里转移开,而是选择燃烧它们。此调整解决了在供应量不断增长的情况下 ETH 价值下降的问题。通过燃烧费用,该协议旨在抵消供应增加,从而促进这样一种情况:如果燃烧的 ETH 多于挖矿的 ETH,则会产生通货紧缩影响,从而导致 ETH 价值上涨。因此,网络越活跃,燃烧的 ETH 数量就越大。

H̶o̶w̶e̶v̶e̶r̶,̶ ̶a̶s̶ ̶O̶p̶t̶i̶m̶i̶s̶m̶ ̶d̶o̶e̶s̶ ̶n̶o̶t̶ ̶i̶n̶c̶l̶u̶d̶e̶ ̶a̶ ̶b̶u̶r̶n̶i̶n̶g̶ ̶m̶e̶c̶h̶a̶n̶i̶s̶m̶,̶ ̶t̶h̶e̶ ̶b̶u̶r̶n̶i̶n̶g̶ ̶p̶r̶o̶c̶e̶s̶s̶ ̶i̶s̶ ̶r̶e̶p̶l̶a̶c̶e̶d̶ ̶b̶y̶ ̶p̶e̶r̶m̶a̶n̶e̶n̶t̶l̶y̶ ̶l̶o̶c̶k̶i̶n̶g̶ ̶f̶e̶e̶s̶ ̶i̶n̶ ̶t̶h̶e̶ ̶b̶r̶i̶d̶g̶e̶.̶ ➠在 Optimism 的上下文中,基础费用不会被燃烧;而是存储在 baseFeeVault 合约中。此机制有助于提取到 Layer 1,每次累积金额达到 _minWithdrawalAmount 阈值时都会激活。指定的接收者在合约中指定——目前设置为 simpleWallet,它被构建为多重签名钱包。因此,此过程导致 ETH 从 Optimism 链转移到 Ethereum 链,这与传统的燃烧做法不同(已于 01.17.24 修正)_。

EIP-1559 更新的 opcode 和 API 列在下面。

Opcodes

  • BASEFEE:返回当前区块的基础费用。

API

  • eth_maxPriorityFeePerGas: 返回每 gas 的“优先级费用”,以将交易包含在当前的 Ethereum 区块中。
  • eth_feeHistory: 返回先前区块的 gas 费用信息,以在设置优先级费用时进行参考。

(如果你想阅读更多关于 EIP-1559 的信息,你可以访问这个 链接)。

L1 属性 Deposit Transaction

Optimism 为在 L2 中生成的所有区块实施了一个名为“L1 属性 Deposit Transaction”的系统交易的新概念。

图。包含 8 笔交易的第 109,880,905 个区块 (来源: optimistic.etherscan.io)

在 optimistic.etherscan.io 捕获的图像中,我们观察到第 109,880,905 个区块中有 8 笔交易。值得注意的是,底部的交易对应于 L1 属性 Deposit Transaction 。更仔细地检查此交易的“输入数据”显示,它封装了全面的区块信息,包括诸如 L1BlockNumber timestamp basefee hash 等详细信息。

L1 属性 Deposit Transaction 的主要功能是将每个 L1 区块的最新信息传递到 op-geth,从而有助于更新 L2 帐户的状态。最初,“Deposit Transaction”一词可能暗示涉及 ETH 或 ERC-20 代币存款的交易。但是,在 Bedrock 中,它包含由 L1 触发的所有 L2 交易和事件,统称为“Deposit Transaction”。虽然大多数 Deposit Transaction 涉及像 ETH 或 ERC-20 代币这样的资产的存款,但重要的是要注意,它们还可以封装对部署在 L2 上的合约的调用,而无需转移资产。

最终,L 1 属性 Deposit Transaction 确保 Sequencer 可以附加关于 L1 区块的准确信息,从而提供可靠的参考。通过在每个交易中直接包含 L1 区块信息,部署在 L2 上的合约可以直接接收最新的 L1 区块数据,而无需跨链调用。

区块推导

图。区块推导过程摘要

Rollup 节点在监视 L2 链的进度和状态方面起着至关重要的作用。当 Sequencer 创建一个 L2 区块,并且 Batch Submitter 将 L2 区块的数据提交到 L1 (BatchInbox) 时,Verifier 应该能够使用提交的数据重建 L2 链。这种基于提交到 L1 的数据重建 L2 链的过程称为“区块推导”。

在 Bedrock 的上下文中,区块分为三种类型: 不安全安全最终。要理解这些区别,必须掌握两个基本概念。第一个是前面提到的“区块推导”,第二个是 Ethereum mainnet 链中的“最终性”概念。

  • Ethereum 中的最终性标志着验证和不可逆地确认交易的关键步骤,方法是在处理后通过以有规律的区块间隔处的检查点对其进行验证。缺乏最终性表明该交易尚未完全确认,因为可能会发生重组(区块链的重组)。相反,一旦交易完成,它将被不可逆地确认,并且不会发生重组,这表示区块链上的完全验证和信任。
  • 如果 L1 上发生重组,则 OP 链中已在 L2 中处理的区块顺序可能会更改,或者可能会缺少某些交易。尚未达到最终性的区块可能会受到重组的影响,从而也会影响 L2。这就是为什么 Optimism 也为 L2 重组做好了准备,作为对 L1 重组的备份。

如果发生 L1 重组,L2 会重新组织自身以与 L1 对齐。因此,Optimism 网络需要重新创建先前提交的批次或输出根。为了解决这个问题,区块被分为三种类型,并具有用于网络运行的特定标准:

  1. 不安全:这表示该区块已在 L2 中生成,但尚未在 Ethereum 中完成,并且 Block Derivation 尚未在 RollupNode 上发生。该区块要么是最近创建的并且尚未进行汇总,要么是已经过汇总而没有通过 Block Derivation。因此,在发生 L1 重组的情况下,可以重新排列 不安全 区块。
  2. 安全:区块批次已提交到 L1,并且已发生区块推导,但该区块尚未由 L1 最终确定,因此与 不安全 区块相比,不太可能被重组,但仍然有可能。
  3. 最终:该区块被认为是最终的,这意味着它已经达到了足够的深度。这意味着区块推导已经完成,并且该区块已在 L1 Ethereum 链上最终确定。因此,无法重新组织最终确定的区块。

两阶段提款

“Bedrock 升级将为 Optimism 主网桥引入一种新的两步提款流程,这将提高其安全性并使漏洞利用更加困难。”

- Optimism Labs -

在 Bedrock 中,当资金从 Optimism 转移到 L1 时,将启动 L2 上的取款流程,并且现在通过两个不同的步骤确认取款:‘proveWithdrawalTransaction’ 和 ‘finalizeWithdrawalTransaction.’

  • 在早期版本中,撤回过程是一个单步操作,在 7 天的挑战期后同时发生“prove”和“finalize”步骤。但是,这种方法存在一个漏洞,攻击者可以操纵“Merkle Proof”并利用取款过程错误来窃取用户的资产,而无需监视 Merkle Proof。
  • 为了解决这个问题,Bedrock 中升级的“proof”阶段首先将取款消息及其相应的证明一起存储在 Merkle Patricia 树中。通过主动发布证据,链上监视工具可以获得足够的时间来识别欺诈性取款证据并启动必要的纠正措施。

图。两步取款:步骤 1

要启动取款过程,用户需要在包含取款交易的 L2 区块的输出附加到 L1 中的 L2OutputOracle 后立即提供证据。

撤回过程如下:

  1. 用户从 L2 启动取款消息。
  2. 用户等待链上状态输出,此过程可能需要长达 1 小时。
  3. 随后,用户通过调用 OptimismPortal 上的 proveWithdrawalTransaction 函数来积极参与发布和验证其证明。

图。两步取款:步骤 2

  1. 在 7 天的挑战期内,向用户提出了对撤回证明的质疑。如果该证明在此期间结束时没有受到质疑,则该证明被视为有效的取款,允许用户继续进行取款。

  2. 用户确认挑战期已过,并调用 OptimismPortal 中的 finalizeWithdrawal 函数以提取其资产。

(对取款的详细代码级分析将在本系列的第三部分中介绍)。

总结

总而言之,以下是 Bedrock 升级引入的重大转变的简要概述。此次升级不仅带来了实质性的变化,而且也给 Optimism 生态系统注入了一种热情。

在本系列的下一部分中,我将深入分析代码级别的存款和取款过程。

参考:

Introducing op-erigon: how the Bedrock upgrade unlocks client diversity

Grafana

OP Mainnet Block #109880905

**Welcome to the Optimism Docs

EIP-2718: Typed Transaction Envelope

EIP-1559: Fee market change for ETH 1.0 chain

WalletSimple Address 0xa3d596EAfaB6B13Ab18D40FaE1A962700C84ADEa

Increasing Confidence in the OP Mainnet Bridge with Two-Step Withdrawals

Withdrawal Flow

What is EIP-1559 and Will Ethereum Go Deflationary With It? - Moralis Academy*

  • 原文链接: medium.com/tokamak-netwo...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
aaronlee94
aaronlee94
江湖只有他的大名,没有他的介绍。