Skip to content
This repository was archived by the owner on Apr 18, 2025. It is now read-only.

fix: move access-list address and storage key from value and value_prev to word_rlc and word_rlc_prev in copy circuit #1073

Draft
wants to merge 2 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions zkevm-circuits/src/copy_circuit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -459,7 +459,7 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> {

let tx_id = meta.query_advice(id, CURRENT);
let index = meta.query_advice(addr, CURRENT);
let address = meta.query_advice(value, CURRENT);
let address = meta.query_advice(value_word_rlc, CURRENT);

vec![
1.expr(),
Expand All @@ -481,7 +481,7 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> {
* meta.query_advice(is_access_list_address, CURRENT);

let tx_id = meta.query_advice(id, CURRENT);
let address = meta.query_advice(value, CURRENT);
let address = meta.query_advice(value_word_rlc, CURRENT);

vec![
1.expr(),
Expand Down Expand Up @@ -511,8 +511,8 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> {

let tx_id = meta.query_advice(id, CURRENT);
let index = meta.query_advice(addr, CURRENT);
let address = meta.query_advice(value, CURRENT);
let storage_key = meta.query_advice(value_prev, CURRENT);
let address = meta.query_advice(value_word_rlc, CURRENT);
let storage_key = meta.query_advice(value_word_rlc_prev, CURRENT);

vec![
1.expr(),
Expand All @@ -534,8 +534,8 @@ impl<F: Field> SubCircuitConfig<F> for CopyCircuitConfig<F> {
* meta.query_advice(is_access_list_storage_key, CURRENT);

let tx_id = meta.query_advice(id, CURRENT);
let address = meta.query_advice(value, CURRENT);
let storage_key = meta.query_advice(value_prev, CURRENT);
let address = meta.query_advice(value_word_rlc, CURRENT);
let storage_key = meta.query_advice(value_word_rlc_prev, CURRENT);

vec![
1.expr(),
Expand Down
22 changes: 9 additions & 13 deletions zkevm-circuits/src/table.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1840,19 +1840,8 @@ impl CopyTable {

let is_pad = is_read_step && thread.addr >= thread.addr_end;

let [value, value_prev] = if is_access_list {
let address_pair = copy_event.access_list[step_idx / 2];
[
address_pair.0.to_scalar().unwrap(),
address_pair.1.to_scalar().unwrap(),
]
} else {
[
F::from(copy_step.value as u64),
F::from(copy_step.prev_value as u64),
]
}
.map(Value::known);
let [value, value_prev] = [copy_step.value, copy_step.prev_value]
.map(|val| Value::known(F::from(val as u64)));

let value_or_pad = if is_pad {
Value::known(F::zero())
Expand All @@ -1876,6 +1865,13 @@ impl CopyTable {
thread.word_rlc_prev * challenges.evm_word() + value_prev
};

if is_access_list {
let address_pair = copy_event.access_list[step_idx / 2];
[thread.word_rlc, thread.word_rlc_prev] =
[address_pair.0.to_scalar(), address_pair.1.to_scalar()]
.map(|val| Value::known(val.unwrap()));
}

let word_index = (step_idx as u64 / 2) % 32;

// For LOG, format the address including the log_id.
Expand Down