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
10
11using namespace bb::avm2::simulation;
12using namespace bb::avm2;
13
20
21class Simulator {
22 public:
23 virtual ~Simulator() = default;
24 Simulator(const Simulator&) = delete;
25 Simulator& operator=(const Simulator&) = delete;
26 Simulator(Simulator&&) = delete;
28 Simulator() = default;
30 const std::vector<uint8_t>& bytecode,
31 const std::vector<FF>& calldata) = 0;
32};
33
35class CppSimulator : public Simulator {
36 public:
38 const std::vector<uint8_t>& bytecode,
39 const std::vector<FF>& calldata) override;
40};
41
44class JsSimulator : public Simulator {
45 protected:
47 std::string simulator_path;
48 JsSimulator(std::string& simulator_path);
50
51 public:
52 JsSimulator(JsSimulator& other) = delete;
53 void operator=(const JsSimulator&) = delete;
56 ~JsSimulator() = default;
57
58 static JsSimulator* getInstance();
59 static void initialize(std::string& simulator_path);
60
62 const std::vector<uint8_t>& bytecode,
63 const std::vector<FF>& calldata) override;
64};
65
66bool compare_simulator_results(const SimulatorResult& result1, const SimulatorResult& result2);
std::shared_ptr< Napi::ThreadSafeFunction > bytecode
uses barretenberg/vm2 to simulate the bytecode
Definition simulator.hpp:35
SimulatorResult simulate(fuzzer::FuzzerWorldStateManager &ws_mgr, const std::vector< uint8_t > &bytecode, const std::vector< FF > &calldata) override
uses the yarn-project/simulator to simulate the bytecode Singleton, because initializing the simulato...
Definition simulator.hpp:44
static JsSimulator * getInstance()
JsSimulator(JsSimulator &other)=delete
static JsSimulator * instance
Definition simulator.hpp:46
JsSimulator & operator=(JsSimulator &&)=delete
JsSimulator(JsSimulator &&)=delete
std::string simulator_path
Definition simulator.hpp:47
void operator=(const JsSimulator &)=delete
SimulatorResult simulate(fuzzer::FuzzerWorldStateManager &ws_mgr, const std::vector< uint8_t > &bytecode, const std::vector< FF > &calldata) override
static void initialize(std::string &simulator_path)
Process process
Definition simulator.hpp:49
~JsSimulator()=default
Simulator & operator=(const Simulator &)=delete
Simulator(Simulator &&)=delete
Simulator(const Simulator &)=delete
Simulator()=default
virtual SimulatorResult simulate(fuzzer::FuzzerWorldStateManager &ws_mgr, const std::vector< uint8_t > &bytecode, const std::vector< FF > &calldata)=0
virtual ~Simulator()=default
Simulator & operator=(Simulator &&)=delete
bool compare_simulator_results(const SimulatorResult &result1, const SimulatorResult &result2)
TreeSnapshots end_tree_snapshots
Definition simulator.hpp:17
std::string revert_reason
Definition simulator.hpp:18
std::vector< FF > output
Definition simulator.hpp:16