热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

众目睽睽能隐身的区块链黑科技,zkSNARK背后原理解析

本文由尘埃科技整理编辑发布,

本文由尘埃科技整理编辑发布,请拖动至文章底部查看更多精彩内容

编辑|RR

zk-SNARK 最近多次出现在了我们的视线中,很多人还没搞清楚 zk-SNARK 到底是什么,到底有什么原理,能解决什么问题,今天我们就跟大家全面解读 zk-SNARK 相关的一切。


尽管加密货币交易与任何人的身份无关,但由于被公开记录在区块链上,它们通常是可追踪的。如果你想避免这种情况,你需要一种被称为隐私币的特定类型的加密货币。隐私币用来保持交易匿名的方法之一是一种叫做 zk-SNARK 的技术。



对于那些正在考虑将隐私币用于个人用途或作为加密货币投资的人来说,了解其背后的技术非常重要。虽然 zk-SNARK 有些复杂,但我们将在本指南中详细介绍它的作用。

 

zk-SNARK 是什么?


zk-SNARK 是一种零知识证明协议,在这种协议中,人们可以证明自己拥有某些信息,而无需披露这些信息,也不需要各方之间进行任何交互来证明和验证这些信息。

 

术语“zk-SNARK”是“Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”的缩写。这个名字的每一部分都指代了 zk-SNARK 的一个特征,因此单独查看每一个组成部分会有所帮助:

 

  • Zero-Knowledge:证明方可以向验证方表明他们拥有某项信息,而不需要提供信息本身。

  • Succinct:由于证明的长度最多只有几百个字节,所以证明可以在几毫秒内得到验证。

  • Non-Interactive:证明包括从证明者到验证者的单一信息。

  • Argument:Argument 是这些证明的术语,因为它们不完全符合证明的传统定义,但有效地服务于相同的目的。

  • Knowledge:指证明者所拥有的信息。

 

在加密货币中,zk-SNARK 是一种在区块链上对交易进行私有和完全加密的同时,仍然使用网络的共识规则进行验证的方式。zk-SNARK 可以表明发送者拥有他们想要转移的资金数额,而不需要公开该信息。



zk-SNARK 解释

 

zk-SNARK 来自零知识证明的概念,该概念是 Shafi Goldwasser、Silvio Micali 和 Charles Rackoff 在 1985 年的一篇论文中首次提出的。正如前面所解释的,零知识证明是一种方法,它允许一方只表明他们拥有一条信息,而不透露信息本身或任何其他信息。

 

早期的零知识协议要求证明方和验证方来回发送消息。Nir Bitansky、Ran Canetti、Alessandro Chiesa 和 Eran Tromer 在 2012 年的一篇论文中创造了术语“zk-SNARK”来描述一种新的零知识协议。与之前的方法不同,它不需要证明方和验证方在单一信息之外进行交互。

 

合著者 Chiesa 后来帮助创立了 Zcash ,这是一种 2016 年推出的隐私币。它使用 zk-SNARK 技术来支持私人交易。


zk-SNARK 如何工作

 

大多数类型的加密货币通过网络检查交易是否满足某些条件来进行验证。具体来说,其条件是发送方拥有可用的资金,并且他们提供了正确的私钥来表明资金属于他们。

 

zk-SNARK 允许交易的发送方在不透露任何涉及的地址或金额的情况下证明这一切。为了做到这一点,区块链网络在 zk-SNARK 中编码了一些共识规则。

 

在交易过程中,zk-SNARK 将需要证明的信息转化为方程。这些方程可以在不透露信息本身的情况下计算和求解。

 

zk-SNARK 的优缺点

 

zk-SNARK 的主要好处是其提供的隐私和效率。它们屏蔽了敏感信息,只需几毫秒即可验证,而且不需要相关各方之间的长期交互。所需要的只是从证明者到验证者的一条消息。

 

尽管 zk-SNARK 没有任何明显的缺点,但如果有人拥有用于建立协议的私钥,他们就能够创建虚假证明并伪造资金。使用 zk-SNARK 的隐私币必须采取措施,确保没有任何一方能够获得该私钥。

 


zk-SNARK vs. zk-Rollup


zk-SNARK 远非加密货币使用的唯一类型的零知识证明。另一种常见的技术是 zk-Rollup,这是一种帮助以太坊更有效地处理交易的扩展解决方案。

 

Rollup 将一大群交易捆绑在一起,并在链下验证它们,这意味着所有的计算都在主以太坊区块链之外处理。然后它们被打包成一个单独的交易,发送到以太坊的执行层。

 

有不同类型的 Rollup 可供选择。例如,Optimistic rollup 假设交易有效,直到它们被证明为错误。另一方面,zk- rollup 可以即时验证交易并生成加密的有效性证明。证明可以使用 zk-SNARK 或另一种类型的零知识证明技术 zk-STARK 生成。

 

zk-SNARK 用例

 

zk-SNARK 最著名的用例是屏蔽加密货币交易。Zcash 是 zk-SNARK 的第一个广泛应用。该隐私币允许用户在私有地址和透明地址之间进行选择。当用户选择私有地址时,zk-SNARK 会屏蔽交易数据。

 

其他区块链项目也在使用 zk-SNARK。以太坊在 2017 年开始致力于整合 Zcash 和 zk-SNARK。同年,Zcash 与摩根大通合作,用 zk-STARK 构建了一个基于区块链的支付系统。

 

虽然 zk-SNARK 目前被用于私有化金融交易,但这并不是它们的唯一应用。在未来,我们可以看到它们被用来保护人们在网上活动时的数据。

 

如何应用 zk-SNARK

 

zk-SNARK 通过将需要证明的信息转化为数学方程来进行应用。交易的发送方会构建一个证明来证明:

 

  • 传输的输入和输出值匹配。

  • 发送方拥有输入的私有支出密钥。

  • 这些私钥以加密方式与交易的数字签名进行链接,以确保它不能被没有私钥的人修改。

 

zk-SNARK 是一项有用的技术,结合了这项技术的加密货币已经成为了热门投资。虽然隐私币有明确的效用,但请记住,它们并不稳定,其提供的隐私水平可能会导致未来的监管问题。如果你决定投资某种隐私币,请采取保守的方法,避免投入超出你承受能力的资金。

信息来源自 The Motley Fool,略有修改,作者Lyle Daly 

尘埃科技


更多 DAO、Web3、NFT、Metaverse

专业研究请关注尘埃科技旗下「老雅痞」

Web3 知识点、干货类内容

请关注尘埃科技旗下「Allrecode 重构」


为 Web3 从业者建立内部链接,了解「重构研究院」

“商务合作”、“内容转载”请直接在后台回复关键字


推荐阅读
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 本文介绍了Java集合库的使用方法,包括如何方便地重复使用集合以及下溯造型的应用。通过使用集合库,可以方便地取用各种集合,并将其插入到自己的程序中。为了使集合能够重复使用,Java提供了一种通用类型,即Object类型。通过添加指向集合的对象句柄,可以实现对集合的重复使用。然而,由于集合只能容纳Object类型,当向集合中添加对象句柄时,会丢失其身份或标识信息。为了恢复其本来面貌,可以使用下溯造型。本文还介绍了Java 1.2集合库的特点和优势。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
author-avatar
love灬贪恋猫
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有