https://github.com/zcoinofficial/zcoin/wiki/Roadmap 
 

zkSNARK

zkSNARK是zero-knowledge succint non-interactive arguments of knowledge的简称,全称里面每个单词都有特定的含义:

Zero knowledge:零知识证明,见前文。

Succinctness:证据信息较短,方便验证

Non-interactivity:几乎没有交互,证明者基本上只要提供一个字符串义工验证。对于区块链来说,这一点至关重要,意味着可以把该消息放在链上公开验证。

Arguments:证明过程是计算完好(computationally soundness)的,证明者无法在合理的时间内造出伪证(破解)。跟计算完好对应的是理论完好(perfect soundness),密码学里面一般都是要求计算完好。

of knowledge:对于一个证明者来说,在不知晓特定证明 (witness) 的前提下,构建一个有效的零知识证据是不可能的。

 
 
 
Sigma Protocol
http://8btc.com/thread-53941-1-1.html
我们当前实施的零币协议版本使用了RSA2048参数作为强制信任的初始化参数设置。这些参数在互联网安全的各个方面使用广泛,比如HTTPS和SSH。按照当前的科学计算能力,这些参数还能确保在几十年内是安全的。另外方面,我们当前正在努力开发实施西格玛协议(Sigma Protocol),有望能借此完全移除零知识协议证明初始化阶段强制的第三方信任设置。
另外,零币还有一个能减缓最坏情况发生的妥协性设置就是零币的全网货币流通量和个体钱包的余额是可供查询的。如果在代码层或者实施层出现了问题导致发生了双花或者硬币伪造,就可以在早期很容易地被探测到,避免了通向超级通胀。在今年的早些时候零币就遭遇了黑客攻击,但通过检测到大量铸毁硬币信号就发现了这个漏洞并及时地修补了。
零币同时还是加密货币界第一个实现梅克尔树(MTP)算法的加密货币。MTP算法的开发者正是Equihsah算法的提出者。不管怎么说,MTP算法的区块验证速度是非常快的,一旦你能够将其集成入其他的耗内存工作量证明算法,那么它将具有革命整个挖矿算法领域的潜力!现在MTP算法已经在测试网络上成功运行。
为什么要在以太坊上嵌入零币?
零币的核心开发团队正在着手于探讨如何在以太坊区块链上实施零币协议的研究和开发工作。我们相信这一点跟以太坊项目的多解决方案理念是相一致的,特别是这个技术是如此的前卫并高度依赖于密码学原理。
也许有人会说能完全理解zk-SNARKs协议的仅仅是有很小一部分的密码学学者。同时,零币协议背后的密码学哲学原理已经深入人心很长一段时间了。在过去这些年里面,零币协议论文已经成为了学术引用最多的密码学文章,共计多达200余次。此外,我们认为以太坊也应该要有一个后备选项,来确保以太坊网络的基本隐私,不用遭受如同Zcash被SNARK公共参数所连累的那样。如同上面提及,当前零币社区的最新研究进展甚至可以为使用零币协议的加密货币完全移除初始化阶段的三方信任设置。
ZoE,HAWK,现在是零币?
当前已经有好几个项目尝试在以太坊区块链上实现强匿名交易,其中最著名的就是Zcash-on-ethereum(ZoE)和Hawk。零币开发团队正在寻求实现基于智能合约的零币协议赎回验证,目的在于创建一个去中心化的混合器dapp。
Zerocoin交易打断了各个交易之间的直接联系,通过成千上万次似是而非的否认使得以太交易变得模糊不清,这相比于其他少于10次交易直接型匿名机制有相当大的优势。
跟币链接(Coinjoin)和它的变体不一样的是,我们是不需要中心化服务器去进行混币处理的,也不需要你相信任何的第三方,也不需要其他的用户为混币处理提供必要的转币交易量。在不久的将来还会开发出一些其他难以查找的代币特性,支持匿名投票、拍卖和ICO。
作为密码屏蔽的Zerocoin赎回计算是根据累加器容量大小进行调整的,这可以降得足够低并寻求得到一个可以接受的手续费花费。然而相比于Zcash,零币的交易证明数据块相对的要大一些(25kb),提议中首次实现的混币器也仅仅接受固定面额的手续费。
在进行初步的计算并跟Vitalik Buterin沟通后,我们相信随着随后的重大发布完成,我们计划的实施是相当可行的。因为在以太虚拟机上运行这些操作的成本是很高的,我们也在寻求实施预编译智能合约进行替代。
基于Zerocoin混币器的智能合约特性提纲:
智能合约将允许用户通过在RSA累加器中添加一个由智能合约维护的加密委托(序列号)来完成存入固定额度的ETH。
在向智能合约内存入ETH后,用户将会收到一个包装过的ERC20兼容代币及其密码序列号。
为了在不需要暴露身份的前提下将ETH提现,它将使用零知识证明机制去证明我们知道智能合约内部的委托。
在你赎回ETH完成后,用于赎回的代币将被销毁。相关序列号将会被标记为已使用状态,这样用户就无法将同一个赎回序列号进行一次以上的使用。
如果你对于帮助零币社区开发实施混币器有兴趣的话,我们当前正在寻求更多的开发者加入我们的团队。当然也包括在寻求能够使用Solidity语言、Serpent语言或Viper语言写出以太虚拟机的天才。相关的奖励将根据开发能力和开发经验的具体情况而定。我们也会在前期给予提供项目开始的基本费用。

zkSNARK 零知识验证的更多相关文章

  1. go for cryptocurrency

    https://blog.conformal.com/category/btcd/ https://github.com/btcsuite/btcd/tree/master/docs https:// ...

  2. 比特股-去中心化交易所, STEEM - 去中心化社区, EOS - 下一代智能合约

    libsnark 是实现了 zkSNARK 模式的 C++ 库.zkSNARK 是一个证明/验证计算完整性的加密方法,也即零知识验证的算法, https://github.com/scipr-lab/ ...

  3. 详细讲解:零知识证明 之 zk-SNARK 开篇

    作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...

  4. 详细讲解:零知识证明 之 ZCash 完整的匿名交易流程

    作者:林冠宏 / 指尖下的幽灵 博客:http://www.cnblogs.com/linguanh/ 掘金:https://juejin.im/user/587f0dfe128fe100570ce2 ...

  5. 一个数独引发的惨案:零知识证明(Zero-Knowledge Proof)

    导言:原文的作者是著名的Ghost和Spectre 这两个协议的创始团队的领队Aviv Zohar.原文作者说他的这篇原文又是引用了以下这两篇学术论文: How to Explain Zero Kno ...

  6. 【探索】无形验证码 —— PoW 算力验证

    先来思考一个问题:如何写一个能消耗对方时间的程序? 消耗时间还不简单,休眠一下就可以了: Sleep(1000) 这确实消耗了时间,但并没有消耗 CPU.如果对方开了变速齿轮,这瞬间就能完成. 不过要 ...

  7. C# 中参数验证方式的演变

    一般在写方法的时候,第一步就是进行参数验证,这也体现了编码者的细心和缜密,但是在很多时候这个过程很枯燥和乏味,比如在拿到一个API设计文档的时候,通常会规定类型参数是否允许为空,如果是字符可能有长度限 ...

  8. Yii1.1的验证规则

    在Yii1.1的数据验证是由CValidator完成,在CValidator中提供了各种基本的验证规则 <?php public static $builtInValidators=array( ...

  9. 【WCF】使用“用户名/密码”验证的合理方法

    我不敢说俺的方法是最佳方案,反正这世界上很多东西都是变动的,正像老子所说的——“反(返)者,道之动”.以往看到有些文章中说,为每个客户端安装证书嫌麻烦,就直接采用把用户名和密码塞在SOAP头中发送,然 ...

随机推荐

  1. Java的I/O操作

    一.概述 Java的IO支持通过java.io包下的类和接口来完成,在java.io包下主要有包括输入.输出两种IO流,每种输入输出流又可分为字节流和字符流两大类.从JDK1.4以后,Java在jav ...

  2. 关于android性能,内存优化

    转:http://www.starming.com/index.php?action=plugin&v=wave&tpl=union&ac=viewgrouppost& ...

  3. html5里面的延迟加载属性

    html5中给script标签引入了 async 和 defer 属性. 原理:带有async属性的script标签,会在浏览器解析时立即下载脚本同时不阻塞后续的document渲染和script加载 ...

  4. [原]sublime Text2

    sublime Text2 升级到 2.0.2 build 2221 64位 的破破解 sublime Text2 download website 链接: http://pan.baidu.com/ ...

  5. This dependency was not found: * !!vue-style-loader!css-loader?……解决方案

    1.新建一个vue项目时,需要重新安装stylus 报错 This dependency was not found: * !!vue-style-loader!css-loader?{"m ...

  6. Eui中eui.Image的source和texture属性赋值导致的获取高宽为0问题

    引擎5.2.5版本 一个eui.Image,给source和texture赋值,获取高宽会不同 = = ! let img:eui.Image = new eui.Image(); img.sourc ...

  7. MongoDB安装、CURD操作、使用场景分析总结(1)

    NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 ...

  8. dhroid - Perference

    SharedPreferences 是我们开发android使用很多的工具通常我们是这样使用的 SharedPreferences share=getSharedPreferences("n ...

  9. Git 使用篇一:初步使用GitHub,下载安装git,并上传项目

    首先在MAC上怎么操作. 在gitHub创立一个账户,在创立一个项目,这就不用我说了对吧. 创建完之后是这样的: 接下来,我们打开https://brew.sh 这是下载homebrew的网站,hom ...

  10. c++中system("pause")的作用和含义

    简单来说就是暂停的意思,一般在LINUX编程时会用到,等待接收信号,才会重新运行 . 在进行C/C++编程的时候,在运行程序查看输出效果时,会出现窗口闪一下就关闭的情况. 在C语言中一般通过添加get ...