Zcash-草稿

Zcash,也叫大零币,从zerocoin发展而来,是使用零知识证明机制的区块链系统,通过完全匿名交易特性在区块链的生态中独树一帜。现在,Zcash市值是41.10亿。

2016年10月28日,ZEC从比特币代码库0.11上分叉,所以他可以算比特币的一个克隆体,与比特币一样,Zcash(ZEC)的总量是2100万,采用PoW共识机制。
与比特币不同的是,为了防止矿霸的产生,ZEC的加密不是通过SHA256来做,而是Equihash算法,2.5分钟出一个区块,每个区块产生12.5枚ZEC,比特币每10分钟出一个区块,每个区块产生50枚BTC,均为四年减半;
同时,ZEC使用零知识证明来保护隐私。Zcash交易自动隐藏区块链上所有交易的发送者、接受者及数额信息,即交易存在但是具体是什么大家都看不到,只有那些拥有查看密钥的人才能看到交易的内容。用户拥有完全的控制权,他们可自行选择其他人提供查看密钥。

简而言之,对用户来说,Zcash的最大特点是采用了零知识证明来保护交易的隐私。大家都知道比特币的所有交易记录都是暴露在网上的,所有人都可以看到所有人的交易,而且在结合社会工程学等相关知识,比特币并不能保证在比特币网络中交易的人在现实生活中不被发现,但是Zcash可以,那么Zcash是怎么做到的呢?

答案就是zk-SNARKs

zk-SNARKs是“零知识简介非交互式知识证明”。

零知识证明,允许我(证明者)可以向别人(验证者)证明我的声明是真实的。在这个过程中不会泄露有关声明本身有效之外的任何信息。也就是说,有了zk-SNARKs,我可以在不告诉别人密钥的情况下,让别人相信我确实拥有这个密钥,但是又不泄漏密钥的信息。(话说CSW说他是中本聪,是否可以零知识证明呢)

Zcash如何使用zk-SNARKs

在Zcash,zk-SNARKs会首先将我想要证明的某个陈述转化为方程式,验证方程式中不会出现任何有关陈述的敏感信息,系统会根据网络的共识规则来确定交易是否有效,并返回交易有效性的结果。

哎呀妈呀,具体那些公式转化什么的可复杂了,等我看懂再说吧哈哈,据说零知识证明被数学家们称为“月球数学”,整个地球又有几人能够对零知识证明完全了解呢。Zcash最主要的也还是想要解决隐私问题,那如果有一天真能用在以太坊上就很不错了。

那么,如何证明某个匿名交易有效?

在比特币中,通过链接发送方地址,接收方地址以及公共区块链上的输入和输出来验证交易,而在Zcash,假如我要发送一个交易,那么,我需要以下构造证据来证明:

输入值相加即是某个隐蔽的交易的输出;
发送者证明他们拥有每个输入项的花费私钥,并因此可赋予他们消费的权利;
输入项的花费私钥以加密方式与整个交易的签名相连接,使得交易不能被不知道这些私钥的任意一方修改。

如何构建匿名UTXO?

比特币追踪未使用的交易输出(UTXO)来确定可花费的交易,Zcash中,等效的且隐蔽的UTXO被称为“承诺”,并且花费这笔承诺是需要揭示“无效符号”的。
Zcash节点会保留所有已经创建的承诺的列表,以及所有已经现实的“无效符号”。承诺和无效符号被存储为哈希值,以避免披露有关承诺的人和信息,包含“那些无效服务与哪些承诺相关”的信息。

对于我这个发送方创建的每一个新的隐蔽交易项,承诺中需要包括以下哈希值:
接受方的地址;
发送的金额;
此项纪录特有的数字“rho”和随机数。
即:承诺=HASH(收币人地址,金额,rho,r)

当花费隐蔽项时,我(发送方)需要使用我的花费密钥来发布一个无效符号,该符号来自尚未花费的现有承诺的私有编号rho的哈希,并提供零知识证明,证明他们被授权消费。此哈希值必须不再用于跟踪已花费交易的无效符号集合中,否则说明交易存在,此交易无效。

Zcash还使用一组证明和验证的密钥来创建和验证证明。这些密钥在公共参数创建过程中生成,并在Zcash网络中的所有参与者之间共享。对于每一个隐蔽的事物,发送方使用其证明密钥生成其输入有效的证明,矿工使用验证密钥检查证明者的计算。Zcash的证明生产方式的设计要求证明者预先做很多的工作,从而简化严重,因此主要的计算工作被放到了交易的创建者身上,所以,创建一个隐蔽的Zcash交易需要占用40秒,而严重交易只需要几毫秒的原因。

Zcash隐蔽交易的隐私安全性依赖于标准的、经过反复验证的密码术,哈希函数和流加密,但它是zk-SNARKs的补充,通过承诺和无效符号系统,允许发送者与节后着证明某个隐蔽交易是有效的,其他为加密货币提供隐私的方法,依赖于交易之间的联系模糊化,但Zcash的交易可以存储在完全加密的区块链上,允许交易各方在享受公共区块链的好处的同时,保护自己的隐私。

这个是我在网上查的文章纪录下。。之后有时间再补充成一篇文章吧

你可能感兴趣的:(Zcash-草稿)