SNARK vs. STARK目前为止,已经有很多基于零知识证明的密码学证明兴起,其中最知名的莫过于 SNARK 和 STARK 。它们之间有着非常重要的联系。 SNARK 代表的是: - 简明性(succinct):该证明远小于其所代表的数据,并且可以迅速验证。
- 非交互式(non-interactive):证明者只会发送一组信息给验证者,因此二者之间不需要来回交互。
- 知识论证(argument ofknowledge):从计算层面来说,我们认为该证明是完备的 —— 恶意证明者无法欺骗系统,除非 TA 确实掌握该知识的具体内容,以此支持 TA 提出的证明。
安比按:密码学中对 proof (证明方案)和 auguement (论证方案)还有区分。方案的可靠性(soundness)要能达到对抗具备无限大计算资源的证明者,才能称为 proof;而 arguement 只需能抵御计算能力为多项式的恶意证明者即可,不需要能抵御计算能力无穷大的恶意证明者。
可扩展性解决方案所使用的 SNARK 需要在证明者和验证者之间构建可信初始化(trusted setup)。可信初始化是一组类似游戏规则的初始公共参数,由一群志愿参与者在指定时间执行联合计算,即,所谓的可信初始化仪式(trusted setup ceremony),来生成。只要有至少一位参与者是诚实的,就能安全地生成参数。因此,参与者人数越多,机制的可信度就越高。 STARK(例如 StarkWare 开发的 FRI-AIR STARK)不需要可信初始化 —— 因此,此处的 「T」 代表 「透明的(transparent)」 。这就为整个系统排除了单点故障的隐患。虽然 STARK 证明的数据量较大,但对大批次的交易可以平摊计算成本。因此,STARK 能够提高可扩展性。 边注:就基于早期 SNARK 技术(即,Groth16)的解决方案而言,每当 Groth16 上线新的版本,都要执行可信初始化仪式。因此,下文所述的 Loopring 去年上线最新版本时,也需要执行该机制。SNARK 还有一种变体称为通用 SNARK (Universal SNARK)或 SNORK (例如,PLONK 和 SONIC)。该技术使用的是通用可信初始化(universal trusted setup)。例如,zkSync 的创建者无需在上线新版本时执行可信初始化机制:他们复用了去年包括 Vitalik 在内的 200 多位知名人士一起执行的多方计算的执行结果。通过通用可信初始化,可以扩展或更新协议中所使用的零知识证明方案,而无需执行一个新的仪式。 安比按:SNORK = Succinct Non-interactive Oecumenical (Universal) aRguments of Knowledge (简洁的非交互性通用知识论证),实际上就是带有通用且可升级的可信初始化设置的 SNARK。
(责任编辑:admin)
|