前序博客有:
近期,Polygon团队开源了其Hermez 2.0 zkEVM代码,公开测试网即将上线:
使用ZK proofs对以太坊扩容的基本方法是构建ZK rollup,这是一种Layer 2协议,它“rollup”了大量交易,并使用单个ZK validity proof 向以太坊主网证明了所有交易。

采用ZK rollup实现以太坊扩容的优势明显:
Polygon Hermez 2.0 zkEVM与以太坊主网EVM兼容。可将以太坊主网的智能合约部署在Polygon zkEVM中,可共用以太坊现有的开发工具和套件。
Hermez 1.0为以太坊第一个去中心化ZK Rollup,于2021年3月上线,可实现2000tps,足以满足ETH及ERC-20 token转账需求。
Hermez 2.0定位为zero-knowledge Ethereum Virtual Machine(zkEVM)—— 可 以透明方式运行以太坊交易 并 为智能合约附加zero-knowledge-proof validations。为此,需要重建 透明部署现有以太坊智能合约的所有EVM opcodes。
相比于Hermez 1.0,Hermez 2.0的最主要功能是提供智能合约支持。
Polygon Hermez 2.0总体架构为:

Polygon zkEVM中包含的主要元素有:
Hermez设计为去中心化的,不同于Hermez 1.0中的Proof-of-Donation(PoD)共识算法,Hermez 2.0将采用Proof of Efficiency(PoE)共识算法。
在zk-rollups中实现去中心化共识是充满挑战的,因为在Layer2中PoS共识存在leader选举的一些问题(如无法硬分叉、少量%质押可能引起的攻击——如恶意一直产空块等)。
Hermez 2.0中的节点需要高效生成zk validity proofs(对于prover来说是计算密集型的),使得整个L2层正常工作,将产batch(L2区块)的权利给随机的validator是无法满足该要求的。
Proof of Donation/Proof of Burn(PoD/PoB)是一种去中心化竞价模式,以获得特定时间段的产块权利。此时,需要设置经济激励以使validators是very efficient的 以 具备竞争力,这是一个很大的改进。
但是Proof of Donation/Proof of Burn(PoD/PoB)共识主要存在以下问题:
L2 zk-rollup共识算法应满足如下要求:
Proof-of-Efficiency(PoE)共识算法分2步实现,可由不同的参与者完成:
为此,PoE智能合约有2个基本的接口:
sendBatch:用于接收Sequencer的batchesvalidateBatch:用于接收Aggregator的validity proof,进行validate batches
PoE智能合约对Sequencer的要求为:
PoE智能合约对Aggregator的要求为:
Sequencer负责收集用户的L2交易。
Sequencer在网络中选择并预处理a new L2 batch,然后将所选中的所有L2交易 为data 发送一笔L1 TX。
任何人都可成为Sequencer,这是无需许可的角色,包含了a gateway to the network。
有趣的点在于:
Sequencer提议batches的动机在于:

为向L1网络提议新batch,Sequencer需要发起一笔包含了所有batch transactions data的L1交易并支付相应的gas费,同时,协议中定义了 其必须存入以$MATIC token支付的额外费用。这样,可激励Sequencer提议有效的batches以及有效的交易。
根据网络负载情况,batch fee将是可变的,可根据protocol合约中的某个参数来计算。
L1交易内的batches,是以CALLDATA形式存在的,将用作L2网络的data availability,且任何新的、无许可的节点都可同步和重构该状态。
一旦L1交易被mined,其中定义的L2 TXs的data availability将按指定顺序执行,从而构建了确定性的new state,网络节点可将其计算为a virtual future state。当该new stated valid proof(ZKP)生成并在L1 mined时,该new state即settled了。这就是共识协议的第二步。
zk-rollups的主要优势在于,validity proof所提供的交易的快速finality。而PoE中的第二步用于强化这些proof的有效性。
与Sequencer类似,Aggregator也是PoE中任何人都可参与、无需许可的参与方。
第一个为L2 new state 创建validity proof的aggregator即获得了创建validity proof的权利,以及部分交易手续费。

具体为:
aggregator需要自己指定触发proof生成的标准,并基于自己的策略参与竞争。
如,若对于包含了少量TXs的batches,某些aggregator会认为不值得为其生成proof,知道有更多的价值后,才会为 N N N个proposed batches生成proof证明相应的状态该笔。而另外一些aggregator可能采用不同的策略。
对于提交晚了的proof,智能合约会执行Revert操作。所以,如果不是第一个提交validity proof的aggregator,其损失的生成proof的开销,但是大部分gas费都可收回。
当然,当且仅当aggregator正确处理了proposed batches时(按顺序处理batch内的所有交易),该validity proof才有效。该机制类似于Polygon Hermez v1.0中的 ”Force tx“,有助于避免审查。
这种机制有助于避免L2被单一方控制,以及可避免许多潜在攻击,尽管任何Sequencer都可提议a batch,但是也要承担相应的费用。
而Aggregator也可 以非许可的方式参与进来,因为总会有某个经济价值点,使得有人有兴趣来生成并提交validity proof。
Polygon Hermez网络会启动一个Boot Aggregator backing up,使得在bootstrapping阶段,可 以特定频率来生成new validity proof。
手续费的分发规则为:
即:
网络中需发布一个客户端,以实现同步并覆盖参与者角色——如Sequencer或Aggregator。zkNode就是相应的客户端,为运行Hermez 2.0 node所必须的软件。
Hermez 2.0参与者可自行决定其参与方式:
Aggregator除运行zkNode之外,还需要使用zkEVM的核心部分来进行验证。zkEVM的该核心部分称为zkProver(又名Prover)。
Hermez 2.0 zkNode模块化架构流程图为:

上图中的:
ethBlockNum 和 last ethBlockHash 是否已同步。Hermez 2.0采用了最先进的零知识技术。它将使用一个称为zkProver的零知识验证程序,该程序旨在在任何服务器上运行,并且正在设计为与大多数消费类硬件兼容。
每个Aggregator将使用zkProver来验证batches并提供validity proofs。
Hermez 2.0 zkProver的总体架构为:

zkProver包含了:
简而言之,zkEVM以多项式形式表示状态变化。因此,每个proposed batches必须满足的约束实际上是多项式约束或多项式恒等式。也就是说,所有有效batches必须满足某些多项式约束。
Main Executor负责处理zkEVM的执行,会:
zkEVM中证明交易正确性的每一步计算都是一个state machine。
zkProver是整个项目中最复杂的部分,包含了多个state machines:
因此,二级状态机的集合是指zkProver中所有状态机的集合。它本身不是一个子组件,而是单个二级状态机的各种执行器的集合。具体的二级状态机有;
根据每个SM负责的具体操作,一些SM同时使用zkASM和PIL,而另一些SM仅使用一种。
Hermez 2.0 state machines之间的依赖关系为:

STARK,为Scalable Transparent ARgument of Knowledge的简称,是一种无需可信设置的proof system。
STARK-proof builder负责生成zero-knowledge STARK-proofs,以证明所有的多项式约束条件都满足。
State machines负责生成多项式约束。
zk-STARKs用于证明batches满足这些多项式约束条件。特别地,zkProver使用Fast Reed-Solomon Interactive Oracle Proofs of Proximity(RS-IOPP),俗称为FRI,来对zk-STARK证明加速。
SNARK,为Succinct Non-interactive ARgument of Knowledge的简称,是一种proof system。
由于STARK-proof的size要大于SNARK-proof的size,Hermez 2.0 zkProver使用SNARK-proof来证明STARK-proof的正确性。结果是,将SNARK-proof做为validity proof,使得可更便宜地在L1上验证该validity proof。
目标是生成CIRCOM circuit,将CIRCOM circuit用于生成SNARK proof 或 用于验证SNARK proof。
最终是采用PLONK SNARK proof还是GROUTH16 SNARK proof还暂未确定。
典型的Bridge智能合约由2个智能合约组成,一个智能合约部署在链A,另一个部署在链B。
Hermez 2.0的L2-to-L1 Bridge智能合约也是由2个合约组成:
除了部署位置不同外,这两个合约实际上是相同的。
通常Bridge智能合约是L2-to-L1 Bridge,但是Hermez 2.0 Bridge更灵活且可互操作。可作为任意2个L2链(L2_A和L2_B)之间的bridge,或者任意L2(如L2_X)与L1(如以太坊)之间的bridge。从而支持资产在多个rollups之间转移,从而将其命名为"LX-to-LY Bridge"。
Bridge L1 Contract负责2个操作:
bridge:将资产由一个rollup转移到另一个rollup。claim:当合约从任意rollup claim时,使用claim操作。为满足以上2种操作,Bridge L1 Contract需要由2棵Merkle tree:
globalExitTree:包括了所有rollups的exit trees的所有信息。mainnet exit tree:包含了用户与主网交互的交易信息。名为global exit root manager L1的合约负责管理跨越多个网络的exit roots。
exit tree结构为:

Bridge L2 Contract部署在L2 with Ether on it。将Ether设置在genesis上是为了实现native Ether的mint或burn。
Bridge L2 Contract还需要包含在globalExitTree Merkle Tree内的所有rollups的exits trees的所有信息。此时,一个名为global exit root manager L2的合约负责管理跨越多个网络的exit roots。
注意,当某batch在L1 PoE智能合约内验证通过后,global exit root manager L1内相应的rollup exit root将更新。
Bridge L2 Contract负责:
bridge和claim操作globalExitTree和rollup exit tree交互以更新exit roots。以上为达成Hermez 2.0设计思想的工程化实现。
Hermez 2.0的设计思想为:
效率是网络性能的关键。Hermez 2.0采用了多个实现策略来保证效率:
在Hermez 2.0系统的特定组件内还实现了多种其它策略,如:


[1] 2022年5月博客 Polygon ZK: Deep Dive Into Polygon Hermez 2.0
[2] 2022年7月博客 The Future is Now for Ethereum Scaling: Introducing Polygon zkEVM