Manta Network 详解零知识证明:为什么 ZK 如此重要?
基于 ZK 技术,许多大胆的创意都可以成为可能。
原文标题:Web3 隐私保护协议 Manta Network 详解零知识证明:为什么 ZK 如此重要?
原文作者:曼达洛人
原文来源:微信公众号
随着 Web 3 广泛应用,我们坚信隐私不仅仅是“有就行”,而应该是十分必要的。当前,大部分链上公开的事物,都需要一个对应的私人选项。
今年以来,为隐私而生的 ZK(Zero-Knowledge Proofs,零知识证明)无疑是我们看到最频繁的行业词汇之一。无论是 Vitalik 关于 ZK 将成为未来重大技术革命的言论,还是 StarkWare、zkSync 等项目的最新进展都让 ZK 叙事在2022年备受期待。
关于零知识证明的研究最早由 MIT 教授 Shafi Goldwasser、Silvio Micali 和 密码学大师 Charles Rackoff 在二十世纪八十年代的一篇学术论文——《交互性证明系统的知识复杂度》中提出。通过零知识证明,证明者可以在不披露信息本身的情况下向验证者证实信息的真实性。在二三十年前,这个计算机理论学家的脑洞还被外界认为是“不靠谱的”。而最近十年,ZK 技术发展日新月异,当初论文中的设想也正成为现实。
如何更好地理解这项密码学技术的意义呢?本文将从ZK 的应用领域、门槛以及 Manta Network 的解决方案三方面展开。
什么是ZK?
什么是 ZK ?举例:如何证明自己会开车?出示驾照。该例解释了 ZK 的特性:
- 证明:出示了有效的证明。
- 效率:仅需出示证明,无需再去开着车转几圈,做一些倒车入库等操作,来展示自己会开车。
- 隐私:仅出示了驾照,未透露其他信息。
用密码学解释,从技术角度说,ZK 是证明者与验证者两方之间的一个协议,证明者可以在不透露证明本身之外任何信息的前提下,让验证者确认某项证明是有效的。这是证明的“零知识”部分——没有知识或信息可以支持这条证明,除了证明本身。正是如此,这项技术才更加重要。
从应用角度来讲,ZK 有两个非常重要的方向:隐私性与可拓展性。
ZK 与隐私
从信息论的角度来讲,隐私是信息泄露的问题,想要保证链上隐私,必须通过密码学的解决方案,将链上数据进行加密,让链上的每笔交易记录之间没有关联性。通过 ZK 能够验证计算而不会泄露有关输入和计算本身的任何信息,这也是当前唯一从密码学手段保证链上隐私的工具。
在 Web3 概念中非常重要的一点是,用户真正掌握自己的身份和数据所有权。而目前区块链上所有的信息(地址、转账记录等)都是公开的,通过机器学习、大数据挖掘可以非常容易地获得用户的信息,相比于 Web2 时代,隐私问题有过之而无不及。虽然目前区块链用户尚没有广泛且强烈的隐私意思,但如果想要实现 Web3 的愿景,人们必须要有权力拥有自己的链上隐私。它可以不是必选项,但一定是可选项。
为了改善区块链网络中存在的隐私泄露问题,2014 年,几位密码学专家在比特币的代码基础上,采用了 zkSNARK 创造了首个可以实现完全匿名的区块链项目 Zcash。zkSNARK 可以在不透露任何敏感数据(金额、地址等)的情况下来验证交易的合法性,为用户在使用加密资产进行交易时提供更高级别的隐私。
零知识证明首先是个密码学协议,一方(证明者)可以在不公开解决办法的情况下让另一方(验证者)相信他知道一个数学难题的解决办法。
在隐私转账中,需要创建证明来验证“一笔之前未被花费过的资产从一个用户的地址发送到另一个用户地址,他们被隐藏的账户地址都相应地更新了余额变化,且这笔资产不会被第一个用户再花费。”Zcash 可以将用户和交易的信息尽可能地匿名,而同时这笔交易依然可以被网络共识有效地验证。
匿名交易如果想要顺利进行,必须满足一定的条件。比如 Zcash 需要用户发布一个 “commitment”,以及一个“nullifier”。
Commitment 是指 Zcash 链上未花费的余额。正如比特币网络一样,Zcash 网络上的节点也会保留各个账户余额,以证明资金可以用来花费。如果用户想要发送 ZEC,需要发布一个 commitment,来证明“看,我有这些钱”(但是不会公布具体有多少钱)。而 nullifier 则是用来说明同样数量的资金已经被预留了。
如果 Alice 想发给 Bob 一笔 ZEC,她需要用 commitment 来证明她拥有使用这笔资金的权力,同时她需要 nullifier 来证明这些数量的钱已经为 Bob 预留了(当然是在不暴露 Bob 身份的前提下)。交易发送方把这些私密信息加密后直接放到交易中上链,接收方再通过某种方式解密以获得私密信息。
匿名转账和比特币一样依赖于哈希加密,但是 zkSNARK 在其基础上增加了一个隐私层。
zkSNARK 不仅可以用于加密资产间的匿名交易,同样可以用于帮助越来越多的应用实现隐私化。Web3 时代,我们已经看到了 DeFi、NFT、GameFi 、SocialFi 等应用层的大爆发,链上行为越来越丰富,单纯的匿名转账已经不能够满足人们对于隐私的需求。
想象一下,基于 ZK 技术,许多大胆的创意都可以成为可能。比如完全去中心化的隐私的 message board,让用户可以在不暴露具体身份的情况下证明自己的可信度:“我是一名美国官员”,“我是一个粉丝 10 万的 Twitter KOL”;我们还可以在链上 MMO 游戏中隐匿玩家地点,做到真正去中心化的「密码学战争迷雾」,类似的事情 Dark Forest 已经在做了。这样的例子还有很多,大家可以尽情发挥想象力。但正如有人所预测的那样,下一代的以太坊 dapp 可能并不是在原有应用基础上的改进,而是来自于前所未有的新事物。
ZK与可拓展性
可拓展性代表性的应用是 ZK-Rollup Layer2,如 StarkWare、zkSync、Scorll 等等。
ZK 技术目前已被用于各大 Rollup 方案,来解决以太坊的可拓展性和高昂的手续费问题。StarkWare、zkSync (出自 Matters Lab)、Aztec、Loopring 是目前 zk-rollup 领域的主要选手。
如何更好地理解这项密码学技术的意义呢?我们需要从共识说起。以太坊上高交易成本背后的经济学原因在于共识:共识一定是昂贵的,因为不贵的共识是不可信的。
假设有 10,000 个节点,每个节点做同样的计算,这样产生的结果就很可靠,不会因为少部分节点的不诚实而对共识结果产生影响。这也是为何区块链可以去中心化——通过算法的手段建立信任。
然而共识的成本在于 10,000 台电脑重复计算,成本比在 1 台电脑上贵 10,000 倍。这是所有共识协议,不管是 PoW 还是 PoS 所存最大的问题。
而 ZK 就是可以从本质上降低成本的一种方式——我们可以在 1 台电脑运行计算,其它电脑则用密码学的方法验证计算的可靠性,并不需要重复计算。在以太坊等比较昂贵的链上,验证计算的正确性要比重复计算更便宜,更节省gas。
这也是大家纷纷看好 zk-Rollup 的原因。zk-Rollup 搭建在 L1 主链之上,它将多笔交易打包成一笔提交给以太坊主链,通过零知识证明(SNARK 或 STARK)而被主链快速验证,而不是让主链单独处理每一笔交易,这样每笔交易的大小会进行压缩,同时零知识证明验证的成本会分摊到每个交易上,于是可以节省 Gas 费和提高 TPS。
ZK 部署有何门槛?
目前,在加密资产领域,ZKP 技术相对比较成熟,但部署有门槛,主要表现在:
一、对开发环境有一定要求,如以太坊就不太适合 ZKP 开发。目前几乎所有 zk-EVM 仍在开发中。
关于【Manta Network 详解零知识证明:为什么 ZK 如此重要?】的延伸阅读
Coin Metrics:分析以太坊 Blob 与 EIP-4844 的影响
自3月13日起,多个Layer-2解决方案采用blob交易,超过950,000个blob已发布到以太坊,降低了操作成本。EIP-4844升级提高了L2的可伸缩性和降低交易成本,每天约有10,000个blob发布。blob被设计为18天后过期,防止永久存储膨胀。随着rollups使用blob发布大量数据,blob空间利用率将增加。blob费用根据需求动态调整,4月份因铭文blob激增而增加,但随后又降低。Blob的采用是EIP-4844降低数据存储开销和增强L2可伸缩性的积极信号。然而,跨资产、流动性和用户体验碎片化等挑战仍需解决。随着更多L2利用blob,拥塞可能会再次出现。
Stacks Nakamoto 升级,BTC生态的文艺复兴
Stacks是一个跨链共识区块链,旨在将智能合约功能移植到比特币网络中。其共识机制为转移证明,通过燃烧比特币来参与挖矿。Stacks 2.0主网已推出,获得美国证券交易委员会批准的代币销售。Stacks 3.0升级解决了安全性、性能和可扩展性等问题,引入签名者角色,提高链的可扩展性。Nakamoto升级解决了MEV问题,提高了挖矿过程的公平性和稳定性。升级将在4月22日开始,提高Stacks区块链的透明度和信任度。
EVM 是以太坊虚拟机,也是以太坊开发环境。当某条链与 EVM 兼容时,以太坊上现有的应用,可以直接“复制粘贴”代码,部署在该链上,如 Uniswap 可直接部署在 Optimism Rollup 上。
ZK-EVM 则是指,基于 ZKP 开发、且兼容 EVM 环境。
由于开发环境问题,造成目前 ZK-EVM 项目,在交易体验上,似乎没有宣传中那么迅速,原因是链上需要时间生成“零知识证明”,也就是“驾照”要现场制作。
二、开源 ZKP 较少,加密团队需要雇佣密码学家。当前的零知识证明构建方案主要有以下两种:
- 使用 Circom 等高阶编程语言
缺点是不能进行性能优化,很可能使得应用的使用体验变差。
- 直接使用 Arkworks’ Groth16 等 ZK 库构建协议
缺点是需要开发者有深厚的密码学背景,而且开发过程中很容易出现错误。
Manta引入可配置权限、基于隐私的新资产类型
Manta Network 是采用零知识证明(Zero-Knowledge Proof,以下简称“ZKP”)构建的 Web 3 隐私层协议,基于波卡 Substrate 框架开发。
Manta 基于 ZK,引入了两个基本概念:zkAssets 与 zkAddresses。
- 什么是 zkAssets?
zkAssets 是一种新的加密资产类型,其隐私性、完备性及访问,由 ZK 提供保护,并具有以下特点:
(1)支持灵活的资产类型:zkAssets 包括各种灵活的资产类型,如同质化代币(如 ERC20 等)、非同质化代币(如 ERC721、ERC1155 等)、灵魂绑定代币(不可转让的非同质化代币)。
(2) 默认隐私:zkAssets 在链上默认是隐私的,资产持有者的地址、持有者的资产以及资产类型,都是加密的。
(3)自愿披露:在资产持有人许可下,zkAssets 支持披露可证明的资产信息。具体地讲,持有者可向审计者披露资产交易历史,而不必披露花费密钥(Spending Secret)。持有者也可有选择性地披露可通过 ZK 进行验证的资产信息。
(4)可定制的资产政策:zkAssets 的发出者,可定制访问权限,如 KYC 规则、访问权限,例如,能否将黑客资产列入黑名单。(请注意:espresso systems 同样有一个针对资产可定制(CAP)的提议,但是相比于 expresso 的单片电路实现,Manta 采用的是多电路实现)
现有的加密资产,只能将上述信息完全公开,相比之下,zkAssets 给资产持有者带来了隐私,同时,让审计者和监管合规选项易于实现。
- 什么是 zkAddress 系统?
zkAddress 系统,是 zkAssets 的公钥基础设施,由三部分组成:
(1)支付密文(Spending Secret):密文是随机产生的(如使用BIP39助记符),并衍生出另外两个密钥,即 zkAddress 和查看密钥。想要转移 zkAssets ,需要花费密文(Spending Secret)来生成 ZKP。
(2)zkAddress:zkAssets 的公钥,可用来接收任何种类的 zkAssets。注意:zkAddress 不会在链上的任何 zk-transaction(基于 ZKP 的交易)中披露,因此,其他人不能将链上的zk-transaction与 zkAddresses 联系起来,除非交易的发送者或接收者向其他人授权查看密钥。
(3)只读状态密钥(Viewing Key):用于查看一个 zkAddress 的完整交易历史,正如名称显示,它是只读的,只能用于查看历史,不能花费 zkAddress 上的任何 zkAsset。
这样一来,zkAddress(及其支付密文和只读状态密钥)只服务于 zkAssets,使用不同的(对零知识证明更友好的)密码学结构支持只读密钥,使 ZK 零知识证明生成变得更高效。
基于新资产类型,Manta 团队开发的隐私交易系统MantaPay 致力于将 Kusama 或平行链资产,转换为 zkAssets,并在 zkAddressses 之间转移。与此同时,Manta 团队正开发 zkAssets 的编程层,使 zkAssets 具有可编程性和可组合性。
整理来源:
Manta Network:为什么我们坚定不移地看好 ZK 技术?
基于零知识证明构建的Web3.0隐私层Manta Network
Web 3.0隐私基建:什么是 zkAssets 和 zkAddresses ?
责任编辑:Felix
免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:曼达洛人,如有侵权请联系删除。转载或引用请注明文章出处!