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. 服务器搭建--Linux安装rabbitmq

    安装rabbitmq需要先安装erlang:安装erlang参考https://blog.csdn.net/ztx114/article/details/79912570 1.下载rabbitmq-s ...

  2. C# 压缩 SharpZipLib

    zip压缩与解压缩: 官方网站:http://icsharpcode.github.io/SharpZipLib/ 官网下载的资源并不是能够直接运行的,感觉是这个dll的编译,开源的 参考文档:htt ...

  3. RH318之域控服务器

    Windows2012域控服务器 一.安装域服务及DNS 1.配置静态IP 2.点击左下角 3.进入--->服务器管理器 4.点击角色和功能 勾选Active Directory域服务与DNS服 ...

  4. java框架---->commonmark的使用(一)

    commonmark-java是一个Markdown 解析器,一个基于CommonMark规范解析和渲染Markdown文本的Java库.偶尔要回头看看,否则永远都在追寻,而不知道自己失去了什么. c ...

  5. 改变vux样式

    场景:修改 x-header 颜色 解决: 在创建文件路径如下 src/assets/less/theme.less ; 在build/webpack.base.conf.js下添加 这两行即可

  6. Robotium源码解读-native控件/webview元素的获取和操作

    目前比较有名的Uitest框架有Uiautomator/Robotium/Appium,由于一直对webview元素的获取和操作比较好奇,另外Robotium代码量也不是很大,因此打算学习一下. 一. ...

  7. jumpserver的安装

    原文地址:http://docs.jumpserver.org/zh/docs/step_by_step.html 为了保证服务器安全,加个堡垒机,所有ssh连接都通过堡垒机来完成,堡垒机也需要有身份 ...

  8. Laya 图集动画

    参考: 图集动画运用 一.准备素材 从爱给网找到几个素材 二.使用Laya的图集工具 菜单栏选择工具->图集打包工具,然后选择序列图所在的文件夹 生成了个.rec...说好的.atlas呢... ...

  9. 深入浅出WPF之Binding的使用(一)

    在WPF中Binding可以比作数据的桥梁,桥梁的两端分别是Binding的源(Source)和目标(Target).一般情况下,Binding源是逻辑层对象,Binding目标是UI层的控件对象:这 ...

  10. Spark2 Linear Regression线性回归

    回归正则化方法(Lasso,Ridge和ElasticNet)在高维和数据集变量之间多重共线性情况下运行良好. 数学上,ElasticNet被定义为L1和L2正则化项的凸组合: 通过适当设置α,Ela ...