Polygon zkEVM工具——PIL和CIRCOM

1. 引言

前序博客有:

  • ZK-Rollups工作原理
  • Polygon zkEVM——Hermez 2.0简介
  • Polygon zkEVM网络节点
  • Polygon zkEVM 基本概念
  • Polygon zkEVM Prover

2022年8月8日Jordi Baylina(Iden3合伙人,Polygon Hermez zkEVM技术负责人)在Zcon3分享 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3。

Polygon zkEVM主网路线图为:
Polygon zkEVM工具——PIL和CIRCOM_第1张图片

Polygon Hermez 总体架构为:
Polygon zkEVM工具——PIL和CIRCOM_第2张图片
其中zkProver总体示意为:
Polygon zkEVM工具——PIL和CIRCOM_第3张图片
zkProver内部示意为:
Polygon zkEVM工具——PIL和CIRCOM_第4张图片
以Fibonacci序列为例:
Polygon zkEVM工具——PIL和CIRCOM_第5张图片
Fibonacci序列(1024个元素)对应的CIRCOM R1CS电路表示为:
Polygon zkEVM工具——PIL和CIRCOM_第6张图片
以上CIRCOM R1CS电路对应的Polynomial Identities/State Machine为:
Polygon zkEVM工具——PIL和CIRCOM_第7张图片
将以上Polynomial Identities以PIL程序表示为:
Polygon zkEVM工具——PIL和CIRCOM_第8张图片
构建pre-processed polynomials,并计算witnesses(为state machine):
Polygon zkEVM工具——PIL和CIRCOM_第9张图片
以fibonacci.js和fibonacci.pil构建测试用例:
Polygon zkEVM工具——PIL和CIRCOM_第10张图片

2. PIL中的Permutation Check

Polygon zkEVM工具——PIL和CIRCOM_第11张图片
Polygon zkEVM工具——PIL和CIRCOM_第12张图片

3. PIL中的Plookup

Polygon zkEVM工具——PIL和CIRCOM_第13张图片
Polygon zkEVM工具——PIL和CIRCOM_第14张图片

4. PIL中的Connection Check(Copy constraints)

Polygon zkEVM工具——PIL和CIRCOM_第15张图片
Polygon zkEVM工具——PIL和CIRCOM_第16张图片

5. PIL表示PLONK

Polygon zkEVM工具——PIL和CIRCOM_第17张图片

6. CIRCOM中的Custom Gates

Polygon zkEVM工具——PIL和CIRCOM_第18张图片
CIRCOM中的Custom Gates:

  • 可用作normal templates
  • 与其它模板类似,由CIRCOM生成Witness calculator
  • No constraints are allowed.
  • 所有的custom gates都导出为.r1cs文件。
  • 支持以circom来编写电路,而使用STARK来prove/verify该电路。
  • 当前circom支持的primes有:BN128、BLS-12 381、Goldilocks。

7. pil-STARK

https://github.com/0xPolygonHermez/pil-stark pil-STARK工具的作用:

  • 根据pil生成a STARK proof system。
  • 生成a CIRCOM circuit以verify该STARK。

Demo演示见 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3视频第24分钟。

7.1 Recursive STARK

pil-STARK实现了 Recursive STARK,可生成a CIRCOM circuit that can be verified with another STARK:

  • Hash:Optimized poseidon hash for Goldilocks。
  • Field operations in the same prime field。

借助Recursive STARK,可:

  • reduce the complexity of the proof
  • aggregate many proofs

7.2 以PLONK/Groth16来验证STARK

pil-STARK生成regular CIRCOM circuit,使得可以snarkJS(PLONK或Groth16)来验证:

  • Hash:Optimized poseidon hash for BN128 curve.
  • Field operations in different prime field。(Acceptable proving cost)

使用Groth16/PLONK proof的优势在于:

  • proof具有constant size。
  • 链上验证很便宜。

8. zkProver

Polygon zkEVM工具——PIL和CIRCOM_第19张图片
Polygon zkEVM工具——PIL和CIRCOM_第20张图片
Polygon zkEVM工具——PIL和CIRCOM_第21张图片
Polygon zkEVM工具——PIL和CIRCOM_第22张图片

9. EVM Processor总体架构

EVM Processor总体架构为:
Polygon zkEVM工具——PIL和CIRCOM_第23张图片
Polygon zkEVM工具——PIL和CIRCOM_第24张图片
Polygon zkEVM工具——PIL和CIRCOM_第25张图片

9.1 借助Plookup连接2个state machines

Polygon zkEVM工具——PIL和CIRCOM_第26张图片

10. zkasm-rom

https://github.com/0xPolygonHermez/zkevm-rom/ zkasm-rom:

  • 为以太坊交易processor
  • FREE Input the Transactions and the hash must match
  • About 16 clocks per gas unit
  • zkCounters to prevent the proof to fail(DOS)

11. zkEVM测试

Polygon zkEVM使用以太坊test suit来验证zkEVM,目的是维护a high level of equivalence。
当前状态为:

  • 以太坊test suit中的有13,000个测试
  • Polygon zkEVM当前通过了7,209个测试(60%的覆盖率)

目标是实现100%覆盖。

12. zkEVM性能

当前Polygon zkEVM性能为:

  • 在具有64核的单CPU(AWS收费为2.5$/h),生成500K gas proof用时约需5分钟。

单笔交易的开销为:0.00875$

仍然有很大的改进空间:

  • 优化代码
  • 优化数学表达
  • GPU/FPGA加速
  • 改进设计

参考资料

[1] 2022年8月8日Jordi Baylina在Zcon3分享 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3

你可能感兴趣的:(zkVM,零知识证明)