对话姚翔:解读零知识证明的前世今生

https://daorayaki.org/post/63ec77b7d8c1277f21f6a8b1

作为互联网世界的最小单元,人们为了获得互联网所带来的便利,在参与线上的生活,工作,交易的过程中,不得不牺牲自己的隐私数据。例如在网站上输入信用卡号,向房屋中介提供自己的银行信用记录,向银行提供身份信息等,同时这也带来了各种各样的风险,例如身份信息的盗用,电子邮件泄露,数据泄露和其他形式的欺诈等。

而零知识证明的提出,正是为了解决这样的困境。它所具有的一系列先天优势,使其成为了各种区块链扩容和隐私解决方案的重要组成部分,从而让人们在不泄露任何自己隐私信息的情况下进行自身权益的认证。

鉴于零知识证明对于整个行业的未来发展起到至关重要的作用,DAOrayaki特别邀请了“原语里弄”的发起人姚翔老师,从密码学,隐私计算学实践者的角度,一起聊一聊如何看待并理解零知识证明。全文如下文所示。喜欢听音频的朋友,可点击播客:https://www.ximalaya.com/sound/560839397

Shaun:Hello,大家好,欢迎来到本期的Yaki叨叨!我是主持人Shaun。零知识证明作为计算机科学领域在近50年间最引人注目的创新之一,与EVM技术成为了当下web2向web3演化的两个重要入口,它提供了一种方便且实用的验证方法,使得web3的链外数据能够方便的取得链上验证,获得web3生态的信任,为数据资产的互通提供了可能。

作为互联网世界的最小单元,人们为了获得互联网所带来的便利,在参与线上的生活,工作,交易的过程中,不得不牺牲自己的隐私数据。例如在网站上输入信用卡号,向房屋中介提供自己的银行信用记录,向银行提供身份信息等,同时这也带来了各种各样的风险,例如身份信息的盗用,电子邮件泄露,数据泄露和其他形式的欺诈等。

而零知识证明的提出,正是为了解决这样的困境。它所具有的一系列先天优势,使其成为了各种区块链扩容和隐私解决方案的重要组成部分,从而让人们在不泄露任何自己隐私信息的情况下进行自身权益的认证。

鉴于零知识证明对于整个行业的未来发展起到至关重要的作用,Daorayaki社区认为有必要也有义务以行业资深研究者,观察者,分析者的角色向更广泛的受众群体普及零知识证明的相关知识。为此今天我们特别邀请了“原语里弄”的发起人姚翔老师,从密码学,隐私计算学实践者的角度,一起聊一聊如何看待并理解零知识证明,欢迎姚翔老师。

姚翔:大家好,我是姚翔,也是“原语里弄”的发起人。现在主要从事区块链包括密码学的相关研究,同时我们也举办一些线下的研讨活动,支持一些相关课题的研究,给予研究人员各种的帮助。

在启动“原语里弄”之前,我在金融机构工作了几年,然后在一家区块链初创公司开发智能合约钱包,我在Crypto领域大概也有七八年的时间了,我本人是密码学专业背景,虽然在工作后并没有从事太多的密码学研究,但是相关知识还有一些,所以应Shaun的邀请,来聊一聊零知识相关,我觉得也有必要做一些基础知识的普及,今天很高兴有机会和大家交流。

Shaun:谢谢姚翔老师,谦虚了。在深入展开零知识证明的探讨之前,我觉得追根溯源是难免的,所以我们一定会谈到那个不能“免俗”的问题:就是零知识证明的诞生背景是怎样的?或者说它的起源的故事是怎样的呢?有请姚翔老师。

姚翔:首先,零知识证明,并不是为了解决区块链的某个问题而提出的,但在近几年的发展过程当中,随着区块链的需求增加,随着这个行业吸引了更多的注意力,创造了更多的价值,零知识证明的发展速度,在近几年的时间里确实变快了。

但零知识证明的历史可以追溯到很远,如果以这个词的诞生或者这个概念的明确提出,来作为时间节点计算的话,至少也是在1985年的事情(将近40年),当时相关的论文提到了什么内容我会在后续说到。

我更想先从一个更贴近生活的角度,和大家去分享零知识证明的概念。相信大家看到零知识证明这个词,可能会在搜索引擎里面去搜索,搜索结果一般会给你一些案例,比如阿里巴巴坐到一个山洞里,他知道这里面能不能开门;再比如说三染色问题;如果用英文搜索的话,会有一个案例叫where’s waldo(寻找瓦尔多)。

但我们脱离干巴巴的教学,从生活经验出发。相信大家应该都参加过数学考试,数学考试都有证明题,证明题是什么呢,提供条件ABC,证明x=y或者其他结论。我们回想一下写下证明的这个过程,根据已知条件进行一些计算和推演,利用一些定理或公理写完这个证明,从考试的角度来说,证明的过程极其重要,这是判卷人给分的重要评判标准。那这里有一个很有趣的点在于,实际上判卷人不需要知道标准答案是什么(也就是不需要知道任何额外知识),因为根据提供的推演过程和题目中的已知条件,就可以验证你是否知道证明过程。

在这个例子中,存在两个角色,一个是证明者(Prover),也就是答卷人;还有一个就是验证者(Verifier),也就是判卷人。其次呢,证明者拥有某种知识,在这个例子中知识=证明过程,也就是答题内容。而验证者是不需要拥有这个知识的,看到证明过程随后就可以做出判断。

还有一点,证明的过程中,证明者和验证者没有对话,证明者写完证明,他就把卷子交上去了,而验证者看到这个证明,也不能再提什么问题(证明者也无法再回答任何问题),这在现今的语境下理解,就叫非交互。

还有一个很重要的问题,就是零知识证明中零知识的定义,在考试这个例子中,如果验证者(判卷人)之前不知道如何证明,但在读完一个人的完整证明过程(正确的前提下)之后,就知道(不需要去理解)如何证明了。或者说,在考试过程中,我看到前面人的证明过程,我发现是对的,不需要理解他是如何写出证明的(为什么这么证明),只需把它抄下来就可以。换言之,验证者在阅读证明过程之后,获得了额外的知识(即:一开始不会,在读完证明之后就会了)。

我想还有一个比较重要,但又有一些隐藏在里面的一个条件,就是这道题是有一点点难度的,它不是一个非常简单的题。因为如果这道题很简单,已知a=1,b=2,c=3,证明a加b等于c,那我们前面提到的,这种抄袭证明过程(或者说验证者获得额外信息)就不成立,因为这道题太简单了,验证者不需要去阅读证明者的答案,就知道如何证明。

那综上所述,我们提出了两个问题。第一个问题是:什么样的问题需要去证明;第二个是:有没有可能构造出一种证明,让验证者(判卷人)知道证明者(答卷人)有实际能力推演出证明过程,但验证者在过程中,不能学到如何去证明(或学习到如何伪造一个证明过程)。也就是当答卷人是证明者1,改卷人是验证者1,验证者1可以确认证明者1知道证明过程x,但是验证者1在验证后不能构造出一个证明(即证明过程伪x,甚至是证明过程x),让验证者2相信验证者1(此时他是证明者2)知道如何来证明。或许这个例子比较宽泛,不是非常精确,只是用一个更贴近生活的例子,尝试将大家带入这个语境。

而刚刚提到,在1985年(将近40年前),有三位学者,Goldwasser,Micali还有Rackoff发表了一篇论文,名字叫《交互式证明系统的知识复杂性》,标题中没有提到零知识证明,但在文章中有它的定义。文章中他们定义了一种交互式的证明系统,和刚才的例子有一个很大的区别在于,证明者和验证者之间,不是一次性的(证明者将东西交给验证者,随后验证者就做出判断)。而是有多轮的交互(证明者给验证者一个东西,随后验证者可以提问,然后证明者再给验证者一个东西,验证过程是多轮的),而同时这个证明系统允许有一些极小的误差,即证明者可能不知道这个题怎么证,有小概率可以欺骗验证者。文章中还提到了密码学上的一个常用的工具,叫不可区分性,来定义了零知识。

同时,我们刚才也提到:什么样的问题才需要去证明。这篇文章讨论的证明系统,针对的是NP问题,NP问题简单来说:是指多项式时间内,验证这个解是不是正确的问题。而现在人们普遍认为,P问题(多项式时间内可以解决的问题),和NP问题是否相等,这件事情仍然是不确定的。但我们仍倾向于P是不等于NP的,也就是说:存在一些问题,求解它是困难的,但是验证解的正确性是容易的。

所以我们就针对类似问题构造这种证明,可以理解成它存在一些不确定性:对于验证者来说,在多项式时间内,可以比较简单的验证它,但没有办法在多项式时间内找出它的解(即验证者不知道这个知识),这就是这篇文章中的一些核心观点。凭借这篇文章Goldwasser和Micali,包括第三作者Rackoff,获得了1993年的哥德尔奖,Goldwasser和Micali还获得了2012年的图灵奖。

一个题外话是,Goldwasser是一个以色列人,但她这个姓氏很有意思,这个词的词根意思是“金子的水”,也是一个很著名的金箔酒品牌,它诞生于现今波兰的格丹恩斯克,历史上也叫“但泽自由市”。如果去了解这个城市的历史,我觉得它和今天所描述的Crypto精神,也是有很多交织的部分。

所以正如刚刚提到的,零知识证明并不是为了解决区块链的问题提出的,它发生的很早,但是在近些年的过程中,确实是因为crypto世界的大量的需求推动了它的加速发展。

Shaun:谢谢姚翔老师的分享,前面我们聊到了零知识证明的起源,然后聊到了Crypto相关 ,那您作为这个行业的实践者之一,从您的角度出发,您觉得今天的零知识证明都主要应用在了Crypto里的哪些现实场景中呢?或者说它的出现为现今Crypto行业改变或带来的哪些东西呢?

姚翔:这个问题很好,大概十年前我在读书时,零知识证明在课上提到的时候,也只是一个比较简单的理论描述,看不到太多的实际应用,甚至当时的老师也觉得这个东西好像看上去挺有用,但是不知道怎么有用。

而随着Crypto技术的发展,零知识证明逐渐找到了自己的定位,有意思在于零知识证明和区块链(或者说分布式账本技术),其实是高度契合的。因为区块链解决的问题是:分布式网络对一个状态的共识,但关于状态的变化以及状态内容的保护做的还有欠缺。

现在的区块链,是由计算驱动的状态机,用以太坊为例,从S到S1’,它的变化是:知道S的状态,然后收到一笔Transaction(交易),计算后得到新的S1’,全网络的所有节点都要做这样的计算。而零知识证明在第一点上,可以将区块链由计算驱动的状态机,变成由验证驱动的状态机,也就是状态机从S到S1’的状态变化,不再需要全节点知道。其中的核心关系是计算,不需要知道计算细节,但是知道计算是正确的。当然这也提供了一种扩容思路,随后会再展开讲。

第二就是原本的状态机不保护隐私,比如说a给b转了一笔钱,首先要知道a和b各自有多少钱,节点才能对状态进行操作,但这在现实生活中是反直觉的(会觉得泄露隐私)。所以,如果可以让节点在不知道具体状态的情况下,执行并且验证状态变化的有效性,隐私就会得到很大程度的保护。但是到底具体是什么,可以一会再谈。

所以综合来讲,对于Crypto领域来说,零知识证明是一个非常好的工具;从计算哲学上来说,也是一种提高可扩展性的方法;从隐私保护的角度上说,它也具有一定普遍性,对于任何的数据,只需要付出一定的成本,你的隐私就可以得到比较好的保护,所以我认为零知识证明和Crypto是一个相互促进,相互成长的一个过程。

Shaun:我们聊到了隐私,聊到了扩容,正好到了您的专业领域,我们就接着谈一谈。纵观目前整个互联网的发展历程,(在区块链技术诞生之前)隐私就一直是互联网领域常讨论的话题。因为人们为了获得互联网带来各种便利,会以牺牲隐私为代价,在这其中,就会出现很多关于隐私暴露所带来的各种不便,零知识证明的出现,在细节上如何解决这种隐私相关问题呢?还有一个问题就是,我们如果再聊到区块链,一定会聊到一个话题,就是扩容(ZK-Rollup),尤其是现今结合了零知识证明的扩容技术,对于区块链的发展,它的重要性体现在哪?

姚翔:提到隐私问题的重要性,如果从负面角度,也就是一旦发生相关风险,它的危害程度是不言而喻的,所以我觉得也不必再去展开。大家在现实生活中,其实可以体会到个人数据被收集所带来的一些不便和风险。

而这件事情需要从根本上去解决,原因是什么呢?比如说,你要去酒吧,酒吧老板希望你不是一个未成年,他需要你提供证件,通过身份证上的出生年份计算你是否满18岁,同时他还要验证你提供的证件是不是本人的证件。但同时他也获得了一些额外信息,他知道了你叫什么,知道了你的住址,知道了你的身份证号,而这些信息其实他是没必要知道的(即信息泄露)。

那么如何优化这个系统呢,我们假设有一个机器,这个机器可以读取身份证(假设这个机器是可信的),把这个身份证放在上面,同时有人脸识别,你只需要站在那,然后机器会告诉酒吧老板你的条件符合要求,甚至可以更高级,扫描完符合条件就可以直接通过。这样的好处是,在可以信任这台机器的前提下,酒吧老板不会获得任何额外的信息(除非你主动告诉他),这个好处是显著的,通过采用一些算法或者新技术,可以对隐私进行更好的保护。

但在区块链上,隐私这个问题会被放大,实施起来会更困难。第一点原因是,数据是所有人都可以访问的,原本的数据只有老板知道,在老板不泄露的前提下,你的数据还是比较安全的,但在区块链上所有的数据都是可以公开访问的。第二点是,数据是永远可以访问的,如果把它当做一个持久化账本,所以那么数据公开带来的风险就更加持久。就像你不会把身份证号码传到以太坊上,即使它许诺验证后可以提供一个更低的贷款利率,你还是不会做的。所以如果不能解决隐私的问题,区块链所能支撑的应用类型,要比传统世界更加有限,和现实世界是隔绝的,如果你要把这些现实的数据放到链上,势必会向整个网络去广播,大家都会知道这个数据。

那么在采用了零知识证明技术之后,它的解决思路就在于刚描述的证明系统:我不会告诉你原来的数据,不会让你获得额外的知识(可能包含一些签名,比如身份证信息,需要有一个权威对这个数据来源的合法性进行验证)。通过构造一个算法,这个算法让区块链去验证里面的数据,是否满足某些要求,通过之后,就可以执行下一步指令,同时也不泄露任何之前的信息。

但我觉得对于大多数朋友来说,其实不用关心它到底是如何实现的,只需要知道有这个特性:数据构造出的解题过程可以让这个区块链上的智能合约或者程序,相信证明者满足某些特征,但又不告诉验证者这个数据是什么,甚至一点数据都没有泄露。这是关于隐私的一个解决方案,当然这里又有存在很多问题……

Shaun:据我所知,它可能会有一个非常中心化的节点对吗?

姚翔:对的,这个问题我觉得也需要去做辨析。首先要说的是,大多数的ZK-Rollup不是ZK的(不是零知识的),这个名字是约定俗成而来的,也就成为了一个大家的共识,但为什么不是零知识的,因为在提高扩容效率的过程中,在算法的设计上做了不少的妥协。

我们首先解释ZK-Rollup的定义,然后回到那个中心化的问题。还用以太坊为例,状态机从S到S1’的过程,是由一个Transaction(交易)驱动的。现在全节点运行的世界状态是S,然后执行一笔交易变成了S1‘,再来个交易再执行。这意味着,第一点,每个节点都要保存完整的世界状态(知道区块链上的所有的事实),才可以去做执行,因为如果把a的钱转给b,而a有多少钱不知道,是无法执行交易的,所以要保存所有的状态, 这就会带来一个问题,状态的数据越来越多,同时又希望这个网络是无许可的。如果状态数据以T为计算单位(虽然现在没有那么大,一般是几百G的级别),那么个人承担机器运行的成本就很巨大,所以我们一般希望每一个以太坊节点是一个家用机器,或至少不要过于昂贵。

第二个问题是,执行过程是串行的,先执行一才能执行二,没有办法并行,因为交易的执行顺序是确定的,每笔交易之间不是完全独立的事件,所以没有办法进行并行的优化。而ZK-Rollup的思路就是,不需要再计算,我只需要提供一个证明,证明中包含的数据是:S到S1’这件事一定是对的,然后区块链其他什么也不用做,只需要把S变成S1‘就可以。

这有两个好处,一个是:全节点不需要保存所有的状态数据(这是从理想状态来说,因为证明过程附带数据是难免的);第二个是:证明过程,也就是Proof的生成,可以用定型的方法,或者通过硬件和软件的优化来加速,而在ZK-Rollup里面,大部分通过sequence(序列)进行证明的生成,它可以把要求提的很高,原因是在这套系统里大家认为,它不会影响到系统的准入门槛,运行全节点要做的是验证状态变化的有效性(或正确性),但不需要去完整的执行整个过程。而我们也知道,验证和证明是不对称的,所以机器可能对计算的要求很高,但是验证仍可以由一个普通的节点来运行。

所以这也是很多人担忧的(或者说对这种扩容方案的一种攻击),它会带来一些其他的风险,比如节点可能会有单点故障,一个节点生成证明时掉线了怎么办,还有可能会遭受一些额外的攻击,比如它来做MEV(Miner extractable value-矿工可提取价值),或者对交易的审查,我们假设生成证明的节点,要求很高,全世界只有几台电脑可以做,但如果生产机器的人因为个人因素拒绝对某个人(或某些人)打包交易,这种情况是很难解决的。

所以从这个角度来说,这种中心化或集中化,更多是在一个是交易的审查中体现;第二个是通过交易的排序来崛取一些利益。而对一般意义上理解的安全性的影响可能并不是很大,但是它的活性可能是受到影响的,因为如果只有一个节点,但掉线了怎么办,这个是扩容角度上大家的一些担忧。

但是在隐私这个角度上,这件事可能不会成立,因为对于一个终端用户来说,一般不会把个人数据交给第三方做证明的生成。因为生成证明的过程需要原始信息,就像前面提到的,大家不会直接把身份证号码放到区块链上,但如果把身份证号码给第三方来生成证明,这里的风险仍然是存在的。所以最理想的解决方案,或许是用户在自己的电脑上或手机上,通过软件在本地生成证明,但是就现阶段来说,这件事情难度还是比较大的,但对于行业来说这是一个必须要解决的问题。

Shaun:明白了,我们聊回刚才被打断的话题,那您觉得今天在解决隐私,比如说匿名问题或者假名问题的时候,零知识证明会有哪些不足,或者解决不了的地方?

姚翔:我觉得从大的方向上来说,我们对零知识证明所能带来的Benefit(效益),都是非常期待的,但也还会有一些现实的难题,一部分可能是技术层面的,当然技术层面上,大家会觉得未来某个时间可以解决,抱一个乐观的态度。比如说证明的生成时间太长,或者是成本开销比较大,或者说针对一些特定的算法可以优化,但是针对一般化的算法可能效率就没有那么高,或者说如果在以太坊上做的话,消耗的Gas费会很高。

Shaun:这些都属于技术问题?

姚翔:对的,属于技术优化层面。虽然随着技术优化,有些事情是可以解决的,但还有一些问题,不确定性就会很大。随着这个算法的发展,它的效率也在不断的提升,但提升到什么时候,它有可能会变得平缓,这件事情是没有办法判断的。

其次从隐私保护的角度来说,它不只是一个单纯的技术问题,即使你对用户的数据进行了更好的保护,使用了再好的技术手段,最后也有可能是无用功,因为会有一个木桶效应:你建了一个非常坚固的房子,你用各种算法,设置成铜墙铁壁,但是你出门的时候,有个窗户忘记关了,那所有的防护都没有用。所以我觉得这是一个系统上的问题,大家可能意识到零知识证明或各种算法技术可以帮助大家解决隐私的一些问题,但更重要的是提高大家对这件事情的认知,知道隐私这件事情很重要,再去采用某种方法或工具进行隐私保护。只有这样才能发挥技术带给我们的好处,否则,如果你觉得只有技术就够了,然后有了一丝懈怠,那么保护效果可能不尽人意。

Shaun:我在翻阅大量的零知识证明的相关资料时,总会遇到两个跳不过的词,一个是ZK-STARKs,一个是ZK-SNARKs,所以要请教一下姚翔老师,简单来说,这两个词的区别是怎么样的呢?

姚翔:我们从它的名字上来看,ZK就是Zero Knowledge(零知识的),SNARK的S就是简洁的,N就是刚才说的非交互,ARKs是一种知识论证,连起来就是简洁的非交互知识论证,知识论证是这个证明系统的名称。我们可以这么理解,非交互体现的是刚才提到的,证明者提供了一个证明,然后验证者可以直接来检查,不需要再问额外的问题(事实上,在区块链上也没有办法构造额外提问的流程,这个事情会很复杂),所以核心词落在了简洁上,而简洁就是在说证明的长度,我们可以想象一下,考试的时候,老师让你证明a大于b或c等于d,然后你写了100页纸交上去,我觉得任何老师都不会去改这个答案,虽然你可能写的是对的,但是他没有时间来进行检查,所以我们希望这个证明的长度是比较短的,而且从可用性的角度来说,假如在区块链上,给以太坊上传一个证明,是需要支付Gas费的,所以太长显然是不可行的。所以SNARKs描述的这一类型的零知识证明。

那STARKs讲的什么呢,S是Scalable(可拓展的),T是Transparent(透明的),ARKs是知识论证。我们可以认为STARKs的证明长度更长一些,Scalable是一个描述性词汇,而它的优势体现在:Transparent。因为SNARKs需要Trusted Set Up的过程,即受信任的初始化,也就是系统最开始,需要一个秘密数(不能公开,否则系统安全性崩塌),所以SNARKs一开始,一般会有一个Ceremony(仪式),会请很多人,每人进行一个秘密的输入,通过某种算法混合起来,如果有1000人参加,那1000人里只要有1个人没参与各种形式的共谋,系统就是安全的。最近也可以看到像以太坊要做KZG Ceremony;像以前还会带上放射性元素,在直升机上利用放射性元素,来提供随机性。但在STARKs里,它认为这一套程序过于繁琐且大费周折,不需要有这种过程,整个系统会更安全。

但其实刚才你也提到,这两个词可能是绕不过的,但我认为对于大多数普通读者或使用者,没必要细究其背后的工作原理,因为可能还会看到一些词,比如Prover time或是Verifier time这些参数,只需要知道这个参数的含义就可以了,不需要去关心算法的具体细节。如果你是真的想学这个算法,那从头到尾把一个论文看完,或经过一段时间的学习也就知道是怎么回事了,但到那时可能两者之间的区别也就没那么重要了。

Shaun:那接下来我们聊个轻松一点的话题,除了Crypto领域,今天的零知识证明在其他的场景也会有应用吗?

姚翔:嗯,比如说呢?你有知道什么应用吗?

Shaun:我看到大概的,比如说云计算,线上投票,或者金融类应用。比如说像以太坊现今的发展,因为隐私各方面的问题,也使DeFi的发展受限,可能在未来它可能会跟扩容相结合去解决类似问题。所以我就在思考,比如对于现实中的金融(或线下金融),它会不会有帮助呢?

姚翔:从算法的角度(或者说理论角度),帮助一定是有的,但实现这套系统的成本也会比较高,而且这里面可能还涉及到,类似监管方面的问题。因为我曾经也在相关机构工作过,我觉得这件事情属于听上去很好,可能企业去做一个创新实验(或者说搭一个创新系统),也是可行的;但在实际业务中,是非常难实现的,所以它一般不会投入很大的精力。当然在云厂商中它会提到一些问题,所谓的秘密计算,我举个例子,你把你的数据放在云服务端,你会希望把这个数据进行加密,但加密以后又会出现一个问题:你要想查询,或者说想做一些运算的时候,就会变得比较困难。我举个简单的例子,你把公司的数据全部加密放在了阿里云上,阿里是看不到你公司员工的年龄或收入的数据的,但当你想求一下公司的相关平均数据是多少,你是没办法在云端计算的,得把数据全部又降落到本地,再进行计算,那这时云计算的意义就很有限。

所以一般会采用类似叫同态加密,或者是多方计算,将经过加密的计算结果解密就可以了,不需要在本地执行计算。但如果是做一个AI模型的训练,本地机器是支持不了的,肯定需要借助云端的运算能力。

当然这些我觉得都还在探索过程中,我觉得理论上,从工程上,这都是可以去探索的,但是企业其实不太会用这种技术手段来解决这些要求,它更多的是通过合规性方法或者是法律角度来进行系统保障。反而我认为在区块链当中,这件事情会发展更快,因为现在的银行系统都是有牌照的,这也是人们相信它的原因,但在区块链中,谁在运行开放节点或谁在开发DeFi协议这些你有可能是都不知道的,所以你使用它也是因为它的代码通过了审计,有很多人使用,系统运行了很长时间等等原因。

所以我自己认为刚刚提到的那些场景,金融或者云计算或者线上投票等等,我记得当年我们还研究过线上投票相关,就是每个人投票,然后怎么求出这个结果,但又不能暴露投票归属,还不能让一个人向别人证明他投了什么,以此防止贿选,比如说我投了a,然后我就可以拿着我投他的证据,来找他索贿。这种系统我觉得设计的都会很复杂,也想的很好,但在实际过程中实际上会简单很多,因为它是一个受监管的业务,它就不会在技术上有什么动力,因为监管说你是符合要求的,我也不会再对你提出什么额外的需求。

Shaun:明白了,因为您是密码学的科班出身,并且这些年一直专注在区块链底层技术,隐私计算技术等方面的建设,那从您的技术背景,密码学背景和区块链背景以及这么多年在前沿领域的实践,您怎么看待零知识证明,这项技术未来的发展呢?

姚翔:还是回到刚才提到的,我在上学时的那个感受,就那个时候你会发现,零知识证明你不知道有什么用,然后呢…..

Shaun:说到这个话题,我打断一下,当时老师讲课讲的是大家都觉得必须得讲,但却用不上的知识,结果发现,好像有一天离自己很近啊,这种感觉很奇妙,不得不感慨一下哈哈哈。

姚翔:是的是的,我们那个时候还学了很多,比如说盲签名,代理重加密,还有数字水印,在当时这些技术,都没有很直接的应用。但我举一个数字水印的例子,我上学的时候,数字水印最多应该就是实验用途,不会有太多商业用途,但我印象当中,有个电影叫画皮2,有一个电影院把母带打上数字水印,后面市场上流出那个版本,通过数字水印就能知道是谁泄露出来的,当时我看到那个新闻的时候,我还挺感慨的,会发现学到的东西在真实的世界产生价值。

那回到现在,密码学是一个很非常广阔的领地,比如说对称加密,非对称加密,数字签名,单项函数,它们每一个都可以分的很细。但零知识证明我觉得又比较特殊,因为它得到应用的时间,是比较短的,也就是未来仍可以有大量的新智慧投入到里面。在过去的几年里面,它的发展是很快的,我觉得这个可能有两个原因,一个是作为密码学家来说,自己的成果得到广泛应用,他肯定很开心,所以也会激励更多的人参与进来;第二个就是也要感谢,包括以太坊基金会,Zcash在内的各种Crypto项目的支持,它们会愿意为这样的研究提供经费上的支持,这些学者就不需要完全依赖学校的课题了(课题可能也提供不了那么多经费),他们通过做这些产业间的研究,一方面成果可以得到应用,另一方面生活或收入也得到了保障,我觉得这两个方面都推动了快速发展。

但至于在未来会变成什么样,我觉得很难预测,因为从非对称加密出现到如今比较普遍的应用,也就是30多年时间,RSA是1979年提出来的,这时间是不长的。同时也很难想象没有RSA或没有非对称密码学的网络世界是什么样子,它们已经遍布在现今的网络世界,例如账户系统,对网站的这种安全保护,数据的隐私保护等等方面,今天的互联网就非常依赖这些密码学的基础设施。

所以如果什么时候我们不会过多的讨论零知识证明,也就是它已经渗透到了我们的日常生活中,或者说只有一些研究的人员去讨论,它变成一个日常的,大家觉得好像是有这么回事。等那一天到来,也就说明这个技术可能达到了我们现在想要的一个阶段。

Shaun:好的,谢谢姚翔老师。Daorayaki社区一直保持着对web3领域前沿技术的持续且深入的跟踪式研究和报导,在内容选题方面,社区评审委员会所有成员一方面会继承24小时不间断的寻找行业内最新最前沿的技术发生,另一方面,也会对行业内最顶尖的前沿技术团队进行跟踪式的持续性的深入报道,这样做的目的是为了兼顾社区在内容方面的广度和宽度。

我们在研究中发现目前零知识证明在整个Web3领域,普及化的程度还很低,尤其是在中文社区,还没有一个成型的专业性的普及ZKP相关知识的社区,鉴于零知识证明这项技术可能对行业未来所产生的至关重要的作用,Daorayaki社区觉得有义务跟责任让更多的小伙伴了解熟悉甚至参与到零知识证明未来的建设中,结合Yaki叨叨,DeMedia,Podcast平台,由浅入深,多角度全方位的介绍,探讨与分析零知识证明的相关内容,而本期的Yaki叨叨作为零知识证明专题报导的第一期,只是拉开了整个篇章的序幕,更多关于零知识证明的精彩内容,敬请大家关注,感谢姚翔老师的倾情分享,让社区的小伙伴受益良多,谢谢姚翔老师。

同时也感谢Daorayaki社区,今天相关讨论的音频晚些时候会上传在 DAOrayaki官网,DAOrayaki.org的专属播客频道里。我们也会同时发布在国内的小宇宙播客平台,全球各大流媒体平台,例如苹果播客、谷歌播客、YouTube以及Spotify上,欢迎大家收听及订阅。

再次谢谢姚翔老师,我们期待下期还能跟小伙伴一起分享,我们下期不见不散。

致谢

本文的编译工作获得 DAOrayaki 的支持和资助。