59 if (
ff_gt.ff_gt(MAX_PROTOCOL_CONTRACTS, contract_address - 1)) {
69 maybe_instance.has_value(),
70 "Derived address should be found if the instance was retrieved and vice versa");
74 "Protocol contracts must have a matching current and original class ID");
77 .address = contract_address,
79 .nullifier_tree_root = tree_state.nullifier_tree.tree.root,
80 .public_data_tree_root = tree_state.public_data_tree.tree.root,
81 .exists = derived_address.has_value(),
82 .is_protocol_contract =
true,
84 return maybe_instance;
90 .address = contract_address,
91 .contract_instance = {},
92 .nullifier_tree_root = tree_state.nullifier_tree.tree.root,
93 .public_data_tree_root = tree_state.public_data_tree.tree.root,
94 .deployment_nullifier = contract_address,
101 BB_ASSERT(maybe_instance.has_value(),
"Contract instance should be found if nullifier exists");
105 update_check.check_current_class_id(contract_address, instance);
108 .address = contract_address,
109 .contract_instance = instance,
111 .nullifier_tree_root = tree_state.nullifier_tree.tree.root,
112 .public_data_tree_root = tree_state.public_data_tree.tree.root,
113 .deployment_nullifier = contract_address,
ContractInstanceManager(ContractDBInterface &contract_db, HighLevelMerkleDBInterface &merkle_db, UpdateCheckInterface &update_check, FieldGreaterThanInterface &ff_gt, const ProtocolContracts &protocol_contracts, EventEmitterInterface< ContractInstanceRetrievalEvent > &event_emitter)
Construct a ContractInstanceManager.