mirror of
https://github.com/logos-storage/plonky2.git
synced 2026-01-07 16:23:12 +00:00
Minor improvements
This commit is contained in:
parent
625377b4c0
commit
810d1869a1
@ -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,
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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"
|
||||||
);
|
);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user