zkSNARK 零知识验证

时间:2022-09-23 12:36:14
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语言写出以太虚拟机的天才。相关的奖励将根据开发能力和开发经验的具体情况而定。我们也会在前期给予提供项目开始的基本费用。