Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
prover.fuzzer.cpp
Go to the documentation of this file.
2
3#include <cstdint>
4#include <filesystem>
5#include <string>
6
11
12using namespace bb::avm2::fuzzer;
13
14extern "C" int LLVMFuzzerInitialize(int*, char***)
15{
17 return 0;
18}
19
20extern "C" size_t LLVMFuzzerCustomMutator(uint8_t* serialized_fuzzer_data,
21 size_t serialized_fuzzer_data_size,
22 size_t max_size,
23 unsigned int seed)
24{
25 // Haven't thought much about the lifecycle of this in the tx fuzzer. Maybe we want it in the serialized data?
26 // Or we can regenerate from the serialized data.
28 return mutate_tx_data(context, serialized_fuzzer_data, serialized_fuzzer_data_size, max_size, seed);
29}
30
31extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
32{
35 ws_mgr->fork();
36
38
39 FuzzerTxData tx_data;
40
41 try {
42 msgpack::unpack((reinterpret_cast<const char*>(data)), size).get().convert(tx_data);
43 } catch (const std::exception& e) {
44 fuzz_info("Failed to deserialize input in TestOneInput, using default. Exception: ", e.what());
46 }
47
48 // Setup contracts and fund fee payer
49 // Fuzzer state is dependent on the tx data
51 fund_fee_payer(*ws_mgr, tx_data.tx);
52
53 int result = fuzz_prover(*ws_mgr, contract_db, tx_data);
54
55 // Print timing stats for this iteration
56 vinfo("Timing stats:\n", bb::avm2::Stats::get().to_string());
57
59
60 return result;
61}
#define fuzz_info(...)
Definition constants.hpp:51
StrictMock< MockContractDB > contract_db
static Stats & get()
Definition stats.cpp:10
static FuzzerWorldStateManager * getInstance()
Definition dbs.hpp:80
world_state::WorldStateRevision fork()
Definition dbs.cpp:204
#define vinfo(...)
Definition log.hpp:94
const std::vector< MemoryValue > data
FuzzerWorldStateManager * ws_mgr
Definition fuzz.test.cpp:16
FuzzerTxData create_default_tx_data(std::mt19937_64 &rng, const FuzzerContext &context)
int fuzz_prover(FuzzerWorldStateManager &ws_mgr, FuzzerContractDB &contract_db, FuzzerTxData &tx_data)
Run the prover fuzzer: fast simulation, hint collection, comparison, and check_circuit.
void setup_fuzzer_state(FuzzerWorldStateManager &ws_mgr, FuzzerContractDB &contract_db, const FuzzerTxData &tx_data)
size_t mutate_tx_data(FuzzerContext &context, uint8_t *serialized_fuzzer_data, size_t serialized_fuzzer_data_size, size_t max_size, unsigned int seed)
void fund_fee_payer(FuzzerWorldStateManager &ws_mgr, const Tx &tx)
std::string to_string(const std::array< FF, N > &arr)
Definition stringify.hpp:31
int LLVMFuzzerInitialize(int *, char ***)
int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
size_t LLVMFuzzerCustomMutator(uint8_t *serialized_fuzzer_data, size_t serialized_fuzzer_data_size, size_t max_size, unsigned int seed)