前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >白话区块链之零知识证明1

白话区块链之零知识证明1

作者头像
SecondWorld
发布2021-07-27 11:17:50
4960
发布2021-07-27 11:17:50
举报
文章被收录于专栏:Java开发者杂谈Java开发者杂谈

定义

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

举几个栗子

谁是红绿色盲
问题
代码语言:javascript
复制
假设一个房间里有100个人,只有小明不是红绿色盲,其余人都是红绿色盲。
房间里有一个盒子,盒子里有两个球,分别是绿色和红色。
现在小明如何在不告知其他人(验证者)具体哪一个球是红色的情况下,证明自己不是红绿色盲?
解决办法
代码语言:javascript
复制
验证者可以将两个球分别放在左右手,然后在小明看不到的地方去做如下操作:交换左右手上的球或者不做任何操作。
操作之后再问小明手上的两个球是否做了位置交换,如果小明每次都能答对,则能验证小明不是红绿色盲。
解数读
问题
代码语言:javascript
复制
假设现在有一个9X9的数独方格,小明和小王在比赛看谁先做出来。这两个人互相较劲,谁都觉得自己比对方厉害。
结果小明3分钟就做出来了,但是又不想把答案告诉小王。小王呢,也不相信小明已经做出来了,想当这个验证者来证明小明确实已经做出来了。小明应该怎么办呢?
解决办法
代码语言:javascript
复制
小明可以将他写的答案填在卡片上,然后倒扣在方格中。
每次小王说要检查某一行,或者某一列的数据,小明就将小王指定的这一行或者这一列的这9张卡片装到一个袋子里,然后摇均匀。
小王只需要检查每次这个袋子里出现的数字是不是都是1到9即可(检查完毕之后,小明需要再次将他填写的答案倒扣回去还原方格)。
如果每次检查都是1到9,那么就证明了小明的确是做出来了这道数独题。
百万富翁问题
问题
代码语言:javascript
复制
假设现在有两个富翁甲和乙,这两个人都有上亿资产,假设分别为i和j(其中 0<i<10, 0<j<10)。
人都是爱攀比的,甲和乙都想知道谁的资产更多。但是两人又都不想让对方知道自己的具体资产有多少。
本来嘛,可以找一个彼此都信任的人作为中间人,两人把各自的资产告诉这个中间人,然后中间人告诉他们谁资产多谁资产少。
但是这两人也不想让其他任何人知道自己的资产。应该怎么办呢?
解决办法
代码语言:javascript
复制
这个问题其实就是著名的百万富翁问题,由清华大学姚期智教授提出,姚期智是我国目前唯一一位图灵奖获得者。至于这个问题的解法,我们下回分解~
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 定义
  • 举几个栗子
    • 谁是红绿色盲
      • 问题
      • 解决办法
    • 解数读
      • 问题
      • 解决办法
    • 百万富翁问题
      • 问题
      • 解决办法
相关产品与服务
区块链
云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档