STARK算法解析
第0部分:导言
第1部分:纵观 STARK
第2部分:有用的“工具”
第3部分:FRI
第4部分:STARK Polynomial IOP
第5部分:A Rescue-Prime STARK
第6部分:加速整个流程
zk-SNARKs 一般是通用的,意味着它们能够证明任意计算的完整性;
zk-SNARKs 是非交互式的,这意味着整个完整性证明由单个消息组成;
zk-SNARKs 的验证是高效的,也就是说,与简单地重新运行计算相比,验证者的工作量会降低一个数量级(译者注:几个数量级也是有可能的);
zk-SNARKs 是零知识的,这意味着它们不会泄露关于计算秘密输入的任何信息。
1.什么是STARKs?
最近,密码学证明系统领域最令人兴奋的进展之一是 STARKs 的发展。它是在区块链行业蓬勃发展之后出现。整体上来看,证明系统似乎是为其量身定做的:区块链网络通常由相互不信任的各方组成,他们希望使用秘密信息进行交易,或根据状态演变规则更新集体状态。由于参与者是相互不信任的,因此他们需要验证其同伴提出的交易(或状态更新)的有效性的方法。
由于 zk-SNARKs 的以下特点,它们自然具备在这种环境中提供计算完整性保证的能力:
传统的 zk-SNARKs 依赖于尖端的密码学难题和假设,而 STARK 证明系统中唯一的密码学成分是一个抗碰撞的哈希函数。因此,在理想化的哈希函数模型下,该证明系统的抗量子安全性是可以被证明的(在文献中,这种理想化被称为“量子随机预言机模型” quantum random oracle model )。这与第一代 SNARKs 形成鲜明对比,后者使用双线性映射,且只在不可证伪的(Unfalsifiable)假设下具有可证明的安全性。
STARKs 的算术化是独立于密码学困难问题的,因此这个领域可以被专门选择来优化性能。因此,STARKs 使得真正的快速证明(Prover)成为可能。
传统的 zk-SNARKs 依靠一个可信的设置仪式来产生公共参数。仪式结束后,使用的随机参数必须被安全地遗忘。仪式本身并非去信任的,因为如果参与者拒绝或忘记删除这种密码学上的“有害垃圾”,他们就会保留伪造证明的能力。相比之下,STARKs 没有可信的设置,因此没有密码学上的有害垃圾“。
关于 FRI 、 STARK 、 DEEP-FRI 的论文,以及FRI的最新可靠性分析
Vitalik Buterin 的多部分教程(第一/二/三部分)。
StarkWare 的一系列博文(第1、2、3、4、5部分)。
StarkWare 的 STARK @ Home 网络广播
StarkWare 的 STARK 101 在线课程
StarkWare 的 EthStark文档
一般来说, StarkWare 推出的任何东西
我期待 zk-SNARKs 在未来10-20年内渗透到主流世界,并引领一场重大的革命。 —— “ V神 ” 2021.9.2
zk-SNARKs 已经存在了一段时间,但 STARK 证明系统是一个相对较新的东西。它的脱颖而出有几个原因:
“我基本同意,但在两点上持有保留意见:
1) 是 STARKs 将占主导地位,而不是 SNARKs
2) 3-5年就会渗透到主流世界
在我的日历上写上提醒,以便4年后来检验这些话。” —— Eli Ben-Sasson 2021.9.2
在本教程中,我将解释其中许多部分是如何一起工作的。这个文字解释由一个证明和验证基于 Rescue-Prime 哈希函数的简单计算的 Python 实现来支持。在阅读或学习了本教程之后,你应该能够为你选择的计算编写你自己的零知识 STARK 证明者和验证者
2.为什么写作本文?
应该尽早指出,学习 STARKs 有多种来源。这里是一个不完整的列表。
有了这么多学习资源,我为什么还要再写一个教程呢?
有限域及其扩展域
有限域上的多项式,包括单变量和多变量的多项式
快速傅里叶变换
哈希函数
Part 1: 纵观 STARK 从高层次描绘了概念和工作流程
Part 2: 有用的“工具” 介绍基本的数学和密码学工具,证明系统将由此建立
Part 3: FRI 涵盖了低度测试,这是证明系统的密码学核心
Part 4: STARK Polynomial IOP(IOP, interactive oracle proof)解释了从任意的计算性要求中生成抽象证明系统的信息理论
Part 5: A Rescue-Prime STARK 把这些工具放在一起,为一个简单的计算建立一个透明的零知识证明系统
Part 6: 加速整个流程 引入算法和技术,使整个流程变得更快,有效地将 S (简洁性,succinct) 放入STARK
5.致谢
已有的教程比较浅显。在从高层次上解释了这些技术是如何工作的方面,这些教程做得不错,并传达了一种直觉——为什么 STARKs 可以起作用。然而,它们没有描述一个完整的、可供部署的系统。例如,没有一个教程描述如何实现零知识,如何批处理各种低度证明,或如何确定由此产生的安全级别。EthSTARK 文档确实提供了一个完整的参考资料来回答这些问题中的大部分,但它是针对一个特定计算的,没有涵盖零知识,也没有给出一个易懂直观的解释。
这些论文是难懂的。令人难过的是,科学出版业的激励机制被设定为:使科学论文对非专业读者来说难以阅读。因此,需要像本文这样的教程,以使这些论文能被更多的人理解。
资料已经过时了。各种教程中描述的许多技术后来都得到了改进。例如,EthSTARK 文档(上面引用的最新的文档)描述了一种 DEEP 插入技术,以便将正确求值的要求降低到有界度的多项式。这些资料中没有提到这种技术,因为这些资料比该技术出现得更早。
我更喜欢我自己的风格。我不同意很多符号和名称,我希望人们能使用正确的符号和名称。特别是,我喜欢把重点放在多项式上,作为证明系统的最基本对象。与此相反,所有其他资料都是以对里德-所罗门码字的操作来描述证明系统的机制。
这个教程有助于我更好地理解 STARK 。写这篇教程有助于我将自己的知识系统化,并找出其浅薄或完全缺乏的地方。
3.所需要的背景知识
本教程在需要的时候会温习一些背景知识。但建议所有读者还是了解和学习一下以下主题,因为如果不熟悉这些主题,这里的介绍可能会过于密集。
4.系列向导
作者希望感谢 Bobbin Threadbare、Thorkil Værge 和 Eli Ben-Sasson 的有用反馈和意见,以及 Nervos 基金会的资金支持。请给他发邮件:alan@nervos.org,或在 twitter 或 Github 上关注 aszepieniec。
译者注:原文中有大量文献链接,由于公众号限制无法附上,请读者自行参考原文中的文献链接。
About zCloak Network
zCloak Network 是基于波卡生态的隐私计算服务平台,使用 zk-STARK 虚拟机为通用计算进行零知识证明的生成与验证。基于独创的自主权数据和自证明计算技术,可以让用户在无需对外发送数据的情况下,实现对数据的分析和计算。通过波卡跨链消息传递机制,可以为波卡生态内的其它平行链以及其他公链提供数据隐私保护支持。项目会采用“零知识证明即服务”的商业模式,打造一站式的多链隐私计算基础设施。