STARK:零知识前沿:关于SNARKs,STARKs和未来的应用

原文标题:《TheZeroKnowledgeFrontier:OnSNARKs,STARKs,andFutureApplications》

原文作者:VaishPuri,TheTIE研究员

原文编译:KurtPan

「我只知道一件事,那就是我一无所知」——苏格拉底

在今天的文章中,我将剖析有史以来最强大但经常被误解的密码学工具之一:零知识证明。此外,我将重点介绍未来实现的用例和建议,并展示为什么零知识证明是crypto未来的关键。

为什么零知识证明很重要

简单地说,零知识证明是证明者在不实际透露任何信息的情况下说服验证者某事是真实的一种方式。让我们用一个类比来说明这一点:假设我们有两个人,Alice和Bob。Alice有一副密封的52张扑克牌。Alice偷偷拿了一张红牌想向Bob证明她有一张红牌,但不想出示该红牌本身。为了做到这一点,Alice需要将所有的黑牌从牌堆中拿出来,然后将它们展示给Bob。Bob检查所有26张黑牌,验证其不重复不遗漏。由是确定Alice拥有的牌必是红牌。因此,Alice能够向Bob证明她有红牌,而无需实际出示。这个类比是「极度」简化的而且并没有描绘出全貌,但技术背后的核心理念是一样的。

零知识证明并非这十年来甚至这个新千年来的新鲜事物。事实上,该想法是在1980年代由抽象数学的研究者首次提出的。该方案旨在解决当时的与证明者和验证者之间的理论系统–交互式证明–相关的问题。

但是如果验证者是恶意的怎么办?除了验证声明的真实性之外,证明者还泄漏了多少额外信息?让我们看看中心化服务器上口令的哈希是如何存储的。传统上,在与服务器交互时,服务器会知道明文口令。这是进行「身份证明」的一种糟糕方式,因此研究者转向了一种可以在不泄露任何无关信息的情况下证明声明的新系统。

更具体地说,假设我们有函数C,有两个输入C(x,y)。令x为公开输入,y为秘密证据,函数的输出为真或假。给定一个特定的公共输入x,证明者必须证明他知道一个秘密证据y使得C(x,y)?==true。从证明者的角度来看,实现零知识需要随机性。验证者方面,也需要随机性来产生对证明者的查询。?被广泛展示的第一个应用是一个NP完全的称为图三着色问题。这是一个巨大的突破,因为这个可以应用于NP类中的「任何问题」。简直就是「一石N鸟」。

在区块链领域,由于零知识证明能够提供可扩展性以及在隐私模型中的实用性,因此有了许多实现。具体来说,与不用零知识证明系统的情况相比,验证者执行的计算工作呈指数级减少。另一方面,证明者需要相当多的计算开销来执行证明。我稍后会详细讨论这个问题。

零知识协议

目前存在大量的零知识协议,但这篇文章中我将重点关注SNARK和STARK,并在后续文章中深入探讨其他协议。

简洁非交互知识论证,SNARK,是一种流行的证明机制,其纳入了于2011年首次提出的零知识证明。在底层,zk-SNARK使用椭圆曲线来保证安全性并依赖于可信设置。一开始,创建导出交易所需证明和验证所述证明的密钥。这些密钥包含一个参考字符串,将验证密钥和发送私有消息的密钥联系起来。为此,必须有删除所创建的密钥的方法,且密钥的创建者必须是可信的。这种在创建阶段对信任的依赖仍然是对zk-SNARKs的一大批评点。此外,参考字符串是不可更新的,这意味着如果程序需要更新,则需要重新运行可信设置阶段。

然而实际实践中,zk-SNARK很少会独自出现。在计算中往往需要检查许多步骤,但是单独检查每个步骤的工作将花费大量时间。解决方案以多项式的形式出现。将计算编码为多项式可以节省大量信息和时间。相比于数字之间的无数个方程,我们可以代替为「代表」它们的多项式表达式。

还有,通常会通过检查每个系数来使用多项式验证方程,但这又需要太长时间。多项式承诺在这里开始发挥作用。多项式承诺可以被视为用来「哈希」一个多项式的独特方法,允许在更短的时间内进行验证,无论多项式有多大。此外,多项式承诺「本质上」是保护隐私的,因为证明比多项式本身小得多。尽管可以添加随机性,多项式承诺只会泄漏多项式的少量信息。如需更深入地了解多项式承诺和验证,请查看此内容。

多项式承诺使用三种主要协议之一:bulletproof、KZG和FRI。比较和对比每一个都会使本文变得有点难懂,且超出了本文的范围,因为每个都值得去深入研究。

2018年,因为厌倦了现状,一群研究者试图在零知识系统中加入透明性。透明性意味着不必依赖受可信方进行初始设置,从而消除了开放后门的威胁。这导致了可扩展透明知识论证,或STARKs,的发明。STARK使用哈希函数作为其安全性来源,这与SNARK使用的双线性配对不同。名字里的可扩展指的是如下两件事:

与SNARK相比,证明者运行时间在复杂性上要低得多。

验证时间是多项式对数。STARKs使用了FRI,提升了信息存储量和性能。

当前应用

虽然像Zcash这样的zk-SNARK先驱已经存在了一段时间,是zk-STARK的发明使得开发空间迎来了爆炸式的增长。零知识协议方面的工作不仅限于rollups。事实上,一些L1已经是基于零知识证明来构建的了,以及刚萌芽的游戏项目。

StarkWare是zk-STARK的先驱,开发了两个核心产品:StarkNet,一个无需许可的去中心化zk-rollup,以及StarkEx,一个独立的zk-rollupSaaS。此外,StarkWare是名为Cairo的生产级零知识虚拟机(zkVM)的第一家生产商。Cairo声称通过实现图灵完备的冯诺依曼架构以达到这一点。每个程序与它处理的数据一起驻留在VM的内存中。今天任何人都可以访问Cairo,目前正被一些有名的StarkEx客户所使用,如dydx、Immutable和DeversiFi。其他使用他们自己版本的zkVM的新应用包括PolygonMiden和RiscZero,后者正在尝试构建通用zkVM。

与自启动的zkVM思想相反的是zkEVM。zkVMs是从头开始做针对零知识优化的新的区块链虚拟机,或者只是适配Solidity工具和兼容性。另一方面,zkEVM实现了完整的EVM操作码集。使用EVM操作码有几个好处:

实现与EVM生态系统和工具的完全兼容

继承以太坊安全模型

效率可能类似于基于编译器的方法

不出所料,zkVM和zkEVM阵营之间似乎存在很大的分歧。

zkEVM相对于zkVM的最大优势是EVM等效性。历史证明,通过低gas费激励和为开发人员提供简单的起始体验来瞄准庞大的现有dApp社区是卓有成效的,这正是zkEVM建设者所期望的。

目前最流行的zkEVM项目是zkSync,它使用zk-SNARKs作为2层解决方案进行验证和扩展。此外,zkSync选择将数据可用性置于链下,并由zkSync代币质押者使用权益证明进行保护。此实现的设计属于StarkWare开发的名为Volition的解决方案。

最后,一个新玩家Scroll正在开发一个通用的L2zkEVM。Scroll采用了一种新方法来使用GPU的能力来在链下生成零知识证明。最近在零知识证明方面的突破,如Poseidonhash、Plookup和PLONK?,已经将成本降低到足以使zkEVM成为现实。此外,GPU和ASIC/?FPGA加速器的进步正在改善硬件条件,进一步降低成本。Scroll仍处于开发阶段,计划在未来几个月内推出他们的zkEVM测试网。

未来的应用

零知识证明最初是为了保护隐私而开发的。尽管主流媒体可能将当前的用例集中在「允许更大的TPS」上,但事实仍然是零知识证明具有更广阔的应用范围。?一个这样的应用是这个工具,它通过零知识电路来匿名检查钱包中的资产或链上交易以验证用户的身份。

零知识身份具有极其强大的潜力,并且在现实世界中可以立即找到用例。例如,假设我是一名债务人,试图证明自己的信誉,同时仍将银行信息和活动保密。我会证明我已经从多家受信任的银行偿还了大笔贷款,但不会透露这些银行的名字或这些贷款的规格。

零知识领域的另一个重大进展是zk-SNARK证明者的高效隐私代理。如前所述,证明时间相当缓慢。使用SHA2来哈希10kb数据需要140秒,而不是所需的几毫秒。解决这个问题的方法是将证明过程外包。不幸的是,这带来了另一个困境:秘密总是会泄露给外包的机器。于是需要的是外包隐私证明。通过仔细的实现,目前已经可以将证明代理给手机等设备,其速度比本地计算快26倍。这个新颖的框架由PratyushMishra在2022年4月的zkSummit上首次提出。

结语

我们在开发基于零知识证明的应用方面还处于非常早期的阶段。尽管如此,进展的步伐还是很快的。原先专家认为在5年内无法达到的阶段目前已经实现了。当然,还有很多事情要做。开发社区之间仍然存在很多冲突,因为阵营正在形成,观点正在被化。只有时间会证明哪一方是正确的。可以肯定的是,当历史学家回顾过去时,他们会将这一时期的零知识实现视为加密货币壮观历史中的开创性部分。

原文链接

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:6ms0-3:488ms