一文比较不同证明方案:理解ZK证明系统的优缺点
原文作者:Hill.bit
原文编译:深潮 TechFlow
零知识证明的概念大家耳熟能详,但具体到技术细节可能很多人都一头雾水。
零知识和证明实际上是 2 个名词,证明方案是零知识协议安全假设的基本组成部分。 在本文中 Hill.bit 将通过解释多种不同的证明方案以及它们的优缺点,来帮助更多人理解 ZK 证明系统。
在零知识证明系统中,有三个实体参与:设置者、证明者和验证者。不同的证明方案会以各种方式影响它们的行为,从而影响效率、安全性和整个系统的性能。
设置者阶段生成 ZK 系统所需的必要参数和公钥。证明方案会影响设置者阶段的复杂度、计算、通信以及它是受信任的还是无需信任的。证明者生成一个证明,证明其掌握了一个秘密输入的信息,而无需透露该信息。证明方案影响证明者的计算时间、内存需求和证明大小,从而影响通信和存储需求。验证者检查证明的有效性。证明方案会影响验证时间、内存需求以及向证明请求的数量和复杂度。 这里有三种不同类型的证明方案。
线性 PCPs + 仅线性编码:
利用线性概率可检验证明(PCPs)和线性运算;
提供强零知识属性;
生成最短的证明;
需要受信任的设置;
以前的改进主要集中在减少证明者时间上。
线性 PCPs 是一种证明系统,其中验证者通过查询少量证明来检查语句的有效性。术语“线性”指验证者的查询是证明的线性函数。
仅线性编码是一种加密技术,用于隐藏信息,仅允许对隐藏数据进行线性操作。这可以确保数据隐私同时使某些计算得以执行。
多项式 IOPs + 多项式承诺方案:
利用代数结构;
通常比基于线性 PCP 的系统更高效;
支持通用/不受信任的设置;
允许定制电路;
以前的改进主要集中在提高验证者效率上。
多项式交互式预言机证明(IOPs)是一种证明系统,其中证明者和验证者在多个回合中交换消息。证明者生成预言(对多项式的承诺)并将其提供给验证者。
验证者在特定点查询预言机,而证明者以相应的多项式评估响应。多项式方案承诺多项式而不透露有关多项式本身的信息。
与线性 PCPs + 仅线性编码相比的效率提高来自于:
更好地利用代数结构;
更高效的证明生成/验证;
压缩多项式表示;
批处理验证技术
然而,多项式 IOPs + 多项式承诺方案存在以下缺点:
更复杂的设计和实现;
特定目的的加密假设;
不同的性能权衡,例如可并行性。
折迭方案:
允许递归证明组合;
实现嵌套证明以提高效率和可扩展性;
快速且易于并行化的证明者;
之前的改进主要集中在构建递归 SNARKs 上。
递归证明组合可以降低验证者的计算和内存需求,这在像区块链这样的应用中特别有用。证明聚合可以减小最终证明的大小和验证时间,但生成这样的证明可能对证明者的计算要求更高。 与多项式 IOPs + 多项式承诺方案相比,折迭方案的效率提高来自于:
递归证明组合;
证明聚合;
改进的可扩展性;
更快的验证时间。
折迭方案的潜在缺点包括:
更复杂的设计和实现;
定制化的加密假设;
增加证明者的计算时间和内存开销;
适用性可能因用例而异 。
总之,线性 PCPs + 仅线性编码提供强大的零知识属性和最短的证明长度,但它们需要受信任的设置,并且与其他类别相比在效率上具有局限性。多项式 IOPs + 多项式承诺方案通过更高效的证明生成和验证过程,在效率上比线性 PCPs + 仅线性编码有显著改进,但设计和实现可能更为复杂。
折迭方案在效率和可伸缩性方面表现出色,得益于递归证明组合,这在区块链应用中尤其有用。但是,证明者的计算时间和内存开销可能会增加,并且其适用性可能因使用情况而异。