• Zcash — 完全隐匿货币流向


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

    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使用「备注作废」的方法来解决。至于第二点,Zcash运用「零知识证明」的方法来验证,它的概念是:Alice不需要提供交易的数位签章给Miner,即可验证1 ZEC是属于Alice

    零知识证明

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

    先举一个常用来说明的例子:「阿里巴巴与四十大盗」。

    四十大盗抓住了阿里巴巴!
    但盗贼们不确定阿里巴巴知道打开宝藏洞穴石门的咒语?
    而阿里巴巴确实知道咒语,却又不想让四十大盗们得到。
    所以他们协议好,双方站定间隔一段距离,当盗贼举起右手,阿里巴巴就念咒语开门,当举起左手,就念咒语关门。
    如果失败,盗贼会把阿里巴巴杀死。

    经过一番的验证,盗贼们确定阿里巴巴会咒语以外,也没有让盗贼知道咒语

    这个故事中有几个元素:

    • Assertion: 阿里巴巴知道咒语
    • Challenge: 盗贼举手命令
    • Commitment: 开门/关门
    • Secret: 咒语

    对比到Zcash 的加密交易验证:

    • Assertion: Alice 拥有1 ZEC
    • Challenge: 请提出验证字符串π
    • Commitment: 验证字符串π
    • Secret: 数位签章(私钥)

    想要了解验证字符串π是什么,需要更深入研究零知识证明的相关理论,条件允许的话,我是希望再写一篇专文来说明。

  • 相关阅读:
    H5新特性---Web Worker---Web Stroage
    H5新特性---SVG--椭圆--直线--文本--滤镜(高斯滤镜--模糊)--地理定位
    H5新特性——--第三方绘图工具库 echarts(canvas)---SVG绘图
    H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作
    H5新特性-视频,音频-Flash-canvas绘图
    JQUERY-自定义插件-ajax-跨域访问
    JQUERY-插件
    JQUERY-事件-动画-类数组对象-添加自定义API
    JQUERY-修改-API-事件绑定
    jsp第五章
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13313340.html
Copyright © 2020-2023  润新知