diff --git a/examples/evm-verifier-with-accumulator.rs b/examples/evm-verifier-with-accumulator.rs index b03fb8a7..e70826f0 100644 --- a/examples/evm-verifier-with-accumulator.rs +++ b/examples/evm-verifier-with-accumulator.rs @@ -453,7 +453,7 @@ mod aggregation { let ctx = RegionCtx::new(region, 0); let ecc_chip = config.ecc_chip(); - let loader = Halo2Loader::new(ecc_chip, ctx); + let loader = Halo2Loader::new(ecc_chip, ctx, G1Affine::random(OsRng)); let KzgAccumulator { lhs, rhs } = aggregate(&self.svk, &loader, &self.snarks, self.as_proof()); diff --git a/src/loader/halo2/loader.rs b/src/loader/halo2/loader.rs index 10680386..0943a0d5 100644 --- a/src/loader/halo2/loader.rs +++ b/src/loader/halo2/loader.rs @@ -4,13 +4,12 @@ use crate::{ EcPointLoader, LoadedEcPoint, LoadedScalar, Loader, ScalarLoader, }, util::{ - arithmetic::{Curve, CurveAffine, Field, FieldExt, FieldOps, Group}, + arithmetic::{CurveAffine, Field, FieldExt, FieldOps}, Itertools, }, }; use halo2_proofs::circuit::{self, Region}; use halo2_wrong_ecc::maingate::RegionCtx; -use rand::rngs::OsRng; use std::{ cell::{Ref, RefCell}, collections::btree_map::{BTreeMap, Entry}, @@ -30,6 +29,7 @@ pub struct Halo2Loader<'a, C: CurveAffine, N: FieldExt, EccChip: EccInstructions num_scalar: RefCell, num_ec_point: RefCell, const_ec_point: RefCell>>, + aux_generator: C, _marker: PhantomData, #[cfg(test)] row_meterings: RefCell>, @@ -38,13 +38,14 @@ pub struct Halo2Loader<'a, C: CurveAffine, N: FieldExt, EccChip: EccInstructions impl<'a, C: CurveAffine, N: FieldExt, EccChip: EccInstructions> Halo2Loader<'a, C, N, EccChip> { - pub fn new(ecc_chip: EccChip, ctx: RegionCtx<'a, N>) -> Rc { + pub fn new(ecc_chip: EccChip, ctx: RegionCtx<'a, N>, aux_generator: C) -> Rc { Rc::new(Self { ecc_chip: RefCell::new(ecc_chip), ctx: RefCell::new(ctx), num_scalar: RefCell::default(), num_ec_point: RefCell::default(), const_ec_point: RefCell::default(), + aux_generator, #[cfg(test)] row_meterings: RefCell::default(), _marker: PhantomData, @@ -522,13 +523,12 @@ impl<'a, C: CurveAffine, N: FieldExt, EccChip: EccInstructions> LoadedEcPo .chain(if scaled.is_empty() { None } else { - let aux_generator = C::CurveExt::random(OsRng).to_affine(); loader .ecc_chip .borrow_mut() .assign_aux_generator( &mut loader.ctx.borrow_mut(), - circuit::Value::known(aux_generator), + circuit::Value::known(loader.aux_generator), ) .unwrap(); loader diff --git a/src/system/halo2/test/kzg/halo2.rs b/src/system/halo2/test/kzg/halo2.rs index d5b6c865..922c49e1 100644 --- a/src/system/halo2/test/kzg/halo2.rs +++ b/src/system/halo2/test/kzg/halo2.rs @@ -47,6 +47,7 @@ use halo2_wrong_ecc::{ }; use halo2_wrong_transcript::NativeRepresentation; use paste::paste; +use rand::rngs::OsRng; use rand_chacha::{rand_core::SeedableRng, ChaCha20Rng}; use std::{iter, rc::Rc}; @@ -299,7 +300,7 @@ impl Circuit for Accumulation { let ctx = RegionCtx::new(region, 0); let ecc_chip = config.ecc_chip(); - let loader = Halo2Loader::new(ecc_chip, ctx); + let loader = Halo2Loader::new(ecc_chip, ctx, G1Affine::random(OsRng)); let KzgAccumulator { lhs, rhs } = accumulate( &self.svk, &loader,