web3Scroll原理调研报告-项目简介">项目简介
Scroll 是2021年由华人创始团队推出的 基于zkEVM 的 以太坊ZKR扩容方案,不同于zkSync的语言级别兼容,Scroll实现了完全EVM等效,即字节码层级兼容,除了数据结构和状态树等部分,zkEVM看起来与以太坊完全一样,由此,现有的以太坊应用程序和工具可以实现无缝迁徙。
关键时间点 | 融资 |
---|---|
待推进
|
|
web3Scroll原理调研报告-核心价值">核心价值
- 完全EVM等效
Vitalik将zkEVM类项目划分为5类,类型1—完全以太坊等效(字节码层级兼容,不改变以太坊的任何部分)、类型2—完全EVM等效(字节码层级兼容,仅改变数据结构和状态树等部分)、类型3—EVM等效(增加gas成本以适配难以zk证明的特定操作)、类型4—几乎等同于EVM(过渡态,直至转向前几类)、类型5—编程语言等效(支持Solidity、Vyper等编写的智能合约),显然,前2类更靠近以太坊生态,更适应以太坊的各种升级,而Scroll实现的完全EVM等效,正是做的此类工作。
- 去中心化的验证网络
Scroll提供去中心化的验证网络,任何用户只要有GPU机器就可以成为证明节点,而且随着节点的增多,算力将越大,成本将越低。
web3Scroll原理调研报告-竞品">竞品
- zkSync:对比Scroll,zkSync仅实现语言级别的等效。此外,zkSync团队控制了出块、打包和验证过程,存在一定的中心化问题。
- Polygon Hermez(Polygon zkEVM):与Scroll一样,Polygon Hermez提供了字节码层级的EVM等效,实际上Polygon zkEVM引入了一层zkASM(zero knowledge Assembly),字节码编译为zkASM之后再运行。
- Starknet:虽然Starknet仅仅提供语言级别的EVM兼容,但基于Cairo构造的新虚拟机非常灵活,能支持多需求的复杂应用。
- Taiko:实现了完全以太坊等效的zkEVM。
web3Scroll原理调研报告-项目架构及原理">项目架构及原理
web3Scroll原理调研报告-Scroll架构">Scroll架构
如上图,Scroll架构包括3部分:
1)Scroll节点
- Sequencer 负责 a) 接收用户交易,打包区块,提取区块执行记录(execution trace)并发送给 Coordinator;b) 向 Rollup合约提交区块信息、新的stateRoot作为callData;
Sequencer直接复用了以太坊节点Geth的代码,保证交易在L2和L1上的执行方式完全一致。 - Coordinator负责接收执行记录(witness),从 Roller Pool 中随机拉取 Roller产生zk证明,聚合zk证明;
- Relayer 负责 a) 通过Bridge合约监听 L1 上存款、提款事件;b) 通过Rollup合约追踪 L2 上区块状态,包括数据可用性、zk证明等。
2)Roller网络:充当prover的角色,负责产生zk证明。任何用户只要拥有GPU机器都可以成为Roller,因此,Roller实际上构成了去中心化的验证网络,
3)合约
web3Scroll原理调研报告-Scroll工作流">Scroll工作流
L2区块产生,提交到L1,在L1上确认的流程为:
- Sequencer 接收L2用户交易,产生区块。对于区块i,Sequencer产生执行记录T,发送给Coordinator。期间,Sequencer将交易数据D、将更新后的stateRoot和交易承诺提交给Rollup合约作为calldata。
- Coordinator 从Roller Pool随机挑选一个Roller为执行记录产生合法性证明。为了加速证明产生过程,不同区块的合法性证明可以并行生成。
- 为区块i生成合法性证明P后,Roller将证明发回给Coordinator。每获取k个区块证明,Coordinator分配聚合任务给另一个Roller,将k个单独的证明聚合为单个证明A。
- 最后,Coordinator将聚合证明A提交给Rollup合约,Rollup合约基于前述calldata数据验证A的合法性,验证通过则L2上k个区块在L1完成确认。
web3Scroll原理调研报告-核心技术实现">核心技术实现
与EVM等效的zkEVM是Scroll的灵魂,在分析zkEVM的实现之前,我们先回顾下EVM执行智能合约的过程。
EVM架构 |
新版本的以太坊将 EVM 从节点代码中剥离出来,形成独立的模块。如下图,节点通过 EVMC 接口与 EVM 模块交互,Instance接口定义了节点对 EVM 的操作,如创建、销毁、设置等,Callback 接口定义了 EVM 对节点的操作,如 state 读写、区块信息读写等。
EVM执行合约 |
接下来,我们看看Scroll的zkEVM构造,重点关注区块记录的证明生成。
Scroll改进了原zcash开源的halo2,结合KZG承诺方案,为区块执行记录生成合法性证明。
执行证明分为两部分,1)State proof状态证明,用于证明State/Memory/Stack等操作正确执行了,但不检验读/写位置是否合法;2)EVM proof,用于证明在正确的时间调用了正确的操作码。
web3Scroll原理调研报告-1、Sequencer提取执行记录">1、Sequencer 提取执行记录
Scroll的Sequencer实现fork自Go-Ethereum(Geth),通过TraceChain api获取EVM在两个块之间(不包括start)执行期间创建的结构化日志,并将它们作为JSON对象返回。
BlockTrace结构体 | |
---|---|
|
web3Scroll原理调研报告-2、Roller产生zk证明">2、Roller 产生zk证明
zkEVM通过Bus-Mapping解析EVM执行记录,获取结构化的witness输入,以及收集电路输入。
1)witness构建:
通过block_traces_to_witness_block函数完成,获取.json格式的执行路径后,先通过serde_json解析路径为BlockTrace,再封装为证明电路通用的结构体Block,包含区块上下文,复制约束,MPT初始值及更新后的信息等。
2)circuit构建:使用1)的block信息构建SuperCircuit,包含zkEVM构建的所有电路。
我们看下Repo的描述:
具体地:
电路类型 | 共享查找表 | |
---|---|---|
| 1. Copy Table
2. Exponentiation Table
3. Rw Table
4. Keccak Table
| 5. Tx Table
6. Bytecode Table
7. Block Table
8. MPT Table
|
3)Plonkish + KZG承诺