「精选」经常看到的zkSNARK是什么

zkSNARK 全称 zero-knowledge succint non-interactive arguments of knowledge,中文翻译过来就是「简洁非交互的零知识证明」,这个到底是什么意思呢?zero-knowledge很明显就是指零知识。succint我们通常翻译成简洁的,它的意思就是说这类协议验证过程中传输的数据量较小而且验证方法简单。

non-interactive的意思是非交互,零知识证明协议分为交互式和非交互式,简单来说,交互式的零知识证明需要验证双方完成一次交互,这类的证明有一个特点是不能复用,也就是说证明者每次都要生成一个新的证明给一个验证者做校验,这样做比较麻烦,但只能用一次也有好处,就是这个证明不可能被重复冒用。

相反,非交互的零知识证明过程不需要交互,证明者只要生成一次证明就可以由多个验证者验证,相应的它有一个缺点就是证明一旦公开是有被拿来冒用的安全性风险的。

Arguments of knowledge其实严格来说它不能称为证明,它是区别于 Proof of knowledge的。这两者的区别是什么呢?Proof 是说即使未来出路算力超强量子计算机,黑客也没有办法伪造证明,而对于Argument,虽然以现在的计算机运算能力没有办法伪造证明,但如果出现超级计算机,还是有可能伪造的。

这就是 zkSNARK 的概念。零知识证明的协议有很多,如 Pinocchio,Bulletproof,Groth16,zkStark,Marlin,Plonk,Sonic 等等。而我们平时所看到的介绍 zkSNARK 算法的文章,其实大部分说的都是 Pinocchio 协议。之后会给大家详细介绍Pinocchio 协议。

精选自区研大咖问 https://lorbook.com/events/21492/

Leave a Reply

Your email address will not be published.