北京时间7月23日21:00,Manta Network 联合创始人 Shumo Chu 受清华大学学生区块链协会(THUBA)邀请在 Twitter Space 与密码学博士 Sputnik 进行了一场对话 ,话题涉及 ZK 基础知识、ZK 科研及应用,以及 Manta 如何利于 ZK 解决 Web3隐私问题,以下为对话全程文字实录:
Yiki(主持人):
大家好我是清华区块链协会(THUBA)的 vice president , Yiki。从 2017 年成立至今,我们已经有了 5 年的历史,举办过近 200 场的活动。在即将到来的 8 月还会举办首次的黑客松,欢迎大家关注和报名参加。那么下面可不可以请 Shumo 来简单地介绍一下 Manta 是做什么的以及您的一个自我介绍。
Shumo:
大家好,非常荣幸参加这个活动,我是 Shumo,Manta Network cofounder 。首先介绍一下 Manta ,我们大概是 2020 年 10 月份成立。当时我们成立 Manta 的原因是觉得区块链(Web3)有很大的一个问题,就是隐私。我们当时就非常看好 Web 3这个行业的前景,但是如果这个行业走向主流的话,所有的链上的交易都是明文,这是非常不好的。我们觉得隐私是人们最基本的权利。如果大家稍微看所有现在公链的架构的话,可以发现所有的公链都基本上是没有隐私的,除了极少数的像 Monero 或者 Zcash。
所以我们的初衷就是解决这个隐私问题,那具体怎么解决呢?我们首先做了链上的隐私支付产品—— MantaPay,目前已经上线了两版测试网。然后你可以把它想象成是一个 bring-your-token 版本的 Zcash ,这个产品是在 Polkadot 生态上线的,但是我们之后也会走向多链。我们即将开始的第二步是做隐私资产上的智能合约,已经研发了差不多半年左右,但是还没有正式发布。我觉得 Manta 用一句话概括就是我们是做整个 Web3的隐私层。我们希望未来在所有 Web3 的传统操作里面,你可以有一个选项——privatize by Manta ,然后你的交易就会自动变成隐私的交易。
关于我自己,我之前在华盛顿大学读 PhD,做数据库系统和形式化验证。毕业之后在 Algorand 做了一年的 research scientist,之后在加州大学圣巴巴拉分校做助理教授,现在全职做 Manta Network。
Yiki:
好的感谢。Sputnik 你可以也简单介绍一下自己,以及你现在在科研关注的一些领域。
Sputnik:
各位好,我是 Sputnik 现在的身份是在 THUBA 负责 ZK research 方向,我个人是在清华攻读密码学的博士,主要是研究区块链上隐私保护技术的一些内容,包括算法和应用,零知识证明技术。我们的 ZK research 目前主要是面向大众建立一个 ZK 的讨论组,包括产业和学术的交流,也欢迎大家一起来参与。很高兴今天能够和 Shumo一起,来讨论 ZK 的应用,欢迎大家。
🎙️ ZK 是什么
Yiki:
首先请 Shumo 来简单地介绍一下什么是 ZK ,它的原理和应用,用一个小白的话来概述一下。
Shumo:
ZK 的全称是 zero knowledge proof(零知识证明)。它最初被理论上研究很多年,最早的研究至少是在二三十年前,是 GMR (Goldwasser Micali Rackoff)那篇论文。然后大家觉得理论上这个东西是可行的。一个很重要的里程碑是Zcash ,当时好几个学校教授合作做了第一版。大家以前都觉得这是一个理论上的东西,是不太可能实践的。然后他们做了一个比较实际 construction 叫 libsnark,当时支持了第一版的 Zcash,大家才意识到这个东西是可以实践的。
我借用 Micali 讲的,什么是 ZK,你可以想象成是一个 encryption on computation 。Encryption 一般是指数据加密,就是可以把 data 从明文变成密文,但是 ZK 它其实是一个相对更强大的东西。它是说 encryption on computation 就是把计算给加密了。具体来说,比如说假设你想证明你知道一件事情,比如3 加 5 等于 8。然后希望证明你知道这个事情,但是你并不告诉具体的这个3 加 5和这个 8 的 input 是什么。然后你有这个 3 的 commitment 5 的 commitment 和 8 的 commitment,你需要说服某人这是正确的。具体到区块链里,你需要用这样的方式向所有的 validators 或者 node runners 证明就是非常非常 high level 的ZK。
Yiki:
谢谢 Shumo。Sputnik,从你的角度,你觉得 ZK 的发展是怎么样的以及你会怎么去定义 ZK 呢?
Sputnik:
从密码学的角度来说,ZK 的这个协议的话其实非常简单,一句话可以概括:它是一个两方的密码协议,然后有一个 prover 和一个 verifier 就是我们说的证明者和一个验证者。他要完成的事是证明者需要零知识的向验证者证明他知道一个秘密。
然后什么是零知识的呢?就是我们从密码学的角度,它可能需要用到一些信息论的知识,去严格地定义,就是 verifier 在和 prover 进行交互的过程之中不能获知也不能获得自己原本没有的能力,或者说知识,就像刚才Shumo 举的一些例子,比如说要证明 3 加 5 等于 8,他知道这个式子,但是他不能够公布。所以说可能需要用一个 commitment 。commitment 就是我们讲的一个密码学的承诺,然后它具有一个绑定性和一个掩藏性,就是你可以看到我的 commitment 然后其内在的值就被它绑定住了,有点像哈希函数。如果被绑定的值改变,commitment 也会改变,就是绑定性。掩藏性是说,看到 commitment 又不能确知里边是什么,我将来可以打开,现在可以给你提供一个零知识证明,然后让你相信我承诺的就是我的这个值。这就是从密码学角度看待 ZK。
Yiki:
那正好你刚刚也从科研的角度来讲 ZK 的一个定义和发展,那可不可以再简单介绍一下现在科研领域是怎么去研究 ZK 的,你们都会关注什么?
Sputnik:
其实在科研领域,也有不同的方向,有很理论的,那就是可证明安全,那是非常密码学理论的一套内容,它需要用一些形式化的方法,这个我们就不去详细地展开,此外就是一些应用。应用的话也有在算法层面做的,就是提出一些新的优化的算法,可能性能会比之前的算法更好。然后就是像 Zcash 这样, Zcash 也是刚才 Shumo 提到几个教授设计的,协议是在 14 年提出的,然后系统是在 16 年上的。这种它其实就是相当于用算法来实现一个应用。大概就是这些方向。
Yiki:
那就是其实你在 THUBA 也关注 crypto 很长时间了,你觉得现在 ZK 的科研和 crypto 产业之间的关联是怎么样呢?衔接地好不好?
Sputnik:
我觉得可能 ZK 要在科研方面可能已经有一些成果,有很多不同的算法,但是我觉得和产业结合的话,还需要再提高它的性能等等的一些优化。我的意思是现在可能有些算法我们在理论上可能有一些好的结果,但是在实现上可能不确定有没有那么好。我们请 Shumo 来跟我们具体讲一讲在产业应用方面, ZK 的应用具体达到一个什么程度。
Shumo:
科研当然非常重要,我觉得科研和实际应用的鸿沟在于科研主要从复杂度角度研究,实际应用更关注实际性能。密码学比较好的点是理论的性能和实际实现差别不大,不会有大的隐藏常数,另外是实现一个算法可能需要大型的工程和人员。
第二个就是说 ZK 底层协议实现的工程量是非常复杂的,例如 R1CS 和 plonk 的电路。然后所以说包括我们 Manta 在 build 一个叫 OpenZL(开源零知识证明库),相当于是 middle layer 能够提高开发效率,我认为科研和产业之间的 gap 就是这个middle layer abstraction,当然,对密码学底层的了解非常好,也有益于工程的。
Yiki:
好的,好的感谢。那么刚刚也提到了一些 ZK 的应用,我想请 Sputnik 再详细的梳理一下 ZK 在区块链领域以及非区块链领域都有怎样的应用场景。
Sputnik:
在区块链方面的应用,ZK 主要分为两个部分,我认为一个是隐私,然后另一个是扩容。隐私的话包括刚才我们多次提到的 Zcash 项目,可能大家也大多都听过大零币这个名字。它主要实现的是在一个交易层面的隐藏,就是它通过零知识证明实现了交易三要素,也就是转账方、收款方还有交易内容三项方面的隐藏,比它之前Zcoin 实现了改进。
此外的话是扩容。其实所谓说扩容,我们往往听到区块链扩容这个词,它可能主要反映的是一个 TPS 的提高。然后像 layer1 的公链,怎么进行扩容和 ZK 有什么关系呢?刚才我们提到,一个零知识证明,那它首先是一个证明系统。然后所以如果说刚才保护隐私,用到是它零知识的性质。那么在扩容这边,我们用到其实是它证明的一个性质。像现在往往大家听到很熟悉的一个词叫做 ZK roll-up,以太坊现在也在进行这个 ZK roll-up 扩容的探索。它的逻辑就是我们希望让这个公链回归它本身,因为公链其实成本是很高的,大家要进行共识,所有人都要维护一套账本,都要去重新跑一个计算,这个成本很高。所以说我们希望把这个计算成本拿到链下,然后链上只对最终的结果进行共识。就是说我们这个区块链其实是一个状态,就是由大家的账户的 balance 来构成,然后每有一笔交易, balance 就会更新一下。那这其实就是一个计算的过程,我们就希望在链下进行这样的计算,然后向链上提交经过计算之后的新的结果以及我计算是正确的这个证明值。链上只需要验证这个证明值,就可以直接把状态更新,相比于直接计算,验证证明值,它其实非常快的。所以这就是我们说的 ZK roll-up 它进行一个扩容。这就是 ZK 目前在区块链方向的应用。
然后在非区块链领域,其实我们说的往往是一些隐私计算。当然现在隐私计算也都在和区块链进行结合。像隐私计算的话,比如说我们希望做到的多方安全计算,多方需要共同计算出一个结果。那在这个之中就有可能会用到一些 ZK 的协议,它往往是作为一个组件来进行出现。然后基本的应用情况就是这样。
Yiki:
好的感谢。那么现在我想请问一下 ZK 它为什么重要呢?就比如说如果想要对一些大学生来讲解 ZK ,Shumo 你会来怎么解释呢?
Shumo:
一个根本的角度是人与人的信任。整个区块链系统就是在解决信任问题。就像刚才 Sputnik 讲的,现在大家已经看到的 ZK 的应用非常重要了。第一个是链上隐私,基本上 ZK 是目前唯一解决方案,要在达成共识情况下隐藏信息。第二个事情是 rollup,就是对交易做打包提供证明来验证。所以从大的趋势上来讲,我们整个社会发展方向是把人与人之间建立信任的过程去掉。ZK 现在从原来特有的一些协议,到目前已经可以对任意的计算做验证, 其实大家已经可以看到有一种摩尔定律式的提升了。
🎙️ 怎么学习ZK
Yiki:
了解,那就顺着这个话题可以再问一下。Shumo 就是您可以结合你自己学习 ZK 的一个经历。给大家一些小白怎么从 0 开始学 ZK 的一些建议吗?
Shumo:
我觉得首先是大家需要就是明确一个观点,就是看第一个是说大家学习 ZK 的目的是什么?ZK 的技术栈很深,明确目的更有效率。第二点是如果大家想做 ZK 的 master 那么需要从基础的密码学内容学起。然后年轻一代的密码学家大家都是看一些比如说 斯坦福大学教授 Dan Boneh 的公开课开始学的,因为那就是密码学最基础的一些东西。
第二个就是可以去看 Github 上开源的库,实际用起来我觉得基本上就是这两个方面。一个是说你能让学习就从密码学最基础的这些直接开始学习。第二个实践上就是把这个程序开始写起来。
Yiki:
明白,我觉得非常有借鉴意义,不仅要从理论上来学,然后写代码也非常必不可少。那么 Sputnik 你对这个问题有什么看法吗?因为据我了解的话,你是从大学就是学数学上来的,你会对一些同学学习 ZK 有什么建议吗?
Sputnik:
我本科是学数学,后来学习的子方向是信息安全,然后从大三开始接触密码学。如果说大家想要系统的了解,然后能够去自己上手应用的话,那么我也是建议需要学习一些密码学的基础概念,包括说签名,哈希函数,MAC 等等一系列的概念,然后包括密码学的方法,怎么定义零知识。
如果想简单的了解,那我觉得大家可以就是首先你要明确这个 ZK 协议他是在做什么,我给大家推荐一篇文章,叫做 How to explain ZK protocols to your children , 90 年代发表在美密会,美密会是密码学的最权威的峰会之一。这篇文章里边用到一个大家比较熟悉的阿里巴巴与四十大盗的例子,以及零知识洞穴,都是出自这篇文章,它是一个讲故事的方式详细介绍了 ZK 的各种性质,以及它的一些密码学工具,包括什么叫做模拟器,模拟器是我们用来证零知识的一个工具。另外的话,大家也可以关注我个人的一个 Repo 还有一个播客,可以在小宇宙搜索零知识洞穴。然后里面也介绍了就是这篇文章, 还有关于ZK 的一些应用。
🎙️ ZK 赛道现状与未来
Sputnik:
那么我们接下来的一个主题就是说聊了这么多关于 ZK ,以及 ZK 的学习,然后也希望听一听 Shumo 从产业的角度来看,为什么我们说现在 ZK 应用的赛道它非常的卷,就是好像现在有很多 ZK 应用的项目,包括说 zkSync 等等,还有也包括刚才提到的 Zcash 等等,甚至以太坊基金会自己也在做。然后他们背后都有一个强大的密码学团队,然后包括像 Starkware 它的这个 cofounder Eli Ben-Sasson他本身是这个以色列的教授,然后他也是 Zcash 的一个创始人,然后想问问 Shumo 对这个现象有什么看法?
Shumo:
这个首先我觉得就看大家对卷这个词怎么理解。的确是我觉得是这样的,无论是已有的项目,还是在创业阶段的项目,我可以告诉大家的是只会更卷,不会变得不卷,就是肯定是越来越卷的。但我觉得卷这个事情对于包括 ZK 这个领域和包括我整个 web 3是一个好的事情。Web3是可以自由进出的领域。大家觉得自己都有机会,所以卷就开始了。其实卷之中,各个项目做的事情不完全相同,Starkware 就很有特色,有自己的编程语言。
然后还有一个问题就是,怎么切入这个卷的过程中,就是可能并不要看现在正在火的这些项目在做什么,而是想说在这个领域还有哪些需求,我们怎么来解决一些实际的问题。总而言之,我觉得卷是不可避免的一个现象。然后我觉得如果大家想在 ZK 这里做事情,还是找到自己的切入点而不是模仿其他项目。
Sputnik:
关于这个 ZK 赛道的一个问题,还想请你谈一谈,ZK rollup 领域的几家头部公司包括 zkSync, Starkware, Scroll 等,他们都有一些什么样的区别呢?这可以谈一谈吗?
Shumo:
就是首先我并不是自己做 ZK rollup 的,关于这个问题,我认为首先是 EVM 等效性,就是项目是不是能完全兼容EVM。
第一种叫 evm compatible 这个是 zkSync 做的。他的做法是并不会把整个的 evm 放到电路里面,而是自己做了一个 VM。因为把 EVM 放到电路里这个技术难度太大了,然后会产生一些问题。这是 zkSync 的 approach, 它的好处是可能上线会比较早,也就是说,在实际的主网里面, zkSync 有可能是这几家里面主网上线最早的。但如果只在 Solidity 层面兼容,以太坊很多工具包括调试器是用不了的 。
Scroll 和 Hermez 都是号称有 EVM 等效性,这个我认为更好,能够利用工具链。
Starkware 到目前为止 prover ,就是证明器还是闭源的。然后您刚才说那个以太坊基金会在做的其实是一个纯技术探索,应该大概率不会实际上线。
Sputnik:
然后那接下来就是关于这块 ZK 赛道,我们还有最后一个问题就是说我们刚才讲了他在 ZK 在隐私方面还有包括 rollup 方面的这样一些应用。但是其实对于开发者而言,可能刚才说都是需要有专业的密码团队。然后应用的话其实像包括 rollup 这种,我们希望其实也做到一个,这个使用者透明,就是他可能感觉不到这个中间层的存在。我的问题是我们有没有可能做出一些更接地气的产品呢?就是让普通人都能感受到的都能去用的,有没有这种呢?
Shumo:
我觉得这问题非常好,我觉得当然是有的。就第一点关于ZK rollup,它是没有隐私的,可以直接在中间层上部署,比如 zkSync,不需要自己懂 ZK。但是如果是偏隐私的角度的应用,就需要自己懂 ZK。比如说举个例子,比如 Manta 的隐私资产的平台,那你和这个隐私资产交互,那你就可能需要自己做这个 ZK 的编程。我觉得这是对于开发者来说非常有意思的一件事情。
第二点,我觉得在这个领域虽然有密码学的背景非常好,但是高阶语言和工具的发展使得开发者不再需要手写底层的电路,就像高级程序语言的出现使得不用手写汇编。所以我们可以看到用 ZK 编程门槛其实是越来越低的。我觉得这个事情肯定是需要时间的,将来不需要开发者懂得每一个密码学细节 ,ZK编程的语言和库也在不断地出现。
Sputnik:
好的。谢谢 Shumo。我大概明白你关于 ZK 的一个展望。然后那接下来一块我们可能想聊回关于 Manta 。接下来可能想问的一个问题就是说我知道我们 Manta 正在做这个 MantaPay 就是也是一个支付系统,也是具有隐私的性质,然后可不可以请 Shumo 介绍一下这个 MantaPay 然后同时讲一讲 MantaPay 和 Zcash 的区别?
Shumo:
首先是说从解决问题的角度。首先我们确实借鉴了 Zcash 很多成功之处,但是我协议很大的一个不同,就是 Zcash 只支持单个币种,我们支持多个。我们在整体概念上也有区别,Zcash 是要从 0 build 一个东西。我们是想要把隐私作为一个可以赋能整个产业链的基础设施,而不是只做自己的支付系统。
第二点从技术角度,我们比 Zcash 起步晚所以用到了更新的密码学技术,包括 ZK 友好的哈希函数。我们的电路大小是 Zcash 的1/10。性能更好,用户体验更好,这个是我们我们和 Zcash 的相同点和不同点,我们当然也是站在巨人的肩膀上,学习了 Zcash 的很多东西。
Sputnik:
好的,谢谢 Shumo 关于 MantaPay 的介绍。然后另外的话我还有一个细节问题,我个人比较好奇,在此之前我可能先向大家介绍一下这个概念,就是 trusted setup 这个叫做可信设置。就是说我们在一些算法当中,有的时候我们需要先通过一个 trusted setup 来生成一个算法需要用的一个参数,然后像在 Zcash 之中它最开始的设计,然后它的算法就是需要这么一个设计的。像那个之前 Shumo介绍,我了解到是不是我们 Manta pay 也需要有这样的一个 trusted setup ,我想听一听,因为现在可能也会有一些不需要的 trusted setup 的一些算法,然后但是我们依然采用了这点,是不是也有什么好处呢?
Shumo:
对,就是这个肯定是有好处的,也是目前使用比较广泛的。零知识证明系统有两种,一种是我们现在用的叫 Groth16,另一种是 Plonk,各有优劣。前者需要 trusted setup 后者不需要(application-specific trusted setup),我们通过测试发现前者性能好。
从很多密码学的细节上来看,二者电路有差别,证明系统不同,概括起来,我们现在用到 trusted setup 纯粹是性能的考量。用户设备不同,产生证明时间也不同,我们不能“歧视”慢的用户。具体就是,证明生成的时间是2秒钟还是20秒,这个其实是会对用户的体验产生本质影响的。这个是我们在性能上的考量。
然后第二点,trusted setup 安全性还是可控的。Manta 社区会有很多成员参加,我们可能也会应邀请一些在圈内比较有声望的人参加 trusted setup。所以诚实性可以保证,这就是我们用 trusted setup 的原因。
Yiki:
好的,谢谢 Shumo,今天我们这个 AMA 已经进行了一个小时,已经临近尾声。整体我们从什么是 ZK 到小白怎么学习 ZK 以及 ZK 的一些科研和产业的现状都展开了非常深入的讨论。我们嘉宾的环节就结束了,谢谢 Shumo 和 Sputnik 的分享。
关于 THUBA
清华大学学生区块链协会 ( THUBA) 是热衷于区块链技术研究的清华学生自发组建、自主管理的学生组织,旨在成为连接中外高校区块链领域的桥梁,致力于教育和培养Web3的未来领军人才。
关于 Manta Network
Manta Network 致力于通过隐私保护构建一个更好的 Web3 世界。Manta 的产品设计从第一性原理出发,通过 zkSNARK 等领先的密码学架构为区块链用户提供端对端的隐私保护。在保障隐私的同时,Manta 兼具互操作性、便捷性、高性能以及可审计性,允许用户进行任意平行链资产间的隐私转账和交易。Manta 的愿景是为整个区块链世界提供更便捷的隐私保护服务。
Manta 的创始团队由多位加密货币资深人士,教授和学者组成,他们的经验包括哈佛大学,麻省理工学院和 Algorand。Manta 的投资机构包括 Polychain、ParaFi、Binance Labs、Multicoin、CoinFund、 Alameda、DeFiance 以及 Hypersphere 等。Manta 也是波卡官方 Web3 基金会资助获得者,Substrate Builder Program 成员,伯克利大学区块链加速器成员。
Were Hiring!
访问查看开放职位:https://jobs.lever.co/MantaNetwork
关注官方频道了解有关 Manta/Calamari 的更多信息:
Website:https://manta.network/
Github:https://github.com/Manta-Network
Twitter:https://twitter.com/MantaNetwork
Medium:https://mantanetwork.medium.co
Telegram:https://t.me/mantanetwork
Discord:https://discord.gg/ZtSuSKRy8X
Telegram中文:https://t.me/mantanetwork_zh
Twitter中文:https://twitter.com/manta_china