diff --git a/Cargo.toml b/Cargo.toml index c102f2d..a3c07e4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,26 +6,26 @@ edition = "2021" [dependencies] crossbeam-channel = "0.5" -ark-ff = { version = "0.4.2", default-features = false } -ark-ec = { version = "0.4.2", default-features = false } -ark-serialize = { version = "^0.4.2", default-features = false, features = [ "derive" ] } -ark-poly = { version = "^0.4.2", default-features = false } -ark-std = { version = "^0.4.0", default-features = false } -ark-relations = { version = "^0.4.0", default-features = false } -ark-crypto-primitives = { version = "^0.4.0", default-features = false } -ark-groth16 = { version = "^0.4.0", default-features = false } -rand = { version = "0.8" } -rand_core = { version = "^0.6" } +ark-ff = { version = "0.5.0", default-features = false } +ark-ec = { version = "0.5.0", default-features = false } +ark-serialize = { version = "^0.5.0", default-features = false, features = ["derive"] } +ark-poly = { version = "^0.5.0", default-features = false } +ark-std = { version = "^0.5.0", default-features = false } +ark-relations = { version = "^0.5.1", default-features = false } +ark-crypto-primitives = { version = "^0.5.0", default-features = false } +ark-groth16 = { version = "^0.5.0", default-features = false } +rand = "0.8" +rand_core = "^0.6" digest = { version = "0.10.7" } sha2 = { version = "^0.10" } rayon = { version = "1", optional = true } -thiserror = { version = "^1.0" } +thiserror = "^2.0" merlin = { version = "^3.0" } [dev-dependencies] -ark-bls12-381 = { version = "^0.4.0", default-features = false, features = ["curve"] } +ark-bls12-381 = { version = "^0.5.0", default-features = false, features = ["curve"] } rand_chacha = "0.3" -criterion = "0.5.1" +criterion = "0.7.0" [features] default = ["parallel"] diff --git a/src/commitment.rs b/src/commitment.rs index 9f5dec5..6098499 100644 --- a/src/commitment.rs +++ b/src/commitment.rs @@ -192,7 +192,7 @@ mod tests { use super::*; use crate::srs::structured_generators_scalar_power; use ark_bls12_381::{Bls12_381 as Bls12, Fr, G1Projective, G2Projective}; - use ark_ec::Group; + use ark_ec::PrimeGroup; use ark_std::UniformRand; use rand_core::SeedableRng; diff --git a/src/srs.rs b/src/srs.rs index 2ed923e..b910705 100644 --- a/src/srs.rs +++ b/src/srs.rs @@ -1,8 +1,7 @@ -use ark_ec::scalar_mul::fixed_base::FixedBase; +use ark_ec::scalar_mul::BatchMulPreprocessing; // msm::FixedBaseMSM; -use ark_ec::{pairing::Pairing, AffineRepr, CurveGroup, Group}; +use ark_ec::{pairing::Pairing, AffineRepr, CurveGroup, PrimeGroup}; // {AffineCurve, PairingEngine, ProjectiveCurve}; -use ark_ff::PrimeField; use ark_serialize::{CanonicalDeserialize, CanonicalSerialize, SerializationError}; use ark_std::{rand::Rng, One, UniformRand}; use sha2::{Digest, Sha256}; @@ -299,20 +298,12 @@ pub(crate) fn structured_generators_scalar_power( powers_of_scalar.push(pow_s); pow_s.mul_assign(s); } - let scalar_bits = G::ScalarField::MODULUS_BIT_SIZE as usize; - let window_size = FixedBase::get_mul_window_size(num); - let g_table = FixedBase::get_window_table::(scalar_bits, window_size, g.clone()); - let powers_of_g = FixedBase::msm::( - //let powers_of_g = msm::fixed_base::multi_scalar_mul::( - scalar_bits, - window_size, - &g_table, - &powers_of_scalar[..], - ); - powers_of_g.into_iter().map(|v| v.into_affine()).collect() + + let g_table = BatchMulPreprocessing::new(g.clone(), num); + g_table.batch_mul(&powers_of_scalar[..]) } -fn write_vec(mut w: W, v: &[G]) -> Result<(), SerializationError> { +fn write_vec(mut w: W, v: &[G]) -> Result<(), SerializationError> { for p in v { p.serialize_compressed(&mut w)?; } diff --git a/src/transcript.rs b/src/transcript.rs index cdaf05b..729e28a 100644 --- a/src/transcript.rs +++ b/src/transcript.rs @@ -58,7 +58,7 @@ impl Transcript for Merlin { mod test { use super::*; use ark_bls12_381::{Fr, G1Projective}; - use ark_ec::Group; + use ark_ec::PrimeGroup; #[test] fn transcript() {