---
title: "什么是 ZK rollup？关于零知识证明与 rollups-as-a-service（RaaS）的完整指南"
description: "ZK rollup 的工作原理，与 optimistic rollup 的对比，以及 rollups-as-a-service 究竟能帮你省去哪些工作。"
---

# 什么是 ZK rollup？关于零知识证明与 rollups-as-a-service（RaaS）的完整指南

<ImageBlock
  src="https://media.alchemy.com/blog/zk-rollup-complete-raas-guide-hero.png"
  alt="ZK Rollup 完整 RaaS 指南"
  width={1920}
  height={900}
  priority
/>

在过去近十年的大部分时间里，对于"是否应该在 ZK rollup 上构建"这个问题，诚实的答案是"还不到时候"。生成一个有效性证明需要几分钟，且要花费真金白银，通过证明系统运行普通的 EVM 字节码更像是一个研究项目，而非一个可部署的目标。

情况变化很快。据[以太坊基金会的 zkEVM 安全路线图](https://blog.ethereum.org/2025/12/18/zkevm-security-foundations)显示，在大约一年的时间里，Ethereum 区块的证明延迟从 16 分钟降到了 16 秒，证明成本降低了 45 倍。ZK rollup 用证明取代了信任。剩下要决定的不再是这项技术是否可行，而是运行一条自己的链是否值得由此带来的运维负担。

## 什么是 ZK rollup？

[零知识 rollup](https://www.alchemy.com/blog/zero-knowledge-rollups) 是一种扩容方案，在主链之外执行交易，然后将一个证明结果状态正确的密码学有效性证明发布回基础层。基础层不会重新执行这些交易，它只验证证明。

可以把它想象成交一份数学试卷，阅卷人检查的是一份简短的证明凭据，而不是重新做一遍每道题。这份凭据很小，检查起来很快，而错误的答案无法生成有效的凭据。这种不对称正是整个机制的核心。验证一个证明的成本远低于执行其背后的交易，因此在相同的基础层容量下，rollup 能够推送更高的吞吐量。

"零知识"这个名字容易让人误解。它描述的是证明系统，而非链的隐私属性。ZK rollup 上的交易默认是公开的，和 Ethereum 上一样。证明所确立的是状态转换有效，验证者无需重新执行即可确认，这是一种简洁性（succinctness）属性，而非保密性属性。真正的隐私需要额外的专门工作，通常是加密或在其之上构建专门的隐私层。

因此，应把 ZK rollup 当作一个扩容和最终性方面的决策。如果你需要保密性，那是一个独立的设计问题，仍需自行解决。

## ZK rollup 如何运作？

四个组件依次完成这项工作，彼此衔接。

- **排序器（sequencer）** 接收用户提交的交易，对其排序并打包成批次。这正是用户获得快速确认的原因，远在任何数据到达基础层之前。
- **证明器（prover）** 接收批次并生成有效性证明，通常是 [SNARK 或 STARK](https://www.alchemy.com/overviews/snarks-vs-starks)，用以证明基于之前的状态执行这些交易会得到新的状态。
- **验证合约（verifier contract）** 部署在基础层上。它检查证明，如果证明成立，就接受新的状态根作为规范状态。
- **数据可用性层** 存储足够的交易数据，使任何人都能独立重建 rollup 的状态，并验证运营方没有隐瞒任何信息。

状态本身通过 [Merkle 树](https://www.alchemy.com/docs/what-are-merkle-trees) 追踪，一个单一的根哈希锚定了每个账户余额和合约槽。每个被接受的批次都会推进这个根，因此基础层持有的只是一个小的承诺，而非完整的 rollup 状态。

最后这一项，即数据可用性，是经济模型变化最大的地方。过去 rollup 需要为发布批次数据支付基础层 calldata 的费用，这既昂贵，数据又会永久留在链上。Ethereum 的 Dencun 升级在 2024 年 3 月引入了 blob，这是一条独立定价、专为此用途设计的独立数据通道。blob 数据大约 18 天后就会被清理，而不是永久保留，这是刻意为之的设计。rollup 数据不需要无限期保存，只需要在足够长的时间内可供任何人下载并重建链的状态即可。PeerDAS 是随 2025 年 12 月 Fusaka 一同上线的数据可用性抽样升级，它使运行更大的 blob 数量成为安全之举。而容量的提升本身则来自只改变 blob 参数的小型后续分叉。

数据可用性已不再是曾经那种占主导的成本项。对于当下评估 rollup 成本的团队而言，证明生成和排序器运营才是真正重要的成本项，任何仍基于旧 calldata 假设建立的成本模型都会有数量级的误差。

## ZK rollup 对开发者意味着什么？

费用下降的原因在于，发布和验证一个批次的成本被摊薄到批次内的每一笔交易上。吞吐量提升也是同样的道理，因为基础层的容量约束的是证明验证，而非交易执行。

提款无需经过挑战期。[乐观 rollup](https://www.alchemy.com/overviews/optimistic-rollups) 默认批次有效，除非有人对其提出异议，因此它会将提款保留一段争议期，通常为七天。而有效性证明在被验证的那一刻就已经确立了正确性，因此无需等待。对于任何涉及跨层转移资产的场景，这一差异是用户真正能感受到的。

可验证性来自数据可用性要求。由于批次数据是公开发布的，任何人都可以独立重建 rollup 的状态，因此运营方既无法提交虚假状态，也无法隐瞒用于验证的数据。但这并不能提供抗审查性。排序器仍然可以悄悄拒绝纳入你的交易，无论发布了多少数据，都无法揭示一笔从未被排序的交易。这种保护来自强制纳入（forced-inclusion）路径，即用户可以直接向基础层合约提交交易，rollup 有义务将其纳入。在评估一条链时，请确认这一应急出口确实存在，且在没有运营方配合的情况下也能生效。

综合来看，对于结算速度和单笔交易成本是产品特性而非实现细节的应用来说，ZK rollup 是一个合理的默认选择。支付、交易所和游戏能立刻感受到这种差异。而低频应用大概率感受不到。

## ZK rollup 如何支持智能合约集成？

证明任意智能合约的执行远比证明简单转账要难得多，这也是为什么最早的 ZK rollup 只支持支付和兑换。证明 EVM 字节码意味着要把每一个操作码都表达为证明系统内的约束条件，而 EVM 在设计之初并未考虑到这一点。

[zkEVM](https://www.alchemy.com/overviews/zkevm) 就是应对方案，不同实现在与 Ethereum 的贴合程度上各不相同。一些方案直接证明 Ethereum 的执行层，这样兼容性最大化，但代价是证明性能受影响。另一些方案会调整字节码或状态树以降低证明成本，这意味着部分合约和工具需要相应调整才能正常运作。评估任何 zkEVM 时，应对照你实际的依赖关系，而非其宣称的兼容性标签。

曾经使这一切成为一个研究难题的性能差距已基本弥合。据以太坊基金会披露，证明器目前在目标硬件上能在 10 秒内处理 99% 的 Ethereum 区块，这是一个按区块计的证明指标，而非上文引用的端到端延迟数字。其当前的重心已从速度转向安全性。已发布的路线图将 128 位可证明安全性和小于 300 KiB 的证明体积设定为 2026 年底的目标，同时还包括对递归架构的形式化验证。

证明速度已不再是阻碍你走向生产级 zkEVM 的因素。不妨转而问问某个团队的安全性证明进展到了哪一步。

## ZK rollup 与乐观 rollup 相比如何？

两者都将交易数据发布到基础层，也都继承了基础层的安全性。它们的区别在于要求基础层相信什么。

<EmbeddedTable
  table={{
    columns: [
      { key: "1", width: 190, title: "Dimension", dataType: "object" },
      { key: "2", width: 250, title: "ZK rollups", dataType: "object" },
      { key: "3", width: 280, title: "Optimistic rollups", dataType: "object" },
    ],
    data: [
      {
        "1": { title: "<p>Proof model</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>Validity proof with every batch</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Fraud proof, only if challenged</p>",
          tooltip: "",
          icon: "",
        },
        id: 0,
      },
      {
        "1": { title: "<p>Withdrawal to L1</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>Once the proof is verified</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>After the dispute window, conventionally 7 days</p>",
          tooltip: "",
          icon: "",
        },
        id: 1,
      },
      {
        "1": { title: "<p>Cost profile</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>Proof generation is the main overhead</p>",
          tooltip: "",
          icon: "",
        },
        "3": {
          title: "<p>Cheap to operate, cost sits in the challenge system</p>",
          tooltip: "",
          icon: "",
        },
        id: 2,
      },
      {
        "1": { title: "<p>EVM compatibility</p>", tooltip: "", icon: "" },
        "2": {
          title: "<p>Varies by zkEVM, strong and improving</p>",
          tooltip: "",
          icon: "",
        },
        "3": { title: "<p>Near-complete, mature</p>", tooltip: "", icon: "" },
        id: 3,
      },
      {
        "1": { title: "<p>Security assumption</p>", tooltip: "", icon: "" },
        "2": { title: "<p>Cryptographic</p>", tooltip: "", icon: "" },
        "3": {
          title: "<p>Economic, requires at least one honest challenger</p>",
          tooltip: "",
          icon: "",
        },
        id: 4,
      },
    ],
  }}
/>

乐观 rollup 运行成本更低，在 EVM 兼容性方面也起步更早，这也是为什么按活跃度排名靠前的通用型 L2 目前仍以乐观 rollup 为主。ZK rollup 则要为证明付出成本，以换取更快的结算速度和一种密码学而非经济学意义上的信任模型。

在通用型工作负载上，双方已不再有明显的优劣之分。当快速、最小化信任的结算值得为证明成本买单时，选择 ZK；当原始运营成本和最大程度的 EVM 兼容性更重要时，选择乐观 rollup。

## 什么是 rollups-as-a-service（RaaS）？

过去要启动一条 rollup，意味着要自己搭建排序器、证明器、桥接合约和数据可用性方案，然后让这四者持续无休止地运行下去。那是一个链团队该做的事，而不是一项功能。

Rollups-as-a-service 把这一整套堆栈变成了由服务商为你运行的东西。你选择一个框架、设定好参数，服务商则在底层运营排序器、证明器、桥和节点基础设施。你所保留的是链本身，包括它的手续费代币、Gas 策略、交易排序规则，以及任何一条共享链永远不会代你强制执行的合规逻辑。

早期 RaaS 宣传中经不起时间检验的部分，是暗示这是一件五分钟就能完成、之后可以撒手不管的事。它确实比从零开始构建快得多，也免除了值守运维的负担。但它并不能免除架构层面的决策。你仍然需要选择结算到哪个基础层、你的数据可用性权衡是什么、排序器去中心化将如何演进，以及底层堆栈的升级如何在不破坏你链的前提下传递到你的链上。

应把 RaaS 视为外包了运维，而非外包了设计。关于该模式本身的详细讨论，参见 [rollups-as-a-service](https://www.alchemy.com/overviews/rollups-as-a-service-raas) 和 [RaaS 与 appchain](https://www.alchemy.com/overviews/what-are-rollups-as-a-service-appchains)。

## 什么时候适合启动自己的 ZK rollup？

在几种特定情形下，一条专属 rollup 所带来的复杂性是值得的。

- **可预测的高交易量。** 一旦你持续为大量区块空间付费，专属容量的定价就开始优于在共享容量中竞争。
- **共享链无法满足的合规要求。** 白名单参与者、交易级别的策略，或司法管辖限制，只有在你自己控制的链上才能强制执行，别无他处。
- **依赖专属区块空间的产品体验。** 如果你的确认时间不能因为无关的铸造活动导致网络拥堵而降低，那么共享区块空间就是一种负担。

如果交易量还只是推测性的，那么这就是一个错误的选择。托管服务商能吸收运维负担，但你仍然要承担桥的安全性、排序器的存活性，以及一个你必须持续跟进的升级节奏。这样的运维负担，值得为真实需求而承担，而不是为预测的需求承担。在做出承诺之前，值得先读一读 [rollup 的商业模式](https://www.alchemy.com/overviews/the-business-model-of-rollups)，因为一条链必须赚回它的运营成本。

大多数团队更适合的做法是，先通过标准的 [RPC 访问](https://www.alchemy.com/rpc-api) 在一条成熟的链上上线产品，等使用模式足以支撑这一决策时再重新考虑。推迟这个决定的代价非常小。而拆除一条本不该启动的链，代价却很大。

<CardWithCta
  text="联系我们的 Rollups 团队，了解如何启动属于你自己的链"
  ctaLabel="联系我们"
  ctaHref="https://www.alchemy.com/contact-sales-rollups?utm_source=zk_rollup_guide&utm_medium=overview&utm_campaign=rollups"
  theme="light"
/>

## 关于零知识 rollup 的常见问题

### 什么是 ZK rollup？

ZK rollup 是一种 Layer 2 扩容方案，以批次的形式在链下执行交易，然后向基础层发布一个密码学有效性证明，证明所得到的状态是正确的。基础层验证该证明，而不是重新执行这些交易，从而在继承基础层安全性的同时降低成本、提高吞吐量。

### ZK rollup 如何运作？

排序器把交易打包成批次，证明器生成诸如 SNARK 或 STARK 之类的有效性证明，基础层上的验证合约在接受新的状态根之前检查该证明。交易数据会被发布，使任何人都能独立重建 rollup 的状态。目前 Ethereum 上的 rollup 通过 blob 而非 calldata 发布这些数据。

### ZK rollup 具有隐私性吗？

不，默认情况下没有。"零知识"描述的是证明系统，它让验证者无需重新执行即可确认某个状态转换是有效的。ZK rollup 上的交易是公开可见的，和 Ethereum 上一样。要实现保密性，需要在其之上专门构建额外的隐私层。

### ZK rollup 与乐观 rollup 有何不同？

ZK rollup 会证明每一个批次都是有效的，因此提款一旦证明通过验证就能结算。乐观 rollup 默认批次有效，除非受到挑战，这也是为什么提款要等待一个争议期，通常为七天。ZK rollup 依赖密码学保证；乐观 rollup 依赖经济激励和至少一位诚实的挑战者。

### 有哪些领先的 ZK rollup 项目？

ZKsync Era、Starknet、Scroll 和 Linea 是大多数团队会评估的通用型 ZK rollup，其中 Scroll 和 Linea 都以接近 EVM 等价性为目标。Starknet 目前在 L2Beat 上被评为 Stage 1，不过随着更严格规则的实施，预计会被降级为 Stage 0；Scroll、ZKsync Era 和 Linea 均为 Stage 0。Polygon zkEVM 的 Mainnet Beta 排序器已于 2026 年 7 月 1 日下线，Polygon 已将重心转向 Polygon PoS 和 Agglayer。

### 智能合约能在 ZK rollup 上运行吗？

可以，通过证明 EVM 执行的 zkEVM 实现来完成。兼容性因实现而异。一些 zkEVM 直接证明 Ethereum 的执行层以实现最大兼容性，而另一些则修改字节码或状态结构以降低证明成本，这可能需要对合约或工具做出调整。应对照你实际的依赖关系来检查兼容性，而不是依据笼统的宣称。

### Rollups-as-a-service（RaaS）指的是什么？

Rollups-as-a-service 是指由服务商为你所配置和拥有的 rollup 运营排序器、证明器、桥和节点基础设施。它免除了运行一条链所带来的运维负担，但不会免除架构层面的决策，包括基础层的选择、数据可用性方面的权衡、排序器去中心化，以及堆栈升级如何传递到你的链上。

### ZK rollup 的安全性来自哪里？

ZK rollup 的安全性继承自基础层。资金held在基础层合约中，只有当一个有效证明在链上通过验证后，新的状态根才会被接受，因此运营方无法提交无效状态。批次数据的单独发布确保任何人都能独立重建该状态，并发现运营方是否隐瞒了数据。而抵御针对单笔交易的审查则是一项独立的保证，它依赖于一条通往基础层的强制纳入路径。
