Polygon zkEVM的架构概述

煤油灯科技2022-09-27 10:31

Polygon zkEVM是一种基于加密证明的去中心化以太坊第2层可扩展性解决方案,可为交易提供验证和快速确定性。

本文档介绍了Polygon zkEVM。从Polygon zkEVM的架构概述开始,文档逐步级联到zkEVM子组件的更详细的细节。然而,我们强调此文档仍处于工作中 (WIP)。有些方面已经更详细地介绍了,而其他方面仍需要进一步扩展。此外,本文档的部分内容可能会在以后重新组织,以实现更好的流程。

zkEVM 的架构概述 

除了其前身的设计目的之外,zkEVM的主要功能是提供智能合约支持。它执行由以太坊第2层交易执行(用户发送到网络的交易)产生的状态转换任务。随后,通过采用零知识证明技术,它生成有效性证明,证明这些在链下执行的状态更改计算的正确性。

zkEVM的主要组成部分是: 

  • 效率证明(PoE)共识机制。
  • zkNode软件包括同步器、排序器和聚合器。
  • LX到LY桥接器。
  • zkProver。
  • 创建交易的zkEVM网络的活跃用户。

zkEVM的骨架架构如下图所示:

图1:zkEVM的骨架概述

共识算法:效率证明

效率证明我们的早期版本Polygon Hermez 1.0基于捐赠证明(PoD)共识机制。该模型决定谁将成为下一批创建者。PoD是一种自动进行的去中心化拍卖,参与者(协调者)竞标一定数量的代币,以便他们有机会创建下一批。

但是,对于当前2.0的实施,需要用更简单的效率证明 (PoE) 模型替换PoD。让我们看看为什么PoE优于PoD。

为什么PoD不是最佳选择?

PoD模型超出了我们的首选选项,原因如下:PoD作为一种拍卖模型,已证明对协调者和验证者来说都相当复杂。此外,它也被证明在经济上不太可行。

这种共识机制容易受到攻击,尤其是在引导阶段。在任何给定时间点,网络都由未经许可的参与者控制。如果此类第三方变得恶意或遇到操作问题,这会增加网络遭受服务级别延迟的风险。

PoD分配了在特定时间范围内生产批次的权利,如果要获得任何经济激励,验证者需要非常有竞争力。

选择“最佳”运营商的效果相当于“赢家通吃”的模式,这对性能略逊一筹的竞争对手不公平。因此,只有少数选定的运营商比其他运营商更频繁地验证批次,这违背了网络去中心化的概念。

另一个缺点是拍卖协议对于验证者来说非常昂贵和复杂。拍卖需要提前一段时间出价。

为什么PoE是更好的模型?

效率证明 (PoE) 模型利用现有的捐赠证明机制,并支持多个协调者的无许可参与在L2层生产批次。这些批次是从第1层的汇总事务创建的。与PoD相比,PoE采用更简单的机制,并且由于其更高效地解决PoD固有的问题而被首选。

PoE的战略实施承诺确保网络:

  • 保持其“无许可”功能以生产L2批次
  • 是否有效,这是衡量整体网络性能的关键标准
  • 达到可接受的去中心化程度
  • 防止恶意攻击,尤其是验证者的攻击 
  • 在整体验证工作和网络价值之间保持成比例的平衡。

链上数据可用性的混合模式 完整的 zk-rollup模式要求数据(用户需要重建完整状态)和有效性证明(零知识证明)都发布在链上。然而,考虑到以太坊的设置,在链上发布数据会产生gas费,这是第1层已经存在的问题。这使得很难在完整的zk-rollup配置和混合配置之间进行选择。

在混合模式下,以下任一情况都是可能的:

  • Validium:数据存储在链下,只有有效性证明在链上发布。
  • Volition:对于某些交易,数据和有效性证明都保留在链上,而对于其余交易,只有证明在链上。

除非可以高度加速证明模块以降低验证者的成本,否则混合模式仍然可行。该团队尚未最终确定最佳共识配置。

PoE智能合约 

zkEVM中的底层协议通过使用有效性证明来确保状态转换是正确的。 为了确保遵循一组预先确定的规则以允许状态转换,使用了智能合约。智能合约对有效性证明的验证检查每个转换是否正确完成。 这是通过使用 zk-SNARK 电路实现的。 这种机制需要两个过程:交易批处理和批处理交易的验证。zkEVM使用两种类型的参与者来执行这些过程:Sequencer和 Aggregator。在这种两层模型下:

  • Sequencer向网络提出交易批次,即将交易请求汇总成批次并将它们添加到 PoE 智能合约中。
  • Aggregator检查交易批次的有效性并提供有效性证明。任何未经许可的聚合器都可以提交证明来证明状态转换计算的正确性。

因此,PoE智能合约进行了两个基本调用:一个调用从Sequencer接收批次,另一个调用Aggregator,请求验证批次。请参见下面的图2:

图2:简化的效率证明 

效率证明:Sequencer和Aggregator

PoE智能合约对定序器和聚合器提出了一些要求。

Sequencer

Sequencer接收来自用户的L2交易,将它们作为新的L2批次进行预处理,然后将该批次作为有效的L2交易提议给PoE智能合约。

  • 任何拥有运行zkEVM节点所需软件的人都可以成为Sequencer。
  • 每个Sequencer都必须以MATIC代币的形式支付费用,以获得创建和提议批次的权利。
  • 提议有效批次(由有效交易组成)的Sequencer会受到交易请求者或网络用户支付的费用的激励。

Aggregator

Aggregator从Sequencer接收所有交易信息,并将其发送给证明者,证明者在复杂多项式计算后提供小型zk证明。智能合约验证了这个证明。这样,聚合器收集数据,将其发送给证明者,接收其输出,最后将信息发送给智能合约,以检查来自证明者的有效性证明是否正确。

  • Aggregator的任务是为Sequencers提出的L2交易提供有效性证明。
  • 除了运行zkEVM的zkNode软件外,Aggregator还需要专门的硬件来创建零知识有效性证明。我们在这里称其为 zkProver。
  • 对于给定的一个或多个批次,提交有效性证明的Aggregator首先获得Matic费用(由批次的Sequencer支付)。 
  • Aggregator需要表明他们验证交易的意图,然后他们根据自己的策略竞争产生有效性证明。

zkNode

zkNode是运行zkEVM节点所需的软件。 它是网络实现同步和管理参与者(排序器或聚合器)角色所需的客户端。

  • Sequencer和Aggregator:Polygon zkEVM参与者将选择他们的参与方式;要么作为节点了解网络的状态;或作为两个角色中的任何一个参与批量生产过程:Sequencer或Aggregator。Aggregator运行zkNode,但也使用zkEVM的核心部分执行验证,称为zkProver(在下面的图3中标记为Prover。)
  • Synchronizer: 除了排序和验证过程之外,zkNode还支持批次及其有效性证明的同步,这仅在将它们添加到L1之后才会发生。这是使用称为Synchronizer的子组件完成的。Synchronizer负责从智能合约中获取所有数据,其中包括sequencer(交易)发布的数据和协调器发布的数据(这是有效性证明)。所有这些数据都存储在一个巨大的数据库中,并通过名为“JSON-RPC”的服务提供给第三方。

Synchronizer负责从以太坊区块链读取事件,包括新批次以保持状态完全同步。从这些事件中读取的信息必须存储在数据库中。Synchronizer还处理可能的重组,这将通过检查最后一个ethBlockNum和最后一个ethBlockHash是否同步来检测。

图3:zkEVM zkNode图

zkNode的架构是模块化的,并实现了一组功能,如上图3所示。

  • RPC:RPC(Remote Procedure Call)是一个与以太坊兼容的JSON RPC接口。对于与以太坊区块链交互的软件应用程序(通过读取区块链数据和/或向网络发送交易),它必须连接到以太坊节点。RPC支持zkEVM与Metamask、Etherscan 和Infura等现有工具的集成。它将交易添加到池中并使用只读方法与状态交互。
  • State:实现Merkle Tree并连接到DB后端的子组件。它检查块级别的完整性(与气体和块大小相关的信息等)和一些与交易相关的信息(签名、足够的余额)。State还将智能合约代码存储到Merkle树中,并使用EVM处理交易。
  • zkProver:交易有效的所有规则都在zkProver中实现和执行。zkProver以多项式和汇编语言的形式执行复杂的数学计算;然后在智能合约上验证这些。这些规则可以被视为事务必须完成的约束,以便能够修改状态树或退出树。zkProver 是最复杂的模块;它需要开发两种新的编程语言来实现所需的元素。 阅读下文以了解有关zkProver的更多信息。

zkProver

zkEVM采用先进的零知识技术来创建有效性证明。它使用零知识证明器 (zkProver),旨在在任何服务器上运行,并且被设计为与大多数消费类硬件兼容。 每个聚合器都将使用这个zkProver来验证批次并提供有效性证明。zkProver有自己的详细架构,如下所述。它由一个主状态机执行器、一组辅助状态机(每个都有自己的执行器)、一个STARK证明构建器和一个SNARK证明构建器组成。zkEVM zkProver的简化图参见下图4:

图4:简化的 zkProver图 

简而言之,zkEVM 以多项式形式表示状态变化。因此,每个提议的批次必须满足的约束实际上是多项式约束或多项式恒等式。也就是说,所有有效批次必须满足某些多项式约束。

zkProver架构

zkNode架构由以下部分组成:

  • 主状态机执行器:主执行器处理zkEVM的执行。这是使用团队专门开发的新零知识汇编语言(或zkASM)解释EVM字节码的地方。执行器还设置了每批有效交易必须满足的多项式约束。 该团队专门开发的另一种语言称为多项式标识语言(或 PIL),用于对所有多项式约束进行编码。
  • 辅助状态机:证明交易正确性所需的每个计算都在zkEVM中表示为状态机。zkProver是整个项目中最复杂的部分,由几个状态机组成;从执行按位功能(例如,XORing、填充等)到执行散列(例如,Keccak、Poseidon),甚至验证签名(例如,ECDSA)。

因此,次要状态机的集合是指zkProver中所有状态机的集合。它本身不是子组件,而是各个辅助状态机的各种执行器的集合。状态机的集合是:

(a) Binary SM

​(b) Memory SM

​(c) Storage SM

​(d) Poseidon SM

​(e) Keccak SM

(f ) Arithmetic SM

有关这些SM之间的依赖关系,请参见下面的图5。

虽然一些SM同时使用zkASM和PIL,但其他SM仅依赖其中一种语言,具体取决于每个SM负责的具体操作。

图5:zkEVM状态机

  • STARK Proof Builder:STARK代表“可扩展的透明知识论证”,是一个证明系统,它使证明者能够在不需要可信设置的情况下生成可验证的证明。一个STARK证明生成器是指用于生成零知识STARK证明的子组件,它是证明所有多项式约束都得到满足的事实的zk证明。

状态机生成多项式约束,并且zk-STARK用于证明批次满足这些约束。特别是,zkProver使用“Fast Reed-Solomon Interactive Oracle Proofs of Proximity (RS-IOPP)”,俗称FRI,以促进快速zk-STARK证明。

  • SNARK Proof Builder:SNARK代表“Succinct Non-interactive Argument of Knowledge”,是一种产生可验证证明的证明系统。由于STARK证明比SNARK证明大,zkEVM zkProver使用SNARK证明来证明这些STARK证明的正确性。因此,在L1上验证成本要低得多的SNARK证明作为有效性证明发布。

目的是生成可用于生成或验证SNARK证明的CIRCOM电路。zkEVM是否会使用PLONK或GROTH16 SNARK证明是一个需要讨论的问题。

LX-to-LY桥

LX-LY桥是一种智能合约,允许用户在LX和LY两层之间转移他们的资产。zkEVM中的L1-L2是用于安全存取资产的去中心化桥梁;它是两个智能合约的组合,一个部署在一个链上,另一个部署在另一个链上。

zkEVM中的L1和L2合约是相同的,只是分别部署在哪里。Bridge L1合约位于以太坊主网上,用于管理rollup之间的资产转移,而Bridge L2合约位于特定的rollup 上,负责主网和rollup(或rollup)之间的资产转移。第2层互操作性允许本地机制在不同的L2网络之间迁移资产。该解决方案嵌入在桥接智能合约中。

Bridge L1 Contract 

Bridge L1 Contract进行两种操作:桥接和索赔。桥接操作将资产从一个汇总转移到另一个汇总,而索赔操作适用于合约从任何汇总中提出索赔的情况。

Bridge L1 Contract需要两棵Merkle树来执行上述操作:globalExitTree 和 mainnet exit tree。globalExitTree包含所有汇总的退出树的所有信息,而主网退出树包含与主网交互的用户进行的交易的信息。名为全局出口根管理器L1的合约负责管理跨多个网络的出口根。

出口树结构如下图6所示:

图6:出口树结构 

Bridge L2 Contract 

Bridge L2 Contract 部署在Layer L2上,上面有ether。以太币将设置在创世币上,以便能够铸造/燃烧原生以太币。

Bridge L2 Contract还需要globalExitTree Merkle树中包含的所有rollup的退出树的所有信息。在这种情况下,名为全局出口根管理器L2的智能合约负责管理跨多个网络的出口根。

注意:在L1的PoE智能合约中验证批次时,会在全局出口根管理器L1中更新汇总出口根。Bridge L2 Contract处理桥的汇总端和索赔操作,以及与globalExitTree和汇总出口树交互,主要是更新出口根。

LX-to-LY桥

通常,桥接智能合约是L2-to-L1桥接,但zkEVM桥接更灵活且可互操作。它可以充当任意两个任意第2层链L2_A和L2_B之间或任何第2层(例如 L2_X)和L1(以太坊区块链)之间的桥梁。因此,它允许在多个汇总之间转移资产。因此,术语“LX到LY桥”。

zkEVM设计特点

上述部分中描述的架构细节(用于工程和实现)将帮助zkEVM实现其设计目标。这将意味着一个网络:无需许可、去中心化、安全、高效并带有可验证的块数据。

开发工作的目标是无需许可,即允许任何拥有zkEVM软件的人参与网络。例如,共识算法将使每个人都有机会成为Sequencer或Aggregator。

数据可用性对于去中心化至关重要,因为每个用户都有足够的数据来重建汇总的完整状态。如上所述,团队仍然必须决定数据可用性的最佳配置。 目的是确保没有审查制度,并且任何一方都无法控制网络。

zkEVM的设计考虑了安全性。作为L2解决方案,大部分安全性都继承自以太坊。智能合约将保证执行状态更改的任何人首先必须正确执行;其次,创建一个证明状态变化有效性的证明;第三,利用链上的有效性证明进行验证。

效率和总体战略

效率是网络性能的关键。因此,zkEVM应用了几种实现策略来保证效率。下面列出了其中的一些: 

  • 第一个策略是部署PoE,它激励最有效的聚合器参与证明生成过程。
  • 第二种策略是在链下执行所有计算,同时仅将必要的数据和zk证明保留在链上。

在zkEVM系统的特定组件中还实施了其他策略。 例如:

  • 桥接智能合约的实现方式,例如以UTXO方式结算账户,仅使用Exit Tree Roots。
  • 在zkProver中使用专门的加密原语来加速计算并最小化证明大小,如下所示:

(a) 运行一种特殊的零知识汇编语言 (zkASM) 来解释字节码 

(b) 使用诸如zk-STARKs之类的零知识工具进行证明; 这些证明速度非常快,尽管它们的尺寸更大。

因此,与其发布大量的zk-STARK证明作为有效性证明,不如使用zk-SNARK来证明zk-STARK证明的正确性。这些zk-SNARK反过来作为状态变化的有效性证明发布。这有助于将gas成本从5M降低到350K。

最后的评论和下一步是什么......

鉴于EVM操作码的兼容性,zkEVM旨在无缝处理智能合约并有效验证状态更改。它不仅保证安全和高效,而且还可以实现竞争性的去中心化。为了实现高速证明和快速验证的简洁证明,团队专注于zkProver的优化。

该团队还利用不同Polygon团队之间的协同作用,这些团队也在研究zk-rollup解决方案以实现以太坊的可扩展性。尽管开发距离主网还很远,但自巴黎的EthCC[5] 以来,zkEVM代码的alpha版本(连同所有文档)已经开源。

这样做是为了与开源项目的透明度原则保持一致,并让Polygon Hermez 1.0的开发人员和用户的Polygon社区随着即将发生的变化而更新。我们的下一步将是一个公共测试网。虽然很难确定固定日期,但我们计划在2022年第三季度推出。


原文链接:https://docs.hermez.io/zkEVM/Overview/Overview/#final-remarks-and-whats-next


---煤油灯科技victorlamp.com翻译整理---

你可能也喜欢这些文章

科技互联网,科技,资讯,动态,洞察,量子,计算,AI,人工智能,机器人,区块链,Web3,分布式,操作系统,OS,芯片,视频,深度,论文