🔐 zk-SNARK 与 zk-STARK zk-SNARKs vs zk-STARKs
两种零知识证明——一种证明某件事为真(比如「我有足够的钱付款」)、却不亮出背后数据的办法。它们的主要分别在于:怎么搭建、证明有多大、以及面向未来有多耐用。
🧩 两者的共同点
它们都属于零知识证明。一个证明者要让验证者相信某句话为真,同时把私密细节藏好不露;而验证者那一边的核验始终又快又轻。打个比方:一个环形山洞,正中间有一道上了锁的魔法门。爱丽丝说她知道口令。鲍勃守在洞口,喊出他想让她从哪一侧走出来。如果每次她都恰好从他喊的那侧出现,那她必定知道口令——可她从头到尾一个字也没说出来。这就是全部精髓:证明你知道某件事,却不把它说破。
🔤 这两个名字到底是什么意思
| 缩写 | 全称拆开 |
|---|---|
| 🟦 zk-SNARK | Zero-Knowledge Succinct Non-interactive ARgument of Knowledge(零知识简洁非交互式知识论证) |
| 🟪 zk-STARK | Zero-Knowledge Scalable Transparent ARgument of Knowledge(零知识可扩展透明知识论证) |
📌 偶尔会看到有人把 STARK 写成「succinct transparent(简洁透明)」。Ben-Sasson 等人 2018 年的原始论文里,那个 S 指的是 Scalable(可扩展);「succinct」是常见的混淆。
⚖️ 真正要紧的差别
| 问题 | 🟦 zk-SNARK | 🟪 zk-STARK |
|---|---|---|
| 需要可信设置吗? | 需要——一次性的秘密仪式 | 不需要——用公开随机数 |
| 证明大小 | 极小(几百字节) | 较大(几十到几百 KB) |
| 链上成本 | 更便宜 | 更高(差距在缩小) |
| 抗量子吗? | 不抗——建立在椭圆曲线数学上 | 抗——建立在哈希函数上 |
| 年头 | 更早(2012 年前后) | 更新(2018 年) |
🧨 用大白话说说可信设置
zk-SNARK 需要做一次性的设置,过程中会生成一些秘密参数(常叫「公共参考串」,CRS)。这些秘密事后必须销毁。万一有人留了一手、把残渣(外号「有毒废料」)藏起来,就能伪造出看起来真假难辨的证明。zk-STARK 干脆跳过了这一步。它的证明只用公开随机数和哈希函数搭起来,没有秘密要生成,也就没有东西需要销毁。STARK 里那个「Transparent(透明)」说的就是这个意思。
🚀 新手会在哪里遇上它们
它们撑起了你常会读到的两件事。第一件是隐私:藏起金额和地址,就像 Zcash 用 zk-SNARK 来做屏蔽交易那样。第二件是靠 zk-rollup 来扩容——这些二层(L2)网络把大量交易打包进一份便宜的证明,再贴到以太坊上。StarkNet 就是建立在 zk-STARK 之上的知名二层网络。
🧠 值得记住的一点:在 rollup 里,「零知识」主要指的是给一大坨运算做出一份又小又快的证明,而不是为了藏数据。隐私这层意思和扩容这层意思,是同一套数学能干的两份不同的活。
🧭 那到底哪个「更好」?
- 🟦 看中 SNARK 的长处——当真正卡你的是证明体积和链上成本时:它的证明又小、核验又便宜
- 🟪 看中 STARK 的长处——当你要的是无可信设置、透明、以及对未来量子计算机的防护时
- 📈 扩展性——面对超大规模的运算,STARK 往往应付得更从容
- 🔁 现实——谁都没被淘汰;两者今天都跑在真实产品里,很多团队还把两边的思路混着用
❓ 常见问题
- zk-STARK 是不是就是更好的 zk-SNARK?
- 不是。这是一种取舍,没有谁完胜谁。STARK 不需要可信设置、还能抗量子计算机,但证明体积大得多。SNARK 的证明又小又省,代价是要做一次性的可信设置。两者如今都在被广泛使用。
- 「零知识」是不是一定意味着隐私?
- 不一定。在隐私币里它用来隐藏金额和地址。但在 zk-rollup 里,同一套数学主要是用来压缩一大批交易、并快速完成验证,并不是为了藏起来。那里要的是又小又快的证明,而不是保密。
- 新手通常在哪里会碰到这两个词?
- 一般在两处:像 Zcash 这样用 zk-SNARK 来屏蔽交易的隐私币,以及把大量交易打包成一份证明、再拿到以太坊上核验的 zk-rollup 二层网络。StarkNet 就是一个建立在 zk-STARK 之上的知名例子。