主页 > 放imtoken钱包安全吗 > 知识普及 || 区块链零知识证明
知识普及 || 区块链零知识证明
今天要和大家分享的是关于区块链的一点基础知识——零知识证明。 说起零知识证明,就不得不提到一种数字货币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问题,一般可以认为是不可能的。