1 — 关键组件与概念(简单名词表)
- Sequencer / Operator:收集用户交易、排序并打包成批次的实体(可集中也可去中心化)。
- Prover:在链下生成零知识有效性证明的计算节点(可能是同一个 Sequencer,也可能是专门的 prover 集群)。
- Aggregator(可选):将多个证明递归/聚合成更小的证明以减少 on-chain 验证成本。
- Rollup 智能合约(L1):在主链上存储状态根、接收 calldata、并验证/接受 proof。
- Data Availability(DA):交易数据是否写到 L1(on-chain calldata)或存到链下/第三方(validium 风格)。
- State(状态树):通常用 Merkle/Patricia/Sparse Merkle 表示账户/余额等,合约在 L1 只记录
state_root
。
2 — 典型交易生命周期(文字 + ASCII)
用户提交 tx → Sequencer 收集排序 → 批量交易(Batch)
↓
Sequencer/Prover 计算新 state,生成 ZK-Proof
↓
发布 (compressed calldata + proof) 到 L1 Rollup Contract
↓
L1 合约:校验 proof;若通过,提交新的 state_root,并记录 calldata
↓
交易被确认(最终性在 proof 验证后立即成立)
更扁平的 ASCII 流程图:
[User tx] → [Sequencer/Batching] → [Prover: compute state + proof]
↓
[Publish calldata + proof] → [L1 Rollup Contract: verify proof]
↓
[state_root 更新] → [最终性 / 可提现]
3 — 核心技术点详解
a) 怎么把“很多交易”变成一个 proof?
- Sequencer 执行每笔交易(在 L2 状态树上),得到新的 state root。
- Prover 把“从旧 state_root 到新 state_root 的状态转变”用数学电路表示(电路可基于 R1CS、AIR、或其他),并生成 有效性证明(证明这次批次中的所有 state transitions 都正确)。
- 证明 + (通常是压缩/打包的)交易数据一并上链。L1 验证 proof 并接受新的 state_root。
b) Data Availability(数据可用性)
- 全 on-chain DA(最常见的 zkRollup):把交易 calldata(压缩或原始)上链;优点:任意人能重建 L2 状态(安全且可审计)。