diff --git a/crypto/Cargo.toml b/crypto/Cargo.toml index 78ccd9263..ec6eb1e57 100644 --- a/crypto/Cargo.toml +++ b/crypto/Cargo.toml @@ -20,6 +20,7 @@ rayon = { version = "1.8.0", optional = true } criterion = "0.4" iai-callgrind.workspace = true rand = "0.8.5" +rand_chacha = "0.3.1" [features] default = ["std"] @@ -39,3 +40,7 @@ harness = false [[bench]] name= "criterion_poseidon" harness=false + +[[bench]] +name= "criterion_pedersen" +harness=false diff --git a/crypto/benches/criterion_pedersen.rs b/crypto/benches/criterion_pedersen.rs new file mode 100644 index 000000000..f96f04f72 --- /dev/null +++ b/crypto/benches/criterion_pedersen.rs @@ -0,0 +1,27 @@ +use criterion::{black_box, criterion_group, criterion_main, Criterion}; +use lambdaworks_crypto::hash::pedersen::Pedersen; +use lambdaworks_math::field::element::FieldElement; +use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark252PrimeField; +use lambdaworks_math::traits::ByteConversion; +use rand::{RngCore, SeedableRng}; +use rand_chacha::ChaCha8Rng; + +fn pedersen_benchmarks(c: &mut Criterion) { + let mut rng = ChaCha8Rng::seed_from_u64(2); + let mut felt1: [u8; 32] = Default::default(); + rng.fill_bytes(&mut felt1); + let mut felt2: [u8; 32] = Default::default(); + rng.fill_bytes(&mut felt2); + + let x = FieldElement::::from_bytes_be(&felt1).unwrap(); + let y = FieldElement::::from_bytes_be(&felt2).unwrap(); + let mut group = c.benchmark_group("Pedersen Benchmark"); + let pedersen = black_box(Pedersen::default()); + + // Benchmark with black_box is 0.41% faster + group.bench_function("Hashing with black_box", |bench| { + bench.iter(|| black_box(pedersen.hash(&x, &y))) + }); +} +criterion_group!(pedersen, pedersen_benchmarks); +criterion_main!(pedersen); diff --git a/crypto/src/hash/pedersen/mod.rs b/crypto/src/hash/pedersen/mod.rs index 507f3b20c..f90139792 100644 --- a/crypto/src/hash/pedersen/mod.rs +++ b/crypto/src/hash/pedersen/mod.rs @@ -1,5 +1,4 @@ use lambdaworks_math::{ - cyclic_group::IsGroup, elliptic_curve::short_weierstrass::{ curves::stark_curve::StarkCurve, point::ShortWeierstrassProjectivePoint, }, @@ -69,7 +68,7 @@ impl Pedersen { let offset = bools_to_usize_le(v); if offset > 0 { // Table lookup at 'offset-1' in table for chunk 'i' - *acc = acc.operate_with(&prep[i * self.params.table_size + offset - 1]); + *acc = acc.operate_with_affine(&prep[i * self.params.table_size + offset - 1]); } }) } diff --git a/examples/prove-miden/Cargo.toml b/examples/prove-miden/Cargo.toml index c2af9514f..75823a93a 100644 --- a/examples/prove-miden/Cargo.toml +++ b/examples/prove-miden/Cargo.toml @@ -13,7 +13,7 @@ path = "src/main.rs" lambdaworks-crypto = { workspace = true } lambdaworks-math = { workspace = true, features = ["lambdaworks-serde-string"] } lambdaworks-winterfell-adapter = { workspace = true } -stark-platinum-prover = { git = "https://github.com/lambdaclass/lambdaworks" , rev = "3da725de1e6f76c04ddbb3ccb67e6038a7663134", features = ["winter_compatibility"] } +stark-platinum-prover = { git = "https://github.com/lambdaclass/lambdaworks" , branch = "miden-version", features = ["winter_compatibility"] } serde = { version = "1.0" } serde_json = "1" diff --git a/provers/cairo/src/wasm_wrappers.rs b/provers/cairo/src/wasm_wrappers.rs index 43fd398ae..7ab9f3c14 100644 --- a/provers/cairo/src/wasm_wrappers.rs +++ b/provers/cairo/src/wasm_wrappers.rs @@ -4,15 +4,11 @@ use lambdaworks_math::field::fields::fft_friendly::stark_252_prime_field::Stark2 use serde::{Deserialize, Serialize}; use stark_platinum_prover::proof::options::ProofOptions; use stark_platinum_prover::proof::options::SecurityLevel; -use stark_platinum_prover::proof::stark::StarkProof; use stark_platinum_prover::transcript::StoneProverTranscript; use stark_platinum_prover::verifier::{IsStarkVerifier, Verifier}; use std::collections::HashMap; use wasm_bindgen::prelude::wasm_bindgen; -#[wasm_bindgen] -pub struct Stark252PrimeFieldProof(StarkProof); - #[wasm_bindgen] #[derive(Debug, Clone, Copy, Serialize, Deserialize, Eq, PartialEq, Hash)] pub struct FE(FieldElement); diff --git a/provers/winterfell_adapter/Cargo.toml b/provers/winterfell_adapter/Cargo.toml index 00ed4d150..3daecf6d9 100644 --- a/provers/winterfell_adapter/Cargo.toml +++ b/provers/winterfell_adapter/Cargo.toml @@ -5,8 +5,8 @@ edition.workspace = true license.workspace = true [dependencies] -lambdaworks-math = { git = "https://github.com/lambdaclass/lambdaworks", rev = "3da725de1e6f76c04ddbb3ccb67e6038a7663134", features = ["winter_compatibility"] } -stark-platinum-prover = { git = "https://github.com/lambdaclass/lambdaworks" , rev = "3da725de1e6f76c04ddbb3ccb67e6038a7663134", features = ["winter_compatibility"] } +lambdaworks-math = { git = "https://github.com/lambdaclass/lambdaworks", branch = "miden-version", features = ["winter_compatibility"] } +stark-platinum-prover = { git = "https://github.com/lambdaclass/lambdaworks" , branch = "miden-version", features = ["winter_compatibility"] } rand = "0.8.5" winter-air = { package = "winter-air", version = "0.6.4", default-features = false } winter-prover = { package = "winter-prover", version = "0.6.4", default-features = false }