10template <
typename T> std::vector<uint8_t> serialize_to_msgpack(
const T&
value)
13 msgpack::pack(buf,
value);
14 return std::vector<uint8_t>(buf.data(), buf.data() + buf.size());
17template <
typename T> T deserialize_from_msgpack(
const std::vector<uint8_t>& bytes)
19 auto unpacked = msgpack::unpack(
reinterpret_cast<const char*
>(bytes.data()), bytes.size());
21 unpacked.get().convert(
value);
25template <
typename Alias> Alias field_to_wire(
const avm2::FF&
field)
28 avm2::FF::serialize_to_buffer(
field, wire.
data());
32template <
typename Alias>
avm2::FF field_from_wire(
const Alias& wire)
34 return avm2::FF::serialize_from_buffer(wire.data());
39 if (!bytes.has_value()) {
42 return deserialize_from_msgpack<T>(*bytes);
48 : client_(
std::make_unique<CdbIpcClient>(ipc_path))
55 auto resp =
client_->get_contract_instance(
56 CdbGetContractInstance{ .address = field_to_wire<AztecAddress>(
address), .forkId =
fork_id_ });
57 return decode_optional_msgpack<avm2::ContractInstance>(resp.instance);
62 auto resp =
client_->get_contract_class(
63 CdbGetContractClass{ .classId = field_to_wire<ContractClassId>(class_id), .forkId =
fork_id_ });
64 return decode_optional_msgpack<avm2::ContractClass>(resp.contractClass);
69 auto resp =
client_->get_bytecode_commitment(
70 CdbGetBytecodeCommitment{ .classId = field_to_wire<ContractClassId>(class_id), .forkId =
fork_id_ });
78 client_->get_debug_function_name(CdbGetDebugFunctionName{ .address = field_to_wire<AztecAddress>(
address),
79 .selector = field_to_wire<FunctionSelector>(selector),
86 client_->add_contracts(CdbAddContracts{ .contractDeploymentData = serialize_to_msgpack(contract_deployment_data),
std::optional< avm2::ContractInstance > get_contract_instance(const avm2::AztecAddress &address) const override
void commit_checkpoint() override
void add_contracts(const avm2::ContractDeploymentData &contract_deployment_data) override
void revert_checkpoint() override
void create_checkpoint() override
CdbIpcContractDB(const std::string &ipc_path)
std::optional< avm2::FF > get_bytecode_commitment(const avm2::ContractClassId &class_id) const override
std::optional< avm2::ContractClass > get_contract_class(const avm2::ContractClassId &class_id) const override
std::optional< std::string > get_debug_function_name(const avm2::AztecAddress &address, const avm2::FunctionSelector &selector) const override
~CdbIpcContractDB() override
std::unique_ptr< CdbIpcClient > client_
ContractDBInterface adapter over the generated CDB IPC client.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
General class for prime fields see Prime field documentation["field documentation"] for general imple...