Hermez 1.0 是以太坊主网上有史以来第一个去中心化的 ZK Rollup。Polygon Hermez 一直忙于构建 Hermez 2.0 —— 一个以太坊虚拟机(EVM)的 ZK 实现,这也是以前从未完成过的事情。

原文:ZKVerse: Deep Dive Into Polygon Hermez 2.0

作者:Polygon Team

编译:zCloak Network

原用标题(译后)深入了解 Polygon Hermez 2.0

什么是 Polygon Hermez 2.0 ?

Polygon Hermez 2.0,以下简称 Hermez 2.0,是一个去中心化的以太坊 L2 可扩展性解决方案,利用加密的零知识技术为链外交易计算提供验证和快速终态。

Hermez 1.0 已于 2021 年 3 月上线,是去中心化的、无需许可的,并已扩展到 2000 tps 。所以它成功地完成了设计之初的目的,即扩大 ERC-20 tokens 的支付和转移规模。

该团队一直致力于将 Hermez 2.0 作为一个零知识以太坊虚拟机(zkEVM)来开发,一个以透明的方式执行以太坊交易虚拟机,包括具有零知识证明验证的智能合约。虽然采取这种革命性的设计方法是一个艰难的决定,但其目的是最大限度地减少用户和 dApps 在使用该解决方案时的摩擦。

这个方法需要重新创建所有 EVM 操作代码,以便透明地部署现有的以太坊智能合约。为此,一套新的技术和工具正在被创建和设计中。

整体架构

Hermez 2.0 的主要功能是提供智能合约支持。

它将执行状态变化,这些变化来自于用户发送给以太坊 L2 的交易的执行,并随后产生有效性证明,以证明链外状态变化计算的正确性。

Hermez 2.0 系统是一个 zkEVM ,由几个基本组件组成:共识算法、zkNode 软件、zkProver、LX-to-LY 桥、排序器(Sequencers)和聚合器(Aggregators)(这两者是达成网络共识所必须的参与者),以及 Hermez 2.0 网络中创建交易的活动用户。

因此,Hermez 2.0 的框架架构如下。

图 1:Hermez 2.0 框架概述

共识算法

令人好奇的是 "Hermez 2.0 使用什么共识算法?" 也就是说,Hermez 2.0 的节点如何就将哪个区块添加到链上而达成一致。

Hermez 2.0 和其早期版本一样都使用捐赠证明(PoD),是被设计为去中心化的。但旧的 PoD 已让位于一种称为效率证明(PoE)的新共识算法。

为什么需要取代 PoD ?

PoD 模型失宠有几个原因。

首先,PoD 模型由于其拍卖协议的复杂性,很容易受到攻击,特别是在自举阶段。此外,由于网络在任何时间点都是由任何未经许可的参与者控制的,如此如果有第三方变成恶意的或遇到操作问题,网络就有可能遭受服务水平的延迟。

其次,事实证明,拍卖协议对协调器和验证者来说不仅很复杂而且成本也很高。更重要的是,要考虑到并不是每一个相互竞争的验证者都能得到奖励,而只是最有效的验证者才会得到奖励。

第三,选择 "最佳 "运营商的方式相当于赢家通吃模式,这对性能稍差的竞争者不公平。这是因为仅有少数几个被选定的运营商会比其它运营商更经常地验证批,这违背了网络去中心化的理想。

为什么倾向 PoE ?

PoE 模型的简单性是其受到青睐的主要原因。

它解决了许多在 PoD 模型中遇到的挑战,如上面讨论的设计攻击。

PoE 的战略实现能保证网络:

  • 无需许可的生成 L2 批,
  • 是高效的,这是网络整体性能的关键,
  • 达到可接受的去中心化成程度,
  • 免受恶意攻击,特别是来自验证者的攻击,并且
  • 保持整体验证工作和网络中价值的均衡

目前正在探索将 PoE 与 PoS 耦合的可能性。

数据可用性

一个典型的 zk-rollup 架构要求数据和有效性证明都发布在链上,其中数据用于用户重建全状态。

然而鉴于以太坊的设置,在链上发布数据意味着产生 gas 费用。这导致了一个艰难的选择:完整的 zk-rollup 配置或一个负担得起的网络。

除非证明模块可以被大幅加速以减轻验证者的成本,否则混合模式是必然的。

尽管团队还没有最终确定最佳共识配置,但明显的可选项是:

  1. Validium 选项:链上证明,但数据存储在其它地方。
  2. Volition 选项:对某些交易进行完全的 zk-rollup,数据和证明都在链上,而对其它交易只是证明在链上。

PoE 智能合约

Rollups 需要两个进程,交易分批以及验证该分批的交易。Hermez 2.0 将使用排序器和聚合器来分别执行这两个进程,即交易的分批和验证。

也就是说,排序器会将交易请求收集成批次,然后提交到 PoE 智能合约中,而聚合器会检查交易批次的有效性并提供有效性证明。

因此 PoE 智能合约有两个基本调用:一个调用是接收来自排序器的批次,另一个调用是给聚合器以请求验证批次。见下图 2。

PoE 代币经济学

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

排序器的约束:

  • 任何运行 zkNode 的人,也就是运行 Hermez 2.0 节点所需软件的人,都可以成为一个排序器。
  • 每个排序器必须支付 $Matic 费用,以获得创建和提交批的权利。 
  • 提交一个由有效交易组成的有效批的排序器,由交易请求者(网络用户)支付激励费用。
  • 具体来说,排序器收集用户的 L2 交易,将其预处理为一个新的 L2 批,然后将其作为有效的 L2 交易提交给 PoE 智能合约。

聚合器的约束:

  • 聚合器的任务是为排序器提交的 L2 交易生成有效性证明。
  • 除了运行 Hermez 2.0 的 zkNode 软件外,聚合器需要有专门的硬件来创建零知识有效性证明。我们在这里把它为 zkProver。
  • 最先提交某批或某几批的有效性证明的聚合器,可获得由该批的排序器支付的 $Matic 费用。
  • 聚合器只需表明他们验证交易的意图,然后根据他们自己的策略生成有效性证明参与比赛。
图 2:简化的 PoE

zkNode

网络需要发布实现同步的客户端,并涵盖作为排序器或聚合器的参与者角色。zkNode 即是这样一个客户端,运行 Hermez 2.0 节点所需的软件。

Polygon Hermez 2.0 的参与者将选择他们的参与方式:仅仅作为一个节点以了解网络的状态,抑或是作为排序器或聚合器中的任何一种角色参与到生产批的过程中。聚合器既要运行 zkNode 也需应用 zkEVM 的核心部分进行验证,这被称为 zkProver(在下图 3 中被标为 Prover)。

zkNode 除了排序和验证进程,还可通过一个叫做同步器的子组件,支持批与批的有效性证明被添加到 L1 之后的同步。

因此,同步器(Synchronizer)负责从以太坊区块链读取事件,包括新的批,以保持状态完全同步。从这些事件中读取的信息必须存储在数据库中。同步器还处理可能的存在的重排情况,这将通过检查最新的 ethBlockNum 和最新的 ethBlockHash 是否同步来判断是否需要重排。

图 3:Hermez 2.0 zkNode

zkNode 的架构是模块化的,实现了如上图 3 所描述的一系列功能。

远程调用(RPC)接口是与以太坊的 JSON RPC 接口兼容。它的实现是为了整合 zkEVM 与现有的工具,如 Metamask、Etherscan 和 Infura。远程调用(RPC)将交易添加到池中,并使用只读方法与状态进行交互。

状态子组件实现了 Merkle Tree 并连接到数据库后端。它检查区块级别的完整性(例如:与 gas、区块大小等有关的信息)和一些交易相关的信息(如签名、足够的余额等)。状态还将智能合约代码存储到 Merkle Tree 中,并使用 EVM 处理交易。

zkProver

Hermez 2.0 采用了最先进的零知识技术。它将使用一个被称为 zkProver 的零知识验证器,该验证器计划可在任何服务器上运行,并与大多数消费级硬件兼容。

每个聚合器都将使用 zkProver 来验证批并提供有效性证明。

zkProver 有自己的详细架构。它将主要由主状态机执行程序、一组二级状态机(每个都有各自的执行程序)、STARK-proof 构建程序和 SNARK-proof 构建程序组成。Hermez 2.0 zkProver 的简化图见下图 4。

图 4:zkProver 简化图

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

主状态机执行程序

主执行程序处理 zkEVM 的执行。在这里,EVM 的字节码用一种新的零知识汇编语言(zkASM)进行解释,该语言是由 Hermez 2.0 团队专门开发的。执行程序还设置了每批有效交易必须满足的多项式约束。该团队专门开发的另一种新语言,称为多项式等式语言(PIL:Polynomial Identity Language),用于编码所有的多项式约束。

二级状态机的集合

证明交易正确性所需的每个计算在 zkEVM 中都被表示为一个状态机。zkProver 是整个项目中最复杂的部分,由几个状态机组成:从执行逐位功能的状态机(如 XORing、padding, 等)到执行哈希的状态机(如 Keccak、Poseidon),甚至到签名验证(如 ECDSA)。

因此,二级状态机的集合是指 zkProver 中所有状态机的集合。它的本质不是一个子组件,而是单个二级状态机的各种执行程序的集合。它们是:二进制 SM、内存 SM、存储 SM、Poseidon SM、Keccak SM 和算术 SM。这些 SM 之间的依赖关系见下图 5。

根据每个 SM 负责的具体操作,一些 SM 同时使用 zkASM 和 PIL ,而另一些则只使用其中一个。

图 5:Hermez 2.0 状态机

STARK-proof 构建程序

STARK 是 Scalable Transparent ARgument of Knowledge 的缩写,是一个证明系统,它使证明人能够在无需可信设置的情况下生成可验证证明。

STARK-proof 构建程序指的是用于生成 zk-STARK proof 的子组件, zk-STARK proof 是证明所有多项式约束得到满足的 zk-proof。

zk-STARKs 被用来证明批满足状态机产生的多项式约束。特别是,zkProver 利用 FRI 以促进加速 zk-STARK 的证明过程。

SNARK-proof 构建程序

SNARK 是 Succinct Non-interactive ARgument of Knowledge 的缩写,也是一个产生可验证证明的证明系统。

由于 STARK-proof 比 SNARK-proof 大得多,所以 Hermez 2.0 zkProver 使用 SNARK-proof 来证明 STARK-proof 的正确性。因此,SNARK-proof 被作为有效性证明发布到 L1 上进行验证要便宜得多。

团队的目的是生成 CIRCOM 电路,该电路可用来生成或验证 SNARK-proof 的。至于是使用 PLONK 还是 GROTH16 SNARK 证明,还有待决定。

LX-to-LY 桥

一个典型的智能合约桥是两个智能合约的组合,分别部署在两条链上。

Hermez 2.0 的 L2-to-L1 智能合约桥是由 L1 合约桥和 L2 合约桥组成,这两个合约本质上是相同的,除了各自的部署地点不同。L1 合约桥在以太坊主网上以管理 rollups 之间的资产转移,而 L2 合约桥在一个特定的 rollup 上负责主网和 rollups 之间的资产转移。

L1 合约桥

L1 合约桥执行 bridgeclaim 两个操作。bridge 操作将资产从一个 rollup 转移到另一个 rollup,而 claim 操作用于合约向任何 rollup 提出声明的时候。

L1 合约桥需要 globleExitTree(全局退出树)和 mainnet exit tree(主网退出树)这两个 Merkle Tree 来执行上述操作。globleExitTree   包含了所有 rollups 退出树的所有信息,而 mainnet exit tree 有与主网互动的用户的交易信息。

一个名为 L1 全局退出根管理器的合约,负责管理跨多网络的退出根。

图 6 : 退出树结构

L2 智能合约桥

其次,L2 合约桥将被部署在支持 ETH 的 L2 上。ETH 将被设置在创世纪以实现本地 ETH 的铸造和燃烧。

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

请注意,当一个批次在 L1 的 PoE 智能合约中被验证时,rollup 根出在 L1 全局退出根管理器中被更新。L2 合约桥处理 bridgeclaim 操作的 rollup 部分,同时与 globleExitTreerollup exit tree   进行互动,以更新退出根。

结束 LX-to-LY 桥

通常情况下,智能合约桥是 L2-to-L1 桥,但 Hermez 2.0 桥更具灵活性和可互操作性。它可以作为任意两个 L2 链之间的桥梁,即 L2-A 到 L2-B;或任意 L2 到 L1 的桥梁,即 L2-X 到 L1(此处 L1 指以太坊区块链)。因此,它允许资产在多个 rollups 之间转移。

Hermez 2.0 的设计理念

上述关于工程和实现的决定将帮助 Hermez 2.0 实现其设计理想:一个无需许可的、去中心化的、安全的、高效的、可验证区块数据的网络。

开发工作旨在实现无许可性,即允许任何拥有 Hermez 2.0 软件的人参与到网络中。例如,共识算法将使每个人都有机会成为排序器或集合器。

数据可用性对于去中心化至关重要。在去中心化中,每个用户都有足够的数据来重构一个 Rollup 的全状态。如上所述,团队仍需决定数据可用性的最佳配置。目的是确保没有审查制度,没有一方可以控制网络。

Hermez 2.0 的设计考虑到了安全性。L2 解决方案的大部分安全性继承自以太坊,智能合约将保证任何执行状态改变的人都必须:第一,正确地执行;第二,创造一个证明以证实状态改变的有效性;第三,利用链上的有效性证明进行验证。

效率改善和整体战略

效率是网络性能的关键。因此 Hermez 2.0 应用了几种实施策略来保证效率:

  1. 部署 PoE 以激励最有效的聚合器参与证明生成过程中。
  2. 所有计算在链下执行,链上仅保留必要的数据和 zk-proofs。

其它各种策略在 Hermez 2.0 系统的特定组件中实现。比如说:

  1. 智能合约桥的实现方式仅使用了退出树根,例如 UTXO 方式的结算。
  2. 在 zkProver 中利用专门的加密原语,以加快计算速度和最小化证明大小:
  • 运行一个特殊的零知识汇编语言(zkASM)来解释字节码。
  • 使用例如 zk-STARKs 这样的零知识工具进行证明会非常快,尽管其产生的证明大小非常大。因此,与其将相当大的 zk-STARK proofs 作为有效性证明发布到 L1,不如用一个 zk-SNARK 来证明 zk-STARK proofs 的正确性。这些 zk-SNARKs 反过来又被作为状态变化的有效性证明发布到 L1,如此 gas 成本从 500 万减少到了 35 万 。

结语

鉴于 EVM OPCODE 兼容性,Hermez 2.0 被设计为可无缝执行智能合约并能有效验证状态变化。它不仅有希望做到安全和高效,且还能实现有竞争力的去中心化。

为努力实现快速地证明,以及实现用于快速验证的简洁性证明,团队专注于 zkProver 的优化。

该团队还使得各个不同的 Polygon 团队一起协作共事,这些团队同时也在研究实现以太坊可扩展性的 zk-rollups 解决方案。

团队的下一步工作是为公共测试网做准备,计划在 2022 年中期启动该测试网。

免责声明:作为区块链信息平台,本站所发布文章仅代表作者及嘉宾个人观点,与 Web3Caff 立场无关。本文内容仅用于信息分享,均不构成任何投资建议及要约,并请您遵守所在国家或地区的相关法律法规。