71 std::vector<FF> note_hashes;
73 note_hashes.reserve(num_note_hashes);
74 for (
size_t i = 0; i < num_note_hashes; i++) {
75 note_hashes.push_back(generate_note_hash(rng));
77 std::vector<FF> nullifiers;
79 nullifiers.reserve(num_nullifiers);
80 for (
size_t i = 0; i < num_nullifiers; i++) {
81 nullifiers.push_back(generate_nullifier(rng));
85 l2_to_l1_messages.reserve(num_messages);
86 for (
size_t i = 0; i < num_messages; i++) {
87 l2_to_l1_messages.push_back(generate_l2_to_l1_message(rng));
92 .nullifiers = nullifiers,
93 .l2_to_l1_messages = l2_to_l1_messages,
104 case AccumulatedDataMutationOptions::NoteHashes:
112 case AccumulatedDataMutationOptions::NoteHashesLimit: {
120 case AccumulatedDataMutationOptions::Nullifiers:
128 case AccumulatedDataMutationOptions::NullifiersLimit: {
129 size_t original_size = input.
nullifiers.size();
132 input.
nullifiers[i] = generate_nullifier(rng);
136 case AccumulatedDataMutationOptions::L2ToL1Messages:
140 generate_l2_to_l1_message,
144 case AccumulatedDataMutationOptions::L2ToL1MessagesLimit: {
162 if (
data.nullifiers.empty()) {
164 data.nullifiers.push_back(generate_nullifier(rng));
170 mutate_accumulated_data(
data, rng);
171 if (
data.nullifiers.empty()) {
173 data.nullifiers.push_back(generate_nullifier(rng));
179 return generate_accumulated_data(rng);
184 mutate_accumulated_data(
data, rng);
FF generate_random_field(std::mt19937_64 &rng)
void mutate_field(bb::avm2::FF &value, std::mt19937_64 &rng, const FieldMutationConfig &config)
#define MAX_L2_TO_L1_MSGS_PER_TX
#define MAX_NOTE_HASHES_PER_TX
#define MAX_NULLIFIERS_PER_TX
T select(std::mt19937_64 &rng) const
constexpr FieldMutationConfig BASIC_FIELD_MUTATION_CONFIGURATION
constexpr VecMutationConfig BASIC_VEC_MUTATION_CONFIGURATION
const std::vector< MemoryValue > data
AccumulatedData generate_non_revertible_accumulated_data(std::mt19937_64 &rng)
void mutate_non_revertible_accumulated_data(AccumulatedData &data, std::mt19937_64 &rng)
constexpr AccumulatedDataMutationConfig ACCUMULATED_DATA_MUTATION_CONFIGURATION
AccumulatedData generate_revertible_accumulated_data(std::mt19937_64 &rng)
void mutate_revertible_accumulated_data(AccumulatedData &data, std::mt19937_64 &rng)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
std::vector< FF > nullifiers
std::vector< FF > note_hashes
std::vector< ScopedL2ToL1Message > l2_to_l1_messages
AztecAddress contract_address