Polygon zkEVM工具——PIL和CIRCOM
Posted mutourend
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Polygon zkEVM工具——PIL和CIRCOM相关的知识,希望对你有一定的参考价值。
1. 引言
前序博客有:
2022年8月8日Jordi Baylina(Iden3合伙人,Polygon Hermez zkEVM技术负责人)在Zcon3分享 Tooling for building zkEVM: PIL and Circom - Jordi Baylina at Zcon3。
Polygon zkEVM主网路线图为:
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分钟。
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
9. EVM Processor总体架构
EVM Processor总体架构为:
9.1 借助Plookup连接2个state machines
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
以上是关于Polygon zkEVM工具——PIL和CIRCOM的主要内容,如果未能解决你的问题,请参考以下文章
Polygon zkEVM的pil-stark Fibonacci状态机代码解析