Boojum:zkSync的高性能去中心化STARK证明系统

1. 引言

2023年7月17日zkSync官方twitter Say hello to Boojum宣称在不regenesis的情况下,将zkSync Era迁移至Boojum证明系统。

Boojum为STARK证明系统(Plonk+FRI),开源代码见:

  • https://github.com/matter-labs/era-boojum/tree/main(Rust)

其特点为:

  • 采用PLONK形式的算术表示:使得ZK电路相对易于开发、审计、维护和升级。
  • 采用FRI多项式承诺方案:基于Goldilocks域 p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1
  • 提供了自动并行化witness generation,且witness generation函数定义简洁,如|(a, b)| a + b。witness generation用时在考虑Prover性能时不可忽略。
  • 易于扩展:用户可 以多种方式添加自定义门类型,如如增加一些特别的多项式,或复用某些“通用列”。根据自定义电路的扩展接口,可自动化生成prover、verifier、recursive verifier。从而提供高效的开发流程。
  • 单一技术栈:以Rust语言来表示。对于GPU prover的重计算部分,采用CUDA C++编写,但提供了Rust bindings。
  • 性能卓越,Prover仅要求16GB RAM,从而促进未来Prover的去中心化。

Celer Network的https://github.com/celer-network/zk-benchmark中,专门对SHA256做了benchmark,具体场景为:

  • 定义一个电路,用于计算 N = 2 k N=2^k N=2k个字节数据的sha256,其中:
    • 一个隐私输入 x x x:其中 len ( x ) = N = 2 k \text{len}(x)=N=2^k len(x)=N=2k
    • 一个公开输入: h = sha256 ( x ) h=\text{sha256}(x) h=sha256(x)
func benchmark(x, h):
    assert(sha256(x) == h)

在测试报告中,对如下方案进行了对比:【本轮测试未启用GPU加速】

  • 1)Circom + snarkjs/rapicsnark:
  • 2)gnark:
  • 3)arkwroks:
  • 4)Halo2(KZG):
  • 5)Plonky2
  • 6)Starky
  • 7)Boojum

其中不同方案的参数为:

框架 算术表示 承诺方案 其它配置
Circom + snarkjs/rapicsnark R1CS Groth16 BN254 Scalar域
gnark R1CS Groth16 BN254 Scalar域
arkworks R1CS Groth16 BN254 Scalar域
Halo2(KZG) Plonkish KZG BN254 Scalar域
Plonky2 Plonk FRI Goldilocks域 blowup factor = 8proof of work bits = 16query rounds = 28num_of_wires = 60 num_routed_wires = 60
Starky AIR FRI Goldilocks域 blowup factor = 2proof of work bits = 10query rounds = 90
Boojum Plonk FRI Goldilocks域

当取N=64KB时,各方案的约束数为:

证明系统 约束数(64KB输入的SHA256)
Circom 3200万
gnark 4500万
arkworks 4300万
Halo2 400万行(K=22)
Plonky2 800万行(K=23)
Starky 2 16 2^{16} 216个transition steps
Boojum 50万行(K=19)

测试机器有2种:

  • Linux Server: 20 Cores @2.3 GHz, 384GB memory:模拟具有多CPU核和富裕内存的服务器。
  • Macbook M1 Pro: 10 Cores @3.2Ghz, 16GB memory:模拟开发机

对比结果为:

  • 1)证明时长对比情况为:
    Boojum:zkSync的高性能去中心化STARK证明系统_第1张图片
    Boojum:zkSync的高性能去中心化STARK证明系统_第2张图片
  • 2)内存高峰情况对比为:
    Boojum:zkSync的高性能去中心化STARK证明系统_第3张图片
    Boojum:zkSync的高性能去中心化STARK证明系统_第4张图片
  • 3)CPU使用率对比为:
证明系统 CPU使用率(平均每核使用率)(Linux服务器) CPU使用率(平均每核使用率)(Mac开发机)
snarkjs 557% (27.85%) 486% (48.6%)
rapidsnark 1542% (77.1%) N/A
gnark 1624% (81.2%) 720% (72%)
arkworks 935% (46.75%) 504% (50.4%)
Halo2(KZG) 1227% (61.35%) 588% (58.8%)
Plonky2 892% (44.6%) 429% (42.9%)
Starky 849% (42.45%) 335% (33.5%)

参考资料

[1] 2023年7月17日zkSync官方twitter Say hello to Boojum
[2] Boojum Upgrade: zkSync Era’s New High-performance Proof System for Radical Decentralization
[3] Celer Network 2023年7月14日博客The Pantheon of Zero Knowledge Proof Development Frameworks (Updated!)

zkSync系列博客

  • zkSync 概览
  • zkSync 基本原理
  • zkSync 代码解析
  • zkSync的ZK Stack:Hyperchains和Hyperbridges

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