Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
context_stack_trace.cpp
Go to the documentation of this file.
2
3#include <cstdint>
4
6
7namespace bb::avm2::tracegen {
8
17 TraceContainer& trace)
18{
19 using C = Column;
20 uint32_t row = 0;
21
22 for (const auto& event : ctx_stack_events) {
23 trace.set(row,
24 { {
25 { C::context_stack_sel, 1 },
26 { C::context_stack_context_id, event.id },
27 { C::context_stack_parent_id, event.parent_id },
28 { C::context_stack_entered_context_id, event.entered_context_id },
29 { C::context_stack_next_pc, event.next_pc },
30 { C::context_stack_msg_sender, event.msg_sender },
31 { C::context_stack_contract_address, event.contract_addr },
32 { C::context_stack_bytecode_id, event.bytecode_id },
33 { C::context_stack_is_static, event.is_static ? 1 : 0 },
34 { C::context_stack_parent_calldata_addr, event.parent_cd_addr },
35 { C::context_stack_parent_calldata_size, event.parent_cd_size },
36 { C::context_stack_parent_l2_gas_limit, event.parent_gas_limit.l2_gas },
37 { C::context_stack_parent_da_gas_limit, event.parent_gas_limit.da_gas },
38 { C::context_stack_parent_l2_gas_used, event.parent_gas_used.l2_gas },
39 { C::context_stack_parent_da_gas_used, event.parent_gas_used.da_gas },
40 { C::context_stack_internal_call_id, event.internal_call_id },
41 { C::context_stack_internal_call_return_id, event.internal_call_return_id },
42 { C::context_stack_next_internal_call_id, event.next_internal_call_id },
43 { C::context_stack_note_hash_tree_root, event.tree_states.note_hash_tree.tree.root },
44 { C::context_stack_note_hash_tree_size,
45 event.tree_states.note_hash_tree.tree.next_available_leaf_index },
46 { C::context_stack_num_note_hashes_emitted, event.tree_states.note_hash_tree.counter },
47 { C::context_stack_nullifier_tree_root, event.tree_states.nullifier_tree.tree.root },
48 { C::context_stack_nullifier_tree_size,
49 event.tree_states.nullifier_tree.tree.next_available_leaf_index },
50 { C::context_stack_num_nullifiers_emitted, event.tree_states.nullifier_tree.counter },
51 { C::context_stack_public_data_tree_root, event.tree_states.public_data_tree.tree.root },
52 { C::context_stack_public_data_tree_size,
53 event.tree_states.public_data_tree.tree.next_available_leaf_index },
54 { C::context_stack_written_public_data_slots_tree_root,
55 event.written_public_data_slots_tree_snapshot.root },
56 { C::context_stack_written_public_data_slots_tree_size,
57 event.written_public_data_slots_tree_snapshot.next_available_leaf_index },
58 { C::context_stack_num_unencrypted_log_fields, event.numUnencryptedLogFields },
59 { C::context_stack_num_l2_to_l1_messages, event.numL2ToL1Messages },
60 } });
61 row++;
62 }
63}
64
65} // namespace bb::avm2::tracegen
void process(const simulation::EventEmitterInterface< simulation::ContextStackEvent >::Container &ctx_stack_events, TraceContainer &trace)
Process the context stack events and populate fields for the context stack sub-trace.
TestTraceContainer trace
simulation::PublicDataTreeReadWriteEvent event