Circle STARK和Stwo令人着迷之处

1. 引言

前序博客:

StarkWare团队和Polygon Labs团队,历时数月,构造了基于Mersenne素数域M31的Circle STARK协议,通过使用M31 over a circle,可基于任意有限域构造高效STARKs,具体见2024年2月19日论文《Circle STARKs》。

基于Circle STARK协议,StarkWare团队开发了超快的证明系统:Stwo,大幅改进了现有Stone prover(见Stone Prover:StarkWare的STARK Prover)。

Stwo开源代码见:

BabyBear域背景知识见:

Mersenne素数域M31背景知识见:

在这里插入图片描述
Circle STARK中的数学是complex的,但其使用了good old round-shaped circle来加速STARK证明,使得STARK证明速度可提升百倍。

2. STARK Scalability 和 Transparency

E Ben-Sasson在 2017 年的斯坦福区块链会议上介绍了 STARK 这个术语。STARK 定义了一组确保计算完整性的协议,特别强调可扩展性和透明度——分别是 STARK 中的“S(Scalability)”和“T(Transparency)”。

  • 可扩展性涉及快速且经济高效地生成和验证计算完整性证明,从而使公众使用无需依赖大量或昂贵的流程。该属性对于跨不同实体应用完整性检查至关重要,并推动了 StarkWare 在区块链计算方面的增强。
  • STARK 内部的透明度意味着消除“可信设置”;所有程序均基于公共随机性,减少信任假设。这方面对于维护计算完整性至关重要,特别是针对可能利用系统参数的有影响力的实体。

可扩展性和透明度共同定义了 STARK 技术的核心,提供安全、可扩展、透明和公开的验证方法。确保证明系统遵守这些原则对于维持有效和可靠的操作至关重要。无论将系统称为 STARK 还是其他名称,请注意双管齐下的“可扩展性”和“透明度”所提供的显著优势,并询问当地的证明提供商其证明系统是否同时具备“可扩展性”和“透明度”。

3. STARK 效率意味着小“数字”

本节将讨论计算效率意味着需要塑造证明系统以最好地匹配现代计算机的性能概况。这将导致使用一个特定的素数——Mersenne素数 2 31 − 1 2^{31}-1 2311

实践中实现的所有证明系统(以及多年来在数学上发现的几乎所有证明系统)都使用存在于“有限域”的数学世界中的特殊类型的“数字”进行操作。有限域有很多(无限多!),但本文关注最简单的成员——“素数域”。素数域由素数 p 定义,其“数字”可能取值为 为 0 , 1 , … , p − 1 0, 1, \ldots,p-1 0,1,,p1(因此,若 p = 5 p=5 p=5,则“数字”可能取值为 0 , 1 , 2 , 3 , 和 4 0, 1, 2, 3,和4 0,1,2,3,4)。加法和乘法是在有限域中执行的:

  • 首先按标准(加法或乘法)方式进行,
  • 然后 加法求和结果 或 乘法乘积结果 除以 p p p取余数。

如,当 p = 5 p=5 p=5时,有3+3=1(6 除以 5 后的余数)和 3 × 3 = 4 3\times 3=4 3×3=4(9除以5后的余数)。可简化表示为: 3 + 3 ≡ 1 m o d    5 3+3\equiv 1\mod 5 3+31mod5 3 × 3 ≡ 4 m o d    5 3\times 3\equiv 4\mod 5 3×34mod5

有限域的一个重要优点是它们的大小是有限的。这意味着永远不需要担心分数、浮点运算和任意大的整数。所遇到的“数字”可能取值必然是 0 , 1 , … , p − 1 0, 1, \ldots, p-1 0,1,,p1之一。因此,若 p < 2 32 p<2^{32} p<232,则能够将每个“数字”放入标准计算机word中,从而节省空间(计算机字的长度为 32 位)。在进行加法或乘法时,也将主要使用 32 位word。

Stone 是第一个投入生产的 STARK 证明系统,在过去四年中一直在扩展以太坊,为客户节省了超过 10 亿美元的费用。Stone定义在一个非常大的素数域上,其大小大约为 2 252 2^{252} 2252,这意味着存储一个“数字”需要八个计算机word(每个字为 32 位)。“数字”加法,特别是乘法运算需要相当多的计算机周期。准确地说,在 Stone 中,每次乘法平均需要 38 个周期。上周宣布的 Stwo 使用较小的素数域,由Mersenne素数定义 2 31 − 1 2^{31}-1 2311并表示为 M31。这意味着可将该有限域内的“数字”存储在单个计算机word中,且乘法速度要快得多。使用矢量化(vectorized)运算,每次乘法只需要0.3 个计算机周期,这比 Stone 中的速度快 125 倍!(矢量化运算对于 Stone 素数没有帮助)。

32 位word中有许多素数(素数 5 就是其中之一),但有充分的理由使用接近$ 2^{32}$的素数。还有很多其他素数可供选择,但Mersenne素数 M 31 = 2 31 − 1 M31= 2^{31}-1 M31=2311特殊之处在于,某些运算对其非常有效,因为数字 2 31 2^ {31} 231(二进制数 1,000,000,000,000,000,000,000,000,000,000 或 1 后跟 30 个零)等于 1 m o d    M 31 1 \mod M31 1modM31。与另一个流行的“小”素数(即所谓的 Babybear 素数(Risc0 使用))相比, 2 31 − 2 27 + 1 2^{31} - 2^{27}+1 231227+1在向量化机器上,对 M31 乘法的计时速度比 Babybear 乘法快约 1.3 倍。

在将M31定义的素数域用于构建STARK之前,还需解决另一个问题:

  • 为适于递归和FFT加速,需选择有限域的乘法结构

4. 效率意味着良好的乘法结构

有限域有很多结构。如,若只考虑加法,并且开始向自身加一个数字(0 除外),会发现覆盖了该域内所有数字,然后又回到了开始的位置。如,在素数 5 定义的域中,若重复加 2,会得到序列:2, 4, 1, 3, 0 , 2, 4, 1, 3, 0,…,或者基本序列 {2 ,4,1,3,0} 重复无限次。素数域的一个有趣事实是,无论从哪个非零数字开始,基本循环序列将始终具有长度p。

当涉及乘法时,情况就不同了。仍然总是会得到重复结构,但它们的周期长度取决于开始的数字。仍然固定p=5,若从 2 开始,会生成序列2, 4, 3, 1, 2, 4, 3, 1, …,其周期长度为 4。但是若从数字 4开始, 会生成序列4,1, 4 ,1,4,1,…,其周期长度为 2。若从数字 1开始,会 生成序列1, 1,1,1…,其周期长度为 1。

对于高效的 STARK,至关重要的是在有限域中选择一个数字 g g g,通过重复乘法,生成一个特别长的基本序列 - 理想情况下超过 1,000,000。但还需要此模式的大小为 2 的精确整数幂,如 2 20 2^{20} 220(大于一百万)。为什么需要这种奇怪的“2 的幂”长度,那是因为这种结构的序列具有许多相似的子结构,这些子结构将一个隐藏在另一个内部,就像某种分形图案一样。若 g g g的生成长度的基本重复模式 2 20 2^{20} 220,则 g 2 g^2 g2生成第一个模式中每隔一个数字且大小为 2 19 2^{19} 219的基本重复序列,且 ( g 2 ) 2 = g 4 (g^2)^2=g^4 (g2)2=g4生成长度的重复模式 2 18 2^{18} 218(每四个成员),依此类推。

由此可知,上面例子以素数 5 为模,其模式由 2 , 4 ( = 2 2 ) 和 1 ( = 4 2 ) 2, 4 (=2^2)和1 (=4^2) 2,4(=22)1(=42)生成。

若进一步想知道为什么需要这个“子序列”属性,需要阅读更多内容,特别是,关于递归算法和令人惊叹且无处不在的快速傅立叶变换 (FFT) 及其近亲数论变换 (NTT)。

因此,也须有由 2 31 − 1 2^{31}-1 2311定义的Mersenne域内的generator g g g,使得由 g g g生成的乘法序列的长度为 2 的大幂(如 2 20 2^{20} 220)。但不存在这样的 g g g!事实证明,循环乘法序列的长度,在域大小 p p p(必须能整除)对 p − 1 p-1 p1的除法结果,范围内。(很幸运,2 和 4 都能整除 5-1)。但对于Mersenne素数来说 p − 1 = 2 31 − 2 p-1=2^{31}-2 p1=2312,这个数字并没有很大的 2 次方除法。事实上,除以 2^{31}-2 的2的最大幂就是 2(更多知识,可深入地研究有限域及其亲戚——群和环)。

目前看来陷入困境了,需要在Mersenne域内的一个生成元 g g g来生成特定模式,但从数学上讲,不存在这样的 g g g

5. 跳出框框(或域)思考

数学的美妙之处之一是它能够提供概括,从而拓宽理解并完善解决方案。到目前为止,集中讨论了单个数字 g g g 的简单乘法所产生的序列。但可定义由一对数字(pairs of numbers)生成的序列,这正是在构造 Circle STARK 时所做的。
若某点 ( x , y ) (x,y) (x,y)位于圆 x 2 + y 2 = 1 x^2+y^2=1 x2+y2=1上。通常将这些点想象成位于good old circle上,但数学家的想法不同。
请注意,若在由 5 定义的素数域中工作,则 4 2 + 0 2 = 1 4^2+0^2=1 42+02=1,因此“点”(4,0)位于圆上。这就是点 ( − 1 , 0 ) (-1, 0) (1,0),因为在该域中 4 与 -1 相同。可识别圆上的四个点:(0,1), (-1,0), (0,-1)和(0,1),且若以生成元 ( g x , g y ) = ( 0 , 1 ) (g_x,g_y)=(0,1) (gx,gy)=(0,1)并应用某种不同的定律,可生成所有这些点。现在从圆上的一点 ( x i , y i ) (x_i,y_i) (xi,yi)移动到另一点 ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1),而不是像上面的乘法序列中那样从 x i x_i xi来生成 x i + 1 x_{i+1} xi+1,其中计算另一点 ( x i + 1 , y i + 1 ) (x_{i+1},y_{i+1}) (xi+1,yi+1)的方法为:

( x i + 1 , y i + 1 ) = ( g x ∗ x i − g y ∗ y i , g x ∗ y i + g y ∗ x i )     ( ∗ ) (x_{i+1}, y_{i+1}) = (g_x * x_i - g_y * y_i, g_x *y_i + g_y *x_i) \ \ \ (*) (xi+1,yi+1)=(gxxigyyi,gxyi+gyxi)   ()

这样,若从点 ( x 0 , y 0 ) = ( 1 , 0 ) (x_0,y_0) = (1,0) (x0,y0)=(1,0)开始,并递归对生成元应用规则 ( ∗ ) (*) (),就得到了循环序列: ( 0 , 1 ) ( 1 , 0 ) , ( 0 , 1 ) , ( − 1 , 0 ) , ( 0 , − 1 ) , … (0,1)(1,0), (0,1), (-1,0), (0,-1),\ldots (0,1)(1,0),(0,1),(1,0),(0,1),

在处理素数 5 时,并没有获得太多收获,因为已经知道如何通过简单的乘法生成长度为 4 的循环序列。但当考虑素数 31时,由于 31 − 1 = 30 = 2 ∗ 3 ∗ 5 31-1=30=2*3*5 311=30=235,能被2的幂整除的最长序列是长度为2的序列。但在圆上可以找到 32 = 2 5 32=2^5 32=25个这样的点,这些点是以 ( g x , g y ) = ( 2 , 11 ) (g_x,g_y) = (2,11) (gx,gy)=(2,11)为生成元,对 ( x 0 , y 0 ) = ( 1 , 0 ) (x_0, y_0) = (1,0) (x0,y0)=(1,0)使用上面的公式 ( ∗ ) (*) ()生成的。

事实证明,在Mersenne素数 2 31 − 1 2^{31}-1 2311上定义的圆上的点数量相当大。其size为 2 31 2^{31} 231。可通过使用上述定律从 ( x 0 , y 0 ) = ( 1 , 0 ) (x_0,y_0) = (1,0) (x0,y0)=(1,0)开始并使用生成元 ( g x , g y ) = ( 2 , 1268011823 ) (g_x,g_y)=(2,1268011823) (gx,gy)=(2,1268011823)来生成所有 2 31 2^{31} 231个数字。详情参看论文《Circle STARKs》。

那么这一切带来了什么:

  • 能够使用超高效的 Mersenne 域进行算术运算。乘法:
    • 比 252 位 Stone 域快 125 倍,
    • 比类似大小的 Babybear域 中的乘法快 1.3 倍。
  • 此外,还发现了必要的重复结构(从数学上来说,一个“代数循环群”),该结构很大且大小为 2 的精确幂,从而导致大小为 ½ 、 ¼ 等的重复子结构,以及快速与它们相关的递归算法。

6. 从 Circle STARK 到 Stwo?

Stwo(“STARK Two”)是 Starknet 下一代证明器的名称,旨在增强、加速并最终取代当前的证明器 – Stone(“STARK One”)。Stwo 的效率预计是 Stone 速度的 100 倍,将使用 基于M31的Circle STARK。Stwo中的其他创新包括“logup”和sum-check协议(如Haböck 和 Papini最近的工作Improving logarithmic derivative lookups using GKR
),同时与多个不同degree的多项式(“混合次数”)一起工作,以及用于编码电路和虚拟机的新基础设施。因此,虽然 STARK 证明规模的预期改进约为 Stone 的 100 倍,但预计还会带来其他好处,如更灵活地采用新编译器和虚拟机,从而提高开发速度。关于Stwo信息,可查看 Stwo:基于Circle STARK和M31的下一代STARK证明系统

7. KZG 承诺和基于配对的 SNARK?

KZG 承诺是 Stone、Stwo 和其他 STARK 使用的 FRI 协议的主要竞争对手,并构成许多基于配对的 SNARK 的数学基础。它们的主要优点是:

  • 最终证明极其简洁,众所周知,最终证明需要大约 200 字节(相比之下,FRI 和当前的 STARK 需要数十千字节)。
  • 另一个优势是以以太坊上预编译的形式提供补贴,用于特定的 KZG 参数设置并通过 DankSharding 集成到核心以太坊协议中。这些补贴解释了为什么许多 STARK 系统(如 Polygon、RiscZero 和 ZKsync 使用的系统)最终被封装在 SNARK 中——以利用特定的以太坊预编译补贴。只要对某些证明系统有具体补贴,并期望更多相同的东西,团队就会考虑将他们的 STARK 包装在 SNARK 中。

但与 KZG 安全素数相比,M31 上的乘法速度快了 100 倍(当前最佳实践要求此类素数需要 380+ 位!),KZG 和基于配对的系统在规模上不太可能像 Stwo 一样高效和吞吐量。虽然椭圆曲线数学领域和基于配对的 SNARK 世界中进行的创新范围令人叹为观止,但应记住,此类 SNARK 不仅在效率方面受到影响,而且还需要可信的设置,并且很容易出现问题——量子计算机的攻击。换句话说,从效率、安全性和面向未来的角度来看,基于小型有限域的 STARK 是更好的选择。

8. 展望

Circle STARK 标志着 STARK 技术领域令人兴奋的进步,已经从理论过渡到实践。它们是 STARK 证明不断发展的遗产中的最新里程碑,而且 STARK 证明变得越来越复杂。随着研究和工程化的不断前进,这些证明将迎接新的挑战并解锁超出当前想象的应用程序。

很高兴看到令人惊叹和深刻的数学出现在能够将区块链扩展几个数量级的系统中。区块链中被称为“ZK”的空间不止一次地采用了尖端的“moon math月球数学”并从中构建了创新产品。相关例子有:

  • Zcash 部署了第一个用于通用电路的 ZK-SNARK 系统,以提供区块链上的金融隐私。
  • STARK 是以太坊上第一个、最高效且面向未来的扩展技术。
  • 而 Cairo 是用于编写可证明代码的下一代智能合约语言。

因此,渴望看到 Circle STARK 和 Stwo 将释放出哪些奇妙的、不可预见的应用和新的数学。

参考资料

[1] E Ben-Sasson 2024年3月15日博客Why I’m excited by Circle STARK and Stwo

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值