From 0e58efdcc18478676f861b5c74e7db9ff07f83b1 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Tue, 25 Oct 2022 10:08:21 +0200 Subject: [PATCH] Remove Config from `CommonCircuitData` --- evm/src/recursive_verifier.rs | 4 +-- plonky2/examples/bench_recursion.rs | 8 ++--- plonky2/src/iop/generator.rs | 2 +- plonky2/src/plonk/circuit_data.rs | 20 ++++------- .../plonk/conditional_recursive_verifier.rs | 20 +++++------ plonky2/src/plonk/get_challenges.rs | 20 +++++------ plonky2/src/plonk/proof.rs | 12 +++---- plonky2/src/plonk/prover.rs | 10 +++--- plonky2/src/plonk/recursive_verifier.rs | 32 ++++++++--------- plonky2/src/plonk/validate_shape.rs | 4 +-- plonky2/src/plonk/vanishing_poly.rs | 19 +++++----- plonky2/src/plonk/verifier.rs | 6 ++-- plonky2/src/util/serialization.rs | 36 +++++++++---------- 13 files changed, 94 insertions(+), 99 deletions(-) diff --git a/evm/src/recursive_verifier.rs b/evm/src/recursive_verifier.rs index bc64bb57..445497f8 100644 --- a/evm/src/recursive_verifier.rs +++ b/evm/src/recursive_verifier.rs @@ -235,7 +235,7 @@ impl, C: GenericConfig, const D: usize> .zip(verifier_data_target) .enumerate() { - builder.verify_proof( + builder.verify_proof::( recursive_proof, &verifier_data_target, &verifier_data[i].common, @@ -579,7 +579,7 @@ where { let recursive_proofs = std::array::from_fn(|i| { let verifier_data = &verifier_data[i]; - builder.add_virtual_proof_with_pis(&verifier_data.common) + builder.add_virtual_proof_with_pis::(&verifier_data.common) }); let verifier_data = std::array::from_fn(|i| { let verifier_data = &verifier_data[i]; diff --git a/plonky2/examples/bench_recursion.rs b/plonky2/examples/bench_recursion.rs index f4379e7a..c9d24be7 100644 --- a/plonky2/examples/bench_recursion.rs +++ b/plonky2/examples/bench_recursion.rs @@ -32,7 +32,7 @@ use structopt::StructOpt; type ProofTuple = ( ProofWithPublicInputs, VerifierOnlyCircuitData, - CommonCircuitData, + CommonCircuitData, ); #[derive(Clone, StructOpt, Debug)] @@ -112,7 +112,7 @@ where let (inner_proof, inner_vd, inner_cd) = inner; let mut builder = CircuitBuilder::::new(config.clone()); let mut pw = PartialWitness::new(); - let pt = builder.add_virtual_proof_with_pis(inner_cd); + let pt = builder.add_virtual_proof_with_pis::(inner_cd); pw.set_proof_with_pis_target(&pt, inner_proof); let inner_data = VerifierCircuitTarget { @@ -121,7 +121,7 @@ where }; pw.set_verifier_data_target(&inner_data, inner_vd); - builder.verify_proof(pt, &inner_data, inner_cd); + builder.verify_proof::(pt, &inner_data, inner_cd); builder.print_gate_counts(0); if let Some(min_degree_bits) = min_degree_bits { @@ -150,7 +150,7 @@ where fn test_serialization, C: GenericConfig, const D: usize>( proof: &ProofWithPublicInputs, vd: &VerifierOnlyCircuitData, - cd: &CommonCircuitData, + cd: &CommonCircuitData, ) -> Result<()> where [(); C::Hasher::HASH_SIZE]:, diff --git a/plonky2/src/iop/generator.rs b/plonky2/src/iop/generator.rs index 3614b2e4..9948198e 100644 --- a/plonky2/src/iop/generator.rs +++ b/plonky2/src/iop/generator.rs @@ -22,7 +22,7 @@ pub(crate) fn generate_partial_witness< >( inputs: PartialWitness, prover_data: &'a ProverOnlyCircuitData, - common_data: &'a CommonCircuitData, + common_data: &'a CommonCircuitData, ) -> PartitionWitness<'a, F> { let config = &common_data.config; let generators = &prover_data.generators; diff --git a/plonky2/src/plonk/circuit_data.rs b/plonky2/src/plonk/circuit_data.rs index 5143e730..b3747159 100644 --- a/plonky2/src/plonk/circuit_data.rs +++ b/plonky2/src/plonk/circuit_data.rs @@ -106,7 +106,7 @@ impl CircuitConfig { pub struct CircuitData, C: GenericConfig, const D: usize> { pub prover_only: ProverOnlyCircuitData, pub verifier_only: VerifierOnlyCircuitData, - pub common: CommonCircuitData, + pub common: CommonCircuitData, } impl, C: GenericConfig, const D: usize> @@ -196,7 +196,7 @@ pub struct ProverCircuitData< const D: usize, > { pub prover_only: ProverOnlyCircuitData, - pub common: CommonCircuitData, + pub common: CommonCircuitData, } impl, C: GenericConfig, const D: usize> @@ -223,7 +223,7 @@ pub struct VerifierCircuitData< const D: usize, > { pub verifier_only: VerifierOnlyCircuitData, - pub common: CommonCircuitData, + pub common: CommonCircuitData, } impl, C: GenericConfig, const D: usize> @@ -287,17 +287,13 @@ pub struct VerifierOnlyCircuitData, const D: usize> { /// Circuit data required by both the prover and the verifier. #[derive(Debug, Eq, PartialEq)] -pub struct CommonCircuitData< - F: RichField + Extendable, - C: GenericConfig, - const D: usize, -> { +pub struct CommonCircuitData, const D: usize> { pub config: CircuitConfig, pub(crate) fri_params: FriParams, /// The types of gates used in this circuit, along with their prefixes. - pub(crate) gates: Vec>, + pub(crate) gates: Vec>, /// Information on the circuit's selector polynomials. pub(crate) selectors_info: SelectorsInfo, @@ -314,15 +310,13 @@ pub struct CommonCircuitData< pub(crate) num_public_inputs: usize, /// The `{k_i}` valued used in `S_ID_i` in Plonk's permutation argument. - pub(crate) k_is: Vec, + pub(crate) k_is: Vec, /// The number of partial products needed to compute the `Z` polynomials. pub(crate) num_partial_products: usize, } -impl, C: GenericConfig, const D: usize> - CommonCircuitData -{ +impl, const D: usize> CommonCircuitData { pub const fn degree_bits(&self) -> usize { self.fri_params.degree_bits } diff --git a/plonky2/src/plonk/conditional_recursive_verifier.rs b/plonky2/src/plonk/conditional_recursive_verifier.rs index 2c406904..4f54ec3f 100644 --- a/plonky2/src/plonk/conditional_recursive_verifier.rs +++ b/plonky2/src/plonk/conditional_recursive_verifier.rs @@ -30,7 +30,7 @@ pub(crate) fn dummy_proof< C: GenericConfig, const D: usize, >( - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result<( ProofWithPublicInputs, VerifierOnlyCircuitData, @@ -80,7 +80,7 @@ impl, const D: usize> CircuitBuilder { inner_verifier_data0: &VerifierCircuitTarget, proof_with_pis1: &ProofWithPublicInputsTarget, inner_verifier_data1: &VerifierCircuitTarget, - inner_common_data: &CommonCircuitData, + inner_common_data: &CommonCircuitData, ) where C::Hasher: AlgebraicHasher, { @@ -144,7 +144,7 @@ impl, const D: usize> CircuitBuilder { ), }; - self.verify_proof(selected_proof, &selected_verifier_data, inner_common_data); + self.verify_proof::(selected_proof, &selected_verifier_data, inner_common_data); } /// Conditionally verify a proof with a new generated dummy proof. @@ -153,18 +153,18 @@ impl, const D: usize> CircuitBuilder { condition: BoolTarget, proof_with_pis: &ProofWithPublicInputsTarget, inner_verifier_data: &VerifierCircuitTarget, - inner_common_data: &CommonCircuitData, + inner_common_data: &CommonCircuitData, ) -> (ProofWithPublicInputsTarget, VerifierCircuitTarget) where C::Hasher: AlgebraicHasher, { - let dummy_proof = self.add_virtual_proof_with_pis(inner_common_data); + let dummy_proof = self.add_virtual_proof_with_pis::(inner_common_data); let dummy_verifier_data = VerifierCircuitTarget { constants_sigmas_cap: self .add_virtual_cap(inner_common_data.config.fri_config.cap_height), circuit_digest: self.add_virtual_hash(), }; - self.conditionally_verify_proof( + self.conditionally_verify_proof::( condition, proof_with_pis, inner_verifier_data, @@ -406,10 +406,10 @@ mod tests { // Conditionally verify the two proofs. let mut builder = CircuitBuilder::::new(config); let mut pw = PartialWitness::new(); - let pt = builder.add_virtual_proof_with_pis(&data.common); + let pt = builder.add_virtual_proof_with_pis::(&data.common); pw.set_proof_with_pis_target(&pt, &proof); - let dummy_pt = builder.add_virtual_proof_with_pis(&data.common); - pw.set_proof_with_pis_target(&dummy_pt, &dummy_proof); + let dummy_pt = builder.add_virtual_proof_with_pis::(&data.common); + pw.set_proof_with_pis_target::(&dummy_pt, &dummy_proof); let inner_data = VerifierCircuitTarget { constants_sigmas_cap: builder.add_virtual_cap(data.common.config.fri_config.cap_height), circuit_digest: builder.add_virtual_hash(), @@ -421,7 +421,7 @@ mod tests { }; pw.set_verifier_data_target(&dummy_inner_data, &dummy_data); let b = builder.constant_bool(F::rand().0 % 2 == 0); - builder.conditionally_verify_proof( + builder.conditionally_verify_proof::( b, &pt, &inner_data, diff --git a/plonky2/src/plonk/get_challenges.rs b/plonky2/src/plonk/get_challenges.rs index f497380f..116529e7 100644 --- a/plonky2/src/plonk/get_challenges.rs +++ b/plonky2/src/plonk/get_challenges.rs @@ -30,7 +30,7 @@ fn get_challenges, C: GenericConfig, cons final_poly: &PolynomialCoeffs, pow_witness: F, circuit_digest: &<>::Hasher as Hasher>::Hash, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result> { let config = &common_data.config; let num_challenges = config.num_challenges; @@ -74,7 +74,7 @@ impl, C: GenericConfig, const D: usize> pub(crate) fn fri_query_indices( &self, circuit_digest: &<>::Hasher as Hasher>::Hash, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result> { Ok(self .get_challenges(self.get_public_inputs_hash(), circuit_digest, common_data)? @@ -87,7 +87,7 @@ impl, C: GenericConfig, const D: usize> &self, public_inputs_hash: <>::InnerHasher as Hasher>::Hash, circuit_digest: &<>::Hasher as Hasher>::Hash, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result> { let Proof { wires_cap, @@ -103,7 +103,7 @@ impl, C: GenericConfig, const D: usize> }, } = &self.proof; - get_challenges( + get_challenges::( public_inputs_hash, wires_cap, plonk_zs_partial_products_cap, @@ -126,7 +126,7 @@ impl, C: GenericConfig, const D: usize> &self, public_inputs_hash: <>::InnerHasher as Hasher>::Hash, circuit_digest: &<>::Hasher as Hasher>::Hash, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result> { let CompressedProof { wires_cap, @@ -142,7 +142,7 @@ impl, C: GenericConfig, const D: usize> }, } = &self.proof; - get_challenges( + get_challenges::( public_inputs_hash, wires_cap, plonk_zs_partial_products_cap, @@ -160,7 +160,7 @@ impl, C: GenericConfig, const D: usize> pub(crate) fn get_inferred_elements( &self, challenges: &ProofChallenges, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> FriInferredElements { let ProofChallenges { plonk_zeta, @@ -244,7 +244,7 @@ impl, const D: usize> CircuitBuilder { final_poly: &PolynomialCoeffsExtTarget, pow_witness: Target, inner_circuit_digest: HashOutTarget, - inner_common_data: &CommonCircuitData, + inner_common_data: &CommonCircuitData, ) -> ProofChallengesTarget where C::Hasher: AlgebraicHasher, @@ -292,7 +292,7 @@ impl ProofWithPublicInputsTarget { builder: &mut CircuitBuilder, public_inputs_hash: HashOutTarget, inner_circuit_digest: HashOutTarget, - inner_common_data: &CommonCircuitData, + inner_common_data: &CommonCircuitData, ) -> ProofChallengesTarget where C::Hasher: AlgebraicHasher, @@ -311,7 +311,7 @@ impl ProofWithPublicInputsTarget { }, } = &self.proof; - builder.get_challenges( + builder.get_challenges::( public_inputs_hash, wires_cap, plonk_zs_partial_products_cap, diff --git a/plonky2/src/plonk/proof.rs b/plonky2/src/plonk/proof.rs index 2ec26c75..1a7a26db 100644 --- a/plonky2/src/plonk/proof.rs +++ b/plonky2/src/plonk/proof.rs @@ -82,7 +82,7 @@ impl, C: GenericConfig, const D: usize> pub fn compress( self, circuit_digest: &<>::Hasher as Hasher>::Hash, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result> { let indices = self.fri_query_indices(circuit_digest, common_data)?; let compressed_proof = self.proof.compress(&indices, &common_data.fri_params); @@ -106,7 +106,7 @@ impl, C: GenericConfig, const D: usize> pub fn from_bytes( bytes: Vec, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result { let mut buffer = Buffer::new(bytes); let proof = buffer.read_proof_with_public_inputs(common_data)?; @@ -178,7 +178,7 @@ impl, C: GenericConfig, const D: usize> pub fn decompress( self, circuit_digest: &<>::Hasher as Hasher>::Hash, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result> where [(); C::Hasher::HASH_SIZE]:, @@ -198,7 +198,7 @@ impl, C: GenericConfig, const D: usize> pub(crate) fn verify( self, verifier_data: &VerifierOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result<()> where [(); C::Hasher::HASH_SIZE]:, @@ -240,7 +240,7 @@ impl, C: GenericConfig, const D: usize> pub fn from_bytes( bytes: Vec, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result { let mut buffer = Buffer::new(bytes); let proof = buffer.read_compressed_proof_with_public_inputs(common_data)?; @@ -303,7 +303,7 @@ impl, const D: usize> OpeningSet { wires_commitment: &PolynomialBatch, zs_partial_products_commitment: &PolynomialBatch, quotient_polys_commitment: &PolynomialBatch, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Self { let eval_commitment = |z: F::Extension, c: &PolynomialBatch| { c.polynomials diff --git a/plonky2/src/plonk/prover.rs b/plonky2/src/plonk/prover.rs index 8476a2d9..621f20ef 100644 --- a/plonky2/src/plonk/prover.rs +++ b/plonky2/src/plonk/prover.rs @@ -28,7 +28,7 @@ use crate::util::transpose; pub fn prove, C: GenericConfig, const D: usize>( prover_data: &ProverOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, inputs: PartialWitness, timing: &mut TimingTree, ) -> Result> @@ -233,7 +233,7 @@ fn all_wires_permutation_partial_products< betas: &[F], gammas: &[F], prover_data: &ProverOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Vec>> { (0..common_data.config.num_challenges) .map(|i| { @@ -260,7 +260,7 @@ fn wires_permutation_partial_products_and_zs< beta: F, gamma: F, prover_data: &ProverOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Vec> { let degree = common_data.quotient_degree_factor; let subgroup = &prover_data.subgroup; @@ -318,7 +318,7 @@ fn compute_quotient_polys< C: GenericConfig, const D: usize, >( - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, prover_data: &'a ProverOnlyCircuitData, public_inputs_hash: &<>::InnerHasher as Hasher>::Hash, wires_commitment: &'a PolynomialBatch, @@ -424,7 +424,7 @@ fn compute_quotient_polys< public_inputs_hash, ); - let mut quotient_values_batch = eval_vanishing_poly_base_batch( + let mut quotient_values_batch = eval_vanishing_poly_base_batch::( common_data, &indices_batch, &shifted_xs_batch, diff --git a/plonky2/src/plonk/recursive_verifier.rs b/plonky2/src/plonk/recursive_verifier.rs index bb9076be..8dbab974 100644 --- a/plonky2/src/plonk/recursive_verifier.rs +++ b/plonky2/src/plonk/recursive_verifier.rs @@ -19,7 +19,7 @@ impl, const D: usize> CircuitBuilder { &mut self, proof_with_pis: ProofWithPublicInputsTarget, inner_verifier_data: &VerifierCircuitTarget, - inner_common_data: &CommonCircuitData, + inner_common_data: &CommonCircuitData, ) where C::Hasher: AlgebraicHasher, { @@ -29,14 +29,14 @@ impl, const D: usize> CircuitBuilder { ); let public_inputs_hash = self.hash_n_to_hash_no_pad::(proof_with_pis.public_inputs.clone()); - let challenges = proof_with_pis.get_challenges( + let challenges = proof_with_pis.get_challenges::( self, public_inputs_hash, inner_verifier_data.circuit_digest, inner_common_data, ); - self.verify_proof_with_challenges( + self.verify_proof_with_challenges::( proof_with_pis.proof, public_inputs_hash, challenges, @@ -52,7 +52,7 @@ impl, const D: usize> CircuitBuilder { public_inputs_hash: HashOutTarget, challenges: ProofChallengesTarget, inner_verifier_data: &VerifierCircuitTarget, - inner_common_data: &CommonCircuitData, + inner_common_data: &CommonCircuitData, ) where C::Hasher: AlgebraicHasher, { @@ -75,7 +75,7 @@ impl, const D: usize> CircuitBuilder { let vanishing_polys_zeta = with_context!( self, "evaluate the vanishing polynomial at our challenge point, zeta.", - eval_vanishing_poly_circuit( + eval_vanishing_poly_circuit::( self, inner_common_data, challenges.plonk_zeta, @@ -129,9 +129,9 @@ impl, const D: usize> CircuitBuilder { pub fn add_virtual_proof_with_pis>( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> ProofWithPublicInputsTarget { - let proof = self.add_virtual_proof(common_data); + let proof = self.add_virtual_proof::(common_data); let public_inputs = self.add_virtual_targets(common_data.num_public_inputs); ProofWithPublicInputsTarget { proof, @@ -141,7 +141,7 @@ impl, const D: usize> CircuitBuilder { fn add_virtual_proof>( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> ProofTarget { let config = &common_data.config; let fri_params = &common_data.fri_params; @@ -159,14 +159,14 @@ impl, const D: usize> CircuitBuilder { wires_cap: self.add_virtual_cap(cap_height), plonk_zs_partial_products_cap: self.add_virtual_cap(cap_height), quotient_polys_cap: self.add_virtual_cap(cap_height), - openings: self.add_opening_set(common_data), + openings: self.add_opening_set::(common_data), opening_proof: self.add_virtual_fri_proof(num_leaves_per_oracle, fri_params), } } fn add_opening_set>( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> OpeningSetTarget { let config = &common_data.config; let num_challenges = config.num_challenges; @@ -330,7 +330,7 @@ mod tests { ) -> Result<( ProofWithPublicInputs, VerifierOnlyCircuitData, - CommonCircuitData, + CommonCircuitData, )> where [(); C::Hasher::HASH_SIZE]:, @@ -356,7 +356,7 @@ mod tests { >( inner_proof: ProofWithPublicInputs, inner_vd: VerifierOnlyCircuitData, - inner_cd: CommonCircuitData, + inner_cd: CommonCircuitData, config: &CircuitConfig, min_degree_bits: Option, print_gate_counts: bool, @@ -364,7 +364,7 @@ mod tests { ) -> Result<( ProofWithPublicInputs, VerifierOnlyCircuitData, - CommonCircuitData, + CommonCircuitData, )> where InnerC::Hasher: AlgebraicHasher, @@ -372,7 +372,7 @@ mod tests { { let mut builder = CircuitBuilder::::new(config.clone()); let mut pw = PartialWitness::new(); - let pt = builder.add_virtual_proof_with_pis(&inner_cd); + let pt = builder.add_virtual_proof_with_pis::(&inner_cd); pw.set_proof_with_pis_target(&pt, &inner_proof); let inner_data = VerifierCircuitTarget { @@ -385,7 +385,7 @@ mod tests { ); pw.set_hash_target(inner_data.circuit_digest, inner_vd.circuit_digest); - builder.verify_proof(pt, &inner_data, &inner_cd); + builder.verify_proof::(pt, &inner_data, &inner_cd); if print_gate_counts { builder.print_gate_counts(0); @@ -422,7 +422,7 @@ mod tests { >( proof: &ProofWithPublicInputs, vd: &VerifierOnlyCircuitData, - cd: &CommonCircuitData, + cd: &CommonCircuitData, ) -> Result<()> where [(); C::Hasher::HASH_SIZE]:, diff --git a/plonky2/src/plonk/validate_shape.rs b/plonky2/src/plonk/validate_shape.rs index f7ec1b6e..1e6708cc 100644 --- a/plonky2/src/plonk/validate_shape.rs +++ b/plonky2/src/plonk/validate_shape.rs @@ -8,7 +8,7 @@ use crate::plonk::proof::{OpeningSet, Proof, ProofWithPublicInputs}; pub(crate) fn validate_proof_with_pis_shape( proof_with_pis: &ProofWithPublicInputs, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result<()> where F: RichField + Extendable, @@ -32,7 +32,7 @@ where fn validate_proof_shape( proof: &Proof, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> anyhow::Result<()> where F: RichField + Extendable, diff --git a/plonky2/src/plonk/vanishing_poly.rs b/plonky2/src/plonk/vanishing_poly.rs index 303f698b..28d43f4f 100644 --- a/plonky2/src/plonk/vanishing_poly.rs +++ b/plonky2/src/plonk/vanishing_poly.rs @@ -25,7 +25,7 @@ pub(crate) fn eval_vanishing_poly< C: GenericConfig, const D: usize, >( - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, x: F::Extension, vars: EvaluationVars, local_zs: &[F::Extension], @@ -39,7 +39,7 @@ pub(crate) fn eval_vanishing_poly< let max_degree = common_data.quotient_degree_factor; let num_prods = common_data.num_partial_products; - let constraint_terms = evaluate_gate_constraints(common_data, vars); + let constraint_terms = evaluate_gate_constraints::(common_data, vars); // The L_0(x) (Z(x) - 1) vanishing terms. let mut vanishing_z_1_terms = Vec::new(); @@ -100,7 +100,7 @@ pub(crate) fn eval_vanishing_poly_base_batch< C: GenericConfig, const D: usize, >( - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, indices_batch: &[usize], xs_batch: &[F], vars_batch: EvaluationVarsBaseBatch, @@ -126,7 +126,8 @@ pub(crate) fn eval_vanishing_poly_base_batch< let num_gate_constraints = common_data.num_gate_constraints; - let constraint_terms_batch = evaluate_gate_constraints_base_batch(common_data, vars_batch); + let constraint_terms_batch = + evaluate_gate_constraints_base_batch::(common_data, vars_batch); debug_assert!(constraint_terms_batch.len() == n * num_gate_constraints); let num_challenges = common_data.config.num_challenges; @@ -210,7 +211,7 @@ pub fn evaluate_gate_constraints< C: GenericConfig, const D: usize, >( - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, vars: EvaluationVars, ) -> Vec { let mut constraints = vec![F::Extension::ZERO; common_data.num_gate_constraints]; @@ -244,7 +245,7 @@ pub fn evaluate_gate_constraints_base_batch< C: GenericConfig, const D: usize, >( - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, vars_batch: EvaluationVarsBaseBatch, ) -> Vec { let mut constraints_batch = vec![F::ZERO; common_data.num_gate_constraints * vars_batch.len()]; @@ -276,7 +277,7 @@ pub fn evaluate_gate_constraints_circuit< const D: usize, >( builder: &mut CircuitBuilder, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, vars: EvaluationTargets, ) -> Vec> { let mut all_gate_constraints = vec![builder.zero_extension(); common_data.num_gate_constraints]; @@ -311,7 +312,7 @@ pub(crate) fn eval_vanishing_poly_circuit< const D: usize, >( builder: &mut CircuitBuilder, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, x: ExtensionTarget, x_pow_deg: ExtensionTarget, vars: EvaluationTargets, @@ -329,7 +330,7 @@ pub(crate) fn eval_vanishing_poly_circuit< let constraint_terms = with_context!( builder, "evaluate gate constraints", - evaluate_gate_constraints_circuit(builder, common_data, vars,) + evaluate_gate_constraints_circuit::(builder, common_data, vars,) ); // The L_0(x) (Z(x) - 1) vanishing terms. diff --git a/plonky2/src/plonk/verifier.rs b/plonky2/src/plonk/verifier.rs index 37ddfffa..52681558 100644 --- a/plonky2/src/plonk/verifier.rs +++ b/plonky2/src/plonk/verifier.rs @@ -15,7 +15,7 @@ use crate::plonk::vars::EvaluationVars; pub(crate) fn verify, C: GenericConfig, const D: usize>( proof_with_pis: ProofWithPublicInputs, verifier_data: &VerifierOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result<()> where [(); C::Hasher::HASH_SIZE]:, @@ -47,7 +47,7 @@ pub(crate) fn verify_with_challenges< public_inputs_hash: <>::InnerHasher as Hasher>::Hash, challenges: ProofChallenges, verifier_data: &VerifierOnlyCircuitData, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result<()> where [(); C::Hasher::HASH_SIZE]:, @@ -65,7 +65,7 @@ where let partial_products = &proof.openings.partial_products; // Evaluate the vanishing polynomial at our challenge point, zeta. - let vanishing_polys_zeta = eval_vanishing_poly( + let vanishing_polys_zeta = eval_vanishing_poly::( common_data, challenges.plonk_zeta, vars, diff --git a/plonky2/src/util/serialization.rs b/plonky2/src/util/serialization.rs index 978134b6..076e42f4 100644 --- a/plonky2/src/util/serialization.rs +++ b/plonky2/src/util/serialization.rs @@ -165,7 +165,7 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let constants = self.read_field_ext_vec::(common_data.num_constants)?; @@ -233,7 +233,7 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let salt = salt_size(common_data.fri_params.hiding); @@ -312,12 +312,12 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result>> { let config = &common_data.config; let mut fqrs = Vec::with_capacity(config.fri_config.num_query_rounds); for _ in 0..config.fri_config.num_query_rounds { - let initial_trees_proof = self.read_fri_initial_proof(common_data)?; + let initial_trees_proof = self.read_fri_initial_proof::(common_data)?; let steps = common_data .fri_params .reduction_arity_bits @@ -345,13 +345,13 @@ impl Buffer { } fn read_fri_proof, C: GenericConfig, const D: usize>( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let commit_phase_merkle_caps = (0..common_data.fri_params.reduction_arity_bits.len()) .map(|_| self.read_merkle_cap(config.fri_config.cap_height)) .collect::>>()?; - let query_round_proofs = self.read_fri_query_rounds(common_data)?; + let query_round_proofs = self.read_fri_query_rounds::(common_data)?; let final_poly = PolynomialCoeffs::new( self.read_field_ext_vec::(common_data.fri_params.final_poly_len())?, ); @@ -376,14 +376,14 @@ impl Buffer { } pub fn read_proof, C: GenericConfig, const D: usize>( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let wires_cap = self.read_merkle_cap(config.fri_config.cap_height)?; let plonk_zs_partial_products_cap = self.read_merkle_cap(config.fri_config.cap_height)?; let quotient_polys_cap = self.read_merkle_cap(config.fri_config.cap_height)?; - let openings = self.read_opening_set(common_data)?; - let opening_proof = self.read_fri_proof(common_data)?; + let openings = self.read_opening_set::(common_data)?; + let opening_proof = self.read_fri_proof::(common_data)?; Ok(Proof { wires_cap, @@ -415,7 +415,7 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let proof = self.read_proof(common_data)?; let public_inputs = self.read_field_vec( @@ -460,7 +460,7 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let original_indices = (0..config.fri_config.num_query_rounds) @@ -471,7 +471,7 @@ impl Buffer { indices.dedup(); let mut pairs = Vec::new(); for &i in &indices { - pairs.push((i, self.read_fri_initial_proof(common_data)?)); + pairs.push((i, self.read_fri_initial_proof::(common_data)?)); } let initial_trees_proofs = HashMap::from_iter(pairs); @@ -521,13 +521,13 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let commit_phase_merkle_caps = (0..common_data.fri_params.reduction_arity_bits.len()) .map(|_| self.read_merkle_cap(config.fri_config.cap_height)) .collect::>>()?; - let query_round_proofs = self.read_compressed_fri_query_rounds(common_data)?; + let query_round_proofs = self.read_compressed_fri_query_rounds::(common_data)?; let final_poly = PolynomialCoeffs::new( self.read_field_ext_vec::(common_data.fri_params.final_poly_len())?, ); @@ -560,14 +560,14 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let config = &common_data.config; let wires_cap = self.read_merkle_cap(config.fri_config.cap_height)?; let plonk_zs_partial_products_cap = self.read_merkle_cap(config.fri_config.cap_height)?; let quotient_polys_cap = self.read_merkle_cap(config.fri_config.cap_height)?; - let openings = self.read_opening_set(common_data)?; - let opening_proof = self.read_compressed_fri_proof(common_data)?; + let openings = self.read_opening_set::(common_data)?; + let opening_proof = self.read_compressed_fri_proof::(common_data)?; Ok(CompressedProof { wires_cap, @@ -599,7 +599,7 @@ impl Buffer { const D: usize, >( &mut self, - common_data: &CommonCircuitData, + common_data: &CommonCircuitData, ) -> Result> { let proof = self.read_compressed_proof(common_data)?; let public_inputs = self.read_field_vec(