ViewDAO

Posted on Mar 01, 2022Read on Mirror.xyz

ZK+隐私赛道研究报告

AUTHOR:DaPangDun(@BxmZhao),Elaine.eth(@elaineyang73),zhihong(@zhihong05)

请注意:本文内容较多,篇幅较长,请自行选择自己感兴趣的部分。因个人水平有限,若文章中出现明显的错误(包括但不限于概念错误、认知错误),请DM我指正,谢谢。

随着网络的普及,用户在网络上产生的数据量将越来越庞大,用户数据产生的价值也将越来越高。目前Web2的时代数据呈现垄断式的分布情况(由巨头把握),而区块链的完全公开透明解决了数据垄断,但却又带来了其他的问题:

  • 信息不对称导致被利用的负面影响(例如MEV攻击,DEX抢先攻击等)
  • 不希望将自己的交易数据或者其他web3数据展现给其他人的个体无法避免数据被采集
  • 需要对数据进行分对象授权的个体无法实现授权

从这个角度来看,未来的用户数据应该是受到隐私保护的,用户有权决定是否展示自己的数据,数据到底展示给谁看。

一、ZK的诞生及发展

因为隐私的需求,诞生了ZK技术。ZK技术并不是一个很新的技术,在1985年就被提出,但是早期的零知识证明由于其效率和可用性等限制,未得到很好的利用,仅停留在理论层面。

直到近年来,零知识证明的理论研究才开始不断突破,同时区块链也为零知识证明创造了大展拳脚的机会,因而走进大众的视野。

我们也能看到各大机构也在加紧布局隐私赛道,也是看到了这个市场巨大的发展潜力。

1.1 定义

ZK:Zero-knowledge proofs,零知识证明零知识协议:现代密码学三大基础之一,由 S.Goldwasser、S.Micali 及 C.Rackoff 在 20 世纪 80 年代初提出。

1.2 内容

是一方(证明者:prover)向另一方(检验者:verifier)证明某命题的方法,特点是过程中除“该命题为真”这一陈述之外,不泄露任何其他资讯。因此,可理解成“零泄密证明”。

1.3 性质

  • 完备性(Completeness):只要证明者拥有相应的知识,那么就能通过验证者的验证,即证明者有足够大的概率使验证者确信。
  • 可靠性(Soundness):如果证明者没有相应的知识,则无法通过验证者的验证,即证明者欺骗验证者的概率可以忽略。
  • 零知识性(Zero-Knowledge):证明者在交互过程中仅向验证者透露是否拥有相应知识的陈述,不会泄露任何关于知识的额外信息。

1.4 发展历史

  • 1985 年,零知识证明Zero-Knowledge Proof -由S.Goldwasser、S.Micali及C.Rackoff 首次提出。
  • 2010年,Groth实现了首个基于椭圆曲线双线性映射全能的,常数大小的非交互式零知识证明协议。后来这个协议经过不断优化,最终成为区块链著名的零知识证明协议SNARKs
  • 2013年,Pinocchio协议实现了分钟级别证明,毫秒级别验证,证明大小不到300字节,将零知识证明从理论带到了应用。后来Zcash使用的SNARKs正是基于Pinocchio的改进版。
  • 2014 年,名为Zerocash的加密货币则使用了一种特殊的零知识证明工具zk-SNARKs ( Zero-Knowledge Succinct Non-interactive Arguments of Knowledge ) 实现了对交易金额、交易双方的完全隐藏,更注重于隐私,以及对交易透明的可控性。
  • 2017 年, Zerocash 团队提出将 zk-SNARKs 与智能合约相互结合的方案,使交易能在众目睽睽下隐身,打造保护隐私的智能合约。
  • 2017年,Jonathan Bootle(from University College London, England)、 Benedict Bunz (from Stanford University, United States)、 Dan Boneh, Andrew Poelstra, Pieter Wuille and Greg Maxwell提出了“Bulletproofs”协议,最初是为在比特币区块链中实现而设计的,但它们一直是服务于Monero和网络MimbleWimble的那些真正开始使用该协议来提高其隐私级别的人
  • 2018年,Eli Ben Sasson 、Iddo Bentov 、Yinon horesh和Michael Ryabzev研发的zk-STARKs(Zero-Knowledge Scalable Transparent Arguments of Knowledge)作为zk-SNARKs的优化版,目前该协议仍处于实验室阶段,唯一的测试应用由由StarkWare构建。

1.5 分类

目前主要的ZK证明分为三类:【zk-SNARKs】【Bulletproofs】【zk-STARKs】,其中zk-SNARKs是应用最为广泛的,目前几乎所有的隐私项目都是基于zk-SNARKs的,zk-STARKs因为出现时间较短,因此目前还处于理论阶段,也需要技术界验证其正确性。

三种证明方式在表现上各有不同,下表列出了一些常见的对比参数情况:

ZK-SNARKs、ZK-STARKs、Bulletproofs对比

【复杂度】:在计算机科学中,算法的时间复杂度(Time complexity)是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,亦即考察输入值大小趋近无穷时的情况。(参见维基百科的解释

【可信设置】:zkSNARKS需要设置一组在系统内所有参与方都知道的公共参数,为了能保证zkSNARKS的完整性,这些公共参数必须安全地生成,并在生成后立即销毁。

【抗量子计算】:后量子密码学(英语:Post-quantum cryptography,缩写:PQC),又称抗量子计算密码学,是密码学的一个研究领域,专门研究能够抵抗量子计算机的加密算法,特别是公钥加密非对称加密)算法。不同于量子密码学,后量子密码学使用现有的电子计算机,不依靠量子力学,它依靠的是密码学家认为无法被量子计算机有效解决的计算难题。(参见维基百科解释

1.6 zk-SNARKs与zk-STARKs

zk-SNARKs和zk-STARKs是ZK届争论的最多的话题,简单介绍一下二者各自的优劣、当前状况和发展前景。

>>可信设置:

对可信设置的依赖一直是 SNARK 受诟病的一点,STARK则不需要可信设置。

但是我们也需要看到:SNARK的可信设置只是在最开始的时候或者状态需要改变的时候才需要,而不是一直持续的使用。

>>量子抗性:

SNARK 的另一个缺点是它们不具备量子抗性,一旦量子计算在很大程度上可用,SNARK 背后的隐私技术就会被打破,STARK则具备量子抗性。

当然,如果使用量子计算机,CRYPTO将面临更多的问题,比如RSA或者大多数的钱包基础设施等都将会被破坏。

>>发展速度

SNARK 的采用速度实际上比 STARK 快得多,原因有很多。

  • SNARK 比 STARK 早几年被发现,这使该技术在采用方面取得了显着的领先优势
  • Zcash 在区块链开发社区中推广了 SNARK 的使用
  • SNARKs 拥有最多的开发人员库、已发布的代码、项目和积极致力于该技术的开发人员。这使得如果开发人员想开始使用零知识技术,他们在使用 SNARK 方面将获得比 STARK 更多的支持。
  • SNARK只需要 STARK 所需费用的 24%,这意味着与 SNARK 进行交易对最终用户来说要便宜得多。
  • SNARKs 的证明大小比 STARKs 小得多,这意味着它需要更少的链上存储。
  • 以太坊基金会特别表示支持使用 Starks 的 STARKware。事实上,以太坊基金会向 STARKware 提供了 1200 万美元的赠款,体现了他们对新兴技术的兴趣和投入。
  • 虽然 STARKs 的文档与 SNARKs 相比相形见绌,但技术社区最近为那些希望实施尖端技术的人开发了更多的资源。
  • STARK证明更快,使得其在移动设备,嵌入式设备的部署成为可能,而隔离见证等技术有望缓解其证明体积较大的问题。

在未来,这两类协议可能在不同的应用需求下有各自的地位

1.7 使用ZK的优缺点

优点

  • 在使用零知识证明时,不会降低安全性
  • 具有完整的隐秘性
  • 安全性依赖于未解决的数学难题(如离散对数、大整数因子分解、平方根等等)

缺点

  • 生成零知识证明需要大量的算力
  • 部分协议需要可信设置
  • 部分协议不具备抗量子性

1.8 具体原理

零知识证明背后的原理颇为复杂,且内容繁多。因此对绝大多数读者来说,学习零知识证明原理的难度很大。所以本篇对于原理部分不做介绍,仅贴出相关原理文章供大家一起学习:

https://secbit.io/blog/2019/11/07/zkp-learning-resources/

二、ZK的主要应用

零知识证明在区块链上的两大应用场景:

【隐私】:在隐私场景中,我们可以借助零知识证明的“不泄露信息”特性,在不泄漏交易的细节(接收方,发送方,交易余额)的情况下证明区块链上的资产转移是有效的。

【扩容】:在扩容场景中,我们不太需要关注零知识证明技术的“不泄露信息”这个特性,我们的关注重点是它的“证明论断有效”这个特性,由于链上资源是有限的,所以我们需要把大量的计算迁移到链下进行,因此需要有一种技术能够证明这些在链下发生的动作是可信的,零知识证明正好可以帮助我们做链下可信计算的背书。

2.1 隐私

在目前主流的公链上,账号间的交易信息是记录在公开的账本上的,所有人都可以查看到交易记录和明细,这样可以进行完整的溯源。但是这也带来了很重要的隐私问题:当一个账号对应的身份信息被暴露后,其他人就可以追踪这个账号所有的交易记录,从而去完整的描绘这样一个人(比如还有哪些账号等等)。因为这种公开性,可以看到人们在交易中的具体表现行为模式、投资币种等,对于投机者而言是有机会获得ALPHA的,所以就诞生了很多第三方的地址或者钱包的分析工具。

针对数据的隐私保护,其实可以延伸出很多的应用思考,比如:

1)【通讯加密】:用户之间可以互相发消息,但是不用担心服务器拿到所有的消息记录,同时消息也可以按照服务器的要求,出示相应的零知识证明,比如消息的来源、与发送的目的地。

2)【身份认证】:用户可以向网站证明,他拥有私钥,或者知道某个只要用户自己才知道的秘密答案,而网站并不需要知道,但是网站可以通过验证这个零知识证明, 从而确认用户的身份

3)【去中心化存储】:服务器可以向用户证明他们的数据被妥善保存,并且不泄露数据的任何具体内容。

4)【信用记录】:用户可以有选择性的向另一方出示自己的信用记录,一方面可以有选择的出示满足对方要求的记录分数,同时证明信用记录的真实性。

5)【流媒体】:将流媒体进行完全加密,同时展示完整的版权保护。

6)【电子投票】:允许选民投票,可以验证,但我们绝不会知道是谁投票的

2.2 扩容

我们大部分人应该都体会过公链上的堵塞、高GAS问题,所以很多技术人员都在研究区块链的扩容问题,争取提高公链上的TPS,然而区块链扩容受到Vitalik提出的不可能三角的限制。(不可能三角是指区块链系统设计无法同时兼顾可扩展性,去中心化和安全性,三者只能取其二)

但是作为公链,基于其核心的功用,去中心化与安全性应当是排在首位的,那么怎么解决TPS低的问题。ZK技术就给出了一个解决方案:将大量的工作放到链下去解决,仅仅将最重要的数据提交到区块链主链上进行验证。

所以,由此产生了一个大的赛道:L2。在底层区块链(Layer1)上构建一个扩展层(Layer2),Layer1来保证安全和去中心化,绝对可靠、可信;它能做到全球共识,并作为“加密法院”,通过智能合约设计的规则进行仲裁,以经济激励的形式将信任传递到Layer2 上;而Layer2追求极致的性能,它只能做到局部共识,但是能够满足各类商业场景的需求。

链下扩容:

ZK-Rollup就是基于零知识证明的二层扩容方案, ZK-Rollup方案起源于18年下半年,由Barry WhitehatVitalik先后提出。

链上压缩:

采用 zkSNARK 技术能够给现有的以太坊框架带来几十倍的性能提升。因为有了计算的证明,同样一个计算就没必要重复多次了,在传统的区块链架构中,同样的计算被重复多次,比如签名的校验,交易合法性校验,智能合约的执行等等。这些计算过程都可以被零知识证明技术进行压缩。

三、当前隐私项目汇总及分析

我们初步汇总了当前的一些采用了ZK技术的项目或者专注于隐私的项目,整理成notion文档,见下方链接:

https://www.notion.so/d0024f7ed2e24fa3a4f31c409340d0cf?v=b22a07dd07b64f2ba77720a6e8c20396

注意:因为目前隐私项目上的比较快,所以数据可能会落后,有的项目可能会未包含进来,我已经开放了文档的编辑权限,但请不要乱改数据,谢谢!

我们正在对于重点关注的项目进行更深层次的研究分析,会在之后一一公布出来!

四、我们对隐私项目的看法

我们针对ZK+隐私项目进行了多次会议讨论,也邀请了一些做过相关行业的人士(Bella,咕咕)进行了分享,大致有以下的几点看法:

4.1 隐私项目的前景

隐私问题会是未来会越来越重要的一个课题,存在着巨大的刚需,因此隐私赛道在未来出现Alpha的机会非常高。

目前隐私赛道最大的问题并不是隐私性,而是要保护隐私所带来的高成本,低效率以及较差的用户体验,因而隐私项目目前仍未普及。因为毕竟比起隐私,我们会更倾向于选择效率高,成本低的应用

4.2 隐私项目应该关注的方面

我们认为,一个好的隐私项目(不管是中间组件还是公链)应该具备以下5个特性:

1)基本的隐私性

2)不牺牲性能

3)极低的成本

4)用户体验极佳(甚至无须额外操作)

5)生态兼容

4.3 隐私赛道的方向

一类是隐私中间件,一类是隐私公链,目前两者均有不少项目,我们认为它们各有优点以及需克服的难点。

>>公链:

公链可以做到默认隐私,以此做到用户体验最佳,成本最低的效果。

目前存在几个问题:

1)生态问题:只能选择兼容或是独自开发,自主开发叙事潜力比较大,直接兼容目前主流生态的应用最快最现实

2)性能问题:能不能在融合ZK后保持正常性能甚至高性能,这里牵扯到公链的底层技术的开发难题

3)ZK技术护城河:如果主流公链愿意且很简单地就能在原先的底层公链技术加上ZK,那么隐私公链可能就不存在价值捕获了

4)技术开发难度问题:目前ZK方面的技术人员是奇缺的,门槛比较高,建立隐私公链需要大量的资深技术人员,因此在开发这个环节就很有难度。隐私公链目前基本都设置了自由的开发语言,这对于开发来说又增加了一定的难度。

>>中间组件

中间组件最大的优势就是比起公链来说更容易做到生态兼容,而且即插即用,十分方便。

但带来的问题就比较明显了:

1)使用的高成本

2)用户体验无法做到最佳(不是默认隐私就代表需要自主操作,不过可能可以提前配置好)

3)钱包隐私这方面比较难做到(未来有机会做到)

4)主流公链/Dapp如果能比较容易的自主开发ZK中间组件,个体的隐私中间组件也不会存在价值捕获(比如EDEN)

4.4 我们对隐私项目的看法

综上所述,我们认为的最理想的隐私模式排序如下:

【第1位】:默认隐私且低成本不牺牲性能的隐私中间组件(一旦做到就是Chainlink的等级)

【第2位】:解决了性能+生态问题的隐私公链(目前能做到的天花板)

【第3位】:自主开发生态的高性能默认隐私公链(例如Oasis和Aleo等)

【第4位】:目前的隐私中间组件

对于公链:我们需要关注隐私公链的生态问题、技术发展路线(是否兼容EVM等)、性能问题(注意是实际TPS)、GAS费用等方面。如果隐私公链的技术护城河足够,生态能发展起来,我们认为未来会出现一个名列市值前20甚至前10(除去稳定币)的隐私公链。

对于中间件:我们要关注技术发展程度、易用性、组合性等方面,如果能够做到,那么有可能会出现类似于ChainLink级别的硬核中间件

4.5 隐私项目的风险

1)ZK原理的完备性证明,这需要时间来验证。(当前并没有问题)

2)目前各个国家加强了对于KYC的要求,隐私项目、隐私币、隐私公链的合法性问题。(也许可以通过分级授权的方式来解决)