FFT友好的有限域

本文介绍了在有限域中执行FFT算法(数论变换)所需的n次单位根,并列举了几个常用的FFT友好的有限域,包括Goldilocks Field、Baby Bear Field、Teddy Bear Field、Koala Bear Field、BN-128 field、STARK Field和BLS12-381,以及它们各自的特征和单位根的阶数,并提供了相应的Python代码验证。

为了在有限域中执行 FFT 算法(数论变换),需要存在 -th 个单位根,使得 是 2 的幂。

理想情况下,我们希望 2 的幂尽可能大,这样我们就可以乘更大的多项式。有几个常用的有限域(几乎都有一个朗朗上口的名字)。本文列出了一些较常见的有限域。

简单来说,域的 特征 是我们取模的素数,所以在有限域 中, 是特征。(如果我们考虑有限域扩张,这个定义会有些细微差别,但我们现在不想深入探讨。就我们的目的而言, 是一个素数,并且是有限域的特征)。

正如我们在有限循环群基本定理中看到的,如果子群的阶能整除群的阶,则存在子群。

因此,如果域适合 FFT,则存在某个 使得 且 是一个很大的 2 的幂。换句话说, 可被一个很大的 2 的幂整除。

这里的列表并不完整 —— 我们仅包括截至发布时相对知名的有限域。

适合 FFT 的域列表

Goldilocks 域

Goldilocks 域的特征为 ,并且有 -th 个单位根。

以下 Python 代码断言,该域中存在一个阶为 的乘法子群

q = 2**64 - 2**32 + 1
k = 2**32
assert (q - 1) % k == 0

由于特征小于 64 位,因此元素可以存储在大多数现代硬件(通常为 64 位)上的单个字中。

但是,将两个 64 位数字相乘暂时需要 128 位,这需要额外的寄存器进行乘法运算。

这促使人们使用更小的仅使用 32 位的域。

Baby Bear 域

Baby Bear 域使用特征 。它具有 -th 个单位根。

q = 2**31 - 2**27 + 1
k = 2**27
assert (q - 1) % k == 0

“Baby Bear”这个名称模仿了Goldilocks 的童话,这个故事强调了 Baby Bear 的小尺寸与故事的主角(Goldilocks)相比。

由于该域适合 32 位,因此 64 位计算机可以在单个字中将两个元素相乘。

Teddy Bear 域

Teddy Bear 域使用特征 并且具有 -th 个单位根。

q = 2**32 - 2**30 + 1
k = 2**30
assert (q - 1) % k == 0

与 Baby Bear 域相比,它适合 32 位,但具有更大的、大八倍的乘法子群。

Teddy Bear 域是由 Ingonyama 在这篇论文中提出的。

Koala Bear 域

Koala Bear 域是另一个特征 适合 32 位且具有 -th 个单位根的域。

q = 2**31 - 2**24 + 1
k = 2**24
assert (q - 1) % k == 0

BN-128 域

BN-128 域因其对椭圆曲线配对的支持而被使用,但它也具有相对较大的乘法子群,其阶为 。

## curve_order = 21888242871839275222246405745257275088548364400416034343698204186575808495617
from py_ecc.bn128 import curve_order
k = 2**28
assert (curve_order - 1) % k == 0

STARK 域

Starknet 使用的 Cairo VM 具有特征 ,并且具有非常大的 -th 个单位根。

q = 2**251 + 17*2**192 + 1
k = 2**192
assert (q - 1) % k == 0

BLS12-381

BLS12-381 是另一个配对友好的椭圆曲线,其曲线阶数具有 -th 个单位根。

## curve_order = 52435875175126190479447740508185965837690552500527637822603658699938581184513
from py_ecc.bls12_381 import curve_order
k = 2**32
assert (curve_order - 1) % k == 0

库支持

Plonky3 库 具有 Goldilocks、Baby Bear 和 Koala Bear 的库。

  • 原文链接: rareskills.io/post/fft-f...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
RareSkills
RareSkills
https://www.rareskills.io/