From 810d1869a137a3cd86c9003d66b1f8142aa738a8 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Fri, 25 Jun 2021 11:49:29 +0200 Subject: [PATCH] Minor improvements --- src/circuit_builder.rs | 25 ++++++++++++++----------- src/circuit_data.rs | 2 +- src/prover.rs | 16 ++++++++++++---- 3 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/circuit_builder.rs b/src/circuit_builder.rs index 7d3bb137..79d10be2 100644 --- a/src/circuit_builder.rs +++ b/src/circuit_builder.rs @@ -17,6 +17,7 @@ use crate::gates::noop::NoopGate; use crate::generator::{CopyGenerator, WitnessGenerator}; use crate::hash::hash_n_to_hash; use crate::permutation_argument::TargetPartitions; +use crate::plonk_common::PlonkPolynomials; use crate::polynomial::commitment::ListPolynomialCommitment; use crate::polynomial::polynomial::PolynomialValues; use crate::target::Target; @@ -230,7 +231,7 @@ impl, const D: usize> CircuitBuilder { } } - fn constant_polys(&self, gates: &[PrefixedGate]) -> (Vec>, usize) { + fn constant_polys(&self, gates: &[PrefixedGate]) -> Vec> { let num_constants = gates .iter() .map(|gate| gate.gate.0.num_constants() + gate.prefix.len()) @@ -253,13 +254,10 @@ impl, const D: usize> CircuitBuilder { }) .collect::>(); - ( - transpose(&constants_per_gate) - .into_iter() - .map(PolynomialValues::new) - .collect(), - num_constants, - ) + transpose(&constants_per_gate) + .into_iter() + .map(PolynomialValues::new) + .collect() } fn sigma_vecs(&self, k_is: &[F], subgroup: &[F]) -> Vec> { @@ -303,7 +301,8 @@ impl, const D: usize> CircuitBuilder { let degree_bits = log2_strict(degree); let subgroup = F::two_adic_subgroup(degree_bits); - let (constant_vecs, num_constants) = self.constant_polys(&prefixed_gates); + let constant_vecs = self.constant_polys(&prefixed_gates); + let num_constants = constant_vecs.len(); let k_is = get_unique_coset_shifts(degree, self.config.num_routed_wires); let sigma_vecs = self.sigma_vecs(&k_is, &subgroup); @@ -312,7 +311,7 @@ impl, const D: usize> CircuitBuilder { let constants_sigmas_commitment = ListPolynomialCommitment::new( constants_sigmas_vecs, self.config.fri_config.rate_bits, - false, + PlonkPolynomials::CONSTANTS_SIGMAS.blinding, ); let constants_sigmas_root = constants_sigmas_commitment.merkle_tree.root; @@ -340,7 +339,11 @@ impl, const D: usize> CircuitBuilder { .expect("No gates?"); // TODO: This should also include an encoding of gate constraints. - let circuit_digest = hash_n_to_hash(constants_sigmas_root.elements.to_vec(), false); + let circuit_digest_parts = [ + constants_sigmas_root.elements.to_vec(), + vec![/* Add other circuit data here */], + ]; + let circuit_digest = hash_n_to_hash(circuit_digest_parts.concat(), false); let common = CommonCircuitData { config: self.config, diff --git a/src/circuit_data.rs b/src/circuit_data.rs index e46b0c41..f2935e6c 100644 --- a/src/circuit_data.rs +++ b/src/circuit_data.rs @@ -190,7 +190,7 @@ impl, const D: usize> CommonCircuitData { self.config.num_challenges * 2 + self.num_gate_constraints } - /// Range of the constant polynomials in the `constants_sigmas_commitment`. + /// Range of the constants polynomials in the `constants_sigmas_commitment`. pub fn constants_range(&self) -> Range { 0..self.num_constants } diff --git a/src/prover.rs b/src/prover.rs index 728c17e5..a810c05f 100644 --- a/src/prover.rs +++ b/src/prover.rs @@ -7,7 +7,7 @@ use crate::circuit_data::{CommonCircuitData, ProverOnlyCircuitData}; use crate::field::extension_field::Extendable; use crate::generator::generate_partial_witness; use crate::plonk_challenger::Challenger; -use crate::plonk_common::{eval_vanishing_poly_base, ZeroPolyOnCoset}; +use crate::plonk_common::{eval_vanishing_poly_base, PlonkPolynomials, ZeroPolyOnCoset}; use crate::polynomial::commitment::ListPolynomialCommitment; use crate::polynomial::polynomial::{PolynomialCoeffs, PolynomialValues}; use crate::proof::Proof; @@ -61,7 +61,11 @@ pub(crate) fn prove, const D: usize>( // TODO: Could try parallelizing the transpose, or not doing it explicitly, instead having // merkle_root_bit_rev_order do it implicitly. let wires_commitment = timed!( - ListPolynomialCommitment::new(wires_values, fri_config.rate_bits, true), + ListPolynomialCommitment::new( + wires_values, + fri_config.rate_bits, + PlonkPolynomials::WIRES.blinding + ), "to compute wires commitment" ); @@ -80,7 +84,11 @@ pub(crate) fn prove, const D: usize>( ); let plonk_zs_commitment = timed!( - ListPolynomialCommitment::new(plonk_z_vecs, fri_config.rate_bits, true), + ListPolynomialCommitment::new( + plonk_z_vecs, + fri_config.rate_bits, + PlonkPolynomials::ZS.blinding + ), "to commit to Z's" ); @@ -122,7 +130,7 @@ pub(crate) fn prove, const D: usize>( ListPolynomialCommitment::new_from_polys( all_quotient_poly_chunks, fri_config.rate_bits, - true + PlonkPolynomials::QUOTIENT.blinding ), "to commit to quotient polys" );