主要见2023年Polygon Labs和Polygon Zero团队论文《Reed-Solomon codes over the circle group》。
相关开源代码实现见:
本文重点讨论基于Mersenne素数域 F = 2 31 − 1 F=2^{31}-1 F=231−1的复数扩域 C ( F ) \mathbb{C}(F) C(F)的unit circle内所定义的Reed-Solomon codes:
由于Mersenne域的特别高效运算,可期待对其实现“almost native” Reed-Solomon codes,其原生性与 基于高two-adicity的(但不够处理器友好运算的)素数域的Reed-Solomon codes 基本相当。
STARKs(scalable and transparent arguments of knowledge)基于:
STARKs的性能取决于其witness trace所表示用的有限域。StarkWare的Cairo zkVM仍使用的是密码学大素数域,Plonky2采用的是64位小素数域,其模为:
p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264−232+1
通常称其为Goldilocks域。
Goldilocks域的模支持在标准计算机架构中高效实现,其乘法群足够smooth,two-adic subgroup size大至 2 32 2^{32} 232,可支持高效FFT Reed-Solomon编码。目前Polygon Hermez和Polygon Miden等项目均采用了Goldilocks域。
但是,从高效域实现以及算术电路的角度来看,需要更小的域。本文成稿时,RISC Zero为唯一往更小域努力的项目,其采用31位Baby Bear小素数域:
p = 2 31 − 2 27 + 1 p=2^{31}-2^{27}+1 p=231−227+1
作为其witness的原生模。与Goldilocks域一样,Baby Bear的multiplicative group对大多数实际应用来说足够smooth: p − 1 = 2 27 ⋅ 3 ⋅ 5 p-1=2^{27}\cdot 3\cdot 5 p−1=227⋅3⋅5。与Baby Bear类似的现有素数,如 p = 2 31 + 2 30 + 1 p=2^{31}+2^{30}+1 p=231+230+1,其也有相当的smooth multiplicative group和高效域运算。
最高效的域运算似乎是Mersenne filed,其形式为 p = 2 e − 1 p=2^e-1 p=2e−1。
特别是Mersenne素数域 p = 2 31 − 1 p=2^{31}-1 p=231−1,其可在32位架构中非常高效地运行:
为此,本文描述了对Mersenne field的almost native Reed-Solomon codes,其利用的是基于复数扩域的circle group S 1 S_1 S1的FFT编码。
扩展到复数扩域,初看似乎效率不高:
但是,对于定义于 S 1 S_1 S1 subgroup的实数函数(即basefield-valued),其基于该circle group的剩余部分的插值点,也几乎是实数的,即意味着其值在某线性实数子空间内,其仅依赖于该subgroup的coset。进一步,采用标准技术来改进real-valued函数的FFT,插值开销将减半。
基于这些事实,所获得的Reed-Solomon codes是“almost native”的:
由于 p = 2 31 − 1 p=2^{31}-1 p=231−1具有特别高效的运算,其almost native Reed-Solomon codes性能,与Baby Bear的原生解决方案,基本相当。同时, p = 2 31 − 1 p=2^{31}-1 p=231−1具有更快的域运算,可用于trace计算和算术哈希计算。
尽管本文重点关注Mersenne域,但本节结论适于每个素数域 F = F p F=F_p F=Fp,其中 p = 3 m o d 4 p=3\mod 4 p=3mod4。即要求 p − 1 2 \frac{p-1}{2} 2p−1是技术,或 − 1 -1 −1不是a quadratic residue。此时:
从而可构建复数扩域 C ( F ) = F [ X ] / ( X 2 + 1 ) \mathbb{C}(F)=F[X]/(X^2+1) C(F)=F[X]/(X2+1)。该复数扩域通过连接formal root i : = − 1 i:=\sqrt{-1} i:=−1而构成:
C ( F ) = { x + i ⋅ y : x , y ∈ F } \mathbb{C}(F)=\{x+i\cdot y:x,y\in F\} C(F)={x+i⋅y:x,y∈F}
该复数扩域的域运算被强加了对该root的代数约束 i 2 = − 1 i^2=-1 i2=−1。
基于 F F F的unit circle为代数集合: S 1 = { ( x , y ) ∈ F 2 : x 2 + y 2 = 1 } S_1=\{(x,y)\in F^2:x^2+y^2=1\} S1={(x,y)∈F2:x2+y2=1},或以复数形式表示为:
S 1 = { z ∈ C ( F ) ∗ : z ⋅ z ˉ = 1 } S_1=\{z\in\mathbb{C}(F)^*:z\cdot \bar{z}=1\} S1={z∈C(F)∗:z⋅zˉ=1}
其中 z ˉ \bar{z} zˉ为 z = x + i ⋅ y z=x+i\cdot y z=x+i⋅y的共轭复数 z ˉ = x − i ⋅ y \bar{z}=x-i\cdot y zˉ=x−i⋅y。由于共轭复数是field automorphism的,因此 S 1 S_1 S1在复数乘法下是闭环的,形成复数乘法群 C ( F ) ∗ \mathbb{C}(F)^* C(F)∗的子群——即(unit)circle group。
Lemma 1 (Circle group):
由于有共轭等价为Frobenius isomorphism,即 z ˉ = z p \bar{z}=z^p zˉ=zp。从而有 x 2 + y 2 = z ⋅ z ˉ = z p + 1 x^2+y^2=z\cdot \bar{z}=z^{p+1} x2+y2=z⋅zˉ=zp+1,同时有 ( p + 1 ) ∣ ( p 2 − 1 ) (p+1)|(p^2-1) (p+1)∣(p2−1),从而可得出结论:该circle group为 ( p + 1 ) (p+1) (p+1)-th roots of unity subgroup,具有的order为 p + 1 p+1 p+1。
基于 F F F的几何复数平面,类似于calculus经典案例。尽管后续不需要,仍可迅速总结出复数值的极坐标表示。
Proposition 1:
Remark 1:
Remark 2:
令 H H H为任意有限域 K K K的乘法子群,其order为 ∣ H ∣ = N |H|=N ∣H∣=N,令 g g g为 H H H的generator。
对函数 f : H → K f:H\rightarrow K f:H→K的(discrete)Fourier transform f ^ \hat{f} f^函数基于 H H H定义为:
f ^ ( g k ) : = 1 N ⋅ ∑ j = 0 N − 1 f ( g j ) ⋅ g − k ⋅ j \begin{equation}\hat{f}(g^k):=\frac{1}{N}\cdot \sum_{j=0}^{N-1}f(g^j)\cdot g^{-k\cdot j}\end{equation} f^(gk):=N1⋅j=0∑N−1f(gj)⋅g−k⋅j
其中 k = 0 , ⋯ , N − 1 k=0,\cdots,N-1 k=0,⋯,N−1。这些值是 f f f插值点的系数,即,存在唯一的degree小于 N N N的多项式 p ( X ) p(X) p(X), p ( X ) p(X) p(X)是对 f f f基于 H H H对所有的 i = 0 , ⋯ , N − 1 i=0,\cdots,N-1 i=0,⋯,N−1插值:
f ( g i ) = ∑ k = 0 N − 1 f ^ ( g k ) ⋅ g k ⋅ i \begin{equation} f(g^i)=\sum_{k=0}^{N-1}\hat{f}(g^k)\cdot g^{k\cdot i} \end{equation} f(gi)=k=0∑N−1f^(gk)⋅gk⋅i
等式(2)右侧为 f ^ : H → K \hat{f}: H\rightarrow K f^:H→K的inverse Fourier transform。
用于傅里叶变换的标准算法为Cooley-Tukey算法。该算法利用了 H H H的group结构,并利用所有的:
∣ H ∣ ⋅ log ∣ H ∣ ⋅ ( 1 2 ⋅ M + A ) \begin{equation} |H|\cdot \log |H|\cdot (\frac{1}{2}\cdot M+A) \end{equation} ∣H∣⋅log∣H∣⋅(21⋅M+A)
来计算上面的等式(1)(以及等式(2)),其中:【详情见Introduction to algorithms (3rd ed.),或 Modern computer algebra (3rd ed.)】
当 K = C ( F ) K=\mathbb{C}(F) K=C(F)时,即为有限素数域 F F F(模为 p = 3 m o d 4 p=3\mod 4 p=3mod4)的复数扩域,可使用order为 8 8 8的如下roots of unity简单形式:
c ⋅ ( 1 + i ) , i , c ⋅ ( − 1 + i ) , − 1 , c ⋅ ( − 1 − i ) , − i , c ⋅ ( 1 − i ) , 1 c\cdot (1+i), i, c\cdot (-1+i), -1, c\cdot (-1-i), -i, c\cdot (1-i),1 c⋅(1+i),i,c⋅(−1+i),−1,c⋅(−1−i),−i,c⋅(1−i),1
其中:
此外,所有这些不同radix FFT算法,都可利用傅里叶变换的Hermitian对称性来对real-valued函数 f : H → F f:H\rightarrow F f:H→F进行加速,即对每个 w ∈ H w\in H w∈H,有:
f ^ ( w ˉ ) = f ^ ( w ) ‾ \hat{f}(\bar{w})=\overline{\hat{f}(w)} f^(wˉ)=f^(w)
该对称性可用于让算法中每一步的计算次数减半,对反傅里叶变换也可使用Hermitian对称性。
尽管本文描述的是对实数 R \mathbb{R} R的复数扩域的经典情况,该算法及其开销分析也适用于有限域。具体总结为Theorem 3(详情见Real-valued fast Fourier transform algorithms):
Remark 4:
如下proposition是基于unit circle group的Reed Solomon code实数表示的关键。尽管本文关注的是Mersenne素数域,但结论适用于所有满足 p = 3 m o d 4 p=3\mod 4 p=3mod4的素数域。
Proposition 2:
Remark 5:
由于 f f f是基于 H H H的实数函数,其插值 p ( X ) = ∑ k = 0 ∣ H ∣ − 1 c k ⋅ X k p(X)=\sum_{k=0}^{|H|-1}c_k\cdot X^k p(X)=∑k=0∣H∣−1ck⋅Xk的系数对其共轭是Hermitian对称的,即 c 0 = ⟨ c ∣ 0 c_0=\bra{c}_0 c0=⟨c∣0,对于所有的 k = 1 , ⋯ , ∣ H ∣ − 1 k=1,\cdots,|H|-1 k=1,⋯,∣H∣−1,有 c ∣ H ∣ − k = c ˉ k c_{|H|-k}=\bar{c}_k c∣H∣−k=cˉk。
接下来考虑基于 τ ⋅ H \tau\cdot H τ⋅H的 p ( X ) − c 0 p(X)-c_0 p(X)−c0值,其中 τ ∈ S 1 \tau \in S_1 τ∈S1,有:
p ( τ ⋅ X ) − c 0 = ∑ k = 1 ∣ H ∣ − 1 c k ⋅ τ k ⋅ X k = ∑ k d k ⋅ X k p(\tau \cdot X)-c_0=\sum_{k=1}^{|H|-1}c_k\cdot \tau^k\cdot X^k=\sum_k d_k\cdot X^k p(τ⋅X)−c0=∑k=1∣H∣−1ck⋅τk⋅Xk=∑kdk⋅Xk
其中:
d k = { c k ⋅ τ k for 1 ≤ k ≤ ∣ H ∣ − 1 0 otherwise. d_k= \left\{\begin{matrix} c_k\cdot \tau ^k & \text{for } 1\leq k\leq |H|-1 \\ 0&\text{otherwise.} \end{matrix}\right. dk={ck⋅τk0for 1≤k≤∣H∣−1otherwise.
将该函数扩大 τ − ∣ H ∣ 2 \tau^{-\frac{|H|}{2}} τ−2∣H∣,有系数 d k ′ : = τ − ∣ H ∣ 2 ⋅ d k d_k':=\tau^{-\frac{|H|}{2}\cdot d_k} dk′:=τ−2∣H∣⋅dk,其满足Hermitian对称性,即对所有的 k = 1 , ⋯ , ∣ H ∣ − 1 k=1,\cdots,|H|-1 k=1,⋯,∣H∣−1,有:
d ∣ H ∣ − k ′ = τ − ∣ H ∣ 2 ⋅ τ ∣ H ∣ − k ⋅ c ∣ H ∣ − k = τ ∣ H ∣ 2 ⋅ τ − k ⋅ c ˉ k = τ − ∣ H ∣ 2 ⋅ τ k ⋅ c k ‾ = d ′ ˉ k d'_{|H|-k}=\tau^{-\frac{|H|}{2}}\cdot \tau ^{|H|-k}\cdot c_{|H|-k}=\tau^{\frac{|H|}{2}}\cdot \tau^{-k}\cdot \bar{c}_k=\overline{\tau^{-\frac{|H|}{2}}\cdot \tau^k\cdot c_k}=\bar{d'}_k d∣H∣−k′=τ−2∣H∣⋅τ∣H∣−k⋅c∣H∣−k=τ2∣H∣⋅τ−k⋅cˉk=τ−2∣H∣⋅τk⋅ck=d′ˉk
从而可得出结论:
对于Proposition 2中的第二条claim:
对Mersenne域 F = F p F=F_p F=Fp,其中素数模满足 p = 2 e − 1 p=2^e-1 p=2e−1,应用如上结论。
根据Lemma 1,unit circle group S 1 S_1 S1是 C ( F ) ∗ \mathbb{C}(F)^* C(F)∗的purely two-adic子群:
∣ S 1 ∣ = p + 1 = 2 e |S_1|=p+1=2^e ∣S1∣=p+1=2e
其可用于第2节中的FFT算法。在STARKs上下文中,使用witness多项式的Lagrange表示,如AIR( algebraic intermediate representations)或Plonkish算术化,这就需要面对如下问题:
在非零值设置下,当考虑sampling domain D = S 1 D=S_1 D=S1的size为 2 31 2^{31} 231,对应的blow-up factor β = 2 \beta=2 β=2时,对Mersenne素数 p = 2 31 − 1 p=2^{31}-1 p=231−1可支持size到 2 30 2^{30} 230的witness domain H H H的almost native Reed-Solomon codes。
当考虑零知识属性时, H H H的最大size 为 2 29 2^{29} 229,采用的disjoint sampling domain D D D within in S 1 S_1 S1 of double the size of H H H。
在标准计算机架构下,Mersenne算术运算可balance掉,基于复数扩域的mixed-radix FFT所引入的加法运算此时。具体benchmark为:
对应上面的等式(3)和(4),基于M31(Mersenne31域)的mixed-radix real FFT,在Apple M1 ARM处理器上和Intel Ice Lake x86处理器上的开销分别为:
∣ H ∣ ⋅ log ∣ H ∣ ⋅ ( 1 2 ⋅ 0.31 + 3 2 ⋅ 0.19 ) ≈ 0.44 ⋅ ∣ H ∣ ⋅ log ∣ H ∣ |H|\cdot \log |H|\cdot (\frac{1}{2}\cdot 0.31+\frac{3}{2}\cdot 0.19)\approx 0.44\cdot |H|\cdot \log |H| ∣H∣⋅log∣H∣⋅(21⋅0.31+23⋅0.19)≈0.44⋅∣H∣⋅log∣H∣
∣ H ∣ ⋅ log ∣ H ∣ ⋅ ( 1 2 ⋅ 0.31 + 3 2 ⋅ 0.09 ) ≈ 0.31 ⋅ ∣ H ∣ ⋅ log ∣ H ∣ |H|\cdot \log |H|\cdot (\frac{1}{2}\cdot 0.31+\frac{3}{2}\cdot 0.09)\approx 0.31\cdot |H|\cdot \log |H| ∣H∣⋅log∣H∣⋅(21⋅0.31+23⋅0.09)≈0.31⋅∣H∣⋅log∣H∣
个clock cycles,而对Baby Bear域应用Cooley-Tukey算法,在Apple M1 ARM处理器上和在Intel Ice Lake x86处理器上开销分别为:
∣ H ∣ ⋅ log ∣ H ∣ ⋅ ( 1 2 ⋅ 0.5 + 1 2 ⋅ 0.19 ) ≈ 0.44 ⋅ ∣ H ∣ ⋅ log ∣ H ∣ |H|\cdot \log |H|\cdot (\frac{1}{2}\cdot 0.5+\frac{1}{2}\cdot 0.19)\approx 0.44\cdot |H|\cdot \log |H| ∣H∣⋅log∣H∣⋅(21⋅0.5+21⋅0.19)≈0.44⋅∣H∣⋅log∣H∣
∣ H ∣ ⋅ log ∣ H ∣ ⋅ ( 1 2 ⋅ 0.44 + 1 2 ⋅ 0.09 ) ≈ 0.31 ⋅ ∣ H ∣ ⋅ log ∣ H ∣ |H|\cdot \log |H|\cdot (\frac{1}{2}\cdot 0.44+\frac{1}{2}\cdot 0.09)\approx 0.31\cdot |H|\cdot \log |H| ∣H∣⋅log∣H∣⋅(21⋅0.44+21⋅0.09)≈0.31⋅∣H∣⋅log∣H∣
因此,基于Mersenne域的almost native Reed-Solomon codes,其性能与具有相同size和高two-adic域 的性能相当,同时,提供了额外更快的域运算。