白话区块链1-零知识证明
发布于 3 个月前 作者 kidezyq 155 次浏览 来自 技术/人物

定义

  百度百科中关于零知识证明的定义如下:零知识证明(Zero—Knowledge Proof),是由S.Goldwasser、S.Micali及C.Rackoff在20世纪80年代初提出的。它指的是证明者能够在不向验证者提供任何有用的信息的情况下,使验证者相信某个论断是正确的。零知识证明实质上是一种涉及两方或更多方的协议,即两方或更多方完成一项任务所需采取的一系列步骤。证明者向验证者证明并使其相信自己知道或拥有某一消息,但证明过程不能向验证者泄漏任何关于被证明消息的信息。大量事实证明,零知识证明在密码学中非常有用。如果能够将零知识证明用于验证,将可以有效解决许多问题。
  简单来讲就是存在知识拥有者(证明者)和验证者双方,知识拥有者在不告知验证者知识具体内容的情况下,通过验证者和知识拥有者多次交互问答的方式,证明知识拥有者的确掌握该知识。

举几个栗子🌰

证明不是红绿色盲

假设一个房间里有30个人,只有小明不是红绿色盲,其余人都是红绿色盲。房间里有一个盒子,盒子里有两个球,分别是绿色和红色。现在小明如何在不告知其他人(验证者)具体哪一个球是红色的情况下,证明自己不是红绿色盲。
方法:验证者可以将两个球分别放在左右手,然后在小明看不到的地方去做如下操作:交换左右手上的球或者不做任何操作。操作之后再问小明手上的两个球是否做了位置交换,如果小明每次都能答对,则能验证小明不是红绿色盲。

数独问题

假设现在有一个9X9的数独方格,小明和小王在比赛看谁先做出来。这两个人互相较劲,谁都看不起谁。小明3分钟就做出来了,但是又不想把答案告诉小王。小王呢,也不相信小明已经做出来了,想当这个验证者来证明小明确实已经做出来了。小明应该怎么办呢?
解决办法:小明可以将他写的答案填在卡片上,然后倒扣在方格中。每次小王说要检查某一行,或者某一列的数据,小明就将小王指定的这一行或者这一列的这9张卡片装到一个袋子里,然后摇均匀,小王只需要检查每次这个袋子里出现的数字是不是都是1到9即可(检查完毕之后,小明需要再次将他填写的答案倒扣回去还原方格)。如果每次检查都是1到9,那么就证明了小明的确是做出来了这道数独题。

在区块链中的应用-我是中本聪

 我不需要把私钥给你,连续十晚我在insight财经论坛发消息预告说中本聪的账户明天会转20个比特币到某某地址,第二天都发生了。因此得证😝

扩展

考虑这么一个问题,假设现在有两个富翁甲和乙,这两个人都有上亿资产,假设分别为i和j(其中 0<i<10, 0<j<10)。人都是爱攀比的,甲和乙都想知道谁的资产更多。但是两人又都不想让对方知道自己的具体资产有多少。本来嘛,可以找个公证处作为中间方,两人把各自的资产告诉这个公证处,然后公证处告诉他们谁资产多谁资产少。但是这两人也不想让其他任何人知道自己的资产。应该怎么办呢?
2 回复

之前都没听过,半个小时前油管看到讲这个的视频,现在这儿又碰上了。这是什么原理呢?1要么这个知识现在很火 要么我之前没注意到

@binder 原理的话非专业人事无法解答你。很重要的一个使用场景其实就是保护用户隐私。比如在传统的金融系统中,你的银行账号和你的身份号是绑定的,想要证明银行卡的归属权是属于你的,依赖的是你提供的身份证明。而在区块链的世界中,你的钱包账号是属于你的,仅仅依赖于你有能控制这个钱包的私钥,钱包账号仅仅和私钥关联,不和任何具体的个人信息关联,钱包后面可能是一个人,也可能是一条狗。

回到顶部