为什么我们坚定不移地看好 ZK 技术?
火星财经注:文章有所删减
今年以来,ZK (Zero-Knowledge Proofs,零知识证明)无疑是我们看到最频繁的行业词汇之一。无论是 Vitalik 关于 ZK 将成为未来重大技术革命的言论,还是 StarkWare、zkSync 等项目的最新进展都让 ZK 叙事在2022年备受期待。
关于零知识证明的研究最早由 MIT 教授 Shafi Goldwasser、Silvio Micali 和 密码学大师 Charles Rackoff 在二十世纪八十年代的一篇学术论文——《交互性证明系统的知识复杂度》中提出。通过零知识证明,证明者可以在不披露信息本身的情况下向验证者证实信息的真实性。在二三十年前,这个计算机理论学家的脑洞还被外界认为是“不靠谱的”。而最近十年,ZK 技术发展日新月异,当初论文中的设想也正成为现实。
从技术角度说,ZK 是证明者与验证者两方之间的一个协议,证明者可以在不透露证明本身之外任何信息的前提下,让验证者确认某项证明是有效的。 这是证明的“零知识”部分——没有知识或信息可以支持这条证明,除了证明本身。正是如此,这项技术才更加重要。
从应用角度来讲,ZK 有两个非常重要的方向:
- 隐私性 ——ZK 做到了信息的隐私性。在交易中,如果你需要证明拥有某种未花费的资产,但是又不想暴露资产的整个来源去向,ZK 可解决比特币等区块链平台中交易透明性带来的信息泄露,如转账地址和金额;
- 可拓展性 ——若某个区块直接验证的时间很长,可改为由一人验证并生成证明,而网络中的其他人快速验证该证明,而不再需要每个人都花很长时间来直接验证;
ZK 主要有两种类型:zkSNARK (简洁非交互式零知识证明)和 zkSTARK(简洁全透明零知识证明)。 zkSNARK 的概念最早于 2013年被学者提出,目前已比较成熟, Zcash 是首个应用 zkSANRK 技术的区块链项目。
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 的另外一个重要的应用领域。从信息论的角度来讲,隐私是信息泄露的问题,想要保证链上隐私,必须通过密码学的解决方案,将链上数据进行加密,让链上的每笔交易记录之间没有关联性。通过 ZK 能够验证计算而不会泄露有关输入和计算本身的任何信息,这也是当前唯一从密码学手段保证链上隐私的工具。
在 Web3.0 概念中非常重要的一点是,用户真正掌握自己的身份和数据所有权。而目前区块链上所有的信息(地址、转账记录等)都是公开的,通过机器学习、大数据挖掘可以非常容易地获得用户的信息,相比于 Web2.0 时代,隐私问题有过之而无不及。虽然目前区块链用户尚没有广泛且强烈的隐私意思,但如果想要实现 Web3.0 的愿景,人们必须要有权力拥有自己的链上隐私。它可以不是必选项,但一定是可选项。
为了改善区块链网络中存在的隐私泄露问题,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 验证者。