diff --git a/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs b/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs index 32943e5cd3..8678e0836a 100644 --- a/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs +++ b/zkevm-circuits/src/evm_circuit/util/constraint_builder.rs @@ -1043,7 +1043,7 @@ impl<'a, F: FieldExt> ConstraintBuilder<'a, F> { &mut self, tx_id: Expression, log_id: Expression, - tag: TxLogFieldTag, + field_tag: TxLogFieldTag, index: Expression, value: Expression, ) { @@ -1053,8 +1053,8 @@ impl<'a, F: FieldExt> ConstraintBuilder<'a, F> { RwTableTag::TxLog, [ tx_id, - index + (1u64 << 8).expr() * log_id, - tag.expr(), + index + (1u64 << 16).expr() * field_tag.expr() + (1u64 << 32).expr() * log_id, + field_tag.expr(), 0.expr(), value, 0.expr(), diff --git a/zkevm-circuits/src/evm_circuit/witness.rs b/zkevm-circuits/src/evm_circuit/witness.rs index b706222de1..bfa12dc9a0 100644 --- a/zkevm-circuits/src/evm_circuit/witness.rs +++ b/zkevm-circuits/src/evm_circuit/witness.rs @@ -760,8 +760,19 @@ impl Rw { Self::Stack { stack_pointer, .. } => { Some(U256::from(*stack_pointer as u64).to_address()) } - Self::TxLog { log_id, index, .. } => { - Some((U256::from(*index as u64) + (U256::from(*log_id) << 8)).to_address()) + Self::TxLog { + log_id, + index, + field_tag, + .. + } => { + // make field_tag fit into one limb (16 bits) + Some( + (U256::from(*index as u64) + + (U256::from(*field_tag as u64) << 16) + + (U256::from(*log_id) << 32)) + .to_address(), + ) } Self::Start | Self::CallContext { .. }