From bf375390b7d4815725e09a00382a4e990b8d6873 Mon Sep 17 00:00:00 2001 From: wborgeaud Date: Mon, 13 Jun 2022 17:41:17 +0200 Subject: [PATCH] Keccak round flags constraints --- evm/src/keccak/round_flags.rs | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/evm/src/keccak/round_flags.rs b/evm/src/keccak/round_flags.rs index 63128ba1..41a0c0ec 100644 --- a/evm/src/keccak/round_flags.rs +++ b/evm/src/keccak/round_flags.rs @@ -21,7 +21,11 @@ pub(crate) fn eval_round_flags>( yield_constr.constraint_first_row(vars.local_values[reg_step(i)]); } - // TODO: Transition. + for i in 0..NUM_ROUNDS { + let current_round_flag = vars.local_values[reg_step(i)]; + let next_round_flag = vars.next_values[reg_step((i + 1) % NUM_ROUNDS)]; + yield_constr.constraint_transition(next_round_flag - current_round_flag); + } } pub(crate) fn eval_round_flags_recursively, const D: usize>( @@ -37,4 +41,11 @@ pub(crate) fn eval_round_flags_recursively, const D for i in 1..NUM_ROUNDS { yield_constr.constraint_first_row(builder, vars.local_values[reg_step(i)]); } + + for i in 0..NUM_ROUNDS { + let current_round_flag = vars.local_values[reg_step(i)]; + let next_round_flag = vars.next_values[reg_step((i + 1) % NUM_ROUNDS)]; + let diff = builder.sub_extension(next_round_flag, current_round_flag); + yield_constr.constraint_transition(builder, diff); + } }