Polygon zkEVM 整体架构

Polygon zkEVM 是EVM的zkRollup方案,可以提供智能合约支持,用以提升以太坊的可扩展性。

架构

Polygon zkEVM 的架构图如下:

主要包含以下组件:

  • PoE (Proof of Efficiency) 共识机制
  • zkNode 节点软件
  • zkProver
  • LX-to-LY 桥
  • 序列器 (Sequencers)
  • 聚合器 (Aggregators)
  • 活跃用户

共识机制: PoE

Polygon Hermez 1.0 采用PoD共识,通过竞拍赢得产块机会,2.0则采用更简单的PoE模型,具有去中心化,高效,安全的特征。

数据可用性的混合机制

完全将数据放于链上的成本较高,有两种折中机制:

  • Validium: 数据链下存储,只有证明发布在链上;
  • Volition: 对于有些交易,数据和证明都在链上;对于其它一些交易,只有证明上链。

目前,Polygon zkEVM还有确定好最终的实现方案。

PoE 智能合约

zkEVM 使用两种类型的参与者实现批量交易状态转移的证明:

  • Sequencers: 打包网络中的批量交易,添加到PoE 合约中;
  • Aggregators: 检查交易的有效性,提供有效性证明。任何公开的Aggregator 都可以提交证明,以验证状态转移的有效性。

PoE 智能合约,有两种基本调用: 一方面从Sequencers 获取批量交易,另一方面从Aggregators 获取有效性验证。

Sequencers

序列器从用户获取L2交易,批量提交到PoE 智能合约作为有效的L2交易。

  • 任何人都可以运行zkEVM 节点成为Sequencer;
  • Sequencer 需要支付费用 (MATIC),用于获取批量提交交易的权利;
  • Sequencer 通过用户发起的交易手续费用进行激励;

Aggregators

Aggregator 接收到由Sequencer 提交的批量交易后,将其发给Prover, 通过复杂的多项式计算生成零知识证明,然后提交到智能合约验证证明。

  • Aggregators 主要是为L2 的交易提供有效性证明;
  • 除了运行zkEVM 节点软件,Aggregators 需要专用的硬件创建有效的零知识证明,也称为zkProver.
  • 对于给定的批量交易,若Aggregator 提交了有效的证明,可以赚取Matic 手续费,由Sequencer 支付;
  • Aggregators 通过竞争方式获取生机有效性证明的机会。

zkNode

zkNode 是zkEVM 节点软件,用于实现同步和参与者治理的客户端,主要的组成架构为:

  • Sequencers 和 Aggregators: Polygon zkEVM 参与者可以选择他们的参与方式。或者只同步网络的状态,

或者作为Sequencer 或 Aggregator, Aggregator 运行zkEVM最核心的部分: zkProver.

  • Synchronizer: 除了同步和验证过程,当批量交易添加到L1上后,还需要进行同步过程,通过Synchronizer 完成,用于从智能合约获取数据,包含Sequencers 提交的交易和Aggreator 提交的证明。所有的数据存在一个数据库中,通过 JSON-RPC 为第三方提供服务。

Synchronizer 负责从以太坊区块链读取事件,包括新提交的批量,保持状态完全同步。读取的事件信息存储在区块链中。Synchronizer 也处理可能的重组,通过检测ethBlockNumethBlockHash

zkNode 的架构是模块化的,并实现的的功能有:

  • RPC: RPC 能够使zkEVM 和现有各种工具整合,包含Metamask, Etherscan, 和 Infura等;
  • State: 实现 Merkle Tree 组件,连接DB 后端,检验区块的完整性和交易的有效性,存储智能合约的代码;
  • zkProver: 实现交易有效性的验证规则,执行复杂的多项式计算和汇编语言,由智能合约验证。zkProver 是最复杂的模块,需要开发新的编程语言。

zkProver

zkEVM 利用高级零知识证明技术创建有效性证明,每个Aggregator 使用zkProver 验证批量的交易,提供有效性证明,zkProver的架构如下所示:, 由Main State Machine Executor, a collection of secondary State Machines, a STARK-proof builder, a SNARK-proof builder组成,分别如下:

  • Main State Machine Executor: 主执行器负责zkEVM的执行,将EVM 字节码转换为ZK 汇编语言(zkASM)。 主执行器也设置批量交易的多项式约束,另一种语言PIL (Polynomial Identity Language),用来编码所有的多项式约束。
  • Secondary State Machines:zkEVM中的每个计算是一个状态机,例如执行按位运算的功能(XORing, padding等), hashing (Keccak, Poseidon)等,验证签名(ECDSA).

状态机主要包含: Binary SM, Memory SM,Storage SM, Poseideon SM, Keccak SM, Arithmetic SM。

STARK Proof Builder: STARK ( Scalable Transparent Argument of Knowledge) 无需要可信设置,生成STARK 证明,以实现所有的多项式约束条件。STARK 采用FRI 实现零知识证明。

**SNARK Proof Builder: ** SNARK (Succint Non-interactive Argument of Knowledge) 用以实现验证证明的系统。由于STARK proof 比较大,zkEVM 使用 SNARK 以证明 STARK proof的正确性, SNARK 证明更容易验证,并且比较小。zkEVM 需要确定是采用PLONK 或者GROTH16 SNARK 证明。

LX-to-LY 桥

LX-LY 桥主要使用户在不同的网络转移资产。L1-L2是zkEVM 去中心化的桥,用于存款和取款,有两个智合约,每层分别部署一个。

L1和L2 合约除了部署的位置,其它是类似的。 Bridge L1 合约部署在以太读主网上,Bridge L2 合约部署在具体的rollups上。 L2互操作机制允许资产在L2网络之间转移。

Bridge L1 Contract

Bridge L1 合约执行两种操作: bridgeclaim. bridge 用于在rollup 之间转移资产,claim 用于当用户在rollup 发起 claim的时候。

Bridge L1 合约有两个Merkle 树:globalExitTreemainnet exit treeglobalExitTree 包含所有rollups退出树的信息,mainnet exit tree 主要是用户在主网发起交易的信息。

Bridge L2 合约

Bridge L2 合约部署在L2 上,在创世的时候设置ether, 用于支持原生的ether的minting/burning 操作。Bridge L2合约需要globalExitTree中的所有rollups中exit trees的信息。

**LX-to-LY Brige **

zkEVM 不仅支持L2与主网,也支持L2与L2之间进行资产转移,因为称为LX-to-LY 桥。

zkEVM 设计目标

permissionless: 共识算法允许任何人都有机会成为SequencerAggregator

decentralization: 数据可用性对去中心化至关重要,每个用户需要有充足的数据重建rollup的状态,目前zkEVM项目方还需要确认更好的数据可用性配置策略。

安全性: 采用zkRollup 实现与以太坊同等的安全性。

效率

zkEVM 采用多种策略提升效率,如下:

  • 部署PoE, 激励最有效的aggregators 参与证明生成过程;
  • 执行链下的计算,只在链上保留必要的数据 和 zk-proofs;
  • 采用UTXO 方式实现bridge smart contract, 只使用 Exit Tree Roots;
  • 采用专用的密码组件加速计算和减少证明大小,例如:
    • 采用zkASM 转换字节码;
    • 采用zk-STARK提升证明者速度,采用zk-SNARK 验证zk-STARK证明,缩小证明大小,减少gas花费。

结论

zkEVM要与智能合约无缝衔接,兼容EVM 指令,同时保证安全,高效和去中心化,下一步zkEVM将部署公开的测试网。

参考

https://docs.hermez.io/

https://ethresear.ch/t/proof-of-efficiency-a-new-consensus-mechanism-for-zk-rollups/11988

https://docs.google.com/presentation/d/1gfB6WZMvM9mmDKofFibIgsyYShdf0RV_Y8TLz3k1Ls0/edit#slide=id.p

你可能感兴趣的:(Polygon zkEVM 整体架构)