2021年Vitalik曾在一篇文章中讲:
Perhaps the most powerful cryptographic technology to come out of the last decade is general purpose succinct zero knowledge proofs, usually called zk-SNARKs.(也许过去十年中最强大的密码技术是通用的简洁零知识证明zk-SNARKs。)
诚然,零知识证明在Crypto领域的两个非常重要的方向都发挥着关键性突破的作用,一个是Scalability,一个是Privacy。
零知识证明(Zero Knowledge Proof,ZKP)是指证明者能够在不向验证者提供超过陈述本身有效性信息的情况下,使验证者相信某个论断是正确/真实的。零知识证明机制转化成计算机程序语言后应用最广泛的技术有两个——zk-SNARK和zk-STARK。
zk-SNARK是零知识简洁的非交互知识论证,基本逻辑如下图:
zk-SNARK实现不透露具体信息的情况下,证明事件的正确/真实的最朴素的方法是:基于可信初始设置,在各项数据位于合法范围的情况下,证明“输入”=“输出”。
zk-STARK是零知识可扩展的透明知识论证,基本逻辑本质上和zk-SNARK相同:
zk-STARK与zk-SNARK相比较,各有优劣:
初始可信设置:zk-SNARK需要,zk-STARK不需要;
证明数据大小:zk-SNARK的证明大小约为288字节,zk-STARK稍微大些几百KB;
成本:zk-STARK比zk-SNARK更低;
证明过程速度:zk-STARK比zk-SNARK的证明过程更快。
Crypto领域近年来的两大刚需——以太坊网络扩容和隐私保护,恰恰都可以通过零知识证明技术来解决。
zk在扩容方面的应用
将零知识证明用于以太坊扩容领域的公司最初主要有两家,一家是Matter Labs,一家是StarkWare。前者推出了zkSync,后者推出了StarkNet、StarkEx。这几个项目都是当前Layer2领域的佼佼者,备受资方和市场关注。
StarkWare
StarkWare是基于零知识证明(zk-STARK)推出的Validium类型的以太坊Layer2扩容方案,并基于此方案推出了StarkNet和StarkEx。Validium的机制与zk Rollup非常相似,唯一的区别是zk Rollup中的数据可用性在链上,而Validium将其保持在链下,这样使得Validium可以实现更高的吞吐量。
既然将数据放在链下处理,那么必然在数据上链过程中的流程非常重要,zk-STARK数据上链流程如下:
1000笔交易发送给zk-STARK;
zk-STARK作为证明者,生成一个证明(如下图:生成阶段);
节点作为验证者读取证明、更新链上数据。
证明生成阶段
所以,zk-STARK的核心逻辑是允许区块链将计算转移到单个链下STARK证明者,然后使用链上STARK验证器验证这些计算的完整性。
各种链上交易协议如果使用StarkWare的Validium扩容技术,它的交易费用会非常便宜。比如目前StarkEx托管了ImmutableX、Deversifi和Sorare等协议,从ImmutableX就可以感受到交易费用的便宜——在ImmutableX铸造和交易NFT的Gas费用均为0美元,就好像不是在链上玩似的……用过的人都会有这个感受。
zkSync
Matter Labs推出的zkSync扩容方案是基于零知识证明(zk-SNARK)的zk Rollup类以太坊Layer2扩容方案。
zkSync通过引入Validators和Guardians这两种角色来提升可扩展性:
Validators负责处理交易并打包区块,Validators需要质押代币,然后需要为交易提供一份交易零知识证明,证明交易过程都是正确的、没有舞弊。若Guardians发现作恶,则没收Validators的质押代币;若没有作恶则Validators将得到代币奖励。
在这个过程中,通过运用零知识证明,可以让Guardians不需要知道交易的具体内容,也能知道交易过程是正确的/真实的。基于这个逻辑可以将很多交易过程放在Layer2链上处理,而将正确结果反馈到Layer1以太坊链上,从而实现以太坊网络可扩展性的提升。
当然,现在Matter Labs正在推动zkSync2.0,在技术上又有很大的更新。一方面zkSync2.0引入了zkEVM,它将可以把以太坊智能合约部署在zk Rollup上。另一方面zkSync2.0将采用Volitions的技术方案,Volitions相当于包含了zk Rollup和Validium,可以同时支持ZK Rollup和Validium或其他组合模式的多种数据可用性模式。将选择权交还给用户,用户可以选择具体在哪种模式下交易。在ZK Rollup模式下,所有数据都在链上提交,状态更新的有效性由零知识证明来保证;在Validium模式下,数据被保存在链下,只有最新状态以及该状态有效性证明在链上提交。
总而言之,零知识证明类的技术方案已经成为以太坊网络扩容方面的最主流方案。
zk在隐私方面的应用
零知识证明用于隐私方面,具体又分为交易隐私和数据隐私。
交易隐私方面基本上是使用zk-SNARK以及基于zk-SNARK的衍生技术。之前在《漫谈隐私交易方面的技术发展演变》一文中具体介绍过zk-SNARK技术及其衍生技术在交易隐私方面的应用,这部分不再赘述。核心工作流程就是:
设置一个可信初始设置(trusted setup),以保证系统的初始安全;
设置一个范围证明(Range Proof),以防止环绕攻击;
检查input note = output note,以确保UTXO的正确性。
零知识证明除了用于交易隐私保护,也可以用于数据隐私保护。比如你的年龄,通过零知识证明机制,你可以不需要提供具体的身份信息,只需要通过简单的零知识证明算法——比如证明你的年龄大于等于18周岁,即可证明你已经成年,具备参与某项活动的权利——通过这种方式既可以实现数据隐私保护,也可以证明你具备某些资格。
零知识证明在未来的链上声誉证明方面可能也会有很多应用场景。比如现在的链上信用问题,核心难点在于尚未建立个人链上身份体系。链上身份不好建立的原因最少有两点:
第一,现实身份的证明工具不适合作为链上身份证明。链上钱包与现实身份并不具备一一对应关系,而且一定程度上讲现实身份的证明工具(比如身份证之类的)在Crypto领域里也不适合作为身份证明,一方面很多Crypto的资产持有者不愿意透露个人的身份信息,另一方面即使DeFi协议掌握了违约用户的个人身份信息,在很多国家和地区USDT等Token的权益是不受法律保护的,要这身份证明对于违约的追责没有用。
第二,链上用户不愿意泄露过多个人资产方面的隐私。要给每个链上用户打信用分,就需要掌握用户的各个方面的链上资产和链上行为的信息。但是很多用户不愿意让别人知道自己有哪些地址,做了哪些交易……之类的信息。但若要给链上用户一个合理的信用分,却又需要尽可能多掌握用户信息。所以,在链上声誉、链上信用方面,可能也需要零知识证明的赋能。
总而言之,零知识证明在扩容和隐私方面的应用是当前行业发展的明牌趋势。