SCR:深度解读Scroll zkEVM方案:如何实现去中心化的愿景?_Outer Ring

原文作者:Young,Scroll研究员;Babywhale,ForesightNews

今年2月底,基于

ZKRollup

的以太坊

Layer2

网络Scroll正式推出了向所有用户开放的Alpha测试网,并表示将在未来几个月内改进zkEVM性能。就在推出新测试网的一周后,Scroll宣布以18亿美元估值完成了

PolychainCapital

、红杉中国等参投的5000万美元融资。

2022年6月,笔者在《三分钟读懂Scroll:ZKRollup扩容新锐选手》中简单介绍了Scroll的设计框架。Scroll旨在建立「EVM等效」的zkEVM扩容网络,实现以太坊上应用的无缝迁移。

7月,Scroll推出了需要申请资格的Pre-Alpha测试网,截至Alpha测试网推出时,Pre-Alpha测试网已处理了超1540万笔交易,共确认了超180万个区块,提交了64.1万批有效性证明,且共有超10万名用户参与。而Alpha测试网开放至今,共有约2,145,099个

钱包

地址,处理了约10,102,684笔用户交易,生成了886,701个区块,平均区块时间约为3秒。

本文中,笔者将介绍Scroll通过怎样的机制实现在去中心化的前提下继承以太坊主网的

安全

性。

Scroll的架构

Scroll架构主要由3部分组成:节点网络、证明网络和Rollup合约。

节点网络

Scroll的节点网络包含三部分:定序器、协调器和中继器。

定序器

定序器提供JSON-RPC接口并接受L2交易。每隔几秒钟,它就会从L2mempool检索一批交易,并执行它们以生成新的L2区块和一个新的状态根。Scroll的定序器实现是通过fork被广泛使用的以太坊节点GoEthereum,并以此实现更好的兼容性和承经得起时间考验的安全性。

协调器

一旦生成新的区块,协调器就会收到通知,并从定序器接收该区块的Executiontrace。然后,协调器将Executiontrace分配给一个从去中心化的证明网络中随机选择的证明者生成证明。

中继器

中继器用于观察部署在以太坊和Scroll上的

跨链

桥和Rollup合约。它主要有两个职责,其一是监视Rollup合约,跟踪L2区块的状态,包括其数据可用性和有效性证明。其二是监视部署以太坊和Scroll上的跨链桥合约的存款和提取活动,并将消息从一方传递到另一方。

证明网络

Rollers作为网络中的证明者,负责为ZKRollup生成有效性证明。Roller可以利用像GPU、FPGA和ASIC等硬件设备来减少验证时间和验证成本。

下图展示了Roller如何为每个区块生成有效性证明,有以下步骤:

Roller首先将从协调器那里收到的执行Trace,转换为电路witness。

为每个zkEVM电路生成证明。

使用证明聚合,将来自多个zkEVM电路的证明合并为一个单一的区块证明Rollup和跨链合约。

值得一提的是,Scroll团队成员表示Scroll计划于主网上线前上线证明网络测试网。证明网络的去中心化一方面为以太坊合并后无处安放的GPU矿机找到了暂时的用武之地。另一方面,未来主网对证明者的激励可能可以刺激零知识证明专用芯片的开发,并最终被大量ZK项目广泛采用,形成继PowASIC矿机后的又一实体

产业

链。

Rollup和跨链桥合约

Scroll通过Rollup和跨链桥合约连接到以太坊。这样确保了L2交易的数据可用性,并允许用户在L1和L2之间传递资产和信息。

Rollup合约

Rollup合约从定序器接收L2状态根和区块。它将状态根存储在以太坊状态中,L2区块数据作为以太坊calldata。这为Scroll区块提供了数据可用性,并利用以太坊的安全性来确保包括Scroll中继器在内的索引器能够重建L2区块。一旦确定L2区块有效性的证明被Rollup合约验证,相应的区块就被认为在Scroll上已经完成。

跨链桥合约

部署在以太坊和Scroll上的跨链桥合约允许用户在L1和L2之间传递任意的信息。在这个消息传递协议的基础上,我们还建立了一个无需信任的跨链协议,允许用户在两个方向上桥接ERC-20资产。从以太坊向Scroll发送消息或资金,用户需要在跨链桥合约上调用sendMessage交易。中继器将在L1上对该交易进行索引,并将其发送给定序器,将其包含在L2区块中。从Scroll向以太坊发送消息,在L2跨链桥合约的流程和上述过程类似。

Scroll如何实现ZKRollup?

Scroll中的L2区块被生成后提交给以太坊,并按以下步骤顺序最终完成:

定序器的角色是生成区块。对于第i个区块来讲,定序器生成执行Trace:T,并将其发送给协调器。定序器还将交易数据D作为CallData提交到以太坊的合约中,保证数据可用性以及由此生成的状态根和对Rollup合约的交易数据的承诺作为状态。

协调器会随机选择一个证明者为每个Blocktrace生成一个有效性证明。为了加快证明生成过程,不同区块的证明可以由不同的证明者并行生成。

在为第i个块生成区块证明P之后,证明者会将其发送回协调器。每隔K个区块,协调器向另一个证明者分派一个聚合任务,将k个区块证明聚合为一个聚合证明A。

最后,协调器向Rollup合约中提交聚合证明A,通过对先前提交给Rollup合约的状态根和交易数据commitment进行验证,最终可以确定从i+1到i+k的L2Block。

上图说明了Scroll区块将在多步骤的过程后在L1上最终完成。每个L2区块将经过以下三个阶段,直到最终确定:

预提交

。预提交示block已由定序器提出并发送给证明者。尽管预提交的区块还不是ScrollL2链的规范部分,但是由于它们尚未发布在以太坊上,因此信任定序器的用户可以选择预期对它们采取的行动。

提交

。提交表示该区块的交易数据已经发布在以太坊的Rollup合约上。这确保了区块的数据可用性,但不能证明它是以有效的方式执行的。

终结

。终结状态表示该区块中的交易已经被正确执行,并且通过了以太坊上的有效性证明验证。最终完成的区块被认为是ScrollL2链的规范部分。

Scroll与其他ZKRollup方案的区别

总体而言,Scroll与已上线主网的

Polygon

zkEVM、StarkNet以及

zkSync

Era最大的区别在于Scroll更接近原生以太坊实现,对EVM

开发者

来说更加友好。

ScrollvsPolygonzkEVM

二者在实现方面存在一些

技术

差异,。一是Scroll直接fork被广泛使用的以太坊节点实现Geth生成Layer2的区块,接近原生以太坊实现。Scroll设计了不同的子电路来证明Geth执行跟踪中的每个操作码,并且更容易验证电路与原生以太坊具有完全相同的行为。而PolygonzkEVM则使用新的汇编语言重写每个EVM操作码,然后为其底层状态机生成证明。

另一个区别是,Scroll对zkEVM电路和聚合电路都使用SNARK。PolygonzkEVM是使用STARK作为他们的zkEVM电路,并使用SNARK作为聚合电路来聚合STARK证明。

ScrollvsStarkNet

与StarkNet相比,Scroll以EVM等效性为目标,希望原生zkEVM解决方案以实现字节码级兼容性,对以太坊开发者更加友好;而StarkNet是一个对于ZK友好而对开发者不友好的方案。故StarkNet建立开发者和项目生态具有一定的学习成本,也存在不小的挑战。

ScrollvszkSync

相较于Scroll对EVM字节码级的兼容性,zkSync是在语言级别兼容EVM的,故对于

智能合约

的开发者而言,需要对部署带有BlackBlox的编译器的额外信任,也需要更多的时间来进行安全审计。

Scroll的去中心化梦想

Scroll团队成员张烨曾发表了一篇名为

《Scroll背后的理念》

的文章。这篇文章详细描述了Scroll的愿景:除了Scroll项目本身,团队更加希望为以太坊的zkEVM研究做出贡献。

文章中提到,相比于「闭门造车」,Scroll从一开始就做出了与社区共同发展的决定,并且也一直在践行这一点,包括由社区驱动开发zkEVM、开展零知识证明方面的公共教育、维护Python版本的zkEVM规范等。

除了上述方面的社区化运作,Scroll还强调了更多方面的去中心化,包括定序器、证明者等等。总体而言,Scroll更希望成为一个类似于以太坊一样,虽然有核心开发团队,但仍然在底层技术和基础设施层面开放的协议,并最终推动zkEVM生态的蓬勃发展以及主网与zkEVM的兼容,乃至以太坊

Layer1

本身想要达到的最终目标。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:0ms0-4:220ms