1. 引言
Polygon团队Ulrich Hab¨ock等人2023年论文 Reed-Solomon codes over the circle group。
前序博客有:
- Plonky3 Mersenne素数域的Reed-Solomon codes设计
STARKs支持任意size的域,而不要求是椭圆曲线。STARKs中在选择域size时,越小越好,原因在于:
- 更紧凑的trace表示。越紧凑,相应的FFT运算约cheap。
- 大多数prover not in the extension field:
- commit:FFT运算和hash运算为commit的主要开销。Prover的大部分开销在于commit。
- evaluating constraints:FFT运算为evaluate的主要开销。
STARKs需要更小的域,当前有:
- Plonky2(2021):Goldilocks域: p = 2 64 − 2 32 + 1 p=2^{64}-2^{32}+1 p=264−232+1【64bit素数域】
- RISC Zero(2021):Babybear域: p = 2 31 − 2 17 + 1 p=2^{31}-2^{17}+1 p=231−217+1【31bit素数域】
- Plonky3(2023):约31bit素数域——Mersenne M31域: p = 2 31 − 1 p=2^{31}-1 p=231−1【31bit素数域】
寻找Mersenne域的目的是:
- 相比于Babybear域,具有更快的运算(针对标准CPU架构,如:ARM,x86)
- STARK友好(即FFT友好)
2. Mersenne M31域
Mersenne M31域: p = 2 31 − 1 p=2^{31}-1 p=231−1【31bit素数域】
- 其优点在于:具有非常快的运算。【乘法运算比Babybear快约30%到50%。】
- 其缺点在于:不是FFT友好的。因 p − 1 = 2 31 − 2 = 2 ⋅ ( 2 30 − 1 ) p-1=2^{31}-2=2\cdot(2^{30}-1) p−1=231−2=2⋅(230−1),其仅具有two-adic roots: ± 1 \pm 1 ±1。
可能的应对策略有:
- 1)non-twoadic FFT:不够快。
- 2)像Brakedown中的Expander codes:huge proof sizes,not faster。
- 3)基于椭圆曲线的Algebraic Geometry(AG) codes,如ECFFT:advanced math。
- 4)基于M31域,可使用更简单的Mersenne FFT。
3. 何为Mersenne FFT?
M31域的complex extension表示为:
M 3 1 C = M 31 [ i ] / ( i 2 + 1 ) = { x + i ⋅ y : x , y ∈ M 31 } M31_{\mathbb{C}}=M31[i]/(i^2+1)=\{x+i\cdot y:x,y\in M31\} M31C=M31[i]/(i2+1)={x+i⋅y:x,y∈M31}【有 i 2 = − 1 i^2=-1 i2=−1。】
M31的复数扩域具有如下属性:
- 1)FFT友好性:
∣ M 3 1 C ∗ ∣ = p 2 − 1 = ( p + 1 ) ⋅ ( p − 1 ) = 2 31 ⋅ ( 2 31 − 2 ) |M31_{\mathbb{C}}^*|=p^2-1=(p+1)\cdot (p-1)=2^{31}\cdot (2^{31}-2) ∣M31C∗∣=p2−1=(p+1)⋅(p−1)=231⋅(231−2) - 2) ( p + 1 ) (p+1) (p+1)-th roots of unity属于:【即 2 31 2^{31} 231-th roots of unity属于】
S 1 = { x + i ⋅ y ∈ M 3 1 C : x 2 + y 2 = 1 } S_1=\{x+i\cdot y\in M31_{\mathbb{C}}:x^2+y^2=1\} S1={x+i⋅y∈M31C:x2+y2=1}【有 ∣ S 1 ∣ = 2 31 |S_1|=2^{31} ∣S1∣=231。】
事实上:
x 2 + y 2 = z ⋅ z ˉ = z ⋅ z p = z p + 1 x^2+y^2=z\cdot \bar{z}=z\cdot z^p=z^{p+1} x2+y2=z⋅zˉ=z⋅zp=zp+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。
由于有共轭等价为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。 - 3)对有理数的(知名)FFT 要比 对复数的FFT快得多:【下图的 b b bb bb是指Babybear域。】
原因在于其具有很好的对称性和共轭性:
4. Extrapolation
H H H为 S 1 S_1 S1的subgroup, t ⋅ H t\cdot H t⋅H为a coset, f : H → M 31 f:H\rightarrow M31 f:H→M31为某“real”函数。
如下图所示,黑点表示 H H H subgroup,红点表示 t ⋅ H t\cdot H t⋅H coset。
STARK处理流程中包括:
- FFT-interpolate插值,以获得 f ^ ( z ) \hat{f}(z) f^(z)多项式。
- 基于 t ⋅ H t\cdot H t⋅H对 f ^ ( z ) \hat{f}(z) f^(z)多项式做 FFT-evaluate。【complex output!】
当 f f f为real,且具有zero mean时,对应有如下定理:
5. 结论
可基于M31域获取“almost native” Reed-Solomon codes:
- 基于coset t ⋅ H t\cdot H t⋅H的values可弄成real(“compressed”)。
- 基于M31域的承诺开销,与Babybear域的承诺开销基本相当,甚至会更快。具体取决于所采用的哈希函数。
- 编码开销与native Reed-Solomon相当:
- 基于M31域的FFT开销,与Babybear域的FFT开销基本相当,且有希望能更快。即将完成相应代码实现。
参考资料
[1] Ulrich Hab¨ock等人2023年论文 Reed-Solomon codes over the circle group
[2] 2023年11月视频 “Reed Solomon codes over the circle group" - Ulrich