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
8
9namespace bb::avm2::tracegen {
10
13 TraceContainer& trace)
14{
15 using C = Column;
16 uint32_t row = 0;
17
18 for (const auto& event : ctx_stack_events) {
19 trace.set(row,
20 { {
21 { C::context_stack_sel, 1 },
22 { C::context_stack_context_id_inv, event.id }, // Will be inverted in batch later
23 { C::context_stack_context_id, event.id },
24 { C::context_stack_parent_id, event.parent_id },
25 { C::context_stack_entered_context_id, event.entered_context_id },
26 { C::context_stack_next_pc, event.next_pc },
27 { C::context_stack_msg_sender, event.msg_sender },
28 { C::context_stack_contract_address, event.contract_addr },
29 { C::context_stack_bytecode_id, event.bytecode_id },
30 { C::context_stack_is_static, event.is_static },
31 { C::context_stack_parent_calldata_addr, event.parent_cd_addr },
32 { C::context_stack_parent_calldata_size, event.parent_cd_size },
33 { C::context_stack_parent_l2_gas_limit, event.parent_gas_limit.l2_gas },
34 { C::context_stack_parent_da_gas_limit, event.parent_gas_limit.da_gas },
35 { C::context_stack_parent_l2_gas_used, event.parent_gas_used.l2_gas },
36 { C::context_stack_parent_da_gas_used, event.parent_gas_used.da_gas },
37 { C::context_stack_note_hash_tree_root, event.tree_states.note_hash_tree.tree.root },
38 { C::context_stack_note_hash_tree_size,
39 event.tree_states.note_hash_tree.tree.next_available_leaf_index },
40 { C::context_stack_num_note_hashes_emitted, event.tree_states.note_hash_tree.counter },
41 { C::context_stack_nullifier_tree_root, event.tree_states.nullifier_tree.tree.root },
42 { C::context_stack_nullifier_tree_size,
43 event.tree_states.nullifier_tree.tree.next_available_leaf_index },
44 { C::context_stack_num_nullifiers_emitted, event.tree_states.nullifier_tree.counter },
45 { C::context_stack_public_data_tree_root, event.tree_states.public_data_tree.tree.root },
46 { C::context_stack_public_data_tree_size,
47 event.tree_states.public_data_tree.tree.next_available_leaf_index },
48 { C::context_stack_written_public_data_slots_tree_root,
49 event.written_public_data_slots_tree_snapshot.root },
50 { C::context_stack_written_public_data_slots_tree_size,
51 event.written_public_data_slots_tree_snapshot.next_available_leaf_index },
52 { C::context_stack_num_unencrypted_log_fields, event.numUnencryptedLogFields },
53 { C::context_stack_num_l2_to_l1_messages, event.numL2ToL1Messages },
54 } });
55 row++;
56 }
57
58 // Batch invert the columns.
59 trace.invert_columns({ { C::context_stack_context_id_inv } });
60}
61
62} // namespace bb::avm2::tracegen
void process(const simulation::EventEmitterInterface< simulation::ContextStackEvent >::Container &ctx_stack_events, TraceContainer &trace)
TestTraceContainer trace
simulation::PublicDataTreeReadWriteEvent event