一座探险公司发现的环形迷宫,洞口分出左右两条岔道,深处汇合处横着一道只有咒语才能打开的暗门。新来的向导小艾声称自己知道咒语,游客小维却半信半疑:万一她是骗子,把全团带进死路怎么办?可小艾又不想当众念出咒语。于是两人约定:小艾先进洞,随便躲进一条岔道;小维站在洞口随机喊“从左出”或“从右出”;一分钟后,小艾必须从指定的那个出口走出来。真知道咒语的人能穿过暗门,从任意一边现身,所以每次都能做到;假向导只能赌运气,单轮蒙对概率只有二分之一。重复几十轮之后,小维彻底相信小艾会咒语——可从头到尾,他没听到哪怕一个字的咒语。这就是零知识证明(Zero-Knowledge Proof,简称 ZK)的核心:在不泄露秘密的前提下,向对方证明“我真的知道”。本文要讲的,正是这座迷宫的两个现代版本——体积小巧的 zk-SNARK 与不设官方机关的 zk-STARK,以及支撑它们的哈希、默克尔树等工具,和它们在区块链隐私、扩容、合规中的真实用途。
对 AI 与区块链从业者来说,“在不泄露数据的前提下证明计算正确”是硬通货技能:它同时支撑隐私保护、链上扩容与可信验证,是 Web3 与去中心化 AI 的基础设施。
可视化演示
演示zk-SNARK零知识证明三阶段流程:可信设置生成密钥、证明者生成简洁证明、验证者毫秒级验证,以及zk-SNARK与zk-STARK核心特性对比。
本节配有交互动效(进入视口后自动加载,约 3KB)。
zk-SNARK证明流程 可信设置:生成证明密钥PK与验证密钥VK 证明生成:Prover用秘密见证w计算简洁证明π 验证:Verifier用VK毫秒级验证证明π有效性 π = Prove(PK, x, w) | Verify(VK, x, π) → True/False zk-SNARK实现常数级证明大小与毫秒级验证
基本概念
回到那座环形迷宫。小维要确认小艾真会咒语,唯一的办法是“当场考试”:小艾先进洞,小维随机喊出口。这场考试的奇妙之处在于——运动员先起跑,考官后念题,答案却必须完全正确。如果小艾真是向导,她怎么都能从指定出口现身;如果她是骗子,就只能站在原地祈祷运气。
在这个场景里,小艾就是证明者(Prover),负责拿出“我能做到”的证据;小维是验证者(Verifier),负责出题与核对。任何合格的零知识证明都要同时满足三条纪律:完备性(真知识必定通过)、可靠性(假知识骗不过)、零知识性(全程不泄露秘密)。这三者缺一不可,像是一把锁的三道弹子。
数学家用“可忽略概率”来定义可靠性:伪造者再聪明,也只能以天文数字般小的概率蒙混过关。以迷宫为例,假向导每轮蒙对概率是二分之一,连考 40 轮后,蒙对概率低到可以忽略。
所以“口试 40 轮”不是仪式感,而是把“我信你”翻译成了数学上可衡量的概率。小维最终点头的原因不是直觉,而是 $2^{-40}$ 这个数字。零知识证明的一切后续发展,都在这三条纪律之上盖楼。
- P_通关(n) 的含义它表示一个完全不会咒语的假向导,连续蒙对 n 轮的概率。
- 分数二分之一洞口只有左右两个出口,瞎猜一个,蒙对的概率是 $\displaystyle \frac{1}{2}$。
- 指数 n每轮独立重复,概率连乘 n 次,所以写成“n 次方”,$2^{-n}$ 是同一种意思的另一种写法。
- 趋近于零当 $n=40$ 时,结果约为 $9.1 \times 10^{-13}$,比连续中彩票头奖还难。
交互与承诺
这场考试能拦住骗子,靠的不只是“多考几轮”,还有两个设计细节:随机出题与先锁后开。如果小维提前告诉小艾“你从右边出来”,那骗子直接走进右岔道就行,考试作废。所以考题必须在小艾进洞后才随机喊出。
同样的道理,现实中的协议要求证明者先做出承诺(Commitment):把答案锁进一个信封交给验证者,验证者确认信封没问题之后再出题,最后才打开信封。承诺一旦交出去就改不了口,像把写好的答案封进信封再也不能偷换,这就封死了“看了题再改答案”的作弊路径。
最经典的入门例子是三色地图证明:一张图上有若干顶点和边,证明者声称自己知道一种合法的三色涂法(相邻顶点异色)。每一轮,证明者随机打乱三种颜色的名字,为每个顶点算一个哈希值当作“信封”交给验证者;验证者随机挑一条边,要求打开两端的信封。如果两端颜色相同,立刻抓包;如果不同,则这一轮通过。随便乱涂的骗子,单轮被抓概率是三分之一,存活概率是三分之二。
回看迷宫:承诺就是“先跑进洞里”,随机挑战就是“后喊出口令”,重复多轮则是把三分之二不断缩小到零。理解这三点,就能读懂后面 SNARK 与 STARK 的构造逻辑。
- 单轮被抓概率合法的三色涂法要求每条边两端异色;骗子随便填色时,抽查到一条边两端同色的概率是 $\displaystyle \frac{1}{3}$,这就是 $P_{\text{被抓}}$。
- 单轮存活概率没被抓的概率自然是 $\displaystyle 1 - \frac{1}{3} = \frac{2}{3}$。
- n 轮连乘每一轮独立重复,全部存活要乘 n 次,得到 $\displaystyle \left(\frac{2}{3}\right)^n$。
- 指数衰减$n=30$ 时约等于 $5.2 \times 10^{-6}$,骗子几乎必被抓,这就是“多轮”的全部意义。
ZK-SNARK
迷宫口试要来回 40 轮,现实世界等不及。想象旅游公司给合格向导发一枚“防伪徽章”:游客扫一眼就知道真假,向导不必现场表演。这就是从交互证明走向非交互证明的思路——证明者把整场考试压缩进一条消息,验证者离线即可核验。
zk-SNARK 全称是 Succinct Non-interactive ARgument of Knowledge,四个英文单词各自点出一个关键特性:简洁(证明很小,只有两三百字节,相当于一条短信)、非交互(一条消息发给谁都能直接验)、论证(安全性建立在计算困难假设上,而非绝对可靠)、知识(证明者确实掌握秘密)。它把“我知道咒语”翻译成一大堆代数方程,再生成一份极短的“答题卡”。
它凭什么能这么小?秘密藏在两样东西里:算术电路(把“知道咒语”编码成多项式等式)与椭圆曲线配对。配对有一个神奇性质:验证者不需要知道 $a$、$b$ 本身,只要见到它们的“锁起来版本” $g^a$、$g^b$,就能核对 $a \times b$ 是否满足某种关系,相当于隔着保险柜检查里面的物品重量。
但“徽章”的模具由官方在可信启动(Trusted Setup)仪式中铸造,仪式中产生的随机数被称为“有毒垃圾”,必须彻底销毁。一旦泄露,骗子就能伪造任意徽章。所以小徽章的背后是一个信任问题——这也正是 zk-STARK 登场的理由。
- 映射 e(·,·)$e$ 是一种双线性配对,它把两个椭圆曲线上的点 $g^a$ 和 $g^b$ 映射到另一个群里的一个元素。
- 生成元 g$g$ 是公开的基点,$g^a$ 表示“秘密 $a$ 被锁定后的公开模样”,旁人无法从 $g^a$ 反推 $a$。
- 指数 ab等式右边出现 $ab$,说明配对能把两个秘密的乘积“算”出来,而又不暴露 $a$、$b$ 本身。
- 工程意义验证者只需检查这一条等式,就能确认多项式约束成立,于是 SNARK 的验证时间是毫秒级。
ZK-STARK
有人不信任任何“官方模具”。于是另一派把迷宫改造成“全透明流水账”:不设暗门、没有咒语、没有启动仪式,任何人都能核对每一步进出记录。这就是 zk-STARK 的理念——用公开透明的账本代替可疑的模具。
zk-STARK 全称是 Scalable Transparent ARgument of Knowledge。Transparent(透明)意味着完全没有可信启动;证明与验证只依赖哈希函数,而哈希被认为是抗量子的(即使量子计算机把破解强度开平方,依然有 128 比特以上安全余量)。更妙的是验证复杂度几乎不随计算量增长,链上轻节点也能秒级完成验证,因此名字里的 Scalable(可扩展) 名副其实。
代价是证明“体积”大:zk-SNARK 的证明像一张名片(约 200 字节),而 zk-STARK 像一本手册(几十到几百 KB)。在链上,证明体积直接对应存储费用,所以 STARK 上链比 SNARK 贵得多。
迷宫没有暗门、没有咒语,全凭公开流水;游客多花点时间翻手册,换来的是“谁都能监督”的放心。选 SNARK 还是 STARK,本质是选“小巧高效”还是“透明抗量子”。
- 符号 |π|$\pi$ 表示生成的“通关证明”,竖线代表它的字节大小。
- SNARK 约 200 BB 是字节(Byte),两百字节的证明适合塞进任何区块交易里,费用极低。
- STARK 约 45–200 KBKB 是千字节,体积大了两个数量级,链上存储成本随之上升。
- 取舍的实质体积换透明与抗量子,这是两类方案定位不同的根源。
技术支柱
无论徽章还是流水账,都离不开三样工具箱里的工具:哈希、默克尔树、多项式。可以这样想象:哈希是把整本导游手册压成一个指纹;默克尔树是给几千条记录排成树、只留一个总指纹;多项式则是把“路线是否合法”写成代数方程的语法。
哈希函数像一台单向碎纸机:任意长度的数据进去,出来固定长度的“指纹”;从指纹反推原文几乎不可能,而且哪怕改一个字符,指纹也会完全变样。承诺方案正是用哈希实现的——先交指纹,后开信封,对不上就是作弊。
默克尔树把哈希用出了“指数级验证”的效果:把所有数据块分别哈希成叶子,两两配对再哈希,逐层向上,最后得到唯一的树根。验证者只需要保存树根这个“总指纹”,想证明某条叶子数据真实存在,只要沿着树路径层层比对即可。
检查“叶子是否真的在树上”,只需沿着树走 $\log_2 n$ 层,这就是 STARK 能飞快验证的原因。而把电路转换成多项式、再随机采样代替逐行检查,则是多项式承诺一直在优化的方向——技术支柱彼此咬合,才撑起了整座迷宫。
- 叶子 L0、L1它们是被承诺的两条“导游记录”,比如一笔转账或一次状态更新。
- 哈希 H$H(\cdot)$ 表示哈希函数,如 SHA-256,把任意长度输入压缩成固定长度指纹。
- 拼接符号 ∥$\|$ 表示把两段指纹首尾相接,再整体送入 $H(\cdot)$ 做一次压缩,形成父节点。
- 树根 r_root不断向上配对哈希,最后得到的总指纹;验证者只需保存它,就能验证任意叶子的存在性与完整性。
应用场景
迷宫认证走出密室,第一站是区块链。区块链是“公开的大账本”,所有人都能看每一笔交易,就像迷宫每一面墙都是玻璃。可商业上,我们既想公开记账,又不想公开账单细节——零知识证明恰好是把“玻璃墙”变成“磨砂玻璃”的工具。
三条落地主线最清晰。其一是隐私交易:证明者可以证明“我知道某个未使用的存款凭证”,就能取走对应金额,而链上无法把存款与取款关联起来,Tornado Cash 这类混币器就是这么运作的。其二是链上扩容:ZK Rollup 把成千上万笔交易交给链下证明者打包,只把一份证明和最新状态根提交上链。其三是合规验证:证明“我的余额超过监管门槛”而不报出具体数字,或证明“这批转账未命中黑名单”而不泄露流水。
拿 ZK Rollup 的账来算笔账:链上成本几乎等于“一份证明 + 一个状态根”,然后由批次内的交易笔数分摊。笔数越多,单笔成本被摊得越薄,这正是 Rollup 能把交易费压低一到两个数量级的原因。
迷宫入口排起了长队:一万个游客的考试被压缩成一张成绩单,链上只贴成绩单和总名单指纹。这就是去中心化世界的“高效 + 隐私”路线图,也是零知识证明被称为区块链核心基础设施的原因。
- Cost_链上每笔交易平均承担的上链费用。
- 分子两项$|\pi|$ 是一份零知识证明的大小,$|\text{stateRoot}|$ 是合约更新后的状态根,整个批次在链上只发布这么多数据。
- 分母 n批次里打包的交易笔数,$n$ 越大,单笔摊得越薄。
- 结论这就是 ZK Rollup 的经济学——把“验证每笔”变成“验证一份”,以固定成本换批量收益。
局限与趋势
迷宫不是免费的:向导每次上岗前要花很久排练,还要请顶级迷宫工程师把规则改写成“电路”。零知识证明目前最大的三块短板是:证明生成慢、开发门槛高、标准化未定。
生成一次证明需要大量计算,复杂电路动辄几十秒甚至几分钟,必须靠 GPU 与专用 ASIC 加速;开发方面,写电路像写汇编语言,需要专门的电路工程师与密码学知识,普通开发者很难上手。与此同时,zkEVM 等项目正在把“验证以太坊执行本身”变成可证明的计算,标准化与硬件加速也在同步推进。
复杂度上,SNARK/STARK 都有“证明者重、验证者轻”的不对称特征,这也是它们能上链的根本原因——链上只做最轻的验证工作。
迷宫依旧神秘,但方向明确:把“证明”本身变成一门平民工业。对开发者来说,理解这座迷宫,就是握住下一轮隐私与扩容浪潮的钥匙。
---
- T_prove 生成耗时$T_{\text{prove}}$ 表示证明生成时间,$n$ 是电路规模,$O(n \log n)$ 说明规模翻倍耗时也近似翻倍。
- T_verify 验证耗时$T_{\text{verify}}$ 表示验证时间,$O(\log^2 n)$ 说明规模再大,验证也只增加极少量时间。
- 两者的不对称一边重、一边轻,这种结构天然适合“链下算、链上验”的部署。
- 趋势含义硬件加速与递归证明(证明的证明)都在努力压低 $T_{\text{prove}}$,因为它是当前唯一的瓶颈。
AI 应用场景
隐私计算服务:匿名提交推理请求
阶段:数据输入与隐私保护
解决的问题:传统做法要求用户把明文数据交给 AI 服务方,模型方也担心参数泄露,双方互相不信任。零知识证明允许用户证明“我的输入符合规格、我有权限调用”而不暴露明文,把“不信任”变成“可验证的信任”。
具体案例:一个去中心化 AI 推理平台接入类似 Tornado Cash 的思路:用户用 zk-SNARK 证明自己持有一张未使用的存款凭证,即可匿名调用模型的付费接口;平台验证证明后放行请求,全程无法把这次调用与具体地址关联起来。
ZK Rollup 扩容:AI 微支付的高效结算层
阶段:交易批处理与高效结算
解决的问题:AI API 按次计费,若每次调用都在链上结算,Gas 费会吞掉全部利润。传统方案要么牺牲去中心化信任中心化服务器,要么费用高到不可用;ZK Rollup 用“大批量打包 + 一个证明”把结算成本摊薄到几乎为零。
具体案例:zkSync 或 StarkNet 上的 AI 服务商,把一天内数万次模型调用记录交给链下证明者打包,生成一个 SNARK/STARK 证明连同一个最新状态根上链;用户实际支付的手续费降到了原来的百分之一以下,且验证者不需要逐笔检查流水。
合规验证与审计:证明合规而不交明细
阶段:结果合规校验与审计
解决的问题:监管要求平台证明“资金流动符合规则”,但企业不想把客户明细交给第三方审计。传统合规审计要么交出原始数据、要么只靠抽查,零知识证明让平台“证明规则成立”而无需公布数据本体。
具体案例:一家做跨境支付的金融科技公司,用 zk-STARK 生成一份“所有转账均未超限、未命中黑名单”的证明,监管机构验证证明即可完成审计,缩短了审计周期,也保护了客户隐私。
Python 演示
import hashlibimport random # 教学演示:图着色的零知识证明(简化版)# 环形图:5 个顶点首尾相连edges = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)] def legal(colors): # 合法三着色:每条边两端颜色不同 return all(colors[u] != colors[v] for u, v in edges) def commit(color, nonce): # 哈希承诺:把颜色和随机数锁进指纹 return hashlib.sha256((str(color) + ":" + str(nonce)).encode()).hexdigest() def honest_prover(rounds): # 真向导:知道合法三着色,每轮都能通过 base = [0, 1, 2, 0, 1] assert legal(base) for _ in range(rounds): perm = [0, 1, 2] random.shuffle(perm) colors = [perm[c] for c in base] nonces = [random.randint(0, 10 ** 9) for _ in colors] commits = [commit(c, n) for c, n in zip(colors, nonces)] u, v = random.choice(edges) ok = (commit(colors[u], nonces[u]) == commits[u] and commit(colors[v], nonces[v]) == commits[v] and colors[u] != colors[v]) if not ok: return False return True def fake_survival(rounds, trials=2000): # 假向导:不知道合法着色,只能随机填色 survived = 0 for _ in range(trials): passed = True for _ in range(rounds): colors = [random.randint(0, 2) for _ in range(5)] u, v = random.choice(edges) if colors[u] == colors[v]: passed = False break if passed: survived += 1 return survived / trials def main(): random.seed(7) print("真向导 20 轮全部通过:", honest_prover(20)) p = fake_survival(20) theory = (2.0 / 3.0) ** 20 print("假向导存活概率(模拟): %.6f" % p) print("理论值 (2/3)^20 : %.6f" % theory) if __name__ == "__main__": main()
def commit(color, nonce)把“颜色答案”和随机数一起哈希成指纹,相当于把答案封进信封再交出。perm = [0, 1, 2]; random.shuffle(perm)每轮随机洗牌颜色标签,让验证者看不出固定的涂色规律,这是“零知识”的关键。commits = [commit(c, n) for c, n in zip(colors, nonces)]对每个顶点生成一封“承诺信”,验证者在开信前无法反悔。u, v = random.choice(edges)验证者随机挑一条边来开信,这就是“随机挑战”。ok = ... and colors[u] != colors[v]开信后核对两条:指纹是否匹配、两端颜色是否不同,任一不满足即抓包。fake_survival(rounds, trials)模拟假向导随机填色 n 轮的存活率,结果应接近 (2/3)^n,验证“多轮重复”的威慑力。
常见误区
误区很多人以为零知识证明就是把数据加密后传给对方,像 HTTPS 一样“藏起来再传输”,甚至认为它能还原出原始秘密。
正解零知识证明不加密数据、不传输数据,只交付“我能通过你的随机考试”这个结论。它像迷宫游客从未听到咒语,甚至看不到咒语的影子,只看到小艾从指定出口走出来。加密回答的是“如何传输”,零知识回答的是“如何在不泄露的前提下证明”,两者解决的问题根本不同。
为何常见:常见隐私技术都是“藏数据、传数据”的思路,零知识证明的“证明—验证”流程很容易被脑补成一种特殊的加密传输。
误区“每轮蒙对概率是二分之一,那我多试几次,总有一次能成功骗过验证者吧?”很多初学者觉得重复挑战可以累积胜率。
正解协议要求“先承诺后挑战”,答案在出题前就被哈希锁进了信封,无法反悔。重试只能重新开始一整局,而每局的胜率都是独立的指数级小概率。连续蒙过 40 轮的概率是 $2^{-40}$,不是“多试几次”能磨出来的。
为何常见:我们习惯“考试可以补考、运气好能蒙对”的生活直觉,忽略了承诺机制封死了“看了题再改答案”的可能。
误区“SNARK 证明小、验证快,STARK 体积又大又慢,所以 SNARK 永远更好。”很多选型讨论只看性能数字。
正解两者是取舍而非优劣。SNARK 需要可信启动,秘密参数一旦泄露便能伪造证明,且依赖椭圆曲线配对,理论上面临量子威胁;STARK 无启动、透明、抗量子,只是证明体积大、生成开销高。追求低费用选 SNARK,追求安全透明选 STARK。
为何常见:只看宣传中的证明体积和验证速度,忽略信任假设与未来威胁,犯了“指标即一切”的简化错误。
误区“ZK 是免费魔法,把任何计算塞进去就能得到一个小证明,成本几乎为零。”演示 Demo 看多了容易产生这种错觉。
正解把计算翻译成电路本身就昂贵,生成证明更是重计算任务,复杂电路动辄秒级到分钟级,需要 GPU/ASIC 加速;验证虽然便宜,也绝非零成本。“证明小”只说明上链费用低,生成端的开销才是真正的大头。
为何常见:验证端成本低、证明体积小容易被感知,生成端的等待和算力消耗被掩盖在演示视频之外,从而形成误判。
面试题
Q1. 在环形迷宫口试中,假向导单轮蒙对出口的概率是多少?
- A.二分之一左右← 正确答案
- B.三分之一左右
- C.四十分之一左右
- D.无限接近于零
答案:A。迷宫只有左右两个出口,瞎猜一个的蒙对概率就是 1/2。C 是“连续蒙对 40 轮”的概率,D 是多轮之后的整体效果,两者都混淆了“单轮”与“多轮连蒙”。B 是图着色示例中的数值。
Q2. 下列哪一项不属于零知识证明的核心性质?
- A.完备性:真知道必能通过
- B.可靠性:假知识难骗过
- C.零知识:不泄露任何细节
- D.可逆性:能还原出秘密← 正确答案
答案:D。零知识证明的三条性质是完备性、可靠性与零知识性。可逆性恰好相反——零知识证明的核心就是不泄露、不可还原秘密,所以 D 是错误选项。
Q3. 图着色示例中,假证明者单轮被抓住的概率是多少?
- A.三分之一← 正确答案
- B.三分之二
- C.四分之一
- D.二分之一
答案:A。验证者随机挑一条边开信检查,骗子随便填色时,两端同色的概率是 1/3,因此单轮被抓概率为 1/3,存活概率才是 2/3。B 是存活率,C、D 与三色问题无关。
Q4. zk-SNARK 名称中的 “S” 代表哪种核心特性?
- A.证明体积非常小← 正确答案
- B.证明生成速度极快
- C.无需任何特殊信任
- D.抗量子攻击能力强
答案:A。SNARK 中 S 是 Succinct,指证明极简洁(约 200 字节)。SNARK 恰恰需要可信启动,也不抗量子,所以 C、D 与事实相反;B 形容的是验证速度而非生成速度。
Q5. 关于 zk-SNARK 的可信启动,下列说法正确的有?
- A.需要可信启动仪式← 正确答案
- B.参数泄露可伪造证明← 正确答案
- C.完全无需任何准备
- D.启动参数全部公开
答案:AB。可信启动是 SNARK 生成公共参数的仪式,仪式中的“有毒垃圾”必须销毁,泄露即可伪造证明,故 A、B 正确。C 说反了,D 中“全部公开”会直接导致伪造,均错误。
Q6. 默克尔树在 zk-STARK 中主要充当什么角色?
- A.能提高核心算力
- B.压缩并承诺海量数据← 正确答案
- C.完全替代哈希函数
- D.用于生成新的私钥
答案:B。STARK 将大量计算数据(如多项式取值)组织成默克尔树,验证者只需保存树根即可承诺整批数据,并沿路径轻量验证。算力、替代哈希、生成私钥都与树的结构无关。
Q7. ZK Rollup 降低交易成本的核心原因是什么?
- A.把一批交易打包成一份小证明← 正确答案
- B.把交易拆成很多小证明
- C.完全去掉链上验证
- D.单纯增大每个区块容量
答案:A。Rollup 把 n 笔交易的验证压缩成“一份证明 + 一个状态根”,上链成本由 n 分摊。拆成更多小证明反而更贵;链上仍需验证证明;增大区块容量是另一个扩容方向,均非核心原因。
Q8. 零知识证明在区块链中的常见应用有哪些?
- A.隐私交易中保护交易双方身份← 正确答案
- B.扩容方案中把多笔交易打包验证← 正确答案
- C.合规验证中证明规则而不泄密← 正确答案
- D.完全替代区块链的共识算法
答案:ABC。隐私交易(Tornado Cash)、扩容(ZK Rollup)、合规验证是三条主线应用。零知识证明不生产共识,也不能替代 PoW/PoS 等共识机制,D 错误。
Q9. 双线性配对等式 e(g^a, g^b) = e(g,g)^ab 在 SNARK 中的作用是什么?
- A.让验证者检查多项式秘密间的关系← 正确答案
- B.让证明者从中恢复出全部秘密
- C.直接用于加密整个算术电路
- D.用于替代哈希完成数据压缩
答案:A。配对让验证者无需知道 a、b 即可核对含 ab 的等式,这是 SNARK 检查多项式约束的核心工具。它不能恢复秘密(椭圆曲线离散对数假设保证不可逆),也不负责加密电路或替代哈希。
Q10. 关于“argument(论证)”与“proof(证明)”的区别,下列说法正确的有?
- A.argument 安全性依赖计算困难假设← 正确答案
- B.proof 具有无条件统计可靠性← 正确答案
- C.两者在密码学定义中完全等价
- D.zk-SNARK 属于 argument 类型← 正确答案
答案:ABD。argument 的安全性建立在“攻击者算力有限”的计算假设上,而 proof 具备无条件可靠性,二者并不等价。zk-SNARK 全称中的 A 正是 Argument,因此 D 正确。记住“SNARK 是论证而非证明”,面试时能区分这一点就是亮点。