零知识证明是区块链隐私和可扩展性的关键构建组件。 Zk-SARNKs 具备两个关键特性: (1)除了验证主明是有效的,不会显露状态转移的隐私信息;(2)证明是简洁的,易于验证。
Plonk在过于几年在区块链领域得到了广泛应用,它具有简法的证明,高效的验证,高度的定制化和最小的可信假设。当然,PLonk 也有一些限制,例如对于超大的电路或者并行的硬件,可rollups和zkEVMs中应用相对困难。
为了解决这些问题,Espresso 构建 了Hyperplonk, 具有线性时间的证明者,支持高次的和查找表定制门电路,可以应用于zkEVM中,构建复杂的EVM 操作码和内存栈。
Plonk 背景
证明系统主要有由两个关键的组件成组,一个是信息论的PIOP (Polynomial interactive oracle proof), 将计算转为多项式方程;另一个是多项式承诺,用于证明方程的满足性。PIOPs y 主要有Plonk
, Marlin
, Spartan
; 多项式承诺方程有 KZG
, Bulletproofs
, Virgo(FRI)
和 DARK
.
PIOP和多项式承诺组合可以生成新的特性,例如 Halo2
结合 PLONK 和 Bulletproof 多项式承诺; Plonky2 结合PLonk 和FRI 多项式承诺; Xiphos, 结合Quarks (基于spartan PIOP的改进) 和 Dory 等。
PLONK PIOP 受到了业务的广泛关注,主要在于它可以使用定制门。 传统的证明系统主要将计算形式化为加法和乘法,PLONK 支持不同的门电路,例如, 以大幅减少证明者时间。另外Plookup支持lookup
, 证明一个值在一个表中, 进一步减少证明者时间,支持更多类型的计算。因此,构建ZKEVM 主要采用PLONK 或 PLONK 类似的系统。
PLonk 使用多项式编码电路,生成多项式需要使用FFT变换。FFT虽然是个高效的算法,但是仍需要较多的负担, FFT 的运行时间为, 其中电路的大小为 。 当 比较大,达到百万级别的时候,FFT仍然会是一个性能瓶颈。另外,FFT不太支持并行,并且需要复杂的内存访问,限制一些定制硬件(GPUs, FPGAs, ASICs)的使用。
移除FFT
Hyperplonk 主要的目标是移除FFT, 使它更适合用于定制硬件中。为了实现这个目标,Espresso 使用一些古老的技术(Sumcheck, GKR, Hyrax, Spartan, Quarks)等,不再使用单变量多项式, 转而使用多变量多项式(),即多项式.
通过编码值作为多线性多项式可以移除FFTs, 这只是一个起点。Plonk还需要一系统子协议,构建整个大协议。
HyperPlonk+
Plonk 支持定制门,但对于过大(次数比较高)的定制门电路,会增加quotien 多项式的大小,降低证明者的大小,因此Plonk门电路最大的次数为5 。 在Hyperplonk 中,没有quotient 多项式,可以支持32次,或者更高的门电路,提升证明者时间。并且,也可以支持lookups, 将Hyperplonk 和 lookups结合成为Hyperplonk+, 可以为zkEVM 应用提供更好的支持。
Origon+
对于多项式承诺PCS (polynomial commitment scheme),Hyperplonk 采用Origon (KZG 承诺的多线性变体)。 Origon完全兼容Hyperplonk 和 Hyperplonk+, 对于100万门的电路,只需要3s生成,但是它的证明比较大,对于3000万门电, 证明约5.5M, 同等情况下KZG 证明约为1 KB。 通过改进优化Origon+, 能将证明减少到7KB。
参考
https://www.espressosys.com/blog/hyperplonk-a-zk-proof-system-for-zkevms
https://eprint.iacr.org/2022/1355
https://eprint.iacr.org/2019/953