Skip to content

Commit

Permalink
moved TraceLde constructor into Prover trait
Browse files Browse the repository at this point in the history
  • Loading branch information
irakliyk committed Oct 22, 2023
1 parent 33f434c commit d03cc8f
Show file tree
Hide file tree
Showing 31 changed files with 271 additions and 153 deletions.
13 changes: 12 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,8 @@ like:
use winterfell::{
crypto::{hashers::Blake3_256, DefaultRandomCoin},
math::{fields::f128::BaseElement, FieldElement},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, Trace, TraceTable,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, Trace,
TracePolyTable, TraceTable,
};

// We'll use BLAKE3 as the hash function during proof generation.
Expand Down Expand Up @@ -278,6 +279,16 @@ impl Prover for WorkProver {
}
}

// We'll use the default trace low-degree extension.
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

// We'll use the default constraint evaluator to evaluate AIR constraints.
fn new_evaluator<'a, E: FieldElement<BaseField = BaseElement>>(
&self,
Expand Down
4 changes: 2 additions & 2 deletions examples/src/fibonacci/fib2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
19 changes: 13 additions & 6 deletions examples/src/fibonacci/fib2/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

use super::{
BaseElement, DefaultConstraintEvaluator, DefaultRandomCoin, DefaultTraceLde, ElementHasher,
FibAir, FieldElement, PhantomData, ProofOptions, Prover, Trace, TraceTable, TRACE_WIDTH,
FibAir, FieldElement, PhantomData, ProofOptions, Prover, StarkDomain, Trace, TracePolyTable,
TraceTable, TRACE_WIDTH,
};

// FIBONACCI PROVER
Expand Down Expand Up @@ -67,15 +68,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
4 changes: 2 additions & 2 deletions examples/src/fibonacci/fib8/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
19 changes: 13 additions & 6 deletions examples/src/fibonacci/fib8/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

use super::{
BaseElement, DefaultConstraintEvaluator, DefaultRandomCoin, DefaultTraceLde, ElementHasher,
Fib8Air, FieldElement, PhantomData, ProofOptions, Prover, Trace, TraceTable,
Fib8Air, FieldElement, PhantomData, ProofOptions, Prover, StarkDomain, Trace, TracePolyTable,
TraceTable,
};

// FIBONACCI PROVER
Expand Down Expand Up @@ -82,15 +83,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
4 changes: 2 additions & 2 deletions examples/src/fibonacci/fib_small/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f64::BaseElement, FieldElement},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
19 changes: 13 additions & 6 deletions examples/src/fibonacci/fib_small/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@
// LICENSE file in the root directory of this source tree.
use super::{
air::FibSmall, BaseElement, DefaultConstraintEvaluator, DefaultRandomCoin, DefaultTraceLde,
ElementHasher, FieldElement, PhantomData, ProofOptions, Prover, Trace, TraceTable, TRACE_WIDTH,
ElementHasher, FieldElement, PhantomData, ProofOptions, Prover, StarkDomain, Trace,
TracePolyTable, TraceTable, TRACE_WIDTH,
};

// FIBONACCI PROVER
Expand Down Expand Up @@ -66,15 +67,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
4 changes: 2 additions & 2 deletions examples/src/fibonacci/mulfib2/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
19 changes: 13 additions & 6 deletions examples/src/fibonacci/mulfib2/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

use super::{
BaseElement, DefaultConstraintEvaluator, DefaultRandomCoin, DefaultTraceLde, ElementHasher,
FieldElement, MulFib2Air, PhantomData, ProofOptions, Prover, Trace, TraceTable,
FieldElement, MulFib2Air, PhantomData, ProofOptions, Prover, StarkDomain, Trace,
TracePolyTable, TraceTable,
};

// FIBONACCI PROVER
Expand Down Expand Up @@ -63,15 +64,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
4 changes: 2 additions & 2 deletions examples/src/fibonacci/mulfib8/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, FieldElement},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
19 changes: 13 additions & 6 deletions examples/src/fibonacci/mulfib8/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@

use super::{
BaseElement, DefaultConstraintEvaluator, DefaultRandomCoin, DefaultTraceLde, ElementHasher,
FieldElement, MulFib8Air, PhantomData, ProofOptions, Prover, Trace, TraceTable,
FieldElement, MulFib8Air, PhantomData, ProofOptions, Prover, StarkDomain, Trace,
TracePolyTable, TraceTable,
};

// FIBONACCI PROVER
Expand Down Expand Up @@ -75,15 +76,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
4 changes: 2 additions & 2 deletions examples/src/lamport/aggregate/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, get_power_series, FieldElement, StarkField},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
20 changes: 13 additions & 7 deletions examples/src/lamport/aggregate/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
use super::{
get_power_series, rescue, BaseElement, DefaultConstraintEvaluator, DefaultRandomCoin,
DefaultTraceLde, ElementHasher, FieldElement, LamportAggregateAir, PhantomData, ProofOptions,
Prover, PublicInputs, Signature, StarkField, TraceTable, CYCLE_LENGTH, NUM_HASH_ROUNDS,
SIG_CYCLE_LENGTH, TRACE_WIDTH,
Prover, PublicInputs, Signature, StarkDomain, StarkField, TracePolyTable, TraceTable,
CYCLE_LENGTH, NUM_HASH_ROUNDS, SIG_CYCLE_LENGTH, TRACE_WIDTH,
};

#[cfg(feature = "concurrent")]
Expand Down Expand Up @@ -110,15 +110,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
Expand Down
4 changes: 2 additions & 2 deletions examples/src/lamport/threshold/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, ElementHasher},
math::{fields::f128::BaseElement, get_power_series, FieldElement, StarkField},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod signature;
Expand Down
20 changes: 13 additions & 7 deletions examples/src/lamport/threshold/prover.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
use super::{
get_power_series, rescue, AggPublicKey, BaseElement, DefaultConstraintEvaluator,
DefaultRandomCoin, DefaultTraceLde, ElementHasher, FieldElement, LamportThresholdAir,
PhantomData, ProofOptions, Prover, PublicInputs, Signature, StarkField, TraceTable,
HASH_CYCLE_LENGTH, NUM_HASH_ROUNDS, SIG_CYCLE_LENGTH, TRACE_WIDTH,
PhantomData, ProofOptions, Prover, PublicInputs, Signature, StarkDomain, StarkField,
TracePolyTable, TraceTable, HASH_CYCLE_LENGTH, NUM_HASH_ROUNDS, SIG_CYCLE_LENGTH, TRACE_WIDTH,
};
use std::collections::HashMap;

Expand Down Expand Up @@ -151,15 +151,21 @@ where
&self.options
}

fn new_evaluator<'a, E>(
fn new_trace_lde<E: FieldElement<BaseField = Self::BaseField>>(
&self,
trace_info: &winterfell::TraceInfo,
main_trace: &winterfell::ColMatrix<Self::BaseField>,
domain: &StarkDomain<Self::BaseField>,
) -> (Self::TraceLde<E>, TracePolyTable<E>) {
DefaultTraceLde::new(trace_info, main_trace, domain)
}

fn new_evaluator<'a, E: FieldElement<BaseField = Self::BaseField>>(
&self,
air: &'a Self::Air,
aux_rand_elements: winterfell::AuxTraceRandElements<E>,
composition_coefficients: winterfell::ConstraintCompositionCoefficients<E>,
) -> Self::ConstraintEvaluator<'a, E>
where
E: FieldElement<BaseField = Self::BaseField>,
{
) -> Self::ConstraintEvaluator<'a, E> {
DefaultConstraintEvaluator::new(air, aux_rand_elements, composition_coefficients)
}
}
Expand Down
4 changes: 2 additions & 2 deletions examples/src/merkle/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ use std::time::Instant;
use winterfell::{
crypto::{DefaultRandomCoin, Digest, ElementHasher, MerkleTree},
math::{fields::f128::BaseElement, FieldElement, StarkField},
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkProof, Trace,
TraceTable, VerifierError,
DefaultConstraintEvaluator, DefaultTraceLde, ProofOptions, Prover, StarkDomain, StarkProof,
Trace, TracePolyTable, TraceTable, VerifierError,
};

mod air;
Expand Down
Loading

0 comments on commit d03cc8f

Please sign in to comment.