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 Hermez 总体架构为:
其中zkProver总体示意为:
zkProver内部示意为:
以Fibonacci序列为例:
Fibonacci序列(1024个元素)对应的CIRCOM R1CS电路表示为:
以上CIRCOM R1CS电路对应的Polynomial Identities/State Machine为:
将以上Polynomial Identities以PIL程序表示为:
构建pre-processed polynomials,并计算witnesses(为state machine):
以fibonacci.js和fibonacci.pil构建测试用例:
2. PIL中的Permutation Check
3. PIL中的Plookup
4. PIL中的Connection Check(Copy constraints)
5. PIL表示PLONK
6. CIRCOM中的Custom Gates
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分钟。
参考资料
[1] 2022年8月8日Jordi Baylina在Zcon3分享 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3