首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用zk-snarks验证最高出价

使用zk-snarks验证最高出价
EN

Cryptography用户
提问于 2021-06-12 08:13:23
回答 3查看 293关注 0票数 1

我知道,我们可以验证,给定一个私有输入a和一个公共输入b,我们可以验证a大于b。但是,如果我想保持这两个输入都是保密的呢?

背景是一个密封的拍卖,我们需要核实谁的私人投标人有最高的出价。我还没有看到任何如何实现这一目标的例子,但希望这里有人能帮助我朝着正确的方向前进。

EN

回答 3

Cryptography用户

回答已采纳

发布于 2021-06-12 13:12:14

有了zk,就可以证明(a, b)明文作为私人输入和(a, b)承诺作为公共输入具有“更大”的关系。一种方法是将ab分割成比特(用咆哮的话来说是“线”),并创建一个具有乘法门的电路,产生“真”或“假”。Verilog电路在这里可能会有所帮助。乘法是指表示电路的R1CS方程组,作为具体问题的部分,并作为实现Groth16证明系统的snark库的输入。

有了电路,一个会产生两个公钥,产生和验证一个咆哮的证明。

票数 3
EN

Cryptography用户

发布于 2021-06-12 09:35:49

假设有一个共同的秘密x用于隐藏ab的价值,只有拥有ab的演员才知道这一点。验证器c是随机抽取的数字,提供给拥有ab的双方。然后,计算ax-cbx-c,并提供给验证者。验证者然后计算ax-cbx-c之间的差异,这是结果。在这种情况下,因为ax-cbx-c不一定可以被x整除,所以验证器没有办法计算出x

请注意,此协议存在问题,因为它需要验证者和支持ab的双方之间的交互。

编辑:验证者A和B伪造其价值的实际可能性

验证者的身份有两种情况,这两种情况应分别讨论。第一种可能性是,验证者是拍卖人。在这种情况下,A和B总是试图伪造它们的价值,因为拍卖商无法知道x的价值。他们都会做同样的事情,不是使用他们共同知道的x,而是做其他的事情。在这种情况下,他们的行动互相抵消。然而,如果验证者是观众,就没有理由让他们伪造价值,即使他们这样做了,观众也会永远知道。因此,伪造价值的问题其实是不存在的。

票数 3
EN

Cryptography用户

发布于 2021-06-13 06:31:19

使用ZK snark是一项要求吗?这似乎是百万富翁的问题:https://en.m.wikipedia.org/wiki/Yao%27s_百万富翁%27_问题

这比做SNARKS更简单,它是一个交互式共享计算,没有任何可信任的中心,或者假设两个输入都受到共享秘密的保护(如“红太阳”的答案)。

在投标方案中,他们做出承诺并运行百万富翁协议。在百万富翁协议中使用与承诺不同的价值对任何一方都没有好处,如果你赢了,你将需要揭露承诺和付出,任何背叛都会被发现。但是对于失败的一方来说,在承诺中不使用相同的价值似乎是有限的。

如果你有一个值得信赖的人来看标书,但你不相信他是公平的,你可以用ZK证据来证明他是诚实的,但这些并不能解决信任当事人不透露出价的问题。你需要某种形式的共享计算,就像在百万富翁中一样,以确保所有其他各方的投标保密。

票数 1
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/91528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档