OP-Stack:构建区块链的最简单框架

  • xpara_
  • 发布于 2023-10-28 12:35
  • 阅读 31

本文介绍了使用OP-Stack构建区块链的优势,包括定制化、可扩展性和资源效率。OP-Stack由节点和定序器组件构成,并有多个项目基于此构建。虽然有诸多优势,但也存在诸如故障证明系统、中心化和缺乏核心创新等局限性。OP-Stack简化了rollup的创建,为生态系统的增长和定制rollup领域的创新奠定了基础。

关键要点

  • 启动你自己的区块链或 Rollup 具有明显的优势,如可定制性和可扩展性,并且在各种选项中,OP-Stack 是最易于部署的软件。
  • OP-Stack 由 4 个节点组件和一些智能合约组成,并且有各种项目正在围绕 OP-Stack 构建。
  • 然而,OP-Stack 也有局限性:容错系统、中心化以及缺乏核心创新。
  • OP-Stack 使得创建个人 Rollup 更加简单,为生态系统的增长和定制 Rollup 领域的创新奠定了基础。

1. 使用 OP-Stack 启动区块链

随着去中心化应用程序 (dApps) 的持续增长,以及越来越多的传统企业参与区块链,一个明显的趋势正在显现。对于许多原因,人们对构建自己的区块链或 Rollup 产生了浓厚的兴趣。

启动自己的区块链可以提供一些显着的优势。关于为什么要使用 OP-Stack 开展这样的项目,可以通过考察以下关键优势来解答:

1.1 可定制性

在定制性方面,创建你自己的 Rollup 或区块链打开了一个充满可能性的世界。可以根据特定需求定制各个方面,从而提供多重好处。无论你关注的是治理模型、交易费用还是智能合约的功能,你都可以更改这些元素以适应你的特定需求。OP-Stack 设计中固有的模块化鼓励了定制化。这种结构经过精心设计以实现适应性,从而允许执行客户端等组件的多样化。这意味着你可以定制这些元素以适应你项目的独特需求,从而提供控制和灵活性。

1.2 可扩展性

Rollup 和区块链从根本上旨在解决可扩展性问题。当你承担启动自己的解决方案的任务时,你可以仅将资源用于你的用例,从而实现高交易吞吐量和更低的成本。这使得可扩展性水平通常超过现有平台所提供的水平。例如,考虑通过优化你自己的区块链来最大化交易速度的潜力。这将实现比当前在更拥挤的平台上可实现的更快、更高效的操作。

1.3 资源高效

OP-Stack 具有利用数据可用性层安全功能的能力,并且可以使用单个排序器进行操作。虽然 Cosmos 或 Polkadot 提供的专业 SDK 提供了各种好处,例如互操作性解决方案和多样化的核心功能定制,但它们带来了运营独立的验证器或需要包含以利用共享安全属性的高成本。此外,它们的开发工具不如以太坊生态系统中的那样丰富。相反,OP-Stack 可以利用以太坊生态系统中可用的工具,并可以利用底层数据可用性层(例如以太坊)的安全功能。

2. 关于 OP-Stack

OP-Stack 是一种开源的、模块化的方法,专为构建 Optimistic Rollup 而设计。2023 年 6 月 6 日的 Bedrock 升级是 OP-Stack 的首次主网发布。随着 Optimism 网络经历了重大的 Bedrock 升级,它降低了交易费用,提高了安全性,并提供了更多的可定制性。改进的主要细节如下。

此次升级导致 Optimism 主网上的协议成本降低了 47%。通过优化批量压缩和利用以太坊进行数据可用性,交易费用得以降低。其中,状态链承诺占 99%,批量提交成本占 20%。未来,OP-Stack 的目标是推动 Optimism 发展成为一个互连区块链的“超级链”,使基于 OP-Stack 的链能够通过共享基础设施互连。

3. 架构

3.1 组件

OP-Stack 解决方案包含 四个基本组件:节点(op-gethop-node)和排序器特定组件(op-batcherop-proposer)。每个组件在启用 Rollup 过程中都扮演着独特的角色。

节点:

  • op-geth 位于关键交易处理的交汇点,将用户交易传递到执行层,从而确保准确高效的网络交易。此外,op-geth 根据交易调整状态,将交易应用于先前的状态以创建新状态。它管理交易过程中状态的存储和修改,从而准确反映所有状态变化。
  • op-node 组件对于通过标准以太坊引擎 API 将来自数据可用性层的原始数据转换为执行层的已处理输入至关重要。它从以太坊区块数据、排序器交易批次和已存入的交易事件中获取输入,当前系统状态指导其对原始输入数据的解析。此机制确保高效而精确的数据处理。功能包括提交 L2 存款和取款交易到 L1、重试失败的交易、更新 L2 交易状态以及根据最近的 Tips 计算 L1 Gas 价格。

排序器特定:

  • op-batcher 主要处理将交易写入 L1 网络(以太坊),压缩交易以优化网络效率并简化数据传输和存储。
  • 最后,op-proposer 在最终确定状态转换方面至关重要。在 op-geth 修改状态后,op-proposer 将对交易后状态的承诺写入 L1,从而记录更新后的状态。它提出了更新状态的新 Merkle 根,利用 Merkle 根来最小化写入 L1 的数据,从而降低交易成本。这些状态根提议发布到 L1 网络上的 L2OutputOracle。这些输出提议必须经过 7 天的容错挑战期才能获得授权,从而促进潜在的争议和挑战,从而提高网络可靠性和问责制。

3.2 合约

需要部署多个合约才能运行 OP-Stack Rollup。以下是一些主要合约

3.2.1 部署在 L1 上的 OptimismPortal

OptimismPortal 是一种促进 L1 和 L2 之间通信的合约。它是 Optimism 系统中跨链消息传递的主要网关。

该合约启用了几个关键功能。首先,它允许存入计划在 L2 上执行的 L1 交易。其次,它有助于验证 L2 取款并从 L1 取款。第三,它具有暂停跨链消息传递的内置功能,该功能由 Guardian(一个可以暂停存款和取款的地址)管理。最后,它会跟踪已确认的取款和 l2Sender,从而方便最终确定取款。

此外,L2OutputOracleSystemConfig 合约似乎在此系统中具有特定角色。L2OutputOracle 协助验证 L2 状态,而 SystemConfig 合约大概有助于设置系统参数。

3.2.2 部署在 L1 上的 L2OutputOracle

L2OutputOracle 是一个合约,它保存了由 op-proposer 提交的 L2 的结果状态根。此合约允许其他 L1 合约验证有关 L2 状态的信息。

此合约促进了几个关键功能。它允许提议者以特定的提交间隔提交新的 L2 输出。此外,它还允许挑战者删除任何无效的 L2 输出。此外,它还允许其他合约通过审查 L2 输出来验证有关 L2 状态的信息。最后,它还可以根据 L2 区块时间计算 L2 的时间戳和区块号。

本质上,L2OutputOracle 合约充当 L1 合约 L2 链状态的可靠信息来源。通过存储对 L2 状态的承诺,它方便了信息的跨链验证。

3.2.3 部署在 L2 上的 L1Block

L1Block 是一种合约,用于保留有关最近已知的 L1 区块的信息。

此合约可能是 L2 合约最新 L1 区块的权威信息来源。通过在 L2 上存档此数据,L2 合约可以访问有关 L1 的详细信息,而无需进行跨链调用。存储的信息可以以多种方式使用:

  • 它支持计算 L2 交易的 L1 Gas 价格。
  • 它有助于验证排序器提交的 L1 区块数据。
  • 它允许 L2 合约验证特定的 L1 交易是否已成功挖掘。

排序器大概管理存款人地址,每次新的 L1 区块达到其最终状态时,该地址都会刷新合约的值。

更多合约可以在此链接中找到。

3.3 演练

3.3.1 交易

交易 需要记录在 L1 (Ethereum) 上。通常,op-batcher 处理 L2 交易的这个过程,但任何用户都可以选择发送 L1 交易来提交 L2 交易,从而绕过 op-batcher

然后,要修改状态,需要由 op-geth 执行交易。随后,op-proposer 生成对交易后状态的承诺并将其写入 L1。值得注意的是,op-proposer 不需要在每次状态转换后都创建承诺。

L2 交易的过程涉及几个关键步骤:

  1. 将交易发布到 L1

首先,交易被写入 L1。这包括两个子步骤:压缩和发布到 L1。在压缩期间,op-batcher 将排序器批次划分为通道,以最大化压缩率。通道一旦填满或超时,就会被压缩和转录。

压缩后,交易将发布到 L1。当通道饱和时,它会作为单个或多个交易发送到 L1,具体取决于数据大小。L2 交易可以占用三种状态:不安全(已处理但尚未写入 L1)、安全(已处理并写入 L1,但可能会由于 L1 重组而被丢弃)和已最终确定(已写入 L1 的足够成熟的区块)。一旦交易达到“已最终确定”状态,它便是不可撤销的。

2. 执行

状态处理阶段涉及两个主要步骤:将交易应用于现有状态以产生新状态,以及提出代表该状态的新 Merkle 根。这由两个组件负责执行:op-gethop-proposer

在初始阶段,op-geth 将交易应用于当前状态。此操作会导致状态发生更改,因为已应用了交易。op-geth 是以太坊 geth 的最小修改版本。

3. 提出状态根

在后续步骤中,op-proposer 介入并提出状态的新 Merkle 根,并将该根存储在 L1 中的 L2OutputOracle 合约中。与其直接将整个状态转录到 L1,这会由于其庞大的尺寸而导致资源密集,不如使用 Merkle 根作为紧凑的表示形式。此根封装了有关状态更改的关键信息,并能够进行有效的验证。

3.2.2 区块生产

在 Bedrock 升级之前,为每个交易生成一个区块。但是,升级后,每 2 秒生成一个区块,其中包含在此期间的交易和已更改的状态根。此外,每个区块都有一个系统交易,称为 L1 属性存款交易,该交易封装了 L1 区块的最新信息。然后,op-geth 接收交易并将其应用于先前的状态。

L1 属性存款交易具有两个关键作用。首先,它为 L2 合约配备了有关最新 L1 区块的最新更新,从而无需单独的跨链调用。其次,它使 L2 合约能够验证有关排序器提供的 L1 区块信息的正确性。

L1 属性存款交易具有一组独特的功能。Rollup 节点在区块派生期间从 L1 区块生成它。此交易包含有价值的信息,包括 L1 区块号、时间戳、基本费用、哈希和其他相关详细信息。它们源自 L1 属性存款人帐户,并且不携带任何 ETH 值或与 L2 Gas 池交互。无论其有效性如何,它们始终包含在区块中,以确保无缝的区块构建。L1 属性预部署合约 存储并使此信息可访问。

L1 属性存款交易的标准工作流程如下:

  • op-node 在 L2 区块中创建一个包含最新 L1 区块详细信息的 L1 属性存款交易。
  • 此交易在 L2 上执行,然后启动 L1 属性预部署合约。
  • 预部署合约保存 L1 区块数据并触发事件。
  • 其他 L2 合约现在可以与预部署合约交互以获取最新的 L1 区块信息。

总之,L1 属性存款交易充当 L2 合约 L1 区块的可信参考。通过将此信息直接嵌入到 L2 区块中,L2 合约可以轻松访问最新的 L1 数据,从而无需跨链调用。

4. 相关项目

4.1 OP-Stack 链

随着 OP-Stack 的推出,多个项目一直在使用 OP-Stack 代码库构建 Rollup。Coinbase 的 Base、BNB 上的 opBNBZORA 链 就是一个例子,目前处于测试网阶段。这可能会带来更多的工具和实验。以下是一些示例案例。

4.1.1 OP-Clave

(来源: Opclave | ETHGlobal)

以太坊支持椭圆曲线 secp256k1 上的椭圆曲线数字签名算法 (ECDSA)。但是,这要求通过新部署的智能合约处理其他椭圆曲线的验证,因此导致了大量的验证成本。考虑到不同的椭圆曲线可以提供的广泛潜在应用和优势,这是一个固有的挑战。

为了解决这个问题,推出了 OP-Clave。它是一种自定义 Rollup,它结合了“secp256r1 验证器”作为预编译合约,符合 Optimism 的 Bedrock 版本的标准。这种集成为应用 Face-ID 和 Touch-ID 验证交易创造了条件。OP-Clave 的独特方法优化了效率和经济性,同时确保了安全可靠的交易。

4.1.2 Celestia OP-Stack

(来源: Celestia)

Celestia 发布了一个 演示代码库,允许使用 Celestia 作为数据可用性层来运行基于 OP-Stack 的 Rollup。鉴于 OP-Stack 的大部分运营费用来自在以太坊上存储交易,此实现允许 Rollup 在 Celestia 上存储交易数据,而只有对交易数据的参考链接存储在以太坊上。因此,这导致了运营成本的降低。

4.1.3 支持 OP-Stack 的 RaaS

Rollup 即服务 (RaaS) 是一个新兴领域,它提供部署和管理 Rollup 的工具。ConduitCaldera 等公司是支持 OP-Stack 的解决方案。他们的服务有助于简化 Rollup 的管理和部署,从而支持 OP-Stack 应用程序的增长和开发。Zora 最近宣布 其自身的 Rollup 链也是使用 Conduit 构建的。

4.2 基础设施工具

OP-Stack 的一个显着优势是它能够利用以太坊生态系统中使用的工具。这允许使用各种以太坊工具。

(来源: DappCamp)

4.2.1 op-erigon

由 Test in Prod 开发,op-erigonop-geth 的替代执行客户端,它被建模为 erigon 实现的一个变体。目前,只有 op-geth 是生产中使用的唯一执行客户端。但是,作为第二个替代执行客户端,它已 部署到主网,预计将提高执行客户端的多样性。

4.2.2 Magi

由 a16z 开发,Magiop-node 的替代 Rollup 客户端,旨在增强 Rollup 内的客户端多样性。Magi 用 Rust 编写,与 Geth 和 Besu 等执行客户端兼容。虽然它与 op-node 共享相同的功能,但预计经过几个月的额外开发后,它将成为它的可行替代方案。

5. 局限性

5.1 容错证明的局限性

Optimistic Rollup 已经过数百万笔交易的生产中广泛测试。但是,它需要将输入数据(交易)和输出存储到昂贵的数据可用性层,并且 7 天的最终确定时间太长。这就是 zkEVM 受到关注的原因。尽管 最近发布了 RFP(征求提案),以在 OP-Stack 上实现 zk,但将零知识集成到 OP-Stack 中可能需要大量时间。此外,当前的容错证明系统仅涉及少数参与者,表明需要在效率和去中心化方面进行增强。但是,随着 OP-Stack 中即将到来的里程碑专注于此容错证明系统,我预计在不久的将来会有重大进展。

5.2 去中心化

当前 OP-Stack 系统的主要缺点之一是排序器的中心化性质。排序器由单个实体操作,并且在 Bedrock 升级之后,每 2 秒生成一次区块,而不是每个交易一个区块,从而为不良 MEV(如抢跑交易)打开了可能性。目前,为了防止矿工可提取价值 (MEV),Mempool 保持私有。但是,Optimism 团队在其路线图上有去中心化的计划,并期望在不久的将来实现这一目标。

5.3 核心实现

虽然以太坊生态系统拥有活跃的开发者社区,但核心方面的实验却很少。大多数已实施的功能都是更通用的,而不是特定于应用程序的核心更改。特定应用程序所需的以太坊改进提案 (EIP) 通常难以包含在以太坊核心升级中。因此,大多数这些实现都发生在智能合约端。这也适用于 Optimism 生态系统。

6. 结论

OP-Stack 为轻松构建你自己的 Rollup 铺平了道路,并且许多项目正在此生态系统中构建。随着生态系统的增长和繁荣,部署 Rollup 将变得像部署智能合约一样简单。

我认为仅使用智能合约构建应用程序存在明显的局限性。虽然在基于智能合约的 DApp 中正在发生大量的创新和实验,但存在明显的局限性,我认为我们将在构建自定义 Rollup 和区块链的基础设施中看到更多令人兴奋的进展。OP-Stack 等框架正在使之成为可能,并且由于有如此多的项目正在尝试不同的创新,我们将在明年看到很多进展。

感谢 Kate 为本文设计图形。

关于我们

Four Pillars 是一家总部位于首尔的全球加密研究公司,由韩国最具影响力的区块链研究人员组成。通过强大的研究和治理技能,它通过提供高质量的研究文章,同时支持协议扩展到韩国和全球市场,帮助各种市场参与者轻松加入区块链行业。

Four Pillars 链接

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

0 条评论

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