学术向 | 深入浅出zkSNARKs

学术向 | 深入浅出zkSNARKs


zkSNARKs的成功性令人印象深刻,因为你可以在不执行,甚至不知道执行的具体内容是什么的情况下确定某个计算的结果是否正确 -- 而你唯一知道的信息就是它正确的完成了。不幸的是,zkSNARKs的大多数解释在某些时候都只是表面的,而且他们往往会留下一些“神奇的”东西,这表明只有最聪明的人才能理解他们的工作方式和原因。现实情况是,zkSNARKs可以简化为四种简单的技术,这篇博文旨在解释它们。任何能够理解RSA密码系统如何工作的人,也应该对当前使用的zkSNARKs有很好的理解。让我们拭目以待!
作为一个非常简短的总结,当前使用的zkSNARKs有4个主要成分(不用担心,我们将在后面的章节中解释所有术语):
A)编码为多项式问题
将需要检查的程序被编译成多项式的二次方程:t(x)h(x)= w(x)v(x),其中当且仅当程序被正确计算时,等式成立。证明者想要说服验证者这个等式成立。
B)简单随机抽样
验证者会选择一个私密评估点 s 来将多项式乘法和验证多项式函数相等的问题简化成简单乘法和验证等式 t(s)h(s)= w(s)v(s) 的问题。 这极大地减少了证明大小和验证时间。
C)同态编码/加密
使用具有一些同态属性的编码/加密函数E(但不是完全同态的,这是不可行的)。这允许证明者在不知道s的情况下计算E(t(s)),E(h(s)),E(w(s)),E(v(s)),她只知道E(s)和一些其他有用的加密值。
D)零知识
证明者通过乘以一个数字来置换值E(t(s)),E(h(s)),E(w(s)),E(v(s)),以便验证者再不知道实际的编码值仍然可以检查它们的正确性结构。
有一个粗糙的想法是这样的,因为校验 t(s)h(s) = w(s)v(s) 和校验 t(s)h(s) k =w(s)v(s) k(对于一个不等于 0 的私密的随机数 k 来说)几乎是完全一样的,而不同的地方在于如果你只接收到了 (t(s)h(s) k) 和 (w(s)v(s) k) 那么从中获取到 t(s)h(s) 或者 w(s)v(s) 的值就几乎是不可能了。
这只是表面的部分,这样你就可以理解zkSNARKs的本质,现在我们深入了解细节。

学术向 | 深入浅出zkSNARKs

扫一扫手机访问

发表评论