世界上最近的距离,不是时间,不是空间,不是位置,不是你,不是我。而是你没见过我,你却确信我。
1.零知识证明
有这样一个密室,只有一把钥匙才能打开它,其他任何方式都不能打开。你对我说,你拥有密室的一把钥匙,想让我确信你拥有这把钥匙,但你又不想让我看到这把钥匙长什么样子,要怎么做?
你不给我看钥匙,又要证明你有钥匙,也不是没有办法,那你去密室把那个啥东西拿出给我看,我就相信你拥有密室的钥匙。
这种我对你的钥匙一无所知,你又向我证明了自己拥有密室的钥匙,还没有把钥匙的相关信息泄露给我,这个就叫零知识证明,你给我的“知识”为“零”。
2.Zcash
首个使用零知识证明机制的区块链系统是Zcash,实现支付的完全保密性,自动隐藏区块链上所有交易的发送者、接受者及交易数额,那么谁可以看呢?拥有私钥的人才能查看交易内容,让用户拥有了完全控制权。
当然,Zcash的钱包资金分为2种,一种是透明资金,公开可查,类似比特币;一种是私有资金,交易是保密不可查。
下面说一说,零知识证明是如何让Zcash的私有资金保密不可查的。
3.如何实现匿名
假如A账户里有3个ZEC,想转给B,Zcash私有资金转币的过程是这样子:
第一步:A创建一张面额为3个ZEC的“支票”,这个过程中A需要完成两件事:1)证明A拥有3个ZEC;2)A使用私钥签名,证明其对这笔资产转账的权力。
A创建的这张“支票”,有一串随机数,用来作为“支票”唯一标识,用符号 r1表示。
第二步:为B新建一张“支票”,“支票”唯一标识为r2,r1和r2不相同。
第三步:为了让A的“支票”失效,让B的“支票”生效,达到转移资产效果,ZCash采用“备注作废”的手段,即不对A的“支票”做任何处理,只是把其标识号r1录入一个作废列表。
也就是说,A创建的支票还在,没有消失,只是这张标号为r1的支票已被记入作废列表,而B支票唯一标识号为r2不在作废列表当中。
A的支票已经存在Zcash网络中,B的支票创建后进行全网广播。
A向B转账交易完成。
这笔转账的匿名性是如何实现的呢?
上述交易过程中,B没有见过A的“支票”,却实现了资产所有权的转移。
作为这笔交易信息见证者和记录者矿工,验证A支票的代号r1是否在作废列表中,即可确定该“支票”是否失效,没有失效,则把代号为r1的“支票”加入了作废列表,把B新建的“支票”代号r2加入支票列表中,这个过程中矿工不需要看到A的支票和B的支票。
为了匿名性,隐藏交易者的信息,这两张“支票”及“支票”标识号r1和r2都进行了加密处理,矿工虽然不知道交易双方是谁,交易金额多少,但并不影响矿工对交易有效性的判断。
网友评论