23 uint64_t end_log_address_upper_bound =
static_cast<uint64_t
>(log_address) +
static_cast<uint64_t
>(log_size);
27 uint32_t prev_emitted_log_fields =
side_effect_tracker.get_side_effects().get_num_public_log_fields();
30 uint64_t expected_next_emitted_log_fields = prev_emitted_log_fields + total_log_fields_size;
34 bool error_is_static =
context.get_is_static();
37 bool error_tag_mismatch =
false;
40 if (!error_memory_out_of_bounds) {
41 values.reserve(log_size);
42 for (uint32_t i = 0; i < log_size; ++i) {
45 error_tag_mismatch =
true;
47 values.push_back(
value);
51 bool error = error_memory_out_of_bounds || error_too_many_log_fields || error_tag_mismatch || error_is_static;
54 side_effect_tracker.add_public_log(contract_address, std::vector<FF>(values.begin(), values.end()));
59 .contract_address = contract_address,
60 .space_id =
memory.get_space_id(),
61 .log_address = log_address,
63 .prev_num_public_log_fields = prev_emitted_log_fields,
64 .next_num_public_log_fields =
side_effect_tracker.get_side_effects().get_num_public_log_fields(),
65 .is_static = error_is_static,
67 .error_memory_out_of_bounds = error_memory_out_of_bounds,
68 .error_too_many_log_fields = error_too_many_log_fields,
69 .error_tag_mismatch = error_tag_mismatch,
72 if (error_memory_out_of_bounds) {
75 if (error_too_many_log_fields) {
78 if (error_tag_mismatch) {
81 if (error_is_static) {
void emit_public_log(MemoryInterface &memory, ContextInterface &context, const AztecAddress &contract_address, MemoryAddress log_offset, uint32_t log_size) override
Emit a public log from the current execution context.