前言主要共享Zcash Sapling版本的协议细节。多多指教!!!Zcash迄今为止,Zcash总共经历了三个版本的递归,第四次版本升级时间预计在12.11.2019,据官方讲解,网卓新闻网,此次改版主要是延长了出块的时间。作为零科学知识证明的顺利应用于项目,让我们带着以下几个问题去研究Zcash的机制:Zcash是如何隐蔽发送到方的?Zcash是如何隐蔽接管方的?Zcash是如何隐蔽交易金额的?建议:读者本文前,您最差早已理解了:1. note的概念;2. 零科学知识证明的基本概念;Sapling本篇主要共享Zcash Sapling版本协议的主要细节,相对于Sprout版本,还是做到了很多的改动和优化,在此不做到详尽的对比分析。重返到大方向,无论是Sapling版本,还是Sprout版本,交易的整体流程都可以详细总结为以下三个步骤:1. 交易者发动交易;2. 交易者分解zk-proof,和signature,检验者检验;3. 接收者接管交易;接下来,我们将尽可能细心挖出每一个步骤,去探寻一下,它是如何构建这三点的。
Transaction在这里,我们不详尽讲解交易发起者是如何发动一起交易的,我们必要讲解Sapling中的交易结构,如图所示:实质上,Sapling的交易结构内容好比这些,在这只是罗列出有Sapling特有的一些字段及适当的说明,原始的交易结构在协议说明书的7.1章节有详尽讲解。在Sapling中,交易由Spend Transfer和Output Transfer构成,分别对应藏匿的输出和藏匿的输入,而spendDescription和output Description是用来分别叙述Spend Transfer和Output Transfer的数据字段,它们被各自编码表示成vShieldSpend和vShieldOutput字段储存在交易结构中。接下来,重点讲解vShieldSpend、vShieldOutput、valueBlance、bindingSig四个字段回应的内容。
1. vShieldSpend一个vShiledSpend对应着一个SpendDescription,一个可信的SpendDescription回应一个note的有效地花费,它包括的内容如下图右图:cv:对Inpunote 的value的允诺,所谓允诺,只不过就是对v值的一种隐蔽,这种隐蔽是单向的,不可逆的,也不能假造;anchor:cm默克尔树根的六根,用作检验inputnote的不存在性及有效性;nullifier:note的唯一性标识,用来避免同一note被反复花费; rk:用作检验消费许可亲笔签名;zkproof:零科学知识证据,在不透漏适当隐私的情况下,证明note的有效性、花费note的权力、隐私地址的有效性 spendAuthSig:用私钥对spendDescription亲笔签名,对note的花费展开许可2. vShieldOutput同理,一个vShiledOutput对应一个OutputDescription,一个可信的OutputDescription回应产生的新note的有效性,它包括的内容如下图右图: cv:对outputnote 的 value的允诺,亦符合单向性,不能假造性;cmu:对outputnote的允诺,允诺的数学形式是曲线上的一个点(u,v),cmu为点的u座标;ephemeralKey:临时公钥,用作计算出来解密密钥 encCiphertext:noteplaint的密文,noteplaint是note的具体内容;outCiphertext:用来计算出来分享密钥的信息密文,能用来完全恢复noteplaint信息 zkproof:零科学知识证据,在不透漏任何隐私的情况下,证明新的分解Note的有效性 3. valueBlancevalueBalance回应此transparent value pool的变化量,由Spend Transfer的v总和乘以Output Transferd的v的总和得出结论。当valueBalance 为正数时,回应从Sapling value pool移往valueBalance至transparent value pool,如果为负数,则继续执行忽略的操作者。valueBalance将在bindingSig中,用作检验交易的balance 属性。4. bindingSig在Sapling中,bingingSig充分发挥两个起到。
第一,确保了交易的balance属性;第二,利用计算出来输出和输入note cv的随机数rcv,来分解亲笔签名私钥,避免outputDescription被攻击者展开纠错反击(spendDescription的防纠错反击由spendAuthSig来确保)Zk-proof and Signature在Sapling中,交易者总共要分解两个zkproof(spend zkproofoutput zkproof)和两个亲笔签名(spendAuthSigbindingSig)。下面逐一讲解。
1. spend zk-proofspend zkproof 主要是构建了在不曝露任何隐私信息的场景下,去证明txsender有权力去花费一些note,并且这些note都是有效地的。输出分成两个部分,一个是primary input, 一个是Auxiliary input。primary input是公开发表的输出信息,Auxiliary input是隐私的输出信息,只有txsender告诉。
本文关键词:深入,理解,Zcash,的,零,威9国际真人,知识,证明,体系,【,威
本文来源:威9国际真人-www.cptouxiang.com