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.protocolContracts = protocol_contracts;
15 return *this;
16}
33{
34 public_inputs.feePayer = fee_payer;
35 return *this;
36}
37
50
52 const PublicCallRequest& public_teardown_call_request)
53{
54 public_inputs.publicTeardownCallRequest = public_teardown_call_request;
55 return *this;
56}
57
59 const PrivateToAvmAccumulatedData& previous_non_revertible_accumulated_data)
60{
61 public_inputs.previousNonRevertibleAccumulatedData = previous_non_revertible_accumulated_data;
62 return *this;
63}
64
66 const PrivateToAvmAccumulatedData& previous_revertible_accumulated_data)
67{
68 public_inputs.previousRevertibleAccumulatedData = 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{
83 public_inputs.previousRevertibleAccumulatedDataArrayLengths = previous_revertible_accumulated_data_array_lengths;
84 return *this;
85}
86
87// Outputs
89{
90 public_inputs.endTreeSnapshots = end_tree_snapshots;
91 return *this;
92}
94{
95 public_inputs.endGasUsed = end_gas_used;
96 return *this;
97}
99 const AvmAccumulatedDataArrayLengths& accumulated_data_array_lengths)
100{
101 public_inputs.accumulatedDataArrayLengths = accumulated_data_array_lengths;
102 return *this;
103}
105{
106 public_inputs.accumulatedData = accumulated_data;
107 return *this;
108}
110{
111 public_inputs.transactionFee = transaction_fee;
112 return *this;
113}
115{
116 public_inputs.reverted = reverted;
117 return *this;
118}
119
120// *******************************************
121// Randomised Builders
122// *******************************************
124{
125 public_inputs.globalVariables = { .chainId = FF::random_element(&engine),
126 .version = FF::random_element(&engine),
127 .blockNumber = static_cast<uint32_t>(std::rand()),
128 .slotNumber = FF::random_element(&engine),
129 .timestamp = static_cast<uint64_t>(std::rand()),
130 .coinbase = EthAddress::random_element(&engine),
131 .feeRecipient = AztecAddress::random_element(&engine),
132 .gasFees = {
133 .feePerDaGas = static_cast<uint128_t>(std::rand()),
134 .feePerL2Gas = static_cast<uint128_t>(std::rand()),
135 } };
136 return *this;
137}
138
140{
142 .l1ToL2MessageTree = { .root = FF::random_element(&engine),
143 .nextAvailableLeafIndex = engine.get_random_uint64() },
144 .noteHashTree = { .root = FF::random_element(&engine), .nextAvailableLeafIndex = engine.get_random_uint64() },
145 .nullifierTree = { .root = FF::random_element(&engine), .nextAvailableLeafIndex = engine.get_random_uint64() },
146 .publicDataTree = { .root = FF::random_element(&engine), .nextAvailableLeafIndex = engine.get_random_uint64() },
147 };
148 return *this;
149}
150
159
161{
163 .gasLimits = {
165 .daGas = engine.get_random_uint32(),
166 },
167 .teardownGasLimits = {
168 .l2Gas = engine.get_random_uint32(),
169 .daGas = engine.get_random_uint32(),
170 },
171 .maxFeesPerGas = {
172 .feePerDaGas = engine.get_random_uint128(),
173 .feePerL2Gas = engine.get_random_uint128(),
174 },
175 .maxPriorityFeesPerGas = {
176 .feePerDaGas = engine.get_random_uint128(),
177 .feePerL2Gas = engine.get_random_uint128(),
178 },
179 };
180 return *this;
181}
182
184{
185 public_inputs.feePayer = AztecAddress::random_element(&engine);
186 return *this;
187}
188
190{
191 std::array<FF, MAX_NOTE_HASHES_PER_TX> note_hashes{};
192 std::array<FF, MAX_NULLIFIERS_PER_TX> nullifiers{};
194
195 for (size_t i = 0; i < n; ++i) {
196 note_hashes[i] = FF::random_element(&engine);
197 nullifiers[i] = FF::random_element(&engine);
198 messages[i] = ScopedL2ToL1Message{
199 .message =
201 .recipient = FF::random_element(&engine),
202 .content = FF::random_element(&engine),
203 },
204 .contractAddress = FF::random_element(&engine),
205 };
206 }
207
209 .noteHashes = note_hashes,
210 .nullifiers = nullifiers,
211 .l2ToL1Msgs = messages,
212 };
214 .noteHashes = static_cast<uint32_t>(n),
215 .nullifiers = static_cast<uint32_t>(n),
216 .l2ToL1Msgs = static_cast<uint32_t>(n),
217 };
218 return *this;
219}
220
222{
223 std::array<FF, MAX_NOTE_HASHES_PER_TX> note_hashes{};
224 std::array<FF, MAX_NULLIFIERS_PER_TX> nullifiers{};
226
227 for (size_t i = 0; i < n; ++i) {
228 note_hashes[i] = FF::random_element(&engine);
229 nullifiers[i] = FF::random_element(&engine);
230 messages[i] = ScopedL2ToL1Message{
231 .message =
233 .recipient = FF::random_element(&engine),
234 .content = FF::random_element(&engine),
235 },
236 .contractAddress = FF::random_element(&engine),
237 };
238 }
239
241 .noteHashes = note_hashes,
242 .nullifiers = nullifiers,
243 .l2ToL1Msgs = messages,
244 };
246 .noteHashes = static_cast<uint32_t>(n),
247 .nullifiers = static_cast<uint32_t>(n),
248 .l2ToL1Msgs = static_cast<uint32_t>(n),
249 };
250 return *this;
251}
252
254{
255 for (size_t i = 0; i < n; ++i) {
257 .msgSender = AztecAddress::random_element(&engine),
258 .contractAddress = AztecAddress::random_element(&engine),
259 .isStaticCall = engine.get_random_uint8() % 2 == 0,
260 .calldataHash = FF::random_element(&engine), // Placeholder for actual calldata hash
261 };
262 }
263 public_inputs.publicCallRequestArrayLengths.setupCalls += static_cast<uint32_t>(n);
264 return *this;
265}
266
268{
269 for (size_t i = 0; i < n; ++i) {
271 .msgSender = AztecAddress::random_element(&engine),
272 .contractAddress = AztecAddress::random_element(&engine),
273 .isStaticCall = engine.get_random_uint8() % 2 == 0,
274 .calldataHash = FF::random_element(&engine), // Placeholder for actual calldata hash
275 };
276 }
277
279 return *this;
280}
281
283{
285 .msgSender = AztecAddress::random_element(&engine),
286 .contractAddress = AztecAddress::random_element(&engine),
287 .isStaticCall = engine.get_random_uint8() % 2 == 0,
288 .calldataHash = FF::random_element(&engine), // Placeholder for actual calldata hash
289 };
290
292
293 return *this;
294}
295
300
301} // 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 > 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
ProtocolContracts protocolContracts
std::array< PublicCallRequest, MAX_ENQUEUED_CALLS_PER_TX > publicAppLogicCallRequests
AppendOnlyTreeSnapshot l1ToL2MessageTree