Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
public_inputs_builder.cpp
Go to the documentation of this file.
3#include <cstdlib>
4
5namespace bb::avm2::testing {
6
13{
14 public_inputs.protocol_contracts = protocol_contracts;
15 return *this;
16}
33{
34 public_inputs.fee_payer = fee_payer;
35 return *this;
36}
37
50
52 const PublicCallRequest& public_teardown_call_request)
53{
54 public_inputs.public_teardown_call_request = public_teardown_call_request;
55 return *this;
56}
57
59 const PrivateToAvmAccumulatedData& previous_non_revertible_accumulated_data)
60{
61 public_inputs.previous_non_revertible_accumulated_data = previous_non_revertible_accumulated_data;
62 return *this;
63}
64
66 const PrivateToAvmAccumulatedData& previous_revertible_accumulated_data)
67{
68 public_inputs.previous_revertible_accumulated_data = previous_revertible_accumulated_data;
69 return *this;
70}
71
73 const PrivateToAvmAccumulatedDataArrayLengths& previous_non_revertible_accumulated_data_array_lengths)
74{
76 previous_non_revertible_accumulated_data_array_lengths;
77 return *this;
78}
79
81 const PrivateToAvmAccumulatedDataArrayLengths& previous_revertible_accumulated_data_array_lengths)
82{
84 previous_revertible_accumulated_data_array_lengths;
85 return *this;
86}
87
88// Outputs
90{
91 public_inputs.end_tree_snapshots = end_tree_snapshots;
92 return *this;
93}
95{
96 public_inputs.end_gas_used = end_gas_used;
97 return *this;
98}
100 const AvmAccumulatedDataArrayLengths& accumulated_data_array_lengths)
101{
102 public_inputs.accumulated_data_array_lengths = accumulated_data_array_lengths;
103 return *this;
104}
106{
107 public_inputs.accumulated_data = accumulated_data;
108 return *this;
109}
111{
112 public_inputs.transaction_fee = transaction_fee;
113 return *this;
114}
116{
117 public_inputs.reverted = reverted;
118 return *this;
119}
120
121// *******************************************
122// Randomised Builders
123// *******************************************
125{
127 .version = FF::random_element(&engine),
128 .block_number = static_cast<uint32_t>(std::rand()),
129 .slot_number = FF::random_element(&engine),
130 .timestamp = static_cast<uint64_t>(std::rand()),
132 .fee_recipient = AztecAddress::random_element(&engine),
133 .gas_fees = {
134 .fee_per_da_gas = static_cast<uint128_t>(std::rand()),
135 .fee_per_l2_gas = static_cast<uint128_t>(std::rand()),
136 } };
137 return *this;
138}
139
141{
144 .next_available_leaf_index = engine.get_random_uint64() },
145 .note_hash_tree = { .root = FF::random_element(&engine),
146 .next_available_leaf_index = engine.get_random_uint64() },
147 .nullifier_tree = { .root = FF::random_element(&engine),
148 .next_available_leaf_index = engine.get_random_uint64() },
149 .public_data_tree = { .root = FF::random_element(&engine),
150 .next_available_leaf_index = engine.get_random_uint64() },
151 };
152 return *this;
153}
154
163
165{
167 .gas_limits = {
169 .da_gas = engine.get_random_uint32(),
170 },
171 .teardown_gas_limits = {
172 .l2_gas = engine.get_random_uint32(),
173 .da_gas = engine.get_random_uint32(),
174 },
175 .max_fees_per_gas = {
176 .fee_per_da_gas = engine.get_random_uint128(),
177 .fee_per_l2_gas = engine.get_random_uint128(),
178 },
179 .max_priority_fees_per_gas = {
180 .fee_per_da_gas = engine.get_random_uint128(),
181 .fee_per_l2_gas = engine.get_random_uint128(),
182 },
183 };
184 return *this;
185}
186
192
194{
195 std::array<FF, MAX_NOTE_HASHES_PER_TX> note_hashes{};
196 std::array<FF, MAX_NULLIFIERS_PER_TX> nullifiers{};
198
199 for (size_t i = 0; i < n; ++i) {
200 note_hashes[i] = FF::random_element(&engine);
201 nullifiers[i] = FF::random_element(&engine);
202 messages[i] = ScopedL2ToL1Message{
203 .message =
206 .content = FF::random_element(&engine),
207 },
208 .contract_address = FF::random_element(&engine),
209 };
210 }
211
213 .note_hashes = note_hashes,
214 .nullifiers = nullifiers,
215 .l2_to_l1_msgs = messages,
216 };
218 .note_hashes = static_cast<uint32_t>(n),
219 .nullifiers = static_cast<uint32_t>(n),
220 .l2_to_l1_msgs = static_cast<uint32_t>(n),
221 };
222 return *this;
223}
224
226{
227 std::array<FF, MAX_NOTE_HASHES_PER_TX> note_hashes{};
228 std::array<FF, MAX_NULLIFIERS_PER_TX> nullifiers{};
230
231 for (size_t i = 0; i < n; ++i) {
232 note_hashes[i] = FF::random_element(&engine);
233 nullifiers[i] = FF::random_element(&engine);
234 messages[i] = ScopedL2ToL1Message{
235 .message =
238 .content = FF::random_element(&engine),
239 },
240 .contract_address = FF::random_element(&engine),
241 };
242 }
243
245 .note_hashes = note_hashes,
246 .nullifiers = nullifiers,
247 .l2_to_l1_msgs = messages,
248 };
250 .note_hashes = static_cast<uint32_t>(n),
251 .nullifiers = static_cast<uint32_t>(n),
252 .l2_to_l1_msgs = static_cast<uint32_t>(n),
253 };
254 return *this;
255}
256
258{
259 for (size_t i = 0; i < n; ++i) {
262 .contract_address = AztecAddress::random_element(&engine),
263 .is_static_call = engine.get_random_uint8() % 2 == 0,
264 .calldata_hash = FF::random_element(&engine), // Placeholder for actual calldata hash
265 };
266 }
268 return *this;
269}
270
272{
273 for (size_t i = 0; i < n; ++i) {
276 .contract_address = AztecAddress::random_element(&engine),
277 .is_static_call = engine.get_random_uint8() % 2 == 0,
278 .calldata_hash = FF::random_element(&engine), // Placeholder for actual calldata hash
279 };
280 }
281
283 return *this;
284}
285
287{
290 .contract_address = AztecAddress::random_element(&engine),
291 .is_static_call = engine.get_random_uint8() % 2 == 0,
292 .calldata_hash = FF::random_element(&engine), // Placeholder for actual calldata hash
293 };
294
296
297 return *this;
298}
299
304
305} // namespace bb::avm2::testing
PublicInputsBuilder & with_public_app_logic_call_requests(const std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > &public_app_logic_call_requests)
PublicInputsBuilder & set_reverted(bool reverted)
PublicInputsBuilder & set_end_gas_used(const Gas &end_gas_used)
PublicInputsBuilder & set_accumulated_data(const AvmAccumulatedData &accumulated_data)
PublicInputsBuilder & with_previous_revertible_accumulated_data(const PrivateToAvmAccumulatedData &previous_revertible_accumulated_data)
PublicInputsBuilder & with_previous_non_revertible_accumulated_data_array_lengths(const PrivateToAvmAccumulatedDataArrayLengths &previous_non_revertible_accumulated_data_array_lengths)
PublicInputsBuilder & set_accumulated_data_array_lengths(const AvmAccumulatedDataArrayLengths &accumulated_data_array_lengths)
PublicInputsBuilder & with_start_gas_used(const Gas &gas)
PublicInputsBuilder & rand_public_app_logic_call_requests(size_t n)
PublicInputsBuilder & with_start_tree_snapshots(const TreeSnapshots &start_tree_snapshots)
PublicInputsBuilder & set_end_tree_snapshots(const TreeSnapshots &end_tree_snapshots)
PublicInputsBuilder & set_transaction_fee(const FF &transaction_fee)
PublicInputsBuilder & with_gas_settings(const GasSettings &gas_settings)
PublicInputsBuilder & with_previous_non_revertible_accumulated_data(const PrivateToAvmAccumulatedData &previous_non_revertible_accumulated_data)
PublicInputsBuilder & with_global_variables(const GlobalVariables &globals)
PublicInputsBuilder & rand_public_setup_call_requests(size_t n)
PublicInputsBuilder & set_protocol_contracts(const ProtocolContracts &protocol_contracts)
PublicInputsBuilder & rand_previous_revertible_accumulated_data(size_t n)
PublicInputsBuilder & with_previous_revertible_accumulated_data_array_lengths(const PrivateToAvmAccumulatedDataArrayLengths &previous_revertible_accumulated_data_array_lengths)
PublicInputsBuilder & with_public_setup_call_requests(const std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > &public_setup_call_requests)
PublicInputsBuilder & rand_public_teardown_call_request()
PublicInputsBuilder & rand_previous_non_revertible_accumulated_data(size_t n)
PublicInputsBuilder & with_fee_payer(const AztecAddress &fee_payer)
PublicInputsBuilder & with_public_teardown_call_request(const PublicCallRequest &public_teardown_call_request)
virtual uint64_t get_random_uint64()=0
virtual uint8_t get_random_uint8()=0
virtual uint128_t get_random_uint128()=0
virtual uint32_t get_random_uint32()=0
AvmFlavorSettings::FF FF
Definition field.hpp:10
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
Definition tuple.hpp:13
unsigned __int128 uint128_t
Definition serialize.hpp:44
std::array< FF, MAX_NOTE_HASHES_PER_TX > note_hashes
PublicCallRequest public_teardown_call_request
Definition avm_io.hpp:40
PrivateToAvmAccumulatedDataArrayLengths previous_non_revertible_accumulated_data_array_lengths
Definition avm_io.hpp:41
TreeSnapshots end_tree_snapshots
Definition avm_io.hpp:47
PrivateToAvmAccumulatedData previous_non_revertible_accumulated_data
Definition avm_io.hpp:43
GasSettings gas_settings
Definition avm_io.hpp:33
GlobalVariables global_variables
Definition avm_io.hpp:29
PublicCallRequestArrayLengths public_call_request_array_lengths
Definition avm_io.hpp:37
AztecAddress fee_payer
Definition avm_io.hpp:35
TreeSnapshots start_tree_snapshots
Definition avm_io.hpp:31
std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > public_app_logic_call_requests
Definition avm_io.hpp:39
ProtocolContracts protocol_contracts
Definition avm_io.hpp:30
AvmAccumulatedDataArrayLengths accumulated_data_array_lengths
Definition avm_io.hpp:49
PrivateToAvmAccumulatedDataArrayLengths previous_revertible_accumulated_data_array_lengths
Definition avm_io.hpp:42
std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > public_setup_call_requests
Definition avm_io.hpp:38
AvmAccumulatedData accumulated_data
Definition avm_io.hpp:50
PrivateToAvmAccumulatedData previous_revertible_accumulated_data
Definition avm_io.hpp:44
AppendOnlyTreeSnapshot l1_to_l2_message_tree
static field random_element(numeric::RNG *engine=nullptr) noexcept