From edfc86c39353e4870b36849fc36e0a70d09a832b Mon Sep 17 00:00:00 2001 From: Hamy Ratoanina Date: Thu, 7 Dec 2023 13:07:06 -0500 Subject: [PATCH] Remove is_keccak_sponge (#1410) * Remove is_keccak_sponge * Apply comment --- evm/spec/tables/cpu.tex | 1 - evm/spec/zkevm.pdf | Bin 295898 -> 295781 bytes evm/src/cpu/columns/mod.rs | 3 --- evm/src/cpu/cpu_stark.rs | 9 ++++++++- evm/src/witness/operation.rs | 1 - 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/evm/spec/tables/cpu.tex b/evm/spec/tables/cpu.tex index 401081d3..7bca5a9f 100644 --- a/evm/spec/tables/cpu.tex +++ b/evm/spec/tables/cpu.tex @@ -31,7 +31,6 @@ but change the code context, which is where the instructions are read from. \item \texttt{is\_kernel\_mode}: Boolean indicating whether we are in kernel (i.e. privileged) mode. This means we are executing kernel code, and we have access to privileged instructions. \item \texttt{gas}: The current amount of gas used in the current context. It is eventually checked to be below the current gas limit. Must fit in 32 bits. - \item \texttt{is\_keccak\_sponge}: Boolean indicating whether we are executing a Keccak hash. Only used as a filter for CTLs. \item \texttt{clock}: Monotonic counter which starts at 0 and is incremented by 1 at each row. Used to enforce correct ordering of memory accesses. \item \texttt{opcode\_bits}: 8 boolean columns, which are the bit decomposition of the opcode being read at the current PC. \end{itemize} diff --git a/evm/spec/zkevm.pdf b/evm/spec/zkevm.pdf index 1f72b69df723e87dfef470e86e6e6bd75cb7c2c8..455491be7a3eb9fd96457e2d7645e161afcc5525 100644 GIT binary patch delta 5834 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�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 K3MC~)Peuws { /// If CPU cycle: the opcode, broken up into bits in little-endian order. pub opcode_bits: [T; 8], - /// Filter. 1 iff a Keccak sponge lookup is performed on this row. - pub is_keccak_sponge: T, - /// Columns shared by various operations. pub(crate) general: CpuGeneralColumnsView, diff --git a/evm/src/cpu/cpu_stark.rs b/evm/src/cpu/cpu_stark.rs index 1b89d5af..5eaa0c3f 100644 --- a/evm/src/cpu/cpu_stark.rs +++ b/evm/src/cpu/cpu_stark.rs @@ -48,8 +48,15 @@ pub(crate) fn ctl_data_keccak_sponge() -> Vec> { } /// CTL filter for a call to the Keccak sponge. +// KECCAK_GENERAL is differentiated from JUMPDEST by its second bit set to 0. pub(crate) fn ctl_filter_keccak_sponge() -> Filter { - Filter::new_simple(Column::single(COL_MAP.is_keccak_sponge)) + Filter::new( + vec![( + Column::single(COL_MAP.op.jumpdest_keccak_general), + Column::linear_combination_with_constant([(COL_MAP.opcode_bits[1], -F::ONE)], F::ONE), + )], + vec![], + ) } /// Creates the vector of `Columns` corresponding to the two inputs and diff --git a/evm/src/witness/operation.rs b/evm/src/witness/operation.rs index 3d092101..848dae85 100644 --- a/evm/src/witness/operation.rs +++ b/evm/src/witness/operation.rs @@ -129,7 +129,6 @@ pub(crate) fn generate_keccak_general( state: &mut GenerationState, mut row: CpuColumnsView, ) -> Result<(), ProgramError> { - row.is_keccak_sponge = F::ONE; let [(context, _), (segment, log_in1), (base_virt, log_in2), (len, log_in3)] = stack_pop_with_log_and_fill::<4, _>(state, &mut row)?; let len = u256_to_usize(len)?;