零知识证明:
在没有足够(甚至是根本没有)依据的情况下,猜出一个事件(密码反译)的计算方法,虽然是没有任何依据的猜,但是这个猜出的计算法方被证明是正确的,这就是零知识证明。
有时候如果链上需要对数据隐私信息进行保护,就需要用到零知识证明,
零知识证明的意思为:发送方不向接收方提供任何有用的信息的情况下,接收方能够相信这个信息是发送方发送的。
证明者向验证者证明并且使其相信自己知道或者拥有某一消息,但证明的过程不能向验证者泄露任何关于被证明消息的消息。
是一种在无需泄露数据本身情况下证明某些数据运算的一种零知识证明
特征性质:
1)完备性:如果证明方和验证方都是诚实的,并遵循证明过程的每一步,进行正确的计算,那么这个证明一定是成功的,验证方一定能够接受证明方。
2)合理性:没有人能够假冒证明方,使这个证明成功。
3)零知识性:证明过程执行完之后,验证方只获得了“证明方拥有这个知识”这条信息,而没有获得关于这个知识本身的任何一点信息。
百度上的零知识证明例子:
有一个缺口环形的长廊,出口和入口距离非常近(在目距之内),但走廊中间某处有一道只能用钥匙打开的门,A要向B证明自己拥有该门的钥匙。采用零知识证明,则B看着A从入口进入走廊,然后又从出口走出走廊,这时B没有得到任何关于这个钥匙的信息,但是完全可以证明A拥有钥匙。
在区块链中的应用:
区块上可以显示这笔交易确确实实存在,但是交易的对方以及交易的金额,除了双方别人都无法查看到。
例如A有3个BTC,要给B转账1个BTC,那么在账本上就会记录着:A转出了两笔BTC,一笔为1BTC,转给了B;另一笔为2BTC,转给了自己。
那么利用了“零知识证明”的ZCash是怎么做到的所谓匿名呢?
ZCash的代币为ZEC。同样假设A有3个ZEC,要给B转账1个ZEC。
首先,A会将自己的1个ZEC分成若干份随机投入一系列的“混合容器”中,指定接收方B的地址,同时混入的时候还有其他交易方输出的若干份ZEC。这些ZEC又被混合容器随机拆分,再从这些被拆分生成的所有的ZEC中取出合计为1ZEC的若干份,转移到B的地址中,同时在发送的时间上也可以设置一定的延迟
其中的“混合容器”,就是一条“公有链”。经过这条公有链一系列的“混币”过程,就使得包括交易地址和具体金额在内的交易信息变得无从考证了。
流程图如下:
ZEC使用一个被称为ZK─SNARK的零知识证明架构。该架构是由经验丰富的密码学家团队开发的。这个框架允许网络在不公 开交易 参与方或者交易数额的情况下,维护一个安全的账户余额账本。Zcash交易的元数据是加密的,而不是公开的展示交易参与方和交易数额。ZK─SNARK被用来证明没有人进行欺骗或者偷窃
领取专属 10元无门槛券
私享最新 技术干货