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, ContractClassWithCommitment, ContractInstance >
 
using FuzzerContext = bb::avm2::fuzzer::FuzzerContext
 
using FuzzerTxDataMutationConfig = WeightedSelectionConfig< FuzzerTxDataMutationType, 7 >
 

Enumerations

enum class  FuzzerTxDataMutationType : uint8_t {
  TxFuzzerDataMutation , TxMutation , BytecodeMutation , ContractClassMutation ,
  ContractInstanceMutation , GlobalVariablesMutation , ProtocolContractsMutation
}
 

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, FuzzerContext &context)
 
FuzzerTxData create_default_tx_data (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)
 Run the C++ simulator on a full transaction containing multiple enqueued calls.
 
TxSimulationResult 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)
 
void populate_context_from_tx_data (FuzzerContext &context, const FuzzerTxData &tx_data)
 
bool compare_cpp_simulator_results (const std::vector< TxSimulationResult > &results)
 

Variables

constexpr FuzzerTxDataMutationConfig FUZZER_TX_DATA_MUTATION_CONFIGURATION
 

Typedef Documentation

◆ Bytecode

using Bytecode = std::vector<uint8_t>

Definition at line 58 of file fuzzer_lib.hpp.

◆ ContractArtifacts

Definition at line 59 of file fuzzer_lib.hpp.

◆ FuzzerContext

Definition at line 60 of file fuzzer_lib.hpp.

◆ FuzzerTxDataMutationConfig

Enumeration Type Documentation

◆ FuzzerTxDataMutationType

enum class FuzzerTxDataMutationType : uint8_t
strong
Enumerator
TxFuzzerDataMutation 
TxMutation 
BytecodeMutation 
ContractClassMutation 
ContractInstanceMutation 
GlobalVariablesMutation 
ProtocolContractsMutation 

Definition at line 63 of file fuzzer_lib.hpp.

Function Documentation

◆ build_bytecode_and_artifacts()

ContractArtifacts build_bytecode_and_artifacts ( FuzzerData fuzzer_data)

Definition at line 255 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 ( FuzzerContext context)

Definition at line 249 of file fuzzer_lib.cpp.

◆ create_default_tx_data() [2/2]

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

Definition at line 221 of file fuzzer_lib.cpp.

◆ fund_fee_payer()

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

Definition at line 81 of file fuzzer_lib.cpp.

◆ fuzz_prover()

TxSimulationResult 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
the simulation result
Exceptions
Anexception if simulation results differ or check_circuit fails

Definition at line 131 of file fuzzer_lib.cpp.

◆ fuzz_tx()

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

Run the C++ simulator on a full transaction containing multiple enqueued calls.

Parameters
tx_dataThe transaction data containing multiple enqueued calls
Returns
The simulation result; a reverted result carrying the message if the simulator throws

Definition at line 94 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 288 of file fuzzer_lib.cpp.

◆ operator<<()

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

Definition at line 49 of file fuzzer_lib.hpp.

◆ populate_context_from_tx_data()

void populate_context_from_tx_data ( FuzzerContext context,
const FuzzerTxData tx_data 
)

Definition at line 428 of file fuzzer_lib.cpp.

◆ 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 35 of file fuzzer_lib.cpp.

Variable Documentation

◆ FUZZER_TX_DATA_MUTATION_CONFIGURATION