From 3005f7bf7baab9e188a5407d0fdf37181b439f0c Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Fri, 6 May 2022 17:22:30 +0200 Subject: [PATCH] Cleaning --- starky2/src/all_starks.rs | 86 ++++++++++++++++++++ starky2/src/cross_table_lookups.rs | 28 ++++++- starky2/src/lib.rs | 1 + starky2/src/prover.rs | 124 +++-------------------------- 4 files changed, 124 insertions(+), 115 deletions(-) create mode 100644 starky2/src/all_starks.rs diff --git a/starky2/src/all_starks.rs b/starky2/src/all_starks.rs new file mode 100644 index 00000000..b8514568 --- /dev/null +++ b/starky2/src/all_starks.rs @@ -0,0 +1,86 @@ +use std::marker::PhantomData; + +use plonky2::field::extension_field::{Extendable, FieldExtension}; +use plonky2::field::packed_field::PackedField; +use plonky2::hash::hash_types::RichField; + +use crate::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; +use crate::stark::Stark; +use crate::vars::{StarkEvaluationTargets, StarkEvaluationVars}; + +pub struct AllStarks, const D: usize> { + pub cpu: CpuStark, + pub keccak: KeccakStark, +} + +pub struct CpuStark { + f: PhantomData, +} + +pub struct KeccakStark { + f: PhantomData, +} + +#[derive(Copy, Clone)] +pub enum Table { + Cpu = 0, + Keccak = 1, +} + +impl, const D: usize> Stark for CpuStark { + const COLUMNS: usize = 0; + const PUBLIC_INPUTS: usize = 0; + + fn eval_packed_generic( + &self, + _vars: StarkEvaluationVars, + _yield_constr: &mut ConstraintConsumer

, + ) where + FE: FieldExtension, + P: PackedField, + { + todo!() + } + + fn eval_ext_recursively( + &self, + _builder: &mut plonky2::plonk::circuit_builder::CircuitBuilder, + _vars: StarkEvaluationTargets, + _yield_constr: &mut RecursiveConstraintConsumer, + ) { + todo!() + } + + fn constraint_degree(&self) -> usize { + todo!() + } +} + +impl, const D: usize> Stark for KeccakStark { + const COLUMNS: usize = 0; + const PUBLIC_INPUTS: usize = 0; + + fn eval_packed_generic( + &self, + _vars: StarkEvaluationVars, + _yield_constr: &mut ConstraintConsumer

, + ) where + FE: FieldExtension, + P: PackedField, + { + todo!() + } + + fn eval_ext_recursively( + &self, + _builder: &mut plonky2::plonk::circuit_builder::CircuitBuilder, + _vars: StarkEvaluationTargets, + _yield_constr: &mut RecursiveConstraintConsumer, + ) { + todo!() + } + + fn constraint_degree(&self) -> usize { + todo!() + } +} diff --git a/starky2/src/cross_table_lookups.rs b/starky2/src/cross_table_lookups.rs index 69d76811..090ab15c 100644 --- a/starky2/src/cross_table_lookups.rs +++ b/starky2/src/cross_table_lookups.rs @@ -8,13 +8,37 @@ use plonky2::plonk::config::GenericConfig; use plonky2::plonk::plonk_common::reduce_with_powers; use plonky2::util::reducing::ReducingFactor; +use crate::all_starks::Table; use crate::config::StarkConfig; use crate::constraint_consumer::ConstraintConsumer; use crate::permutation::PermutationChallenge; -use crate::prover::CrossTableLookup; use crate::stark::Stark; use crate::vars::StarkEvaluationVars; +pub struct CrossTableLookup { + pub looking_table: Table, + pub looking_columns: Vec, + pub looked_table: usize, + pub looked_columns: Vec, +} + +impl CrossTableLookup { + pub fn new( + looking_table: Table, + looking_columns: Vec, + looked_table: usize, + looked_columns: Vec, + ) -> Self { + assert_eq!(looking_columns.len(), looked_columns.len()); + Self { + looking_table, + looking_columns, + looked_table, + looked_columns, + } + } +} + /// Lookup data for one table. #[derive(Clone)] pub struct LookupData { @@ -45,7 +69,7 @@ impl LookupData { pub fn cross_table_lookup_zs, const D: usize>( config: &StarkConfig, trace_poly_values: &[Vec>], - cross_table_lookups: &[CrossTableLookup], + cross_table_lookups: &[CrossTableLookup], challenger: &mut Challenger, ) -> Vec> { cross_table_lookups.iter().fold( diff --git a/starky2/src/lib.rs b/starky2/src/lib.rs index a545b2c0..ab452240 100644 --- a/starky2/src/lib.rs +++ b/starky2/src/lib.rs @@ -8,6 +8,7 @@ pub mod constraint_consumer; pub mod cross_table_lookups; mod get_challenges; // pub mod mock_stark; +pub mod all_starks; pub mod permutation; pub mod proof; pub mod prover; diff --git a/starky2/src/prover.rs b/starky2/src/prover.rs index 74c036af..afc0bfb2 100644 --- a/starky2/src/prover.rs +++ b/starky2/src/prover.rs @@ -1,9 +1,8 @@ use std::iter::once; -use std::marker::PhantomData; use anyhow::{ensure, Result}; use itertools::Itertools; -use plonky2::field::extension_field::{Extendable, FieldExtension}; +use plonky2::field::extension_field::Extendable; use plonky2::field::field_types::Field; use plonky2::field::packable::Packable; use plonky2::field::packed_field::PackedField; @@ -19,9 +18,12 @@ use plonky2::util::transpose; use plonky2_util::{log2_ceil, log2_strict}; use rayon::prelude::*; +use crate::all_starks::{AllStarks, Table}; use crate::config::StarkConfig; -use crate::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; -use crate::cross_table_lookups::{cross_table_lookup_zs, CTLCheckVars, LookupData}; +use crate::constraint_consumer::ConstraintConsumer; +use crate::cross_table_lookups::{ + cross_table_lookup_zs, CTLCheckVars, CrossTableLookup, LookupData, +}; use crate::permutation::{ compute_permutation_z_polys, get_n_permutation_challenge_sets, PermutationChallengeSet, }; @@ -29,117 +31,13 @@ use crate::permutation::{PermutationChallenge, PermutationCheckVars}; use crate::proof::{StarkOpeningSet, StarkProof, StarkProofWithPublicInputs}; use crate::stark::Stark; use crate::vanishing_poly::eval_vanishing_poly; -use crate::vars::{StarkEvaluationTargets, StarkEvaluationVars}; - -#[derive(Copy, Clone)] -pub enum Table { - Cpu = 0, - Keccak = 1, -} - -struct CpuStark { - f: PhantomData, -} - -impl, const D: usize> Stark for CpuStark { - const COLUMNS: usize = 0; - const PUBLIC_INPUTS: usize = 0; - - fn eval_packed_generic( - &self, - _vars: StarkEvaluationVars, - _yield_constr: &mut ConstraintConsumer

, - ) where - FE: FieldExtension, - P: PackedField, - { - todo!() - } - - fn eval_ext_recursively( - &self, - _builder: &mut plonky2::plonk::circuit_builder::CircuitBuilder, - _vars: StarkEvaluationTargets, - _yield_constr: &mut RecursiveConstraintConsumer, - ) { - todo!() - } - - fn constraint_degree(&self) -> usize { - todo!() - } -} - -struct KeccakStark { - f: PhantomData, -} - -impl, const D: usize> Stark for KeccakStark { - const COLUMNS: usize = 0; - const PUBLIC_INPUTS: usize = 0; - - fn eval_packed_generic( - &self, - _vars: StarkEvaluationVars, - _yield_constr: &mut ConstraintConsumer

, - ) where - FE: FieldExtension, - P: PackedField, - { - todo!() - } - - fn eval_ext_recursively( - &self, - _builder: &mut plonky2::plonk::circuit_builder::CircuitBuilder, - _vars: StarkEvaluationTargets, - _yield_constr: &mut RecursiveConstraintConsumer, - ) { - todo!() - } - - fn constraint_degree(&self) -> usize { - todo!() - } -} - -pub struct AllStarks, const D: usize> { - cpu: CpuStark, - keccak: KeccakStark, -} - -pub struct CrossTableLookup { - pub looking_table: Table, - pub looking_columns: Vec, - pub looked_table: usize, - pub looked_columns: Vec, - pub default: F, -} - -impl CrossTableLookup { - pub fn new( - looking_table: Table, - looking_columns: Vec, - looked_table: usize, - looked_columns: Vec, - default: F, - ) -> Self { - assert_eq!(looking_columns.len(), looked_columns.len()); - Self { - looking_table, - looking_columns, - looked_table, - looked_columns, - default, - } - } -} +use crate::vars::StarkEvaluationVars; pub fn prove( all_starks: AllStarks, config: &StarkConfig, trace_poly_values: Vec>>, - cross_table_lookups: Vec>, + cross_table_lookups: Vec, public_inputs: Vec>, timing: &mut TimingTree, ) -> Result>> @@ -199,7 +97,7 @@ where &mut challenger, ); - let cpu_proof = do_rest( + let cpu_proof = prove_single_table( &all_starks.cpu, config, &trace_poly_values[Table::Cpu as usize], @@ -209,7 +107,7 @@ where &mut challenger, timing, )?; - let keccak_proof = do_rest( + let keccak_proof = prove_single_table( &all_starks.keccak, config, &trace_poly_values[Table::Keccak as usize], @@ -223,7 +121,7 @@ where Ok(vec![cpu_proof, keccak_proof]) } -fn do_rest( +fn prove_single_table( stark: &S, config: &StarkConfig, trace_poly_values: &[PolynomialValues],