• Plonky2:最好的SNARKs和STARKs


    1. 引言

    在这里插入图片描述
    Plonky2为Polygon团队2022年1月发起的项目。其定位为ZKP证明系统。
    开源代码实现见:

    Plonky2可解锁当今2大主流ZKP类型——SNARKs和STARKs的扩容优势。

    每个ZKP证明系统都有2大基本要素:

    • 1)在某算术电路内编写程序的方式。
    • 2)多项式承诺方案(Polynomial Commitment Scheme,PCS)。

    2. Plonky2加速秘诀之:FRI多项式承诺方案——Fast、Small、Big、Slow

    许多ZKRollups采用KZG作为其承诺方案。

    KZG的问题之一在于其有限域是基于椭圆曲线的,椭圆曲线密码学有诸多限制,如:

    • 1)以太坊当前并不原生支持,可高效进行递归的椭圆曲线。
    • 2)椭圆曲线需要使用更大的有限域(至少256位),这在当代CPU上效率更低。

    不同于KZG或Bulletproofs,Polygon Zero团队选择FRI多项式承诺方案,FRI多项式承诺方案通常与STARKs关联。

    当需考虑到speed速度时,FRI提供了有趣的 time-space 权衡:

    • 1)FRI支持快的证明生成时效,但所生成的proof很大。大的proof若提交到以太坊主网上将非常昂贵和复杂。
    • 2)FRI也可生成很小的proof,但会非常慢。

    Plonky2支持以上2种场景:

    • 1)当关注速度时,采用大proof。
    • 2)当关注proof size时,采用小proof。

    为此,Plonky2的递归中的所有步骤,采用不同的参数,来对特定的proofing layer进行优化。因此Plonky2可充分利用FRI中独特的time-space权衡。正是这种灵活性使Plonky2在一系列实现中如此有用。

    3. Plonky2加速秘诀之:Goldilocks Field

    Plonky2解锁了FRI的性能提升能力,如何要让生成证明的速度更快?

    正如Bredan在ZK Whiteboard Session中所指出:
    若想真正更快,需关注到在硬件层面何为快?
    即,可通过对用户硬件优化来构建更快速的生成ZKP的工具。且当今消费级CPU原生支持64位运算。

    之前的recursive proof composition方案,需要:

    • trusted setup
    • cycles of expensive, pairing-friendly elliptic curves

    但Plonky2不需要,秘诀就在于:

    • Polygon’s Hamish Ivey-Law所提议的Goldilocks Field—— p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264232+1

    Goldilocks Field针对硬件端的优化有2方面:

    • 1)其为64位,即意味着任意小于 p p p的域元素都可以64位表示。
    • 2) p p p的代数结构,支持在CPU上非常高效运算。

    以域运算性能评估,简单的采用Goldilocks 64位域,比KZG承诺中的256位域,证明速度要快40倍。

    4. Plonky2加速秘诀之:Starky for Fold

    ZKP中的“recursion递归”属性,是指:

    • 使用单个proof,来证明多个独立的proofs。

    递归是使用ZKP来解决区块链扩容的关键,因为其可将多个交易proofs,转换为单个proof,从而大幅降低验证交易的开销。

    Plonky2是为递归而生的:
    在这里插入图片描述
    在ZK电路内写VM的最好方式不是采用Plonky2,而是采用Starky。

    Starky为Polygon Zero团队开发的另一互补证明系统:

    • Plonky2:为针对递归和relational connectivity而优化。相比于为单笔交易生成证明所需,其更robust。
    • Starky:采用与Plonky2相同的有限域和哈希函数,但是没有computation-heavy arithmetizations。

    因此,从交易层来看,Starky并行生成证明,然后Plonky2用于在每个额外层进行递归。

    每组proofs可采用Plonky2来转换为(具有lower rate的)单个proof,因为:【即,rate越低,对应 fastest (and largest) proof;而rate越高,对应smallest proof size。】

    • the smallest rate compatible with the transition constraints renders the fastest (and largest) proof.
    • Those large proofs are again converted into a single proof using a higher rate, which generates the smallest proof size possible for posting to Ethereum’s Mainnet.

    即,根据需要让proof生成速度快,或者根据需要让proof小。

    • 2020年,首个提交到以太坊的递归证明,生成用时约60秒。
    • 而2022年11月,Plonky2在MacBook Pro上生成递归证明用时仅需170毫秒。

    参考资料

    [1] Polygon Labs 2022年11月博客 Plonky2: A Deep Dive

  • 相关阅读:
    【数据结构与算法】:带你手搓顺序表(C/C++篇)
    力扣经典题目之->移除值为val元素的讲解,的实现与讲解
    java--Lambda(2)表达式语法
    要如何实现pdf图片提取?可以试试这些方法
    10. java的servlet+JSP总结
    Python环境安装参考(python解释器+Pycharm软件)
    Java学习 --- lambda表达式
    Linux C应用编程-4-信号
    Windows蓝牙驱动开发之模拟HID设备(一)(把Windows电脑模拟成蓝牙鼠标和蓝牙键盘等设备)
    《PostgreSQL中的JSON处理:技巧与应用》
  • 原文地址:https://blog.csdn.net/mutourend/article/details/133990098