From 6387aa7ed66d95dac248fa110377edaab799482e Mon Sep 17 00:00:00 2001 From: Al-Kindi-0 <82364884+Al-Kindi-0@users.noreply.github.com> Date: Tue, 3 Dec 2024 06:10:47 +0100 Subject: [PATCH] chore: fix after rebase --- Cargo.toml | 3 +- examples/Cargo.toml | 2 +- examples/src/fibonacci/fib2/prover.rs | 12 +-- examples/src/fibonacci/fib8/prover.rs | 12 +-- examples/src/fibonacci/fib_small/prover.rs | 12 +-- examples/src/fibonacci/mulfib2/prover.rs | 9 ++- examples/src/fibonacci/mulfib8/prover.rs | 9 ++- examples/src/lamport/aggregate/prover.rs | 9 ++- examples/src/lamport/threshold/prover.rs | 9 ++- examples/src/merkle/prover.rs | 9 ++- examples/src/rescue/prover.rs | 9 ++- examples/src/rescue_raps/prover.rs | 8 +- examples/src/vdf/exempt/prover.rs | 9 ++- examples/src/vdf/regular/prover.rs | 9 ++- prover/Cargo.toml | 2 +- prover/benches/lagrange_kernel.rs | 10 ++- prover/src/constraints/commitment.rs | 80 -------------------- prover/src/constraints/commitment/default.rs | 33 ++++++-- prover/src/lib.rs | 4 +- prover/src/trace/trace_lde/default/mod.rs | 2 +- winterfell/src/lib.rs | 12 ++- winterfell/src/tests.rs | 6 +- 22 files changed, 139 insertions(+), 131 deletions(-) delete mode 100644 prover/src/constraints/commitment.rs diff --git a/Cargo.toml b/Cargo.toml index 2eb4b7f3f..b0ed3f07c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,8 @@ members = [ "prover", "verifier", "winterfell", - "examples"] + "examples" +] resolver = "2" [profile.release] diff --git a/examples/Cargo.toml b/examples/Cargo.toml index 14ba18dee..ff308297e 100644 --- a/examples/Cargo.toml +++ b/examples/Cargo.toml @@ -26,7 +26,7 @@ default = ["std"] std = ["core-utils/std", "hex/std", "rand-utils", "winterfell/std"] [dependencies] -air = { version = "0.10", path = "../air", package = "winter-air", default-features = false } +air = { version = "0.11", path = "../air", package = "winter-air", default-features = false } blake3 = { version = "1.5", default-features = false } core-utils = { version = "0.11", path = "../utils/core", package = "winter-utils", default-features = false } hex = { version = "0.4", optional = true } diff --git a/examples/src/fibonacci/fib2/prover.rs b/examples/src/fibonacci/fib2/prover.rs index 0b1dbe172..91070896b 100644 --- a/examples/src/fibonacci/fib2/prover.rs +++ b/examples/src/fibonacci/fib2/prover.rs @@ -7,10 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, - crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, ConstraintCompositionCoefficients, - DefaultConstraintEvaluator, DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, - TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -65,7 +63,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -106,12 +104,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/fibonacci/fib8/prover.rs b/examples/src/fibonacci/fib8/prover.rs index b063b31f9..5f4e1d8aa 100644 --- a/examples/src/fibonacci/fib8/prover.rs +++ b/examples/src/fibonacci/fib8/prover.rs @@ -7,10 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, - crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, ConstraintCompositionCoefficients, - DefaultConstraintEvaluator, DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, - TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -80,7 +78,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -121,12 +119,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/fibonacci/fib_small/prover.rs b/examples/src/fibonacci/fib_small/prover.rs index b935ef672..4b4cc6860 100644 --- a/examples/src/fibonacci/fib_small/prover.rs +++ b/examples/src/fibonacci/fib_small/prover.rs @@ -6,10 +6,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, - crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, ConstraintCompositionCoefficients, - DefaultConstraintEvaluator, DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, - TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -70,7 +68,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -111,12 +109,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/fibonacci/mulfib2/prover.rs b/examples/src/fibonacci/mulfib2/prover.rs index 3900eac38..5356f4a29 100644 --- a/examples/src/fibonacci/mulfib2/prover.rs +++ b/examples/src/fibonacci/mulfib2/prover.rs @@ -7,7 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -58,7 +59,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -99,12 +100,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/fibonacci/mulfib8/prover.rs b/examples/src/fibonacci/mulfib8/prover.rs index af306a6a2..563e29875 100644 --- a/examples/src/fibonacci/mulfib8/prover.rs +++ b/examples/src/fibonacci/mulfib8/prover.rs @@ -7,7 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -70,7 +71,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -111,12 +112,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/lamport/aggregate/prover.rs b/examples/src/lamport/aggregate/prover.rs index 2a63d2794..d387d3e7f 100644 --- a/examples/src/lamport/aggregate/prover.rs +++ b/examples/src/lamport/aggregate/prover.rs @@ -9,7 +9,8 @@ use winterfell::iterators::*; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -107,7 +108,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -147,12 +148,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/lamport/threshold/prover.rs b/examples/src/lamport/threshold/prover.rs index f3eddaa7c..6092d7eb2 100644 --- a/examples/src/lamport/threshold/prover.rs +++ b/examples/src/lamport/threshold/prover.rs @@ -11,7 +11,8 @@ use winterfell::iterators::*; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -149,7 +150,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -189,12 +190,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/merkle/prover.rs b/examples/src/merkle/prover.rs index ab7a4209a..4b2c9147f 100644 --- a/examples/src/merkle/prover.rs +++ b/examples/src/merkle/prover.rs @@ -7,7 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -111,7 +112,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -154,12 +155,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/rescue/prover.rs b/examples/src/rescue/prover.rs index 976fc099e..186962dcf 100644 --- a/examples/src/rescue/prover.rs +++ b/examples/src/rescue/prover.rs @@ -7,7 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -77,7 +78,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -121,12 +122,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/rescue_raps/prover.rs b/examples/src/rescue_raps/prover.rs index 66959bf52..a407898a0 100644 --- a/examples/src/rescue_raps/prover.rs +++ b/examples/src/rescue_raps/prover.rs @@ -8,7 +8,7 @@ use core_utils::uninit_vector; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, }; use super::{ @@ -107,7 +107,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -153,12 +153,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } fn build_aux_trace( diff --git a/examples/src/vdf/exempt/prover.rs b/examples/src/vdf/exempt/prover.rs index a8f2599fc..d57b72e81 100644 --- a/examples/src/vdf/exempt/prover.rs +++ b/examples/src/vdf/exempt/prover.rs @@ -7,7 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -58,7 +59,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -104,12 +105,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/examples/src/vdf/regular/prover.rs b/examples/src/vdf/regular/prover.rs index 0efeb8284..68d237742 100644 --- a/examples/src/vdf/regular/prover.rs +++ b/examples/src/vdf/regular/prover.rs @@ -7,7 +7,8 @@ use air::ZkParameters; use winterfell::{ crypto::MerkleTree, matrix::ColMatrix, AuxRandElements, CompositionPoly, CompositionPolyTrace, ConstraintCompositionCoefficients, DefaultConstraintCommitment, DefaultConstraintEvaluator, - DefaultTraceLde, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, TraceTable, + DefaultTraceLde, MockPrng, PartitionOptions, StarkDomain, Trace, TraceInfo, TracePolyTable, + TraceTable, }; use super::{ @@ -55,7 +56,7 @@ where type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, Self::Air, E>; type ZkPrng = MockPrng; @@ -99,12 +100,16 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } } diff --git a/prover/Cargo.toml b/prover/Cargo.toml index c49ac34da..0961da8ec 100644 --- a/prover/Cargo.toml +++ b/prover/Cargo.toml @@ -36,7 +36,7 @@ fri = { version = "0.11", path = '../fri', package = "winter-fri", default-featu math = { version = "0.11", path = "../math", package = "winter-math", default-features = false } maybe_async = { version = "0.11", path = "../utils/maybe_async" , package = "winter-maybe-async" } rand_chacha = { version = "0.3", default-features = false } -rand-utils = { version = "0.10", path = "../utils/rand", package = "winter-rand-utils" } +rand-utils = { version = "0.11", path = "../utils/rand", package = "winter-rand-utils" } rand = { version = "0.8" } tracing = { version = "0.1", default-features = false, features = ["attributes"]} utils = { version = "0.11", path = "../utils/core", package = "winter-utils", default-features = false } diff --git a/prover/benches/lagrange_kernel.rs b/prover/benches/lagrange_kernel.rs index d576d1c8d..b64052976 100644 --- a/prover/benches/lagrange_kernel.rs +++ b/prover/benches/lagrange_kernel.rs @@ -15,8 +15,8 @@ use crypto::{hashers::Blake3_256, DefaultRandomCoin, MerkleTree, RandomCoin}; use math::{fields::f64::BaseElement, ExtensionOf, FieldElement}; use winter_prover::{ matrix::ColMatrix, CompositionPoly, CompositionPolyTrace, DefaultConstraintCommitment, - DefaultConstraintEvaluator, DefaultTraceLde, Prover, ProverGkrProof, StarkDomain, Trace, - TracePolyTable, + DefaultConstraintEvaluator, DefaultTraceLde, MockPrng, Prover, ProverGkrProof, StarkDomain, + Trace, TracePolyTable, }; const TRACE_LENS: [usize; 2] = [2_usize.pow(16), 2_usize.pow(20)]; @@ -189,7 +189,7 @@ impl Prover for LagrangeProver { type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment; + DefaultConstraintCommitment; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, LagrangeKernelAir, E>; type ZkPrng = MockPrng; @@ -222,12 +222,16 @@ impl Prover for LagrangeProver { num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) } diff --git a/prover/src/constraints/commitment.rs b/prover/src/constraints/commitment.rs deleted file mode 100644 index d79e02d46..000000000 --- a/prover/src/constraints/commitment.rs +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright (c) Facebook, Inc. and its affiliates. -// -// This source code is licensed under the MIT license found in the -// LICENSE file in the root directory of this source tree. - -use alloc::vec::Vec; -use core::marker::PhantomData; - -use air::proof::Queries; -use crypto::{ElementHasher, VectorCommitment}; -use math::FieldElement; - -use super::RowMatrix; - -// CONSTRAINT COMMITMENT -// ================================================================================================ - -/// Constraint evaluation commitment. -/// -/// The commitment consists of two components: -/// * Evaluations of composition polynomial columns over the LDE domain. -/// * Vector commitment where each vector element corresponds to the digest of a row in -/// the composition polynomial evaluation matrix. -pub struct ConstraintCommitment< - E: FieldElement, - H: ElementHasher, - V: VectorCommitment, -> { - evaluations: RowMatrix, - vector_commitment: V, - _h: PhantomData, -} - -impl ConstraintCommitment -where - E: FieldElement, - H: ElementHasher, - V: VectorCommitment, -{ - /// Creates a new constraint evaluation commitment from the provided composition polynomial - /// evaluations and the corresponding vector commitment. - pub fn new(evaluations: RowMatrix, commitment: V) -> ConstraintCommitment { - assert_eq!( - evaluations.num_rows(), - commitment.get_domain_len(), - "number of rows in constraint evaluation matrix must be the same as the size \ - of the vector commitment domain" - ); - - ConstraintCommitment { - evaluations, - vector_commitment: commitment, - _h: PhantomData, - } - } - - /// Returns the commitment. - pub fn commitment(&self) -> H::Digest { - self.vector_commitment.commitment() - } - - /// Returns constraint evaluations at the specified positions along with a batch opening proof - /// against the vector commitment. - pub fn query(self, positions: &[usize]) -> Queries { - // build batch opening proof to the leaves specified by positions - let opening_proof = self - .vector_commitment - .open_many(positions) - .expect("failed to generate a batch opening proof for constraint queries"); - - // determine a set of evaluations corresponding to each position - let mut evaluations = Vec::new(); - for &position in positions { - let row = self.evaluations.row(position).to_vec(); - evaluations.push(row); - } - - Queries::new::(opening_proof.1, evaluations) - } -} diff --git a/prover/src/constraints/commitment/default.rs b/prover/src/constraints/commitment/default.rs index 629c08cd3..dd8c20f7a 100644 --- a/prover/src/constraints/commitment/default.rs +++ b/prover/src/constraints/commitment/default.rs @@ -6,9 +6,10 @@ use alloc::vec::Vec; use core::marker::PhantomData; -use air::{proof::Queries, PartitionOptions}; +use air::{proof::Queries, PartitionOptions, ZkParameters}; use crypto::{ElementHasher, VectorCommitment}; use math::FieldElement; +use rand::RngCore; use tracing::info_span; use super::{ConstraintCommitment, RowMatrix}; @@ -26,17 +27,20 @@ use crate::{CompositionPoly, CompositionPolyTrace, StarkDomain, DEFAULT_SEGMENT_ pub struct DefaultConstraintCommitment< E: FieldElement, H: ElementHasher, + R: RngCore, V: VectorCommitment, > { evaluations: RowMatrix, vector_commitment: V, _h: PhantomData, + _prng: PhantomData, } -impl DefaultConstraintCommitment +impl DefaultConstraintCommitment where E: FieldElement, H: ElementHasher, + R: RngCore, V: VectorCommitment, { /// Creates a new constraint evaluation commitment from the provided composition polynomial @@ -46,18 +50,22 @@ where num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self, CompositionPoly) { // extend the main execution trace and build a commitment to the extended trace - let (evaluations, commitment, composition_poly) = build_constraint_commitment::( + let (evaluations, commitment, composition_poly) = build_constraint_commitment::( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ); assert_eq!( evaluations.num_rows(), - commitment.domain_len(), + commitment.get_domain_len(), "number of rows in constraint evaluation matrix must be the same as the size \ of the vector commitment domain" ); @@ -66,16 +74,18 @@ where evaluations, vector_commitment: commitment, _h: PhantomData, + _prng: PhantomData, }; (commitment, composition_poly) } } -impl ConstraintCommitment for DefaultConstraintCommitment +impl ConstraintCommitment for DefaultConstraintCommitment where E: FieldElement, H: ElementHasher + core::marker::Sync, + R: RngCore, V: VectorCommitment + core::marker::Sync, { type HashFn = H; @@ -106,15 +116,18 @@ where } } -fn build_constraint_commitment( +fn build_constraint_commitment( composition_poly_trace: CompositionPolyTrace, num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (RowMatrix, V, CompositionPoly) where E: FieldElement, H: ElementHasher, + R: RngCore, V: VectorCommitment, { // first, build constraint composition polynomial from its trace as follows: @@ -126,7 +139,13 @@ where num_columns = num_constraint_composition_columns ) .in_scope(|| { - CompositionPoly::new(composition_poly_trace, domain, num_constraint_composition_columns) + CompositionPoly::new( + composition_poly_trace, + domain, + num_constraint_composition_columns, + zk_parameters, + prng, + ) }); assert_eq!(composition_poly.num_columns(), num_constraint_composition_columns); assert_eq!(composition_poly.column_degree(), domain.trace_length() - 1); diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 4d50264ab..926ef8563 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -228,6 +228,8 @@ pub trait Prover { num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) where E: FieldElement; @@ -653,7 +655,7 @@ pub trait Prover { composition_poly_trace, air.context().num_constraint_composition_columns(), domain, - self.options().partition_options() + self.options().partition_options(), zk_parameters, prng )); diff --git a/prover/src/trace/trace_lde/default/mod.rs b/prover/src/trace/trace_lde/default/mod.rs index 81bc6da4f..e2cbb1e83 100644 --- a/prover/src/trace/trace_lde/default/mod.rs +++ b/prover/src/trace/trace_lde/default/mod.rs @@ -328,7 +328,7 @@ where let commitment_domain_size = trace_lde.num_rows(); let trace_vector_com = info_span!("compute_execution_trace_commitment", commitment_domain_size) .in_scope(|| trace_lde.commit_to_rows::(partition_options)); - assert_eq!(trace_vector_com.domain_len(), commitment_domain_size); + assert_eq!(trace_vector_com.get_domain_len(), commitment_domain_size); (trace_lde, trace_vector_com, trace_polys) } diff --git a/winterfell/src/lib.rs b/winterfell/src/lib.rs index b986548b3..4919f157d 100644 --- a/winterfell/src/lib.rs +++ b/winterfell/src/lib.rs @@ -353,7 +353,7 @@ //! type RandomCoin = DefaultRandomCoin; //! type TraceLde> = DefaultTraceLde; //! type ConstraintCommitment> = -//! DefaultConstraintCommitment; +//! DefaultConstraintCommitment; //! type ConstraintEvaluator<'a, E: FieldElement> = //! DefaultConstraintEvaluator<'a, Self::Air, E>; //! type ZkPrng = MockPrng; @@ -389,12 +389,16 @@ //! num_constraint_composition_columns: usize, //! domain: &StarkDomain, //! partition_options: PartitionOptions, +//! zk_parameters: Option, +//! prng: &mut Option, //! ) -> (Self::ConstraintCommitment, CompositionPoly) { //! DefaultConstraintCommitment::new( //! composition_poly_trace, //! num_constraint_composition_columns, //! domain, //! partition_options, +//! zk_parameters, +//! prng, //! ) //! } //! @@ -519,7 +523,7 @@ //! # type RandomCoin = DefaultRandomCoin; //! # type TraceLde> = DefaultTraceLde; //! # type ConstraintCommitment> = -//! # DefaultConstraintCommitment; +//! # DefaultConstraintCommitment; //! # type ConstraintEvaluator<'a, E: FieldElement> = //! # DefaultConstraintEvaluator<'a, Self::Air, E>; //! # type ZkPrng = MockPrng; @@ -554,12 +558,16 @@ //! # num_constraint_composition_columns: usize, //! # domain: &StarkDomain, //! # partition_options: PartitionOptions, +//! # zk_parameters: Option, +//! # prng: &mut Option, //! # ) -> (Self::ConstraintCommitment, CompositionPoly) { //! # DefaultConstraintCommitment::new( //! # composition_poly_trace, //! # num_constraint_composition_columns, //! # domain, //! # partition_options, +//! # zk_parameters, +//! # prng, //! # ) //! # } //! # diff --git a/winterfell/src/tests.rs b/winterfell/src/tests.rs index c112071f6..12f49c010 100644 --- a/winterfell/src/tests.rs +++ b/winterfell/src/tests.rs @@ -221,7 +221,7 @@ impl Prover for LagrangeComplexProver { type TraceLde> = DefaultTraceLde; type ConstraintCommitment> = - DefaultConstraintCommitment, Self::VC>; + DefaultConstraintCommitment, Self::ZkPrng, Self::VC>; type ConstraintEvaluator<'a, E: FieldElement> = DefaultConstraintEvaluator<'a, LagrangeKernelComplexAir, E>; type ZkPrng = MockPrng; @@ -254,12 +254,16 @@ impl Prover for LagrangeComplexProver { num_constraint_composition_columns: usize, domain: &StarkDomain, partition_options: PartitionOptions, + zk_parameters: Option, + prng: &mut Option, ) -> (Self::ConstraintCommitment, CompositionPoly) { DefaultConstraintCommitment::new( composition_poly_trace, num_constraint_composition_columns, domain, partition_options, + zk_parameters, + prng, ) }