Layer2 扩容:Rollup 架构、数据可用性与跨 L2 桥

以太坊 Layer2 扩容全景:Optimistic Rollup 与 zk-Rollup 的架构对比、数据可用性(DA)层与 EIP-4844 Blob、欺诈证明/有效性证明机制、Rollup 生命周期(定序器、批次提交、最终确认)、跨 L2 桥与互操作。

导语:把执行搬到链下,把安全留在链上

以太坊 L1 的瓶颈是执行:全节点要验证每一笔计算。Layer2 的核心思想是把执行(execution)搬到链下,只把数据与安全锚定在链上。

Rollup(汇总)是当前主流的 L2 形态:它把大量 L2 交易**打包(roll up)**成一个批次(batch),提交到 L1,同时承诺"这些交易执行后的新状态根"。

一句话总结:Rollup 用"链下执行 + 链上验证/争议"换来了 10~1000 倍的吞吐,同时让 L1 承担最终安全——这是执行分片愿景在工程上最成熟的落地。


1. Rollup 的核心架构

1.1 基本流程

用户 → 提交交易给 L2 定序器(Sequencer)
   │
   ▼
定序器:排序交易 → 在 L2 状态上执行 → 生成新状态根
   │
   ├─ 把压缩后的交易数据(calldata/blob)发布到 L1(数据可用性)
   ├─ 提交"状态根承诺"到 L1 合约(rollup 合约)
   │
   ▼
L1 Rollup 合约:
   Optimistic → 假设批次正确,进入挑战期(可被欺诈证明挑战)
   zk-Rollup  → 提交时附带有效性证明(zk-proof),即刻确认

1.2 关键概念

概念含义
定序器中心化的交易排序者(目前多数是运营方运行;去中心化排序在演进中)
批次一批 L2 交易压缩后的数据 + 新的状态根
状态根每次执行后 L2 世界状态的 Merkle 根
L1 锚定Rollup 合约托管 L2 资产 + 验证批次/证明
强制包含用户在定序器作恶时可直接向 L1 提交交易(逃生舱)

1.3 数据发布的两条路径

路径 A(传统):批次数据写入 L1 calldata
   → 永久存储在 L1,任何人都能重放执行 → 最安全但最贵

路径 B(EIP-4844 Blob):批次数据写入 Blob
   → Blob 只保留约 18 天(Prune 后无法完整重放)
   → 成本低一个数量级;长尾验证依赖数据存储服务(DA 层)

一句话总结:Rollup 的三块积木——执行(链下)、数据(发 L1)、验证(挑战或证明)——分别对应吞吐、可用性、安全性三大目标,任何一块弱化都会传导成信任假设的变化。


2. Optimistic Rollup:乐观执行 + 欺诈证明

2.1 核心思想

假设批次是正确的,除非有人能证明它错了。验证不是主动执行,而是"事后争议"。

提交批次(含新状态根)→ 7 天挑战期(挑战窗口)
  │
  ├─ 无人挑战 → 批次被确认(状态根最终化)
  │
  └─ 有人挑战 → 争议解决(interactive fraud proof)
       挑战者与提议者围绕争议点进行多轮二分博弈
       最终由 L1 合约执行争议的单个步骤
       若提议者输 → 质押被罚没,批次回滚

2.2 欺诈证明:二分争议(Interactive Proof)

为了不在 L1 上重放整个批次,Optimism 的防欺诈系统(Cannon)把争议缩小到单条指令:

争议起点:批次状态根 S 与挑战者主张的 S'
   ↓ 递归二分
比较执行到第 N/2 步的状态哈希 → 逐级缩小
   ↓
最终:L1 合约只重放 ONE 条 EVM 指令
   → 判定谁对 → 罚没质押
特性描述
挑战窗口~7 天(Optimism)/ ~6.5 天(Arbitrum 支持快出)
资产退出需要等待挑战窗口结束才能提款
吞吐高(执行在链下,无密码学证明开销)
兼容性EVM 等价(可运行现有合约)
代表Optimism(OP Stack)、Arbitrum(Nitro)、Base

2.3 安全假设

  • 至少一个诚实的验证者在监控链(否则错误批次可被偷渡)
  • 数据可用:挑战者必须能从 L1 获取全部批次数据以重放执行
  • 定序器不能审查(可通过 L1 强制包含交易绕过)

一句话总结:Optimistic Rollup 用"默认信任 + 事后审计"换来了低复杂度高吞吐,代价是 7 天的提款延迟与"必须有人盯着"的安全假设。


3. zk-Rollup:执行结果 + 有效性证明

3.1 核心思想

每次提交批次时,附带一个密码学有效性证明(zk-SNARK/STARK),证明"批次的输入 → 声明的状态根"是真实执行的结果。

批次提交 = 压缩交易数据 + 状态根 + 有效性证明

L1 合约:
  1. 取批次数据作为公开输入
  2. 验证 zk-proof(调用 bn128Pairing 等预编译合约)
  3. 通过 → 状态根立刻确认(无挑战窗口)

zk 证明要点:
  证明 P:(executed(txs) = new_state_root) 且所有交易合法
  验证 O(1):与批次大小无关(证明越小越好)

3.2 两种主流证明系统

维度zk-SNARKzk-STARK
依赖假设可信设置(trusted setup,部分系统已免)仅哈希(无可信设置)
证明大小~几百字节(最优约 100B)数十 KB ~ 数百 KB
验证成本(L1)低较高
生成速度较慢(需 Groth16/Plonk 电路优化)生成快、可并行
代表zkSync(SNARK)、Polygon zkEVMStarknet(STARK)
量子安全多数不是是

3.3 zkEVM 的挑战

让 zk 证明电路直接证明"EVM 执行"很困难:

zKEVM 兼容层级:
L1 完整 EVM → 证明每条 opcode → 最慢、最接近完全等价(如 Scroll)
字节码级仿真 → 把 EVM opcode 映射到自定义电路 → 快、部分兼容(zkSync Era 初版)
高级语言级 → 编译 Solidity 到 zk 友好中间表示 → 最快、兼容性最弱
指标zk-RollupOptimistic Rollup
提款延迟分钟级(无需挑战窗口)~7 天
复杂度高(证明系统工程庞大)低
吞吐上限高(可用递归证明进一步聚合)高(但受数据限制)
活跃安全假设无(无需监控者)需诚实监控者
状态根确认即时延迟
代表zkSync、Starknet、Scroll、Polygon zkEVMOptimism、Arbitrum、Base

一句话总结:zk-Rollup 用"先证明、后确认"取代"先信任、后挑战",换来了即时提款和更弱的安全假设,代价是把整个 EVM 语义编译进密码学电路——这是当前 L2 工程最烧钱也最有想象力的赛道。


4. 数据可用性(DA):Rollup 的命脉

4.1 为什么 DA 如此重要

Rollup 安全的前提是任何人都有能力重放执行(Optimistic 挑战 / zk 验证的公共输入)。如果批次数据丢失,“状态根"就无法被独立验证——资金可能被"冻结"在错误的根上。

数据可用性(Data Availability)分层:
  L1 calldata      → 永久、最贵、最安全
  L1 Blob(4844)  → 约 18 天、便宜一个数量级
  专用 DA 层       → Celestia / EigenDA / Avail(模块化 DA,信任转移到 DA 层)

4.2 数据可用性采样(DAS)

Celestia 等模块化 DA 用 DAS(Data Availability Sampling) 让轻节点只需随机下载一部分数据即可高概率确认数据完整:

区块数据被切分成大量 chunk,并用 Reed-Solomon 编码扩展
轻节点随机采样 K 个 chunk:
  若某 chunk 缺失 → 通过纠删码可恢复
  攻击者必须隐藏超过 1/2 的 chunk 才能通过采样 → 概率指数下降

4.3 Rollup 与 DA 的关系演进

方案DA 存储信任假设成本
传统 RollupL1 calldata完全依赖 L1高
4844 后 RollupL1 Blob依赖 L1(但数据有期限)中低
模块化 Rollup专用 DA 层额外信任 DA 层低
Validium链下/运营商存储信任运营商(弱 DA)最低

一句话总结:DA 决定"可重放性”,可重放性决定"可验证性"——把 DA 下放到第三方层,本质上是在用信任换成本,这是 Validium 与真 Rollup 的分水岭。


5. 跨 L2 桥与互操作

5.1 L2 → L1 提款:消息机制

存入(L1 → L2):
  用户调用 L1 Rollup 合约 → 定序器纳入 L2 交易 → L2 资产入账(通常较快)

提款(L2 → L1):
  L2 发起提款交易(burn L2 资产)
  L2 状态根被提交到 L1 且被确认(Optimistic 需等挑战窗口)
  L1 合约验证后 → 解锁 L1 资产

5.2 L2 → L2:跨链桥的三条路径

方案机制延迟信任假设
规范桥(官方)经 L1 中转Optimistic:7 天 / zk:分钟级最少
跨链消息协议中继者(relayers)验证 L2 轻客户端数分钟信任中继者或做乐观验证
聚合协议Across、Connext、LayerZero(Off-chain oracle)快信任预言机/中继网络
// 以 LayerZero 风格的消息接口示意(概念,非完整代码)
contract L2Sender {
    function sendMessage(bytes calldata payload) external {
        ILayerZeroEndpoint(lzEndpoint).send(
            targetChainId,
            abi.encode(msg.sender, payload),  // 目标链的接收地址
            address(this),
            payable(msg.sender)
        );
    }
}

5.3 互操作方向:聚合层与共享排序

Shared Sequencer(共享定序器):
  多个 L2 共用同一个定序器 → 原子跨 L2 交易成为可能(跨 L2 无需桥)

Intent-based(意图系统):
  用户声明"我想做 X" → 求解器(solver)竞标执行 → 结果聚合
  代表:Anoma、Across、UniswapX 精神

一句话总结:跨 L2 桥的本质是"消息传递 + 状态证明验证"——延迟与信任直接取决于验证方式(L1 全量验证最安全最慢,乐观/中继最快但多一层信任)。


6. Rollup 生命周期:从提交到最终确认

┌─ 用户 ──┬─ 定序器 ──┬─ L1 合约 ──┬─ 挑战/证明 ──┬─ 最终化 ─┐
│ 签名交易  → 排序执行  → 批次+状态根 → Optimistic:挑战期 │ 状态根被
│          │ 构建批次  → 发布数据    → zk:验证证明     │ 最终确认
└─────────┴─────────┴───────────┴───────────────┴──────────┘

最终化层级(以 Optimistic 为例):
  L2 内部确认(定序器承诺) → 软确认
  数据发布到 L1 → 可重放
  挑战窗口关闭 → 状态根最终化 → 硬确认(可安全提款)

6.1 逃生舱(Force Inclusion)

若定序器作恶/宕机,用户可直接在 L1 调用 Rollup 合约的强制包含入口提交 L2 交易——这是对中心化排序的最终制衡。

6.2 安全评级视角

信任假设Optimisticzk-Rollup
诚实假设需至少一个诚实挑战者无
定序器信任审查可由强制包含绕过同左
数据可用需可重放(L1 或长期 DA)同左
协议升级多数走升级合约(存在社会信任)同左

一句话总结:Rollup 的完整生命周期是"排序→发布→验证→最终化"四步曲;理解挑战窗口、blob 期限、强制包含,才知道你的资金在 L2 上到底有多安全。


7. 总结

  1. Rollup 本质:链下执行 + 链上数据 + 链上验证/争议
  2. Optimistic:欺诈证明 + 挑战窗口 → 延迟换取简单
  3. zk-Rollup:有效性证明 → 即时确认换取证明工程复杂度
  4. DA 是命脉:Blob 与模块化 DA 重构了成本结构
  5. 跨 L2 桥:消息 + 证明验证,信任与速度的权衡是核心

延伸阅读:

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「blockchain」更多文章

  1. 链上数据索引:The Graph、Subgraph 与数据查询架构
  2. 钱包与 HD 分层确定性钱包:助记词、派生路径与签名流程
  3. 稳定币与 DEX/AMM 机制:锚定设计、流动性池与无常损失