27 trace.set(C::get_contract_instance_sel, 0, 0);
30 for (
const auto&
event : events) {
37 FF dst_offset_diff_max_inv;
38 if (dst_offset_diff_max.is_zero()) {
39 dst_offset_diff_max_inv =
FF(0);
41 dst_offset_diff_max_inv = dst_offset_diff_max.invert();
44 bool is_valid_member_enum =
false;
45 bool is_deployer =
false;
46 bool is_class_id =
false;
47 bool is_init_hash =
false;
49 if (writes_are_in_bounds) {
53 is_valid_member_enum = spec.is_valid_member_enum;
54 is_deployer = spec.is_deployer;
55 is_class_id = spec.is_class_id;
56 is_init_hash = spec.is_init_hash;
59 bool has_error = !(writes_are_in_bounds && is_valid_member_enum);
61 FF selected_member = is_deployer ?
event.retrieved_deployer_addr
62 : is_class_id ?
event.retrieved_class_id
63 : is_init_hash ?
event.retrieved_init_hash
70 { C::get_contract_instance_sel, 1 },
71 { C::get_contract_instance_clk,
event.execution_clk },
72 { C::get_contract_instance_contract_address,
event.contract_address },
73 { C::get_contract_instance_dst_offset,
event.dst_offset },
74 { C::get_contract_instance_member_enum,
event.member_enum },
75 { C::get_contract_instance_space_id,
event.space_id },
76 { C::get_contract_instance_public_data_tree_root,
event.public_data_tree_root },
77 { C::get_contract_instance_nullifier_tree_root,
event.nullifier_tree_root },
78 { C::get_contract_instance_sel_error, has_error ? 1 : 0 },
80 { C::get_contract_instance_is_valid_writes_in_bounds, writes_are_in_bounds ? 1 : 0 },
81 { C::get_contract_instance_dst_offset_diff_max_inv, dst_offset_diff_max_inv },
83 { C::get_contract_instance_is_valid_member_enum, is_valid_member_enum ? 1 : 0 },
84 { C::get_contract_instance_is_deployer, is_deployer ? 1 : 0 },
85 { C::get_contract_instance_is_class_id, is_class_id ? 1 : 0 },
86 { C::get_contract_instance_is_init_hash, is_init_hash ? 1 : 0 },
88 { C::get_contract_instance_instance_exists,
event.instance_exists ? 1 : 0 },
89 { C::get_contract_instance_retrieved_deployer_addr,
event.retrieved_deployer_addr },
90 { C::get_contract_instance_retrieved_class_id,
event.retrieved_class_id },
91 { C::get_contract_instance_retrieved_init_hash,
event.retrieved_init_hash },
92 { C::get_contract_instance_selected_member, selected_member },
94 { C::get_contract_instance_member_write_offset,
event.dst_offset + 1 },
95 { C::get_contract_instance_exists_tag, writes_are_in_bounds ?
static_cast<uint8_t
>(
ValueTag::U1) : 0 },
96 { C::get_contract_instance_member_tag, writes_are_in_bounds ?
static_cast<uint8_t
>(
ValueTag::FF) : 0 },