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
28{
29 public_inputs.feePayer = fee_payer;
30 return *this;
31}
32
45
47 const PublicCallRequest& public_teardown_call_request)
48{
49 public_inputs.publicTeardownCallRequest = public_teardown_call_request;
50 return *this;
51}
52
54 const PrivateToAvmAccumulatedData& previous_non_revertible_accumulated_data)
55{
56 public_inputs.previousNonRevertibleAccumulatedData = previous_non_revertible_accumulated_data;
57 return *this;
58}
59
61 const PrivateToAvmAccumulatedData& previous_revertible_accumulated_data)
62{
63 public_inputs.previousRevertibleAccumulatedData = previous_revertible_accumulated_data;
64 return *this;
65}
66
68 const PrivateToAvmAccumulatedDataArrayLengths& previous_non_revertible_accumulated_data_array_lengths)
69{
71 previous_non_revertible_accumulated_data_array_lengths;
72 return *this;
73}
74
76 const PrivateToAvmAccumulatedDataArrayLengths& previous_revertible_accumulated_data_array_lengths)
77{
78 public_inputs.previousRevertibleAccumulatedDataArrayLengths = previous_revertible_accumulated_data_array_lengths;
79 return *this;
80}
81
82// Outputs
84{
85 public_inputs.endTreeSnapshots = end_tree_snapshots;
86 return *this;
87}
89{
90 public_inputs.endGasUsed = end_gas_used;
91 return *this;
92}
94 const AvmAccumulatedDataArrayLengths& accumulated_data_array_lengths)
95{
96 public_inputs.accumulatedDataArrayLengths = accumulated_data_array_lengths;
97 return *this;
98}
100{
101 public_inputs.accumulatedData = accumulated_data;
102 return *this;
103}
105{
106 public_inputs.transactionFee = transaction_fee;
107 return *this;
108}
110{
111 public_inputs.reverted = reverted;
112 return *this;
113}
114
115// *******************************************
116// Randomised Builders
117// *******************************************
119{
120 public_inputs.globalVariables = { .chainId = FF::random_element(&engine),
121 .version = FF::random_element(&engine),
122 .blockNumber = static_cast<uint32_t>(std::rand()),
123 .slotNumber = FF::random_element(&engine),
124 .timestamp = static_cast<uint64_t>(std::rand()),
125 .coinbase = EthAddress::random_element(&engine),
126 .feeRecipient = AztecAddress::random_element(&engine),
127 .gasFees = {
128 .feePerDaGas = static_cast<uint128_t>(std::rand()),
129 .feePerL2Gas = static_cast<uint128_t>(std::rand()),
130 } };
131 return *this;
132}
133
135{
137 .l1ToL2MessageTree = { .root = FF::random_element(&engine),
138 .nextAvailableLeafIndex = engine.get_random_uint64() },
139 .noteHashTree = { .root = FF::random_element(&engine), .nextAvailableLeafIndex = engine.get_random_uint64() },
140 .nullifierTree = { .root = FF::random_element(&engine), .nextAvailableLeafIndex = engine.get_random_uint64() },
141 .publicDataTree = { .root = FF::random_element(&engine), .nextAvailableLeafIndex = engine.get_random_uint64() },
142 };
143 return *this;
144}
145
154
156{
158 .gasLimits = {
160 .daGas = engine.get_random_uint32(),
161 },
162 .teardownGasLimits = {
163 .l2Gas = engine.get_random_uint32(),
164 .daGas = engine.get_random_uint32(),
165 },
166 .maxFeesPerGas = {
167 .feePerDaGas = engine.get_random_uint128(),
168 .feePerL2Gas = engine.get_random_uint128(),
169 },
170 .maxPriorityFeesPerGas = {
171 .feePerDaGas = engine.get_random_uint128(),
172 .feePerL2Gas = engine.get_random_uint128(),
173 },
174 };
175 return *this;
176}
177
179{
180 public_inputs.feePayer = AztecAddress::random_element(&engine);
181 return *this;
182}
183
185{
186 std::array<FF, MAX_NOTE_HASHES_PER_TX> note_hashes{};
187 std::array<FF, MAX_NULLIFIERS_PER_TX> nullifiers{};
189
190 for (size_t i = 0; i < n; ++i) {
191 note_hashes[i] = FF::random_element(&engine);
192 nullifiers[i] = FF::random_element(&engine);
193 messages[i] = ScopedL2ToL1Message{
194 .message =
196 .recipient = FF::random_element(&engine),
197 .content = FF::random_element(&engine),
198 },
199 .contractAddress = FF::random_element(&engine),
200 };
201 }
202
204 .noteHashes = note_hashes,
205 .nullifiers = nullifiers,
206 .l2ToL1Msgs = messages,
207 };
209 .noteHashes = static_cast<uint32_t>(n),
210 .nullifiers = static_cast<uint32_t>(n),
211 .l2ToL1Msgs = static_cast<uint32_t>(n),
212 };
213 return *this;
214}
215
217{
218 std::array<FF, MAX_NOTE_HASHES_PER_TX> note_hashes{};
219 std::array<FF, MAX_NULLIFIERS_PER_TX> nullifiers{};
221
222 for (size_t i = 0; i < n; ++i) {
223 note_hashes[i] = FF::random_element(&engine);
224 nullifiers[i] = FF::random_element(&engine);
225 messages[i] = ScopedL2ToL1Message{
226 .message =
228 .recipient = FF::random_element(&engine),
229 .content = FF::random_element(&engine),
230 },
231 .contractAddress = FF::random_element(&engine),
232 };
233 }
234
236 .noteHashes = note_hashes,
237 .nullifiers = nullifiers,
238 .l2ToL1Msgs = messages,
239 };
241 .noteHashes = static_cast<uint32_t>(n),
242 .nullifiers = static_cast<uint32_t>(n),
243 .l2ToL1Msgs = static_cast<uint32_t>(n),
244 };
245 return *this;
246}
247
249{
250 for (size_t i = 0; i < n; ++i) {
252 .msgSender = AztecAddress::random_element(&engine),
253 .contractAddress = AztecAddress::random_element(&engine),
254 .isStaticCall = engine.get_random_uint8() % 2 == 0,
255 .calldataHash = FF::random_element(&engine), // Placeholder for actual calldata hash
256 };
257 }
258 public_inputs.publicCallRequestArrayLengths.setupCalls += static_cast<uint32_t>(n);
259 return *this;
260}
261
263{
264 for (size_t i = 0; i < n; ++i) {
266 .msgSender = AztecAddress::random_element(&engine),
267 .contractAddress = AztecAddress::random_element(&engine),
268 .isStaticCall = engine.get_random_uint8() % 2 == 0,
269 .calldataHash = FF::random_element(&engine), // Placeholder for actual calldata hash
270 };
271 }
272
274 return *this;
275}
276
278{
280 .msgSender = AztecAddress::random_element(&engine),
281 .contractAddress = AztecAddress::random_element(&engine),
282 .isStaticCall = engine.get_random_uint8() % 2 == 0,
283 .calldataHash = FF::random_element(&engine), // Placeholder for actual calldata hash
284 };
285
287
288 return *this;
289}
290
295
296} // 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 & 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 > noteHashes
GlobalVariables globalVariables
TreeSnapshots startTreeSnapshots
PrivateToAvmAccumulatedData previousRevertibleAccumulatedData
PublicCallRequestArrayLengths publicCallRequestArrayLengths
PrivateToAvmAccumulatedData previousNonRevertibleAccumulatedData
TreeSnapshots endTreeSnapshots
AvmAccumulatedDataArrayLengths accumulatedDataArrayLengths
PublicCallRequest publicTeardownCallRequest
std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > publicSetupCallRequests
PrivateToAvmAccumulatedDataArrayLengths previousNonRevertibleAccumulatedDataArrayLengths
AvmAccumulatedData accumulatedData
PrivateToAvmAccumulatedDataArrayLengths previousRevertibleAccumulatedDataArrayLengths
std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > publicAppLogicCallRequests
AppendOnlyTreeSnapshot l1ToL2MessageTree