漫谈ZK六十年(一):技术发展编年史
加密世界的焦点经历了比特币、以太坊、DeFi、NFT、元宇宙和Web3的多次变迁,唯独缺少对加密技术本身的关注,除了比特币的椭圆曲线加密算法(ECC)还算有一点大众认知度,其他加密算法基本停留在研究员和开发者的自嗨中。
R3PO认为这不够去中心化,会严重阻碍Web3的进一步扩展,密码学是区块链的基础件,不应该被少数人掌握,而应走向更广阔的领域。
R3PO希望能用新的书写范式去阐述术语的含义,兼顾专业性和可读性,致力于为机构投资者、项目方发现潜藏在发展中的投资机会、创业方向和切入点,寻找到未被发掘的α收益。
近期大热的零知识证明技术仍是一个不断发展、不断革新的细分领域,但其技术本身又具备足够广阔的应用场景,因此对其进行全景梳理显得十分重要。
零知识证明技术(Zero-Knowledge Proof)并非新概念,细细梳理可知,迄今已经经过40年的发展,诞生出多种模型和应用。
进入Web3时代,早在2017年,V神便已经注意到ZK技术在以太坊上的使用潜力,而最近Starkware获得1亿美元的融资使其总融资额度达2.25亿,这代表机构是以公链级别的估值和潜力来看待ZK技术。这将是一个长期鏖战的领域,会暴露出更多的投资机会。
向后推演20年,R3PO认为ZK发展至少具备一个甲子的生命长度,因此描绘整个ZK的发展历程需要追本溯源,以更好地厘清其发展逻辑,寻找到下一步的潜在机会。
本系列首篇将会从零知识证明起步,超越ZK只能应用于L2领域的固有观念,带给大家全新的系统性认知。
零起步:ZK的组装过程
1982:财不外露,便分高低
对于财富的追求自古有之,项羽就说过:“富贵不还乡,如衣锦夜行”,但太多的财富会引人觊觎,有没有一种办法,在既不暴露财富数量的同时又比较出财富的多寡呢?
1982年,后来的图灵奖得主姚期智便设想过这个问题,这就是著名的百万富翁问题,省略其数学过程,其大致运作模式如下:
- Alice和Bob选择代表自己财富数量的数字i和j,取值区间在1-10之间;
- Alice对i进行单向加密,并将加密后的结果k发送给Bob,Bob得到一个与i相关的新值;
- Bob对k进行运算后会得到一个新值m,并将其传递回Alice此时,Alice可以判断m和i的关系。
- 这个过程可以继续推演,双方可在不完成信息暴露的前提下最终完成比较。
当然,以上过程并不全面,但足以说明一个问题,我们确实可以在两方之间,并且在不暴露信息的前提下进行计算,如果将两方扩展至多方,将区间扩展至更大范围,那么这就是典型的多方安全计算MPC(Secure Multi-party Computation)问题。
百万富翁问题是ZK讨论的一个起点:
1. 在不暴露财富信息的前提下,符合零知识的定义;
2. 在不借助第三方进行评估的条件下,考察的是两者或者参与方之间的直接交互。
1985:零知识证明面世
1985年,Goldwasser、Micali和Rackoff首次提出Zero-Knowledge Proof模型,准确而言是“交互式零知识证明”模型,简单而言就是允许在多次交互的前提下,通过ZK技术来验证真假、大小。
此处的零知识并不完全准确,以Alice和Bob的互动为例,Alice和Bob可以互为验证者和证明者,但是两者间传递的信息不能和财富数量本身有关,这里的零知识是指相关性为零,而并非不传递信息。
而交互式指的是可以多次进行交互,这个过程可以反复进行,直至得出正确结果。
至此,目前所熟知的ZK技术迈出了成型的第一步,接下来的一切发展,都是在其上的删减增改。
1991:非交互式零知识证明
当时间来到1991年,Manuel Blum、Alfredo Santis、Silvio Micali和Giuseppe Persiano提出非交互式零知识证明,闻名即可知,此次升级重点是进行非交互式的证明过程,也就是在双方之间不进行交互的同时,验证一个定理、假说的真伪性,这看似很反直觉,但是有一个绝妙的例子可以说明:
- Alice和Bob财富自由后变身数学家。Alice离开web2去环游web3,期间Alice继续ZK研究。
- 我们假设Alice能够在发现一个新定理的证明时,给Bob写一张明信片,证明她在研究中取得了新进展。
- 这是一个非交互式的过程,准确的说,它是一个单方向的互动:只从Alice到Bob。即使Bob想回答,他也不可能。因为Alice没有稳定的(或可预测的)地址,在任何邮件能到达她之前就会搬走。
- 我们约定,只要Bob收到邮件,我们不需要查看邮件内容,就可以确定“Alice取得了研究上的新进展”这个命题为真。
非交互式零知识证明将交互次数减少到最多一次,可实现线下验证和公开验证,前者为Rollups奠定了有效性基础,后者耦合区块链的广播机制,可避免多次计算带来的资源浪费。
至此,我们目前见到的ZK便已经成为成熟理论模型,但此时的ZK更多是数学和密码学领域的研究对象,和区块链并无太多关联,而在比特币出现后,加密技术+区块链才成为研究的方向,而ZK无疑是其中的佼佼者。
值得注意的是,中本聪本人并不排斥ZK技术在比特币网络的使用,更多的是当时的ZK技术不成熟,因此最终选择了较为安全的ECC算法,而ZK本身可以直接应用到Layer1区块链上,Zcash、Mina,以及以太坊的伊斯坦布尔升级都涉及到了零知识证明的相关领域。
一相逢:SNARK介入区块链
2010-2014 Zcash: SNARKs(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)实用化场景
在比特币网络出现后,安全和隐私成为人们对区块链的最初认知。市场上出现了一系列基于隐私的公链和应用,如Zerocash/Zcash使用的SNARKs,以及在Monero中使用的子弹证明Bulletproofs(BP)等。
2010年,Groth实现了首个基于ECC算法的,O(1)常数级的ZK。也即ZK-SNARKs或者ZK-SNARGs。
- SNARGs:Succinct Non-Interactive Arguments
- SNARKs:Succinct Non-Interactive Arguments of Knowledge
从应用角度来说,此次改进在于“简洁”Succinct功能上,具体而言,SNARK致力于压缩信息本身的大小,在ZCash中,程序电路是固定的,因此多项式验证也是固定的,这使得设置只需执行一次,交易后续只需改变输入便可复用。
在2013年,Pinocchio协议提升效率至分钟级别证明,以及毫秒级别的验证时间,开销控制在300字节以内,这也是ZK-SNARKs技术真正首次落地到区块链领域。
这证明了ZK技术可以在隐私场景上发挥作用,R3PO判断后续的隐私路线会具备脱离L2单独存在的潜力,Aztec证明了隐私DeFi路线的可行性,而在tornado被制裁后,链上金融隐私仍旧是强烈的刚需,这个方向的投资机会仍未被广泛发掘,值得后续期待。
此外,隐私币项目Zerocash进一步改进了相关算法,使用的是SCIPR Lab优化后的zk-SNARKs算法,在理论条件下,可以做到既隐藏付款来源、接受者和金额,并且交易可以控制在1KB以内,验证时间在6ms之内。
Mina:递归ZK压缩数据
Mina不同于以太坊L2,其是一条L1级别的高性能公链,其运行节点只有22KB,而之所以能做到如此之小,在于其大幅度利用递归来证明ZK确认的有效性,即每一条信息都带有之前的确认结果。
- Step1:zk-SNARKs证明节点有效性,只需要保存其证明结果;
- Step2:通过递归调用,确保节点有效性的正确传递和检索,不需要保留所有历史数据,实现极致压缩数据的效果;
传递结果的有效性,而非保存全节点数据,这是Mina证明行之有效的手段,而在以太坊L2,ZK-Rollup可以通过打包多次交易数据,结算一次的方式完成有效性证明,而进一步推演,L2之上可以叠加L3,或者Dapp应用,这些都是ZK可以发展的细分赛道,比如dYdX目前运行在Starkex之上,以及架构在Starkware之上的L2 ImmutableX,都证明ZK的使用潜力,这个赛道的价值目前仍未被全部挖掘,仍留有长期的投资价值。
至此,ZK-Rollup涉及所有的技术要件就已经基本齐备了,我们已经装备好足够的ZK基础知识,并且可以总结ZK的以下特点:
1. 非交互式:不需要多次验证,只需一次验证就可以广播至全网;
2. 零知识:不需要透露信息本身的特征,可在全网进行公开传播;
3. 知识:知识不是公开、易得的信息,必须具备独特的价值,比如经济价值、隐私价值等;
4. 证明:证明由数学手段确认,安全性经过多年研究和实践检验;
如果将这些技术特点组合起来,我们可以发现,ZK天然适合L2扩容,并且又不局限于L2,ZK技术的其他应用会在后文中持续发表,欢迎大家继续关注。
双龙会:STARK终将取SNARK而代之
ZK-STARK:开发难度以10年计的种子选手
对比二者的差异,主要在于STARK中的S是Scalability之意,面向的是更加大型数据的复杂使用场景,但其整体上仍旧是一个正在发展中的技术路线。
本文不过多涉及具体L2之间的区别,但有一点很明显,除StarkWare之外,其他的L2项目,包括zkSync、Aztec、Loopring、Scroll等都采用的是SNARKs技术路线。
究其原因,在于STARK的开发难度过大,目前只有StarkWare有能力进行自研,但其好处也十分明显,相较于SNARK,其可承载的运算量也会更大,在运行大型数据时,其安全性会更高,比如游戏、社交、NFT等方向。
其次,STARK路线具备抗量子攻击的特性,这在未来十年具备颠覆行业格局能力的可能,比特币采用的ECC算法并不能完全具备抗量子破解的可能,如果加入zk-STARKs技术,其安全性会显著提高。
可以总结以太坊L2的格局,短期Optimistic Rollup,5年后zk-SNARKs路线,10年后zk-STARK路线终将会胜出。
ZK-Rollup:数据的上探,信息的下钻
介绍完zk-STARKs之后,L2扩容的全部技术特征便已完备,只缺少对Rollup的介绍,实际上,Rollup利用的是ZK的验证机制,而摆脱其对数据量的需求:在L1负责共识和结算的前提下,由L2负责应用的具体日常运营,用户不需要和L1直接交互,其体验会高度接近于目前的App。
更进一步的说,Rollup在完成信息的打包后,会将验证后的信息加密成知识,随后传递给L1,以攻破安全性、去中心化和扩展性的不可能三角。
总结
我们从百万富翁问题出发,由MPC问题过渡到零知识证明领域,出于经济原因,交互式的零知识证明不完全适用于链上活动,而非交互零知识证明逐渐成为主流。
随着Zcash的发展,SNARKs技术日渐应用到其中,使ZK技术从单纯的密码学研究对象变身为区块链领域中使用的工程手段,在隐私、安全、效率方面发挥自己的作用。
以太坊扩容场景,则使ZK成就了L2,Rollup技术路线战胜其他竞争对手,zk-STARKs也逐渐发展起来,有望激活挖矿、GameFi、NFT等更为普遍的使用场景。
在以太坊之外,越来越多的新模式已经逐步涌现,比如可定制模块化Rollup路线,又如刚完成1500万美元融资的Eclipse,其路线图会支持Move语言和Solona网络,以及完成3000万美元融资的Scroll,其希望建立EVM等效的ZK-Rollup。
新故事背后的驱动力是对ZK技术的认可,广泛来说,ZK是一个“大而全,长而远”的领域,大额融资消息的不断传出也说明市场对其接受度在逐步走高,但总体而言,这还是一个新领域,即使仅论其技术路线,也有“内卷”的流派,而其中的投资机会则长期存在,无论是内嵌入底层基础设施,还是落地于具体应用场景,需要我们不断去发掘。