Skip to content

Commit

Permalink
7143: debug info for side effect counters in AVM circuit
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanmon committed Jun 25, 2024
1 parent beb744a commit 3ac12f7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
30 changes: 26 additions & 4 deletions barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_trace.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1566,6 +1566,8 @@ void AvmTraceBuilder::op_emit_note_hash(uint8_t indirect, uint32_t note_hash_off
gas_trace_builder.constrain_gas_lookup(clk, OpCode::EMITNOTEHASH);

main_trace.push_back(row);

debug("emit_note_hash side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

Expand All @@ -1581,23 +1583,27 @@ void AvmTraceBuilder::op_emit_nullifier(uint8_t indirect, uint32_t nullifier_off
gas_trace_builder.constrain_gas_lookup(clk, OpCode::EMITNULLIFIER);

main_trace.push_back(row);

debug("emit_nullifier side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

void AvmTraceBuilder::op_emit_l2_to_l1_msg(uint8_t indirect, uint32_t recipient_offset, uint32_t msg_offset)
void AvmTraceBuilder::op_emit_l2_to_l1_msg(uint8_t indirect, uint32_t recipient_offset, uint32_t content_offset)
{
auto const clk = static_cast<uint32_t>(main_trace.size()) + 1;

// Note: unorthadox order - as seen in L2ToL1Message struct in TS
Row row = create_kernel_output_opcode_with_metadata(
indirect, clk, msg_offset, AvmMemoryTag::FF, recipient_offset, AvmMemoryTag::FF);
indirect, clk, content_offset, AvmMemoryTag::FF, recipient_offset, AvmMemoryTag::FF);
kernel_trace_builder.op_emit_l2_to_l1_msg(clk, side_effect_counter, row.main_ia, row.main_ib);
row.main_sel_op_emit_l2_to_l1_msg = FF(1);

// Constrain gas cost
gas_trace_builder.constrain_gas_lookup(clk, OpCode::SENDL2TOL1MSG);

main_trace.push_back(row);

debug("emit_l2_to_l1_msg side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

Expand All @@ -1613,6 +1619,8 @@ void AvmTraceBuilder::op_emit_unencrypted_log(uint8_t indirect, uint32_t log_off
gas_trace_builder.constrain_gas_lookup(clk, OpCode::EMITUNENCRYPTEDLOG);

main_trace.push_back(row);

debug("emit_unencrypted_log side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

Expand All @@ -1630,14 +1638,17 @@ void AvmTraceBuilder::op_l1_to_l2_msg_exists(uint8_t indirect, uint32_t log_offs
gas_trace_builder.constrain_gas_lookup(clk, OpCode::L1TOL2MSGEXISTS);

main_trace.push_back(row);

debug("l1_to_l2_msg_exists side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

void AvmTraceBuilder::op_note_hash_exists(uint8_t indirect, uint32_t note_offset, uint32_t dest_offset)
void AvmTraceBuilder::op_note_hash_exists(uint8_t indirect, uint32_t note_hash_offset, uint32_t dest_offset)
{
auto const clk = static_cast<uint32_t>(main_trace.size()) + 1;

Row row = create_kernel_output_opcode_with_set_metadata_output_from_hint(indirect, clk, note_offset, dest_offset);
Row row =
create_kernel_output_opcode_with_set_metadata_output_from_hint(indirect, clk, note_hash_offset, dest_offset);
kernel_trace_builder.op_note_hash_exists(
clk, side_effect_counter, row.main_ia, /*safe*/ static_cast<uint32_t>(row.main_ib));
row.main_sel_op_note_hash_exists = FF(1);
Expand All @@ -1646,6 +1657,8 @@ void AvmTraceBuilder::op_note_hash_exists(uint8_t indirect, uint32_t note_offset
gas_trace_builder.constrain_gas_lookup(clk, OpCode::NOTEHASHEXISTS);

main_trace.push_back(row);

debug("note_hash_exists side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

Expand All @@ -1663,6 +1676,8 @@ void AvmTraceBuilder::op_nullifier_exists(uint8_t indirect, uint32_t nullifier_o
gas_trace_builder.constrain_gas_lookup(clk, OpCode::NULLIFIEREXISTS);

main_trace.push_back(row);

debug("nullifier_exists side-effect cnt: ", side_effect_counter);
side_effect_counter++;
}

Expand Down Expand Up @@ -1731,6 +1746,8 @@ void AvmTraceBuilder::op_sload(uint8_t indirect, uint32_t slot_offset, uint32_t
gas_trace_builder.constrain_gas_lookup(clk, OpCode::SLOAD);

main_trace.push_back(row);

debug("sload: side-effect cnt", side_effect_counter);
side_effect_counter++;
clk++;
}
Expand Down Expand Up @@ -1797,6 +1814,8 @@ void AvmTraceBuilder::op_sstore(uint8_t indirect, uint32_t src_offset, uint32_t
gas_trace_builder.constrain_gas_lookup(clk, OpCode::SSTORE);

main_trace.push_back(row);

debug("sstore: side-effect cnt", side_effect_counter);
side_effect_counter++;
clk++;
}
Expand Down Expand Up @@ -2802,6 +2821,9 @@ void AvmTraceBuilder::op_get_contract_instance(uint8_t indirect, uint32_t addres
AvmMemoryTag::FF,
internal_return_ptr,
contract_instance_vec);

debug("contract_instance cnt: ", side_effect_counter);
side_effect_counter++;
}

/**
Expand Down
4 changes: 2 additions & 2 deletions barretenberg/cpp/src/barretenberg/vm/avm_trace/avm_trace.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,11 @@ class AvmTraceBuilder {
void op_emit_note_hash(uint8_t indirect, uint32_t note_hash_offset);
void op_emit_nullifier(uint8_t indirect, uint32_t nullifier_offset);
void op_emit_unencrypted_log(uint8_t indirect, uint32_t log_offset);
void op_emit_l2_to_l1_msg(uint8_t indirect, uint32_t msg_offset, uint32_t recipient_offset);
void op_emit_l2_to_l1_msg(uint8_t indirect, uint32_t recipient_offset, uint32_t content_offset);
void op_get_contract_instance(uint8_t indirect, uint32_t address_offset, uint32_t dst_offset);

// With additional metadata output
void op_l1_to_l2_msg_exists(uint8_t indirect, uint32_t msg_offset, uint32_t dest_offset);
void op_l1_to_l2_msg_exists(uint8_t indirect, uint32_t log_offset, uint32_t dest_offset);
void op_note_hash_exists(uint8_t indirect, uint32_t note_hash_offset, uint32_t dest_offset);
void op_nullifier_exists(uint8_t indirect, uint32_t nullifier_offset, uint32_t dest_offset);

Expand Down

0 comments on commit 3ac12f7

Please sign in to comment.