注:本篇示例引用自 https://medium.com/qed-it/the-incredible-machine-4d1270d7363a。作者 Aviv Zohar,Ghost、Spectre 协议创始团队成员。
为什么要关注这个系列文章?
1/ 赛道关注高。资本对该赛道预期较高,零知识证明概念项目动辄千万美元级别以上融资,且大部分当前估值过亿美元。
以太坊创始人 Vitalik 等业内大佬,对零知识证明也有较高期待,他曾表示长期来看 zk-Rollup 将成为以太坊主要 Layer2 扩容方案,并撰写多篇文章,阐释零知识证明相关概念。
2/ 赛道尚属早期。由于开发难度较大,且项目大多于近几年创立,绝大多数项目主网、代币未上线,赛道尚属早期。可提早关注。
3/ 零知识证明名词和概念较多 zk-Rollup、zk-EVM、zk-SNACK、zk-STARK 等名词多且繁琐。 本系列将试图用通俗的举例和语言,帮助大家理解复杂概念。本系列非学术论述,举例只为帮助大家通俗理解,更严谨的表述,欢迎大家查看专业论文学习。
从数独游戏开始
奇异博士和绿巨人很喜欢玩数独。
数独是一种如下图所示的数字游戏,玩家需要在空格内,填上 1-9 任意数字,让每一行、每一列、每个粗线格(33格)内的数字,均包含 1-9,且不重复。
有天,奇异博士给绿巨人出了一道很难的数独,把绿巨人难住了。
眼看做不出来,绿巨人脑筋一转道,“博士,这题是不是根本就无解?”“怎么可能呢?我自己做出来了啊。”奇异博士说道。 “真的吗?我不信。”绿巨人回答。 博士接着说,那我证明给你看。但我会用“零知识证明”在不把解告诉你的情况下,证明这题有解。
绿巨人瞪大了眼睛。
零知识证明
博士让绿巨人在屋外等着。自己拿出 81 张卡牌,每张卡牌上都写着一个数字。 他按照解法,把卡牌摆放好。再把“答案”都翻过去,只让题面卡牌朝上,如下图。
博士把门打开。 绿巨人惊讶道,“这…我怎么验证?” 博士拿出 9 个纸袋子。 他把同一行的卡牌收起来,放到同一个袋子里,用手搅了搅,打乱顺序。9 行卡牌分别放进了 9 个袋子里。
“我现在打开每一个袋子,看看里面的卡牌是不是1-9。如果是,证明有解;如果不是,说明你错了。”
绿巨人打开了袋子,每个袋子的数字,还真是按1-9排列。
尽管亲手验证了结果,但绿巨人还是不服,“你这万一是蒙的呢?”
接着博士再次摆好卡牌,绿巨人又按照每一列和每个 33 粗线格的顺序,收集卡牌验证。 结果还是一样,每个袋子里的卡牌按 1-9 排列。
这下绿巨人心服口服了。他相信这道题有解,但他不知道解是什么。
小结
本文实际介绍了两个概念:零知识证明与交互式证明。
关于零知识证明
1/ 在零知识证明中,有两类参与者:证明者和验证者。证明者提供“证明”,在无需提供其他信息的情况下,即可向验证者证明信息为真。
故事中,奇异博士是证明者,需证明数独有解。绿巨人是验证者。
绿巨人确信该题有解,但他不知道具体的解是什么。
2/ 零知识证明的性质
完备性(Complete):提交者若确实掌握了答案,那他能找到方法向验证者证明为真,即真的假不了。
合理性(Sound):若提交者未掌握答案,那他无法向验证者证明为真,即假的真不了。 零知识性(Zero-Knowledge):证明过程中,验证者除了“证明”之外,不会获得其他相关信息。
3/ 零知识证明应用方向:隐私与扩容
隐私方面。基于“零知识性”,提交者能有效保护隐私信息。
将零知识证明应用于隐私保护的项目有:Manta Network、Aleo、Aztec,以及链游 DarkForest 黑暗森林等等。
其中,Manta 基于零知识证明,创立了隐私资产类型 zkAssets,支持用户将现有的 ERC20 代币,ERC721、ERC1155 等 NFT 转入 Manta。
将原本链上公开的资产,转变为隐私资产 zkAssets,进行隐私交易、DeFi 交互、NFT 买卖,隐私 GameFi 等操作,也支持开发者创建 Manta 链上原生隐私资产。
扩容方面。要从共识说起。以太坊高交易成本,背后的经济学原因在于共识:共识一定是昂贵的,因为不贵的共识是不可信的。
假设有 10,000 个节点,每个节点做同样的计算,产生的结果就很可靠,不会因为少部分节点的不诚实而对共识结果产生影响。这也是为何区块链可以去中心化——通过算法的手段建立信任。
然而,共识成本在于 10,000 个节点重复计算,成本比在 1 个节点上贵 10,000 倍。这是所有共识协议,不管是 PoW 还是 PoS 都存在的问题。
零知识证明是可以从本质上降低成本的一种方式——可以在 1 个节点上运行计算,其它节点用密码学方法验证计算的可靠性,不需要重复计算。
在以太坊等比较昂贵的链上,验证计算的正确性,比重复计算更便宜,更节省 Gas。这也是大家看好 zk-Rollup 的原因。
zk-Rollup 搭建在 Layer1 主链上,将多笔交易打包成一笔,提交给以太坊主链,通过 ZK(SNARK或 STARK)被主链快速验证,而不是让主链单独处理每一笔交易。
每笔交易的大小会进行压缩,同时,零知识验证成本会分摊到每个交易上,可以节省 Gas 费,提高 TPS。
4/ 交互式证明是零知识证明的一种验证方式。
故事中,奇异博士摆好卡牌,让绿巨人先按行验证。然后再摆好卡牌,让绿巨人按列、按粗线格(3*3格)验证。
验证过程中,博士和绿巨人持续互动。这叫“交互式证明”,验证者和证明者持续交互。
有点像数学老师出的算术题,几十道甚至上百道题,若学生都能答对,则可以认为该学生已经掌握了算数技巧。
但问题是,万一阅卷老师和考生串通呢,帮助学生作弊怎么办?
如何解决提交者和验证者串通问题?接下来,就要引出非交互式证明的概念了,也就是 zk-SNACK 和 zk-STARK 。