文章
  • 文章
搜索
详细内容

ZCash,Bitcoin和央行数字货币

时间:2019-09-26     作者:王重阳【原创】

01

从比特币说起

直接讲解ZCash的交易过程可能会比较抽象。为了有助于理解,我们不妨先分析比特币,作为铺垫。

演示场景:Alice转1个比特币给Bob。

转账前,Alice要事先准备1个比特币。为了方便理解,我们把Alice准备转出的这1个比特币看成一张面额为1个比特币的“note”。


从这张“note”中我们可以获取到如下信息:

1. Alice确实拥有1个BTC。

2. Alice使用私钥对这张note签名,证明Alice拥有对这笔资产转账的权力。

note的面额和转账权都已经明确,Alice就可以给Bob转账了。转账的原理很简单,就是给Bob新建一张一样的“note”,证明Bob拥有了1个比特币。同时撕毁Alice手中的“note”,注意,此处的撕毁指放弃对该份资产的所有权,并不是指真的销毁对应的比特币,通过这“破旧”并“立新”的方式,实现资产所有权的转移。   

{28CECEB7-061F-4849-B1C4-324B50A26FA5}_20190912142352.jpg

以上逻辑其实不难理解,因为这和日常生活中的银行转账是一个道理。通过银行转账,我们在交易时不必对实物货币进行转移,而是以银行记账的方式,实现“资产所有权”的转移。比特币交易的过程实质上就是一个”资产所有权“的转移过程,转入比特币的那一方”新建“一份资产所有权,而转出方需要放弃原先的资产所有权,花过的资产也就不能再花了。


02

ZCash的转账原理


与比特币一样,ZCash的交易过程也是 “资产所有权”的转移。继续沿用前文“note”的比方。

演示场景:Alice转1个ZEC给Bob。

转账前,Alice创建一张面额为1个ZEC的“note”。

1569465153350086.jpg

能从该凭证中获取的信息:

1. Alice确实拥有1个ZEC。

2. Alice使用私钥对这张note签名,证明Alice拥有对这笔资产转账的权力。

3. 这张“凭证”上多了一串随机数,用符号 r 表示。这串随机数的作用好比“note代号”,用来唯一识别该note。Alice的“note代号”为r1。明确以上信息,Alice就可以进行ZEC转账了。

第一步:

比特币一样,要先为Bob新建一张“note”。Bob的note代号(r2)与Alice的note代号(r1)不相同。

{5EF86A0E-65CF-49CE-8E48-A6A0636357C3}_20190912142508.jpg

第二步:

新的“资产所有权”生成的同时,必须要想办法销毁原来的“资产所有权”。即必须想办法让Alice手中的“note”失效。与比特币简单粗暴的“直接撕毁”不同,ZCash采用“备注作废”的手段,达到同样的效果。怎么理解呢?就是在不对原先“note”作任何处理的前提下,新建一个作废文件列表,录入需要作废的“发票代号”。

1569465363397586.jpg

1

从上图可以看出,原先Alice持有的note仍旧存证,并没有消失,只是这张note已经被记入“作废列表”。在确定资产所有权时要同时读取两个列表的信息,能确定Bob拥有资产所有权的判断方法是:作废列表中不存在Bob所持“note”的代号。

可是为什么要这样设计呢?其实这样设计的目的是为了在交易过程中运用 “零知识证明”。

03

零知识证明


我们再回顾比特币和ZCash的例子。

Alice要向Bob转一个单位的数字货币(BTC/ZEC),即Alice要向Bob转移一个单位的资产所有权。这时有以下两个方法:

1. 比特币中的做法

Alice拥有一张1BTC的note,要转账给Bob时,先给Bob新建一张1BTC的note,同时当着Bob的面将自己原先的note撕毁。

2. ZCash的做法

Alice拥有一张1ZEC的note,要转账给Bob时,先给Bob新建一张1ZEC的note,然后在一张约定有效的作废列表中,记录下Alice的发票的代号,证明Alice的note已经失效。


ZCash的方法属于零知识证明。整个交易过程中,Bob并没有见过Alice的note,但是还是实现了资产所有权的转移。在ZCash的整个交易系统中,Alice和Bob的交易还有其他见证者,即负责记录交易信息的矿工。同样道理,矿工也不必看到Alice的note,只要能确定代号为r1的note已经作废了就行。

04

ZCash完整的匿名交易系统


有了上述铺垫,就可以进一步解释ZCash的匿名交易过程了。

还是那个例子:Alice转1 个ZEC给Bob。这个例子中有涉及到的角色有转账双方Alice和Bob,以及记账者(矿工)。

首先是Alice和Bob都有了一张note。           

{4192CAF1-2929-4B4B-8B77-E48FCD4B797B}_20190912150759.jpg

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

为了隐藏交易者信息,要对两张note进行加密处理。在全网中存在的“note”其实是note的消息摘要(hash)。

{4C9629B3-CC25-4F39-8B70-8C42A3E85744}_20190912142649.jpg

信息都是被加密的,在Alice和Bob之外的人看来就是杂乱无章的数字而已。

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

1569465541946855.png

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


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


在这个过程中,我们不难发现,每笔交易矿工能接收到的东西只有一个发票代号,和一张新的发票,而且这两样东西都是被加密的。所以矿工并不知道转账双方是谁,也不知道转账金额是多少。


我们再回顾一下Alice做的事:

1.    随机选择一个新的note编号r2定义新的note2秘密发给bob,通过复杂的密钥加密体制。

2.    将nf1=hash(r1)全网广播。

3.    将新的note2的hash全网广播。

这个过程我们发现我们只验证了note1没被花过,但是并没有办法验证alice对note1的所有权。甚至我们都没有对note1做真假性检验。这就是零知识证明要保护的地方。

1

零知识证明需要证明通用计算问题,也就是所谓的等式,在上述过程中,我们需要证明以下三个等式:

1.    note1的hash在节点的hash列表里(即alice用对应明文生成hash的等式)

2.    alice有对应的私钥,即私钥生成公钥的等式

3.    r1的hash为广播的nf1(即alice用r1生成nf1的hash等式)

05

DCEP的技术特征


我们上面谈到了比特币和ZCash转账过程中的技术架构,那对于央行即将推出的数字货币DCEP,它的技术架构又是怎样的呢?技术架构方面,DCEP做了一个非常大胆的尝试,央行定义的技术架构是“没有架构”,通过双层运营的方式,由商业机构自行开发钱包系统,至于商业机构是否用区块链,是否去中心化,都不作为限定条件。只要满足央行要求的用户体验,央行就提供底层支持,最终由市场促进整个系统逐渐走向最适合落地的形态。由于目前尚未正式推出,所以DCEP的隐私性能,交易效率还不明确,届时到底是良性的百家争鸣还是垄断的一家独大我们也尚未可知。

06

NewSpiral的零知识证明


南京金宁汇研发的NewSpiral作为联盟链底层平台,我们提供了数字货币的双向锚定方案,用户在未来可以自主选择锚定的货币(如DCEP),实现联盟链中的价值传递。使得联盟链的落地场景更加丰富。


同时对于ZCash零知识证明密钥系统过于复杂,不利于使用且效率过低的问题,NewSpiral通过长连接的方式提供P2P网络中的秘密传输通道,同时由于CA机构的介入,也使得易用性大大增强。实现高效率价值传递的同时,对双方身份及隐私进行了有效的保护,尤其适用于多方需要彼此合作却又无法相互信任的场景。相信NewSpiral会成为联盟链落地的典范。数字货币实现NewSpiral的价值传递,NewSpiral为数字货币在工业化场景中的使用提供环境。


本文作者: 

金宁汇科技、南京可信区块链和算法经济研究院     

王重阳


作品已于fscopyright.cn上链存证,如需转载请联系:xz@hashvictor.com,侵权必究!

关注斯拜若

极致工匠精神·科技创造未来

关注金宁汇
技术支持: 思淘科技 | 管理登录