Time:2023-11-25 Click:105
原文作者: YBB Capital Researcher Zeke
20 世纪 80 年代中期,麻省理工学院的三位密码学者(Shafi Goldwasser、Silvio Micali 和 Charles Rackoff)共同发表了一篇名为《互动性证明系统的知识复杂性》的论文。文中描述了一种可以在不阐明信息的情况下验证信息真实性的创新密码学技术,作者将其称为“零知识证明”,并为此概念提供了具体的定义和框架。
而在随后的几十年里以此论文为基石的零知识证明技术在多个领域逐渐发展和完善,现如今零知识证明已成为已经成为一个包罗万象的术语,代表了许多“现代”或“先进”密码学——尤其是与区块链未来相关的密码学。
1.交互式:阿里巴巴与四十大盗的故事,是解释交互式零知识证明中时常提到的典例,也有非常多的版本,而下文中的故事是由我改编的一个简版。
阿里巴巴知道打开藏着财宝的山洞的咒语,却被四十大盗抓住,强迫他说出咒语。 如果阿里巴巴说出咒语,就会因为没有利用价值而被杀死。如果阿里巴巴坚持不说,强盗不会相信他真的掌握咒语,也会杀死他。但阿里巴巴想了一个好办法,现在洞穴有两个入口 A 和 B,都通向洞穴中心,但中心有一道密码门,只有知道咒语的人才能从一边走到另一边。为了证明他知道打开洞穴的秘密,而又不透露这个秘密,阿里巴巴进入洞穴并选择 A 或 B 中的一个入口,而四十大盗站在外面看不到他的选择。然后四十大盗随机喊出 A 或 B,要求阿里巴巴从他们指定的入口出来。如果阿里巴巴真的知道咒语,他就可以使用密码从中心的门通过,从指定的入口出来。这个过程重复多次,每次阿里巴巴都能成功地从四十大盗指定的入口出来,从而在不泄露秘密的情况下证明他确实知道密码。
2.非交互式:这是一个生活中的非交互式零知识证明的简单例子,想象一下,你和一个朋友都有一本“寻找沃利”的书。你声称知道沃利在某一页上的位置,但你的朋友对此表示怀疑。如果你想向朋友证明你知道沃利在图中的位置,而又不透露具体位置,可以使用一张足够大的不透明纸覆盖整个图片,并通过纸上的一个小孔露出沃利(单一的、可以独立验证的证明),这样你就能证明自己确实知道沃利的位置,但你的朋友仍然无法知道沃利在整个图片中的确切坐标。
零知识证明目前在区块链中有多种实现方式,其中最广为人知的主要有 zk-STARK(Zero-Knowledge Scalable Transparent Argument of Knowledge)和 zk-SNARK(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge),正如它们名称中的“Non-Interactive”(非交互式)所示,两者都属于非交互式零知识证明。
zk-SNARK 属于一类应用广泛的通用零知识证明方案(此处需要注意,zk-SNARK 属于一种流派,并非一种单一技术),通过将任意的计算过程转化为若干门电路的形式,并利用多项式的一系列数学性质将门电路转化为多项式,进而压缩生成非常小的非交互式的证明,可实现各类复杂的业务场景的应用。zk-SNARK 的启动需要可信设置,可信设置是指在受信任的设置中,多方各自生成一个部分密钥来启动网络,然后销毁该密钥。如果用于创建信任设置的密钥的保密信息没有被销毁,那么这些保密信息可能会被利用通过虚假验证来伪造交易。
而 zk-STARK 是 zk-SNARK 的一种技术演变,解决了 SNARK 依赖可信设置的弱点,可以不依赖任何信任设置来完成区块链验证,从而降低启动网络的复杂性并消除任何串通风险。但 zk-STARK 也有生成证明较大的问题,存储、链上验证及生成时间方面都处于劣势。如果你体验过 StarkNet(采用 zk-STARK 的 Layer 2)的早期版本,应该很明显能感觉到速度与 Gas 费,对比其它 Layer 2 体验都要差很多。所以目前被采用更多的还是 zk-SNARK 方案。而除此之外还有 PLONK 以及 Bulletproofs 等稍显小众的方案,每种方式在证明大小、证明者时间以及验证时间上都有自己的优缺点。完全理想的零知识证明非常难达到,几种主流的算法通常在不同维度之间做着平衡。
而 ZK 的开发,通常需要用到两个关键组件。
ZK-friendly 表达计算的方法:这是一个特定领域语言(DSL)或底层库。底层库如 Arkworks,则提供了必要的工具和原语,允许开发者直接用较低级的语言手动重写代码。DSL 如 Cairo 或 Circom,是为 ZK 应用量身定制的编程语言。后者能编译为生成证明所需的基元。更复杂的操作导致更长的证明生成时间,而某些操作(如 SHA 或 Keccak 中使用的位运算)可能不适合 ZK,导致长时间的证明生成。
证明系统:证明系统是 ZK 应用的核心,它实现了两个基本功能:Prove(证明)和 Verify(验证)。Prove 功能允许生成一个证明(需要大量数学计算生成,证明越复杂则生成越慢),这个证明表明某个陈述是正确的,而无需透露证明细节。Verify 功能则用于验证这个证明的正确性(证明越复杂、越大,则性能越高,验证所需的时间越短)。不同的证明系统,如 Groth 16、GM 17、PLONK、Spartan 和 STARK 等,在效率、安全性和易用性上也有所不同。
Dark Forest 展示了 ZKP 如何能够实现信息不完全的链上游戏。这对于设计更具交互性的游戏至关重要,其中玩家的行动保持私密,直到他们决定揭示它们。随着链上游戏的成熟,ZKP 将成为游戏执行引擎的一部分。对于成功集成隐私功能的高吞吐量链上游戏引擎的初创公司来说,作用巨大;
身份解决方案:ZKP 在身份领域可以开启多个机会。它们可用于声誉证明或连接Web2和Web3身份。目前,我们的Web2和Web3身份是分开的。例如 Clique 这样的项目通过使用预言机来连接这些身份。ZKP 可以通过使Web2和Web3身份匿名链接,使这种方法更进一步。这可以实现像匿名 DAO 会员资格这样的用例,条件是他们可以使用Web2或Web3数据证明领域特定专业知识。另一个用例是基于借款人的Web2社交地位(例如 Twitter 关注者数量)的无抵押Web3贷款;
ZKP 用于监管合规:Web3使得匿名在线账户能够积极参与金融系统。从这个意义上说,Web3实现了巨大的金融自由和包容性。随着Web3监管的增加,ZKP 可用于在不破坏匿名性的情况下实现合规。ZKP 可用于证明用户不是受制裁国家的公民或居民。ZKP 还可以用于证明认可投资者身份或任何其他 KYC/AML 要求;
本土Web3私人债务融资:TradeFi 债务融资通常用于支持成长中的初创公司加速其增长或开启新的业务线,而无需增加额外的风险投资。Web3 DAO 和匿名公司的兴起为Web3本土债务融资创造了机会。例如,使用 ZKP、DAO 或匿名公司可以基于其增长指标的证明,获得无抵押贷款和竞争性利率,而无需向贷方披露借款人的信息;
隐私 DeFi:金融机构经常保持其交易历史和风险敞口的私密性。然而,在链上使用去中心化金融(DeFi)协议时,由于链上分析技术的不断进步,满足这一需求变得具有挑战性。一个可能的解决方案是开发以隐私为重点的 DeFi 产品,以保护协议参与者的隐私。尝试实现这一目标的协议之一是 Penumbra 的 zkSwap。此外,Aztec 的 zk.money 通过模糊用户在透明 DeFi 协议中的参与,提供了一些私密 DeFi 赚钱机会。通常,能够成功实施高效且注重隐私的 DeFi 产品的协议可以从机构参与者那里获得大量的交易量和收入;
针对Web3广告的 ZKP:Web3推动用户拥有自己的数据权利,例如浏览历史、私人钱包活动等。Web3还使这些数据的货币化为用户带来好处。由于数据货币化可能与隐私相矛盾,ZKP 在控制哪些个人数据可以向广告商和数据聚合商披露方面可以发挥重要作用;
私人数据的共享和货币化:我们的许多私人数据如果与正确的实体共享,可能会产生重大影响。个人健康数据可以被众包,帮助研究人员开发新药。私人财务记录可以与监管机构和监察机构共享,以识别和惩罚腐败行为。ZKP 可以实现这类数据的私密共享和货币化;
治理:随着 DAO(去中心化自治组织)和链上治理的普及,Web3正在走向直接参与式民主。当前治理模式的一个主要缺陷是参与的非隐私性。ZKP 可以是解决这个问题的基础。治理参与者可以在不透露他们的投票方式的情况下进行投票。此外,ZKP 还可以使治理提案的可见性仅限于 DAO 成员,使 DAO 能够建立竞争优势。
zkRollup:扩容是 ZKP 在区块链最重要的用例,zkRollup 技术将多个交易聚合成一个单一的交易。这些交易在链下(即区块链的主链之外)处理和计算。对这些聚合后的交易,zkRollup 利用 ZKP 来生成一个证明,这个证明可以证实这些交易的有效性,而无需透露交易的具体内容,还极大的压缩了数据的大小。生成的 ZKP 随后被提交到区块链的主链上。主链上的节点只需要验证这个证明的有效性,而不需要处理每个单独的交易。这样,就大大减轻了主链的负担。
零知识证明协议虽然具备多种优势,但目前的问题主要是验证易,生成难。大部分证明系统生成的主要瓶颈是多标量乘法(MSM)或快速傅里叶变换(FFT)及其逆变换,两者的构成及优劣主要如下。
多标量乘法(MSM):MSM 是加密学中的一种关键计算,它涉及椭圆曲线加密中的点与标量的乘法。在 ZKP 中,MSM 用于构建关于椭圆曲线上点的复杂数学关系。这些计算通常涉及大量的数据点和运算,用于生成和验证证明的关键部分。MSM 在 ZKP 中尤其重要,因为它帮助构造出能够验证加密声明而不暴露私有信息的证明。MSM 可以在多个线程上执行,从而支持并行处理。然而,当处理大型元素向量时,例如 5000 万个元素,乘法运算仍然会很慢,并且需要大量的内存资源。此外,MSM 存在可扩展性方面的挑战,即使在广泛并行化的情况下也可能保持缓慢。
快速傅里叶变换(FFT):FFT 是一种高效计算多项式乘法和求解多项式插值问题的算法。在 ZKP 中,它通常用于优化多项式的计算过程,这是生成证明的重要步骤。FFT 通过将复杂的多项式运算分解为更小、更简单的部分来加速计算,这对于证明生成过程中的效率至关重要。FFT 的使用大大提高了 ZKP 系统处理复杂多项式和大规模数据集的能力。但 FFT 运算依赖于频繁的数据交换,这使得它难以通过分布式计算或硬件加速来显著提高效率。FFT 运算中的数据交换需要大量的带宽,尤其是在需要处理超过硬件内存容量的大数据集时。
虽然软件优化也是很重要的研究方向,但目前加速证明生成的最直接粗暴的方式就是通过硬件堆叠出足够高的算力来加速生成,那么在诸多算力硬件里(GPU、FPGA、ASIC),哪一个是最好的选择?由于我们在上篇部分已经简要介绍过 GPU 了,所以在此处我们主要了解 FPGA 与 ASIC 的设计逻辑与优缺点。
ASIC:ASIC(Application-Specific Integrated Circuit)是一种专门为满足特定应用需求而设计的集成电路。与通用的处理器或标准集成电路相比,ASIC 是为了执行特定任务或应用而定制的,因此在其设计的应用中通常表现出更高的效率和性能。在我们熟知的比特币挖矿领域中 ASIC 就是非常重要的算力硬件,高效性能和低功耗特性使它们成为比特币挖矿的理想选择。不过 ASIC 也有明显的两个缺点,由于是为特定应用而设计的(比如比特币的 AISC 矿机都是围绕 SHA-256 哈希算法设计的),没有大批量采用的情况下,设计和制造成本会很高,设计和验证周期也会比较长。
FPGA:FPGA 是 Field Programmable Gate Array(现场可编程门阵列)的简称,是一种可重复编程器件,是在 PAL(可编程逻辑阵列)、GAL(通用阵列逻辑)、CPLD(复杂可编程逻辑器件)等传统逻辑电路和门阵列的基础上发展起来的一种半定制电路,和 ASIC 一样都是用于电子设计和实现特定功能的集成电路,既解决了过去半定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。其重要的特点是“可重复编程、低功耗、低时延、算力强”。但 FPGA 的缺点在于其功能完全依赖于硬件实现,无法执行像分支条件跳转这样的操作,并且只能进行定点运算。成本上,FPGA 的成本在设计上比 ASIC 更低,制造上同样需要参考规模,当然两者的总体成本都要远高于 GPU。
那么再回到 ZKP 硬件加速的探讨,首先必须承认的是 ZKP 仍处于早期发展阶段。系统参数(例如 FFT 宽度或元素的位大小)或证明系统的选择(仅上文中提到的证明系统就有五种)仍然很少有标准化。我们对比三种算力硬件在这种环境下的情况:
ZK“元”的变化:我们上文中已经提到了,ASIC 上的业务逻辑是一次写入。如果任何 ZKP 逻辑发生变化,都需要从头开始。FPGA 可以在 1 秒内重新刷新任意次数,这意味着它们可以在具有不兼容证明系统的多个链上重复使用相同的硬件(例如,跨链提取 MEV),并灵活地适应 ZK “元”的变化。而 GPU 虽然不如 FPGA 那样在硬件级别上快速可重配置,但 GPU 在软件层面上提供了很大的灵活性。GPU 可以通过软件更新来适应不同的 ZKP 算法和逻辑变化。即使这种更新可能不如 FPGA 那样迅速,但仍然可以在相对短的时间内完成。
供应: ASIC 设计、制造和部署通常需要 12 到 18 个月或更长时间。相反,FPGA 供应链是相对健康的,Xilinx 等领先供应商允许从网站(即没有任何联系点)在 16 周内到达的大量零售订单。再来看 GPU,在供应上 GPU 自然有巨大的优势,自以太坊上海合并后,全网存在大量闲置的 GPU 矿机。而后续 Nvidia 与 AMD 后续开发的显卡系列,也可以大量供应。
那么从上述两点来看,除非 ZK 赛道形成共识,标准化的采用一种方案,否则 ASIC 不具备任何优势。以现在 ZKP 方案还处于多元化的发展情况来看,GPU 与 FPGA 会是我们接下来需要讨论的两种主要算力硬件。
开发周期:由于 GPU 的普及和成熟的开发工具,如 CUDA(针对 NVIDIA GPU)和 OpenCL(跨平台)。而 FPGA 的开发通常涉及更为复杂的硬件描述语言(如 VHDL 或 Verilog),需要更长的学习和开发时间;
功耗:FPGA 在能效方面通常优于 GPU。这主要是由于 FPGA 能够针对特定任务进行优化,从而减少不必要的能源消耗。而 GPU 虽然在处理高度并行化的任务时性能强大,但这也伴随着较高的功耗;
可定制性:FPGA 可以被编程来优化特定的 ZKP 算法,提高效率。而对于特定的 ZKP 算法,GPU 的通用架构可能不如专用硬件高效;
生成速度:根据 Trapdoor-Tech 关于 GPU(以 Nvidia 3090 为例)以及 FPGA(Xilinx VU 9 P 为例)的对比,在 BLS 12-381 (一种特定类型的椭圆曲线)下,采用同样的模乘/模加算法,GPU 的生成速度是 FPGA 的 5 倍。
综上所述,短期内来看,考虑到开发周期、并行性、生成速度、成本以及全网大量随时待命的闲置设备,GPU 无疑是目前最具优势的选择。而目前的硬件优化方向也是以 GPU 为主,FPGA 完全接管比赛的时间也还未到来,那么构建一个类似 PoW 挖矿的 ZKP 算力市场(我个人构想的词)是否存在可能?
在构建 ZKP 算力市场的思考上,算力硬件方面我们已经从上文得出结论。而剩下的问题是以下三点,ZKP 是否需要去中心化?市场规模上是否有吸引力?如果 ZK 系公链都选择自己构建证明生成市场,那么 ZKP 算力市场还有什么意义?
去中心化的意义:首先当今大多数 zkRollup 项目(例如 Starkware 和 zKsync)都依赖于中心化的服务器,这是因为只对以太坊扩容进行了考虑。中心化意味着用户信息依然存在被审查的风险,一定程度上牺牲了区块链最重要的无许可性质。而采用 ZK 的隐私协议则更不用多说,ZKP 生成的去中心化是极为必要的。去中心化的第二点理由是成本,这一点同上篇 AGI 部分类似,云服务以及购置硬件的成本都非常昂贵,证明生成通常只适用于大型项目。对于起步阶段的小项目来说,一个去中心化的证明市场可以大幅缓解他们启动阶段资金困难的问题,另一方面也减少了因为财力问题带来的不正当竞争。
市场规模:Paradigm 在去年曾预测 ZK 矿工/证明者市场在将来可能会增长到相当于过去 PoW 采矿市场的规模。其根本原因是 ZKP 算力的买卖方,在 ZKP 算力市场中都是极为充足的。对于那些曾经的以太坊矿工来说,ZK 系大量的公链项目和 Layer 2 项目远比 ETH 的分叉公链有吸引力。不过我们还需要考虑一种情况,大部分 ZK 系公链或者 Layer 2 也完全有能力构建自己的证明生成市场,如果要符合去中心化叙事,这一步也是必然在路线图中的(上文中的 Starkware 和 zkSync,将来也有自己的去中心化方案),那么 ZKP 算力市场是否还有构建的意义?
构建的意义:首先 ZKP 的应用及其广泛(我们在上文也已经举例多次,下文还会用一个项目做参考)。第二点是即便每条 ZK 链都有自己的证明生成市场存在,算力市场依旧还有三个作用,可以让卖方考虑出售算力。
1.将算力分成两部分,一部分用于挖矿,另一部分用于出售算力合约。这种方法可以帮助对冲加密货币市场的波动风险。当市场下跌时,出售的算力合约提供稳定收入;而市场上涨时,自己挖矿的部分能够带来额外的收益;
2.将所有算力出售,获得固定收入,是一个更为保守的做法。这样可以减少市场波动对收入的影响,保证收益的稳定性;
3.由于成本结构的差异(如电力成本),一些矿工可能会获得比市场平均水平更低的运营成本。这些矿工可以利用他们的成本优势通过出售算力合约以市场价格,并保留由于较低电力成本产生的差价,实现套利。
证明请求者(Proof requester):
请求证明的实体,可以是 zkBridge、zkRollup、zkOracle 或 zkML 这样的应用。
如果电路不存在,需要准备(Preparation)阶段,通过运行 zkLLVM 生成一个新的电路。
如果电路已经存在,则创建一个对于预定义电路的 zkProof 请求。
zkLLVM:
这个组件负责生成电路(Circuit),即编码计算任务的程序。
在准备阶段,zkLLVM 对计算执行预处理以生成电路,并提交到 Proof Market。
Proof Market:
是一个中央市场,匹配证明请求者的订单与证明生成者。
验证证明的有效性,并在证明被验证后提供奖励。
证明生成者(Proof generator):
执行计算,生成所需的零知识证明。
接收来自 Proof Market 的订单,并返回生成的证明。
奖励机制:
电路开发者奖励:每当有证明请求者使用电路生成证明时,电路的作者会得到奖励。
证明生成者奖励:一旦证明在 Proof Market 被验证,生成者根据订单条款接收奖励。
整个流程中,证明的请求、生成、验证和奖励发放都围绕着 Proof Market 展开。这个过程旨在创造一个去中心化的市场,ZKP 的生成和验证是自动化的,参与者都可以根据他们的贡献获得相应的奖励。
以下是一些潜在的应用场景:
机器学习(ML):可以在链上向 zkML 应用发起推理请求。欺诈检测、预测分析、身份验证等应用可以部署在以太坊上。
以太坊数据处理(zkOracles):许多应用需要以太坊的历史或处理后的数据。使用 zkOracles,用户可以从共识层获取执行层的数据。
数据传输(zkBridges):用户可以直接请求数据传输并支付证明费用,无需桥梁操作者作为用户和市场之间的中介。
欺诈证明(Fraud Proof):有些欺诈证明可以在链上被轻松验证,而其他一些则不能。渔夫(Fishermen,指专注于验证主协议并寻找可能的欺诈行为的网络参与者)可以专注于验证主协议,并指向 Proof Market 提供的所需证明。
数据更新和积累:应用程序可以在第一层直接存储最新更新,并稍后将其累积到 Merkle 树中,附带正确根更新的证明。
随机数生成:应用程序可以订购通过无信任哈希基础的 VDF 生成的随机数。
证明聚合:如果应用程序独立发送它们的证明(不进行验证),将它们聚合成单一证明,然后一次性验证,可以降低证明的验证成本。
问题定义
Lido Accounting Oracle 合约:处理复杂的报告,包括共识层(Consensus Layer)的数据(如总价值锁定(TVL)、验证者数量等)。
目标:使报告变得无需信任(Trustless),需要扩展报告以包含计算有效性证明。
解决方案规范
初步目标:在第一阶段,只报告 Lido CL 余额(指在 Lido 协议中,与共识层相关的资产余额)、活跃和退出的余额数量等子集。
主要参与者:
Lido:需要使某些数据从共识层状态可在执行层(Execution Layer)获取。
Oracle:报告 TVL 和验证者数量给 TVL 合约。
证明生产者(Proof Producer):产生计算完整性证明。
证明验证者(Proof Verifier):在 EL 合约中验证证明。
当前状态:当足够多的信任 Oracle 成员提交报告且达到法定人数时。
“暗启动”阶段:达到信任法定人数,但也接受无需信任报告并进行必要验证。
过渡期:达到信任法定人数,至少收到 1 个有效的无需信任报告,并且报告一致。
完全启动:会计合约只使用无需信任报告来确定 TVL 和验证者数量。
最终状态:完全废除法定人数报告,只使用无需信任报告。
相较于 AGI 算力市场的宏伟蓝图,ZKP 算力市场目前确实更局限于在区块链中的应用。但与之相反的好处是,ZKP 算力市场的开发不需要考虑到类似神经网络这种极为繁杂的设计,整体开发难度较低,资金需求也更少。结合上文的项目来看也不难发现,当 AGI 算力市场还困惑于如何落地时,ZKP 算力市场已经多维度地贯穿区块链中多个应用场景。
从市场角度看,ZKP 算力市场这条赛道目前还处于极为蓝海的阶段,而上文提到的 Proof Market 也不属于我心中最理想的设计,结合算法优化、应用场景优化、硬件优化以及对不同算力卖方市场的选择,ZKP 算力市场的设计上依旧具有非常大的想象空间。再从发展角度思考,Vitalik 曾多次强调 ZK 在未来十年内对区块链领域的影响将与区块链本身一样重要。不过从 ZK 的泛用性来看,随着设计的成熟,ZK 未来在非区块链领域的重要性也许并不逊色于当下的 AGI,前景不容小觑。
参考文献:
1.Hardware Acceleration for Zero Knowledge Proofs:https://www.paradigm.xyz/2022/04/zk-hardware
2.Use of elliptic curves in cryptography ( 1988):https://link.zhihu.com/?target=https://link.springer.com/content/pdf/10.1007% 252 F 3-540-39799-X_ 31.pdf
3.ZKLLVM Lido Trustless Accounting oracle: solution spec:https://docs.google.com/document/d/1d5 Ru 7 WWae-yilXzOVgNS5DNweAMj6FNJrZllvD00mB0/edit
4.DIZK: A Distributed Zero Knowledge Proof System:https://www.usenix.org/conference/usenixsecurity18/presentation/wu
5.Proof Market 开发者指南:https://docs.nil.foundation/proof-market/proof-producers/proof-producer
6.IOSG Weekly Brief |ZKP 加速:https://mirror.xyz/0x5Eba828AB4999825D8416D7EAd9563b64FD90276/8 DGPafCg 1 oLZ 0 T-cXSbcu5q1dYxhFDuilR1brWfLZXM
7.ZK 证明计算:算力硬件的新征途?: https://mp.weixin.qq.com/s/gInQOIJyLZwzzgmFkbaFwQ
8.硬件加速驱动的 ZK 新纪元:https://mp.weixin.qq.com/s/3I-gz4O57_crS7_KZSA8KA