第十五章:Optimistic Rollup 代表项目 optimistim(Boba, Metis
一. Optimism 是什么
Optimism 是 EVM等效的 Optimism Rollup 链。 它被设计成快速、简单和安全。
Optimism 是以太坊应用程序的第 2 层扩展协议。它使交易变得便宜, 真的便宜。我们的目标是让任何人都能负担得起且可以使用以太坊进行交易。
Optimism 看起来、感觉和行为都像以太坊,但更便宜、更快。对于建立在我们 Optimism 基础上的开发人员,我们的目标是使过渡尽可能无缝。除了极少数例外,现有的 Solidity 智能合约可以像在 L1 上运行一样在 L2 上运行。同样,链下代码(即 UI 和钱包)应该能够与 L2 合约交互,只需更新 RPC 端点。
二. Optimism 系统总揽
Optimism 协议中的智能合约可以分为几个关键组件。我们将在下面更详细地讨论每个组件。
- Chain: 第 1 层上的合约,它保存第 2 层交易的顺序,以及对相关第 2 层状态根的承诺。
- Verification: 第 1 层上的合约,执行挑战交易结果的流程。
- Bridge: 促进第 1 层和第 2 层之间消息传递的合约。
- Predeploys:一组基本合约,在系统的创世状态下部署并可用。这些合约类似于以太坊的预编译,但是它们是用 Solidity 编写的,并且可以在前缀为 0x42 的地址中找到。
三. Optimism 如何运行
Optimism 使用了 optimistic rollup。 当您提交交易时,交易数据将写入以太坊主网, 但交易本身由一个计算机执行,即排序器 (而不是以太坊那种数以千计的计算机)。 这明显地降低了交易成本,挑战机制则确保排序器是诚实的。
Optimism 是一种“Optimistic Rollup”,它基本上只是描述区块链的一种奇特方式,它捎带了另一个“父”区块链的安全性。具体来说,Optimistic Rollups 利用其父链的共识机制(如 PoW 或 PoS),而不是提供自己的。在 Optimism 的案例中,这个父区块链是以太坊。
1. 块存储
所有 Optimism 区块都存储在以太坊上的一个特殊智能合约中,称为CanonicalTransactionChain(或简称 CTC)。乐观块保存在 CTC 内的仅附加列表中(我们将在下一节中准确解释如何将块添加到此列表中)。这个仅附加列表形成了 Optimism 区块链。
包含的CanonicalTransactionChain代码保证现有的区块列表不能被新的以太坊交易修改。然而,如果以太坊区块链本身被重组并且过去以太坊交易的顺序被改变,那么这个保证就可能被打破。Optimism 主网被配置为能够抵抗多达 50 个以太坊区块的区块重组。如果以太坊经历了比这更大的重组,Optimism 也会重组。
当然,不经历这种重大的区块重组是以太坊的一个关键安全目标。因此,只要以太坊共识机制也是如此,乐观情绪就可以抵御大型区块重组。正是通过这种关系(至少部分地),Optimism 从以太坊中获得了它的安全属性。
2.块生产
Optimism 区块生产主要由单一方管理,称为“序列器”,它通过提供以下服务来帮助网络:
- 提供即时交易确认和状态更新。
- 构建和执行 L2 块。
- 向 L1 提交用户交易。
排序器没有内存池,交易会按照收到的顺序立即被接受或拒绝。当用户将他们的交易发送到定序器时,定序器会检查交易是否有效(即支付足够的费用),然后将交易作为待处理块应用到其本地状态。这些待处理的区块会定期大批量提交给以太坊进行最终确定。这种批处理过程通过将固定成本分散到给定批次内的所有交易中来显着降低整体交易费用。定序器还应用了一些基本的压缩技术,以尽量减少发布到以太坊的数据量。
因为定序器被赋予了对 L2 链的优先写访问权限,所以定序器可以提供强有力的保证,一旦它决定一个新的待处理块,它将最终确定什么状态。换句话说,确切地知道交易的影响是什么。结果,L2状态可以非常迅速地可靠地更新。这样做的好处包括快速、即时的用户体验,例如近乎实时的 Uniswap 价格更新。
或者,用户可以完全跳过排序器并通过以太坊交易直接提交他们CanonicalTransactionChain的交易。这通常更昂贵,因为提交此交易的固定成本完全由用户支付,并且不会分摊到许多不同的交易中。但是,这种替代提交方法的优点是可以抵抗测序仪的审查。即使定序器正在积极审查用户,用户也始终可以继续使用 Optimism 并通过此机制收回任何资金。
3.块执行
以太坊节点从以太坊的 p2p 网络下载块。Optimism 节点直接从CanonicalTransactionChain合约中仅附加的区块列表中下载区块。有关如何在本合约中存储块的更多信息,请参阅上面关于块存储的部分。
Optimism 节点由两个主要组件组成,即以太坊数据索引器和 Optimism 客户端软件。以太坊数据索引器,也称为“数据传输层” CanonicalTransactionChain(或 DTL),从发布到合约的区块中重构 Optimism 区块链。DTL 搜索由CanonicalTransactionChain表明新的 Optimism 块已发布的信号发出的事件。然后它检查发出这些事件的交易,以标准以太坊块格式重建已发布的块.
Optimism节点的第二部分,Optimism 客户端软件,是一个几乎完全是原版的Geth. 这意味着 Optimism 在本质上与以太坊几乎相同。特别是Optimism 共享同一个以太坊虚拟机,相同的账户和状态结构,以及相同的燃气计量机制和收费表. 我们将此架构称为“EVM 等效” 这意味着大多数以太坊工具(即使是最复杂的工具)“只适用于”Optimism。
Optimism 客户端软件持续监控新索引块的 DTL。当一个新块被索引时,客户端软件将下载它并执行其中包含的交易。在 Optimism 上执行交易的过程与在以太坊上相同:我们加载 Optimism 状态,针对该状态应用交易,然后记录结果状态变化。然后对 DTL 索引的每个新块重复此过程。
4. OP 和 ETH 之间的资产转移
Optimism 旨在让用户可以在 Optimism 和以太坊上的智能合约之间发送任意消息。这使得在两个网络之间转移资产(包括 ERC20 代币)成为可能。发生这种通信的确切机制因消息发送的方向而异。
Optimism 在标准桥中使用此功能允许用户将资产(ERC20 和 ETH)从以太坊存入 Optimism,并允许将相同的资产从 Optimism 提取回以太坊
4.1. L1->L2
要从以太坊向 Optimism 发送消息,用户只需触发以太坊上的CanonicalTransactionChain合约,在 Optimism 区块上创建一个新区块。用户创建的区块可以包括看似源自生成区块的地址的交易。
4.2. L2->L1
Optimism 上的合约不可能像以太坊合约可以在 Optimism 上产生交易一样轻松地在以太坊上生成交易。因此,将数据从 Optimism 发送回以太坊的过程更加复杂。我们必须能够对以太坊上的合约的乐观状态做出可证明的陈述,而不是自动生成经过身份验证的交易。
对乐观状态做出可证明的陈述需要密码学承诺以乐观状态树的根的形式. Optimism 的状态在每个区块之后都会更新,因此这个承诺也会在每个区块之后发生变化。承诺会定期发布(大约每小时一次或两次)到以太坊上的智能合约,称为StateCommitmentChain.
用户可以使用这些承诺来生成Merkle 树证明关于乐观状态。这些证明可以通过以太坊上的智能合约进行验证。Optimism 维护一个便捷的跨链通信合约,L1CrossDomainMessenger,它可以代表其他合约验证这些证明。
这些证明可用于对 Optimism 上特定区块高度的任何合约存储中的数据做出可验证的陈述。然后可以使用此基本功能使 Optimism 上的合约能够向以太坊上的合约发送消息。这L2ToL1MessagePasser Optimism 上的合约可以使用合约(预部署到 Optimism 网络)将消息存储在 Optimism 状态。然后,用户可以向以太坊上的合约证明 Optimism 上的给定合约实际上意味着通过显示该消息的哈希值已存储在L2ToL1MessagePasser合约中来发送某些给定消息。
5.欺诈证明
在 Optimistic Rollup 中,状态承诺会在没有任何直接证明这些承诺有效性的情况下发布到以太坊。相反,这些承诺在一段时间内被视为未决(称为“挑战窗口”)。如果提议的状态承诺在挑战窗口期间(当前设置为 7 天)未受到挑战,则将其视为最终承诺。一旦一个承诺被认为是最终的,以太坊上的智能合约可以安全地接受基于该承诺的乐观状态的证明。
当状态承诺受到质疑时,可以通过“过错证明”(以前称为“欺诈证明”)使其无效) 过程。如果该承诺被成功挑战,则将其从中删除,StateCommitmentChain最终被另一个提议的承诺取代。重要的是要注意,成功的挑战不会回滚 Optimism 本身,只会回滚有关链状态的已发布承诺。交易的顺序和乐观状态不会因故障证明挑战而改变。
有关欺诈证明,请查看以前的文章。
四. 为什么要使用 Optimism
Optimistic 网络允许您发送类似于以太坊的交易,但具有两个重要优势:
- 近乎即时的交易结果反馈。 您几乎可以立即知道您的交易是否完成。
- 明显降低的手续费。 基本上为以太坊主网(也称为 layer 1 或 L1) 成本的1%至10%之间。
- 去中心化: 所有交易都被发布到L1 以太坊, 继承了以太坊的强大安全保证。
五. boba, metis 和 optimistim 的区别
boba 和 metis 都是复制 optimistim 代码改的,boba 缩短了欺诈证明的挑战的窗口期, 在 Metis 中,L2 交易的排序和批处理不是由单个排序器完成,而是由一个排序器池完成。将随机选择一组排序器来 Rollup 状态根并将交易提交到 L1 公链。在 L1,Metis 部署了一组合约来协调 L2 到 L1 的批处理提交。Metis 也缩短了欺诈证明的挑战的窗口期, Metis 基于 OVM 改造了自己的 MVM。
MVM 引入了供应商的角色,他们可以注册并贡献计算能力,使 L2 构建真正去中心化(这些供应商可以看作是 Optimism 平台的排序器)。提供商将根据产生的区块获得激励。最后,MVM 和 Metis 客户端中包含的一个真正强大的功能是其他 L2 平台所不具备的,它不仅支持合约执行,还支持与智能合约计算相关的去中心化存储。因此,Metis 通过 MVM 中的 IPFS 解析器与 IPFS 网络集成,该解析器允许合约指向存储在 IPFS 中的不可变数据。例如,这可用于指向存储在 IPFS 网络中的机密数据。
Boba 目前生态还没起来,在发展中,而 Op 和 metis 目前的生态相对好一些。