零知识证明提供了一种方法,在不透露一组信息或数据的具体细节内容的情况下,以加密方式证明对这组特定信息或数据的了解。
我们可以从硬件需求的角度来观察技术的进步。伴随新需求和用例的出现,芯片制造商设计了专门用途的 GPU、FPGA 和 ASIC,以对特定的功能和软件进行了优化。科技领域的所有主要行业——从云计算到计算机图形,再到人工智能和机器学习,都已发展到需要硬件来加速计算的速度和效率。通常情况下,在确定一个硬件的可通用模式和特殊用途之前,制作具有初始功能(存储内存、渲染图形、运行大规模模拟)的芯片都相当简单。理想情况下,随着时间的推移这些硬件会更加便宜,更容易被消费者接受。
数码相机的演变很好的说明了这种趋势。1960s 半导体被集成到胶片相机中,以自动化一些简单的功能,如测量快门速度或根据一个人试图捕捉的光线质量来调整光圈的大小,但当时还不能实现在内存中捕捉图像。到 1970s 人们意识到可以采用磁泡(一种在内存中存储单比特数据的原始形式)的概念来解决在内存中捕捉图像的问题,于是使用数码相机进行第一次实验,并设计了一个电荷耦合器件( charge coupled device:CCD)以实现通过电子形式在硅上吸收和存储光线。基于当时半导体的限制,相机的分辨率相当差,更不必说其速度和存储,所以对数码相机技术的最初描述并没有引用百万像素的概念。当时第一台相机的分辨率约为 0.01 万像素,且一幅图像从缓冲器传入内存需要 23 秒,一种紧张的权衡一直存在于百万像素的数量和相机的内存之间,直到 1990s 一种新的传感器——互补金属氧化物半导体(the complementary metal oxide semiconductor :CMOS)——的制造成本被降低并获得广泛使用,百万像素数量和内存之间的平衡才获得了实质改善。(现代 iPhone 使用 CMOS,提供约 1200 万像素的相机质量)。
在几十年的时间里,数码相机从一个使用了昂贵半导体的精巧装置,发展到价值数万美元的专业设备,再发展到存在于只需几百上千美元即可买到的日常手机中的基础装置。
其它领域的发展也遵循着类似的轨迹:从通用型硬件到争对特定应用的硬件。具体到加密货币领域,硬件优化的一个例子即加密货币挖矿:当比特币挖矿在 2009 年推出时,任何人都可以在标准的多核 CPU 上运行 SHA256 哈希算法。随着时间的推移,挖矿的竞争越来越激烈,区块奖励下降,以及随着人们越来越接受和想要一个全球性的、抗审查的货币系统,一个争对能更有效挖矿的行业生态发展开来。首先过渡到了 GPU 挖矿,使得挖矿并行程度从个位数扩展到五位数,而如今一个用于开采比特币的 ASIC 设备的算力可达大约 90-100 兆哈希/秒,比 CPU 芯片强大约 50 亿倍。
也就是说,比特币挖矿的发展证实了去中心化货币不仅是可能的,而且是令人向往的。虽然我们正处于使用 ASIC 挖矿的高级阶段,但我们也处于 Web 3 硬件的初始阶段。
随着区块链吸引了数以百万计的用户,以及其所承载的应用程序的复杂性继续地增长,两个关键需求已了然于目,即隐私和可扩展性。另外,有两个趋势是显而易见的,一是前针对加密货币领域应用而开发的专用硬件正在蓬勃发展:二是适用于消费级硬件的、以努力维护去中心化和隐私的优化算法也在加速前进。零知识证明领域的发展非常好的解释了后一种趋势。
零知识证明提供了一种方法,在不透露一组信息或数据的具体细节内容的情况下,以加密方式证明对这组特定信息或数据的了解。通常构建零知识证明涉及一个 'Prover' 和一个 'Verifier' 。Prover 从系统输入的知识中创建一个证明,而 Verifier 有能力确认 Prover 是在不知道输入内容或不是在重新计算自己的情况下真实地评估了一个计算。零知识证明在当下的区块链中有多种用例——最常见的是在(1)隐私领域,比如 IronFish、TornadoCash、Worldcoin、Zcash;和(2)通过计算验证链外状态转换以扩展以太坊的实现中,比如 Starknet 、 zkSyn、以及 Polygon 的 ZK-Rollup 系列。类似 Aleo 和 Aztec 这样的项目则提议同时解决隐私和可扩展性问题。
令人兴奋的是,在过去十年中加密技术的进步使所有这些应用变得可行且更快,以及也许更重要的是它使抗审查和去中心化成为可能。基于算法和硬件的进步,生成证明和验证证明已经变得相对便宜和更少的计算需求。在许多方面,这些进步都映射了类似数码相机发展的技术大众化进程:从一个昂贵和低效的过程开始,然后逐渐让事情变得更便宜、更快。也许更为关键的是,零知识算法的进步正开始为需要通过服务器和其它中心化环境中生成证明的计算提供替代方案。
证明设置涉及算术电路,即对一组代表程序的多项式计算进行门电路表达;当你试图扩大这些多项式所代表的信息量时,这些门电路会变得越来越复杂。理想情况下,你希望 Prover 的可能输出范围尽可能的大,以减少 Prover 通过算力蛮力计算出 Verifier 期望的数值的可能性,这是一种被称为抗碰撞(Collision Resistance)的概念。通过增加这些输出范围,增加了证明的概率性安全,就像在 POW 挖矿中一样。然而,大量的输出可能非常昂贵,并且计算速度很慢。这就是证明算法和硬件进步被需要的地方。
zkSNARKs 于 2011 年首次推出,是带来进步的一个关键因素。zkSNARKs 可以有效地、可控地扩大多项式的数量,这为零知识证明解锁了速度和更复杂的潜在应用。
zkSNARK的 'SNARK '部分代表 '简洁非交互式知识论证 Succinct Non-Interactive Arguments of Knowledge',在 Web3 的背景下,这里最关键的词是 '简洁 '和 '非交互式'。zkSNARK 中的一个证明只有几百个字节,这使得 Verifier 很容易快速检查一个证明是否正确(尽管证明本身可能需要很长的时间来生成)。非交互部分也很关键:非交互式证明使 Verifier 无需挑战 Provers 提交的声明;在区块链背景下,这种挑战要求客户端与验证器的来回切换,这非常耗时且难以构建。值得注意的是,当 zkSNARKs 首次和区块链结合时,并没有提到将其用于可保护隐私的区块链或用于扩展交易;原始论文建议的事情是,第三方在不需要下载或编译数据集的情况下,对大量数据运行高效地计算。虽然这个例子在理论上与隐私和扩展性方面的用例类似,但该领域的人们花了几年时间才将 zkSNARKs 应用于加密货币。
第一个实现 zkSNARKs 的加密协议是 Zcash,一个开发于 2014 年的私人支付加密货币。Zcash 是一个基于比特币 UTXO 模型的 POW 网络,它的改进很好的说明了密码学的进步带来了更多可扩展的隐私形式。Sprout 协议是 Zcash 实施的初始协议,使用 SHA256 压缩函数来创建椭圆曲线,虽然这在密码学上是安全的,但它也是时间和内存密集型的:生成一个证明需要数分钟的时间和大约 3KB 的内存来完成。几年后,Zcash 核心团队开发了名为 Bowe-Hopwood-Pedersen 的新哈希函数以取代 SHA256,并在 2018 年将 Zcash 从 Sprout 协议过渡到 Sapling 协议。另外,该团队还使用了 Groth16 证明系统的电路,并重新构建了他们处理网络中账户的方式,这使得一个证明的生成进步到只需大约 2.6 秒和 40MB 的内存。从此在手机上生成证明成为可能。
对 Zcash 的升级说明了两个在零知识证明系统的改进中一直存在的有趣概念。第一个是,你可以通过组合不同的配对和证明系统来提高效率。人们可以把证明电路、曲线、约束系统和承诺方案看作是可以互换的成分,以创造具有不同速度、效率和安全假设的 '零知识食谱'。第二,隐私的需求促进了这些改进——如果一个证明不是在设备上生成的(例如电脑或手机),则需要由第三方来生成,这可能会泄露相关的私人信息,因为你的 '私人输入'是以明文形式发送。我们可以把 Zcash 看作是一个零知识证明基于区块链领域发展的早期例子,即通过对算法的改进,可以非常迅速地优化用户友好性和去中心化。像保护隐私的加密货币 IronFish 这样的新项目进一步推动了这种去中心化的价值,它使任何人都有可能直接从他们的网络浏览器中进行挖矿和运行一个节点。
2019年,Ariel Gabizon、Zac Williamson 和Oana Ciobotaru 发表了一篇论文,提出了一个包含几个关键进展的新证明系统 PLONK。第一个重大突破是,PLONK 只需一个单一的、通用的可信设置——在初始化仪式中对给定的零知识证明系统的 Provers 和 Verifiers 使用的通用字符串。
正如 Vitalik Buterin 在他的 'Understanding PLONK' 一文中所解释的那样,单一可信设置是可取的,因为 '不是为每个你想证明的程序提供一个单独的可信设置,而是为整个方案提供一个单一的可信设置,之后你可以将该方案用于任何程序。' 虽然 Zcash 不得不为其证明系统的每个实例(包括 Sprout 和 Sapling)进行可信设置,但一个 PLONK 设置仅需执行一次即可由任何数量的用例永久使用。2019 年 Aztec 网络进行了一次有 176 人参加的可信设置仪式,紧接着这种操作形式也被其它致力于零知识证明的团队使用,包括 Matter Labs/zkSync、Mina,以及即将到来的新版 Zcash。
PLONK 带来的另一个关键进展是,它提供了相对较快的证明时间。通过测试发现,一台消费级的计算机(一台拥有 16GB 内存的 SurfacePro 6)可以在 23 秒内产生一个证明。不过这些只是基准测试,现今实际实施的 PLONK 证明可能需要更长的时间来生成证明,因为有许多实施 PLONK 证明的团队正在将其应用于需要将成千上万的链外交易汇总到一个单一证明中的 ZK - Rollup。这些交易通常由拥有大量算力的 Prover 处理,并将这些交易的记录发送到一个排序器,以便在以太坊的主网上发布。
在研究 Rollups 时,出现了诸如如何以及在何处定位去中心化。Matter Labs 正在采取的一种方法是 zkPorter,这是一个二类账户,用于链外数据可用性的 Rollups,允许用户人们选择在 zkSync 上进行交易或者在 zkPorter 上进行交易,前者 zkSync 提供了 L1 以太坊的安全性和每秒 2000 笔交易的吞吐量,后者 zkPorter 则可达每秒 20,000 笔以上的交易吞吐量。更重要的是,zkPorter 被设计成一个 POS 网络,它通过 'Guardians' 质押代币以跟踪链外状态,这实现了在将交易成本降低几个数量级的同时仍提供强大的安全保证。虽然 Matter Labs 还没有集中精力去处理 Prover 的去中心化,但网络级别的去中心化是使得 Rollup 可以优先考虑中立性的同时也解锁速度的另一种关键方式。另外,Aztec 是一个允许在手机或电脑上生成证明的保护隐私的 Rollup,提出了一种联合 Prover 网络的方法。不过需要注意的是,所有这些提议都处于早期阶段,各团队仍在对其具体实施方案进行迭代。
其它基于硬件的区块链隐私方案还包括 Worldcoin,它正在使用 Semaphore 零知识证明系统来创建一个去中心化的、抗女巫攻击的货币。为了做到这一点,Worldcoin 的用户需要使用 Orb 来进行虹膜扫描,以验证每个人只注册了一次 Worldcoin,但 Worldcoin 不会储存或泄露用户的私人信息。在注册 Worldcoin 的时候,用户需要在他们的手机上生成一个 Semaphore 公钥,并由 Orb 扫描用户的公钥(以二维码的形式) 以及用户的虹膜,由此输出哈希值。然后 Worldoin 会验证该哈希值是否与已生成过的哈希值相匹配,确保一个人只可注册一次。通过使用哈希值而不是存储生物识别数据,Worldcoin 能够实现使用零知识证明来保护用户隐私。
站在一场不可阻挡的技术革命的末端,宣称它所带来的巨大的经济和社会变革是很容易的;如今一部 iPhone 便拥有许多令人惊叹的功能——摄影、存储、互联网接入、通信。但人们可能没有意识到使这些技术成为可能所必需的努力有多么巨大,这和站在一个还未被解决的巨大社会转变和经济转变的开端是同样是困难的,几乎不清楚需要多长时间才能完全实现变革。
在零知识证明方案的一系列进步中,我们目前处于非常早期的阶段,尽管在过去十年中,速度、效率、用户友好性和去中心化都得到令人震惊的改进。在很短的时间内,零知识证明从被应用于极少数的面向消费者的应用,发展到被应用于为隐私和扩展性而诞生的大量应用程序和区块链技术。
我们很难预测这些新兴技术的另一面是什么样子,很难去想象当每个人都可以从手机端获得完全的隐私交易保证,并成为众多去中心化应用的主人时会发生什么。是否会存在一个世界,它拥有每个人都有权使用的、无边界的、去中心化的货币?当我们生活在时代的转折点时,重要的是要牢记初心,牢记指导这个领域发展的的核心价值观念:可访问、去信任,以及最重要的去中心化。