作者:Fox Tech CTO 林彦熹,Fox Tech CEO 康水跃
零知识证明能够提供隐私保护、扩容、构建信任等关键作用,与Web3.0的精神相互契合,因此其应用场景如雨后春笋大量涌现。目前,ZK的小型应用开发难度小、成本低,有较多较成熟应用;ZK的中型应用初见雏型,现今的技术也足以满足其性能需求;而对于大型应用而言,目前仍处于较早期的阶段,仍存存在部分技术瓶颈,距离成为成熟的产品还需要一些时间。我们首先简单盘点各类的应用场景:
小型应用场景
独立的ZK DAPP是零知识证明最直接的应用场景,这类应用要证明的事项简单、种类少、量不大,因此也较容易开发。例如: 单纯的隐私支付协议、ZK桥、身份解决方案等。
中型应用场景
这类应用较小型应用场景相对复杂一些,需要证明的情况较多,但相对于小型应用而言只是倍数的增加,这类应用如: 在数据存储网络中证明正确性、基于ZK的游戏等。
大型应用场景
zkRollup的Layer2和zkEVM是零知识证明在Web3中的终极应用,用于处理一个VM或EVM中的各种可能性带来的状态变化。相对于小型应用的复杂程度是指数量级的增加,它们对于技术、开发工作量的要求都较高,距离达到理想中的用户体验还差一次技术跳跃。
零知识证明无疑是 Web3 领域中最具创新性的技术之一,零知识证明也提供了构建Trustless产品的绝佳技术手段。然而像人工智能刚从学界走向业界一样,现今的各类应用场景仍有相当多的问题与挑战。庆幸的是,越来越多学界与业界的力量正投入这个领域。下面我们将深入探讨zk科技树的不同枝叶。
一套完整的零知识算法从研究走到应用需要经过理论研究、开发工具构建与具体应用开发等阶段。而其中效率问题是零知识证明应用进入下一个阶段最大的瓶颈之一,这其中包含算法的效率与开发的效率。
在算法效率方面,不同零知识证明使用不同的方法表达要证明的电路、且背后基于不同的数学困难问题,这些因素都会影响算法的各项效率。具体而言,一个零知识证明算法重要的效率指标包含证明大小、证明时间、验证时间等等,而在目前,大量的算法都能实现较短的验证时间,各式的聚合技术也可以压缩证明大小,而证明时间则是主要的瓶颈。
因此项目方的设计与选择对算法效率表现显得至关重要。不同零知识证明算法在复杂度方面会形成巨大的差异。复杂度的差异在输入的数量级大的时候会充分反映到具体的性能差异上。
图1: 各种零知识证明算法
预期未来将有更多团队在零知识证明的算法上投入更多研究精力以找到最符合项目需求特性的算法。例如FOX这样的Layer2项目坚持设计在证明时间这项关键指标上达到理论下界,线性复杂度O(C),且是对数验证时间、无需可信设制的算法。这种算法非常适合支持一个没有容量上限的扩容网络。
在开发方面,开发效率低下的主要原因是相关的开发栈缺失严重,将应用场景转换为电路语言最终付诸算法证明的过程相当复杂:需要将前述漫长过程中的某个(些)部份抽象化、形成模块化的开发工具或语言,并保持彼此之间的兼容性。完整、丰富的ZK开发栈便是破局的关键,这让开发者能只专注于各自关注的环节,一起合作完成一个完整的ZK应用。
零知识证明算法 |
代数电路 |
应用逻辑 |
具体应用 |
|
现有技术栈 |
个别算法实现仓库 |
基于个别算法的表达 |
个别受限语言 |
|
问题1 |
缺乏快速实现ZKP的后端工具 |
|||
问题2 |
缺乏通用的代数电路表达方法,兼容与交互性差 |
|||
问题3 |
缺乏一个高效、普适将应用所需表达的运算与逻辑转换为代数电路的方法 |
|||
问题4 |
不像AI领域有PyTorch, TensorFlow这样高度抽象化的框架 |
|||
理想技术栈 |
将代数、计算、证明生成、验证等底层和顶层细节抽象的基础工具 |
可以被包含在前后两层之中的统一的表达方式 |
将零知识证明细节抽象化的主流编程语言 |
高度抽象化的框架 |
表1: 零知识证明硬件加速面临的问题
硬件加速是使零知识证明效率进一步提高、让大型应用更接近成熟落地的关键。而这便涉及两个问题: 首先是哪些运算可以加速,其次是哪些硬件可以用来加速。
对于第一个问题,不同的零知识证明主要的差异在于多项式承诺的方法,Matter Labs采用的Plonk、Scroll采用的Ultra-Plonk等算法多项式承诺基于KZG,因此其中的Prover涉及大量的FFT计算和ECC点乘MSM的运算用以产生多项式和承诺,这两类计算都会带来大量计算负担。具体而言,MSM有通过在多个线程上运行来加速的可能,但是需要大量内存并且即使在高度并行化时仍然很慢,而 FFT 严重依赖算法运行时数据的频繁洗牌,这使得它们很难通过跨计算集群分配负载来加速。因此目前对这些运算加速都意味着高昂的成本。
此外,Starkware研发的STARK、FOX研发的FOAKS都在FRI的过程中主要涉及哈希运算。虽然也有FFT,但量不大。因此这两种算法可以使用硬件加速来提升运算的效率。
在硬件层面主要有GPU、FPGA、ASIC三种选择,各有不同的特性:
GPU: GPU 能够通过一定的算法,加速并行计算。使用GPU加速的效果取决于具体的算法,例如在FOX的使用的FOAKS算法没有大量的FFT和MSM运算,且其ZKEVM设计中本身就包含大量可以并行计算的部分,便能通过GPU获得较大的效率提升。
FPGA: FPGA 是可编程的集成电路,因此开发者能够通过针对于 ZK 算法定制化优化矿机。
ASIC: ASIC 是为特定用途专门定制的集成电路芯片。但是 ASIC 由于过于定制化,需要的时间和成本也会更多,也许硬件的迭代伴随着行业规模的增大,逐渐朝着 ASIC方向发展,但是不会一步到位。在比特大陆等专业硬件厂商进入这个领域之后,ASIC或成为主流选项。
这三种硬件不同的特性也使其有不同的机会。短期看GPU,中期看FPGA,长期看ASIC。以太坊转为PoS后,GPU算力将会流向可以吸纳这些算力的网络,而没有大量FFT和MSM运算且对并行运算友好的网络将会成为他们的首选。FPGA的可编程性在中期具备一定的优势,尤其是在算法更迭快速、技术路线还不稳定的时期。ASIC路线意味着更高昂的成本,但能带来更高的效率提升。从长远看大型硬件厂商势必进入这个赛道并毫无疑问会选择ASIC作为其主打芯片类型。
最后,有了完整的软硬件,机制设计便是使其稳定运行与进步的最后一步。各个zkRollup项目在初期的Prover通常都会更接近传统的中心化服务:部署在云上,并由项目方独享这部分的收益。但是在Web3的叙事下,未来Prover的工作势必往去中心化的方向发展,而这样的发展也有以下的优点:
将有更多人可以分享证明生成算力,分享收益与项目利益绑定。这种激励机制将出现更加本地化的算力,从而与项目方和基金会共同建造并壮大生态系统。
一个好的去中心化的机制会带动更大的力量推动技术进步,让更多各方的专家投入精力研究让系统效率不断进步,让用户获得更好的体验。
去中心化的机制将能更好的适应需求的动态变化。
但是证明过程的去中心化有相当多的挑战,例如去中心化后各方该通过甚么样的共识合作、应该在证明过程中的哪个层面分配去中心化的任务、如何保持通信的效率与避免可能的攻击行为等等。
尽管如此,一些理想的可能解决方案已经被刻画在部分项目的愿景中,例如在FOX的设计中便包含了一个zkPOW的方案,这个方案能够达成以下目标:
通过引入随机性实现算力提升: 生成零知识证明的计算和传统POW的计算不一样,在没有引入随机性的场景下,具有最高算力的一方将永远都能获得生成证明的奖励,从而导致其他各方退出,而获得垄断后这个算力提供者也不再有动机提升算力,失去去中心化的初衷。
通过引入算力收益算法实现分配公平: 一个公平分配的方案将使得长期而言,各个算力提供者的期望收益与其算力成正比,这意味着这个方案将让zkMiner如PoW机制下一样,可以通过投入算力以获取收益,并难以通过非法手段获取超额激励收益。长期而言,公平的算力收益算法也能保证系统中算力提供者数量的稳定性,同时也意味着更高的抗攻击能力。
FOX的zkPOW设计中,在第一个证明被提交随后的一个时间窗口内提交证明的参与者都可以获得不同比例的激励,同时,通过引入随机性使得每次证明的提交内容都不相同,这意味着每次证明的提交背后都必须经过完整的证明计算。而通过仔细设计的比例分配,将使得各个参与者的期望收益与其算力成比例,对各个参与者提高计算效率产生正向激励,最终使得项目的用户都将因此受惠,享受更安全、更快、成本更加低廉的zkRollup服务。