Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
side_effect_tracker.cpp
Go to the documentation of this file.
2
3#include <numeric>
4
5namespace bb::avm2::simulation {
6
11
12void SideEffectTracker::add_nullifier(const FF& siloed_nullifier)
13{
14 tracked_tree_side_effects.top().nullifiers.push_back(siloed_nullifier);
15}
16
17void SideEffectTracker::add_note_hash(const FF& siloed_unique_note_hash)
18{
19 tracked_tree_side_effects.top().note_hashes.push_back(siloed_unique_note_hash);
20}
21
23 const EthAddress& recipient,
24 const FF& content)
25{
26 tracked_tree_side_effects.top().l2_to_l1_messages.push_back(ScopedL2ToL1Message{
27 .message = { .recipient = recipient, .content = content }, .contract_address = contract_address });
28}
29
30void SideEffectTracker::add_public_log(const AztecAddress& contract_address, const std::vector<FF>& fields)
31{
32 tracked_tree_side_effects.top().public_logs.add_log(
33 PublicLog{ .fields = fields, .contract_address = contract_address });
34}
35
37{
38 auto& top = tracked_tree_side_effects.top();
39
40 // Track the slots in the order that they were written.
41 if (!top.storage_writes_slot_to_value.contains(slot)) {
42 top.storage_writes_slots_by_insertion.push_back(slot);
43 }
44 top.storage_writes_slot_to_value[slot] = value;
45}
46
52
54{
55 // This creates a deep copy of the top of the stack.
59}
60
65
66} // namespace bb::avm2::simulation
void add_storage_write(const FF &slot, const FF &value) override
void add_note_hash(const FF &siloed_unique_note_hash) override
void add_nullifier(const FF &siloed_nullifier) override
void add_l2_to_l1_message(const AztecAddress &contract_address, const EthAddress &recipient, const FF &content) override
void add_public_log(const AztecAddress &contract_address, const std::vector< FF > &fields) override
std::stack< TrackedSideEffects > tracked_tree_side_effects
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
std::vector< FF > fields