@aztec/protocol-contracts 0.23.0 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2617 @@
1
+ {
2
+ "noir_version": "0.23.0+5f5843e35052b9d3599b8ab4f7633db0a225e82f",
3
+ "name": "ContractClassRegisterer",
4
+ "functions": [
5
+ {
6
+ "name": "broadcast_unconstrained_function",
7
+ "function_type": "Secret",
8
+ "is_internal": false,
9
+ "abi": {
10
+ "parameters": [
11
+ {
12
+ "name": "inputs",
13
+ "type": {
14
+ "kind": "struct",
15
+ "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
16
+ "fields": [
17
+ {
18
+ "name": "call_context",
19
+ "type": {
20
+ "kind": "struct",
21
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
22
+ "fields": [
23
+ {
24
+ "name": "msg_sender",
25
+ "type": {
26
+ "kind": "struct",
27
+ "path": "aztec::protocol_types::address::AztecAddress",
28
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
29
+ }
30
+ },
31
+ {
32
+ "name": "storage_contract_address",
33
+ "type": {
34
+ "kind": "struct",
35
+ "path": "aztec::protocol_types::address::AztecAddress",
36
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
37
+ }
38
+ },
39
+ {
40
+ "name": "portal_contract_address",
41
+ "type": {
42
+ "kind": "struct",
43
+ "path": "aztec::protocol_types::address::EthAddress",
44
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
45
+ }
46
+ },
47
+ {
48
+ "name": "function_selector",
49
+ "type": {
50
+ "kind": "struct",
51
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
52
+ "fields": [
53
+ { "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
54
+ ]
55
+ }
56
+ },
57
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
58
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
59
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
60
+ {
61
+ "name": "start_side_effect_counter",
62
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
63
+ }
64
+ ]
65
+ }
66
+ },
67
+ {
68
+ "name": "historical_header",
69
+ "type": {
70
+ "kind": "struct",
71
+ "path": "aztec::protocol_types::header::Header",
72
+ "fields": [
73
+ {
74
+ "name": "last_archive",
75
+ "type": {
76
+ "kind": "struct",
77
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
78
+ "fields": [
79
+ { "name": "root", "type": { "kind": "field" } },
80
+ {
81
+ "name": "next_available_leaf_index",
82
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
83
+ }
84
+ ]
85
+ }
86
+ },
87
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
88
+ {
89
+ "name": "state",
90
+ "type": {
91
+ "kind": "struct",
92
+ "path": "aztec::protocol_types::state_reference::StateReference",
93
+ "fields": [
94
+ {
95
+ "name": "l1_to_l2_message_tree",
96
+ "type": {
97
+ "kind": "struct",
98
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
99
+ "fields": [
100
+ { "name": "root", "type": { "kind": "field" } },
101
+ {
102
+ "name": "next_available_leaf_index",
103
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
104
+ }
105
+ ]
106
+ }
107
+ },
108
+ {
109
+ "name": "partial",
110
+ "type": {
111
+ "kind": "struct",
112
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
113
+ "fields": [
114
+ {
115
+ "name": "note_hash_tree",
116
+ "type": {
117
+ "kind": "struct",
118
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
119
+ "fields": [
120
+ { "name": "root", "type": { "kind": "field" } },
121
+ {
122
+ "name": "next_available_leaf_index",
123
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
124
+ }
125
+ ]
126
+ }
127
+ },
128
+ {
129
+ "name": "nullifier_tree",
130
+ "type": {
131
+ "kind": "struct",
132
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
133
+ "fields": [
134
+ { "name": "root", "type": { "kind": "field" } },
135
+ {
136
+ "name": "next_available_leaf_index",
137
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
138
+ }
139
+ ]
140
+ }
141
+ },
142
+ {
143
+ "name": "contract_tree",
144
+ "type": {
145
+ "kind": "struct",
146
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
147
+ "fields": [
148
+ { "name": "root", "type": { "kind": "field" } },
149
+ {
150
+ "name": "next_available_leaf_index",
151
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
152
+ }
153
+ ]
154
+ }
155
+ },
156
+ {
157
+ "name": "public_data_tree",
158
+ "type": {
159
+ "kind": "struct",
160
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
161
+ "fields": [
162
+ { "name": "root", "type": { "kind": "field" } },
163
+ {
164
+ "name": "next_available_leaf_index",
165
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
166
+ }
167
+ ]
168
+ }
169
+ }
170
+ ]
171
+ }
172
+ }
173
+ ]
174
+ }
175
+ },
176
+ {
177
+ "name": "global_variables",
178
+ "type": {
179
+ "kind": "struct",
180
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
181
+ "fields": [
182
+ { "name": "chain_id", "type": { "kind": "field" } },
183
+ { "name": "version", "type": { "kind": "field" } },
184
+ { "name": "block_number", "type": { "kind": "field" } },
185
+ { "name": "timestamp", "type": { "kind": "field" } },
186
+ {
187
+ "name": "coinbase",
188
+ "type": {
189
+ "kind": "struct",
190
+ "path": "aztec::protocol_types::address::EthAddress",
191
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
192
+ }
193
+ },
194
+ {
195
+ "name": "fee_recipient",
196
+ "type": {
197
+ "kind": "struct",
198
+ "path": "aztec::protocol_types::address::AztecAddress",
199
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
200
+ }
201
+ }
202
+ ]
203
+ }
204
+ }
205
+ ]
206
+ }
207
+ },
208
+ {
209
+ "name": "contract_deployment_data",
210
+ "type": {
211
+ "kind": "struct",
212
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
213
+ "fields": [
214
+ {
215
+ "name": "public_key",
216
+ "type": {
217
+ "kind": "struct",
218
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
219
+ "fields": [
220
+ { "name": "x", "type": { "kind": "field" } },
221
+ { "name": "y", "type": { "kind": "field" } }
222
+ ]
223
+ }
224
+ },
225
+ { "name": "initialization_hash", "type": { "kind": "field" } },
226
+ {
227
+ "name": "contract_class_id",
228
+ "type": {
229
+ "kind": "struct",
230
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
231
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
232
+ }
233
+ },
234
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
235
+ {
236
+ "name": "portal_contract_address",
237
+ "type": {
238
+ "kind": "struct",
239
+ "path": "aztec::protocol_types::address::EthAddress",
240
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
241
+ }
242
+ }
243
+ ]
244
+ }
245
+ },
246
+ {
247
+ "name": "private_global_variables",
248
+ "type": {
249
+ "kind": "struct",
250
+ "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
251
+ "fields": [
252
+ { "name": "chain_id", "type": { "kind": "field" } },
253
+ { "name": "version", "type": { "kind": "field" } }
254
+ ]
255
+ }
256
+ }
257
+ ]
258
+ },
259
+ "visibility": "private"
260
+ },
261
+ {
262
+ "name": "contract_class_id",
263
+ "type": {
264
+ "kind": "struct",
265
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
266
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
267
+ },
268
+ "visibility": "private"
269
+ },
270
+ { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" },
271
+ { "name": "private_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" },
272
+ {
273
+ "name": "artifact_function_tree_sibling_path",
274
+ "type": { "kind": "array", "length": 5, "type": { "kind": "field" } },
275
+ "visibility": "private"
276
+ },
277
+ {
278
+ "name": "function_data",
279
+ "type": {
280
+ "kind": "struct",
281
+ "path": "events::unconstrained_function_broadcasted::UnconstrainedFunction",
282
+ "fields": [
283
+ {
284
+ "name": "selector",
285
+ "type": {
286
+ "kind": "struct",
287
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
288
+ "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
289
+ }
290
+ },
291
+ { "name": "metadata_hash", "type": { "kind": "field" } },
292
+ { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }
293
+ ]
294
+ },
295
+ "visibility": "private"
296
+ }
297
+ ],
298
+ "param_witnesses": {
299
+ "artifact_function_tree_sibling_path": [{ "start": 39, "end": 44 }],
300
+ "artifact_metadata_hash": [{ "start": 37, "end": 38 }],
301
+ "contract_class_id": [{ "start": 36, "end": 37 }],
302
+ "function_data": [{ "start": 44, "end": 546 }],
303
+ "inputs": [{ "start": 0, "end": 36 }],
304
+ "private_functions_artifact_tree_root": [{ "start": 38, "end": 39 }]
305
+ },
306
+ "return_type": {
307
+ "abi_type": {
308
+ "kind": "struct",
309
+ "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
310
+ "fields": [
311
+ {
312
+ "name": "call_context",
313
+ "type": {
314
+ "kind": "struct",
315
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
316
+ "fields": [
317
+ {
318
+ "name": "msg_sender",
319
+ "type": {
320
+ "kind": "struct",
321
+ "path": "aztec::protocol_types::address::AztecAddress",
322
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
323
+ }
324
+ },
325
+ {
326
+ "name": "storage_contract_address",
327
+ "type": {
328
+ "kind": "struct",
329
+ "path": "aztec::protocol_types::address::AztecAddress",
330
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
331
+ }
332
+ },
333
+ {
334
+ "name": "portal_contract_address",
335
+ "type": {
336
+ "kind": "struct",
337
+ "path": "aztec::protocol_types::address::EthAddress",
338
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
339
+ }
340
+ },
341
+ {
342
+ "name": "function_selector",
343
+ "type": {
344
+ "kind": "struct",
345
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
346
+ "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
347
+ }
348
+ },
349
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
350
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
351
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
352
+ {
353
+ "name": "start_side_effect_counter",
354
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
355
+ }
356
+ ]
357
+ }
358
+ },
359
+ { "name": "args_hash", "type": { "kind": "field" } },
360
+ { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
361
+ {
362
+ "name": "max_non_revertible_side_effect_counter",
363
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
364
+ },
365
+ {
366
+ "name": "read_requests",
367
+ "type": {
368
+ "kind": "array",
369
+ "length": 32,
370
+ "type": {
371
+ "kind": "struct",
372
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
373
+ "fields": [
374
+ { "name": "value", "type": { "kind": "field" } },
375
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
376
+ ]
377
+ }
378
+ }
379
+ },
380
+ {
381
+ "name": "nullifier_key_validation_requests",
382
+ "type": {
383
+ "kind": "array",
384
+ "length": 1,
385
+ "type": {
386
+ "kind": "struct",
387
+ "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
388
+ "fields": [
389
+ {
390
+ "name": "public_key",
391
+ "type": {
392
+ "kind": "struct",
393
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
394
+ "fields": [
395
+ { "name": "x", "type": { "kind": "field" } },
396
+ { "name": "y", "type": { "kind": "field" } }
397
+ ]
398
+ }
399
+ },
400
+ {
401
+ "name": "secret_key",
402
+ "type": {
403
+ "kind": "struct",
404
+ "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
405
+ "fields": [
406
+ { "name": "high", "type": { "kind": "field" } },
407
+ { "name": "low", "type": { "kind": "field" } }
408
+ ]
409
+ }
410
+ }
411
+ ]
412
+ }
413
+ }
414
+ },
415
+ {
416
+ "name": "new_commitments",
417
+ "type": {
418
+ "kind": "array",
419
+ "length": 16,
420
+ "type": {
421
+ "kind": "struct",
422
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
423
+ "fields": [
424
+ { "name": "value", "type": { "kind": "field" } },
425
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
426
+ ]
427
+ }
428
+ }
429
+ },
430
+ {
431
+ "name": "new_nullifiers",
432
+ "type": {
433
+ "kind": "array",
434
+ "length": 16,
435
+ "type": {
436
+ "kind": "struct",
437
+ "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
438
+ "fields": [
439
+ { "name": "value", "type": { "kind": "field" } },
440
+ { "name": "note_hash", "type": { "kind": "field" } },
441
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
442
+ ]
443
+ }
444
+ }
445
+ },
446
+ {
447
+ "name": "private_call_stack_hashes",
448
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
449
+ },
450
+ {
451
+ "name": "public_call_stack_hashes",
452
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
453
+ },
454
+ { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
455
+ { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
456
+ { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
457
+ {
458
+ "name": "unencrypted_logs_hash",
459
+ "type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
460
+ },
461
+ { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
462
+ { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
463
+ {
464
+ "name": "historical_header",
465
+ "type": {
466
+ "kind": "struct",
467
+ "path": "aztec::protocol_types::header::Header",
468
+ "fields": [
469
+ {
470
+ "name": "last_archive",
471
+ "type": {
472
+ "kind": "struct",
473
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
474
+ "fields": [
475
+ { "name": "root", "type": { "kind": "field" } },
476
+ {
477
+ "name": "next_available_leaf_index",
478
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
479
+ }
480
+ ]
481
+ }
482
+ },
483
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
484
+ {
485
+ "name": "state",
486
+ "type": {
487
+ "kind": "struct",
488
+ "path": "aztec::protocol_types::state_reference::StateReference",
489
+ "fields": [
490
+ {
491
+ "name": "l1_to_l2_message_tree",
492
+ "type": {
493
+ "kind": "struct",
494
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
495
+ "fields": [
496
+ { "name": "root", "type": { "kind": "field" } },
497
+ {
498
+ "name": "next_available_leaf_index",
499
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
500
+ }
501
+ ]
502
+ }
503
+ },
504
+ {
505
+ "name": "partial",
506
+ "type": {
507
+ "kind": "struct",
508
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
509
+ "fields": [
510
+ {
511
+ "name": "note_hash_tree",
512
+ "type": {
513
+ "kind": "struct",
514
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
515
+ "fields": [
516
+ { "name": "root", "type": { "kind": "field" } },
517
+ {
518
+ "name": "next_available_leaf_index",
519
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
520
+ }
521
+ ]
522
+ }
523
+ },
524
+ {
525
+ "name": "nullifier_tree",
526
+ "type": {
527
+ "kind": "struct",
528
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
529
+ "fields": [
530
+ { "name": "root", "type": { "kind": "field" } },
531
+ {
532
+ "name": "next_available_leaf_index",
533
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
534
+ }
535
+ ]
536
+ }
537
+ },
538
+ {
539
+ "name": "contract_tree",
540
+ "type": {
541
+ "kind": "struct",
542
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
543
+ "fields": [
544
+ { "name": "root", "type": { "kind": "field" } },
545
+ {
546
+ "name": "next_available_leaf_index",
547
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
548
+ }
549
+ ]
550
+ }
551
+ },
552
+ {
553
+ "name": "public_data_tree",
554
+ "type": {
555
+ "kind": "struct",
556
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
557
+ "fields": [
558
+ { "name": "root", "type": { "kind": "field" } },
559
+ {
560
+ "name": "next_available_leaf_index",
561
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
562
+ }
563
+ ]
564
+ }
565
+ }
566
+ ]
567
+ }
568
+ }
569
+ ]
570
+ }
571
+ },
572
+ {
573
+ "name": "global_variables",
574
+ "type": {
575
+ "kind": "struct",
576
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
577
+ "fields": [
578
+ { "name": "chain_id", "type": { "kind": "field" } },
579
+ { "name": "version", "type": { "kind": "field" } },
580
+ { "name": "block_number", "type": { "kind": "field" } },
581
+ { "name": "timestamp", "type": { "kind": "field" } },
582
+ {
583
+ "name": "coinbase",
584
+ "type": {
585
+ "kind": "struct",
586
+ "path": "aztec::protocol_types::address::EthAddress",
587
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
588
+ }
589
+ },
590
+ {
591
+ "name": "fee_recipient",
592
+ "type": {
593
+ "kind": "struct",
594
+ "path": "aztec::protocol_types::address::AztecAddress",
595
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
596
+ }
597
+ }
598
+ ]
599
+ }
600
+ }
601
+ ]
602
+ }
603
+ },
604
+ {
605
+ "name": "contract_deployment_data",
606
+ "type": {
607
+ "kind": "struct",
608
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
609
+ "fields": [
610
+ {
611
+ "name": "public_key",
612
+ "type": {
613
+ "kind": "struct",
614
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
615
+ "fields": [
616
+ { "name": "x", "type": { "kind": "field" } },
617
+ { "name": "y", "type": { "kind": "field" } }
618
+ ]
619
+ }
620
+ },
621
+ { "name": "initialization_hash", "type": { "kind": "field" } },
622
+ {
623
+ "name": "contract_class_id",
624
+ "type": {
625
+ "kind": "struct",
626
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
627
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
628
+ }
629
+ },
630
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
631
+ {
632
+ "name": "portal_contract_address",
633
+ "type": {
634
+ "kind": "struct",
635
+ "path": "aztec::protocol_types::address::EthAddress",
636
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
637
+ }
638
+ }
639
+ ]
640
+ }
641
+ },
642
+ { "name": "chain_id", "type": { "kind": "field" } },
643
+ { "name": "version", "type": { "kind": "field" } }
644
+ ]
645
+ },
646
+ "visibility": "public"
647
+ },
648
+ "return_witnesses": [
649
+ 566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
650
+ 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
651
+ 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
652
+ 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
653
+ 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
654
+ 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
655
+ 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
656
+ 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
657
+ 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763,
658
+ 764, 765, 766, 767, 768, 769, 770, 771, 772
659
+ ]
660
+ },
661
+ "bytecode": "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",
662
+ "debug_symbols": "1ZjbaoQwFEX/Jc8yeC5JTvyV0gfbTkEQZxilUMR/rzITrTQgpDBwnjSwV1gmwS2Opr2810Nz6XpTjQbQVC+j6a91twz7ob4NpioLc+4+5utUmM+mPZsKxE/FnxzY8EiCwJr1kIgiCj2ySPxrYrCpiYGcjVMDY9jlXwsDpNSblXpbpd5OqbdX6i1KvYNObyyVeoNSb6V9iUr7EpX2JSrtS1Tal6i0L1FpX+LT+pLBR2/2/r/elOxL8jaqkzje2S9QsqxIPEcokDt8ZIrrD67c0sx3rRMn3xiAEs3m222tQoiYy8N8HiZ5WPK0gGzHIICsmMQlseUhhpTAIA/DPIwyMDilPyQOTsmMUR7G6X0rZd03L7t9mwdf9a2p39rz8qNgHg7f1/vt9AM="
663
+ },
664
+ {
665
+ "name": "register",
666
+ "function_type": "Secret",
667
+ "is_internal": false,
668
+ "abi": {
669
+ "parameters": [
670
+ {
671
+ "name": "inputs",
672
+ "type": {
673
+ "kind": "struct",
674
+ "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
675
+ "fields": [
676
+ {
677
+ "name": "call_context",
678
+ "type": {
679
+ "kind": "struct",
680
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
681
+ "fields": [
682
+ {
683
+ "name": "msg_sender",
684
+ "type": {
685
+ "kind": "struct",
686
+ "path": "aztec::protocol_types::address::AztecAddress",
687
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
688
+ }
689
+ },
690
+ {
691
+ "name": "storage_contract_address",
692
+ "type": {
693
+ "kind": "struct",
694
+ "path": "aztec::protocol_types::address::AztecAddress",
695
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
696
+ }
697
+ },
698
+ {
699
+ "name": "portal_contract_address",
700
+ "type": {
701
+ "kind": "struct",
702
+ "path": "aztec::protocol_types::address::EthAddress",
703
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
704
+ }
705
+ },
706
+ {
707
+ "name": "function_selector",
708
+ "type": {
709
+ "kind": "struct",
710
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
711
+ "fields": [
712
+ { "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
713
+ ]
714
+ }
715
+ },
716
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
717
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
718
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
719
+ {
720
+ "name": "start_side_effect_counter",
721
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
722
+ }
723
+ ]
724
+ }
725
+ },
726
+ {
727
+ "name": "historical_header",
728
+ "type": {
729
+ "kind": "struct",
730
+ "path": "aztec::protocol_types::header::Header",
731
+ "fields": [
732
+ {
733
+ "name": "last_archive",
734
+ "type": {
735
+ "kind": "struct",
736
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
737
+ "fields": [
738
+ { "name": "root", "type": { "kind": "field" } },
739
+ {
740
+ "name": "next_available_leaf_index",
741
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
742
+ }
743
+ ]
744
+ }
745
+ },
746
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
747
+ {
748
+ "name": "state",
749
+ "type": {
750
+ "kind": "struct",
751
+ "path": "aztec::protocol_types::state_reference::StateReference",
752
+ "fields": [
753
+ {
754
+ "name": "l1_to_l2_message_tree",
755
+ "type": {
756
+ "kind": "struct",
757
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
758
+ "fields": [
759
+ { "name": "root", "type": { "kind": "field" } },
760
+ {
761
+ "name": "next_available_leaf_index",
762
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
763
+ }
764
+ ]
765
+ }
766
+ },
767
+ {
768
+ "name": "partial",
769
+ "type": {
770
+ "kind": "struct",
771
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
772
+ "fields": [
773
+ {
774
+ "name": "note_hash_tree",
775
+ "type": {
776
+ "kind": "struct",
777
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
778
+ "fields": [
779
+ { "name": "root", "type": { "kind": "field" } },
780
+ {
781
+ "name": "next_available_leaf_index",
782
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
783
+ }
784
+ ]
785
+ }
786
+ },
787
+ {
788
+ "name": "nullifier_tree",
789
+ "type": {
790
+ "kind": "struct",
791
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
792
+ "fields": [
793
+ { "name": "root", "type": { "kind": "field" } },
794
+ {
795
+ "name": "next_available_leaf_index",
796
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
797
+ }
798
+ ]
799
+ }
800
+ },
801
+ {
802
+ "name": "contract_tree",
803
+ "type": {
804
+ "kind": "struct",
805
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
806
+ "fields": [
807
+ { "name": "root", "type": { "kind": "field" } },
808
+ {
809
+ "name": "next_available_leaf_index",
810
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
811
+ }
812
+ ]
813
+ }
814
+ },
815
+ {
816
+ "name": "public_data_tree",
817
+ "type": {
818
+ "kind": "struct",
819
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
820
+ "fields": [
821
+ { "name": "root", "type": { "kind": "field" } },
822
+ {
823
+ "name": "next_available_leaf_index",
824
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
825
+ }
826
+ ]
827
+ }
828
+ }
829
+ ]
830
+ }
831
+ }
832
+ ]
833
+ }
834
+ },
835
+ {
836
+ "name": "global_variables",
837
+ "type": {
838
+ "kind": "struct",
839
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
840
+ "fields": [
841
+ { "name": "chain_id", "type": { "kind": "field" } },
842
+ { "name": "version", "type": { "kind": "field" } },
843
+ { "name": "block_number", "type": { "kind": "field" } },
844
+ { "name": "timestamp", "type": { "kind": "field" } },
845
+ {
846
+ "name": "coinbase",
847
+ "type": {
848
+ "kind": "struct",
849
+ "path": "aztec::protocol_types::address::EthAddress",
850
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
851
+ }
852
+ },
853
+ {
854
+ "name": "fee_recipient",
855
+ "type": {
856
+ "kind": "struct",
857
+ "path": "aztec::protocol_types::address::AztecAddress",
858
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
859
+ }
860
+ }
861
+ ]
862
+ }
863
+ }
864
+ ]
865
+ }
866
+ },
867
+ {
868
+ "name": "contract_deployment_data",
869
+ "type": {
870
+ "kind": "struct",
871
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
872
+ "fields": [
873
+ {
874
+ "name": "public_key",
875
+ "type": {
876
+ "kind": "struct",
877
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
878
+ "fields": [
879
+ { "name": "x", "type": { "kind": "field" } },
880
+ { "name": "y", "type": { "kind": "field" } }
881
+ ]
882
+ }
883
+ },
884
+ { "name": "initialization_hash", "type": { "kind": "field" } },
885
+ {
886
+ "name": "contract_class_id",
887
+ "type": {
888
+ "kind": "struct",
889
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
890
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
891
+ }
892
+ },
893
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
894
+ {
895
+ "name": "portal_contract_address",
896
+ "type": {
897
+ "kind": "struct",
898
+ "path": "aztec::protocol_types::address::EthAddress",
899
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
900
+ }
901
+ }
902
+ ]
903
+ }
904
+ },
905
+ {
906
+ "name": "private_global_variables",
907
+ "type": {
908
+ "kind": "struct",
909
+ "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
910
+ "fields": [
911
+ { "name": "chain_id", "type": { "kind": "field" } },
912
+ { "name": "version", "type": { "kind": "field" } }
913
+ ]
914
+ }
915
+ }
916
+ ]
917
+ },
918
+ "visibility": "private"
919
+ },
920
+ { "name": "artifact_hash", "type": { "kind": "field" }, "visibility": "private" },
921
+ { "name": "private_functions_root", "type": { "kind": "field" }, "visibility": "private" },
922
+ { "name": "public_bytecode_commitment", "type": { "kind": "field" }, "visibility": "private" },
923
+ {
924
+ "name": "packed_public_bytecode",
925
+ "type": { "kind": "array", "length": 1000, "type": { "kind": "field" } },
926
+ "visibility": "private"
927
+ }
928
+ ],
929
+ "param_witnesses": {
930
+ "artifact_hash": [{ "start": 36, "end": 37 }],
931
+ "inputs": [{ "start": 0, "end": 36 }],
932
+ "packed_public_bytecode": [{ "start": 39, "end": 1039 }],
933
+ "private_functions_root": [{ "start": 37, "end": 38 }],
934
+ "public_bytecode_commitment": [{ "start": 38, "end": 39 }]
935
+ },
936
+ "return_type": {
937
+ "abi_type": {
938
+ "kind": "struct",
939
+ "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
940
+ "fields": [
941
+ {
942
+ "name": "call_context",
943
+ "type": {
944
+ "kind": "struct",
945
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
946
+ "fields": [
947
+ {
948
+ "name": "msg_sender",
949
+ "type": {
950
+ "kind": "struct",
951
+ "path": "aztec::protocol_types::address::AztecAddress",
952
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
953
+ }
954
+ },
955
+ {
956
+ "name": "storage_contract_address",
957
+ "type": {
958
+ "kind": "struct",
959
+ "path": "aztec::protocol_types::address::AztecAddress",
960
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
961
+ }
962
+ },
963
+ {
964
+ "name": "portal_contract_address",
965
+ "type": {
966
+ "kind": "struct",
967
+ "path": "aztec::protocol_types::address::EthAddress",
968
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
969
+ }
970
+ },
971
+ {
972
+ "name": "function_selector",
973
+ "type": {
974
+ "kind": "struct",
975
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
976
+ "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
977
+ }
978
+ },
979
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
980
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
981
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
982
+ {
983
+ "name": "start_side_effect_counter",
984
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
985
+ }
986
+ ]
987
+ }
988
+ },
989
+ { "name": "args_hash", "type": { "kind": "field" } },
990
+ { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
991
+ {
992
+ "name": "max_non_revertible_side_effect_counter",
993
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
994
+ },
995
+ {
996
+ "name": "read_requests",
997
+ "type": {
998
+ "kind": "array",
999
+ "length": 32,
1000
+ "type": {
1001
+ "kind": "struct",
1002
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
1003
+ "fields": [
1004
+ { "name": "value", "type": { "kind": "field" } },
1005
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1006
+ ]
1007
+ }
1008
+ }
1009
+ },
1010
+ {
1011
+ "name": "nullifier_key_validation_requests",
1012
+ "type": {
1013
+ "kind": "array",
1014
+ "length": 1,
1015
+ "type": {
1016
+ "kind": "struct",
1017
+ "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
1018
+ "fields": [
1019
+ {
1020
+ "name": "public_key",
1021
+ "type": {
1022
+ "kind": "struct",
1023
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1024
+ "fields": [
1025
+ { "name": "x", "type": { "kind": "field" } },
1026
+ { "name": "y", "type": { "kind": "field" } }
1027
+ ]
1028
+ }
1029
+ },
1030
+ {
1031
+ "name": "secret_key",
1032
+ "type": {
1033
+ "kind": "struct",
1034
+ "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
1035
+ "fields": [
1036
+ { "name": "high", "type": { "kind": "field" } },
1037
+ { "name": "low", "type": { "kind": "field" } }
1038
+ ]
1039
+ }
1040
+ }
1041
+ ]
1042
+ }
1043
+ }
1044
+ },
1045
+ {
1046
+ "name": "new_commitments",
1047
+ "type": {
1048
+ "kind": "array",
1049
+ "length": 16,
1050
+ "type": {
1051
+ "kind": "struct",
1052
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
1053
+ "fields": [
1054
+ { "name": "value", "type": { "kind": "field" } },
1055
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1056
+ ]
1057
+ }
1058
+ }
1059
+ },
1060
+ {
1061
+ "name": "new_nullifiers",
1062
+ "type": {
1063
+ "kind": "array",
1064
+ "length": 16,
1065
+ "type": {
1066
+ "kind": "struct",
1067
+ "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
1068
+ "fields": [
1069
+ { "name": "value", "type": { "kind": "field" } },
1070
+ { "name": "note_hash", "type": { "kind": "field" } },
1071
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1072
+ ]
1073
+ }
1074
+ }
1075
+ },
1076
+ {
1077
+ "name": "private_call_stack_hashes",
1078
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
1079
+ },
1080
+ {
1081
+ "name": "public_call_stack_hashes",
1082
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
1083
+ },
1084
+ { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1085
+ { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
1086
+ { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1087
+ {
1088
+ "name": "unencrypted_logs_hash",
1089
+ "type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
1090
+ },
1091
+ { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
1092
+ { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
1093
+ {
1094
+ "name": "historical_header",
1095
+ "type": {
1096
+ "kind": "struct",
1097
+ "path": "aztec::protocol_types::header::Header",
1098
+ "fields": [
1099
+ {
1100
+ "name": "last_archive",
1101
+ "type": {
1102
+ "kind": "struct",
1103
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1104
+ "fields": [
1105
+ { "name": "root", "type": { "kind": "field" } },
1106
+ {
1107
+ "name": "next_available_leaf_index",
1108
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1109
+ }
1110
+ ]
1111
+ }
1112
+ },
1113
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1114
+ {
1115
+ "name": "state",
1116
+ "type": {
1117
+ "kind": "struct",
1118
+ "path": "aztec::protocol_types::state_reference::StateReference",
1119
+ "fields": [
1120
+ {
1121
+ "name": "l1_to_l2_message_tree",
1122
+ "type": {
1123
+ "kind": "struct",
1124
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1125
+ "fields": [
1126
+ { "name": "root", "type": { "kind": "field" } },
1127
+ {
1128
+ "name": "next_available_leaf_index",
1129
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1130
+ }
1131
+ ]
1132
+ }
1133
+ },
1134
+ {
1135
+ "name": "partial",
1136
+ "type": {
1137
+ "kind": "struct",
1138
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
1139
+ "fields": [
1140
+ {
1141
+ "name": "note_hash_tree",
1142
+ "type": {
1143
+ "kind": "struct",
1144
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1145
+ "fields": [
1146
+ { "name": "root", "type": { "kind": "field" } },
1147
+ {
1148
+ "name": "next_available_leaf_index",
1149
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1150
+ }
1151
+ ]
1152
+ }
1153
+ },
1154
+ {
1155
+ "name": "nullifier_tree",
1156
+ "type": {
1157
+ "kind": "struct",
1158
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1159
+ "fields": [
1160
+ { "name": "root", "type": { "kind": "field" } },
1161
+ {
1162
+ "name": "next_available_leaf_index",
1163
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1164
+ }
1165
+ ]
1166
+ }
1167
+ },
1168
+ {
1169
+ "name": "contract_tree",
1170
+ "type": {
1171
+ "kind": "struct",
1172
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1173
+ "fields": [
1174
+ { "name": "root", "type": { "kind": "field" } },
1175
+ {
1176
+ "name": "next_available_leaf_index",
1177
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1178
+ }
1179
+ ]
1180
+ }
1181
+ },
1182
+ {
1183
+ "name": "public_data_tree",
1184
+ "type": {
1185
+ "kind": "struct",
1186
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1187
+ "fields": [
1188
+ { "name": "root", "type": { "kind": "field" } },
1189
+ {
1190
+ "name": "next_available_leaf_index",
1191
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1192
+ }
1193
+ ]
1194
+ }
1195
+ }
1196
+ ]
1197
+ }
1198
+ }
1199
+ ]
1200
+ }
1201
+ },
1202
+ {
1203
+ "name": "global_variables",
1204
+ "type": {
1205
+ "kind": "struct",
1206
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
1207
+ "fields": [
1208
+ { "name": "chain_id", "type": { "kind": "field" } },
1209
+ { "name": "version", "type": { "kind": "field" } },
1210
+ { "name": "block_number", "type": { "kind": "field" } },
1211
+ { "name": "timestamp", "type": { "kind": "field" } },
1212
+ {
1213
+ "name": "coinbase",
1214
+ "type": {
1215
+ "kind": "struct",
1216
+ "path": "aztec::protocol_types::address::EthAddress",
1217
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1218
+ }
1219
+ },
1220
+ {
1221
+ "name": "fee_recipient",
1222
+ "type": {
1223
+ "kind": "struct",
1224
+ "path": "aztec::protocol_types::address::AztecAddress",
1225
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1226
+ }
1227
+ }
1228
+ ]
1229
+ }
1230
+ }
1231
+ ]
1232
+ }
1233
+ },
1234
+ {
1235
+ "name": "contract_deployment_data",
1236
+ "type": {
1237
+ "kind": "struct",
1238
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1239
+ "fields": [
1240
+ {
1241
+ "name": "public_key",
1242
+ "type": {
1243
+ "kind": "struct",
1244
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1245
+ "fields": [
1246
+ { "name": "x", "type": { "kind": "field" } },
1247
+ { "name": "y", "type": { "kind": "field" } }
1248
+ ]
1249
+ }
1250
+ },
1251
+ { "name": "initialization_hash", "type": { "kind": "field" } },
1252
+ {
1253
+ "name": "contract_class_id",
1254
+ "type": {
1255
+ "kind": "struct",
1256
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
1257
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1258
+ }
1259
+ },
1260
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
1261
+ {
1262
+ "name": "portal_contract_address",
1263
+ "type": {
1264
+ "kind": "struct",
1265
+ "path": "aztec::protocol_types::address::EthAddress",
1266
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1267
+ }
1268
+ }
1269
+ ]
1270
+ }
1271
+ },
1272
+ { "name": "chain_id", "type": { "kind": "field" } },
1273
+ { "name": "version", "type": { "kind": "field" } }
1274
+ ]
1275
+ },
1276
+ "visibility": "public"
1277
+ },
1278
+ "return_witnesses": [
1279
+ 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
1280
+ 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
1281
+ 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
1282
+ 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148,
1283
+ 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
1284
+ 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
1285
+ 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
1286
+ 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220,
1287
+ 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238,
1288
+ 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
1289
+ 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
1290
+ 1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283
1291
+ ]
1292
+ },
1293
+ "bytecode": "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",
1294
+ "debug_symbols": "1ZndasJAEIXfZa+D7PwkO5tXKb1IWwuCqGgoFPHdG3+yGrolsKWFc6UL5+ycccd8ITm69fa161fbzcG1R0fk2qejO+y6zXl56Lt971pfueXmbfg8Ve59tV66liycqm86quNNSUZJGygjZTa5aVn0YWOqcxuTNPW4NSnHif65csSguQU0t4LmrkFzN6C5A2huA80dMXOzB80NyksG5SWD8pJBecmgvGRQXjIoLxmUlwzKSwHlpYDyUkB5KaC8FFBeCigvBZSXAspLAeWlgPJSQXmpoLxUUF4qKC/133ipFMbcGsKvc2d5SaLJpcYz6ZsktvDQaWguBbJgo1D71LGPMwWMdOzZBudd7f2lRPj7EllcUOSxc/ZcT0qcTdlrNXu5m2KYnQwZx5Qa3yS16jXWIn9DT2ypeX4YqRhHG5fZpMymZbb8cNr93xLJks3ST9LM2lgytlBmszJbLLDFRf654cyUDDYps/1wbt7SuQWbnNuw+Oj2q+5lvTy/zxyW/efu+vX0BQ=="
1295
+ },
1296
+ {
1297
+ "name": "constructor",
1298
+ "function_type": "Secret",
1299
+ "is_internal": false,
1300
+ "abi": {
1301
+ "parameters": [
1302
+ {
1303
+ "name": "inputs",
1304
+ "type": {
1305
+ "kind": "struct",
1306
+ "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
1307
+ "fields": [
1308
+ {
1309
+ "name": "call_context",
1310
+ "type": {
1311
+ "kind": "struct",
1312
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
1313
+ "fields": [
1314
+ {
1315
+ "name": "msg_sender",
1316
+ "type": {
1317
+ "kind": "struct",
1318
+ "path": "aztec::protocol_types::address::AztecAddress",
1319
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1320
+ }
1321
+ },
1322
+ {
1323
+ "name": "storage_contract_address",
1324
+ "type": {
1325
+ "kind": "struct",
1326
+ "path": "aztec::protocol_types::address::AztecAddress",
1327
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1328
+ }
1329
+ },
1330
+ {
1331
+ "name": "portal_contract_address",
1332
+ "type": {
1333
+ "kind": "struct",
1334
+ "path": "aztec::protocol_types::address::EthAddress",
1335
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1336
+ }
1337
+ },
1338
+ {
1339
+ "name": "function_selector",
1340
+ "type": {
1341
+ "kind": "struct",
1342
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
1343
+ "fields": [
1344
+ { "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1345
+ ]
1346
+ }
1347
+ },
1348
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
1349
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
1350
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
1351
+ {
1352
+ "name": "start_side_effect_counter",
1353
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1354
+ }
1355
+ ]
1356
+ }
1357
+ },
1358
+ {
1359
+ "name": "historical_header",
1360
+ "type": {
1361
+ "kind": "struct",
1362
+ "path": "aztec::protocol_types::header::Header",
1363
+ "fields": [
1364
+ {
1365
+ "name": "last_archive",
1366
+ "type": {
1367
+ "kind": "struct",
1368
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1369
+ "fields": [
1370
+ { "name": "root", "type": { "kind": "field" } },
1371
+ {
1372
+ "name": "next_available_leaf_index",
1373
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1374
+ }
1375
+ ]
1376
+ }
1377
+ },
1378
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1379
+ {
1380
+ "name": "state",
1381
+ "type": {
1382
+ "kind": "struct",
1383
+ "path": "aztec::protocol_types::state_reference::StateReference",
1384
+ "fields": [
1385
+ {
1386
+ "name": "l1_to_l2_message_tree",
1387
+ "type": {
1388
+ "kind": "struct",
1389
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1390
+ "fields": [
1391
+ { "name": "root", "type": { "kind": "field" } },
1392
+ {
1393
+ "name": "next_available_leaf_index",
1394
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1395
+ }
1396
+ ]
1397
+ }
1398
+ },
1399
+ {
1400
+ "name": "partial",
1401
+ "type": {
1402
+ "kind": "struct",
1403
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
1404
+ "fields": [
1405
+ {
1406
+ "name": "note_hash_tree",
1407
+ "type": {
1408
+ "kind": "struct",
1409
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1410
+ "fields": [
1411
+ { "name": "root", "type": { "kind": "field" } },
1412
+ {
1413
+ "name": "next_available_leaf_index",
1414
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1415
+ }
1416
+ ]
1417
+ }
1418
+ },
1419
+ {
1420
+ "name": "nullifier_tree",
1421
+ "type": {
1422
+ "kind": "struct",
1423
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1424
+ "fields": [
1425
+ { "name": "root", "type": { "kind": "field" } },
1426
+ {
1427
+ "name": "next_available_leaf_index",
1428
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1429
+ }
1430
+ ]
1431
+ }
1432
+ },
1433
+ {
1434
+ "name": "contract_tree",
1435
+ "type": {
1436
+ "kind": "struct",
1437
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1438
+ "fields": [
1439
+ { "name": "root", "type": { "kind": "field" } },
1440
+ {
1441
+ "name": "next_available_leaf_index",
1442
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1443
+ }
1444
+ ]
1445
+ }
1446
+ },
1447
+ {
1448
+ "name": "public_data_tree",
1449
+ "type": {
1450
+ "kind": "struct",
1451
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1452
+ "fields": [
1453
+ { "name": "root", "type": { "kind": "field" } },
1454
+ {
1455
+ "name": "next_available_leaf_index",
1456
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1457
+ }
1458
+ ]
1459
+ }
1460
+ }
1461
+ ]
1462
+ }
1463
+ }
1464
+ ]
1465
+ }
1466
+ },
1467
+ {
1468
+ "name": "global_variables",
1469
+ "type": {
1470
+ "kind": "struct",
1471
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
1472
+ "fields": [
1473
+ { "name": "chain_id", "type": { "kind": "field" } },
1474
+ { "name": "version", "type": { "kind": "field" } },
1475
+ { "name": "block_number", "type": { "kind": "field" } },
1476
+ { "name": "timestamp", "type": { "kind": "field" } },
1477
+ {
1478
+ "name": "coinbase",
1479
+ "type": {
1480
+ "kind": "struct",
1481
+ "path": "aztec::protocol_types::address::EthAddress",
1482
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1483
+ }
1484
+ },
1485
+ {
1486
+ "name": "fee_recipient",
1487
+ "type": {
1488
+ "kind": "struct",
1489
+ "path": "aztec::protocol_types::address::AztecAddress",
1490
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1491
+ }
1492
+ }
1493
+ ]
1494
+ }
1495
+ }
1496
+ ]
1497
+ }
1498
+ },
1499
+ {
1500
+ "name": "contract_deployment_data",
1501
+ "type": {
1502
+ "kind": "struct",
1503
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1504
+ "fields": [
1505
+ {
1506
+ "name": "public_key",
1507
+ "type": {
1508
+ "kind": "struct",
1509
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1510
+ "fields": [
1511
+ { "name": "x", "type": { "kind": "field" } },
1512
+ { "name": "y", "type": { "kind": "field" } }
1513
+ ]
1514
+ }
1515
+ },
1516
+ { "name": "initialization_hash", "type": { "kind": "field" } },
1517
+ {
1518
+ "name": "contract_class_id",
1519
+ "type": {
1520
+ "kind": "struct",
1521
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
1522
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1523
+ }
1524
+ },
1525
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
1526
+ {
1527
+ "name": "portal_contract_address",
1528
+ "type": {
1529
+ "kind": "struct",
1530
+ "path": "aztec::protocol_types::address::EthAddress",
1531
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1532
+ }
1533
+ }
1534
+ ]
1535
+ }
1536
+ },
1537
+ {
1538
+ "name": "private_global_variables",
1539
+ "type": {
1540
+ "kind": "struct",
1541
+ "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
1542
+ "fields": [
1543
+ { "name": "chain_id", "type": { "kind": "field" } },
1544
+ { "name": "version", "type": { "kind": "field" } }
1545
+ ]
1546
+ }
1547
+ }
1548
+ ]
1549
+ },
1550
+ "visibility": "private"
1551
+ }
1552
+ ],
1553
+ "param_witnesses": { "inputs": [{ "start": 0, "end": 36 }] },
1554
+ "return_type": {
1555
+ "abi_type": {
1556
+ "kind": "struct",
1557
+ "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
1558
+ "fields": [
1559
+ {
1560
+ "name": "call_context",
1561
+ "type": {
1562
+ "kind": "struct",
1563
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
1564
+ "fields": [
1565
+ {
1566
+ "name": "msg_sender",
1567
+ "type": {
1568
+ "kind": "struct",
1569
+ "path": "aztec::protocol_types::address::AztecAddress",
1570
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1571
+ }
1572
+ },
1573
+ {
1574
+ "name": "storage_contract_address",
1575
+ "type": {
1576
+ "kind": "struct",
1577
+ "path": "aztec::protocol_types::address::AztecAddress",
1578
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1579
+ }
1580
+ },
1581
+ {
1582
+ "name": "portal_contract_address",
1583
+ "type": {
1584
+ "kind": "struct",
1585
+ "path": "aztec::protocol_types::address::EthAddress",
1586
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1587
+ }
1588
+ },
1589
+ {
1590
+ "name": "function_selector",
1591
+ "type": {
1592
+ "kind": "struct",
1593
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
1594
+ "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
1595
+ }
1596
+ },
1597
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
1598
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
1599
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
1600
+ {
1601
+ "name": "start_side_effect_counter",
1602
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1603
+ }
1604
+ ]
1605
+ }
1606
+ },
1607
+ { "name": "args_hash", "type": { "kind": "field" } },
1608
+ { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
1609
+ {
1610
+ "name": "max_non_revertible_side_effect_counter",
1611
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1612
+ },
1613
+ {
1614
+ "name": "read_requests",
1615
+ "type": {
1616
+ "kind": "array",
1617
+ "length": 32,
1618
+ "type": {
1619
+ "kind": "struct",
1620
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
1621
+ "fields": [
1622
+ { "name": "value", "type": { "kind": "field" } },
1623
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1624
+ ]
1625
+ }
1626
+ }
1627
+ },
1628
+ {
1629
+ "name": "nullifier_key_validation_requests",
1630
+ "type": {
1631
+ "kind": "array",
1632
+ "length": 1,
1633
+ "type": {
1634
+ "kind": "struct",
1635
+ "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
1636
+ "fields": [
1637
+ {
1638
+ "name": "public_key",
1639
+ "type": {
1640
+ "kind": "struct",
1641
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1642
+ "fields": [
1643
+ { "name": "x", "type": { "kind": "field" } },
1644
+ { "name": "y", "type": { "kind": "field" } }
1645
+ ]
1646
+ }
1647
+ },
1648
+ {
1649
+ "name": "secret_key",
1650
+ "type": {
1651
+ "kind": "struct",
1652
+ "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
1653
+ "fields": [
1654
+ { "name": "high", "type": { "kind": "field" } },
1655
+ { "name": "low", "type": { "kind": "field" } }
1656
+ ]
1657
+ }
1658
+ }
1659
+ ]
1660
+ }
1661
+ }
1662
+ },
1663
+ {
1664
+ "name": "new_commitments",
1665
+ "type": {
1666
+ "kind": "array",
1667
+ "length": 16,
1668
+ "type": {
1669
+ "kind": "struct",
1670
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
1671
+ "fields": [
1672
+ { "name": "value", "type": { "kind": "field" } },
1673
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1674
+ ]
1675
+ }
1676
+ }
1677
+ },
1678
+ {
1679
+ "name": "new_nullifiers",
1680
+ "type": {
1681
+ "kind": "array",
1682
+ "length": 16,
1683
+ "type": {
1684
+ "kind": "struct",
1685
+ "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
1686
+ "fields": [
1687
+ { "name": "value", "type": { "kind": "field" } },
1688
+ { "name": "note_hash", "type": { "kind": "field" } },
1689
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1690
+ ]
1691
+ }
1692
+ }
1693
+ },
1694
+ {
1695
+ "name": "private_call_stack_hashes",
1696
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
1697
+ },
1698
+ {
1699
+ "name": "public_call_stack_hashes",
1700
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
1701
+ },
1702
+ { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1703
+ { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
1704
+ { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1705
+ {
1706
+ "name": "unencrypted_logs_hash",
1707
+ "type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
1708
+ },
1709
+ { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
1710
+ { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
1711
+ {
1712
+ "name": "historical_header",
1713
+ "type": {
1714
+ "kind": "struct",
1715
+ "path": "aztec::protocol_types::header::Header",
1716
+ "fields": [
1717
+ {
1718
+ "name": "last_archive",
1719
+ "type": {
1720
+ "kind": "struct",
1721
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1722
+ "fields": [
1723
+ { "name": "root", "type": { "kind": "field" } },
1724
+ {
1725
+ "name": "next_available_leaf_index",
1726
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1727
+ }
1728
+ ]
1729
+ }
1730
+ },
1731
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1732
+ {
1733
+ "name": "state",
1734
+ "type": {
1735
+ "kind": "struct",
1736
+ "path": "aztec::protocol_types::state_reference::StateReference",
1737
+ "fields": [
1738
+ {
1739
+ "name": "l1_to_l2_message_tree",
1740
+ "type": {
1741
+ "kind": "struct",
1742
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1743
+ "fields": [
1744
+ { "name": "root", "type": { "kind": "field" } },
1745
+ {
1746
+ "name": "next_available_leaf_index",
1747
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1748
+ }
1749
+ ]
1750
+ }
1751
+ },
1752
+ {
1753
+ "name": "partial",
1754
+ "type": {
1755
+ "kind": "struct",
1756
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
1757
+ "fields": [
1758
+ {
1759
+ "name": "note_hash_tree",
1760
+ "type": {
1761
+ "kind": "struct",
1762
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1763
+ "fields": [
1764
+ { "name": "root", "type": { "kind": "field" } },
1765
+ {
1766
+ "name": "next_available_leaf_index",
1767
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1768
+ }
1769
+ ]
1770
+ }
1771
+ },
1772
+ {
1773
+ "name": "nullifier_tree",
1774
+ "type": {
1775
+ "kind": "struct",
1776
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1777
+ "fields": [
1778
+ { "name": "root", "type": { "kind": "field" } },
1779
+ {
1780
+ "name": "next_available_leaf_index",
1781
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1782
+ }
1783
+ ]
1784
+ }
1785
+ },
1786
+ {
1787
+ "name": "contract_tree",
1788
+ "type": {
1789
+ "kind": "struct",
1790
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1791
+ "fields": [
1792
+ { "name": "root", "type": { "kind": "field" } },
1793
+ {
1794
+ "name": "next_available_leaf_index",
1795
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1796
+ }
1797
+ ]
1798
+ }
1799
+ },
1800
+ {
1801
+ "name": "public_data_tree",
1802
+ "type": {
1803
+ "kind": "struct",
1804
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1805
+ "fields": [
1806
+ { "name": "root", "type": { "kind": "field" } },
1807
+ {
1808
+ "name": "next_available_leaf_index",
1809
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1810
+ }
1811
+ ]
1812
+ }
1813
+ }
1814
+ ]
1815
+ }
1816
+ }
1817
+ ]
1818
+ }
1819
+ },
1820
+ {
1821
+ "name": "global_variables",
1822
+ "type": {
1823
+ "kind": "struct",
1824
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
1825
+ "fields": [
1826
+ { "name": "chain_id", "type": { "kind": "field" } },
1827
+ { "name": "version", "type": { "kind": "field" } },
1828
+ { "name": "block_number", "type": { "kind": "field" } },
1829
+ { "name": "timestamp", "type": { "kind": "field" } },
1830
+ {
1831
+ "name": "coinbase",
1832
+ "type": {
1833
+ "kind": "struct",
1834
+ "path": "aztec::protocol_types::address::EthAddress",
1835
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1836
+ }
1837
+ },
1838
+ {
1839
+ "name": "fee_recipient",
1840
+ "type": {
1841
+ "kind": "struct",
1842
+ "path": "aztec::protocol_types::address::AztecAddress",
1843
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1844
+ }
1845
+ }
1846
+ ]
1847
+ }
1848
+ }
1849
+ ]
1850
+ }
1851
+ },
1852
+ {
1853
+ "name": "contract_deployment_data",
1854
+ "type": {
1855
+ "kind": "struct",
1856
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1857
+ "fields": [
1858
+ {
1859
+ "name": "public_key",
1860
+ "type": {
1861
+ "kind": "struct",
1862
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1863
+ "fields": [
1864
+ { "name": "x", "type": { "kind": "field" } },
1865
+ { "name": "y", "type": { "kind": "field" } }
1866
+ ]
1867
+ }
1868
+ },
1869
+ { "name": "initialization_hash", "type": { "kind": "field" } },
1870
+ {
1871
+ "name": "contract_class_id",
1872
+ "type": {
1873
+ "kind": "struct",
1874
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
1875
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1876
+ }
1877
+ },
1878
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
1879
+ {
1880
+ "name": "portal_contract_address",
1881
+ "type": {
1882
+ "kind": "struct",
1883
+ "path": "aztec::protocol_types::address::EthAddress",
1884
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1885
+ }
1886
+ }
1887
+ ]
1888
+ }
1889
+ },
1890
+ { "name": "chain_id", "type": { "kind": "field" } },
1891
+ { "name": "version", "type": { "kind": "field" } }
1892
+ ]
1893
+ },
1894
+ "visibility": "public"
1895
+ },
1896
+ "return_witnesses": [
1897
+ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
1898
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
1899
+ 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1900
+ 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
1901
+ 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
1902
+ 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
1903
+ 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
1904
+ 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
1905
+ 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243
1906
+ ]
1907
+ },
1908
+ "bytecode": "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",
1909
+ "debug_symbols": "q1bKyU9OLMnMzytWsqqu1VEqSyzKTEzKSYVySyoLIMxaAA=="
1910
+ },
1911
+ {
1912
+ "name": "broadcast_private_function",
1913
+ "function_type": "Secret",
1914
+ "is_internal": false,
1915
+ "abi": {
1916
+ "parameters": [
1917
+ {
1918
+ "name": "inputs",
1919
+ "type": {
1920
+ "kind": "struct",
1921
+ "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
1922
+ "fields": [
1923
+ {
1924
+ "name": "call_context",
1925
+ "type": {
1926
+ "kind": "struct",
1927
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
1928
+ "fields": [
1929
+ {
1930
+ "name": "msg_sender",
1931
+ "type": {
1932
+ "kind": "struct",
1933
+ "path": "aztec::protocol_types::address::AztecAddress",
1934
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1935
+ }
1936
+ },
1937
+ {
1938
+ "name": "storage_contract_address",
1939
+ "type": {
1940
+ "kind": "struct",
1941
+ "path": "aztec::protocol_types::address::AztecAddress",
1942
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1943
+ }
1944
+ },
1945
+ {
1946
+ "name": "portal_contract_address",
1947
+ "type": {
1948
+ "kind": "struct",
1949
+ "path": "aztec::protocol_types::address::EthAddress",
1950
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1951
+ }
1952
+ },
1953
+ {
1954
+ "name": "function_selector",
1955
+ "type": {
1956
+ "kind": "struct",
1957
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
1958
+ "fields": [
1959
+ { "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1960
+ ]
1961
+ }
1962
+ },
1963
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
1964
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
1965
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
1966
+ {
1967
+ "name": "start_side_effect_counter",
1968
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1969
+ }
1970
+ ]
1971
+ }
1972
+ },
1973
+ {
1974
+ "name": "historical_header",
1975
+ "type": {
1976
+ "kind": "struct",
1977
+ "path": "aztec::protocol_types::header::Header",
1978
+ "fields": [
1979
+ {
1980
+ "name": "last_archive",
1981
+ "type": {
1982
+ "kind": "struct",
1983
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1984
+ "fields": [
1985
+ { "name": "root", "type": { "kind": "field" } },
1986
+ {
1987
+ "name": "next_available_leaf_index",
1988
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1989
+ }
1990
+ ]
1991
+ }
1992
+ },
1993
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1994
+ {
1995
+ "name": "state",
1996
+ "type": {
1997
+ "kind": "struct",
1998
+ "path": "aztec::protocol_types::state_reference::StateReference",
1999
+ "fields": [
2000
+ {
2001
+ "name": "l1_to_l2_message_tree",
2002
+ "type": {
2003
+ "kind": "struct",
2004
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2005
+ "fields": [
2006
+ { "name": "root", "type": { "kind": "field" } },
2007
+ {
2008
+ "name": "next_available_leaf_index",
2009
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2010
+ }
2011
+ ]
2012
+ }
2013
+ },
2014
+ {
2015
+ "name": "partial",
2016
+ "type": {
2017
+ "kind": "struct",
2018
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
2019
+ "fields": [
2020
+ {
2021
+ "name": "note_hash_tree",
2022
+ "type": {
2023
+ "kind": "struct",
2024
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2025
+ "fields": [
2026
+ { "name": "root", "type": { "kind": "field" } },
2027
+ {
2028
+ "name": "next_available_leaf_index",
2029
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2030
+ }
2031
+ ]
2032
+ }
2033
+ },
2034
+ {
2035
+ "name": "nullifier_tree",
2036
+ "type": {
2037
+ "kind": "struct",
2038
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2039
+ "fields": [
2040
+ { "name": "root", "type": { "kind": "field" } },
2041
+ {
2042
+ "name": "next_available_leaf_index",
2043
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2044
+ }
2045
+ ]
2046
+ }
2047
+ },
2048
+ {
2049
+ "name": "contract_tree",
2050
+ "type": {
2051
+ "kind": "struct",
2052
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2053
+ "fields": [
2054
+ { "name": "root", "type": { "kind": "field" } },
2055
+ {
2056
+ "name": "next_available_leaf_index",
2057
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2058
+ }
2059
+ ]
2060
+ }
2061
+ },
2062
+ {
2063
+ "name": "public_data_tree",
2064
+ "type": {
2065
+ "kind": "struct",
2066
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2067
+ "fields": [
2068
+ { "name": "root", "type": { "kind": "field" } },
2069
+ {
2070
+ "name": "next_available_leaf_index",
2071
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2072
+ }
2073
+ ]
2074
+ }
2075
+ }
2076
+ ]
2077
+ }
2078
+ }
2079
+ ]
2080
+ }
2081
+ },
2082
+ {
2083
+ "name": "global_variables",
2084
+ "type": {
2085
+ "kind": "struct",
2086
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
2087
+ "fields": [
2088
+ { "name": "chain_id", "type": { "kind": "field" } },
2089
+ { "name": "version", "type": { "kind": "field" } },
2090
+ { "name": "block_number", "type": { "kind": "field" } },
2091
+ { "name": "timestamp", "type": { "kind": "field" } },
2092
+ {
2093
+ "name": "coinbase",
2094
+ "type": {
2095
+ "kind": "struct",
2096
+ "path": "aztec::protocol_types::address::EthAddress",
2097
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2098
+ }
2099
+ },
2100
+ {
2101
+ "name": "fee_recipient",
2102
+ "type": {
2103
+ "kind": "struct",
2104
+ "path": "aztec::protocol_types::address::AztecAddress",
2105
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2106
+ }
2107
+ }
2108
+ ]
2109
+ }
2110
+ }
2111
+ ]
2112
+ }
2113
+ },
2114
+ {
2115
+ "name": "contract_deployment_data",
2116
+ "type": {
2117
+ "kind": "struct",
2118
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
2119
+ "fields": [
2120
+ {
2121
+ "name": "public_key",
2122
+ "type": {
2123
+ "kind": "struct",
2124
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
2125
+ "fields": [
2126
+ { "name": "x", "type": { "kind": "field" } },
2127
+ { "name": "y", "type": { "kind": "field" } }
2128
+ ]
2129
+ }
2130
+ },
2131
+ { "name": "initialization_hash", "type": { "kind": "field" } },
2132
+ {
2133
+ "name": "contract_class_id",
2134
+ "type": {
2135
+ "kind": "struct",
2136
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
2137
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2138
+ }
2139
+ },
2140
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
2141
+ {
2142
+ "name": "portal_contract_address",
2143
+ "type": {
2144
+ "kind": "struct",
2145
+ "path": "aztec::protocol_types::address::EthAddress",
2146
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2147
+ }
2148
+ }
2149
+ ]
2150
+ }
2151
+ },
2152
+ {
2153
+ "name": "private_global_variables",
2154
+ "type": {
2155
+ "kind": "struct",
2156
+ "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
2157
+ "fields": [
2158
+ { "name": "chain_id", "type": { "kind": "field" } },
2159
+ { "name": "version", "type": { "kind": "field" } }
2160
+ ]
2161
+ }
2162
+ }
2163
+ ]
2164
+ },
2165
+ "visibility": "private"
2166
+ },
2167
+ {
2168
+ "name": "contract_class_id",
2169
+ "type": {
2170
+ "kind": "struct",
2171
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
2172
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2173
+ },
2174
+ "visibility": "private"
2175
+ },
2176
+ { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" },
2177
+ {
2178
+ "name": "unconstrained_functions_artifact_tree_root",
2179
+ "type": { "kind": "field" },
2180
+ "visibility": "private"
2181
+ },
2182
+ {
2183
+ "name": "private_function_tree_sibling_path",
2184
+ "type": { "kind": "array", "length": 5, "type": { "kind": "field" } },
2185
+ "visibility": "private"
2186
+ },
2187
+ {
2188
+ "name": "artifact_function_tree_sibling_path",
2189
+ "type": { "kind": "array", "length": 5, "type": { "kind": "field" } },
2190
+ "visibility": "private"
2191
+ },
2192
+ {
2193
+ "name": "function_data",
2194
+ "type": {
2195
+ "kind": "struct",
2196
+ "path": "events::private_function_broadcasted::PrivateFunction",
2197
+ "fields": [
2198
+ {
2199
+ "name": "selector",
2200
+ "type": {
2201
+ "kind": "struct",
2202
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
2203
+ "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
2204
+ }
2205
+ },
2206
+ { "name": "metadata_hash", "type": { "kind": "field" } },
2207
+ { "name": "vk_hash", "type": { "kind": "field" } },
2208
+ { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }
2209
+ ]
2210
+ },
2211
+ "visibility": "private"
2212
+ }
2213
+ ],
2214
+ "param_witnesses": {
2215
+ "artifact_function_tree_sibling_path": [{ "start": 44, "end": 49 }],
2216
+ "artifact_metadata_hash": [{ "start": 37, "end": 38 }],
2217
+ "contract_class_id": [{ "start": 36, "end": 37 }],
2218
+ "function_data": [{ "start": 49, "end": 552 }],
2219
+ "inputs": [{ "start": 0, "end": 36 }],
2220
+ "private_function_tree_sibling_path": [{ "start": 39, "end": 44 }],
2221
+ "unconstrained_functions_artifact_tree_root": [{ "start": 38, "end": 39 }]
2222
+ },
2223
+ "return_type": {
2224
+ "abi_type": {
2225
+ "kind": "struct",
2226
+ "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
2227
+ "fields": [
2228
+ {
2229
+ "name": "call_context",
2230
+ "type": {
2231
+ "kind": "struct",
2232
+ "path": "aztec::protocol_types::abis::call_context::CallContext",
2233
+ "fields": [
2234
+ {
2235
+ "name": "msg_sender",
2236
+ "type": {
2237
+ "kind": "struct",
2238
+ "path": "aztec::protocol_types::address::AztecAddress",
2239
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2240
+ }
2241
+ },
2242
+ {
2243
+ "name": "storage_contract_address",
2244
+ "type": {
2245
+ "kind": "struct",
2246
+ "path": "aztec::protocol_types::address::AztecAddress",
2247
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2248
+ }
2249
+ },
2250
+ {
2251
+ "name": "portal_contract_address",
2252
+ "type": {
2253
+ "kind": "struct",
2254
+ "path": "aztec::protocol_types::address::EthAddress",
2255
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2256
+ }
2257
+ },
2258
+ {
2259
+ "name": "function_selector",
2260
+ "type": {
2261
+ "kind": "struct",
2262
+ "path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
2263
+ "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
2264
+ }
2265
+ },
2266
+ { "name": "is_delegate_call", "type": { "kind": "boolean" } },
2267
+ { "name": "is_static_call", "type": { "kind": "boolean" } },
2268
+ { "name": "is_contract_deployment", "type": { "kind": "boolean" } },
2269
+ {
2270
+ "name": "start_side_effect_counter",
2271
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2272
+ }
2273
+ ]
2274
+ }
2275
+ },
2276
+ { "name": "args_hash", "type": { "kind": "field" } },
2277
+ { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
2278
+ {
2279
+ "name": "max_non_revertible_side_effect_counter",
2280
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2281
+ },
2282
+ {
2283
+ "name": "read_requests",
2284
+ "type": {
2285
+ "kind": "array",
2286
+ "length": 32,
2287
+ "type": {
2288
+ "kind": "struct",
2289
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
2290
+ "fields": [
2291
+ { "name": "value", "type": { "kind": "field" } },
2292
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
2293
+ ]
2294
+ }
2295
+ }
2296
+ },
2297
+ {
2298
+ "name": "nullifier_key_validation_requests",
2299
+ "type": {
2300
+ "kind": "array",
2301
+ "length": 1,
2302
+ "type": {
2303
+ "kind": "struct",
2304
+ "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
2305
+ "fields": [
2306
+ {
2307
+ "name": "public_key",
2308
+ "type": {
2309
+ "kind": "struct",
2310
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
2311
+ "fields": [
2312
+ { "name": "x", "type": { "kind": "field" } },
2313
+ { "name": "y", "type": { "kind": "field" } }
2314
+ ]
2315
+ }
2316
+ },
2317
+ {
2318
+ "name": "secret_key",
2319
+ "type": {
2320
+ "kind": "struct",
2321
+ "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
2322
+ "fields": [
2323
+ { "name": "high", "type": { "kind": "field" } },
2324
+ { "name": "low", "type": { "kind": "field" } }
2325
+ ]
2326
+ }
2327
+ }
2328
+ ]
2329
+ }
2330
+ }
2331
+ },
2332
+ {
2333
+ "name": "new_commitments",
2334
+ "type": {
2335
+ "kind": "array",
2336
+ "length": 16,
2337
+ "type": {
2338
+ "kind": "struct",
2339
+ "path": "aztec::protocol_types::abis::side_effect::SideEffect",
2340
+ "fields": [
2341
+ { "name": "value", "type": { "kind": "field" } },
2342
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
2343
+ ]
2344
+ }
2345
+ }
2346
+ },
2347
+ {
2348
+ "name": "new_nullifiers",
2349
+ "type": {
2350
+ "kind": "array",
2351
+ "length": 16,
2352
+ "type": {
2353
+ "kind": "struct",
2354
+ "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
2355
+ "fields": [
2356
+ { "name": "value", "type": { "kind": "field" } },
2357
+ { "name": "note_hash", "type": { "kind": "field" } },
2358
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
2359
+ ]
2360
+ }
2361
+ }
2362
+ },
2363
+ {
2364
+ "name": "private_call_stack_hashes",
2365
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
2366
+ },
2367
+ {
2368
+ "name": "public_call_stack_hashes",
2369
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
2370
+ },
2371
+ { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
2372
+ { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
2373
+ { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
2374
+ {
2375
+ "name": "unencrypted_logs_hash",
2376
+ "type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
2377
+ },
2378
+ { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
2379
+ { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
2380
+ {
2381
+ "name": "historical_header",
2382
+ "type": {
2383
+ "kind": "struct",
2384
+ "path": "aztec::protocol_types::header::Header",
2385
+ "fields": [
2386
+ {
2387
+ "name": "last_archive",
2388
+ "type": {
2389
+ "kind": "struct",
2390
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2391
+ "fields": [
2392
+ { "name": "root", "type": { "kind": "field" } },
2393
+ {
2394
+ "name": "next_available_leaf_index",
2395
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2396
+ }
2397
+ ]
2398
+ }
2399
+ },
2400
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
2401
+ {
2402
+ "name": "state",
2403
+ "type": {
2404
+ "kind": "struct",
2405
+ "path": "aztec::protocol_types::state_reference::StateReference",
2406
+ "fields": [
2407
+ {
2408
+ "name": "l1_to_l2_message_tree",
2409
+ "type": {
2410
+ "kind": "struct",
2411
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2412
+ "fields": [
2413
+ { "name": "root", "type": { "kind": "field" } },
2414
+ {
2415
+ "name": "next_available_leaf_index",
2416
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2417
+ }
2418
+ ]
2419
+ }
2420
+ },
2421
+ {
2422
+ "name": "partial",
2423
+ "type": {
2424
+ "kind": "struct",
2425
+ "path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
2426
+ "fields": [
2427
+ {
2428
+ "name": "note_hash_tree",
2429
+ "type": {
2430
+ "kind": "struct",
2431
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2432
+ "fields": [
2433
+ { "name": "root", "type": { "kind": "field" } },
2434
+ {
2435
+ "name": "next_available_leaf_index",
2436
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2437
+ }
2438
+ ]
2439
+ }
2440
+ },
2441
+ {
2442
+ "name": "nullifier_tree",
2443
+ "type": {
2444
+ "kind": "struct",
2445
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2446
+ "fields": [
2447
+ { "name": "root", "type": { "kind": "field" } },
2448
+ {
2449
+ "name": "next_available_leaf_index",
2450
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2451
+ }
2452
+ ]
2453
+ }
2454
+ },
2455
+ {
2456
+ "name": "contract_tree",
2457
+ "type": {
2458
+ "kind": "struct",
2459
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2460
+ "fields": [
2461
+ { "name": "root", "type": { "kind": "field" } },
2462
+ {
2463
+ "name": "next_available_leaf_index",
2464
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2465
+ }
2466
+ ]
2467
+ }
2468
+ },
2469
+ {
2470
+ "name": "public_data_tree",
2471
+ "type": {
2472
+ "kind": "struct",
2473
+ "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2474
+ "fields": [
2475
+ { "name": "root", "type": { "kind": "field" } },
2476
+ {
2477
+ "name": "next_available_leaf_index",
2478
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2479
+ }
2480
+ ]
2481
+ }
2482
+ }
2483
+ ]
2484
+ }
2485
+ }
2486
+ ]
2487
+ }
2488
+ },
2489
+ {
2490
+ "name": "global_variables",
2491
+ "type": {
2492
+ "kind": "struct",
2493
+ "path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
2494
+ "fields": [
2495
+ { "name": "chain_id", "type": { "kind": "field" } },
2496
+ { "name": "version", "type": { "kind": "field" } },
2497
+ { "name": "block_number", "type": { "kind": "field" } },
2498
+ { "name": "timestamp", "type": { "kind": "field" } },
2499
+ {
2500
+ "name": "coinbase",
2501
+ "type": {
2502
+ "kind": "struct",
2503
+ "path": "aztec::protocol_types::address::EthAddress",
2504
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2505
+ }
2506
+ },
2507
+ {
2508
+ "name": "fee_recipient",
2509
+ "type": {
2510
+ "kind": "struct",
2511
+ "path": "aztec::protocol_types::address::AztecAddress",
2512
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2513
+ }
2514
+ }
2515
+ ]
2516
+ }
2517
+ }
2518
+ ]
2519
+ }
2520
+ },
2521
+ {
2522
+ "name": "contract_deployment_data",
2523
+ "type": {
2524
+ "kind": "struct",
2525
+ "path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
2526
+ "fields": [
2527
+ {
2528
+ "name": "public_key",
2529
+ "type": {
2530
+ "kind": "struct",
2531
+ "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
2532
+ "fields": [
2533
+ { "name": "x", "type": { "kind": "field" } },
2534
+ { "name": "y", "type": { "kind": "field" } }
2535
+ ]
2536
+ }
2537
+ },
2538
+ { "name": "initialization_hash", "type": { "kind": "field" } },
2539
+ {
2540
+ "name": "contract_class_id",
2541
+ "type": {
2542
+ "kind": "struct",
2543
+ "path": "aztec::protocol_types::contract_class::ContractClassId",
2544
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2545
+ }
2546
+ },
2547
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
2548
+ {
2549
+ "name": "portal_contract_address",
2550
+ "type": {
2551
+ "kind": "struct",
2552
+ "path": "aztec::protocol_types::address::EthAddress",
2553
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2554
+ }
2555
+ }
2556
+ ]
2557
+ }
2558
+ },
2559
+ { "name": "chain_id", "type": { "kind": "field" } },
2560
+ { "name": "version", "type": { "kind": "field" } }
2561
+ ]
2562
+ },
2563
+ "visibility": "public"
2564
+ },
2565
+ "return_witnesses": [
2566
+ 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
2567
+ 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
2568
+ 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
2569
+ 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
2570
+ 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682,
2571
+ 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
2572
+ 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
2573
+ 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
2574
+ 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770,
2575
+ 771, 772, 773, 774, 775, 776, 777, 778, 779
2576
+ ]
2577
+ },
2578
+ "bytecode": "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",
2579
+ "debug_symbols": "1ZjRaoQwEEX/Jc+yZO5EM/FXSh9suwVB3GWVQhH/vcqqW2lASGFhnkzgnvE6GbiSwTSX96qvL21nysEQTPkymO5atfO266tbb0qbmXP7MT3HzHzWzdmUJH7M/ugoD4uShDatp4gUEF60YPerMOWxwsRFvpYmh7DTv2aGWKlvp9R3rtR3odS3V+pblPoOOn3DKvVNSn0rzUsozUsozUsozUsozUsozUsozUsozUt+Wl468qtv5/2/fUfzEhKwUGzt3v0MRcOKLdkN8jj8ZF77T4UtNrVzd1snjk4CQdaXTMtHr0JYMGfTMErDkIZFU5PkMQaBZMNkbYlzhxg4guVpWJGG+QQMp/gP0MGUTBinYfFOwsp2bl525zZtvqpbXb015/mCY9r239f7cvwB"
2580
+ }
2581
+ ],
2582
+ "events": [],
2583
+ "file_map": {
2584
+ "44": {
2585
+ "source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n log\n );\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n\n// TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n// --> might be a better approach to force devs to make a public function call that emits the log if needed then\n// it would be less easy to accidentally leak information.\n// If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n",
2586
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/log.nr"
2587
+ },
2588
+ "71": {
2589
+ "source": "use dep::protocol_types::{hash::hash_args, traits::Hash};\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hash for Hasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl Hasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n",
2590
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hasher.nr"
2591
+ },
2592
+ "84": {
2593
+ "source": "// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle<T, N>(_msg: T, _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_format_oracle<T, N>(_msg: T, _args: [Field; N], _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_field_oracle(_field: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_array_oracle<T, N>(_arbitrary_array: [T; N]) -> Field {}\n#[oracle(debugLogWithPrefix)]\nfn debug_log_array_with_prefix_oracle<S, T, N>(_prefix: S, _arbitrary_array: [T; N]) -> Field {}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<T>(msg: T) {\n assert(debug_log_oracle(msg, 0) == 0);\n}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\nunconstrained pub fn debug_log_format<T, N>(msg: T, args: [Field; N]) {\n assert(debug_log_format_oracle(msg, args, args.len()) == 0);\n}\n\n/// Example:\n/// `debug_log_field(my_field);`\nunconstrained pub fn debug_log_field(field: Field) {\n assert(debug_log_field_oracle(field) == 0);\n}\n\n/// Example:\n/// `debug_log_array(my_array);`\nunconstrained fn debug_log_array<T, N>(arbitrary_array: [T; N]) {\n assert(debug_log_array_oracle(arbitrary_array) == 0);\n}\n\n/// Example:\n/// `debug_log_array_with_prefix(\"Prefix\", my_array);`\nunconstrained pub fn debug_log_array_with_prefix<S, T, N>(prefix: S, arbitrary_array: [T; N]) {\n assert(debug_log_array_with_prefix_oracle(prefix, arbitrary_array) == 0);\n}\n",
2594
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/debug_log.nr"
2595
+ },
2596
+ "99": {
2597
+ "source": "use dep::protocol_types::{address::AztecAddress, constants::NUM_FIELDS_PER_SHA256, grumpkin_point::GrumpkinPoint};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [\n emit_encrypted_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n preimage\n ), 0\n ]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n",
2598
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr"
2599
+ },
2600
+ "100": {
2601
+ "source": "use crate::{\n context::inputs::PrivateContextInputs, key::nullifier_key::validate_nullifier_key_against_address,\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, context::get_portal_address,\n header::get_header_at, nullifier_key::{get_nullifier_key_pair, NullifierKeyPair}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_call_stack_item::PrivateCallStackItem,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, hash::hash_args, header::Header, utils::reader::Reader\n};\nuse dep::std::option::Option;\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n max_non_revertible_side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n\n nullifier_key: Option<NullifierKeyPair>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n max_non_revertible_side_effect_counter: 0,\n args_hash,\n return_values: BoundedVec::new(0),\n read_requests: BoundedVec::new(SideEffect::empty()),\n nullifier_key_validation_requests: BoundedVec::new(NullifierKeyValidationRequest::empty()),\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n max_non_revertible_side_effect_counter: self.max_non_revertible_side_effect_counter,\n read_requests: self.read_requests.storage,\n nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash,\n unencrypted_logs_hash,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version\n };\n priv_circuit_pub_inputs\n }\n\n pub fn capture_max_non_revertible_side_effect_counter(&mut self) {\n assert(\n self.max_non_revertible_side_effect_counter == 0, \"Already captured the non-revertible side effect counter\"\n );\n self.max_non_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect { value: read_request, counter: self.side_effect_counter };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: nullified_commitment, counter: self.side_effect_counter };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_nullifier_secret_key(&mut self, account: AztecAddress) -> GrumpkinPrivateKey {\n let key_pair = if self.nullifier_key.is_none() {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key);\n let request = NullifierKeyValidationRequest { public_key: key_pair.public_key, secret_key: key_pair.secret_key };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(key_pair);\n key_pair\n } else {\n let key_pair = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(\n key_pair.account == account, \"Cannot query nullifier key for more than one account per call\"\n );\n key_pair\n };\n key_pair.secret_key\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) {\n // docs:end:context_message_portal\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n self.this_portal_address(),\n self.chain_id(),\n self.version(),\n msg_key,\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter\n );\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter\n );\n\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash: [0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero()\n },\n is_execution_request: true\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n",
2602
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr"
2603
+ },
2604
+ "115": {
2605
+ "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::{ContractClassFunctionLeafPreimage, FunctionLeafPreimage};\nuse crate::contract_class::ContractClassId;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT, ARGS_HASH_CHUNK_LENGTH, CONTRACT_TREE_HEIGHT, FUNCTION_TREE_HEIGHT,\n NOTE_HASH_TREE_HEIGHT, NUM_FIELDS_PER_SHA256, GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__VK, GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS, GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE, GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n contract_class_id: ContractClassId,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, contract_class_id };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
2606
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/src/crates/types/src/hash.nr"
2607
+ },
2608
+ "176": {
2609
+ "source": "use crate::abis::{\n function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{GENERATOR_INDEX__CONTRACT_LEAF};\nuse crate::traits::Hash;\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
2610
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/src/crates/types/src/contract_class.nr"
2611
+ },
2612
+ "187": {
2613
+ "source": "mod events;\n\ncontract ContractClassRegisterer {\n use dep::std::option::Option;\n use dep::aztec::protocol_types::{\n address::{AztecAddress, EthAddress}, contract_class::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::{Serialize}\n };\n\n use dep::aztec::log::{emit_unencrypted_log, emit_unencrypted_log_from_private};\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n #[aztec(private)]\n fn constructor() {}\n\n #[aztec(private)]\n fn register(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field,\n packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS]\n ) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\"ContractClassRegistered\", event_payload);\n emit_unencrypted_log_from_private(&mut context, event_payload);\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\"ClassPrivateFunctionBroadcasted\", event_payload);\n emit_unencrypted_log_from_private(&mut context, event_payload);\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\"ClassUnconstrainedFunctionBroadcasted\", event_payload);\n emit_unencrypted_log_from_private(&mut context, event_payload);\n }\n}\n",
2614
+ "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr"
2615
+ }
2616
+ }
2617
+ }