金色前哨 | 零知识前沿:关于SNARK、STARK和未来应用
来源:Vaish Puri @TheTieLabs
“我只知道一件事,那就是我一无所知”——苏格拉底
最近围绕L2扩容解决方案有很多明显的热情,这是理所当然的。随着Optimism发布治理代币、对 ETH 主网降低gas费用的需求,以及在背靠背的黑客马拉松中产生的一连串新想法,可以肯定地说,L2在2022正如火如荼地进行。
在今天文章中,我将剖析有史以来最强大但经常被误解的加密工具之一:零知识证明。此外,我将重点介绍未来实施的用例和建议,并展示为什么零知识证明是加密未来的关键。
为什么零知识证明很重要
简单地说,零知识证明是证明者在不实际透露任何信息的情况下说服验证者某事是真的一种方式。让我们用一个类比来说明这一点:假设我们有两个人,Alice和Bob。Alice有一副密封的 52张扑克牌。Alice偷偷拿了一张红牌,想向Bob证明她有一张红牌,但实际上并没有出示红牌。为了做到这一点,Alice需要将所有的黑牌从牌堆中分离出来,然后将它们展示给Bob。Bob计算所有26张黑牌,验证它们的存在,并确定Alice拥有的卡牌必然是红色的。因此,Alice能够向Bob证明她有红牌,而无需实际出示。这个比喻非常简化并没有描绘全貌,但技术背后的核心理念保持不变。
零知识证明对于这十年甚至几千年来说并不新鲜。事实上,这个想法是在1980年代由抽象数学研究人员首次提出的。该解决方案旨在解决当时与证明者和验证者之间的理论系统相关的问题——交互式证明。
但是如果验证者被证明是恶意的怎么办?除了验证陈述的真实性之外,Prover还透露了多少额外信息?让我们看看中心化服务器上密码的哈希是如何存储的。传统上,在与服务器交互时,服务器会得到明文密码。这是进行“身份证明”的一种糟糕的方式,因此研究人员转向了一种系统,该系统可以在不泄露任何无关信息的情况下证明声明。
更具体地说,假设我们有一些函数C,有两个输入C(x,y)。令x为公开输入,y为秘密见证,让函数的输出为真或假。给定一个特定的公共输入x,证明者必须证明他们知道一个秘密见证y使得C(x,y) == true。从证明者的角度来看,实现零知识需要随机性。在验证者方面,需要随机性来产生对证明者的查询。 第一个被广泛展示的应用是在NP中——完成一类复杂性称为图的三着色问题。这是一个巨大的突破,因为这个应用程序可以应用于NP类中的任何问题。这可以一举多得。
在区块链领域,由于零知识证明能够提供可扩展性以及在隐私模型中的实用性,因此有许多实现。具体来说,与没有零知识证明系统的情况相比,验证者执行的计算工作呈指数级减少。另一方面,证明者需要相当多的计算开销来执行证明。我稍后会详细讨论这个问题。
ZK协议
虽然目前存在大量的zk协议,但对于这篇文章,我将重点关注SNARK和STARK,并在后面的文章中深入探讨其他协议。
简洁非交互式知识论证(SNARK)是一种流行的证明机制,它结合了2011年首次引入的零知识证明。在底层,zk-SNARK使用椭圆曲线来保证安全并依赖于可信设置。最初,创建密钥以开发交易所需的证明和验证所述证明。这些秘钥包含一个参考字符串链接验证密钥和发送私人信息的密钥。为此,必须删除创建密钥的方法,并且密钥的创建者是可信赖的(因此称为可信设置)。这种在创建阶段对信任的依赖仍然是zk-SNARKs的一大批评点。此外,参考字符串是不可升级的,这意味着如果程序需要更新,则需要重新运行可信设置阶段。
然而,在实际实践中,zk-SNARK很难自行实现。在计算中需要检查许多步骤,但是单独检查每个步骤的工作花费的时间是不可行的。解决方案以多项式的形式出现。将计算编码为多项式可以节省大量信息和时间。我们可以用“代替“它们的多项式表达式代替它们,而不是在数字之间有无数个方程。
但是等等,还有更多!通常,通过检查每个系数来使用多项式验证方程,但这又需要太长时间。多项式承诺在这里发挥作用。多项式承诺可以被视为“哈希”多项式的独特方法。这允许在更短的时间内进行验证,无论多项式有多大。此外,多项式承诺本质上是隐私保护,因为证明比多项式本身小得多。尽管可以添加随机性,但多项式承诺不会显示多项式的少量信息。
多项式承诺使用三种主要协议之一:bulletproof、KZG和FRI(Fast Reed-Solomon Interactive Oracle Proof of Proximity)。比较和对比它们超出了本篇文章的范围,因为每个都值得自己深入研究。
2018 年,一群研究人员试图在zk系统中加入透明度。透明度意味着不必依赖受信任方进行初始设置,从而消除了开放后门的威胁。这导致创建了可扩展的透明知识论据,或STARKs。STARK使用哈希函数作为其安全来源,这与SNARK使用的双线性实现不同。可扩展性方面指的是两件事:
1、与SNARK相比,证明者的运行时间在复杂性上要小得多。
2、验证时间的大小是多对数。STARKs利用FRI,提升信息存储量和效能。
当前应用
尽管像Zcash这样的zk-SNARK先驱已经存在了一段时间,但zk-STARK的创建却迎来了爆炸式增长。zk协议中的工作不仅限于Rollup。事实上,一些L1已经基于zk proof构建,以及萌芽中的游戏项目。
StarkWare是 zk-STARK的先驱,开发了两个核心产品:StarkNet,一个无需许可的去中心化zk rollup,以及StarkEx,一个独立的zk rollup SaaS。此外,StarkWare开发了名为Cairo的生产级zk虚拟机 (zkVM) 。Cairo声称可以实现图灵完备的冯诺依曼结构。每个程序与它处理的数据一起驻留在VM 的内存中。今天任何人都可以访问开罗,目前正被著名的StarkEx客户使用,如dydx、Immutable和DeversiFi。其他使用他们自己版本的zkVM的新应用程序包括 Polygon Miden和RiscZero,后者正在尝试构建通用zkVM。
与zkVM意识形态相反的是zkEVM。zkVMs从头开始作为针对zk优化的新区块链VM,或者只是适应Solidity工具和兼容性。另一方面,zkEVM实现了完整的EVM操作码集。使用EVM 操作码有几个好处:
-
实现与EVM生态系统和工具的完全兼容
-
继承 以太坊 安全模型
-
效率可能类似于基于编译器的方法
不出所料,zkVM和zkEVM阵营之间似乎存在很大的分歧。
zkEVM相对于zkVM的最大优势是EVM等效性。历史证明,通过低gas费激励和为开发人员提供轻松的开发体验来瞄准庞大的现有dApp社区是卓有成效的,这正是zkEVM建设者所指望的。
目前最流行的zkEVM项目是zkSync,它使用zk-SNARKs作为2层解决方案进行验证和扩展。此外,zkSync选择将数据可用性置于链下,并由zkSync代币质押者使用权益证明 (zkPorter) 进行保护(这意味着空投可能迫在眉睫)。此实现的设计基于StarkWare开发的名为Volition的解决方案。
最后,一个相当新的参与者,Scroll正在开发一个通用的L2 zkEVM。Scroll采用了一种新方法来使用GPU能力在链下生成zk证明。最近在Poseidon哈希、Plookup和PLONK等zk证明方面的突破已经将成本降低到足以使zkEVM成为现实。此外,GPU和 ASIC/FPGA加速器的进步正在改善硬件条件,进一步降低成本。Scroll仍处于开发阶段,计划在未来几个月内推出他们的 zkEVM测试网。
未来的应用
Zk Proof最初是为了维护隐私而开发的。尽管大众媒体可能会将当前的用例集中在“更大的 TPS 允许”上,但事实仍然是zk Proof具有更广泛的应用范围。
一个这样的应用程序是工具zk-ID,它通过zk电路匿名检查钱包中的资产或链上交易来验证用户的身份。
Zk身份具有极其强大的潜力,并且在现实世界中可以立即使用用例。例如,假设我是一名债务人,试图证明自己的信誉,同时仍将银行信息和活动保密。我会证明我已经从多家受信任的银行偿还了大笔贷款,但不会透露银行或这些贷款的规格。
支持未来zk-identity的四个关键组件
zk领域的另一个重大发展是zk-SNARK证明者的高效私人委托。如前所述,证明的时间相当缓慢。使用SHA2 哈希10kb需要140秒,而不是所需的几毫秒。解决这个问题的方法是外包证明。不幸的是,这带来了另一个困境:秘密总是泄露。需要的是:外包隐私证明。通过仔细实施,可以将证明委托给手机等设备,其速度比本地计算快26倍。这个新颖的框架由Pratyush Mishra在2022年4月的zkSummit上首次提出。
结语
我们在开发基于应用程序的zk Proof方面处于非常早期的阶段。尽管如此,进展的步伐还是很快的。社区之间仍然存在很多冲突,因为阵营正在形成,意见正在被政治化。只有时间会证明哪一方是正确的。可以肯定的是,当历史学家回顾过去时,他们会将这一时期的zk实施视为加密货币壮观历史中的开创性部分。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum