'CryptoYC'
研究|Scroll——开箱即用的zkevm
🌿

研究|Scroll——开箱即用的zkevm

TL;DR

  1. Scroll用等效evm的zkrollup来达到扩容以太坊目的;
  2. 分层的证明系统,将证明和验证分层,对验证者和证明都友好,通过asic加速证明的生成;
  3. 完整架构包括三个部分,合约(分为桥接合约和rollup合约)、scroll节点和roller网络。节点负责构建二层区块,在L1和L2之间传递消息,roller网络负责生成zkevm有效证明。
  4. 不使用zk语义构建,而是通过和EVM的操作码保持一致性和完整性,让开发者可以直接复制一层智能合约的字节码布置到二层,不需要进行任何修改,并且可以支持二层内的可组合性;
  5. 目前pre-alpha测试网只针对白名单开放转账和swap级别的交易,alpha测试网是无许可的,允许任何用户交互,年底推出完整版测试网。

Scroll目的是扩展以太坊,具体是用等效evm的zkrollup来实现。所以项目核心就是zkevm,用来证明二层执行的正确性。希望将zkevm变成以太坊上的完整的zkrollup,围绕它构建一个完整的二层架构。

Scroll的zkevm有两个特点:

1. 分层的证明系统:将证明和验证分层,对验证和证明双方都友好。

基本思想是验证 EVM 执行跟踪中每个操作码的一致性和完整性。让1层合约无缝迁移到2层。用反向构建来支持EVM,而不是使用zk语义。

2. 开发者友好:Solidity 的开发者通过 Scroll 可以从以太坊复制一个智能合约的字节码,在 Scroll 上进行部署,而无需对其进行任何修改。并且支持第 2 层的可组合性。

目前scroll团队已经和以太坊基金会的隐私扩容小组一起公开构建了一年多,一部分代码是共享的。

架构

二层的交易打包很重要的一个角色就是排序器,但都是中心化的排序器。scroll的zkevm也是。在去中心化的方面,目标是要解决去中心化验证的问题,但现在的阶段是通过硬件提高证明者的性能,先实现证明者的去中心化,再实现排序器的去中心化。

  • 初始版本:中心化排序节点+去中心化证明网络 组成
  • 未来:去中心化排序节点
  • 架构由三个基础设施组成,分别是桥接合约和rollup合约,scroll节点,roller网络。
图片来源:https://scroll.io/blog/zkEVM

Scroll节点

通过用户交易构建二层区块,将他们提交到以太坊的base layer(基础层),并且在L1和L2之间传递消息。

Scroll 节点是应用程序和用户与scroll交互的主要方式,里面包括了三个模块:sequencer(排序器),coordinator(协调者),relayer(中继者)。排序器的执行是基于以太坊的Geth上,通过分叉Geth来达到最好的兼容性和安全。排序器负责提供接口和接受二层的交易,每几秒钟就会从内存池里面检索一批交易来执行,生成新的二层区块和新的状态根,新的区块会通知到协调者,同时也会发送新区快的执行追踪,协调者就会从roller池中随机挑选roller者来给区块生成证明。中继者也有两个职责,第一个是通过监控rollup合约来追踪二层区块的状态,包括数据可用性和有效性证明,第二个是监视部署在以太坊和scroll上的桥接合约的存取款事务,并且将这些消息从一端中继到另一端。简单概括一下scroll节点:有三个模块构成,分别是排序器,协调者和中继者,排序器负责二层区块的生成和产生新的状态根,协调者负责生成证明,中继者起到的是追踪和传递消息的作用。

Roller 网络

负责生成zkevm有效证明,用来证明交易确实是被正确执行的。

图片来源:https://scroll.io/blog/zkEVM

Roller 网络中的roller充当的是证明者的角色,负责为zkrollup生成有效性证明。如何生成有效性证明?具体分为三个步骤:

  1. 协调者会在收到区块信息的时候在roller池中随机挑选roller来处理区块信息,roller收到区块的执行追踪,将它们转换成电路witness
  2. 为每个zkevm电路生成证明
  3. 用证明聚合器将多个zkevm的电路证明聚合为单个证明。

证明者一般会用GPU,FPGA,ASIC这种加速器来减少验证时间和验证成本。

Rollup合约和桥接合约

为scroll的交易提供数据可用性,验证节点生成的zkevm有效性证明,并且允许用户在以太坊和scroll之间转移资产。Scroll 是通过rollup合约和桥接合约和以太坊基础层连接。

Rollup合约从排序器那里接收二层区块和状态根,储存在以太坊状态中,二层区块数据会作为以太坊的calldata,这是为scroll的区块提供了数据可用性,索引器包括中继者就可以重构二层区块。一旦rollup合约验证了二层区块的有效性证明,就表示这个块在scroll上完成了。

桥接合约在以太坊和scroll上部署,允许用户在一层和二层之间传递消息,在这个消息传递上面,还要建立无需信任的桥接协议,让用户在两端都可以转移erc-20资产。比如用户从以太坊发送消息或者资产到scroll上,用户在桥接合约上可以用SendMessage这个事务,中继者就会索引到这个事务,把它发送到排序器,包含在二层区块中,反过来从scroll发送到以太坊上,合约和过程也是类似的。

Scroll完整的流程:

图片来源:https://scroll.io/blog/zkEVM

二层的区块是在scroll上生成的,提交到以太坊的基础层到确认之前,会经过下面几个步骤:

1. Scroll的排序器生成很多块,对于每个区块,生成执行追踪发给协调者,还会将交易数据D作为calldata提交到以太坊上的rollup合约(这一步是为了数据可用性),并将生成的状态根和对交易数据的承诺作为状态提交给 Rollup 合约。

2. 协调者随机选择一个roller(证明者),根据区块追踪生成有效性证明,为了高效,可以在不同的roller上进行不同区块的证明。

3. 证明者生成证明之后,将证明发回给协调者,每k个块协调者就会重新分配一个证明者,这个证明者会把之前的1-k个证明聚合成一个证明。

4. 最后协调者会把聚合证明提交到rollup合约,根据排序器提交给rollup合约的状态根加上交易数据承诺来验证聚合证明,通过之后就可以确定二层上的k个区块。

Scroll测试网的路线图

测试网阶段有三个:pre-alpha testnet、alpha testnet和比较完整的测试网。现在scroll的功能只有一二层的转账,swap级别的交互。已经把uni的v2版本合约部署上测试网,不过只对白名单用户开放。等到alpha测试网时就是无需可的,允许任何用户在上面进行交互。可能会在年底推出完整的测试网,因为现在电路还在完善中,还有一些没有实现。生态发展上先部署钱包和工具这一类的基础设施。

团队

图片来源:https://scroll.io/blog/zkEVM
  • Sandy,毕业于剑桥,17年从事web3领域投资,现在负责的是非技术领域的工作。
  • Ye Zhang,本科北大,18年从事zk方面的工作,博士同样研究zk方向,目前辍学全职做项目。
  • Hai Chen,清华姚班,华盛顿大学博士毕业,研究方向偏工程化。

融资情况

2022.4.21,A轮融资3000w,由polychain领投,参与投资的有Bain Capital Crypto,Geometry DAO 等,还有一些天使投资人,来自以太坊基金会和社区成员。关于股权融资还是通过未来代币销售协议(SAFT)的方式,创始人并没有公开。

总结

Scroll出块节点会直接用以太坊一层节点的代码,用的是Geth客户端,有以太坊保证安全性,可以用evm原生的字节码部署合约,给开发人员提供最佳体验;将证明和验证分开,并且通过硬件加速器来加速计算,相比其他的方法会更高效。在二层的扩容解决方案中,Scroll可以算是目的非常简单直接并且重点很明确的项目,处于早期,很值得关注。

文献参考

采访:https://www.chaincatcher.com/article/2078499