diff --git a/src/witness/artifacts.rs b/src/witness/artifacts.rs index d8fad4c3..0b818265 100644 --- a/src/witness/artifacts.rs +++ b/src/witness/artifacts.rs @@ -121,13 +121,6 @@ pub struct MemoryArtifacts { CircuitsEntryAccumulatorSparse<(u32, QueueStateWitness)>, } -#[derive(Derivative)] -#[derivative(Default)] -pub struct ImplicitMemoryArtifacts { - pub memory_queries: Vec, - pub memory_queue_states: Vec>, -} - #[derive(Derivative)] #[derivative(Default)] pub struct LogCircuitsArtifacts { diff --git a/src/witness/individual_circuits/memory_related/decommit_code.rs b/src/witness/individual_circuits/memory_related/decommit_code.rs index baf22d3e..49a3d1a7 100644 --- a/src/witness/individual_circuits/memory_related/decommit_code.rs +++ b/src/witness/individual_circuits/memory_related/decommit_code.rs @@ -8,7 +8,6 @@ use crate::zk_evm::ethereum_types::U256; use crate::zkevm_circuits::base_structures::decommit_query::DecommitQueryWitness; use crate::zkevm_circuits::base_structures::decommit_query::DECOMMIT_QUERY_PACKED_WIDTH; use crate::zkevm_circuits::code_unpacker_sha256::input::*; -use artifacts::ImplicitMemoryArtifacts; use circuit_definitions::encodings::decommittment_request::normalized_preimage_as_u256; use circuit_definitions::encodings::decommittment_request::DecommittmentQueueSimulator; use circuit_definitions::encodings::decommittment_request::DecommittmentQueueState; diff --git a/src/witness/individual_circuits/memory_related/ecrecover.rs b/src/witness/individual_circuits/memory_related/ecrecover.rs index 7db17f09..bb31b44a 100644 --- a/src/witness/individual_circuits/memory_related/ecrecover.rs +++ b/src/witness/individual_circuits/memory_related/ecrecover.rs @@ -1,5 +1,5 @@ use super::*; -use crate::witness::artifacts::{DemuxedLogQueries, ImplicitMemoryArtifacts, LogQueueStates}; +use crate::witness::artifacts::{DemuxedLogQueries, LogQueueStates}; use crate::witness::aux_data_structs::one_per_circuit_accumulator::LastPerCircuitAccumulator; use crate::witness::aux_data_structs::MemoryQueuePerCircuitSimulator; use crate::zk_evm::aux_structures::LogQuery as LogQuery_; diff --git a/src/witness/individual_circuits/memory_related/keccak256_round_function.rs b/src/witness/individual_circuits/memory_related/keccak256_round_function.rs index 61adbd90..2b83ad3e 100644 --- a/src/witness/individual_circuits/memory_related/keccak256_round_function.rs +++ b/src/witness/individual_circuits/memory_related/keccak256_round_function.rs @@ -1,5 +1,5 @@ use super::*; -use crate::witness::artifacts::{DemuxedLogQueries, ImplicitMemoryArtifacts, LogQueueStates}; +use crate::witness::artifacts::{DemuxedLogQueries, LogQueueStates}; use crate::witness::aux_data_structs::one_per_circuit_accumulator::LastPerCircuitAccumulator; use crate::witness::aux_data_structs::MemoryQueuePerCircuitSimulator; use crate::zk_evm::aux_structures::LogQuery as LogQuery_; diff --git a/src/witness/individual_circuits/memory_related/mod.rs b/src/witness/individual_circuits/memory_related/mod.rs index ec09f7c9..52ce4957 100644 --- a/src/witness/individual_circuits/memory_related/mod.rs +++ b/src/witness/individual_circuits/memory_related/mod.rs @@ -156,25 +156,6 @@ impl ImplicitMemoryStates { + self.secp256r1_memory_states.len() + self.sha256_memory_states.len() } - - fn get_vectors(&self) -> [&Vec>; 5] { - [ - &self.decommitter_memory_states, - &self.keccak256_memory_states, - &self.sha256_memory_states, - &self.ecrecover_memory_states, - &self.secp256r1_memory_states, - ] - } - - pub fn iter(&self) -> ImplicitMemoryStatesIter { - let mut outer_iter = self.get_vectors().into_iter(); - let last_vector_iter = outer_iter.next().unwrap().iter(); - ImplicitMemoryStatesIter { - last_vector: last_vector_iter, - outer_iter, - } - } } use core::array::IntoIter as ArrayIntoIter; @@ -215,11 +196,14 @@ fn get_simulator_snapshot( } } +use crate::witness::aux_data_structs::one_per_circuit_accumulator::LastPerCircuitAccumulator; + pub(crate) fn simulate_implicit_memory_queues< F: SmallField, R: BuildableCircuitRoundFunction + AlgebraicRoundFunction, >( memory_queue_simulator: &mut MemoryQueuePerCircuitSimulator, + memory_queue_states_accumulator: &mut LastPerCircuitAccumulator>, implicit_memory_queries: &ImplicitMemoryQueries, round_function: R, ) -> ImplicitMemoryStates { @@ -234,6 +218,7 @@ pub(crate) fn simulate_implicit_memory_queues< .push_and_output_intermediate_data(*query, &round_function); memory_states.push(intermediate_info); + memory_queue_states_accumulator.push(intermediate_info); } snapshots.push(get_simulator_snapshot(memory_queue_simulator)); // after diff --git a/src/witness/individual_circuits/memory_related/ram_permutation.rs b/src/witness/individual_circuits/memory_related/ram_permutation.rs index 789fd459..69ce6c00 100644 --- a/src/witness/individual_circuits/memory_related/ram_permutation.rs +++ b/src/witness/individual_circuits/memory_related/ram_permutation.rs @@ -12,7 +12,7 @@ use crate::zk_evm::ethereum_types::U256; use crate::zkevm_circuits::{ base_structures::memory_query::MEMORY_QUERY_PACKED_WIDTH, ram_permutation::input::*, }; -use artifacts::{ImplicitMemoryArtifacts, MemoryArtifacts}; +use artifacts::MemoryArtifacts; use circuit_definitions::circuit_definitions::base_layer::{ RAMPermutationInstanceSynthesisFunction, ZkSyncBaseLayerCircuit, }; diff --git a/src/witness/individual_circuits/memory_related/secp256r1_verify.rs b/src/witness/individual_circuits/memory_related/secp256r1_verify.rs index 0117ac3e..67af787b 100644 --- a/src/witness/individual_circuits/memory_related/secp256r1_verify.rs +++ b/src/witness/individual_circuits/memory_related/secp256r1_verify.rs @@ -1,5 +1,5 @@ use super::*; -use crate::witness::artifacts::{DemuxedLogQueries, ImplicitMemoryArtifacts, LogQueueStates}; +use crate::witness::artifacts::{DemuxedLogQueries, LogQueueStates}; use crate::witness::aux_data_structs::one_per_circuit_accumulator::LastPerCircuitAccumulator; use crate::witness::aux_data_structs::MemoryQueuePerCircuitSimulator; use crate::zk_evm::aux_structures::LogQuery as LogQuery_; diff --git a/src/witness/individual_circuits/memory_related/sha256_round_function.rs b/src/witness/individual_circuits/memory_related/sha256_round_function.rs index 4142101d..23d372b6 100644 --- a/src/witness/individual_circuits/memory_related/sha256_round_function.rs +++ b/src/witness/individual_circuits/memory_related/sha256_round_function.rs @@ -1,6 +1,6 @@ use super::*; use crate::boojum::gadgets::traits::allocatable::CSAllocatable; -use crate::witness::artifacts::{DemuxedLogQueries, ImplicitMemoryArtifacts, LogQueueStates}; +use crate::witness::artifacts::{DemuxedLogQueries, LogQueueStates}; use crate::witness::aux_data_structs::one_per_circuit_accumulator::LastPerCircuitAccumulator; use crate::witness::aux_data_structs::MemoryQueuePerCircuitSimulator; use crate::zk_evm::aux_structures::LogQuery as LogQuery_; diff --git a/src/witness/oracle.rs b/src/witness/oracle.rs index 5330e71b..3f3acf5f 100644 --- a/src/witness/oracle.rs +++ b/src/witness/oracle.rs @@ -17,7 +17,7 @@ use crate::boojum::gadgets::traits::allocatable::CSAllocatable; use crate::ethereum_types::U256; use crate::toolset::GeometryConfig; use crate::witness::artifacts::{ - DemuxedLogQueries, ImplicitMemoryArtifacts, MemoryArtifacts, MemoryCircuitsArtifacts, + DemuxedLogQueries, MemoryArtifacts, MemoryCircuitsArtifacts, }; use crate::witness::aux_data_structs::one_per_circuit_accumulator::{ CircuitsEntryAccumulatorSparse, LastPerCircuitAccumulator, @@ -893,16 +893,11 @@ fn simulate_memory_queue( use crate::witness::individual_circuits::memory_related::simulate_implicit_memory_queues; let implicit_memory_states = simulate_implicit_memory_queues( &mut memory_queue_simulator, + &mut memory_queue_states_accumulator, &implicit_memory_queries, round_function, ); - // push implicit queries - memory_queue_states_accumulator.reserve_exact_flat(implicit_memory_states.amount_of_states()); - for state in implicit_memory_states.iter() { - memory_queue_states_accumulator.push(*state); - } - ( memory_artifacts_for_main_vm, final_explicit_memory_queue_state, @@ -1095,10 +1090,8 @@ fn process_memory_related_circuits< // direct VM related part is done, other subcircuit's functionality is moved to other functions // that should properly do sorts and memory writes - let amount_of_implicit_queries = implicit_memory_queries.amount_of_queries(); - assert_eq!( - amount_of_implicit_queries, + implicit_memory_queries.amount_of_queries(), implicit_memory_states.amount_of_states() );