区块天下 区块链新闻 当区块链遇上零知识证明?

当区块链遇上零知识证明?

世界上最近的距离,不是时间,不是空间,不是位置。而是你没见过我,你却确信我,这个就是零知识证明。

零知识证明是什么呢?

零知识证明是指证明者能够在不向验证者提供信息本身内容的情况下,使验证者相信某个论断是真实可信的一种技术。目前匿名性非常突出的数字资产ZCash的匿名交易就是依靠“零知识证明”实现的。

举例说明下:有这样一个密室,只有一把钥匙才能打开它,其他任何方式都不能打开。你对我说,你拥有密室的一把钥匙,想让我确信你拥有这把钥匙,但你又不想让我看到这把钥匙长什么样子,要怎么做?

你不给我看钥匙,又要证明你有钥匙,也不是没有办法,那你去密室把那个啥东西拿出给我看,我就相信你拥有密室的钥匙。

这种我对你的钥匙一无所知,你又向我证明了自己拥有密室的钥匙,还没有把钥匙的相关信息泄露给我,这个就叫零知识证明,你给我的“知识”为“零”。

首个使用零知识证明机制的区块链系统是Zcash,现支付的完全保密性,自动隐藏区块链上所有交易的发送者、接受者及交易数额,那么谁可以看呢?拥有私钥的人才能查看交易内容,让用户拥有了完全控制权。

当然,Zcash的钱包资金分为2种,一种是透明资金,公开可查,类似比特币;一种是私有资金,交易是保密不可查。

下面说一说,零知识证明是如何让Zcash的私有资金保密不可查的。

假如A账户里有3个ZEC,想转给B,那么在Zcash网络中私有资金转币的过程是这样子:

第一步:转账前,A创建一张面额为3个ZEC的“支票”,从“支票”这个凭证获取到信息:

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都进行了加密处理,矿工虽然不知道交易双方是谁,交易金额多少,但并不影响矿工对交易有效性的判断。

简而言之,零知识证明是一种证明“我知道内情”的技术,简单、易操作,最关键的是你除了“我是对的”啥也不会知道。

返回顶部