Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
simulator.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <vector>
4
11
12using namespace bb::avm2::simulation;
13using namespace bb::avm2;
14
30
39
40class Simulator {
41 public:
42 virtual ~Simulator() = default;
43 Simulator(const Simulator&) = delete;
44 Simulator& operator=(const Simulator&) = delete;
45 Simulator(Simulator&&) = delete;
47 Simulator() = default;
50 const Tx& tx) = 0;
51};
52
60
63class JsSimulator : public Simulator {
64 protected:
66 std::string simulator_path;
67 JsSimulator(std::string& simulator_path);
69
70 public:
71 JsSimulator(JsSimulator& other) = delete;
72 void operator=(const JsSimulator&) = delete;
75 ~JsSimulator() = default;
76
77 static JsSimulator* getInstance();
78 static void initialize(std::string& simulator_path);
79
82 const Tx& tx) override;
83};
84
86
88 const AztecAddress& sender_address,
89 const std::vector<FF>& calldata,
90 [[maybe_unused]] const FF& transaction_fee,
91 bool is_static_call,
92 const Gas& gas_limit);
93
95
StrictMock< MockContractDB > contract_db
uses barretenberg/vm2 to simulate the bytecode
Definition simulator.hpp:54
SimulatorResult simulate(fuzzer::FuzzerWorldStateManager &ws_mgr, fuzzer::FuzzerContractDB &contract_db, const Tx &tx) override
Definition simulator.cpp:75
uses the yarn-project/simulator to simulate the bytecode Singleton, because initializing the simulato...
Definition simulator.hpp:63
static JsSimulator * getInstance()
JsSimulator(JsSimulator &other)=delete
static JsSimulator * instance
Definition simulator.hpp:65
JsSimulator & operator=(JsSimulator &&)=delete
JsSimulator(JsSimulator &&)=delete
std::string simulator_path
Definition simulator.hpp:66
void operator=(const JsSimulator &)=delete
static void initialize(std::string &simulator_path)
SimulatorResult simulate(fuzzer::FuzzerWorldStateManager &ws_mgr, fuzzer::FuzzerContractDB &contract_db, const Tx &tx) override
Process process
Definition simulator.hpp:68
~JsSimulator()=default
Simulator & operator=(const Simulator &)=delete
Simulator(Simulator &&)=delete
Simulator(const Simulator &)=delete
virtual SimulatorResult simulate(fuzzer::FuzzerWorldStateManager &ws_mgr, fuzzer::FuzzerContractDB &contract_db, const Tx &tx)=0
Simulator()=default
virtual ~Simulator()=default
Simulator & operator=(Simulator &&)=delete
FuzzerWorldStateManager * ws_mgr
Definition fuzz.test.cpp:16
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
bool compare_simulator_results(SimulatorResult &result1, SimulatorResult &result2)
Tx create_default_tx(const AztecAddress &contract_address, const AztecAddress &sender_address, const std::vector< FF > &calldata, const FF &transaction_fee, bool is_static_call, const Gas &gas_limit)
GlobalVariables create_default_globals()
Definition simulator.cpp:61
std::vector< std::pair< AztecAddress, ContractInstance > > contract_instances
Definition simulator.hpp:26
GlobalVariables globals
Definition simulator.hpp:23
std::vector< ContractClass > contract_classes
Definition simulator.hpp:24
MSGPACK_CAMEL_CASE_FIELDS(ws_data_dir, ws_map_size_kb, tx, globals, contract_classes, contract_instances)
TreeSnapshots end_tree_snapshots
Definition simulator.hpp:34
MSGPACK_CAMEL_CASE_FIELDS(reverted, output, end_tree_snapshots, revert_reason)
std::string revert_reason
Definition simulator.hpp:35
std::vector< FF > output
Definition simulator.hpp:33