Skip to content

Commit

Permalink
Adjust witness generation to satisfy kernel lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanmon committed Jun 26, 2024
1 parent 8da96c2 commit 9c0db9b
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 3 deletions.
16 changes: 13 additions & 3 deletions barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_trace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1641,7 +1641,7 @@ void AvmTraceBuilder::op_sload(uint8_t indirect, uint32_t slot_offset, uint32_t

main_trace.push_back(row);

debug("sload: side-effect cnt", side_effect_counter);
debug("sload side-effect cnt: ", side_effect_counter);
side_effect_counter++;
clk++;

Expand Down Expand Up @@ -1705,7 +1705,7 @@ void AvmTraceBuilder::op_sstore(uint8_t indirect, uint32_t src_offset, uint32_t

main_trace.push_back(row);

debug("sstore: side-effect cnt", side_effect_counter);
debug("sstore side-effect cnt: ", side_effect_counter);
side_effect_counter++;
clk++;
// All future reads are direct, increment the direct address
Expand Down Expand Up @@ -4327,6 +4327,8 @@ std::vector<Row> AvmTraceBuilder::finalize(uint32_t min_trace_size, bool range_c
// we already prepended the extra row for shifted columns. Therefore, initialization
// of side_effect_counter occurs occurs on this row.
main_trace.at(1).kernel_side_effect_counter = initial_side_effect_counter;
// This index is required to retrieve the right side effect counter after an external call.
size_t external_call_cnt = 0;

// External loop iterates over the kernel entries which are sorted by increasing clk.
// Internal loop iterates to fill the gap in main trace between each kernel entries.
Expand All @@ -4351,7 +4353,15 @@ std::vector<Row> AvmTraceBuilder::finalize(uint32_t min_trace_size, bool range_c
dest.kernel_l1_to_l2_msg_exists_write_offset = prev.kernel_l1_to_l2_msg_exists_write_offset;
dest.kernel_sload_write_offset = prev.kernel_sload_write_offset;
dest.kernel_sstore_write_offset = prev.kernel_sstore_write_offset;
dest.kernel_side_effect_counter = prev.kernel_side_effect_counter;

// Adjust side effect counter after an external call
if (prev.main_sel_op_external_call == 1) {
dest.kernel_side_effect_counter =
execution_hints.externalcall_hints.at(external_call_cnt).end_side_effect_counter;
external_call_cnt++;
} else {
dest.kernel_side_effect_counter = prev.kernel_side_effect_counter;
}
}

Row& curr = main_trace.at(clk);
Expand Down
3 changes: 3 additions & 0 deletions yarn-project/end-to-end/src/benchmarks/bench_prover.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ jest.setTimeout(1_800_000);

const txTimeoutSec = 3600;

// This makes AVM proving throw if there's a failure.
process.env.AVM_PROVING_STRICT = '1';

describe('benchmarks/proving', () => {
let ctx: EndToEndContext;

Expand Down

0 comments on commit 9c0db9b

Please sign in to comment.