本文共 828 字,大约阅读时间需要 2 分钟。
目前的实现主要包括以下几种方式:
https://github.com/ebfull/halo/blob/master/src/util.rs
)实现了两种新的曲线;https://github.com/0xProject/OpenZKP/blob/master/algebra/primefield/src/fft.rs
)实现了251-bit素域的FFT。在进行多项式承诺时,需要注意以下数学性质:
factor(p-1) = 2^s * t
决定,其中2^s
决定了多项式的最高阶数。2^s
。此外,多项式承诺通常采用数域中的值进行系数乘积计算,以实现高效的组合。
在Zexe的FFT模块中,计算2^s
阶的单位根时,首先计算多项式的大小并提升到最近的2的幂次,例如:
let size = num_coeffs.next_power_of_two() as u64;let log_size_of_group = size.trailing_zeros();if log_size_of_group >= F::Params::TWO_ADICITY { return None;}
然后计算生成器并提升其阶数:
let mut group_gen = F::root_of_unity();for _ in log_size_of_group..F::Params::TWO_ADICITY { group_gen.square_in_place();}
这些实现为多项式承诺提供了基础支持,确保计算的正确性和效率。
转载地址:http://crmx.baihongyu.com/