主页 > 放imtoken钱包安全吗 > 知识普及 || 区块链零知识证明

知识普及 || 区块链零知识证明

放imtoken钱包安全吗 2023-01-17 03:40:34

比特币转错到比特币现金地址了_外国的比特币便宜中国的比特币贵为什么?_零知识证明 比特币

今天要和大家分享的是关于区块链的一点基础知识——零知识证明。 说起零知识证明,就不得不提到一种数字货币zcash。 这种数字货币的系统思想是交易过程完全匿名,这使得它自提出以来就备受关注。

这篇文章主要讲零知识证明的知识点。 关于zcash数字货币是如何实现基于零知识证明的区块链系统架构的,大家可以自行搜索,也可以等小编整理分享。

什么是零知识证明

“零知识证明”(简称“zk-SNARK”)的定义是,证明者无需向验证者提供任何有用的信息,就可以使验证者相信某个断言是正确的。 举个简单的例子:

A想向B证明自己有打开某个宝箱的钥匙,而这把钥匙只能打开这个宝箱,不能打开其他宝箱。 现在有两种证明方法:

A、A将钥匙交给B,B拿去打开宝箱的锁,从而证明A确实有打开宝箱的钥匙。

B、B知道宝箱里有东西,然后A打开宝箱把东西拿出来,就可以证明A确实有打开宝箱的钥匙。

比特币转错到比特币现金地址了_外国的比特币便宜中国的比特币贵为什么?_零知识证明 比特币

第二种方法是零知识证明。 在证明过程中,B 并不知道打开宝箱的钥匙的样子,从而避免了钥匙的泄露。

零知识证明的性质

(1) 完整性。 如果证明者和验证者都是诚实的,遵循证明过程的每一步,并进行正确的计算,那么证明一定是成功的,验证者一定能够接受证明者。

(2)合理性。 没有人可以冒充证明者使这个证明成功。 即时宝箱的钥匙是独一无二的。

(3) 零知识。 证明过程执行后,验证者仅获得“证明者拥有此知识”的消息,而不会获得有关该知识本身的任何信息。

零知识证明的过程

比特币转错到比特币现金地址了_外国的比特币便宜中国的比特币贵为什么?_零知识证明 比特币

在零知识证明过程中,有两个参与者,一个是证明者,一个是验证者。 证明者有秘密,想让验证者相信自己真的有秘密,但又不想让他知道秘密是什么。

因此,双方需要通过一个协议进行一系列的交互,最后验证者得到一个结果零知识证明 比特币,根据这个结果可以判断证明者是否有秘密,而不需要去确认秘密的内容是什么是。

交互协议证明

1.零知识

将其放入比特币是一种私人交易。 在比特币网络中,用户需要将交易的明文广播给所有矿工,由他们来验证交易的合法性。 但在某些情况下,基于隐私考虑,交易的具体内容不希望对外公布。 这就形成了一对矛盾。

解决这个矛盾的核心是证明事件本身是否正确,而不需要验证者关注整个事件。 就像软件测试中的黑盒测试一样,需要的是确认软件中所有功能的输入和输出,而不是分解软件来检查里面的功能实践细节。

零知识证明 比特币_比特币转错到比特币现金地址了_外国的比特币便宜中国的比特币贵为什么?

对于比特币交易例子,只需要证明:

发件人的钱属于发起交易的人

发送方发送的钱等于接收方收到的钱

发送方的钱在交易后确实被销毁

在整个证明过程中,矿工并不真正关心花了多少钱,谁是发送者,谁是接收者。 矿工只关心系统中的钱是否守恒。

2、测试方法

外国的比特币便宜中国的比特币贵为什么?_比特币转错到比特币现金地址了_零知识证明 比特币

测试不能完全由证明方给出,就像写代码时不能让自己进行代码验收一样。

通常,在这种情况下使用剪切和选择策略。 这种策略最简单的例子是在两个人之间分享粥。 无论谁来分粥,他们都会给自己更多。 解决办法是分享给一个人,另一个人先选择。

在交易验证过程中,证明者会以系统要求的一些必要的验证内容作为提问范围,而验证者则作为挑战者,与证明者进行多轮交互,等待证明者的回应。

这种证明是一种交互式证明方法。 双方需要实时交互和交换信息。 对于比特币私下转账零知识证明 比特币,这种证明方法不是很好。 另外,证明者需要向所有矿工广播交易,而且是一对一的交互,效率可想而知。

另一个问题是,由于需要交互,因此在证明过程中需要双方在线,这也会给用户代码带来很大的不便。 最好有一个非交互式的证明方法。 只要证明者给出证明,不需要后续交互,任何人都可以验证证明是否正确。 但这显然与我们一开始所说的不能完全由证明者给出相矛盾。

一种解决方案是使用公共引用字符串 Common Reference String。

外国的比特币便宜中国的比特币贵为什么?_零知识证明 比特币_比特币转错到比特币现金地址了

虽然证明者给出的证明不像 cut and choose 策略,但选择问题是由验证者决定的。 但它并不完全由证明者自己决定,而是基于一个预先确定的种子产生的随机序列。 这样一来,就相当于有一个中立的第三方来提出问题,也能达到同样的效果。 当然,前提是这个第三方确实是中立的。

就像发粥的例子,一个人先分,另一个人不先选,而是一个中立的第三方产生一个随机数,决定谁分到哪碗粥。 也可以确保结果尽可能公平。

三、测试内容

证明者天然具有信息优势,验证者必须主动出击,防止证明者受骗。 但其实还有一点需要验证者注意。

即试题的难易程度要有所区别。

就像一个软件项目的验收一样,不能说只通过了编译,运行起来没有冲突就通过了验收。 真正掌握秘密的验证者一定很容易通过,假验证者再强大的算力也骗不了。

在计算机领域,一般的做法是将原问题映射为NP问题。 验证者只需验证证明者给出的NP问题的解,计算量不大。

如果有人掌握了秘诀,可以解决原问题,那么通过转换就可以解决对应的NP问题。 如果不知道秘密,绕过原题,直接暴力解决NP问题,一般可以认为是不可能的。