30 bool error_too_many_logs_wrong_tag_is_static =
31 event.error_too_many_logs ||
event.error_tag_mismatch ||
event.is_static;
33 event.error_too_large ||
event.error_memory_out_of_bounds || error_too_many_logs_wrong_tag_is_static;
36 bool seen_wrong_tag =
false;
40 FF remaining_rows_inv = remaining_rows == 0 ? 0 :
FF(remaining_rows).invert();
41 bool is_padding_row = i >=
event.log_size;
46 if (i <
event.values.size()) {
47 value =
event.values[i].as_ff();
48 tag =
event.values[i].get_tag();
53 seen_wrong_tag =
true;
55 uint8_t numeric_tag =
static_cast<uint8_t
>(tag);
56 FF tag_inv = correct_tag ? 0 :
FF(numeric_tag).invert();
59 FF max_logs_minus_emitted_inv = max_logs_minus_emitted == 0 ? 0 :
FF(max_logs_minus_emitted).invert();
61 uint32_t remaining_log_size =
event.log_size > i ?
event.log_size - i : 0;
62 FF remaining_log_size_inv = remaining_log_size == 0 ? 0 :
FF(remaining_log_size).invert();
66 { C::emit_unencrypted_log_sel, 1 },
67 { C::emit_unencrypted_log_execution_clk,
event.execution_clk },
68 { C::emit_unencrypted_log_space_id,
event.space_id },
69 { C::emit_unencrypted_log_log_address, log_address + i },
70 { C::emit_unencrypted_log_log_size,
event.log_size },
71 { C::emit_unencrypted_log_contract_address,
event.contract_address },
72 { C::emit_unencrypted_log_prev_num_unencrypted_logs,
event.prev_num_unencrypted_logs },
73 { C::emit_unencrypted_log_next_num_unencrypted_logs,
event.next_num_unencrypted_logs },
74 { C::emit_unencrypted_log_is_static,
event.is_static },
75 { C::emit_unencrypted_log_error, error },
76 { C::emit_unencrypted_log_discard,
discard },
77 { C::emit_unencrypted_log_start, i == 0 },
79 { C::emit_unencrypted_log_remaining_rows, remaining_rows },
80 { C::emit_unencrypted_log_remaining_rows_inv, remaining_rows_inv },
81 { C::emit_unencrypted_log_error_too_large,
event.error_too_large },
83 { C::emit_unencrypted_log_error_out_of_bounds,
event.error_memory_out_of_bounds },
85 { C::emit_unencrypted_log_end_log_address, log_address +
event.log_size - 1 },
86 { C::emit_unencrypted_log_error_too_many_logs,
event.error_too_many_logs },
87 { C::emit_unencrypted_log_max_logs_minus_emitted_inv, max_logs_minus_emitted_inv },
88 { C::emit_unencrypted_log_error_tag_mismatch,
event.error_tag_mismatch },
89 { C::emit_unencrypted_log_seen_wrong_tag, seen_wrong_tag },
90 { C::emit_unencrypted_log_error_too_many_logs_wrong_tag_is_static,
91 error_too_many_logs_wrong_tag_is_static },
92 { C::emit_unencrypted_log_sel_should_write_to_public_inputs, !error && !
discard },
93 { C::emit_unencrypted_log_is_padding_row, is_padding_row },
94 { C::emit_unencrypted_log_remaining_log_size, remaining_log_size },
95 { C::emit_unencrypted_log_remaining_log_size_inv, remaining_log_size_inv },
96 { C::emit_unencrypted_log_sel_should_read_memory,
97 !is_padding_row && !
event.error_memory_out_of_bounds },
98 { C::emit_unencrypted_log_value,
value },
99 { C::emit_unencrypted_log_tag, numeric_tag },
100 { C::emit_unencrypted_log_correct_tag, correct_tag },
101 { C::emit_unencrypted_log_tag_inv, tag_inv },
102 { C::emit_unencrypted_log_public_inputs_index,