
降息与大炮齐飞 市场共跌
零知识证明(ZK Proofs)是功能强大的密码学原语,允许一方(证明者)在不透露任何私密信息的情况下,使另一方(验证者)相信某个给定的声明是真实有效的。近年来ZK在可验证私密计算、为计算机程序提供有效性证明以及区块链领域获得了广泛关注,并且对世界的发展产生了重大的积极作用。
虽然ZK是新兴技术,但其基本思想和概念可以追溯到上世纪80年代。在与比特币和以太坊等区块链结合后,ZK技术的发展显著加速,因为区块链可以通过SNARK和STARK进行有效性证明,极大程度的增强可扩展性,这使ZK在区块链领域中炙手可热。
正如Starkware创始人Eli Ben-Sasson所言,近年来我们见证了密码学证明系统的“寒武纪大爆发”,每种证明系统各有独特的优势和劣势,并且在设计时进行了权衡。硬件的进步、更好的算法、新的论点和周边工具,都刺激了ZK系统的性能提升及新式系统的诞生。许多证明系已经在实际应用中被采用,而人们仍在不断扩展ZK的边界。
这也促使人们深入思考一个问题:是否有一个适用于所有应用的通用ZK证明系统?对此我们认为这种可能性不大,原因有三点:
1. 应用程序的多样性;
2. 不同的约束类型(包括内存、验证时间、证明时间);
3. 对鲁棒性的需求(如果一种证明系统被黑客攻破,我们仍然可以切换到其他系统作为保险)。
基于上述理由,ZK证明系统理应是多样性的。但即使证明系统的种类很多,也一定有一个显著的共性:ZK证明可以被快速的验证,并且拥有一个验证层,可以很容易地适应新的证明系统,以解决其依附的基础层(如以太坊)的相关困难。
在ZK领域中,zk-SNARK被频繁提及。它是实现零知识证明的一种形式,通过使用复杂的数学工具,如双线性配对和算术电路,来实现高效的零知识证明。zk-SNARK的特点是证明过程简洁化、非交互式,证明者和验证者之间只需要单次通讯不需要多次交互。此外,zk-SNARK的证明尺寸非常短小,验证效率高,适合在资源有限的环境中使用。
而zk-STARK是另一种常见的形式,旨在克服zk-SNARK的某些局限性。zk-STARK不依赖于可信设置,使用更透明的数学构造系统,如多项式承诺和有限域运算、哈希碰撞等,来生成和验证证明。zk-STARK比zk-SNARK更具可扩展性,适用于更大规模的计算,证明生成速度更快,但是Proof本身的尺寸通常较大。
可以说,zk-SNARK和zk-STARK都是零知识证明中常用的形式,但它们在透明度、可扩展性、证明大小等方面有所不同。
总体来看,一个ZK证明系统通常包括PIOP(多项式交互式预言机)和PCS(多项式承诺方案)两大部分。常见的PIOP方案包括PLONKish、GKR等,而常见的PCS方案包括FRI,KZG,IPA等,比如Zcash版本的Halo2使用了Plonkish+IPA的实现方式,至于zk-STARK其实可以当成是一种基于FRI的特殊的zk-SNARK。
如果更详细的说,不同类型的证明系统会使用不同的多项式承诺方案(PCS)、算术化方案、交互式预言机证明(IOP)或概率可检查证明(PCP)。
进一步说,不同的ZK证明系统往往在如下指标上有所不同:
密码学假设:抗碰撞哈希函数、椭圆曲线上的离散对数问题、指数知识
透明设置vs可信设置
生成证明的耗时:线性vs超线性
验证证明的耗时:常数时间、对数时间、次线性、线性
证明尺寸的大小
递归的简易性
算术化方案
单变量vs多变量多项式
下文中我们将简要谈及ZK技术的起源,探索其基本的构建模块,概述不同ZK证明系统的兴起和衰落过程。同时,本文并不对证明系统本身进行详尽分析,而是着重介绍那些对该领域产生深远影响的人,毕竟任何行业的发展只有通过先驱者的伟大想法并诉诸实践,才有可能实现。
zk-SNARK的历史发展脉络
起源:20世纪80~90年代
正如我们所提到的,零知识证明并不是新概念,其定义、基础、重要定理,甚至相关的重要协议,早在上世纪80年代中期就已经出现,首次出现是在是在Goldwasser、Micali(Algorand创始人)和Rackoff的论文《The Knowledge Complexity of Interactive Proof Systems》中。
而如今我们用来构建ZK-SNARK技术的关键思想和协议,在20世纪90年代就被出,比如Sumcheck协议,将对多元多项式求值总和的声明,简化为在椭圆曲线上随机选择的点进行单一求值,该协议为ZK技术奠定了重要基础。
所以,ZK思想的萌芽实际上远远早于比特币的出现,但在当时普遍缺乏ZK的合适用例,人们也无法提供满足ZK证明系统所需的强大算力,毕竟互联网和硬件设备在上世纪90年代并不发达。
GKR协议(2007)
GKR(Goldwasser-Kalai-Rothblum)是一种交互式协议,证明者的运行时间与电路中逻辑门的数量呈线性相关,而验证者的耗时则与电路大小呈次线性关系。在GKR协议中,证明者和验证者需要对一个有限域上的双输入算术电路运行结果达成一致,该电路的深度为d,第d层为输入层,第0层为输出层。协议从关于电路输出的声明开始,通过递归将其简化为对上一层的声明。最后,我们可以将对输出的声明转换为对电路输入参数的声明,这很容易被验证。可以说,GKR协议是在前面提及的Sumcheck协议基础上进行了高度简化的。
KZG多项式承诺方案(2010)
2010年,三名ZK领域的专家——来自德国研究机构MPI-SWS的Kate,来自加拿大密码学公司Certicom Research的Zaverucha,以及来自滑铁卢大学的Goldberg联合发表了一篇论文《Constant-Size Commitments to Polynomialsand Their Applications》。该论文提出了一种使用双线性对群的多项式承诺方案,名为KZG。
该承诺由一个单独的群元素组成,提交者可以高效地揭示多项式的任何正确求值,借助批处理技术,可以对多个多项式的求值进行揭示。KZG承诺成为了一些知名ZK证明系统的基本构建模块之一(比如以太坊PES小组用的halo2),更是在以太坊的EIP-4844中起到了核心作用。若要更直观地了解批处理技术的概念,可以参考关于Mina-Ethereum桥的文章Mina-Ethereum bridge。
参考资料:https://blog.lambdaclass.com/mina-to-ethereum-bridge/
基于椭圆曲线的实用ZK-SNARK系统(2013)
ZK-SNARK的第一个实用结构出现在2013年,需要一个预处理步骤来生成证明密钥和验证密钥,并且是随程序或电路特定的,没有泛用化。这些密钥的尺寸可能非常大,并取决于秘密参数本身;若这种保密性被破坏,攻击者就可以伪造出证明。在这种实用的ZK-SNARK系统中,要将代码转换为可以被证明的形式,需要将代码编译为一组数学形式的多项式约束。
起初,上述过程必须手动完成,既耗时又容易出错。后来针对该方向的技术更迭,主要试图解决下述核心问题:
提供更高效的证明
减少预处理的次数
实现通用的而非电路特定的设置
避免可信设置
开发使用高级语言描述电路的方法,而不是手动编写多项式约束
免责声明:数字资产交易涉及重大风险,本资料不应作为投资决策依据,亦不应被解释为从事投资交易的建议。请确保充分了解所涉及的风险并谨慎投资。OKEx学院仅提供信息参考,不构成任何投资建议,用户一切投资行为与本站无关。
和全球数字资产投资者交流讨论
扫码加入OKEx社群
industry-frontier