Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
simulation_helper.hpp
Go to the documentation of this file.
1#pragma once
2
9
10namespace bb::avm2 {
11
13 public:
14 // Fast simulation without event collection (used in block building, TXE, etc).
16 const world_state::WorldStateRevision& world_state_revision,
18 const PublicSimulatorConfig& config,
19 const Tx& tx,
20 const GlobalVariables& global_variables,
21 const ProtocolContracts& protocol_contracts,
22 simulation::CancellationTokenPtr cancellation_token = nullptr);
23
24 // Simulation to collect hints (used by the prover node).
26 const world_state::WorldStateRevision& world_state_revision,
28 const PublicSimulatorConfig& config,
29 const Tx& tx,
30 const GlobalVariables& global_variables,
31 const ProtocolContracts& protocol_contracts,
32 simulation::CancellationTokenPtr cancellation_token = nullptr);
33
34 // Simulation with event collection (used in witgen and proving).
36
37 // An extra entry point that is not used in production.
39
40 // Fast simulation against any LowLevelMerkleDBInterface implementation (in-process, IPC, or hinted).
41 // Used by the standalone aztec-avm and the NAPI AVM after the WSDB cutover, both of which
42 // construct a WSDB-IPC-backed merkle DB rather than using an in-process WorldState reference.
45 const PublicSimulatorConfig& config,
46 const Tx& tx,
47 const GlobalVariables& global_variables,
48 const ProtocolContracts& protocol_contracts,
49 simulation::CancellationTokenPtr cancellation_token = nullptr);
50
51 // Hint-collecting simulation against any LowLevelMerkleDBInterface implementation. Mirrors
52 // simulate_fast_internal but wraps the DBs in the hinting proxies used by witgen and dumps
53 // the recorded hints into the result. Used by the prover-node path on both the NAPI AVM
54 // (after the WSDB cutover) and the standalone aztec-avm.
56 simulation::ContractDBInterface& raw_contract_db,
58 const PublicSimulatorConfig& config,
59 const Tx& tx,
60 const GlobalVariables& global_variables,
61 const ProtocolContracts& protocol_contracts,
62 simulation::CancellationTokenPtr cancellation_token = nullptr);
63
64 protected:
65 template <template <typename> class DefaultEventEmitter, template <typename> class DefaultDeduplicatingEventEmitter>
67 simulation::ContractDBInterface& raw_contract_db,
69 const PublicSimulatorConfig& config,
70 const Tx& tx,
71 const GlobalVariables& global_variables,
72 const ProtocolContracts& protocol_contracts);
73};
74
75} // namespace bb::avm2
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)
std::tuple< simulation::EventsContainer, TxSimulationResult > simulate_for_witgen_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)
TxSimulationResult simulate_for_hint_collection(simulation::ContractDBInterface &raw_contract_db, const world_state::WorldStateRevision &world_state_revision, world_state::WorldState &ws, const PublicSimulatorConfig &config, const Tx &tx, const GlobalVariables &global_variables, const ProtocolContracts &protocol_contracts, simulation::CancellationTokenPtr cancellation_token=nullptr)
TxSimulationResult simulate_fast_with_hinted_dbs(const ExecutionHints &hints, const PublicSimulatorConfig &config)
TxSimulationResult simulate_fast_with_existing_ws(simulation::ContractDBInterface &raw_contract_db, const world_state::WorldStateRevision &world_state_revision, world_state::WorldState &ws, 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)
simulation::EventsContainer simulate_for_witgen(const ExecutionHints &hints)
Holds the Merkle trees responsible for storing the state of the Aztec protocol.
std::shared_ptr< CancellationToken > CancellationTokenPtr
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13