ZCash介绍
在讲解ZCash前让我们复习一下Bitcoin 是如何运作的,因为两者间的概念差不多。
比特币的UTXO(Unspent Transaction Output)
UTXO就是进进出出
-
一个比特币交易接受数个输入(Transaction Input, TI),同时产生数个输出(Transaction Output, TO)。
-
TI, TO是相对特定交易而言的。
因为一个交易的TO可能是另一个交易的TI,换句话说就是一个将收到的钱再花出去的过程。
在还没花出去前,这些钱是Unspent的状态,尚未成为下一笔交易的TI的TO称为UTXO(Unspent Transaction Output),此为比特币交易的基本单位。 -
交易付款方需证明自己有权使用此UTXO。
如何证明?要提供私钥进行验证,因为每个TO都会指定收款人的公钥来保证只有收款人可以继续消费此TO。若不太了解公钥、私钥的观念应该算是走错棚了,可以先去补一下非对称式加密(Asymmetric Encryption)。
ZCash运作原理
ZCash的交易模型基本上与比特币相同,但是其中的UTXO被note所代替,note为ZCash的基本交易单位。一个交易的输入和输出都是数个note,我们后面将以note=(PK, v, r)来表示note,PK为公钥(Public Key)、v是金额(Value)、r是序列号(Random Serial Number)。
ZCash的节点会包含两个集合,每个集合都包含:
-
Note Commitment (签发通知)
交易的输出,表示一张新的note被发出,一张有效的commitment即为一张note的存在证明,此commitment为hash(note),因此可以确保他人不知道所有者、金额。 -
Nullifier Commitment (废止通知)
交易的输入,表示要将一张note花掉了,一个nullifier对应唯一的commitment,为了要知道是哪个commitment,nullifier为hash(r)。现在大家应该知道为什么需要序列号了吧!
透过commitment与nullifier,交易的双方从路人皆知变成双方的心照不宣。








