Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
written_public_data_slots_tree_check_trace.cpp
Go to the documentation of this file.
2
3#include <memory>
4
8
9namespace bb::avm2::tracegen {
10
14{
15 using C = Column;
16
17 uint32_t row = 0;
18 for (const auto& event : events) {
19 FF slot = event.slot;
20 FF leaf_slot = event.leaf_slot;
21 FF address = event.contract_address;
22
23 bool exists = event.low_leaf_preimage.leaf.slot == leaf_slot;
24 FF slot_low_leaf_slot_diff_inv = exists ? 0 : (leaf_slot - event.low_leaf_preimage.leaf.slot).invert();
25
26 bool next_slot_is_nonzero = false;
27 FF next_slot_inv = 0;
28 if (!exists) {
29 next_slot_is_nonzero = event.low_leaf_preimage.nextKey != 0;
30 next_slot_inv = next_slot_is_nonzero ? event.low_leaf_preimage.nextKey.invert() : 0;
31 }
32
33 uint64_t updated_low_leaf_next_index = 0;
34 FF updated_low_leaf_next_key = 0;
35 FF updated_low_leaf_hash = 0;
36 FF new_leaf_hash = 0;
37 FF intermediate_root = 0;
38
39 bool append = event.append_data.has_value();
40 if (append) {
41 updated_low_leaf_next_key = leaf_slot;
42 updated_low_leaf_next_index = event.prev_snapshot.nextAvailableLeafIndex;
43 updated_low_leaf_hash = event.append_data->updated_low_leaf_hash;
44 new_leaf_hash = event.append_data->new_leaf_hash;
45 intermediate_root = event.append_data->intermediate_root;
46 }
47
48 trace.set(
49 row,
50 { {
51 { C::written_public_data_slots_tree_check_sel, 1 },
52 { C::written_public_data_slots_tree_check_write, event.write },
53 { C::written_public_data_slots_tree_check_slot, slot },
54 { C::written_public_data_slots_tree_check_root, event.prev_snapshot.root },
55 { C::written_public_data_slots_tree_check_write_root, event.next_snapshot.root },
56 { C::written_public_data_slots_tree_check_tree_size_before_write,
57 event.prev_snapshot.nextAvailableLeafIndex },
58 { C::written_public_data_slots_tree_check_tree_size_after_write,
59 event.next_snapshot.nextAvailableLeafIndex },
60 { C::written_public_data_slots_tree_check_address, address },
61 { C::written_public_data_slots_tree_check_low_leaf_slot, event.low_leaf_preimage.leaf.slot },
62 { C::written_public_data_slots_tree_check_low_leaf_next_index, event.low_leaf_preimage.nextIndex },
63 { C::written_public_data_slots_tree_check_low_leaf_next_slot, event.low_leaf_preimage.nextKey },
64 { C::written_public_data_slots_tree_check_updated_low_leaf_next_index, updated_low_leaf_next_index },
65 { C::written_public_data_slots_tree_check_updated_low_leaf_next_slot, updated_low_leaf_next_key },
66 { C::written_public_data_slots_tree_check_low_leaf_index, event.low_leaf_index },
67 { C::written_public_data_slots_tree_check_leaf_slot, leaf_slot },
68 { C::written_public_data_slots_tree_check_siloing_separator, GENERATOR_INDEX__PUBLIC_LEAF_INDEX },
69 { C::written_public_data_slots_tree_check_should_insert, append },
70 { C::written_public_data_slots_tree_check_low_leaf_hash, event.low_leaf_hash },
71 { C::written_public_data_slots_tree_check_intermediate_root, intermediate_root },
72 { C::written_public_data_slots_tree_check_updated_low_leaf_hash, updated_low_leaf_hash },
73 { C::written_public_data_slots_tree_check_tree_height, AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_HEIGHT },
74 { C::written_public_data_slots_tree_check_leaf_not_exists, !exists },
75 { C::written_public_data_slots_tree_check_slot_low_leaf_slot_diff_inv, slot_low_leaf_slot_diff_inv },
76 { C::written_public_data_slots_tree_check_next_slot_is_nonzero, next_slot_is_nonzero },
77 { C::written_public_data_slots_tree_check_next_slot_inv, next_slot_inv },
78 { C::written_public_data_slots_tree_check_new_leaf_hash, new_leaf_hash },
79 } });
80 row++;
81 }
82}
83
87 .add<lookup_written_public_data_slots_tree_check_low_leaf_poseidon2_settings, InteractionType::LookupGeneric>()
99;
100
101} // namespace bb::avm2::tracegen
#define GENERATOR_INDEX__PUBLIC_LEAF_INDEX
#define AVM_WRITTEN_PUBLIC_DATA_SLOTS_TREE_HEIGHT
InteractionDefinition & add(auto &&... args)
void process(const simulation::EventEmitterInterface< simulation::WrittenPublicDataSlotsTreeCheckEvent >::Container &events, TraceContainer &trace)
TestTraceContainer trace
lookup_settings< lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_settings_ > lookup_written_public_data_slots_tree_check_updated_low_leaf_poseidon2_settings
lookup_settings< lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_settings_ > lookup_written_public_data_slots_tree_check_low_leaf_slot_validation_settings
lookup_settings< lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_settings_ > lookup_written_public_data_slots_tree_check_new_leaf_poseidon2_settings
lookup_settings< lookup_written_public_data_slots_tree_check_silo_poseidon2_settings_ > lookup_written_public_data_slots_tree_check_silo_poseidon2_settings
AvmFlavorSettings::FF FF
Definition field.hpp:10
simulation::PublicDataTreeReadWriteEvent event