Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
fuzzer_lib.hpp File Reference

Go to the source code of this file.

Classes

struct  FuzzerTxData
 

Typedefs

using Bytecode = std::vector< uint8_t >
 
using ContractArtifacts = std::tuple< Bytecode, ContractClass, ContractInstance >
 
using FuzzerContext = bb::avm2::fuzzer::FuzzerContext
 

Enumerations

enum class  TxDataMutationType : uint8_t { TxMutation }
 

Functions

std::ostream & operator<< (std::ostream &os, const FuzzerTxData &data)
 
ContractArtifacts build_bytecode_and_artifacts (FuzzerData &fuzzer_data)
 
FuzzerTxData create_default_tx_data (std::mt19937_64 &rng, const FuzzerContext &context)
 
FuzzerTxData create_default_tx_data (const FuzzerContext &context)
 
void setup_fuzzer_state (bb::avm2::fuzzer::FuzzerWorldStateManager &ws_mgr, bb::avm2::fuzzer::FuzzerContractDB &contract_db, const FuzzerTxData &tx_data)
 
void fund_fee_payer (bb::avm2::fuzzer::FuzzerWorldStateManager &ws_mgr, const Tx &tx)
 
SimulatorResult fuzz_tx (bb::avm2::fuzzer::FuzzerWorldStateManager &ws_mgr, bb::avm2::fuzzer::FuzzerContractDB &contract_db, FuzzerTxData &tx_data)
 Fuzz CPP vs JS simulator with a full transaction containing multiple enqueued calls.
 
int fuzz_prover (bb::avm2::fuzzer::FuzzerWorldStateManager &ws_mgr, bb::avm2::fuzzer::FuzzerContractDB &contract_db, FuzzerTxData &tx_data)
 Run the prover fuzzer: fast simulation, hint collection, comparison, and check_circuit.
 
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)
 
bool compare_cpp_simulator_results (const std::vector< TxSimulationResult > &results)
 

Typedef Documentation

◆ Bytecode

using Bytecode = std::vector<uint8_t>

Definition at line 49 of file fuzzer_lib.hpp.

◆ ContractArtifacts

Definition at line 50 of file fuzzer_lib.hpp.

◆ FuzzerContext

Definition at line 51 of file fuzzer_lib.hpp.

Enumeration Type Documentation

◆ TxDataMutationType

enum class TxDataMutationType : uint8_t
strong
Enumerator
TxMutation 

Definition at line 54 of file fuzzer_lib.hpp.

Function Documentation

◆ build_bytecode_and_artifacts()

ContractArtifacts build_bytecode_and_artifacts ( FuzzerData fuzzer_data)

Definition at line 214 of file fuzzer_lib.cpp.

◆ compare_cpp_simulator_results()

bool compare_cpp_simulator_results ( const std::vector< TxSimulationResult > &  results)

Definition at line 46 of file fuzzer_comparison_helper.cpp.

◆ create_default_tx_data() [1/2]

FuzzerTxData create_default_tx_data ( const FuzzerContext context)

Definition at line 208 of file fuzzer_lib.cpp.

◆ create_default_tx_data() [2/2]

FuzzerTxData create_default_tx_data ( std::mt19937_64 rng,
const FuzzerContext context 
)

Definition at line 188 of file fuzzer_lib.cpp.

◆ fund_fee_payer()

void fund_fee_payer ( bb::avm2::fuzzer::FuzzerWorldStateManager ws_mgr,
const Tx tx 
)

Definition at line 48 of file fuzzer_lib.cpp.

◆ fuzz_prover()

int fuzz_prover ( FuzzerWorldStateManager ws_mgr,
FuzzerContractDB contract_db,
FuzzerTxData tx_data 
)

Run the prover fuzzer: fast simulation, hint collection, comparison, and check_circuit.

Parameters
ws_mgrThe world state manager (should already be forked)
contract_dbThe contract database
tx_dataThe transaction data
Returns
0 on success
Exceptions
Anexception if simulation results differ or check_circuit fails

Definition at line 106 of file fuzzer_lib.cpp.

◆ fuzz_tx()

SimulatorResult fuzz_tx ( FuzzerWorldStateManager ws_mgr,
FuzzerContractDB contract_db,
FuzzerTxData tx_data 
)

Fuzz CPP vs JS simulator with a full transaction containing multiple enqueued calls.

Parameters
tx_dataThe transaction data containing multiple enqueued calls
Returns
The simulator result if the results are the same
Exceptions
Anexception if the simulator results are different

Definition at line 62 of file fuzzer_lib.cpp.

◆ mutate_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 
)

Definition at line 246 of file fuzzer_lib.cpp.

◆ operator<<()

std::ostream & operator<< ( std::ostream &  os,
const FuzzerTxData data 
)
inline

Definition at line 40 of file fuzzer_lib.hpp.

◆ setup_fuzzer_state()

void setup_fuzzer_state ( bb::avm2::fuzzer::FuzzerWorldStateManager ws_mgr,
bb::avm2::fuzzer::FuzzerContractDB contract_db,
const FuzzerTxData tx_data 
)

Definition at line 27 of file fuzzer_lib.cpp.