主页 > imtoken地址查询 > 当区块链遇上零知识证明

当区块链遇上零知识证明

imtoken地址查询 2023-04-24 06:42:58

本文由云+社区发布

当区块链遇到零知识证明什么是零知识证明

零知识证明的官方定义是在不给验证者任何有用信息的情况下,能够让验证者相信一个陈述是正确的。这个定义有点抽象。 下面举几个例子帮助读者理解这个概念。

例子一:小明有一把钥匙

房东有一个漂亮的女儿,一直没有结婚。 有一天房东捡到一把锁,灵光一闪,为什么不让上帝来决定我女儿嫁给谁,于是他发布了一个告示,如果谁拥有这把锁钥匙,他就把女儿嫁给他。

小明看到锁心想,这不是我前两天扔的锁吗? 钥匙我有,但他不想把钥匙拿出来给大家看,因为钥匙有不可告人的秘密。 于是他找到房东,表达了自己的苦衷。 楼主想了想,想到了一个好办法。

他让人搬来一个密封的大木箱,将自己的贴身玉佩放在箱子里,用锁锁好,说如果第二天小明把玉佩给他,小明就可以娶他的女儿了。

小明晚上偷偷用钥匙打开盒子,取出玉佩,第二天交给了房东。 然后和美女幸福的生活在一起。

在这个故事中,小明没有把钥匙给房东看,也没有当着房东的面开锁,但他证明自己确实有钥匙。

例二:哥德巴赫猜想的证明

比特币怎么比特币钱包_零知识证明 比特币_比特币分叉会影响比特币价格吗

众所周知,哥德巴赫猜想是世界级的数学难题。 一天,中国大学生小明找到了证明哥德巴赫猜想的方法。 但是他说我可以证明。 没有人相信他,甚至没有人愿意看他的证明过程,因为他的名气太小了。 这时,他想到可以请导师证明自己找到了证明方法,却遇到了两难的境地:

如果他把证明方法拿给他的导师看,导师可能会直接说他发现了证明方法。

如果他不把证明方法拿给他的导师看,导师不会相信他能找到哥德巴赫猜想的证明方法。

想要击破小明真的很难! ! ! ! ! ! ! !

零知识证明可以帮助小明解决他的问题。 在零知识证明的世界里,小明不需要向导师展示实际的证明过程,只需要再提供一份数据给导师即可。 导师拿到这个数据后,就可以知道小明真的有哥德巴赫猜想的证明方法,但是导师并没有看到真正的证明过程。

比特币的困境

如果你对比特币有所了解,你应该知道比特币是一个共享的账本。 A转一笔钱给B零知识证明 比特币,就是在区块链上写一条记录“A转10元给B”,A的10元从哪里来? 要求一定是之前有人C在区块链上写了一条记录,“C转10元给A”。 所以比特币区块链是一个一个地存储账本条目:

C转10元给A

比特币分叉会影响比特币价格吗_比特币怎么比特币钱包_零知识证明 比特币

A转10元给B

B转5元给D

B转5元给E

E转5元给D

D转10元给A

...

但这会带来一个问题。 所谓的匿名比特币系统不能真正匿名,因为账本是公开的,所以每个人都可以看到A、B、C、D、E有多少钱,也就是你什么时候拿到钱的。 所谓的匿名其实是不存在的。

PS:比特币的匿名性实际上意味着一般不可能将A映射到真实的交易实体。 A只是一个账号,并不是像“小明”这样的真实个体。 但是如果小明是A账户的主人,而小明最终可能因为操作A账户兑换人民币或者买东西而被查出是小明。 所以这种匿名不是真正的匿名。

零知识证明 比特币_比特币分叉会影响比特币价格吗_比特币怎么比特币钱包

ZCASH 如何将零知识证明结合到区块链中

为了解决比特币的非匿名性问题,ZCASH 将零知识证明引入比特币系统。 那么它是如何实现匿名的呢? 且看口才。

假设有一个大水池,里面有很多箱子,每个箱子都是锁着的,只能用一把钥匙打开,箱子里有一张纸条,内容格式如下:

“这个盒子值 x 美元”

我们暂且称这个大池子为“大池子账本”。

整个 ZCASH 交易系统就是这么一个大池子。 当A要转10元给B时,A会填一张纸条:“这个盒子值10元”,然后把纸条放在一个盒子里锁上。 ,把盒子和盒子对应的钥匙给B,B拿到盒子和钥匙,用钥匙打开盒子,看到纸条内容,“这个盒子价值10元”。 B知道他真的拿到了10块钱,然后把盒子扔进了大池子里,而他保留了钥匙,这样B就相当于在“大池子账本”上记录了他拥有10块钱的事实。

因为B有钥匙零知识证明 比特币,他可以知道自己有多少钱,并在合适的时间花钱,但其他人(A除外)只能看到盒子,看不到纸条的内容,不知道价值这个盒子多少钱,而且他们不知道这个盒子是谁的(他们不知道B有钥匙)。 也就是说,ZCASH这个“大池账本”系统,成功地掩盖了两个比特币系统无法掩盖的事实:

1、交易的参与者有哪些?

零知识证明 比特币_比特币怎么比特币钱包_比特币分叉会影响比特币价格吗

2. 交易金额是多少?

如果你想从系统中查到B有多少钱,因为你不能打开箱子,你甚至不知道哪些箱子是B的,所以你什么也得不到

聪明的读者可能会发现,这个系统还有一个关键问题没有解决。 为什么A可以做一个盒子说这个盒子值10块钱? 为什么B和其他参与者都认为B的盒子真的值10块钱? 这里就需要借助零知识证明的力量。

其实在大池子里有一个属于A的盒子a,A有这个盒子的钥匙akey,盒子里面的纸条上写着:“这个盒子值10元”。 A 在创建盒子 b 和对应的密钥 bkey 的同时,也会创建一个零知识证明 receipt akill,也就是使盒子 a 失效。

这个零知识接收akill的神器函数是:

1. 当所有参与者看到这张击杀收据,就知道它对应的是大池子里的一个盒子

2.当所有参与者看到akill时,就知道它又生成了一个盒子b,盒子里的纸条是合法的

3.除A以外的所有参与者都不知道akill对应的盒子a

比特币怎么比特币钱包_比特币分叉会影响比特币价格吗_零知识证明 比特币

4、akey和akill是一一对应的

这有点令人费解。 简单来说,A不提供密钥akey,只提供零知识证明证书akill,证明了两件事

1.你有一把钥匙可以打开大池子里的某个盒子

2.证明盒子b是合法的

这很简单。 A把b盒子给B的时候,先把akill丢到大池子里给大家看。 B看到大池子里放了akill,就认为b盒是合法的,自己也确实值了。 10 美元。

还有最后一个问题吗? 如果A说他每次都有打开某个箱子的钥匙,一笔钱花了很多次怎么办?

akill和akey是一一对应的,akill已经放入大池中,所有参与者都可以看到。 如果下次他要给C一个盒子c,用akill来证明,因为C看到akill已经在大池子里了,所以C就不相信A了。

PS:这里可能有人会想另外一个问题。 当A往大池里扔一个杀,或者B往大池里扔一个箱子,他们的身份不就暴露了吗?

这里可以认为是他们偷偷扔的。 网络上的具体实现是B随机找一个网络设备将b盒子对应的数据上传到区块链。 通过这个设备很难找到B,B也可以要求C上传b盒子的数据。

本文已获作者授权发布于腾讯云+社区