文章链接

GPU 在性能方面要高于 FPGA, 而 FPGA 在能源消耗则更具有优势。

撰文:Bryan,IOSG Ventures

本文将主要讨论 ZKP 作为扩容方案的发展现状,从理论层面描述产生证明过程中主要需要优化的几个维度,并引深到不同扩容方案对于加速的需求。然后再围绕硬件方案着重展开,展望 zk 硬件加速领域的摩尔定律。最后,关于硬件 zk 加速领域的一些机会和现状,会在文末阐述。首先,影响证明速度的主要有三个维度:证明系统,待证明电路规模,和算法软硬件优化。

对于证明系统来说,凡是使用椭圆曲线(EC)的算法,也就是市面上主流的 Groth 16(Zcash), Galo2(Scroll), Plonk(Aztec, Zksync) 这些 zk-snark 算法,产生多项式承诺的过程中涉及的大数点乘(MSM),**目前都有时间长(算力要求高)的瓶颈。**对于 FRI-based 算法,如 ZK-Stark,其多项式承诺产生方式是 Hash Function,不牵扯 EC,所以并不涉及 MSM 运算。

证明系统是基础,待证明电路的规模也是核心的硬件优化的需求之一。近期讨论很火的 ZKEVM 据对以太坊的兼容程度不同,导致了电路的复杂程度的不同,比如 Zksync/Starkware 构建了与原生以太坊不同的虚拟机,从而绕开了一些以太坊原生的不适合利用 zk 处理的底层代码,缩小了电路的复杂长度,而 Scroll/Hermez 这样目标从最底端兼容的 zkevm 的电路自然也会更复杂。(一个方便理解的比方是,电路的复杂性可以理解为一辆巴士上的座位,比如普通日子下需要搭载的乘客数在 30 人以下,有些巴士选择了 30 人的座位,这些巴士就是 Zksync/StarkWare,而一年中也有一些日子有特别多的乘客,一般的巴士坐不下,所以有一些巴士设计的座位更多(Scroll)。但是这些日子可能比较少,会导致平时会有很多空余的座位。)**硬件加速对于这些电路设计更复杂的电路更迫切,**不过这更多是一个 Specturm 的事情,对于 ZKEVM 也同样有利无弊。

不同证明系统优化的需求 / 侧重点:

基本:

当一个待证明事物经过电路(如 R1CS/QAP)处理之后,会得到一组标量和向量,之后被用来产生多项式或者其他形式的代数形式如 inner product argument (groth16)。这个多项式依然很冗长,如果直接生成证明那么无论是证明大小或是验证时常都很大。所以我们需要将这个多项式进一步简化。这里的优化方式叫做多项式承诺,可以理解为多项式的一种特殊的哈希值。以代数为基础的多项式承诺有 KZG, IPA,DARK,这些都是利用椭圆曲线产生承诺。

FRI 是以 Hash Function 为产生承诺的主要途径。多项式承诺的选择主要是围绕几点 - 安全性,Performance。安全性在这里主要是考虑到在 set up 阶段。如果产生 secret 所使用的 randomness 是公开的,比如 FRI,那么我们就说这个 set up 是透明的。如果产生 secret 所利用的 randomness 是私密的,需要 Prover 在使用之后就销毁,那么这个 set up 是需要被信任的。MPC 是一种解决这里需要信任的手段,但是实际应用中发现这个是需要用户来承担一定的成本。

而上述提到的在安全性方面相对卓越的 FRI 在 Performance 并不理想,同时,虽然 Pairing-friendly 椭圆曲线的 Performance 比较卓越,但是当考虑将 recursion 加入时,因适合的曲线并不多,所以也是相当大的存在相当大的 overhead。

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/9f36aac4-dd27-4599-9250-9cdf945601bf/5-1669081386910.png

图片来源:https://hackernoon.com

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/633fd13a-ea6b-4762-a289-e87aceb2284a/5-1669081506735.png

Justin Drake on Polynomial commitment, Part 1

行业现状:

当前不管是的基于 Plonk(matterlabs) 或者基于 Ultra-Plonk(Scroll, PSE),他们最后的多项式 commitment 都是基于 KZG,故而 Prover 的大部分工作都会涉及到大量的 FFT 计算 ( 产生多项式)和 ECC 点乘 MSM 运算(产生多项式承诺)。在纯 plonk 模式下,由于需要 commit 的 point 数量不大,MSM 运算所占的 Prove 时间比重不高,所以优化 FFT 性能能够短期带来更大的性能提升。但是在 UltraPlonk(halo2)框架下,由于引入了 customer gate,prover 阶段设计的 commit 的 point 数量变多,使得 MSM 运算的性能优化也变得非常重要。(目前 MSM 运算进行 pippenger 优化之后,依然需要 log(P(logB)) (B 是 exp 的上界,p 是参与 MSM 的 point 的数量 )。

目前新一代 Plonky2 证明系统由于所采用的多项式 commitment 不再是 KZG 而是 STARK 系统中常见的 FRI,使得 Plonky2 的 prover 不需要再考虑 MSM,从而理论上该系统的性能提升不再依赖 MSM 相关的算法优化。plonky2 的作者 Mir( 目前的 Polygon Zero) 正在大力推广该系统。不过由于 plonky2 采用的数域 Goldilocks Field 对于编写 elliptic 相关的 hash 算法相关的电路(例如 ECDSA)不是特别友好,所以尽管 Goldilocks Field 在机器 word 运算方面优势明显,但是依然难以判断 Mir 和 PSE/Scroll 方案谁是更好的方案。