diff --git a/Cargo.toml b/Cargo.toml index b68e1f6d..fdc91633 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -165,4 +165,4 @@ spongefish = { git = "https://github.com/arkworks-rs/spongefish", features = [ "ark-ff", "sha2", ], rev = "fcc277f8a857fdeeadd7cca92ab08de63b1ff1a1" } spongefish-pow = { git = "https://github.com/arkworks-rs/spongefish", rev = "fcc277f8a857fdeeadd7cca92ab08de63b1ff1a1" } -whir = { git = "https://github.com/WizardOfMenlo/whir/", rev = "3056565b90931c28f725f6655d954bd8f17eaaf6", features = ["tracing"] } +whir = { git = "https://github.com/WizardOfMenlo/whir/", rev = "ec295ced976c3dc2277a20e1048f928dbfd03bbd", features = ["tracing"] } diff --git a/provekit/common/src/utils/zk_utils.rs b/provekit/common/src/utils/zk_utils.rs index f6b7b6f0..7d354eb5 100644 --- a/provekit/common/src/utils/zk_utils.rs +++ b/provekit/common/src/utils/zk_utils.rs @@ -4,9 +4,9 @@ use { rayon::prelude::*, whir::algebra::{ dot, + linear_form::Covector, ntt::wavelet_transform, polynomials::{CoefficientList, EvaluationsList}, - weights::Covector, }, }; diff --git a/provekit/prover/src/whir_r1cs.rs b/provekit/prover/src/whir_r1cs.rs index 82c7c2b2..c8317ab7 100644 --- a/provekit/prover/src/whir_r1cs.rs +++ b/provekit/prover/src/whir_r1cs.rs @@ -23,9 +23,8 @@ use { tracing::{debug, instrument}, whir::{ algebra::{ - embedding::Basefield, + linear_form::{Covector, LinearForm}, polynomials::{CoefficientList, EvaluationsList, MultilinearPoint}, - weights::{Covector, Evaluate}, }, protocols::whir::Witness, transcript::{ProverState, VerifierMessage}, @@ -191,9 +190,9 @@ impl WhirR1CSProver for WhirR1CSScheme { &commitment.random_polynomial_coeff, ); - let weight_refs: Vec<&dyn Evaluate>> = weights + let weight_refs: Vec<&dyn LinearForm> = weights .iter() - .map(|w| w as &dyn Evaluate>) + .map(|w| w as &dyn LinearForm) .collect(); run_zk_whir_pcs_prover( @@ -305,9 +304,9 @@ impl WhirR1CSProver for WhirR1CSScheme { .flat_map(|w| poly_evals.iter().map(|pe| covector_dot(w, pe))) .collect(); - let weight_refs: Vec<&dyn Evaluate>> = all_weights + let weight_refs: Vec<&dyn LinearForm> = all_weights .iter() - .map(|w| w as &dyn Evaluate>) + .map(|w| w as &dyn LinearForm) .collect(); run_zk_whir_pcs_prover( @@ -619,9 +618,9 @@ pub fn run_zk_sumcheck_prover( &blindings_blind_polynomial, ); - let blinding_weight_refs: Vec<&dyn Evaluate>> = blinding_weights + let blinding_weight_refs: Vec<&dyn LinearForm> = blinding_weights .iter() - .map(|w| w as &dyn Evaluate>) + .map(|w| w as &dyn LinearForm) .collect(); let (_sums, _deferred) = run_zk_whir_pcs_prover( @@ -711,14 +710,15 @@ fn compute_evaluations_single( pub fn run_zk_whir_pcs_prover( witnesses: &[&Witness], polynomials: &[&CoefficientList], - weights: &[&dyn Evaluate>], + linear_forms: &[&dyn LinearForm], evaluations: &[FieldElement], params: &WhirConfig, merlin: &mut ProverState, ) -> (MultilinearPoint, Vec) { debug!("WHIR Parameters: {params}"); - let (randomness, deferred) = params.prove(merlin, polynomials, witnesses, weights, evaluations); + let (randomness, deferred) = + params.prove(merlin, polynomials, witnesses, linear_forms, evaluations); (randomness, deferred) } diff --git a/provekit/verifier/src/whir_r1cs.rs b/provekit/verifier/src/whir_r1cs.rs index 83163c94..cb860bed 100644 --- a/provekit/verifier/src/whir_r1cs.rs +++ b/provekit/verifier/src/whir_r1cs.rs @@ -11,8 +11,8 @@ use { tracing::instrument, whir::{ algebra::{ + linear_form::{Covector, LinearForm}, polynomials::MultilinearPoint, - weights::{Covector, Weights}, }, protocols::whir::Commitment, transcript::{codecs::Empty, Proof, VerifierMessage, VerifierState}, @@ -153,9 +153,9 @@ impl WhirR1CSVerifier for WhirR1CSScheme { let mut all_evaluations = evaluations_1; all_evaluations.extend(evaluations_2); - let weight_refs: Vec<&dyn Weights> = all_weights + let weight_refs: Vec<&dyn LinearForm> = all_weights .iter() - .map(|w| w as &dyn Weights) + .map(|w| w as &dyn LinearForm) .collect(); let commitment_refs: Vec<&Commitment> = vec![&commitment_1, &commitment_2]; @@ -202,9 +202,9 @@ impl WhirR1CSVerifier for WhirR1CSScheme { ); } - let weight_refs: Vec<&dyn Weights> = weights + let weight_refs: Vec<&dyn LinearForm> = weights .iter() - .map(|w| w as &dyn Weights) + .map(|w| w as &dyn LinearForm) .collect(); let (whir_folding_randomness, deferred_evals) = run_whir_pcs_verifier( @@ -464,9 +464,9 @@ pub fn run_sumcheck_verifier( ]), ); - let blinding_weight_refs: Vec<&dyn Weights> = blinding_weights + let blinding_weight_refs: Vec<&dyn LinearForm> = blinding_weights .iter() - .map(|w| w as &dyn Weights) + .map(|w| w as &dyn LinearForm) .collect(); run_whir_pcs_verifier( @@ -492,7 +492,7 @@ pub fn run_whir_pcs_verifier( arthur: &mut VerifierState<'_, TranscriptSponge>, params: &WhirConfig, commitments: &[&Commitment], - weights: &[&dyn Weights], + weights: &[&dyn LinearForm], evaluations: &[FieldElement], ) -> Result<(MultilinearPoint, Vec)> { let (folding_randomness, deferred) =