相较于比特币,Zcash <https://z.cash/>
 (ZEC)更注重交易资料的隐私。在Zcash的交易网路上,所有的传送人、接收人、交易量的资料都是被加密的,经由一个叫「零知识证明(Zero-knowledge
Proof)」的技术来做交易验证。我看了很多文章后(其中也有误导的),才慢慢了解零知识证明的原理,本文先以改版「阿里巴巴与四十大盗」的故事简单说明其箇中奥妙,而后更多深入的研究,则待续。



http://archives.lib.ntnu.edu.tw/ <http://archives.lib.ntnu.edu.tw/>

比特币的公开交易内容

比特币是一种加密货币(Cryptocurrency),它利用密码学中的杂凑(Hash)、公开金钥密码(Public-Key cryptography)
和数位签章(Digital signature) 等技术,把钱包地址加密,把货币的使用权加密,可是却没有加密交易资料的内容:付钱的地址、收钱的地址和交易金额。

比特币设计将交易记录公开,我认为技术上的理由是为了让挖矿者(Miner) 快速验证交易中的来源款项是不是合法的UTXO 和付款人。
钱包地址是一串字码,我不知道这个钱包属于谁,就算知道这个钱包拥有多少比特币,也没有侵犯隐私的问题。

这个说法对个人钱包也许行得通,但对一家商店可能就会伤及商业隐私。商店的进出货如果都用比特币来做交易,其实很容易用软体在区块链上找出这家商店的钱包地址的所有资料,算出这家商店的营业所得。在这种需要隐私的应用情境下,比特币的公开交易纪录显得不适用。

Zcash就是解决公开区块链上的资料隐私问题。

Zcash的加密交易内容

Alice 和Bob 使用Zcash 钱包做交易:Alice 转1 ZEC 给Bob。Alice 将交易内容加密后送到Miner
做验证,但问题来了,当Miner 收到这笔交易,因为不能解密交易内容,导致无法验证交易是否合法,进一步定义是:

* 无法验证1 ZEC 是可花用的(ie unspending)
* 无法验证1 ZEC 是属于Alice
关于第一点,Zcash使用「备注作废」的方法来解决 <https://www.iread.one/2142905.html>
。至于第二点,Zcash运用「零知识证明」的方法来验证,它的概念是:Alice不需要提供交易的数位签章给Miner,即可验证1 ZEC是属于Alice。

零知识证明

「零知识证明」讲的是:证明者(prover) 要说服验证者(verifier) 某些事实是真的时候,不需要透露事实里的资讯,即可证明事实是真的。

先举一个常用来说明的例子:「阿里巴巴与四十大盗」。
四十大盗抓住了阿里巴巴! 但盗贼们不确定阿里巴巴知道打开宝藏洞穴石门的咒语? 而阿里巴巴确实知道咒语,却又不想让四十大盗们得到。
所以他们协议好,双方站定间隔一段距离,当盗贼举起右手,阿里巴巴就念咒语开门,当举起左手,就念咒语关门。 如果失败,盗贼会把阿里巴巴杀死。
经过一番的验证,盗贼们确定阿里巴巴会咒语以外,也没有让盗贼知道咒语。

这个故事中有几个元素:

* Assertion: 阿里巴巴知道咒语
* Challenge: 盗贼举手命令
* Commitment: 开门/关门
* Secret: 咒语
对比到Zcash 的加密交易验证:

* Assertion: Alice 拥有1 ZEC
* Challenge: 请提出验证字符串π
* Commitment: 验证字符串π
* Secret: 数位签章(私钥)
想要了解验证字符串π是什么,需要更深入研究零知识证明的相关理论 <https://z.cash/technology/zksnarks.html>
,条件允许的话,我是希望再写一篇专文来说明。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:637538335
关注微信