Skip to content

SNARKs、STARK、PLONK和Groth

Snark和Strak:两种框架

特性zk-SNARKszk-STARKs
全称Zero-Knowledge Succinct Non-Interactive Argument of Knowledge
(零知识简洁非交互式知识论证)
Zero-Knowledge Scalable Transparent Argument of Knowledge
(零知识可扩展透明知识论证)
可信设置需要。必须有一个可信的初始设置阶段(生成 SRS),如果“有毒废料”(秘密)未被销毁,任何人都可伪造证明。这引入了信任假设。不需要。使用公开随机性,设置是透明的,无需秘密参数,更去中心化和安全。
安全性基础依赖椭圆曲线密码学(ECC),基于离散对数难题。依赖哈希函数(如 SHA-256),基于哈希的抗碰撞性。
后量子安全性。量子计算机可破解椭圆曲线加密。。哈希函数在量子计算下仍被认为安全。
证明大小非常小(通常几百字节),适合链上验证(节省 gas)。较大(通常几 KB 到几十 KB),验证成本更高。
验证速度非常快相对较慢,尤其对于小计算。
可扩展性对于小到中等计算高效。对于大型计算更具可扩展性,随着计算复杂度增加,性能优势更明显。
典型应用Zcash(隐私交易)、zkSync、Scroll、Polygon zkEVM 等。StarkWare(StarkNet、StarkEx)、Immutable X 等。

Groth16 与 PLONK:zk-SNARKs 的具体实现协议

Groth16 和 PLONK 都是 zk-SNARKs 的具体构造方案,即它们是 SNARKs 这个大类下的具体实现。它们的关系是同属 SNARKs,但技术细节不同

Groth16

  • 特点
    • 是最早、最高效、最广泛使用的 SNARK 协议之一。
    • 生成的证明极小验证速度极快
    • 需要可信设置,且设置是特定于电路的(circuit-specific)。这意味着为一个特定程序(电路)生成的 SRS 不能用于其他程序。
  • 缺点
    • 每次更改电路逻辑,都需要重新进行可信设置,这在需要频繁升级的系统中是巨大的负担。
    • 被认为不够“通用”。

PLONK

  • 全称:Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge
  • 特点
    • 是一种通用(universal)和可更新(updatable)的 SNARK 协议。
    • 只需要一次可信设置,生成的 SRS 可以用于任何电路(只要电路规模在设置时定义的范围内)。
    • 支持更灵活的电路设计(如自定义门)。
  • 优点
    • 极大减少了可信设置的负担,更适合需要频繁迭代或支持通用智能合约的区块链项目。
    • 被认为是 Groth16 的“升级版”或更现代的替代方案。
  • 缺点
    • 证明大小和验证时间相比 Groth16 略有增加(但仍远优于 STARKs)。

More

  • 可以通过使用Groth对SNARKs进行压缩优化

Pic