未分类

零知识证明在区块链中的应用

零知识证明在区块链中的应用

首先,什么是零知识证明。通俗的来说,零知识证明是在不提供给别人足够知识的情况下,让别人相信你说的是真的,这样,你自己并没有暴露,还让别人相信你所说的。举个例子,比如说,你想证明你自己十分有钱,但,
你可直接给别人看你的银行账单,但,你不想让别人知道你到底有多少钱,这时候,你就可以买艘游艇,这样,你就可以在不暴露自己的情况下让别人相信你挺有钱。

在区块链中,发送交易的时候,不采用零知识证明的话,你可以这样发送交易,首先,发送者生成一个账单,比如,一个比特币,你用私钥对这个账单进行签名,然后将这个账单发送给接收者,接收者用公钥进行解译,这样,别人
就相信,你确实有这个比特币,交易可以进行,交易完成后,这个账单被销毁。

Alice要向Bob转一个ZEC,此时Alice拥有一张1ZEC的支票,要转账给Bob时,先给Bob新建一张1ZEC的支票,这时Alice和Bob都有了一张支票。

Zcash核心:零知识证明(二)

这两张“支票”都是有效的。Alice的支票开始就存在于整个Zcash网络,Bob的支票在生成后也会被广播到全网。

为了隐藏交易者信息,要对两张支票进行加密处理,在全网中存在的“支票”其实是这样子的。

Zcash核心:零知识证明(二)

同时,因为资产只能有一份,所有矿工手里还有一个作废列表。Alice要同时广播自己的“发票代号”,录入作废列表中。发票代号也是加密的。所以矿工们能看到的信息其实是这样的。其中Alice的支票是原先存在的,Alice的支票代号r1和Bob的支票是在交易过程中被Alice广播的。

Zcash核心:零知识证明(二)

矿工们能获取的信息相当有限,但是这并不影响对矿工对交易有效性的判断。

判断的逻辑相当简单:矿工拿到Alice给的支票代号r1,去作废列表中检索,假如作废列表中已经存在r1,则证明r1所对应的的支票早已失效;若作废列表中并不存在r1,则证明r1对应的支票仍旧有效,此时矿工把r1录入作废列表中,把新生成的支票录入支票列表中。所以记账的过程就是对原有支票登记失效,并存入现有支票的过程。

在这个过程中,我们不难发现,每笔交易矿工能接收到的东西只有一个发票代号,和一张新的发票,而且这两样东西都是被加密的。所以矿工并不知道转账双方是谁,也不知道转账金额是多少。Bob也不知道是谁转的账,但只要Alice把解锁支票的查看私钥通过私信给Bob,Bob就可以知道这笔交易的所有信息。

这种方法就属于非交互式零知识证明。整个交易过程中,Bob并没有见过Alice的支票,但是还是实现了资产所有权的转移。同时,Alice也可以通过发送查看密钥的方式向Bob证明自己身份

Leave a Reply

邮箱地址不会被公开。 必填项已用*标注