30 while (nullifier == 0) {
40 while (nullifier == 0) {
81 std::vector<FF> note_hashes;
83 note_hashes.reserve(num_note_hashes);
84 for (
size_t i = 0; i < num_note_hashes; i++) {
85 note_hashes.push_back(generate_note_hash(rng));
87 std::vector<FF> nullifiers;
89 nullifiers.reserve(num_nullifiers);
90 for (
size_t i = 0; i < num_nullifiers; i++) {
91 nullifiers.push_back(generate_nullifier(rng));
95 l2_to_l1_messages.reserve(num_messages);
96 for (
size_t i = 0; i < num_messages; i++) {
97 l2_to_l1_messages.push_back(generate_l2_to_l1_message(rng));
102 .nullifiers = nullifiers,
103 .l2_to_l1_messages = l2_to_l1_messages,
114 case AccumulatedDataMutationOptions::NoteHashes:
122 case AccumulatedDataMutationOptions::NoteHashesLimit: {
130 case AccumulatedDataMutationOptions::Nullifiers:
138 case AccumulatedDataMutationOptions::NullifiersLimit: {
139 size_t original_size = input.
nullifiers.size();
142 input.
nullifiers[i] = generate_nullifier(rng);
146 case AccumulatedDataMutationOptions::L2ToL1Messages:
150 generate_l2_to_l1_message,
154 case AccumulatedDataMutationOptions::L2ToL1MessagesLimit: {
172 if (
data.nullifiers.empty()) {
174 data.nullifiers.push_back(generate_nullifier(rng));
180 mutate_accumulated_data(
data, rng);
181 if (
data.nullifiers.empty()) {
183 data.nullifiers.push_back(generate_nullifier(rng));
189 return generate_accumulated_data(rng);
194 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
EthAddress generate_random_eth_address(std::mt19937_64 &rng)
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