Subscribe to ntop
Subscribe to ntop
Share Dialog
Share Dialog
<100 subscribers
<100 subscribers
之前看过两篇过于零知识证明的文章,但是当时没有看完只看了一点以为自己已经理解了,下面写写自己的理解(所以说本文可能是错误的)。
如何证明Alice知道一个多项式比如:y=x^3 ? 其实特别简单,我可以问alice: f(1) 等于几? 如果她告诉我 f(1) = 1, 那么我就大概可以判断出 Alice 是知道这个多项式的,不然它是怎么算出这个值的呢?
假如Alice知道的多项式实际上是:y=x ,其实也能得到这个结果,但是所以我们可以构建更复杂的多项式来提高问题的难度,或者问 f(99999) 等于几?
我知道Alice知道了这个多项式是因为我也知道这个多项式。对于零知识证明而言我需要在不知道这个多项式的情况下验证Alice知道这个多项式!!此时我们可以构建一个抽样器,这个抽样系统可以给出几组值,比如: f(1) = 1 、f(2) = 8 、f(3) = 9 这样我只要拿到这个采样结果并问:Alice你知道 f(1) 等于几吗?Alice告诉我结果后我只要验证 f(1) == 1 即可知道Alie的回答是否正确。
而我始终是不知道多项式的。
如何验证Alice知道某个数字呢?比如她是否知道Bob的银行存款数额(5)?这个问题可以简化为,y = 5x^3 我们只要验证Alice是否知道系数。我们继续构建采样器:f(1)=1 和 f(2) = 40 , 此时不能再问Alice你知道 f(1) 等于几这个问题了因为这不是验证多项式,更友好的问法是:Alice告诉我你知道的那个值!可以设计一个方法: f(x) =y= a*x^3 当Alice回答了 a 之后我们就可以得到一个多项式,并用 x = 1, x = 2 算出结果到 Bob 那边验证,这样bob就知道Alice是否知道这个数字了。
这里的问题在如何设计这个方法和这个采样器 ?
这个方法应该就是ZK的 Prover 函数,而采样器就是 Verifier 函数。
注意 :以上所述除了第一个多项式是看来的,后面内容都是我在某个午后灵光一闪脑补出来的,如有错误,那就是错的。。。
之前看过两篇过于零知识证明的文章,但是当时没有看完只看了一点以为自己已经理解了,下面写写自己的理解(所以说本文可能是错误的)。
如何证明Alice知道一个多项式比如:y=x^3 ? 其实特别简单,我可以问alice: f(1) 等于几? 如果她告诉我 f(1) = 1, 那么我就大概可以判断出 Alice 是知道这个多项式的,不然它是怎么算出这个值的呢?
假如Alice知道的多项式实际上是:y=x ,其实也能得到这个结果,但是所以我们可以构建更复杂的多项式来提高问题的难度,或者问 f(99999) 等于几?
我知道Alice知道了这个多项式是因为我也知道这个多项式。对于零知识证明而言我需要在不知道这个多项式的情况下验证Alice知道这个多项式!!此时我们可以构建一个抽样器,这个抽样系统可以给出几组值,比如: f(1) = 1 、f(2) = 8 、f(3) = 9 这样我只要拿到这个采样结果并问:Alice你知道 f(1) 等于几吗?Alice告诉我结果后我只要验证 f(1) == 1 即可知道Alie的回答是否正确。
而我始终是不知道多项式的。
如何验证Alice知道某个数字呢?比如她是否知道Bob的银行存款数额(5)?这个问题可以简化为,y = 5x^3 我们只要验证Alice是否知道系数。我们继续构建采样器:f(1)=1 和 f(2) = 40 , 此时不能再问Alice你知道 f(1) 等于几这个问题了因为这不是验证多项式,更友好的问法是:Alice告诉我你知道的那个值!可以设计一个方法: f(x) =y= a*x^3 当Alice回答了 a 之后我们就可以得到一个多项式,并用 x = 1, x = 2 算出结果到 Bob 那边验证,这样bob就知道Alice是否知道这个数字了。
这里的问题在如何设计这个方法和这个采样器 ?
这个方法应该就是ZK的 Prover 函数,而采样器就是 Verifier 函数。
注意 :以上所述除了第一个多项式是看来的,后面内容都是我在某个午后灵光一闪脑补出来的,如有错误,那就是错的。。。
No activity yet