Polygon zkEVM——Hermez 2.0简介

1. 引言

前序博客有:

近期,Polygon团队开源了其Hermez 2.0 zkEVM代码,公开测试网即将上线:

使用ZK proofs对以太坊扩容的基本方法是构建ZK rollup,这是一种Layer 2协议,它“rollup”了大量交易,并使用单个ZK validity proof 向以太坊主网证明了所有交易。
在这里插入图片描述

采用ZK rollup实现以太坊扩容的优势明显:

  • 1)以单笔交易 代替了 很多笔交易
  • 2)增加了交易吞吐量
  • 3)节约了手续费
  • 4)降低了延迟等待。

Polygon Hermez 2.0 zkEVM与以太坊主网EVM兼容。可将以太坊主网的智能合约部署在Polygon zkEVM中,可共用以太坊现有的开发工具和套件。

2. 何为Hermez 2.0?

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中包含的主要元素有:

  • 1)共识算法
  • 2)zkNode软件
  • 3)zkProver
  • 4)LX-to-LY Bridge
  • 5)Sequencers和Aggregators(需要这2个角色 以达成网络共识)
  • 6)Hermez 2.0网络中的活跃用户,以创建交易

3. Hermez 2.0 共识算法——PoE

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)共识主要存在以下问题:

  • 1)对于某个特定时间,网络由单一actor控制,其可能作弊,即使有办法来减轻影响,也无法保证L2 service层不受一丝影响,特别是在bootstrapping阶段。
  • 2)对于coordinators/validators来说,竞价协议是昂贵和辅助的,也是当前最有效的激励方式。由于拍卖需要提前一段时间进行竞标,因此很难对它们进行自动化,而且预测的复杂性很高。
  • 3)选出”the best“ operator使得”赢家通吃“的问题 。使得稍差性能的运营商无法参与竞争,结果就是,控制网络的运营商变得非常集中,从而产生抗审计限制。

L2 zk-rollup共识算法应满足如下要求:

  • 1)Permissionless access to produce L2 batches。
  • 2)Efficiency as key to network performance。
  • 3)Avoid control from any single party。
  • 4)Protection from malicious attacks。
  • 5)Total validation effort proportional to the value in the network。

Proof-of-Efficiency(PoE)共识算法分2步实现,可由不同的参与者完成:

  • 1)第一步的参与者称为Sequencer。sequencer可能是a wallet app、an exchange、或者a game等等。sequencer之间可相互协作,也可不协作。负责将L2的交易打包为batches并添加到L1的PoE智能合约中。
  • 2)第二步的参与者称为Aggregator。Aggregator之间是竞争的。负责检查transaction batches的有效性,并提供validity proofs。

为此,PoE智能合约有2个基本的接口:

  • 1)sendBatch:用于接收Sequencer的batches
  • 2)validateBatch:用于接收Aggregator的validity proof,进行validate batches

在这里插入图片描述

PoE智能合约对Sequencer的要求为:

  • 1)任何运行zkNode(为运行Hermez 2.0 node所必须的软件),均可成为Sequencer。
  • 2)每个Sequencer都必须以$Matic token来支付fee,以此来获得创建和提交batches的权利。
  • 3)提交了有效batches(由有效交易组成)的Sequencer,受交易请求者(网络用户)支付的手续费激励。
  • 4)Sequencer收集L2交易,将其预处理为a new L2 batch,然后将该batch作为a valid L1交易提交到PoE智能合约。

PoE智能合约对Aggregator的要求为:

  • 1)Aggregator负责为由Sequencer已提交的L2交易生成validity proof。
  • 2)Aggregator除了运行Hermez 2.0 zkNode软件之外,还需要专业的硬件来创建zero-knowledge validity proof。在此称为zkProver。
  • 3)第一个为某个batch或某些batches提交validity proof的Aggregator,可赚取Sequencer为其batch支付的Matic费用。
  • 4)Aggregator仅需表明其验证交易的意图,并按照其自身的策略来生成validity proof参与竞争。

3.1 PoE共识中的Sequencer

Sequencer负责收集用户的L2交易。
Sequencer在网络中选择并预处理a new L2 batch,然后将所选中的所有L2交易 为data 发送一笔L1 TX。
任何人都可成为Sequencer,这是无需许可的角色,包含了a gateway to the network。

有趣的点在于:

  • 对于zk-rollup模式,这些提议的batches会记录在L1交易内;
  • 对于Validium模式,这些提议的batches会记录在另一data availability network。

Sequencer提议batches的动机在于:

  • 其pool内交易的经济值
  • 或 满足用户的要求(Sequencer可要求改变手续费)

在这里插入图片描述
为向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了。这就是共识协议的第二步。

3.2 PoE共识中的Aggregator

zk-rollups的主要优势在于,validity proof所提供的交易的快速finality。而PoE中的第二步用于强化这些proof的有效性。

与Sequencer类似,Aggregator也是PoE中任何人都可参与、无需许可的参与方。

第一个为L2 new state 创建validity proof的aggregator即获得了创建validity proof的权利,以及部分交易手续费。
在这里插入图片描述

具体为:

  • Sequencer提议的batches按其在L1中的顺序排序,且在L1中包含了相应的transaction data。
  • PoE智能合约验证第一个validity proof通过后,即接受并更新到a new valid state,该new valid state中可包含一个或多个proposed batches。

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。

3.3 PoE的经济模型

手续费的分发规则为:

  • 1)L2 TXs的手续费将由创建并提交validity proof的aggregator处理并分发。
  • 2)所有TX手续费将发送到提交每个batch的相应Sequencer。
  • 3)创建a batch的deposited fee 将发送给 将该batch包含在validity proof中的Aggregator。

即:

  • Sequencer赚L2的交易手续费,但是只有相应的validity proof提交后,Sequencer才能获得其所提交的batch内的L2交易手续费;
  • Sequencer向L1提交batch时,除L1交易手续费之外,还需额外支付一个以MATIC token支付的费用,这笔MATIC token费用将由 提交了该batch对应的validity proof的Aggregator获得。即Aggregator赚取Sequencer支付的batch MATIC手续费。

4. zkNode软件

网络中需发布一个客户端,以实现同步并覆盖参与者角色——如Sequencer或Aggregator。zkNode就是相应的客户端,为运行Hermez 2.0 node所必须的软件。

Hermez 2.0参与者可自行决定其参与方式:

  • 1)仅作为一个简单的节点,以获悉网络状态。
  • 2)以Sequencer或Aggregator角色参与batch production。

Aggregator除运行zkNode之外,还需要使用zkEVM的核心部分来进行验证。zkEVM的该核心部分称为zkProver(又名Prover)。

Hermez 2.0 zkNode模块化架构流程图为:
在这里插入图片描述
上图中的:

  • 1)Synchronizer:
    除sequencing和validating进程之外,zkNode中还支持对batches和validity proofs的同步,仅在batches和validity proofs提交到L1之后才做相应的同步。该子模块称为Synchronizer。
    Synchronize负责监听以太坊链上事件,包括new batches,以保持state的完全同步。从events中读取的信息必须存储在database中。Synchronizer还必须处理可能的reorgs——通过检查last ethBlockNum 和 last ethBlockHash 是否已同步。
  • 2)RPC(remote procedure calls)接口:
    为与以太坊兼容的JSON RPC接口。支持将zkEVM与现有工具集成,如Metamask、Etherscan、Infura。RPC向Pool添加交易,通过只读方法与State交互。
  • 3)State子模块:
    实现了Merkle Tree并连接到DB后台。会:
    • 在block level检查integrity(即,关于gas、block size等相关信息),
    • 检查某些交易相关信息(如签名、足够的balance等)
    • 将smart contract(SC)代码存储到Merkle tree中,并使用EVM来处理交易。

5. zkProver

参考资料

[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

猜你喜欢

转载自blog.csdn.net/mutourend/article/details/126034757