diff --git a/evm/src/all_stark.rs b/evm/src/all_stark.rs index 3975e5f4..130343b3 100644 --- a/evm/src/all_stark.rs +++ b/evm/src/all_stark.rs @@ -213,7 +213,7 @@ mod tests { .map(|i| { (0..2 * NUM_INPUTS) .map(|j| { - keccak::registers::reg_input_limb(j) + keccak::columns::reg_input_limb(j) .eval_table(keccak_trace, (i + 1) * NUM_ROUNDS - 1) }) .collect::>() @@ -225,7 +225,7 @@ mod tests { .map(|i| { (0..2 * NUM_INPUTS) .map(|j| { - keccak_trace[keccak::registers::reg_output_limb(j)].values + keccak_trace[keccak::columns::reg_output_limb(j)].values [(i + 1) * NUM_ROUNDS - 1] }) .collect::>() @@ -276,12 +276,12 @@ mod tests { cpu_trace_rows.push(row); } let mut current_cpu_index = 0; - let mut last_timestamp = memory_trace[memory::registers::TIMESTAMP].values[0]; + let mut last_timestamp = memory_trace[memory::columns::TIMESTAMP].values[0]; for i in 0..num_memory_ops { - let mem_timestamp = memory_trace[memory::registers::TIMESTAMP].values[i]; + let mem_timestamp = memory_trace[memory::columns::TIMESTAMP].values[i]; let clock = mem_timestamp; let op = (0..NUM_CHANNELS) - .filter(|&o| memory_trace[memory::registers::is_channel(o)].values[i] == F::ONE) + .filter(|&o| memory_trace[memory::columns::is_channel(o)].values[i] == F::ONE) .collect_vec()[0]; if mem_timestamp != last_timestamp { @@ -292,16 +292,16 @@ mod tests { cpu_trace_rows[current_cpu_index][cpu::columns::mem_channel_used(op)] = F::ONE; cpu_trace_rows[current_cpu_index][cpu::columns::CLOCK] = clock; cpu_trace_rows[current_cpu_index][cpu::columns::mem_is_read(op)] = - memory_trace[memory::registers::IS_READ].values[i]; + memory_trace[memory::columns::IS_READ].values[i]; cpu_trace_rows[current_cpu_index][cpu::columns::mem_addr_context(op)] = - memory_trace[memory::registers::ADDR_CONTEXT].values[i]; + memory_trace[memory::columns::ADDR_CONTEXT].values[i]; cpu_trace_rows[current_cpu_index][cpu::columns::mem_addr_segment(op)] = - memory_trace[memory::registers::ADDR_SEGMENT].values[i]; + memory_trace[memory::columns::ADDR_SEGMENT].values[i]; cpu_trace_rows[current_cpu_index][cpu::columns::mem_addr_virtual(op)] = - memory_trace[memory::registers::ADDR_VIRTUAL].values[i]; + memory_trace[memory::columns::ADDR_VIRTUAL].values[i]; for j in 0..8 { cpu_trace_rows[current_cpu_index][cpu::columns::mem_value(op, j)] = - memory_trace[memory::registers::value_limb(j)].values[i]; + memory_trace[memory::columns::value_limb(j)].values[i]; } } trace_rows_to_poly_values(cpu_trace_rows) diff --git a/evm/src/keccak/registers.rs b/evm/src/keccak/columns.rs similarity index 97% rename from evm/src/keccak/registers.rs rename to evm/src/keccak/columns.rs index 84dc8329..2d9a35f0 100644 --- a/evm/src/keccak/registers.rs +++ b/evm/src/keccak/columns.rs @@ -119,4 +119,4 @@ pub(crate) const fn reg_a_prime_prime_prime(x: usize, y: usize) -> usize { } } -pub(crate) const NUM_REGISTERS: usize = REG_A_PRIME_PRIME_PRIME_0_0_HI + 1; +pub(crate) const NUM_COLUMNS: usize = REG_A_PRIME_PRIME_PRIME_0_0_HI + 1; diff --git a/evm/src/keccak/keccak_stark.rs b/evm/src/keccak/keccak_stark.rs index 477ffed5..f6768eef 100644 --- a/evm/src/keccak/keccak_stark.rs +++ b/evm/src/keccak/keccak_stark.rs @@ -13,14 +13,14 @@ use plonky2::util::timing::TimingTree; use crate::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; use crate::cross_table_lookup::Column; +use crate::keccak::columns::{ + reg_a, reg_a_prime, reg_a_prime_prime, reg_a_prime_prime_0_0_bit, reg_a_prime_prime_prime, + reg_b, reg_c, reg_c_partial, reg_input_limb, reg_output_limb, reg_step, NUM_COLUMNS, +}; use crate::keccak::constants::{rc_value, rc_value_bit}; use crate::keccak::logic::{ andn, andn_gen, andn_gen_circuit, xor, xor3_gen, xor3_gen_circuit, xor_gen, xor_gen_circuit, }; -use crate::keccak::registers::{ - reg_a, reg_a_prime, reg_a_prime_prime, reg_a_prime_prime_0_0_bit, reg_a_prime_prime_prime, - reg_b, reg_c, reg_c_partial, reg_input_limb, reg_output_limb, reg_step, NUM_REGISTERS, -}; use crate::keccak::round_flags::{eval_round_flags, eval_round_flags_recursively}; use crate::stark::Stark; use crate::util::trace_rows_to_poly_values; @@ -55,7 +55,7 @@ impl, const D: usize> KeccakStark { pub(crate) fn generate_trace_rows( &self, inputs: Vec<[u64; NUM_INPUTS]>, - ) -> Vec<[F; NUM_REGISTERS]> { + ) -> Vec<[F; NUM_COLUMNS]> { let num_rows = (inputs.len() * NUM_ROUNDS).next_power_of_two(); info!("{} rows", num_rows); let mut rows = Vec::with_capacity(num_rows); @@ -71,8 +71,8 @@ impl, const D: usize> KeccakStark { rows } - fn generate_trace_rows_for_perm(&self, input: [u64; NUM_INPUTS]) -> Vec<[F; NUM_REGISTERS]> { - let mut rows = vec![[F::ZERO; NUM_REGISTERS]; NUM_ROUNDS]; + fn generate_trace_rows_for_perm(&self, input: [u64; NUM_INPUTS]) -> Vec<[F; NUM_COLUMNS]> { + let mut rows = vec![[F::ZERO; NUM_COLUMNS]; NUM_ROUNDS]; for x in 0..5 { for y in 0..5 { @@ -92,11 +92,7 @@ impl, const D: usize> KeccakStark { rows } - fn copy_output_to_input( - &self, - prev_row: [F; NUM_REGISTERS], - next_row: &mut [F; NUM_REGISTERS], - ) { + fn copy_output_to_input(&self, prev_row: [F; NUM_COLUMNS], next_row: &mut [F; NUM_COLUMNS]) { for x in 0..5 { for y in 0..5 { let cur_lo = prev_row[reg_a_prime_prime_prime(x, y)]; @@ -117,7 +113,7 @@ impl, const D: usize> KeccakStark { } } - fn generate_trace_row_for_round(&self, row: &mut [F; NUM_REGISTERS], round: usize) { + fn generate_trace_row_for_round(&self, row: &mut [F; NUM_COLUMNS], round: usize) { row[reg_step(round)] = F::ONE; // Populate C partial and C. @@ -219,7 +215,7 @@ impl, const D: usize> KeccakStark { } impl, const D: usize> Stark for KeccakStark { - const COLUMNS: usize = NUM_REGISTERS; + const COLUMNS: usize = NUM_COLUMNS; const PUBLIC_INPUTS: usize = NUM_PUBLIC_INPUTS; fn eval_packed_generic( @@ -529,8 +525,8 @@ mod tests { use plonky2::field::types::Field; use plonky2::plonk::config::{GenericConfig, PoseidonGoldilocksConfig}; + use crate::keccak::columns::reg_output_limb; use crate::keccak::keccak_stark::{KeccakStark, NUM_INPUTS, NUM_ROUNDS}; - use crate::keccak::registers::reg_output_limb; use crate::stark_testing::{test_stark_circuit_constraints, test_stark_low_degree}; #[test] diff --git a/evm/src/keccak/mod.rs b/evm/src/keccak/mod.rs index 2d104339..d71e9e9c 100644 --- a/evm/src/keccak/mod.rs +++ b/evm/src/keccak/mod.rs @@ -1,5 +1,5 @@ +pub mod columns; pub mod constants; pub mod keccak_stark; pub mod logic; -pub mod registers; pub mod round_flags; diff --git a/evm/src/keccak/round_flags.rs b/evm/src/keccak/round_flags.rs index 2636c7f2..6a4d03b6 100644 --- a/evm/src/keccak/round_flags.rs +++ b/evm/src/keccak/round_flags.rs @@ -5,14 +5,14 @@ use plonky2::hash::hash_types::RichField; use plonky2::plonk::circuit_builder::CircuitBuilder; use crate::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; +use crate::keccak::columns::reg_step; +use crate::keccak::columns::NUM_COLUMNS; use crate::keccak::keccak_stark::{NUM_PUBLIC_INPUTS, NUM_ROUNDS}; -use crate::keccak::registers::reg_step; -use crate::keccak::registers::NUM_REGISTERS; use crate::vars::StarkEvaluationTargets; use crate::vars::StarkEvaluationVars; pub(crate) fn eval_round_flags>( - vars: StarkEvaluationVars, + vars: StarkEvaluationVars, yield_constr: &mut ConstraintConsumer

, ) { // Initially, the first step flag should be 1 while the others should be 0. @@ -30,7 +30,7 @@ pub(crate) fn eval_round_flags>( pub(crate) fn eval_round_flags_recursively, const D: usize>( builder: &mut CircuitBuilder, - vars: StarkEvaluationTargets, + vars: StarkEvaluationTargets, yield_constr: &mut RecursiveConstraintConsumer, ) { let one = builder.one_extension(); diff --git a/evm/src/memory/registers.rs b/evm/src/memory/columns.rs similarity index 97% rename from evm/src/memory/registers.rs rename to evm/src/memory/columns.rs index 4ed7f866..d9fa927f 100644 --- a/evm/src/memory/registers.rs +++ b/evm/src/memory/columns.rs @@ -52,4 +52,4 @@ pub(crate) const fn is_channel(channel: usize) -> usize { IS_CHANNEL_START + channel } -pub(crate) const NUM_REGISTERS: usize = IS_CHANNEL_START + NUM_CHANNELS; +pub(crate) const NUM_COLUMNS: usize = IS_CHANNEL_START + NUM_CHANNELS; diff --git a/evm/src/memory/memory_stark.rs b/evm/src/memory/memory_stark.rs index 1c7c6c45..3f7c26fc 100644 --- a/evm/src/memory/memory_stark.rs +++ b/evm/src/memory/memory_stark.rs @@ -11,13 +11,13 @@ use plonky2::timed; use plonky2::util::timing::TimingTree; use rand::Rng; -use super::registers::is_channel; +use super::columns::is_channel; use crate::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; use crate::cross_table_lookup::Column; use crate::lookup::{eval_lookups, eval_lookups_circuit, permuted_cols}; -use crate::memory::registers::{ +use crate::memory::columns::{ sorted_value_limb, value_limb, ADDR_CONTEXT, ADDR_SEGMENT, ADDR_VIRTUAL, CONTEXT_FIRST_CHANGE, - COUNTER, COUNTER_PERMUTED, IS_READ, NUM_REGISTERS, RANGE_CHECK, RANGE_CHECK_PERMUTED, + COUNTER, COUNTER_PERMUTED, IS_READ, NUM_COLUMNS, RANGE_CHECK, RANGE_CHECK_PERMUTED, SEGMENT_FIRST_CHANGE, SORTED_ADDR_CONTEXT, SORTED_ADDR_SEGMENT, SORTED_ADDR_VIRTUAL, SORTED_IS_READ, SORTED_TIMESTAMP, TIMESTAMP, VIRTUAL_FIRST_CHANGE, }; @@ -227,10 +227,10 @@ impl, const D: usize> MemoryStark { pub(crate) fn generate_trace_rows( &self, memory_ops: Vec>, - ) -> Vec<[F; NUM_REGISTERS]> { + ) -> Vec<[F; NUM_COLUMNS]> { let num_ops = memory_ops.len(); - let mut trace_cols = [(); NUM_REGISTERS].map(|_| vec![F::ZERO; num_ops]); + let mut trace_cols = [(); NUM_COLUMNS].map(|_| vec![F::ZERO; num_ops]); for i in 0..num_ops { let MemoryOp { channel_index, @@ -254,7 +254,7 @@ impl, const D: usize> MemoryStark { self.generate_memory(&mut trace_cols); - let mut trace_rows = vec![[F::ZERO; NUM_REGISTERS]; num_ops]; + let mut trace_rows = vec![[F::ZERO; NUM_COLUMNS]; num_ops]; for (i, col) in trace_cols.iter().enumerate() { for (j, &val) in col.iter().enumerate() { trace_rows[j][i] = val; @@ -353,7 +353,7 @@ impl, const D: usize> MemoryStark { } impl, const D: usize> Stark for MemoryStark { - const COLUMNS: usize = NUM_REGISTERS; + const COLUMNS: usize = NUM_COLUMNS; const PUBLIC_INPUTS: usize = NUM_PUBLIC_INPUTS; fn eval_packed_generic( diff --git a/evm/src/memory/mod.rs b/evm/src/memory/mod.rs index 261b356d..395eb6fb 100644 --- a/evm/src/memory/mod.rs +++ b/evm/src/memory/mod.rs @@ -1,5 +1,5 @@ +pub mod columns; pub mod memory_stark; -pub mod registers; pub(crate) const NUM_CHANNELS: usize = 4; pub(crate) const VALUE_LIMBS: usize = 8;