mirror of https://github.com/zcash/halo2.git
Merge pull request #53 from scroll-tech/setup-optimization
Setup unafe-generation optimization
This commit is contained in:
commit
14263e9208
|
@ -59,15 +59,19 @@ impl<C: CurveAffine> Params<C> {
|
||||||
assert!(k <= E::Scalar::S);
|
assert!(k <= E::Scalar::S);
|
||||||
let n: u64 = 1 << k;
|
let n: u64 = 1 << k;
|
||||||
|
|
||||||
|
// Calculate g = [G1, [s] G1, [s^2] G1, ..., [s^(n-1)] G1] in parallel.
|
||||||
|
let g1 = <E::G1Affine as PrimeCurveAffine>::generator();
|
||||||
let s = E::Scalar::random(OsRng);
|
let s = E::Scalar::random(OsRng);
|
||||||
|
|
||||||
let mut g_projective: Vec<E::G1> = Vec::with_capacity(n as usize);
|
let mut g_projective = vec![E::G1::group_zero(); n as usize];
|
||||||
let g1 = <E::G1Affine as PrimeCurveAffine>::generator();
|
parallelize(&mut g_projective, |g, start| {
|
||||||
g_projective.push(g1.into());
|
let mut current_g: E::G1 = g1.into();
|
||||||
// g = [G1, [s] G1, [s^2] G1, ..., [s^(n-1)] G1]
|
current_g *= s.pow_vartime(&[start as u64]);
|
||||||
for i in 1..(n as usize) {
|
for g in g.iter_mut() {
|
||||||
g_projective.push(g_projective[i - 1] * s);
|
*g = current_g;
|
||||||
|
current_g *= s;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
let g = {
|
let g = {
|
||||||
let mut g = vec![E::G1Affine::identity(); n as usize];
|
let mut g = vec![E::G1Affine::identity(); n as usize];
|
||||||
|
|
Loading…
Reference in New Issue