From a260fba13195b4b6197afe1a613c34111cd2730f Mon Sep 17 00:00:00 2001 From: Sai Deng Date: Wed, 9 Oct 2024 14:56:54 -0700 Subject: [PATCH] merge tests --- .../src/fixed_recursive_verifier.rs | 78 +++---------------- evm_arithmetization/tests/empty_tables.rs | 69 ++++++++++++---- 2 files changed, 64 insertions(+), 83 deletions(-) diff --git a/evm_arithmetization/src/fixed_recursive_verifier.rs b/evm_arithmetization/src/fixed_recursive_verifier.rs index 7cc105d44..17969c1b7 100644 --- a/evm_arithmetization/src/fixed_recursive_verifier.rs +++ b/evm_arithmetization/src/fixed_recursive_verifier.rs @@ -1903,7 +1903,6 @@ where abort_signal: Option>, ) -> anyhow::Result> { features_check(&generation_inputs); - let all_proof = prove::( all_stark, config, @@ -1912,7 +1911,15 @@ where timing, abort_signal.clone(), )?; + self.prove_segment_with_all_proofs(&all_proof, config, abort_signal.clone()) + } + pub fn prove_segment_with_all_proofs( + &self, + all_proof: &AllProof, + config: &StarkConfig, + abort_signal: Option>, + ) -> anyhow::Result> { let mut root_inputs = PartialWitness::new(); for table in 0..NUM_TABLES { @@ -1995,7 +2002,7 @@ where is_agg: false, is_dummy: false, proof_with_pvs: ProofWithPublicValues { - public_values: all_proof.public_values, + public_values: all_proof.public_values.clone(), intern: root_proof, }, }) @@ -3135,70 +3142,3 @@ pub mod testing { } } } - -#[cfg(test)] -#[cfg(not(feature = "cdk_erigon"))] -mod tests { - use plonky2::field::goldilocks_field::GoldilocksField; - use plonky2::plonk::config::PoseidonGoldilocksConfig; - use plonky2::timed; - - use super::*; - use crate::testing_utils::{init_logger, segment_without_keccak}; - - type F = GoldilocksField; - const D: usize = 2; - type C = PoseidonGoldilocksConfig; - - #[test] - fn test_segment_proof_generation_without_keccak() -> anyhow::Result<()> { - init_logger(); - - let all_stark = AllStark::::default(); - let config = StarkConfig::standard_fast_config(); - - let timing = &mut TimingTree::new( - "Segment Proof Generation Without Keccak Test", - log::Level::Info, - ); - // Process and prove segment - let all_circuits = timed!( - timing, - log::Level::Info, - "Create all recursive circuits", - AllRecursiveCircuits::::new( - &all_stark, - &[16..17, 8..9, 7..8, 4..9, 8..9, 4..7, 17..18, 17..18, 17..18], - &config, - ) - ); - - let (payload, mut segment_data) = segment_without_keccak()?; - let segment_proof = timed!( - timing, - log::Level::Info, - "Prove segment", - all_circuits.prove_segment( - &all_stark, - &config, - payload, - &mut segment_data, - timing, - None, - )? - ); - - // Verify the generated segment proof - timed!( - timing, - log::Level::Info, - "Verify segment proof", - all_circuits.verify_root(segment_proof.proof_with_pvs.intern.clone())? - ); - - // Print timing details - timing.print(); - - Ok(()) - } -} diff --git a/evm_arithmetization/tests/empty_tables.rs b/evm_arithmetization/tests/empty_tables.rs index 9cb3e6fa9..18fe6166d 100644 --- a/evm_arithmetization/tests/empty_tables.rs +++ b/evm_arithmetization/tests/empty_tables.rs @@ -1,13 +1,13 @@ #![cfg(feature = "eth_mainnet")] -use std::time::Duration; - +use evm_arithmetization::fixed_recursive_verifier::AllRecursiveCircuits; use evm_arithmetization::prover::prove; use evm_arithmetization::testing_utils::{init_logger, segment_without_keccak}; use evm_arithmetization::verifier::testing::verify_all_proofs; use evm_arithmetization::AllStark; use plonky2::field::goldilocks_field::GoldilocksField; use plonky2::plonk::config::PoseidonGoldilocksConfig; +use plonky2::timed; use plonky2::util::timing::TimingTree; use starky::config::StarkConfig; @@ -22,21 +22,62 @@ fn empty_tables() -> anyhow::Result<()> { let all_stark = AllStark::::default(); let config = StarkConfig::standard_fast_config(); - let mut proofs = vec![]; - let mut timing = TimingTree::new("prove", log::Level::Debug); + let mut timing = &mut TimingTree::new( + "Empty Table Test", + log::Level::Info, + ); + // Generate segment data let (payload, mut segment_data) = segment_without_keccak()?; - let proof = prove::( - &all_stark, - &config, - payload, - &mut segment_data, - &mut timing, - None, - )?; + + // Create all STARK proofs + let mut proofs = vec![]; + let proof = timed!( + timing, + log::Level::Info, + "Create all STARK proofs", + prove::( + &all_stark, + &config, + payload, + &mut segment_data, + &mut timing, + None, + )? + ); proofs.push(proof); - timing.filter(Duration::from_millis(100)).print(); + // Verify the generated STARK proofs + verify_all_proofs(&all_stark, &proofs, &config)?; + + // Process and generate segment proof + let all_circuits = timed!( + timing, + log::Level::Info, + "Create all recursive circuits", + AllRecursiveCircuits::::new( + &all_stark, + &[16..17, 8..9, 7..8, 4..9, 8..9, 4..7, 17..18, 17..18, 17..18], + &config, + ) + ); + let segment_proof = timed!( + timing, + log::Level::Info, + "Prove segment", + all_circuits.prove_segment_with_all_proofs(&proofs[0], &config, None)? + ); + + // Verify the generated segment proof + timed!( + timing, + log::Level::Info, + "Verify segment proof", + all_circuits.verify_root(segment_proof.proof_with_pvs.intern.clone())? + ); + + // Print timing details + timing.print(); - verify_all_proofs(&all_stark, &proofs, &config) + Ok(()) }