26template <
typename T>
static std::vector<uint8_t> serialize_to_msgpack(
const T&
value)
29 msgpack::pack(buf,
value);
30 return std::vector<uint8_t>(buf.data(), buf.data() + buf.size());
33template <
typename T>
static T deserialize_from_msgpack(
const std::vector<uint8_t>& bytes)
35 auto unpacked = msgpack::unpack(
reinterpret_cast<const char*
>(bytes.data()), bytes.size());
37 unpacked.get().convert(
value);
57 auto sim_inputs = deserialize_from_msgpack<AvmFastSimulationInputs>(
inputs);
61 const bool use_external_fork = sim_inputs.ws_revision.forkId != 0;
62 uint64_t fork_id = sim_inputs.ws_revision.forkId;
64 if (!use_external_fork) {
66 fork_id = fork_resp.forkId;
67 vinfo(
"Created WSDB fork ", fork_id,
" for AVM simulation");
69 vinfo(
"Using external WSDB fork ", fork_id,
" for AVM simulation");
73 request.cdb_client.set_fork_id(fork_id);
85 .includeUncommitted =
true,
94 auto result = sim_inputs.config.collect_hints
99 sim_inputs.global_variables,
100 sim_inputs.protocol_contracts,
106 sim_inputs.global_variables,
107 sim_inputs.protocol_contracts,
113 if (!use_external_fork) {
122 if (!use_external_fork) {
142 auto proving_inputs = deserialize_from_msgpack<AvmProvingInputs>(
inputs);
AvmCommand NamedUnion, AvmRequest context, and dispatch function.
StrictMock< MockHighLevelMerkleDB > merkle_db
A wrapper around std::variant that provides msgpack serialization based on type names.
TxSimulationResult simulate_with_hinted_dbs(const AvmProvingInputs &inputs)
TxSimulationResult simulate_fast_internal(simulation::ContractDBInterface &raw_contract_db, simulation::LowLevelMerkleDBInterface &raw_merkle_db, const PublicSimulatorConfig &config, const Tx &tx, const GlobalVariables &global_variables, const ProtocolContracts &protocol_contracts, simulation::CancellationTokenPtr cancellation_token=nullptr)
TxSimulationResult simulate_for_hint_collection_internal(simulation::ContractDBInterface &raw_contract_db, simulation::LowLevelMerkleDBInterface &raw_merkle_db, const PublicSimulatorConfig &config, const Tx &tx, const GlobalVariables &global_variables, const ProtocolContracts &protocol_contracts, simulation::CancellationTokenPtr cancellation_token=nullptr)
AvmCommandResponse execute(AvmRequest &request, AvmCommand &&command)
Execute an AVM command using the visitor pattern.
std::atomic< avm2::simulation::CancellationToken * > g_active_cancellation_token
AvmCommandResponse avm_dispatch(AvmRequest &request, AvmCommand &&command)
Top-level AVM API entry point. Takes an AvmRequest and dispatches the command.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Context passed to each command's execute() method. Provides access to WSDB and CDB IPC clients.
Response execute(AvmRequest &request) &&
std::vector< uint8_t > result
Response execute(AvmRequest &request) &&
std::vector< uint8_t > result
Response execute(AvmRequest &request) &&
NamedUnion command structs for the aztec-wsdb world state database API.
LowLevelMerkleDBInterface implementation backed by WSDB IPC.