编者按:作为 Crypto 在扩容、隐私等多个方向上发展的“秘籍宝典”,零知识证明(zero-knowledge proofs,简称 ZKPs)被业界寄予了了极高的期许。然而,由于针对该概念的解释性内容大多面向于具有一定计算机科学或密码学基础的人群,所以对于多数普通用户而言,想要彻底理解该概念本身仍具有一定的障碍。
9 月 8 日,a16z 合伙人Michael Blau 发布了关于零知识证明的科普性文章。文章巧妙了避开了零知识证明概念本身较为抽象的数学思辨部分,而是利用魔术表演来将 ZKP 的效用具象地展现了出来。
以下为 Odaily 星球日报就Michael Blau的原文内容(第一人称口吻)所做的编译,出于阅读流畅度考虑,存在一定删改。
《2001 太空漫游》的作者克拉克说过:“任何足够先进的科技,都与魔法无异。”
零知识证明就是那些如同魔法般的科技中的一个,它其实是一个密码学概念,可用来解决 Web3 中的两项重大难题——扩容和隐私。
从效用来看,采用零知识证明有助于降低链上交易费用,设计全新的隐私保护型 App,从而推动 Crypto 传播至十亿级别的用户。抛开 Crypto 不提,ZKP 也有潜力被应用于安全传输敏感数据,进而帮助打击非法金融系统或对抗泛滥的诈骗信息。
但零知识证明究竟是什么呢?对于少部分研究员、开发者而言,网络上可以找到很多详尽的解释,但这些内容并不面向计算机科学或秘密学经验较少的普通用户。尽管部分先驱也写过一些类比型的科普文章,但截至今日,想要找到一个精辟、通俗的零知识证明相关解释,进而帮助普通人准确地把握其魔力,仍不是一件简单的事情。
所以在接下来这篇文章中,我结合了我在 Crypto 和魔术行业的背景来探索一个全新的类比——把零知识证明想象成一场伟大的魔术。
首先,还有要有些基础知识
我会先行分享关于零知识证明(特别是其经典算法 zk-SNARK)的“高级”定义,以及它的主要特性,然后再将这些“部件”一一对应至一场魔术之中。
a16z 的研究合伙人 Justin Thaler 针对 zk-SNARK 给出的定义是:“zk-SNARK 允许某人(证明者)向其不信任的另一个人(验证者)证明他知道一些数据,而无需透露任何关于数据本身的信息。”
麻省理工学院的课程则是这么定义的:“零知识协议允许我向你证明我知道一个事实,而不需要告诉你事实本身。”
这在区块链的叙事下有着非常大的应用价值,因为:
-
(对应隐私)零知识证明可以在保护私人信息的同时允许他人验证信息的真实性。
-
(对应扩容)零知识证明可以“简化”并“节省”工作量。“简化”意味着“证明”的大小要比所证明的“数据”本身更小要;“节省”则意味着验证者检验“证明”的效率要比分析原始“数据”本身更高。在以太坊上,这意味着智能合约处理的数据将会更少,因此用户的 gas 成本会更低,Layer2也可以利用这些特性,允许 Dapps 以更低的成本处理更多的数据。
总之,零知识证明具有两个主要特性:
-
一是隐私性:你正在证明的“数据”(或“事实”,或“知识”)不会被透露给验证者。
-
二是可扩展性:检验“证明”比直接分析原始“数据”效率更高。
这便是零知识证明的经典解释了,但听起来仍像是在打谜语 —— 一个人如何才能在不分享信息的情况下证明自己知道这件事呢?
让我们重新看一遍这个定义,但这一次,我们要变一场魔术。
魔术本身就是零知识证明
简单来说,在一场魔术表演中,“魔术”本身就是零知识证明。为了完成一场魔术,“魔术师”需要掌握背后的“秘密”,只有知道这个秘密他们才可以进行表演,但他们肯定不想把这个秘密透露给“观众” —— 这显然会破坏魔术的效果。
-
Odaily 星球日报注:注意这里用引号圈出了四个角色。
“秘密”对应原始“数据”;
“魔术”对应“证明”;
“魔术师”对应“证明者”;
“观众”对应“验证者”。
接下来,我们将把上一段落中关于零知识证明的“高级”定义带入到这场魔术之中,想象魔术师为“证明者”,观众为“验证者”。
魔术表演则是“证明者”向“验证者”进行证明的过程。如果演出成功了,即相当于证明有效,观众也可以确认魔术师一定了解背后的秘密;如果演出失败了,则意味着证明无效,观众在失望之余也会意识到魔术师可能并不知晓相关技巧。
显然,魔术很清楚地展现了零知识证明的隐私性,因为观众始终未被告知背后的秘密究竟是什么。那么可扩展性呢?让我们继续回到这个比喻中…
观众若想要知道魔术师是否掌握了秘密(“证明者”是否了解原始“数据”),完全可以跳过正常表演,只要求魔术师分享背后的秘密本身。然而,魔术的技巧一般都相当复杂、繁琐,观众很难在较短的时间理解这些技巧的设计机制及实现效果,更不要提完全掌握了,甚至于魔术师完全可以提供一个错误的技巧,观众也很难分辨其真伪。因此,想要通过剖析秘密本身来完成证明,往往需要较长的时间和较大的工作量。
这就好比直接分析原始“数据”更费时费事一样,检验“证明”效率会更高,其背后所显现的正是零知识证明的可扩展性。
用纸牌来举例
举个简单的例子,假设我吹牛说我拥有“反向洗牌”的技能,可以把一副混乱的扑克牌洗出我想要的效果。那么我该如何向你证明呢?
最高效的方式就是我直接给你洗出一副具有一定规律的牌出来,你看到这副牌之时就可以确认我确实具备这个技能,这既不要求我向你分享技巧,也比你自己慢慢去学要来得更快。
总而言之,我希望这个类比有助于揭开零知识证明的神秘面纱,关于“魔术”“秘密”“魔术师”“观众”的这套解释可以作为理解零知识证明主要特性的有效模型,帮助更多的普通用户接触这一概念。
再次强调,魔术本质上就是零知识证明,而零知识证明则与魔法无异。