AUTHOR:DaPangDun(@BxmZhao),Elaine.eth(@elaineyang73),zhihong(@zhihong05)
请注意:本文内容较多,篇幅较长,请自行选择自己感兴趣的部分。因个人水平有限,若文章中出现明显的错误(包括但不限于概念错误、认知错误),请DM我指正,谢谢。
随着网络的普及,用户在网络上产生的数据量将越来越庞大,用户数据产生的价值也将越来越高。目前Web2的时代数据呈现垄断式的分布情况(由巨头把握),而区块链的完全公开透明解决了数据垄断,但却又带来了其他的问题:
从这个角度来看,未来的用户数据应该是受到隐私保护的,用户有权决定是否展示自己的数据,数据到底展示给谁看。
因为隐私的需求,诞生了ZK技术。ZK技术并不是一个很新的技术,在1985年就被提出,但是早期的零知识证明由于其效率和可用性等限制,未得到很好的利用,仅停留在理论层面。
直到近年来,零知识证明的理论研究才开始不断突破,同时区块链也为零知识证明创造了大展拳脚的机会,因而走进大众的视野。
我们也能看到各大机构也在加紧布局隐私赛道,也是看到了这个市场巨大的发展潜力。
ZK:Zero-knowledge proofs,零知识证明或零知识协议:现代密码学三大基础之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世纪 80 年代初提出。
是一方(证明者:prover)向另一方(检验者:verifier)证明某命题的方法,特点是过程中除“该命题为真”这一陈述之外,不泄露任何其他资讯。因此,可理解成“零泄密证明”。
Zero-Knowledge Proof
-由S.Goldwasser、S.Micali及C.Rackoff 首次提出。Groth
实现了首个基于椭圆曲线双线性映射全能的,常数大小的非交互式零知识证明协议。后来这个协议经过不断优化,最终成为区块链著名的零知识证明协议SNARKs
。Pinocchio
协议实现了分钟级别证明,毫秒级别验证,证明大小不到300
字节,将零知识证明从理论带到了应用。后来Zcash
使用的SNARKs
正是基于Pinocchio
的改进版。Zerocash
的加密货币则使用了一种特殊的零知识证明工具zk-SNARKs
( Zero-Knowledge Succinct Non-interactive Arguments of Knowledge ) 实现了对交易金额、交易双方的完全隐藏,更注重于隐私,以及对交易透明的可控性。Zerocash
团队提出将 zk-SNARKs
与智能合约相互结合的方案,使交易能在众目睽睽下隐身,打造保护隐私的智能合约。Bulletproofs
”协议,最初是为在比特币区块链中实现而设计的,但它们一直是服务于Monero和网络MimbleWimble的那些真正开始使用该协议来提高其隐私级别的人zk-STARKs
(Zero-Knowledge Scalable Transparent Arguments of Knowledge)作为zk-SNARKs的优化版,目前该协议仍处于实验室阶段,唯一的测试应用由由StarkWare构建。目前主要的ZK证明分为三类:【zk-SNARKs】【Bulletproofs】【zk-STARKs】,其中zk-SNARKs是应用最为广泛的,目前几乎所有的隐私项目都是基于zk-SNARKs的,zk-STARKs因为出现时间较短,因此目前还处于理论阶段,也需要技术界验证其正确性。
三种证明方式在表现上各有不同,下表列出了一些常见的对比参数情况:
【复杂度】:在计算机科学中,算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。(参见维基百科的解释)
【可信设置】:zkSNARKS需要设置一组在系统内所有参与方都知道的公共参数,为了能保证zkSNARKS的完整性,这些公共参数必须安全地生成,并在生成后立即销毁。
【抗量子计算】:后量子密码学(英语:Post-quantum cryptography,缩写:PQC),又称抗量子计算密码学,是密码学的一个研究领域,专门研究能够抵抗量子计算机的加密算法,特别是公钥加密(非对称加密)算法。不同于量子密码学,后量子密码学使用现有的电子计算机,不依靠量子力学,它依靠的是密码学家认为无法被量子计算机有效解决的计算难题。(参见维基百科解释)
zk-SNARKs和zk-STARKs是ZK届争论的最多的话题,简单介绍一下二者各自的优劣、当前状况和发展前景。
>>可信设置:
对可信设置的依赖一直是 SNARK 受诟病的一点,STARK则不需要可信设置。
但是我们也需要看到:SNARK的可信设置只是在最开始的时候或者状态需要改变的时候才需要,而不是一直持续的使用。
>>量子抗性:
SNARK 的另一个缺点是它们不具备量子抗性,一旦量子计算在很大程度上可用,SNARK 背后的隐私技术就会被打破,STARK则具备量子抗性。
当然,如果使用量子计算机,CRYPTO将面临更多的问题,比如RSA或者大多数的钱包基础设施等都将会被破坏。
>>发展速度
SNARK 的采用速度实际上比 STARK 快得多,原因有很多。
在未来,这两类协议可能在不同的应用需求下有各自的地位
优点
缺点
零知识证明背后的原理颇为复杂,且内容繁多。因此对绝大多数读者来说,学习零知识证明原理的难度很大。所以本篇对于原理部分不做介绍,仅贴出相关原理文章供大家一起学习:
零知识证明在区块链上的两大应用场景:
【隐私】:在隐私场景中,我们可以借助零知识证明的“不泄露信息”特性,在不泄漏交易的细节(接收方,发送方,交易余额)的情况下证明区块链上的资产转移是有效的。
【扩容】:在扩容场景中,我们不太需要关注零知识证明技术的“不泄露信息”这个特性,我们的关注重点是它的“证明论断有效”这个特性,由于链上资源是有限的,所以我们需要把大量的计算迁移到链下进行,因此需要有一种技术能够证明这些在链下发生的动作是可信的,零知识证明正好可以帮助我们做链下可信计算的背书。
在目前主流的公链上,账号间的交易信息是记录在公开的账本上的,所有人都可以查看到交易记录和明细,这样可以进行完整的溯源。但是这也带来了很重要的隐私问题:当一个账号对应的身份信息被暴露后,其他人就可以追踪这个账号所有的交易记录,从而去完整的描绘这样一个人(比如还有哪些账号等等)。因为这种公开性,可以看到人们在交易中的具体表现行为模式、投资币种等,对于投机者而言是有机会获得ALPHA的,所以就诞生了很多第三方的地址或者钱包的分析工具。
针对数据的隐私保护,其实可以延伸出很多的应用思考,比如:
1)【通讯加密】:用户之间可以互相发消息,但是不用担心服务器拿到所有的消息记录,同时消息也可以按照服务器的要求,出示相应的零知识证明,比如消息的来源、与发送的目的地。
2)【身份认证】:用户可以向网站证明,他拥有私钥,或者知道某个只要用户自己才知道的秘密答案,而网站并不需要知道,但是网站可以通过验证这个零知识证明, 从而确认用户的身份
3)【去中心化存储】:服务器可以向用户证明他们的数据被妥善保存,并且不泄露数据的任何具体内容。
4)【信用记录】:用户可以有选择性的向另一方出示自己的信用记录,一方面可以有选择的出示满足对方要求的记录分数,同时证明信用记录的真实性。
5)【流媒体】:将流媒体进行完全加密,同时展示完整的版权保护。
6)【电子投票】:允许选民投票,可以验证,但我们绝不会知道是谁投票的
我们大部分人应该都体会过公链上的堵塞、高GAS问题,所以很多技术人员都在研究区块链的扩容问题,争取提高公链上的TPS,然而区块链扩容受到Vitalik提出的不可能三角的限制。(不可能三角是指区块链系统设计无法同时兼顾可扩展性,去中心化和安全性,三者只能取其二)
但是作为公链,基于其核心的功用,去中心化与安全性应当是排在首位的,那么怎么解决TPS低的问题。ZK技术就给出了一个解决方案:将大量的工作放到链下去解决,仅仅将最重要的数据提交到区块链主链上进行验证。
所以,由此产生了一个大的赛道:L2。在底层区块链(Layer1)上构建一个扩展层(Layer2),Layer1来保证安全和去中心化,绝对可靠、可信;它能做到全球共识,并作为“加密法院”,通过智能合约设计的规则进行仲裁,以经济激励的形式将信任传递到Layer2 上;而Layer2追求极致的性能,它只能做到局部共识,但是能够满足各类商业场景的需求。
链下扩容:
ZK-Rollup就是基于零知识证明的二层扩容方案, ZK-Rollup方案起源于18年下半年,由Barry Whitehat
和Vitalik
先后提出。
链上压缩:
采用 zkSNARK 技术能够给现有的以太坊框架带来几十倍的性能提升。因为有了计算的证明,同样一个计算就没必要重复多次了,在传统的区块链架构中,同样的计算被重复多次,比如签名的校验,交易合法性校验,智能合约的执行等等。这些计算过程都可以被零知识证明技术进行压缩。
我们初步汇总了当前的一些采用了ZK技术的项目或者专注于隐私的项目,整理成notion文档,见下方链接:
注意:因为目前隐私项目上的比较快,所以数据可能会落后,有的项目可能会未包含进来,我已经开放了文档的编辑权限,但请不要乱改数据,谢谢!
我们正在对于重点关注的项目进行更深层次的研究分析,会在之后一一公布出来!
我们针对ZK+隐私项目进行了多次会议讨论,也邀请了一些做过相关行业的人士(Bella,咕咕)进行了分享,大致有以下的几点看法:
隐私问题会是未来会越来越重要的一个课题,存在着巨大的刚需,因此隐私赛道在未来出现Alpha的机会非常高。
目前隐私赛道最大的问题并不是隐私性,而是要保护隐私所带来的高成本,低效率以及较差的用户体验,因而隐私项目目前仍未普及。因为毕竟比起隐私,我们会更倾向于选择效率高,成本低的应用
我们认为,一个好的隐私项目(不管是中间组件还是公链)应该具备以下5个特性:
1)基本的隐私性
2)不牺牲性能
3)极低的成本
4)用户体验极佳(甚至无须额外操作)
5)生态兼容
一类是隐私中间件,一类是隐私公链,目前两者均有不少项目,我们认为它们各有优点以及需克服的难点。
>>公链:
公链可以做到默认隐私,以此做到用户体验最佳,成本最低的效果。
目前存在几个问题:
1)生态问题:只能选择兼容或是独自开发,自主开发叙事潜力比较大,直接兼容目前主流生态的应用最快最现实
2)性能问题:能不能在融合ZK后保持正常性能甚至高性能,这里牵扯到公链的底层技术的开发难题
3)ZK技术护城河:如果主流公链愿意且很简单地就能在原先的底层公链技术加上ZK,那么隐私公链可能就不存在价值捕获了
4)技术开发难度问题:目前ZK方面的技术人员是奇缺的,门槛比较高,建立隐私公链需要大量的资深技术人员,因此在开发这个环节就很有难度。隐私公链目前基本都设置了自由的开发语言,这对于开发来说又增加了一定的难度。
>>中间组件
中间组件最大的优势就是比起公链来说更容易做到生态兼容,而且即插即用,十分方便。
但带来的问题就比较明显了:
1)使用的高成本
2)用户体验无法做到最佳(不是默认隐私就代表需要自主操作,不过可能可以提前配置好)
3)钱包隐私这方面比较难做到(未来有机会做到)
4)主流公链/Dapp如果能比较容易的自主开发ZK中间组件,个体的隐私中间组件也不会存在价值捕获(比如EDEN)
综上所述,我们认为的最理想的隐私模式排序如下:
【第1位】:默认隐私且低成本不牺牲性能的隐私中间组件(一旦做到就是Chainlink的等级)
【第2位】:解决了性能+生态问题的隐私公链(目前能做到的天花板)
【第3位】:自主开发生态的高性能默认隐私公链(例如Oasis和Aleo等)
【第4位】:目前的隐私中间组件
对于公链:我们需要关注隐私公链的生态问题、技术发展路线(是否兼容EVM等)、性能问题(注意是实际TPS)、GAS费用等方面。如果隐私公链的技术护城河足够,生态能发展起来,我们认为未来会出现一个名列市值前20甚至前10(除去稳定币)的隐私公链。
对于中间件:我们要关注技术发展程度、易用性、组合性等方面,如果能够做到,那么有可能会出现类似于ChainLink级别的硬核中间件
1)ZK原理的完备性证明,这需要时间来验证。(当前并没有问题)
2)目前各个国家加强了对于KYC的要求,隐私项目、隐私币、隐私公链的合法性问题。(也许可以通过分级授权的方式来解决)