“我期待大约有15-20人可以关注zk-snarks协议,没想到会这么多。” zk-SNARKs 基于”零知识证明”(zero knowledge proof,即ZKP)。 这并不意外,因为以太坊研发会议的第三天,选择了zk-snarks部分作为会议内容。并且由于以太坊在匿名方面的巨大进步,软件更新使得解决拜占庭问题成为可能。 克服困难 Eberhardt创建了zk-snarks编辑程序,可以让开发者很容易地创建zk-snarks嵌入的智能合约。这是具有很大发展潜力的,因为它可以让类似开放式投票这样的项目达到很好的效果。 但是zk-snarks仍然是相对成本较高的方案,现在还没办法超过其他的扩容方案,除非是成本降低,或者技术本身变得更加轻便。
二、zk-SNARKs 的核心思想:用 “魔法证明” 守护秘密 zk-SNARKs 的神奇之处,在于它实现了零知识证明。 在技术层面,zk-SNARKs 的实现主要分为三个阶段: 1. 参数生成(Setup) 这一步就像铸造 “魔法模具”。 三、zk-SNARKs 的 Java 实现:从原理到代码 以下是一个简化版的 zk-SNARKs 示例代码(注:实际应用中涉及复杂的密码学运算和椭圆曲线加密,此处仅演示核心逻辑流程): import java.math.BigInteger 可扩展性:在大规模数据和高并发场景下,如何保证 zk-SNARKs 的高效性和实用性,仍是亟待解决的问题。 思考延伸: zk-SNARKs 的出现,让我们看到了隐私保护与信息验证的新可能。 随着区块链、隐私计算等技术的不断发展,zk-SNARKs 及其衍生技术将如何重塑未来的数字世界?这值得我们持续关注和探索。
从零知识到 zk-SNARKs 在区块链的世界里,正常的零知识证明有一个问题:连续问很多遍,等待答案,需要来回几次交易。这根本就不是很有效率。 有了 zk-SNARKs,或者非交互式零知识证明,我们可以在一轮中完成证明。基本上,问题是根据随机预言机模型[6]预先确定的。然后验证者可以在一次交易中发送所有答案。 zk-SNARKs 的概念是一个非常有趣的话题。Vitalik 发布了一个适合初学者的介绍链接[7]。好吧,尽可能的方便初学者。如果你想真正深入了解它背后的数学,这将是不容易的。 要正确理解这一点,请阅读 Vitalik 的文章:https://vitalik.ca/general/2021/01/26/snarks.html。 从理论到实践:Tornado.cash ? tornado.cash 使用 zk-SNARKs,tornado.cash 允许你将固定金额的 ETH、DAI、cDAI、USDC、cUSDC 或 USDT 存入合约。
4 zk-SNARKs原理 作为零知识证明领域最知名的一类协议,zk-SNARKs 的理论研究和应用也最为广泛。推荐一些介绍 zk-SNARKs 的资料。 原文链接: What are zk-SNARKs? [3] zk-SNARKs 协议涉及的技术构件很多,也较为复杂,深入学习这部分确实需要下很多功夫。 ’s Gaze,文章观点认为 Marlin 是最快的 SNARKs 方案,并将其与其它的方案进行了比较。 报告中介绍了比特币的隐私问题,零知识证明技术,zk-SNARKs,以及多个实现漏洞。报告干货满满。
可以简单地将 zk-snarks 视为产生零知识证明的有效(或简洁)方法:可以使证明信息足够短到可以发布到区块链,并且可以被任何有权验证它们的人( 我们称为验证者)以后都能读取。 一些例子 众筹 如果众筹仅针对 KYC 或授权用户,使用 zk-snarks,你可以证明自己是被授权可参加众筹的人,而无需透露自己是谁或花费了多少。 Covid-19 新冠病毒测试 您可以使用 zk-snarks 来证明您最近对 Covid-19 的测试是阴性,而不用透露测试的确切日期或测试的医院:仅需要在官方认可的时间窗口内有效即可。 snarkjs 是 zk-snarks 协议的独立实现-完全用 JavaScript 编写。 这些库是设计好能协同工作的:在 circom 中构建的任何电路都可以在 snarkjs 中使用。 zk-snarks 不能直接应用于任何计算问题。在使用之前,首先需要将问题转换为正确的形式。第一步就是将其转换为代数电路。
而现代化的zk-snarks建设是在5年前左右才出现的。 2012年的一篇论文中,Alessandro Chiesa和他的共著者创造了“snark”和“zk-snark”这两个术语,展示了经典建设的各种替代方案,此后,对snarks的研究蓬勃发展,每年都会创造出新的方法和技术 在供应链环境中,zk-snarks能够确认每一个实物交易,这样就可以保持有关源头的记录,任何交易者都不能访问与其特定交易无关的信息。 很明显,隐私是许多供应链问题的一个关键部分,缺乏解决方案一直阻碍着所有的行业的发展,但Chronic实施的zk-snarks技术成功解决了这个隐私问题,并且当被用于跟踪处方药时,这种方法能够挽救更多人的生命
ZK-SNARKs——一个强大的中心化交易模型根据 Buterin 的说法,确保责任证明和维护用户隐私的最强大方法是 ZN-SNARKs 技术。它代表零知识简洁非交互式知识论证。 ZN- SNARKs是一种让交易在区块链上保持私密和完全加密的方式,同时仍然使用网络的共识规则进行验证。这种方法可以表明发送方有他们想要转移的资金数额,而无需公开该信息。
Daian、Everett Hildenbrandt、Yoichi Hirai、Loi Luu, 主持人:Reto Trinkler https://youtu.be/DrDIcirrhWM zk-SNARKs Jay Graber https://z.cash/technology/zksnarks.html Zk-SNARKs背后的技术(系列):掌握zk-SNARKs(全称 Zero-Knowledge Vitalik Buterin https://vitalik.ca/general/2017/11/09/starks_part_1.html 可扩展、透明、后量子加密计算完整性:用透明的zk-SNARKs blog.zeppelin.solutions/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05 用实例带你入门zk-SNARKs :从实践的角度概述zk-SNARKs Christian Lundkvist https://media.consensys.net/introduction-to-zksnarks-with-examples
第四大核心技术:ZK-SNARKs 零知识证明技术。针对企业 “验证怕泄露隐私” 的顾虑,ZK-SNARKs 实现了 “验证不泄露商业机密” 的目标。
它通过实现称为ZK-SNARKS的零知识证明协议来实现此隐私功能。 通常在区块链上,所有交易都是公开可用的,任何人都可以查看每个单独的交易,包括有关发送方,接收方和转账金额的信息。 ZK-SNARKS的工作原理是隐藏发送方和接收方的身份以及区块链上的交易价值。这些私人交易称为屏蔽交易。 有关Zcash的更多信息,我们建议阅读“Zcash 的未来:它能否赢得隐私币的战斗? 然而,还有其他人,如比特币开发商Peter Todd,他们关注ZK-SNARKS的隐私级别,因为它是“实验性的”。
(1)安全防护类算法 对比Aurora算法、zk-SNARKs算法和国密算法,虽然都属于安全防护类算法,但其针对不同的区块链架构层应用,在区块链Aurora算法对应于区块链数据层的数据节点安全防护,防止恶意节点攻击 ,保证交易上链安全;zk-SNARKs算法对应的是区块链的合约层安全防护,可以解决分布式电力交易中买卖双方的合约制定的安全性问题;国密算法对应于区块链的加密层,相应的SM2、SM3、SM4、SM9可替代目前主流的国际加密算法 zk-SNARKs算法可在保证在对尽量少的数据交换同时对数据的安全可靠性进行检验,解决智能合约用于电力双方交易时存在的身份真实性问题。
正如维基百科解释的那样,“交易可以是'透明的',与比特币交易类似,在这种情况下,它们由t-addr控制,或者可以是一种称为zk-SNARKs的零知识证明; 然后交易被称为“屏蔽”并由z-addr控制。 “ zk-Snarks:零知识简洁非交互式知识论是允许矿工在不知道谁发送或接收到硬币的情况下验证交易的技术。 虽然Zerocoin家族最常见的是zk-Snarks,但它们也正在用以太坊进行测试。
依托 ZK-SNARKs 零知识证明技术,用户跨平台协作时,不用公开完整的交易历史,只需生成 “信誉评分≥预设阈值” 的证明,就能通过核验。 而 OmniPact 打造的 SBT 声誉系统,凭借ZK-SNARKs 零知识证明技术,完美破解了这个两难困境,让 “信誉验证不泄露隐私,跨平台使用无需授权” 成为现实。 借助 ZK-SNARKs 零知识证明技术,用户可以生成一个 “证明”,这个证明只能验证 “我的信誉评分≥800 分” 或 “我具备跨境贸易优质供应商标签”,但不会泄露任何具体的交易历史。
引入欺诈证明或 ZK-SNARKs,从而让用户直接 (廉价地) 检查区块的有效性。 ZK-SNARKs 可以直接以密码学的方式证明区块的有效性;欺诈证明 (fraud proofs) 是一种更简单的方案,即如果某个区块中包含了一个无效的 bucket,那么任何人都可以广播一个针对该 bucket 区块可用性由底层链保护,且区块有效性由 Rollup 逻辑得到保证:如果是一个 ZK-Rollup,则是由 SNARKs 确保安全性;而如果是 Optimistic Rollup,则只要存在一个运行欺诈证明器节点的诚实参与者
本文涉及的专业知识有零知识证明,zk-SNARKs和 BulletProofs(防弹证明),佩德森承诺等。 3,零知识证明的3种典型技术和应用 zk-SNARKs, Zk-STARKs和 BulletProofs(防弹证明)是零知识证明用于区块链隐私技术的3种主要技术。 (2) 证明速度对比:Zk-STARKs > zk-SNARKs > Bulletproofs (3) 文件大小:zk-SNARKs < Bulletproofs <Zk-STARKs ZERO项目CTO 算法对比 简单一句话:Zk-STARKs 太大,bulletproofs太慢,优点是不用预装,zk-SNARKs最优。 zk-SNARKs只适合解决QAP问题(Quadratic Arithmetic Programs),通俗地讲,就是问题中得含有多项式,为什么得含有多项式我们后面再说。
4.2.2 零知识证明的类型与选择 在2025年的区块链生态系统中,有几种主流的零知识证明方案适用于访问控制场景: zk-SNARKs(Zero-Knowledge Succinct Non-Interactive 4.2.3 ZKAccessControl合约实现分析 下面我们分析一个基于zk-SNARKs的零知识证明访问控制合约实现: // 零知识证明访问控制合约 contract ZKAccessControl onlyOwner() { require(msg.sender == _owner, "Not authorized"); _; } } 这个合约实现了基于zk-SNARKs 4.2.8 零知识证明访问控制的安全考量 虽然零知识证明提供了强大的隐私保护,但在实现过程中仍需要注意以下安全考量: 可信设置问题:对于zk-SNARKs等需要可信设置的方案,需要确保可信设置过程的安全性和透明度
Zk-SNARKs技术确实面临一些限制。在运用时,我们需要在证明的大小、验证过程的复杂性以及生成证明所需的计算量之间做出权衡。 尤其是当涉及到包含大量二进制操作的非标准通用计算时(这正是智能合约的魅力所在),这些计算往往很难与 SNARKs 的模型相契合。 除了基本成本问题,SNARKs 并不能有效地减少对去中心化和冗余的需求,这进而引发了额外的成本上升。 现实世界中不乏中心化引发垄断的实例,基于 SNARKs 的交易所框架便是其中之一。该框架虽名义上服务于去中心化交易,但实质上却呈现出中心化的特征。 目前,尚未有确凿证据表明基于 SNARKs 的信任消除计算策略能够在成本上与多方加密经济平台相抗衡。事实上,所有已提出的基于 SNARKs 的解决方案都高度依赖于加密经济系统来构建框架并解决相关问题。
基于zk-SNARKs技术,用户无需暴露个人信息即可完成KYC,交易数据通过隐私分层处理,仅用户可解密。“行为信用分”则根据链上历史动态评估用户可信度,为VIP服务提供依据,既满足监管又保障隐私。
相信很多人都听过 ZK-SNARKS,一个通用而简洁的零知识证明技术,从可验证计算到需要隐私保护的加密货币,它可以被应用于各类场景。 不过,可能你还不知道现在 ZK-SNARKs 有了一个新兄弟:ZK-STARKs. 这里的 T 表示 “transparent”,“透明的”,ZK-STARKs 解决了 ZK-SNARKs 的一个主要的缺点,即 ZK-SNARKs 依赖于“可信启动(trusted setup)”。
SNARKs 是 succinct non-interactive arguments of knowledge 的缩写。 SNARKs 各个部分的的意义如下: Succinct:比起真正需要计算的长度来说,我们发送的信息大小是很小的。 Non-interactive:没有或者只有很少很少的交互。 此外,SNARKs 还常常拥有叫做『公共验证者』的属性,它的意思是在没有再次交互的情况下任何人都可以验证,这对于区块链来说是至关重要的。 Arguments:验证者只对计算能力有限的证明者有效。 最主要的是,在这个验证过程中,既不需要 witness 字符串的大小,又不需要计算工作量来验证 QSP(没有 SNARKs)。 这就意味着 SNARKs 的校验是个很复杂的问题,而简单的问题往往都是一样的。造成这个结果的主要原因则是,因为我们只在一个单独的点上面检验了多项式的一致性,而不是全部的点。