---
title: "Optimistic Rollups 是如何运作的（完整指南）"
description: "定义、特点、功能，以及顶级 Optimistic Rollup 工具列表"
---

# Optimistic Rollups 是如何运作的（完整指南）

曾经被视为边缘想法的 Ethereum——世界上第一个智能合约平台——多年来发展迅猛，如今每天承载着近 3,000 个[去中心化应用](https://www.alchemy.com/dapps/top/defi-dapps)、4,000\+ 个智能合约，以及超过 90,000 笔交易。

但 Ethereum 上活动量的增加也带来了代价：可扩展性问题。

区块大小和出块时间的限制，虽然对去中心化和安全性来说是必要的，但也降低了 Ethereum 扩展规模和接纳更多用户的能力。最终结果是一系列大多数 Ethereum 用户都熟悉的问题——即高昂的 gas 费用和缓慢的交易速度。

安全地[扩展 Ethereum](https://www.alchemy.com/overviews/ethereum-scaling-solutions) 需要在不引入信任假设的前提下提升网络吞吐量和延迟表现。这正是[Layer 2 Rollups 和侧链](https://www.alchemy.com/overviews/sidechains-vs-layer2s)等多种扩容方案所要实现的目标。

本文将探讨 Optimistic Rollups（ORUs），这是一类旨在让 Ethereum 使用起来更便宜、更快捷的 L2 Rollup 解决方案。

## 什么是 Optimistic Rollups？

‍**Optimistic Rollups 是一种 layer 2（L2）架构，通过将计算和数据存储移到链下，来提升 Ethereum 基础层的吞吐量和延迟表现。** Optimistic Rollup 在 [Ethereum Mainnet](https://www.alchemy.com/rpc/ethereum) 之外处理交易，减轻基础层的拥堵，提升可扩展性。

“Optimistic”这个名称指向了 Optimistic Rollups 的一个显著特征：它们在链上仅发布少量交易信息，并默认所有交易都是有效的。之所以称为“Rollups”，是因为它们会将成千上万笔交易聚合（“汇总”）成批次，然后再提交到 Mainnet 上。

## Optimistic Rollup 的架构

#### 1. 进入 Optimistic Rollup

Optimistic Rollups 使用部署在 Ethereum 上的智能合约来管理 L2 链与 L1 区块链（Ethereum）之间的交互。Rollup 用户必须先将资金存入这些智能合约之一，然后才能在 rollup 上解锁等量的资金。

一个称为 _sequencer_ 的第三方，在收到用户已将资金存入 rollup 合约的证明后，会在 rollup 上向该用户记入相应资金。此后用户便可以在 rollup 上自由交易，直到耗尽其余额。

<ImageBlock
  src="https://media.alchemy.com/1704208402-optimistic-rollup-architecture.png"
  alt="Optimistic rollup 的架构"
  width={1060}
  height={820}
  caption="来源"
/>

#### 2. 使用 Optimistic Rollup

在 rollup 上，用户对交易进行签名并提交给负责排序和执行交易的 sequencer。sequencer 验证交易，将数据压缩成一个区块，并将该批次作为单笔交易提交到 Ethereum。

这也是 rollup 合约发挥作用的另一个环节。链上合约存储着一个“状态根”（state root），它是 rollup 状态的 Merkle 根。我们来进一步拆解这一概念：

##### **状态（State）**

_State_ 是指在特定时间点关于某个网络的可用信息。“rollup 的状态”描述了 L2 链的当前状况，并指明诸如现有账户、余额、智能合约等细节。

在 rollup 上执行的每一笔交易都会导致其状态发生变化——例如，当 Alice 向 Bob 转账 5 ETH 后，Alice 的余额会减少。因此，交易被称为 _状态转换（state transitions）_，因为 rollup 在执行一笔交易后会从旧状态转变为新状态。

##### Merkle 根

[Merkle 根](https://www.alchemy.com/docs/web3-glossary)使用户能够利用加密哈希对大量信息进行编码。Merkle 根还使检查某条数据（例如一笔交易）是否属于某个更大数据集（例如一批交易）变得更加容易。

因此，存储在 rollup 合约中的“状态根”是一个用于验证 rollup 在不同时间点状态的加密承诺。当 sequencer 向 rollup 合约提交一批交易时，必须包含一个 _pre_-state root（前状态根）和一个 _post_-state root（后状态根）。

1. Pre-state root（前状态根）：_旧_ 状态根，描述提交的交易被执行之前 rollup 的状况。

2. Post-state root（后状态根）：新状态根，描述提交的交易被执行之后 rollup 的状况。

sequencer 提交该批次后，合约会验证 _pre_-state root 是否与现有状态根一致。如果两者匹配，合约就会丢弃旧的状态根，并存储 sequencer 提出的新状态根。

这意味着 _post_-state root 中引用的交易已经成为最终状态，无法被撤销。请注意，sequencer 不需要提交证明批次交易有效性的证据。

唯一需要提交证明的情况是，当某个 verifier 使用欺诈证明（fraud proof）举报某笔 rollup 交易存在欺诈行为时。我们将在本文后面的部分解释欺诈证明的运作机制。

<ImageBlock
  src="https://media.alchemy.com/1704208458-optimistic-rollup-merkle-root.png"
  alt="Merkle 树生成 optimistic rollup 中状态根的示意图"
  width={901}
  height={321}
  caption="来源"
/>

#### 3. 退出 Optimistic Rollup

假设 Alice（用户）已经受够了这套 rollup 流程，想要从 Ethereum Mainnet 上的 rollup 合约中提取她的资金。为此，她需要一份 Merkle 证明——没错，你猜对了——用来证明她的交易已包含在 rollup 的状态根中。

构建 Merkle 证明需要获取初始交易数据，而这些数据理应由 sequencer 提供。如果一切顺利，Alice 会拿到数据，创建 Merkle 证明，并提交给 rollup 合约。

但依赖 sequencer 提供交易数据会引入信任假设。sequencer 可能会作恶，执行一笔将 Alice 的代币转到自己钱包的交易，并拒绝向她提供证明资金所有权所需的数据。即使是恶意程度较低的情况，例如 sequencer 掉线，也仍可能威胁到 Optimistic Rollups 的去中心化和安全性。

Optimistic Rollups 通过要求 sequencer 在 Ethereum 主执行层上发布完整交易数据，解决了这一问题。这些信息以“calldata”的形式发布在 Ethereum Mainnet 上，这比将其存储在 [Ethereum Virtual Machine](https://www.alchemy.com/overviews/what-is-the-ethereum-virtual-machine-evm) 的内存或存储中要便宜（从而进一步降低了 rollup 的费用）。

**这实现了两个目标：**

1. 如果某个 sequencer 掉线，另一个 sequencer 可以利用交易数据重建 rollup 的状态并继续生成区块。

2. Alice（用户）可以自己下载数据，并用它来创建 Merkle 证明。

正是由于使用了链上数据可用性，Optimistic Rollups 才比其他扩容方案安全得多。由于交易数据存储在 Ethereum 上，只要 Ethereum 保持正常运行，用户的资金就始终是安全的。

于是，无论通过哪种方式，Alice 都设法创建出了证明资金所有权的 Merkle 证明。然而，她必须等待 _争议期（dispute period）_ 结束后才能提取资金。在 Optimistic Rollups 中，争议期是从提交提款请求到实际获得所请求资金之间的 1-2 周间隔。

在此期间，任何人都可以发布欺诈证明，声称某笔特定交易或某批交易是无效的。如果欺诈证明成立，sequencer 的保证金（作为诚实行为的担保而提供）将被罚没，Alice 的“资金”会被回滚，而“举报者”（称为 _verifier_）则会因其努力而获得奖励。

如果没有人对 Alice 的提款请求提出异议，那么她可以在 1-2 周后从 rollup 合约中取出资金。

## 什么是欺诈证明？

欺诈证明是一种声明，声称某个状态转换（即交易）是无效的，因此整个批次都应该被回滚。虽然过程复杂，但欺诈证明的运作严重依赖于前面提到的状态根。

这个过程始于某一方（verifier）发现 L1 链上状态根所引用的 rollup 状态，与 rollup 链的实际状态之间存在不匹配。

举个例子，即使 Alice 从未进行过转账，sequencer 却提交了一个 post-state root，将 Alice 的余额减少了 5 ETH，同时将 Bob 的余额增加了相同数量。

verifier 可以对这个状态转换发起“挑战”，并证明其无效。之所以能做到这一点，是因为 verifier 会下载每笔交易的数据，将其应用于自己保存的 rollup 状态副本，并计算出 post-state root。

如果 sequencer 的 post-state root 与 verifier 的一致，则不会发生任何事情。但如果 sequencer 的 post-state root 不同——很可能是因为其中包含了一笔虚假交易，就像 Alice 的例子中描述的那样——那么 verifier 就可以触发欺诈证明的计算流程。

<ImageBlock
  src="https://media.alchemy.com/1704208508-optimistic-rollup-fraud-proof.png"
  alt="用于对 optimistic rollup 交易发起争议的欺诈证明流程示意图"
  width={1600}
  height={625}
  caption="Source: https://ethereum.org/en/developers/docs/scaling/optimistic-rollups/#disputing-transactions"
/>

## 欺诈证明是如何运作的？

以下是对欺诈证明流程的高层描述：

1. verifier 发起挑战，并提供以下信息：

                  a. 存在争议的状态转换

                  b. pre-state root

                  c. rollup 状态数据

                  d. 他们自己版本的 post-state root。

       2. 该交易会在 L1 链上一个沙盒环境中重新执行，所用的信息中就包括挑战者所提供的内容。

这个“沙盒环境”是运行在 Ethereum 上的一个智能合约，同时兼作虚拟机（VM）。

       3. 如果计算得出的 post-state root 与挑战者的一致，那么就可以确认 sequencer 确实发布了一个包含无效状态转换的批次。

该无效批次（以及之后发布的其他批次）将被回滚，使 rollup 恢复到之前的状态。

需要说明的是，欺诈证明机制实际上比这里描述的要复杂得多。

关于[rollups 中的欺诈证明](https://medium.com/@cpbuckland88/fraud-proofs-and-virtual-machines-2826a3412099)这篇文章可能会提供一些额外的背景信息。

## 欺诈证明与有效性证明有什么区别？

欺诈证明与有效性证明的主要区别在于，欺诈证明是在链上计算的。有效性证明（也称为零知识证明）是在链下（即在 rollup 上）计算完成，然后在 Ethereum 上进行验证。

正如我们在比较不同[零知识证明类型](https://www.alchemy.com/overviews/snarks-vs-starks)的文章中所解释的，像 SNARK 或 STARK 这样的有效性证明，用于证明链下执行的交易是有效的。这正是[零知识 rollup](https://www.alchemy.com/blog/zero-knowledge-rollups)的基础。

在 ZK-rollup 中，每一批次都会使用交易数据作为输入，生成一个有效性证明。这个有效性证明会随批次一起提交到 Ethereum Mainnet，并由链上合约进行验证。这意味着交易可以立即被宣告有效，无需等待挑战期（不像 Optimistic Rollups 那样）。

欺诈证明和 ZK 证明之间的另一个区别在于，后者在链上验证起来相对更容易。智能合约只需要运行有效性证明，即可确定批次交易的有效性。而对于欺诈证明，必须先重新执行整个状态转换，才能完成欺诈证明的计算。

## Optimistic Rollups 和 ZK Rollups 有什么区别？

Optimistic Rollups 与 ZK Rollups 之间的主要区别体现在前者对智能合约的支持、延迟提款、对加密经济激励的依赖，以及安全性属性上。

以下是 Optimistic Rollups 与 ZK Rollups 的详细对比：

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 200, title: "Features", dataType: "object" },
      { key: "2", width: 200, title: "Optimistic Rollups", dataType: "object" },
      {
        key: "1704326300633",
        width: 180,
        title: "ZK Rollups",
        dataType: "object",
      },
    ],
    data: [
      {
        "1": { title: "Proof", tooltip: "", icon: "" },
        "2": {
          title: "使用欺诈证明来证明交易的有效性。",
          tooltip: "",
          icon: "",
        },
        id: 0,
        "1704326300633": {
          title:
            "使用有效性（零知识）证明来证明交易的有效性。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "Capital Efficieny", tooltip: "", icon: "" },
        "2": {
          title:
            "提款前需要等待一周的延迟期（争议期）。",
          tooltip: "",
          icon: "",
        },
        id: 1,
        "1704326300633": {
          title:
            "用户可以立即提取资金，因为有效性证明为链下交易的真实性提供了确凿的证据。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "Data Compression", tooltip: "", icon: "" },
        "2": {
          title:
            "以 calldata 的形式将完整交易数据发布到 Ethereum Mainnet，这增加了 rollup 的成本。",
          tooltip: "",
          icon: "",
        },
        id: 2,
        "1704326300633": {
          title:
            "无需在 Ethereum 上发布交易数据，因为 ZK-SNARKs 和 ZK-STARKs 已经能够保证 rollup 状态的准确性。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "EVM Compatibility", tooltip: "", icon: "" },
        "2": {
          title:
            "使用 Ethereum Virtual Machine（EVM）的模拟实现，使其能够运行任意逻辑并支持智能合约。",
          tooltip: "",
          icon: "",
        },
        id: 3,
        "1704326300633": {
          title:
            "尚未广泛支持 EVM 计算，不过已经出现了少数兼容 EVM 的 ZK-rollups。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "Rollup Costs", tooltip: "", icon: "" },
        "2": {
          title:
            "由于在 Ethereum 上发布的数据量极小，且除特殊情况外不需要为交易发布证明，因此降低了成本。",
          tooltip: "",
          icon: "",
        },
        id: 4,
        "1704326300633": {
          title:
            "由于需要为每个交易区块生成和验证证明，因此面临更高的开销。ZK 证明需要专用的、昂贵的硬件来生成，且链上验证成本较高。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "Trust Assumptions", tooltip: "", icon: "" },
        "2": {
          title: "无需可信设置（trusted setup）。",
          tooltip: "",
          icon: "",
        },
        id: 5,
        "1704326300633": {
          title: "需要可信设置（trusted setup）才能运作。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "Liveness Requirements", tooltip: "", icon: "" },
        "2": {
          title:
            "需要 verifier 持续关注实际的 rollup 状态和状态根中所引用的状态，以便发现欺诈行为。",
          tooltip: "",
          icon: "",
        },
        id: 6,
        "1704326300633": {
          title:
            "用户无需有人监视 L2 链来发现欺诈行为。",
          tooltip: "",
          icon: "",
        },
      },
      {
        "1": { title: "Security Properties", tooltip: "", icon: "" },
        "2": {
          title:
            "依靠加密经济激励来向用户保证 rollup 的安全性。",
          tooltip: "",
          icon: "",
        },
        id: 7,
        "1704326300633": {
          title: "依靠密码学保证来实现安全性。",
          tooltip: "",
          icon: "",
        },
      },
    ],
  }}
/>

## 主流的 Optimistic Rollup 区块链有哪些？

**按锁仓总价值（Total Value Locked，TVL）计算，主流的 Optimistic Rollup 区块链是 Arbitrum、Optimism、Metis Andromeda 和 Boba Network。** 以下是几种 Optimistic Rollups（ORUs）的概述：

### 1. Arbitrum

[Arbitrum](https://www.alchemy.com/layer2/arbitrum/?a=39dca3d5aa) 是一个 Optimistic Rollup 项目，旨在通过将计算和数据存储移到链下，来降低用户在 Ethereum 上的成本并提升交易速度。Arbitrum Virtual Machine（AVM）支持兼容 EVM 的智能合约，让用户能够以远低于 Ethereum 的成本使用自己喜爱的应用。

### 2. Optimism

[Optimism](https://www.alchemy.com/layer2/optimism/?a=39dca3d5aa) 是一条兼容 EVM 的 Optimistic Rollup 链，利用了 Ethereum 的安全保障。Optimism 采用 Optimistic Rollup（OR）架构，将成千上万笔链下交易打包汇总，从而为用户节省 gas 费用。

### 3. Metis Andromeda

Metis Andromeda 是一种基于 Optimistic Rollups 的可扩展、低成本、功能完善的 L2 协议。Metis Andromeda 独特的技术栈可应用于多种场景，包括应用程序、[DAOs](https://www.alchemy.com/dapps/top/daos) 和 DeFi。

### 4. Boba Network

Boba Network 是一条 Ethereum L2，采用 Optimistic Rollup 设计来提升吞吐量。Boba Network 提供流动性提供者（Liquidity Provider，LP）服务，让用户无需等待七天的挑战期即可立即提取资金。

### 哪些 Optimistic 区块链或项目拥有代币？

以下 Optimistic Rollup 项目拥有代币：

- Optimism（OP）
- Boba Network（BOBA）
- Metis Andromeda（METIS）

## Optimistic Rollup 工具

Optimistic Rollups 是扩展应用程序以及以更具成本效益和高效的方式与智能合约交互的实用方案。但首先，你需要各种工具，才能安全便捷地使用 Optimistic Rollups。

以下是面向开发者和终端用户的各类 Optimistic Rollup 工具：

### 通往 Optimistic layer 2 区块链的跨链桥

虽然 Optimistic Rollups 构建在 Ethereum 基础层之上，但两条链上的资产并非原生兼容。不过，你可以[使用跨链桥](https://www.alchemy.com/overviews/cross-chain-bridges)，将资金从像 Ethereum 这样的 L1 链转移到 Optimistic Rollup 上：

以下是连接 L1 链与不同 L2 rollup 的跨链桥示例：

### 连接 Arbitrum 的跨链桥

- Arbitrum Token Bridge
- cBridge
- Hop Protocol
- Synapse Protocol
- Anyway Bridge
- DeGate Bridge

### 连接 Optimism 的跨链桥

- Connext
- Celer Bridge
- Li.Fi
- Optimism Bridge
- Poly Network
- Via Protocol
- Synapse Protocol
- Across

### 连接 Metis Andromeda 的跨链桥

- Metis Bridge
- cBridge
- AnySwap
- Synapse Protocol

### 连接 Boba Network 的跨链桥

- Across
- Boba Standard Token Bridge/Fast Token Bridge
- cBridge
- Synapse Protocol

### Optimistic Rollup 测试网

[测试网（testnet）](https://www.alchemy.com/overviews/what-are-testnets)是模拟相应主网（Mainnet）行为的公共区块链网络。与真实的区块链不同，测试网不使用真实资金，使开发者能够以最小的风险部署和测试智能合约。

一些 Optimistic Rollups 提供了 Ethereum 测试网的版本，例如 [Rinkeby](https://www.alchemy.com/overviews/rinkeby-testnet)，可用于测试你的 dApp：

#### 1. Optimism Ethereum Kovan Testnet

Optimistic Ethereum Kovan Testnet 是一条兼容 EVM 的 Optimistic Rollup 链，专为测试目的而设计。与 Ethereum Mainnet 上的 Optimism 类似，Optimistic Ethereum Kovan Testnet 旨在提供比 L1 更快、更便宜的交易。

#### 2. Arbitrum Rinkeby Testnet

Offchain Labs（Arbitrum 背后的团队）在 Rinkeby 网络上推出了一条等效于 EVM 的 rollup 链。Arbitrum Rinkeby Testnet 让开发者无需下载软件即可在 Arbitrum rollup 上部署 [Solidity](https://www.alchemy.com/dapps/solidity) 智能合约。它还配备了区块链浏览器和用于转移 ERC-20/ERC-721 代币的跨链桥。

#### 3. Boba Network Rinkeby Testnet

Boba Network 是另一个在 Rinkeby 测试网上拥有兼容 EVM 的 rollup 链的项目。你可以通过 Alchemy 的 [Rinkeby faucet](https://rinkebyfaucet.com) 领取测试网 ETH，用于创建或测试你的智能合约。

## 结论

Optimistic Rollups 是利用 layer 2 架构扩展 Ethereum 这一努力中的重要组成部分。Optimistic Rollups 在 Ethereum 的安全性和去中心化基础上构建，同时提供更低廉的费用和更快的交易速度。

Alchemy 支持两个基于 Optimistic Rollups 的领先项目：Arbitrum 和 Optimism。[立即免费注册](https://www.alchemy.com/?a=39dca3d5aa)，了解如何借助基于 Ethereum 的 Optimistic Rollups 扩展你的 dApp。

## 常见问题

### 什么是 Optimistic Rollups？

Optimistic Rollups 是一种 layer 2 扩容方案，通过将计算和数据存储移到链下，来提升 Ethereum 的吞吐量和延迟表现，同时默认所有交易都有效，除非受到挑战。

### 如何将资金存入 Optimistic Rollup？

用户将资金存入部署在 Ethereum 上的智能合约，sequencer 在收到存款证明后，会在 rollup 上向其记入等量的资金。

### Optimistic Rollups 中的挑战期是什么？

挑战期是提交提款请求后的 1-2 周间隔，在此期间任何人都可以发布欺诈证明，对无效交易提出异议，之后资金才能被提取。

### sequencer 扮演什么角色？

sequencer 负责排序和执行交易，将交易数据压缩成区块，将批次作为单笔交易提交到 Ethereum，并在存款完成后向用户记入资金。

### Optimistic Rollups 与 ZK Rollups 有什么区别？

Optimistic Rollups 默认交易有效，只有在受到挑战时才使用欺诈证明；而 ZK Rollups 为每个批次都使用有效性证明，允许用户无需等待即可立即提款。

### 什么是欺诈证明？

欺诈证明是一种声明某个状态转换无效的主张，当 verifier 发现 rollup 状态存在不匹配时会触发该机制，并提交证据以回滚欺诈性批次。

### 为什么 Optimistic Rollups 存在提款延迟？

1-2 周的提款延迟为 verifier 留出时间，以便在资金从 rollup 合约中释放之前，发现并挑战任何欺诈性交易。

### 主要的 Optimistic Rollup 区块链有哪些？

按锁仓总价值排名，主要的 Optimistic Rollup 区块链是 Arbitrum、Optimism、Metis Andromeda 和 Boba Network。
