SHA:DAOrayaki Podcast |对话姚翔:零知识证明(ZKP)的应用场景

创作者:Hahaho?

审核者:Shaun

在上一期播客中,我们对零知识证明进行了详细的溯源,姚翔老师给大家解读了零知识证明的诞生背景,介绍了1985年那篇著名的行业论文《交互式证明系统的知识复杂性》。我们深入探讨了零知识证明可能给整个行业带来的可延展性,包括如何解决隐私问题,扩容技术对区块链未来发展的重要性,ZK-STARK与ZK-SNARKs的区别,以及实现ZKP所面临的技术难题及负面影响等。

如果您只是想对零知识证明有一个简单的了解,相信上一期的播客已经能够充分的帮助到您。然而,DAOrayaki社区对零知识证明的探索远不止于此,随着ZKP在整个行业不断的深入发展,我们更关心这个技术在实际场景中的运用,所以,今天我们很高兴再次邀请到姚翔老师,就ZKP在实际场景中的一些运用的话题。

Shaun

Hello,大家好,欢迎来到Yaki叨叨,我是主持人Shaun。

首先感谢“原语里弄”的发起人姚翔老师,在百忙之中再次做客DAOrayaki的播客,继续跟我们普及ZKP的相关知识。

在上一期播客中,我们对零知识证明进行了详细的溯源,姚翔老师给大家解读了零知识证明的诞生背景,介绍了1985年那篇著名的行业论文《交互式证明系统的知识复杂性》。我们深入探讨了零知识证明可能给整个行业带来的可延展性,包括如何解决隐私问题,扩容技术对区块链未来发展的重要性,ZK-STARK与ZK-SNARKs的区别,以及实现ZKP所面临的技术难题及负面影响等。

如果您只是想对零知识证明有一个简单的了解,相信上一期的播客已经能够充分的帮助到您。然而,DAOrayaki社区对零知识证明的探索远不止于此,随着ZKP在整个行业不断的深入发展,我们更关心这个技术在实际场景中的运用,所以,今天我们很高兴再次邀请到姚翔老师,就ZKP在实际场景中的一些运用的话题,跟大家细致深入的聊一聊。

有请姚翔老师跟社区的小伙伴打个招呼。

姚翔

DAOrayaki的朋友们大家晚上好,取决于你在哪个时区哈哈哈。

Shaun

如同开篇谈到的,我们在上期聊了关于ZKP的入门知识。在本期开始之前,我大致把零知识证明正在使用与未来可能使用的场景做了简要分类,包括:扩容,隐私公链,通用公链的隐私保护,抗共谋及去中心化存储。

所以我们今天对这几个场景,做一些深入的探讨。先聊第一个场景,ZK与扩容,可能也会涵盖ZK-EVM的部分内容。

姚翔

严格来说,提到的五个场景之间,并不是完全并列的关系。

其次扩容这个场景,比较特殊,因为它本身不是ZK的。也就是在扩容场景中,它没有用到零知识的特性,它本身也不是隐私问题的解决方案;这项技术是对链上计算与验证模型的调整,比如像zkSync网络这类产品,我们称为ZK-Rollup技术,是因为它起到了扩容的效果,但扩容又是怎么实现的呢?

我们知道区块链上的状态变化是由交易驱动的:A向B发送一笔交易的同时,会驱动状态由当前状态向新状态发生变化。

在以太坊的计算模型下,状态转移的流程是:1、当前状态;2、交易驱动;3、得出新的结果。其中的问题在于,计算交易的过程不是并行的,只能串行执行,这也是为什么每个区块的交易数量是有限的:在短时间内保证每个节点将交易计算完成;当前以太坊的状态数据规模在上百G,而产生新区块的间隔只有13秒,如果考虑最坏的情况,13秒内没有将交易执行完,整个网络就永远不可能把所有的事情验证完,就会陷入一种危险的状况。所以在状态转移过程中,“机械”的将每笔交易的串行计算,造成了很大阻碍。

而此时零知识证明起到的作用就是,从旧状态到新状态的跨越中,不去实际的计算交易过程,只需要简单验证提供的证明,节点就会确信交易存在,随后进行状态转移。比如在zkSync网络中,你可以发送Token或ETH,这是针对一种特殊类型的交易,构建的零知识证明电路,以此提高效率。它的好处也在于,从链的角度来说,只需要验证不需要计算,所耗费的资源会大大减少,这是一个很大的变化或进步;但还有一点要说明的是,这实际上是构建了一个二层网络,状态转移也是在二层网络中发生的,所以需要每隔一段时间去以太坊上更新智能合约里的状态数据。

而有关ZK-EVM,可以把它认为是一种兼容EVM的特殊类型Rollup。它之所以重要,是基于一个假定:一直以来智能合约的开发过程中所遗留下来的代码,安全审计报告,安全运行时间等等是有极大价值的,所以大家会希望将这些有价值的智能合约可以比较容易的迁移到新的ZK-Rollup上,开发者也不必再为新的使用场景设计特定电路。

但目前来看这种方式不太可行,因为EVM最初在设计的时候没有考虑过零知识证明,所以从算法层面等设计)对零知识证明的兼容并不是很友好。所以大家在“希望设计出比EVM更兼容零知识证明的虚拟机”和“过去的经验积累”中,找到了一个平衡点,就是ZK-EVM。也就是State0到State1的状态转移过程中,只需要检查提交的证明,同时在EVM里用Solidity写的一个智能合约也可以正常运行的新虚拟机环境。其中的技术设计比较复杂,解决方案也有很多;但很重要,一定要提到的一点是:ZK-EVM到底证明了什么?

第一个就是程序的字节码,即是否正确的载入了程序;第二个是要证明操作哪些数据;第三件就是具体状态数值的改变。一旦ZK-EVM做成之后,节点在运行的时候,就不需要去重新执行交易,只需要验证Proof是否正确,随即执行状态转移。这种节点的验证方式,比重新计算交易所消耗的时间和计算资源要小很多。所以对于单个节点来说,验证交易的效率与可拓展性提高了,同时对以太坊的全节点来说,硬件的运行门槛也不会很高。

所以从设计上来看,ZK-Rollup本质上是计算与验证模型的变化。

Shaun

我听下来的理解是,结合了ZK的扩容技术,一是成本会降低,二是效率更高,最后是硬件的门槛降低?

可以这么理解,但要说明的一点是,以太坊本身是没有变化的,这些事情只发生在ZK-Rollup一层,在以太坊上还是要去执行各种交易,只是以太坊上的交易比例会发生变化。ZK-Rollup在以太坊上就是一个或几个一组的智能合约,管理着自己的状态数据,假设以太坊上每个区块里90%多的交易都是ZK-Rollup之间的交易,那么对于节点来说,它只需要考虑对这些状态数据访问的优化,但这种想法过于乐观且不现实。

所以ZK-Rollup对以太坊的扩容,和以太坊本身的验证模型转变,是没有关系的;以太坊仍要全节点装载所有数据状态,执行交易计算,只是对于特定智能合约来说验证门槛减轻了,这本质上是两件事情。

Shaun

我们聊过了扩容,那想请姚老师再聊一聊,关于ZK在隐私公链上的应用。对我个人而言,像个人身份类的数据,都属于隐私的部分。

姚翔

我觉得这个命题其实可以分成两部分,首先是我们的需求是什么,其次是它是不是一定要用零知识证明来做。

首先说需求,我们都知道区块链是一个公开网络可以验证,这里就要提到Zcash,它是在2014年提出的一条公链协议,也可以算是一个加强版的Bitcoin。

我们不讨论共识算法或数据结构层面的问题,只考虑一个核心区别:在比特币上,一笔交易的Sender,Receiver以及金额的信息都是公开的,且全部节点都参与验证,UTXO模型也决定了需要验证Output的总金额要比Input的总金额小;而Zcash并不对以上提到的这些数据开启全部默认保护,是有一定比例的。它保护的数据包括借款人,收款人以及金额,也就是说你可以给一个人秘密的发一笔钱,在公共账本上其他人并不能看到是谁发的,也看不到谁收的以及有多少钱。

这个功能的实现,基于它构造了一个大的匿名的集合。举一个不太恰当的比方,与很像:想做这件事的人,共同组建一个巨大的池子,在这个池子里把自己的东西藏起来。核心在于这个池子要很大,如果只有一个人在用,再怎么保护也没用,因为链上进出就一个地址,中间怎么绕都没用,这就是Zcash的原理。而且它其实是一个非常开拓性的工作,例如ZK-SNARK的首先使用,包括Zcash的基金会也对整个零知识证明技术的发展提供了非常大的帮助。

那么再往下追问,它还能保护什么?我们能否对更一般的状态进行保护?因为谁给谁转多少钱这件事似乎过于简单,一开始以太坊要做智能合约平台,就是觉得比特币能做的计算类型或复杂度是有限的。

从动机的角度分析这件事,我们能不能对一般的状态转移模型,也结合零知识证明技术,现在来看这件事比较困难,而且这些链关心的更多是应用层面的状态转换,而不像Zcash一样在底层对Sender,Receiver和金额进行保护。

第二个问题是,这件事情是不是一定要用零知识证明来做?其实也不是,比如Monero是用环签名以及相关的技术做的,并没有用到零知识证明技术。密码学的技术或原语是很多的,为了实现同样的目的可能会使用不同的技术,虽然本质思想是相似的。此外这些新公链与Zcash不一样的原因,我觉得还有一个比较重要的点:就是监管的介入。监管介入后自然希望对数据有更大的控制权,最近发生的很多事情也体现了这点,而且很多项目走的是融资流程,相关内容就比较敏感了。所以这个命题很难再往下继续推进,如果对这个问题实在感兴趣,我觉得只需要了解Zcash就够了。

Shaun

在通用公链上呢,最近好像也有用ZK在通用公链上实现隐私性的需求,在这个领域应该也有比较广泛的应用?

姚翔

大家能看到的常见应用,应该也是最近被OFAC制裁的Tornado.cash。它相当于在以太坊上建了一个混币器,可以将一笔钱存入池子里,同时生成一个收据,并可以随时凭收据从池子里把钱提走,中间的关联关系其它人也没办法知晓。这整个过程就是通过零知识技术来实现的,收据的作用是证明有从池中取钱的“权利”。

这整个过程中,团队确实有很大技术上的成就,因为除了以太坊每个账户上面固有的ETH余额,其它ERC-20Token,是在各自Token合约里记录的,这样分散的状态下很难设计一个可以同时保护借款人,收款人和金额的模型。

所以Tornado.cash写了一个新的智能合约,将所有的Token打入智能合约里,实现一个关系的盲化。但很多Token因为要符合监管的要求,所以本身内置了对Token权限的控制:可以使一些地址禁止转账,甚至直接把地址的金额冻结。所以当OFAC出台相关规则之后,像USDC第一时间把公布的地址进行了“拉黑”,地址里的钱也无法进行其它动作;但也有像DAI的类似Token,因为是去中心化代币,它没有保留相关控制权限。

所以可以看到,零知识证明在类似场景中实在的发挥了作用,但从监管的角度来说却又很危险,这也是目前技术和现行法律监管制度的碰撞。

Shaun

所以在这个场景,去中心化变成了类似“伪命题”?难免要使用中心化的思路。

姚翔

从这个角度来说,这可能也是保护隐私的必然方法,简单说就是藏叶于林,假如100个人给另外100个人转钱,如何知道谁和谁的对应关系呢,这取决于匿名级的大小,匿名级要足够大这件事可能才有意义。

Shaun

那您对抗共谋这个场景熟悉吗?

姚翔

因为我自己也在做二次方筹款的相关研究,有关MACI协议大概了解一点。有趣的地方在于,它是一个经典场景下的新问题,因为在二次方筹款中,贿赂的问题会更加突显,假如一个人想贿赂投票人,在链上内容公开的前提下,可以容易的证明贿赂成功;但在MACI下,类似于创建了一个假身份,投票者就无法证明真的依照了贿赂者的意愿行事,贿赂这件事就变得困难,贿赂行为双方的“信任”无法建立。

虽然二次方筹款这个命题是成立的,但我们先回到这个经典场景中,最重要的事情其实是投票者的隐私,如果从这个角度去想,二次方筹款其实是解决两件事,首先是投票者隐私。这只是第一步,在抗共谋的场景里,要再前进一步,即就算你想披露,也无法披露,这可以有效的防止贿赂行为的达成。

但这其中的递进问题是:你自己无法证明你投给了谁,但假设场景是委托代表投票,这就造成了代表也无法向对他授权的人,证明他的确的执行了委托,这个方向可能会展开更多的讨论。

Shaun

这个话题可能会涉及到有关去中心化身份,DAOrayaki是业内最早对MACI做跟踪报道分析的,最近在跟行业内的人交谈时,确实也会谈到代理投票时的投票者身份验证问题;所以我想,如果去中心化身份的发展能够结合零知识证明,相关的解决方案可能会更完整一些。

姚翔

据我所知确实有一些团队在讨论基于零知识证明的可验证凭证。如果可以在链上基于凭证,既不泄露相关信息,又起到验证的作用,当然是很好。比如说我持有某个证件,我的某一个属性又符合条件,比如我的年龄大于多少岁,或我的存款大于多少,但我又没有泄露信息本身,这确实是可以解决很多现有问题。

但这可能也是整个行业的发展问题,零知识证明的算法和技术在目前工程的实现方面,还是一个比较小的因素。

Shaun

那接下来聊最后一个场景,去中心化存储,可能要提到Filecoin,这也是我在看相关资料时最看不懂的。

姚翔

这个例子很有趣,大概4年前我看了相关白皮书。为什么存储文件会涉及零知识证明呢,这和它的机制设计有关:Filecoin的设计就是要证明某个时间内存有对应的某个文件数据,这样才能获得相应的激励。

这里存在一个矛盾点,就是在查询数据的时候是要付钱的,这也暗示着数据不是公开的,但是如果不公开,某人如何证明确实存有这个数据呢?所以在整个机制的设计中,零知识证明技术的作用就是在不泄露数据的前提下,证明自己拥有数据。且每隔一段时间会有挑战者,针对你有没有存某一个特定数据发起挑战,随后接受挑战的人,会根据存有数据生成一份一次性证明,这份证明所有人都可以验证。

还有数据的可用性问题,冷数据实际上处于不可用状态,这就会使得证明的生成时间与挑战时间不对等,通过机制设计,可以确保挑战时间内成功完成挑战,同时查询者又不知道数据的详细内容。

这也使Filecoin产生了大量的硬件需求,这些硬件本身是用来对数据的存在性证明进行计算,也有围绕着这些计算做的各种硬件与算法的优化。总的来说,这个场景的核心就是,通过整个网络的激励设计来向“你”证明“我”拥有某个数据。

Shaun

所以其实围绕的核心话题还是关于隐私安全与隐私效率问题,那您怎么看待零知识证明相关的隐私安全与隐私效率问题?

姚翔

这个问题,我觉得可能需要精确一点。刚才在聊天区,我看到有一个朋友也在问:ZK-EVM有没有保护隐私。再比如前面谈到扩容的时候也提及了,在这里零知识证明不是为了保护隐私,只是给验证状态转移合法性一个新工具或者说新模式。

所以现在也有一种新的东西出现,叫ZK-ZK-Rollup,有个相关项目叫Aztec,它相当于在ZK-Rollup上又实现了一层ZK,这层ZK是用来保护隐私的。所以我们讨论的ZK-EVM和ZK-Rollup的ZK,严格来讲跟零知识没有太大关系。这也是行业早期发展过程中,约定俗成的叫法,让很多问题有些混淆。

所以可能要更关注这件事情本身,如果它是为了解决安全问题提出的算法,那就只谈论安全;在谈到ZK-Rollup,就谈论验证或扩容的内容。这和场景是息息相关的,而不是用一个固定标准去评判。

Shaun

那从您目前的从业经验来看,ZKP是否也有一些潜在的风险呢?

姚翔

从算法上来说,近些年的研究和实际应用已经有很大的进展和突破了,但总体来说,这还是一个很新的领域,出现问题是必然的。

其次是目前应用层确实存在一些状态过热的问题,可能是急于求成,就都在想未来能实现多么多么好的效果,但算法本身,包括构造零知识证明的思路,都有存在巨大变化的可能性。

简单来说也是因为基础层的创新依然在发展,所以也存在一种可能性:未来要重新设计现有的应用层或上层系统。这不是很大的问题,但我个人认为确实存在应用层过热的现象。

Shaun

零知识证明有多种用途,并会彻底改变我们共享数据的方式以及区块链的工作方式。借助数字身份和零知识证明,人们可以证明它们的年龄或公民身份,而不必放弃其身份证明文件中的敏感和有价值的数据。它还可以用于数字投票,并确保匿名投票有效且可计入。

但是,零知识技术仍然是一个令人难以置信的新事物,要成为密码学的主要组成部分还有很长的路要走。然而,它的研究正在取得巨大进展,有朝一日可以为各种事物创建零知识证明,包括以太坊智能合约和金融应用程序。这将彻底改变我们与数据交互的方式,并导致个人隐私的复兴。

DAOrayaki社区一直保持着对Web3领域前沿技术的持续,深入,跟踪式的研究跟报道。我们在研究中发现,目前零知识证明在整个Web3领域普及化的程度还很低。尤其是在中文社区,还没有一个成型的专业性的普及ZKP相关知识的社区。介于零知识证明这项技术,可能对行业未来发展所起到的至关重要的作用,DAOrayaki社区觉得有义务跟责任让更多的小伙伴了解,熟悉,甚至参与到零知识证明未来的建设中来。结合Yaki叨叨dMediaPodcast平台,由浅入深,多角度,全方位的介绍,探讨,分析零知识证明的相关内容。

再次感谢姚翔老师的倾情分享,让社区的小伙伴受益良多,谢谢姚翔老师。同时也感谢DAOrayaki社区。

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

来源:金色财经

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

比特币AKI:数字藏品与实体经济的一场“双向奔赴”

品牌为消费者塑造的价值感与数字藏品的稀缺性可谓是天作之合。 文:叶小钗 编辑:亚伦 数字藏品与品牌营销“数实融合”的趋势最近,央视旗下的数家数藏平台出尽了风头,展现出了数字藏品“国家队”的强大“.

TUSDAptos:明星公链aptos我们该如何把握

简介:Atpos是一个实现高吞吐和低延迟,区块链利用流水线和模块化方法来处理事务的layer1公链,团队:aptos于2021?年创立,总部位于加利福尼亚州的帕洛阿尔托.

[0:31ms0-7:323ms