23 , instance_manager(instance_manager)
35 .dst_offset = dst_offset,
36 .member_enum = member_enum,
37 .space_id =
memory.get_space_id(),
38 .nullifier_tree_root = tree_state.nullifierTree.tree.root,
39 .public_data_tree_root = tree_state.publicDataTree.tree.root,
59 bool instance_exists = maybe_instance.has_value();
60 event.instance_exists = instance_exists;
64 FF selected_member_value = 0;
65 if (instance_exists) {
66 const auto& instance = maybe_instance.value();
67 event.retrieved_deployer_addr = instance.deployer_addr;
68 event.retrieved_class_id = instance.current_class_id;
69 event.retrieved_init_hash = instance.initialisation_hash;
84 const FF& member_value)
87 memory.set(dst_offset, MemoryValue::from<uint1_t>(
exists ? 1 : 0));
89 memory.set(dst_offset + 1, MemoryValue::from<FF>(member_value));
102 throw std::runtime_error(
"This error should have been handled earlier! Invalid member enum: " +
#define AVM_HIGHEST_MEM_ADDRESS
StrictMock< MockHighLevelMerkleDB > merkle_db
Core shared component for contract instance retrieval and validation.
virtual std::optional< ContractInstance > get_contract_instance(const FF &contract_address)=0
Retrieve and validate a contract instance.
virtual uint32_t get_execution_id() const =0
static FF select_instance_member(const ContractInstance &instance, uint8_t member_enum)
ContractInstanceManagerInterface & instance_manager
HighLevelMerkleDBInterface & merkle_db
void get_contract_instance(MemoryInterface &memory, AztecAddress contract_address, MemoryAddress dst_offset, uint8_t member_enum) override
static void write_results(MemoryInterface &memory, MemoryAddress dst_offset, bool exists, const FF &member_value)
ExecutionIdManagerInterface & execution_id_manager
GetContractInstance(ExecutionIdManagerInterface &execution_id_manager, HighLevelMerkleDBInterface &merkle_db, EventEmitterInterface< GetContractInstanceEvent > &event_emitter, ContractInstanceManagerInterface &instance_manager)
EventEmitterInterface< GetContractInstanceEvent > & event_emitter
virtual TreeStates get_tree_state() const =0
ExecutionIdManager execution_id_manager
EventEmitter< DataCopyEvent > event_emitter
AztecAddress contract_address
std::string field_to_string(const FF &ff)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::string to_string(bb::avm2::ValueTag tag)
simulation::PublicDataTreeReadWriteEvent event
AztecAddress deployer_addr
ContractClassId current_class_id