Minor improvements

This commit is contained in:
wborgeaud 2021-06-25 11:49:29 +02:00
parent 625377b4c0
commit 810d1869a1
3 changed files with 27 additions and 16 deletions

View File

@ -17,6 +17,7 @@ use crate::gates::noop::NoopGate;
use crate::generator::{CopyGenerator, WitnessGenerator}; use crate::generator::{CopyGenerator, WitnessGenerator};
use crate::hash::hash_n_to_hash; use crate::hash::hash_n_to_hash;
use crate::permutation_argument::TargetPartitions; use crate::permutation_argument::TargetPartitions;
use crate::plonk_common::PlonkPolynomials;
use crate::polynomial::commitment::ListPolynomialCommitment; use crate::polynomial::commitment::ListPolynomialCommitment;
use crate::polynomial::polynomial::PolynomialValues; use crate::polynomial::polynomial::PolynomialValues;
use crate::target::Target; use crate::target::Target;
@ -230,7 +231,7 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
} }
} }
fn constant_polys(&self, gates: &[PrefixedGate<F, D>]) -> (Vec<PolynomialValues<F>>, usize) { fn constant_polys(&self, gates: &[PrefixedGate<F, D>]) -> Vec<PolynomialValues<F>> {
let num_constants = gates let num_constants = gates
.iter() .iter()
.map(|gate| gate.gate.0.num_constants() + gate.prefix.len()) .map(|gate| gate.gate.0.num_constants() + gate.prefix.len())
@ -253,13 +254,10 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
}) })
.collect::<Vec<_>>(); .collect::<Vec<_>>();
( transpose(&constants_per_gate)
transpose(&constants_per_gate) .into_iter()
.into_iter() .map(PolynomialValues::new)
.map(PolynomialValues::new) .collect()
.collect(),
num_constants,
)
} }
fn sigma_vecs(&self, k_is: &[F], subgroup: &[F]) -> Vec<PolynomialValues<F>> { fn sigma_vecs(&self, k_is: &[F], subgroup: &[F]) -> Vec<PolynomialValues<F>> {
@ -303,7 +301,8 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
let degree_bits = log2_strict(degree); let degree_bits = log2_strict(degree);
let subgroup = F::two_adic_subgroup(degree_bits); 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 k_is = get_unique_coset_shifts(degree, self.config.num_routed_wires);
let sigma_vecs = self.sigma_vecs(&k_is, &subgroup); let sigma_vecs = self.sigma_vecs(&k_is, &subgroup);
@ -312,7 +311,7 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
let constants_sigmas_commitment = ListPolynomialCommitment::new( let constants_sigmas_commitment = ListPolynomialCommitment::new(
constants_sigmas_vecs, constants_sigmas_vecs,
self.config.fri_config.rate_bits, self.config.fri_config.rate_bits,
false, PlonkPolynomials::CONSTANTS_SIGMAS.blinding,
); );
let constants_sigmas_root = constants_sigmas_commitment.merkle_tree.root; let constants_sigmas_root = constants_sigmas_commitment.merkle_tree.root;
@ -340,7 +339,11 @@ impl<F: Extendable<D>, const D: usize> CircuitBuilder<F, D> {
.expect("No gates?"); .expect("No gates?");
// TODO: This should also include an encoding of gate constraints. // 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 { let common = CommonCircuitData {
config: self.config, config: self.config,

View File

@ -190,7 +190,7 @@ impl<F: Extendable<D>, const D: usize> CommonCircuitData<F, D> {
self.config.num_challenges * 2 + self.num_gate_constraints 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<usize> { pub fn constants_range(&self) -> Range<usize> {
0..self.num_constants 0..self.num_constants
} }

View File

@ -7,7 +7,7 @@ use crate::circuit_data::{CommonCircuitData, ProverOnlyCircuitData};
use crate::field::extension_field::Extendable; use crate::field::extension_field::Extendable;
use crate::generator::generate_partial_witness; use crate::generator::generate_partial_witness;
use crate::plonk_challenger::Challenger; 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::commitment::ListPolynomialCommitment;
use crate::polynomial::polynomial::{PolynomialCoeffs, PolynomialValues}; use crate::polynomial::polynomial::{PolynomialCoeffs, PolynomialValues};
use crate::proof::Proof; use crate::proof::Proof;
@ -61,7 +61,11 @@ pub(crate) fn prove<F: Extendable<D>, const D: usize>(
// TODO: Could try parallelizing the transpose, or not doing it explicitly, instead having // TODO: Could try parallelizing the transpose, or not doing it explicitly, instead having
// merkle_root_bit_rev_order do it implicitly. // merkle_root_bit_rev_order do it implicitly.
let wires_commitment = timed!( 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" "to compute wires commitment"
); );
@ -80,7 +84,11 @@ pub(crate) fn prove<F: Extendable<D>, const D: usize>(
); );
let plonk_zs_commitment = timed!( 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" "to commit to Z's"
); );
@ -122,7 +130,7 @@ pub(crate) fn prove<F: Extendable<D>, const D: usize>(
ListPolynomialCommitment::new_from_polys( ListPolynomialCommitment::new_from_polys(
all_quotient_poly_chunks, all_quotient_poly_chunks,
fri_config.rate_bits, fri_config.rate_bits,
true PlonkPolynomials::QUOTIENT.blinding
), ),
"to commit to quotient polys" "to commit to quotient polys"
); );