@aztec/accounts 0.20.0 → 0.22.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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "noir_version": "0.23.0+602f23f4fb698cf6e37071936a2a46593a998d08",
2
+ "noir_version": "0.23.0+9a70040211d205f472aa31924649c2fef999eb49",
3
3
  "name": "SchnorrSingleKeyAccount",
4
4
  "functions": [
5
5
  {
@@ -65,18 +65,127 @@
65
65
  }
66
66
  },
67
67
  {
68
- "name": "block_header",
68
+ "name": "historical_header",
69
69
  "type": {
70
70
  "kind": "struct",
71
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
71
+ "path": "authwit::aztec::protocol_types::header::Header",
72
72
  "fields": [
73
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
74
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
75
- { "name": "contract_tree_root", "type": { "kind": "field" } },
76
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
77
- { "name": "archive_root", "type": { "kind": "field" } },
78
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
79
- { "name": "global_variables_hash", "type": { "kind": "field" } }
73
+ {
74
+ "name": "last_archive",
75
+ "type": {
76
+ "kind": "struct",
77
+ "path": "authwit::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": "authwit::aztec::protocol_types::state_reference::StateReference",
93
+ "fields": [
94
+ {
95
+ "name": "l1_to_l2_message_tree",
96
+ "type": {
97
+ "kind": "struct",
98
+ "path": "authwit::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": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
113
+ "fields": [
114
+ {
115
+ "name": "note_hash_tree",
116
+ "type": {
117
+ "kind": "struct",
118
+ "path": "authwit::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": "authwit::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": "authwit::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": "authwit::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": "authwit::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
+ }
188
+ }
80
189
  ]
81
190
  }
82
191
  },
@@ -99,7 +208,7 @@
99
208
  },
100
209
  { "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" }
101
210
  ],
102
- "param_witnesses": { "inputs": [{ "start": 0, "end": 19 }], "message_hash": [{ "start": 19, "end": 20 }] },
211
+ "param_witnesses": { "inputs": [{ "start": 0, "end": 30 }], "message_hash": [{ "start": 30, "end": 31 }] },
103
212
  "return_type": {
104
213
  "abi_type": {
105
214
  "kind": "struct",
@@ -228,18 +337,127 @@
228
337
  },
229
338
  { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
230
339
  {
231
- "name": "block_header",
340
+ "name": "historical_header",
232
341
  "type": {
233
342
  "kind": "struct",
234
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
343
+ "path": "authwit::aztec::protocol_types::header::Header",
235
344
  "fields": [
236
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
237
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
238
- { "name": "contract_tree_root", "type": { "kind": "field" } },
239
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
240
- { "name": "archive_root", "type": { "kind": "field" } },
241
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
242
- { "name": "global_variables_hash", "type": { "kind": "field" } }
345
+ {
346
+ "name": "last_archive",
347
+ "type": {
348
+ "kind": "struct",
349
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
350
+ "fields": [
351
+ { "name": "root", "type": { "kind": "field" } },
352
+ {
353
+ "name": "next_available_leaf_index",
354
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
355
+ }
356
+ ]
357
+ }
358
+ },
359
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
360
+ {
361
+ "name": "state",
362
+ "type": {
363
+ "kind": "struct",
364
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
365
+ "fields": [
366
+ {
367
+ "name": "l1_to_l2_message_tree",
368
+ "type": {
369
+ "kind": "struct",
370
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
371
+ "fields": [
372
+ { "name": "root", "type": { "kind": "field" } },
373
+ {
374
+ "name": "next_available_leaf_index",
375
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
376
+ }
377
+ ]
378
+ }
379
+ },
380
+ {
381
+ "name": "partial",
382
+ "type": {
383
+ "kind": "struct",
384
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
385
+ "fields": [
386
+ {
387
+ "name": "note_hash_tree",
388
+ "type": {
389
+ "kind": "struct",
390
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
391
+ "fields": [
392
+ { "name": "root", "type": { "kind": "field" } },
393
+ {
394
+ "name": "next_available_leaf_index",
395
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
396
+ }
397
+ ]
398
+ }
399
+ },
400
+ {
401
+ "name": "nullifier_tree",
402
+ "type": {
403
+ "kind": "struct",
404
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
405
+ "fields": [
406
+ { "name": "root", "type": { "kind": "field" } },
407
+ {
408
+ "name": "next_available_leaf_index",
409
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
410
+ }
411
+ ]
412
+ }
413
+ },
414
+ {
415
+ "name": "contract_tree",
416
+ "type": {
417
+ "kind": "struct",
418
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
419
+ "fields": [
420
+ { "name": "root", "type": { "kind": "field" } },
421
+ {
422
+ "name": "next_available_leaf_index",
423
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
424
+ }
425
+ ]
426
+ }
427
+ },
428
+ {
429
+ "name": "public_data_tree",
430
+ "type": {
431
+ "kind": "struct",
432
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
433
+ "fields": [
434
+ { "name": "root", "type": { "kind": "field" } },
435
+ {
436
+ "name": "next_available_leaf_index",
437
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
438
+ }
439
+ ]
440
+ }
441
+ }
442
+ ]
443
+ }
444
+ }
445
+ ]
446
+ }
447
+ },
448
+ {
449
+ "name": "global_variables",
450
+ "type": {
451
+ "kind": "struct",
452
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
453
+ "fields": [
454
+ { "name": "chain_id", "type": { "kind": "field" } },
455
+ { "name": "version", "type": { "kind": "field" } },
456
+ { "name": "block_number", "type": { "kind": "field" } },
457
+ { "name": "timestamp", "type": { "kind": "field" } }
458
+ ]
459
+ }
460
+ }
243
461
  ]
244
462
  }
245
463
  },
@@ -256,30 +474,31 @@
256
474
  "visibility": "public"
257
475
  },
258
476
  "return_witnesses": [
259
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
260
- 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
261
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
262
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
263
- 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
264
- 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
265
- 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
266
- 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209
477
+ 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
478
+ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84,
479
+ 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
480
+ 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
481
+ 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153,
482
+ 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
483
+ 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197,
484
+ 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
485
+ 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231
267
486
  ]
268
487
  },
269
- "bytecode": "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",
270
- "debug_symbols": "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hxuZw43M4UbmcCNzuJE53MgcbmQONzKHG5nDjczhRuZwI3O4kTncyBxuZA43MocbmcONzOFG5nAjc7iROdzIHG5kDjcyhxuZw43M4UbmcCNzuJE53MgcbmQONzKHG5nDjczhRuZwI3O4kTncyBxuZA43MocbmcONzOFG5nAjc7iROdzIHG5kDjcyhxuZw43M4UbmcCNzuJE53MgcbmQONzKHG5nDjczhRuZwI3O4kTncyBxuZA43MocbmcONzOFG5nAjc7iROdzIHG5kDjcyhzsPGcS9XHL0S65+iemXuH5J6Jekfknpl7R+ib79o2//6Ns/+vaPvv2jb//o2z/69o++/aNv/+jbv/r2r779q2//6tu/+vavvv2rb//q27/69q++fdO3b/r2Td++6ds3ffumb9/07Zu+fdO3b/r2Xd++69t3ffuub9/17bu+fde37/r2Xd++69sPffuhbz/07Ye+/dC3H/r2Q99+6NsPffuhbz/17ae+/dS3n/r2U99+6ttPffupbz/17ae+/dK3X/r2S99+6dsvffulb7/07Ze+/dK3X/r2W99+69tvffutb7/17be+/da33/r2W99+69sfffujb3/07Y++/dG3P/r2R9/+6Nsfffs66zs66zs66zs66zs663v5rle/JPRLUr+k9Etav0Tfvs76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76js76zvus7++98/mqlwz6xwt/+vmnrez10zb19unT9c6nb9mtzx9/+W8/b5/Pfu/m9fbhx1eD9NsBLv0ARj+A0w8Q9AMk/QBFP0DTDzDwA7z/Nx2kA9CbOOhNHPQmDnoTB72Jg97EQW/ioDdx0Js46U2c9CZOehMnvYmT3sRJb+KkN3HSmzjpTZz0Ji56Exe9iYvexEVv4qI3cdGbuOhNXPQmLnoTF72Jm97ETW/ipjdx05u46U3c9CZuehM3vYmb3sRNb+KhN/HQm3joTTz0Jh56Ew+9iYfexENv4qE38cCb+D7gTXwf8Ca+D3gT3we8ie8D3sT3AW/i+4A38X3Am/g+4E18H/QmPvQmPvQmPvQmPvQmPvQmPvQmPvQmPvQmPvQmPvQmvvQmvvQmvvQmvvQmvvQmvvQmvvQmvvQmvvQmvvQmNnoTG72Jjd7ERm9iozex0ZvY6E1s9CY2ehMbvYmd3sR0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bF16Y6tS3dsXbpj69IdW5fu2Lp0x9alO7Yu3bFldMeW0R1bRndsGd2xZQ94ExvdsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW0Z3bBndsWV0x5bRHVtGd2wZ3bFldMeW0R1bRndsGd2xZXTHltEdW053bDndseV0x5bTHVv+gDex0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bHldMeW0x1bTndsOd2x5XTHltMdW053bDndseV0x5bTHVtOd2w53bEVdMdW0B1bQXdsBd2xFQ94EwfdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0F3bAXdsRV0x1bQHVtBd2wF3bEVdMdW0B1bQXdsBd2xFXTHVtAdW0l3bCXdsZV0x1bSHVv5gDdx0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bGVdMdW0h1bSXdsJd2xlXTHVtIdW0l3bCXdsZV0x1bSHVtJd2wl3bFVdMdW0R1bRXdsFd2xVQ94ExfdsVV0x1bRHVtFd2wV3bFVdMdW0R1bRXdsFd2xVXTHVtEdW0V3bBXdsVV0x1bRHVtFd2wV3bFVdMdW0R1bRXdsFd2xVXTHVtEdW0V3bBXdsVV0x1bRHVtFd2wV3bFVdMdW0R1bRXdsFd2xVXTHVtEdW0V3bBXdsVV0x1bRHVtFd2wV3bFVdMdW0R1bRXdsFd2xVXTHVtEdW0V3bBXdsVV0x1bRHVtFd2wV3bFVdMdW0R1bRXdsFd2xVXTHVtEdW0V3bBXdsVV0x1bRHVtFd2wV3bFVdMdW0R1bRXdsFd2xVXTHVtEdW0V3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"
488
+ "bytecode": "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",
489
+ "debug_symbols": "5Z3BjiRZcl3/pdcDwc3sPTN78yuCFoREAQQIUhC5I+bf5SN0ZPVgsqf6ZmdE2cleTSER7nF9LMNu1ql+J//rp3/99//5T//5L//+b//x05//66frv1n3T3/+7//103/8n3/6t79+5T/+85/+73/+9OfrTz/987/9r/t///Knn/73v/zrP//0Z3f7y//40/+/4qhXnEu+wuQrXL4i5CvWb7/iT3/3uvv/hv75pfd759ur13rcfj/39vnc29dzb9/Pvf155u39up57e3vu7f25t4/n3n499/b7ubfP596+nnv7fu7tn/upted+au25n1p77qfWnvuptd/3qa2ox+1rn1/e/r0Xt729uP3txXb1I8yeFCYnhalJYXpSmDMojF+TwtikMD4pTEwKM2kD+6QN7JM2sE/awD5pA/ukDRyTNnBM2sAxaQPHpA0ckzZwTNrAMWkDx6QNHJM2cEzawGvSBl6TNvCatIHXpA28Jm3gNWkDr0kbeE3awGvSBl6TNvCetIH3pA28J23gPWkD70kbeE/awHvSBt6TNvCetIH3pA2ckzZwTtrAOWkD56QNnJM2cE7awDlpA+ekDZyTNnBO2sA1aQPXpA1ckzZwTdrANWkD16QNXJM2cE3awDVpA9ekDdyTNnBP2sA9aQP3pA3ckzZwT9rAPWkD96QN3JM2cE/awGfSBj6TNvCZtIHPpA18Jm3gM2kDn0kb+EzawGfSBj6DNnBcgzZwXIM2cFyDNnBcgzZwXIM2cFyDNnBcgzZwXIM2cFyDNnBckzawTdrANmkD26QNbJM28KQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFxMOhMXk87ExaQzcTHpTFy88rBV+5vBrtd5J8wrD1t9P8zrvoF9vY3p/uN7Y3rhkaLfEGZPCpOTwtSkMC/8EeKK/fZxuu7P8S/i+CPOGRXnhceKfFs+RrUr/2ZU2qt/jm7c6D40utnK9bi3be/3wgc5/CKHF/bqz1e0fMXv2k++vN7W8f72zOf8fPvfd4jm+7f/XTvh/nfm/fNL7z++d3t/7u3V3ywQyvmSn6/Y8hUpXyF/n8q/TSLk3yYR8m+TCPm3SYT82yRC/m0SceSZH3nmR575kWd+5JkfdebruuQrTL7C5StCvmLJV2z5ipSvKPmKlq+QZ27yzE2euckzN3nmJs/c5JmbPHOTZ27yzE2eucszd3nmLs/c5Zm7PHOXZ+7yzF2eucszd3nmIc885JmHPPOQZx7yzEOeecgzD3nmIc885JkveeZLnvmSZ77kmS955kue+ZJnvuSZL3nmS575lme+5ZlveeZbnvmWZ77lmW955lue+ZZnvuWZpzzzlGee8sxTnnnKM0955inPPOWZpzzzlGde8sxLnnnJMy955iXPvOSZlzxzmR0umR2ukmfe8sxbnnnLM5c53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JI53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY53JY5XMocLmUOlzKHS5nDpczhUuZwKXO4lDlcyhwuZQ6XModLmcOlzOFS5nApc7iUOVzKHC5lDpcyh0uZw6XM4VLmcClzuJQ5XMocLmUOlzKHS5nDpczhUuZwKXO4lDlcyhwuZQ6XModLmcOlzOFS5nApc7iUOVzKHC5lDpcyh0uZw6XM4VLmcClzuJQ5XMocLmUOlzKHS5nDpczhUuZwKXO4lDlcyhwuZQ6XModLmcOlzOFS5nApc7iUOVzKHC5lDpcyh0uZw6XM4VLmcClzuJQ5XMocLmUOlzKHS5nDpczhUuZwKXO4lDlcyhwuZQ6XModLmcOlzOFS5nApc7iUOVzKHC5lDpcyh0uZw6XM4VLmcClzuJQ5XMocLmUOlzKHS5nDlczhSuZwJXO4kjlcyRyuZA5XMocrmcOVzOFK5nAlc7iSOVzJHK5kDlcyhyuZw5XM4UrmcCVzuJI5XMkcrmQOVzKHK5nDlczhSuZwJXO4kjlcyRyuZA5XMocrmcOVzOFK5nAlc7iSOVzJHK5kDlcyhyuZw5XM4UrmcCVzuJI5XMkcrmQOVzKHK5nDlczhSuZwJXO4kjlcyRyuZA5XMocrmcOVzOFK5nAlc7iSOVzJHK5kDlcyhyuZw5XM4UrmcCVzuJI5XMkcrmQOVzKHK5nDlczhSuZwJXO4kjlcyRyuZA5XMocrmcOVzOFK5nAlc7iSOVzJHK5kDlcyhyuZw5XM4UrmcCVzuJI5XMkcrmQOVzKHK5nDlczhSuZwJXO4kjlcyxyuZQ7XModrmcO1zOFa5nAtc7iWOVzLHK5lDtcyh2uZw7XM4VrmcC1zuJY5XMscrmUO1zKHa5nDtczhWuZwLXO4ljlcyxyuZQ7XModrmcO1zOFa5nAtc7iWOVzLHK5lDtcyh2uZw7XM4VrmcC1zuJY5XMscrmUO1zKHa5nDtczhWuZwLXO4ljlcyxyuZQ7XModrmcO1zOFa5nAtc7iWOVzLHK5lDtcyh2uZw7XM4VrmcC1zuJY5XMscrmUO1zKHa5nDtczhWuZwLXO4ljlcyxyuZQ7XModrmcO1zOFa5nAtc7iWOVzLHK5lDtcyh2uZw7XM4VrmcC1zuJY5XMscrmUO1zKHa5nDtczhWuZwLXO4ljlcyxyuZQ7XModrmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcMdmcPZJYO4+xLTL3H9ktAvWfolW78k9UtKv6T1S/Tpmz5906dv+vRNn77p0zd9+qZP3/Tpmz5906fv+vRdn77r03d9+q5P3/Xpuz5916fv+vRdn37o0w99+qFPP/Tphz790Kcf+vRDn37o0w99+kuf/tKnv/TpL336S5/+0qe/9OkvffpLn/7Sp7/16W99+luf/tanv/Xpb336W5/+1qe/9elvffqpTz/16ac+/dSnn/r0U59+6tNPffqpTz/16Zc+/dKnX/r0S59+6dMvffqlT7/06Zc+/dKn3/r0W59+69NvffqtT7/16bc+/dan3/r0W5/+0ad/9OkfffpHn/7Rp3/06R99+kef/tGnr7M+01mf6azPdNZnOuu7f+rVL9n6JalfUvolrV+iT19nfaazPtNZn+msz3TWZzrrM531mc76TGd9prM+01mf6azPdNZnOusznfWZzvpMZ32msz7TWZ/prM901mc66zOd9ZnO+kxnfaazPtNZn+msz3TWZzrrM531mc76TGd9prM+01mf6azPdNZnOusznfWZzvpMZ32msz7TWZ/prM901mc66zOd9ZnO+kxnfaazPtNZn+msz3TWZzrrM531mc76TGd9prM+01mf6azPdNZnOusznfWZzvpMZ32msz7TWZ/prM901mc66zOd9ZnO+kxnfaazPtNZn+msz3TWZzrrM531mc76TGd9prM+01mf6azPdNZnOusznfWZzvpMZ32msz7XWZ/rrM911uc663Od9bnO+lxnfa6zPtdZn+usz3XW5zrrc531uc76XGd9rrM+11mf66zPddbnOutznfW5zvpcZ32usz7XWZ/rrM911uc663Od9bnO+lxnfa6zPtdZn+usz3XW5zrrc531uc76XGd9rrM+11mf66zPddbnOutznfW5zvpcZ32usz7XWZ/rrM911uc663Od9bnO+lxnfa6zPtdZn+usz3XW5zrrc531uc76XGd9rrM+11mf66zPddbnOutznfW5zvpcZ32usz7XWZ/rrM911uc663Od9bnO+lxnfa6zPtdZn+usz3XW5zrrc531uc76XGd9rrM+11mf66zPddbnOutznfW5zvpcZ32usz7XWZ/rrM911uc66wud9YXO+kJnfaGzvtBZX+isL3TWFzrrC531hc76Qmd9obO+0Flf6KwvdNYXOusLnfWFzvpCZ32hs77QWV/o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08nITicjO52M7HQystPJyE4nIzudjOx0MrLTychOJyM7nYzsdDKy08nITicjO52M7HQystPJyE4nIzudjOx0MrLTychOJyM7nYzsdDKy08nITicjO52M7HQystPJyE4nIzudjOx0MrLTychOJyM7nYzsdDKy08nITicjO52M7HQystPJyE4nIzudjOx0MrLTychOJyM7nYzsdDKy08nITicjO52M7HQystPJyE4nIzudjOx0MrLTychOJyM7nYzsdDKy08nITicjO52M7HQystPJyE4nIzudjOx0crLTyclOJyc7nZzsdPIL3LBOdjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp5OTnU5Odjo52enkZKeTk51OTnY6Odnp5GSnk5OdTk52OjnZ6eRkp1OQnU5BdjoF2ekUZKdTXOCGDbLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudgux0CrLTKchOpyA7nYLsdAqy0ynITqcgO52C7HQKstMpyE6nIDudFtnptMhOp0V2Oi2y02ld4IZdZKfTIjudFtnptMhO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"
271
490
  },
272
491
  {
273
- "name": "set_is_valid_storage",
274
- "function_type": "Open",
275
- "is_internal": true,
492
+ "name": "constructor",
493
+ "function_type": "Secret",
494
+ "is_internal": false,
276
495
  "abi": {
277
496
  "parameters": [
278
497
  {
279
498
  "name": "inputs",
280
499
  "type": {
281
500
  "kind": "struct",
282
- "path": "authwit::aztec::abi::PublicContextInputs",
501
+ "path": "authwit::aztec::abi::PrivateContextInputs",
283
502
  "fields": [
284
503
  {
285
504
  "name": "call_context",
@@ -332,50 +551,189 @@
332
551
  }
333
552
  },
334
553
  {
335
- "name": "block_header",
554
+ "name": "historical_header",
336
555
  "type": {
337
556
  "kind": "struct",
338
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
557
+ "path": "authwit::aztec::protocol_types::header::Header",
339
558
  "fields": [
340
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
341
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
342
- { "name": "contract_tree_root", "type": { "kind": "field" } },
343
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
344
- { "name": "archive_root", "type": { "kind": "field" } },
345
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
346
- { "name": "global_variables_hash", "type": { "kind": "field" } }
559
+ {
560
+ "name": "last_archive",
561
+ "type": {
562
+ "kind": "struct",
563
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
564
+ "fields": [
565
+ { "name": "root", "type": { "kind": "field" } },
566
+ {
567
+ "name": "next_available_leaf_index",
568
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
569
+ }
570
+ ]
571
+ }
572
+ },
573
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
574
+ {
575
+ "name": "state",
576
+ "type": {
577
+ "kind": "struct",
578
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
579
+ "fields": [
580
+ {
581
+ "name": "l1_to_l2_message_tree",
582
+ "type": {
583
+ "kind": "struct",
584
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
585
+ "fields": [
586
+ { "name": "root", "type": { "kind": "field" } },
587
+ {
588
+ "name": "next_available_leaf_index",
589
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
590
+ }
591
+ ]
592
+ }
593
+ },
594
+ {
595
+ "name": "partial",
596
+ "type": {
597
+ "kind": "struct",
598
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
599
+ "fields": [
600
+ {
601
+ "name": "note_hash_tree",
602
+ "type": {
603
+ "kind": "struct",
604
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
605
+ "fields": [
606
+ { "name": "root", "type": { "kind": "field" } },
607
+ {
608
+ "name": "next_available_leaf_index",
609
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
610
+ }
611
+ ]
612
+ }
613
+ },
614
+ {
615
+ "name": "nullifier_tree",
616
+ "type": {
617
+ "kind": "struct",
618
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
619
+ "fields": [
620
+ { "name": "root", "type": { "kind": "field" } },
621
+ {
622
+ "name": "next_available_leaf_index",
623
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
624
+ }
625
+ ]
626
+ }
627
+ },
628
+ {
629
+ "name": "contract_tree",
630
+ "type": {
631
+ "kind": "struct",
632
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
633
+ "fields": [
634
+ { "name": "root", "type": { "kind": "field" } },
635
+ {
636
+ "name": "next_available_leaf_index",
637
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
638
+ }
639
+ ]
640
+ }
641
+ },
642
+ {
643
+ "name": "public_data_tree",
644
+ "type": {
645
+ "kind": "struct",
646
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
647
+ "fields": [
648
+ { "name": "root", "type": { "kind": "field" } },
649
+ {
650
+ "name": "next_available_leaf_index",
651
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
652
+ }
653
+ ]
654
+ }
655
+ }
656
+ ]
657
+ }
658
+ }
659
+ ]
660
+ }
661
+ },
662
+ {
663
+ "name": "global_variables",
664
+ "type": {
665
+ "kind": "struct",
666
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
667
+ "fields": [
668
+ { "name": "chain_id", "type": { "kind": "field" } },
669
+ { "name": "version", "type": { "kind": "field" } },
670
+ { "name": "block_number", "type": { "kind": "field" } },
671
+ { "name": "timestamp", "type": { "kind": "field" } }
672
+ ]
673
+ }
674
+ }
347
675
  ]
348
676
  }
349
677
  },
350
678
  {
351
- "name": "public_global_variables",
679
+ "name": "contract_deployment_data",
352
680
  "type": {
353
681
  "kind": "struct",
354
- "path": "authwit::aztec::abi::PublicGlobalVariables",
682
+ "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
683
+ "fields": [
684
+ {
685
+ "name": "public_key",
686
+ "type": {
687
+ "kind": "struct",
688
+ "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
689
+ "fields": [
690
+ { "name": "x", "type": { "kind": "field" } },
691
+ { "name": "y", "type": { "kind": "field" } }
692
+ ]
693
+ }
694
+ },
695
+ { "name": "initialization_hash", "type": { "kind": "field" } },
696
+ {
697
+ "name": "contract_class_id",
698
+ "type": {
699
+ "kind": "struct",
700
+ "path": "authwit::aztec::protocol_types::contract_class::ContractClassId",
701
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
702
+ }
703
+ },
704
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
705
+ {
706
+ "name": "portal_contract_address",
707
+ "type": {
708
+ "kind": "struct",
709
+ "path": "authwit::aztec::protocol_types::address::EthAddress",
710
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
711
+ }
712
+ }
713
+ ]
714
+ }
715
+ },
716
+ {
717
+ "name": "private_global_variables",
718
+ "type": {
719
+ "kind": "struct",
720
+ "path": "authwit::aztec::abi::PrivateGlobalVariables",
355
721
  "fields": [
356
722
  { "name": "chain_id", "type": { "kind": "field" } },
357
- { "name": "version", "type": { "kind": "field" } },
358
- { "name": "block_number", "type": { "kind": "field" } },
359
- { "name": "timestamp", "type": { "kind": "field" } }
723
+ { "name": "version", "type": { "kind": "field" } }
360
724
  ]
361
725
  }
362
726
  }
363
727
  ]
364
728
  },
365
729
  "visibility": "private"
366
- },
367
- { "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" },
368
- { "name": "value", "type": { "kind": "boolean" }, "visibility": "private" }
730
+ }
369
731
  ],
370
- "param_witnesses": {
371
- "inputs": [{ "start": 0, "end": 19 }],
372
- "message_hash": [{ "start": 19, "end": 20 }],
373
- "value": [{ "start": 20, "end": 21 }]
374
- },
732
+ "param_witnesses": { "inputs": [{ "start": 0, "end": 34 }] },
375
733
  "return_type": {
376
734
  "abi_type": {
377
735
  "kind": "struct",
378
- "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs",
736
+ "path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
379
737
  "fields": [
380
738
  {
381
739
  "name": "call_context",
@@ -427,41 +785,57 @@
427
785
  },
428
786
  { "name": "args_hash", "type": { "kind": "field" } },
429
787
  { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
788
+ { "name": "meta_hwm", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
430
789
  {
431
- "name": "contract_storage_update_requests",
790
+ "name": "read_requests",
432
791
  "type": {
433
792
  "kind": "array",
434
- "length": 16,
793
+ "length": 32,
435
794
  "type": {
436
795
  "kind": "struct",
437
- "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest",
796
+ "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
438
797
  "fields": [
439
- { "name": "storage_slot", "type": { "kind": "field" } },
440
- { "name": "old_value", "type": { "kind": "field" } },
441
- { "name": "new_value", "type": { "kind": "field" } }
798
+ { "name": "value", "type": { "kind": "field" } },
799
+ { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
442
800
  ]
443
801
  }
444
802
  }
445
803
  },
446
804
  {
447
- "name": "contract_storage_reads",
805
+ "name": "nullifier_key_validation_requests",
448
806
  "type": {
449
807
  "kind": "array",
450
- "length": 16,
808
+ "length": 1,
451
809
  "type": {
452
810
  "kind": "struct",
453
- "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead",
811
+ "path": "authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
454
812
  "fields": [
455
- { "name": "storage_slot", "type": { "kind": "field" } },
456
- { "name": "current_value", "type": { "kind": "field" } }
813
+ {
814
+ "name": "public_key",
815
+ "type": {
816
+ "kind": "struct",
817
+ "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
818
+ "fields": [
819
+ { "name": "x", "type": { "kind": "field" } },
820
+ { "name": "y", "type": { "kind": "field" } }
821
+ ]
822
+ }
823
+ },
824
+ {
825
+ "name": "secret_key",
826
+ "type": {
827
+ "kind": "struct",
828
+ "path": "authwit::aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
829
+ "fields": [
830
+ { "name": "high", "type": { "kind": "field" } },
831
+ { "name": "low", "type": { "kind": "field" } }
832
+ ]
833
+ }
834
+ }
457
835
  ]
458
836
  }
459
837
  }
460
838
  },
461
- {
462
- "name": "public_call_stack_hashes",
463
- "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
464
- },
465
839
  {
466
840
  "name": "new_commitments",
467
841
  "type": {
@@ -493,65 +867,218 @@
493
867
  }
494
868
  }
495
869
  },
870
+ {
871
+ "name": "private_call_stack_hashes",
872
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
873
+ },
874
+ {
875
+ "name": "public_call_stack_hashes",
876
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
877
+ },
496
878
  { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
879
+ { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
880
+ { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
497
881
  {
498
882
  "name": "unencrypted_logs_hash",
499
883
  "type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
500
884
  },
885
+ { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
501
886
  { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
502
887
  {
503
- "name": "block_header",
888
+ "name": "historical_header",
504
889
  "type": {
505
890
  "kind": "struct",
506
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
891
+ "path": "authwit::aztec::protocol_types::header::Header",
507
892
  "fields": [
508
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
509
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
510
- { "name": "contract_tree_root", "type": { "kind": "field" } },
511
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
512
- { "name": "archive_root", "type": { "kind": "field" } },
513
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
514
- { "name": "global_variables_hash", "type": { "kind": "field" } }
893
+ {
894
+ "name": "last_archive",
895
+ "type": {
896
+ "kind": "struct",
897
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
898
+ "fields": [
899
+ { "name": "root", "type": { "kind": "field" } },
900
+ {
901
+ "name": "next_available_leaf_index",
902
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
903
+ }
904
+ ]
905
+ }
906
+ },
907
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
908
+ {
909
+ "name": "state",
910
+ "type": {
911
+ "kind": "struct",
912
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
913
+ "fields": [
914
+ {
915
+ "name": "l1_to_l2_message_tree",
916
+ "type": {
917
+ "kind": "struct",
918
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
919
+ "fields": [
920
+ { "name": "root", "type": { "kind": "field" } },
921
+ {
922
+ "name": "next_available_leaf_index",
923
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
924
+ }
925
+ ]
926
+ }
927
+ },
928
+ {
929
+ "name": "partial",
930
+ "type": {
931
+ "kind": "struct",
932
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
933
+ "fields": [
934
+ {
935
+ "name": "note_hash_tree",
936
+ "type": {
937
+ "kind": "struct",
938
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
939
+ "fields": [
940
+ { "name": "root", "type": { "kind": "field" } },
941
+ {
942
+ "name": "next_available_leaf_index",
943
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
944
+ }
945
+ ]
946
+ }
947
+ },
948
+ {
949
+ "name": "nullifier_tree",
950
+ "type": {
951
+ "kind": "struct",
952
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
953
+ "fields": [
954
+ { "name": "root", "type": { "kind": "field" } },
955
+ {
956
+ "name": "next_available_leaf_index",
957
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
958
+ }
959
+ ]
960
+ }
961
+ },
962
+ {
963
+ "name": "contract_tree",
964
+ "type": {
965
+ "kind": "struct",
966
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
967
+ "fields": [
968
+ { "name": "root", "type": { "kind": "field" } },
969
+ {
970
+ "name": "next_available_leaf_index",
971
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
972
+ }
973
+ ]
974
+ }
975
+ },
976
+ {
977
+ "name": "public_data_tree",
978
+ "type": {
979
+ "kind": "struct",
980
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
981
+ "fields": [
982
+ { "name": "root", "type": { "kind": "field" } },
983
+ {
984
+ "name": "next_available_leaf_index",
985
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
986
+ }
987
+ ]
988
+ }
989
+ }
990
+ ]
991
+ }
992
+ }
993
+ ]
994
+ }
995
+ },
996
+ {
997
+ "name": "global_variables",
998
+ "type": {
999
+ "kind": "struct",
1000
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
1001
+ "fields": [
1002
+ { "name": "chain_id", "type": { "kind": "field" } },
1003
+ { "name": "version", "type": { "kind": "field" } },
1004
+ { "name": "block_number", "type": { "kind": "field" } },
1005
+ { "name": "timestamp", "type": { "kind": "field" } }
1006
+ ]
1007
+ }
1008
+ }
515
1009
  ]
516
1010
  }
517
1011
  },
518
1012
  {
519
- "name": "prover_address",
1013
+ "name": "contract_deployment_data",
520
1014
  "type": {
521
1015
  "kind": "struct",
522
- "path": "authwit::aztec::protocol_types::address::AztecAddress",
523
- "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1016
+ "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1017
+ "fields": [
1018
+ {
1019
+ "name": "public_key",
1020
+ "type": {
1021
+ "kind": "struct",
1022
+ "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1023
+ "fields": [
1024
+ { "name": "x", "type": { "kind": "field" } },
1025
+ { "name": "y", "type": { "kind": "field" } }
1026
+ ]
1027
+ }
1028
+ },
1029
+ { "name": "initialization_hash", "type": { "kind": "field" } },
1030
+ {
1031
+ "name": "contract_class_id",
1032
+ "type": {
1033
+ "kind": "struct",
1034
+ "path": "authwit::aztec::protocol_types::contract_class::ContractClassId",
1035
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1036
+ }
1037
+ },
1038
+ { "name": "contract_address_salt", "type": { "kind": "field" } },
1039
+ {
1040
+ "name": "portal_contract_address",
1041
+ "type": {
1042
+ "kind": "struct",
1043
+ "path": "authwit::aztec::protocol_types::address::EthAddress",
1044
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1045
+ }
1046
+ }
1047
+ ]
524
1048
  }
525
- }
1049
+ },
1050
+ { "name": "chain_id", "type": { "kind": "field" } },
1051
+ { "name": "version", "type": { "kind": "field" } }
526
1052
  ]
527
1053
  },
528
1054
  "visibility": "public"
529
1055
  },
530
1056
  "return_witnesses": [
531
- 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
532
- 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74,
533
- 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101,
534
- 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,
535
- 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145,
536
- 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167,
537
- 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
538
- 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210
1057
+ 35, 36, 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,
1058
+ 62, 63, 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,
1059
+ 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1060
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134,
1061
+ 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156,
1062
+ 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
1063
+ 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
1064
+ 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222,
1065
+ 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239
539
1066
  ]
540
1067
  },
541
- "bytecode": "H4sIAAAAAAAA/+2dB3wUR5bGZySEGI0kogAhCY2EJET0jABjDBhhwIDDOuAcARNtQBiEccQ555xzztnGOGeDM7fBe7tn7+3eem/31nu7tzn6XvXUM5+KXnlqXWV64PXv99Fdr7vr/evVq5qe7h6xMRaLxWPZpZBUEdt84f2tep3+ekvGYV1pn5zxPOEsyBPOwjzh7JInnEV5wtk1TziL84SzW55wJvKEsyRPOJN5wlmaJ5xlecJZniec3fOEs0eecPbME85eecLZO084+zjkHACc/N2ur1730+v+el2p13xOlV5X63WNbmsXXR5IqiWlSHV6HwemnjSI1EBqJDWRBpOaSUNIQ0nDSMNJI0gjSdvp89UXxBbSKNJo0hjS9qSxpB1I40g7ksaTJpAmknYiTdJxm0zamTSFNJU0jbQLaTppBmkmaVfSbqTdSXuQvkXak7QXaW/dlpRuyz6kWaR9SfuR9icdQDqQdBDpYNIhpENJh5EOJx1Bmk2aQ5pLOpI0jzSftIC0kLSItJh0FOlo0hLSUtIyUhtpOekYI+YrSCtJ7aRVBuexpNWk40jHk04gnUg6iXQyaQ3pFNKppNNIp5POIJ1JOot0Nukc0rmk80jnky4gXUi6iHQx6RLSpaTLSJeTriBdSboq1rH/ryZdQ7qWdB3petINpBtJN5FuJt1CupV0G+l20h2kO0l3ke4m3UO6l3Qf6X7SA6QHSQ+RHiY9QnqU9BjpcdITpCdJT5GeJj1DWkt6lrSO9BzpedILpBdJL5FeJr1CepX0Gul10hu6LQW6LW+S3jJsb5PW6+0Nev2OXr+r1+/p9ft6/YFef6jXH+n1RtInpdltdc1s3oNRNh6zcbDx+C0AG4/lQrDxuO4CNh7jRWDj8d4VbDz2i8FWo7e7gW0gbPO6Vm+XgC2lt5Ngq9PbpWCr19tlYBukt8vB1qC3u4OtUW/3AFuT3u4JtsF6uxfYmvV2b7AN0dt99Jrjo5ZWvU5/zUXV6fhzJK3YOTcqoD2cG33BxrnRD2ycG/3Bxm2vBBvnxgCwcW5UgY1zoxpsnBs1YOPcwJzi3KgFG+dGCmycG3Vg49yoBxvnxiCwcW40gI1zoxFsnBtNYOPcGAw2jnkz2DjmnFMqxjNgPy84pvH+LNt4P47pQqiTbbwfxzTvxzHN+3FM435e834c07wfxzTvx/HL+3Gscr/iuORzcAxyv2Iecz2Ys9yvmJ9cN+Yi9yvmIvvDXOR+xVxkBsxF7tcU2JgLc5HHEuYis+L81hV4W/U6/fWWDM77vMSNcits4+dBjVuWUfjZkgsL9gn3RV/gq3XL15KEWNWCnzrHfvAzMZc41AFLvVuW4D7tILd1BpeDDcCf0mv2k4T9FdC2Bsdti4NPrpfLyJcr68AtzKpYqg1OvEaqjgAf23D+awjha3TL1xKPdezHVig3Ah/b6oHFcf63JAwWtXQ2vgcBy2CnLJk0XhvnwjIYWJqcsmTnmma3dQbX0EMc16nqGAox4fgxexL2D4F4DXUcrzj45Hq5jHzCKqzCKqzCKqzCKqzCum2z4vccvIfJxzVEgI9tTcDi+rsB3o/jutW90bXg0+39lEwavyer+lPAwL4K4ZhHk5u4nte2ktjm363xmUmDUb87/mz/sR+ul8sp4OO24L0px/fJApZ6g2Xr9dtypPt7mpm0uteO94hqjXak9BrvU7NN5eQGaG9U7k3jfdoC4HN8vzrzr96vxvt0hcDn+H51Bu+L58JXC3x8Hj4rcj2O/tX73Ek4rwj4HN+ny+Az51z48J4w3j/kteN7mhnb+4hh9zmLgc/tvcUsX5MF32Dg4/O6AZ/j+3gZvObJhW8I8OHzW+Yb5oFvqAXfMODj80qAb4QHvuEWfCOAbzhsM992HvhGWvBtB0x8XinwZTzwpWO582WAj88rA75RHvhaLPhGAR+fVw58YzzwjbbgGwN8fF534BvrgW97C76xwMfn9QC+cR74drDgGwd8fF5P4BvvgW9HC77xwMfn9QK+iR74JljwTQQ+Pq838E3ywLeTBd8k4OPz8P22yR74Wi34JgMf2/Hzd4oHvp0t+KYAH5/XH/imueULniNPteCbBiwz3LKMViy7WLDMAJbpblmC58gz3dYZPEfe1XGdqo7dICYcP2ZPwv5dIV67OY5XHHxyvVxGPmHdtlkVy1SDMwHHTY0AH9ume2RJGCxq6WyuC+PDvtzDLV/wubC7Bd8ewLKXU5ZRwT32b1mw7AUsezplyX4u7O22zmAO3wf4ua3sJwn7sc/3cdy2OPjkermMfMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMIqrMLqnlWx7G5wJuC43SPAx7Y9PbIkDBa1dPaeSBgf9uW+bvmCd2pmWfDtCywHOGVpCd6p2c+C5QBg2d8pS/admgPd1hm8U3MQ8HNb2U8S9mOfH+S4bXHwyfVyGfmEVViFVViFVViFVViFVViFVViFVViFVViFVViFVVjzhVWxzDI4E3DcrAjwsW1/jywJg0Utnd1nD+PDvjzELV/wTOJgC75DgOVwtyzB33841ILlcGA5zC1L8EziCLd1Bs8kZgM/t5X9JGE/9vlsx22Lg0+ul8uzwS6s2zarYjnY4EzAcQdHgI9th3lkSRgsaulsXpodwod9OdctXzCHz7Hgmwss852yZJ8rH2nBMh9Y5jllyc7hC9zWGczhC4Gf28p+krAf+3yh47bFwSfXy+WF/vwG7V/0Fe1fFMKx6BtsP/LlyrprHrFKXCWuEleJq8RV4ipxlbhKXCWuEleJq8RV4ipxlbhKXCWuEtfcWRXLHIMzAcfNiQAf2+Z5ZEkYLGrp7N59GB/m3VFu+YLnHIst+I4ClqVOWbJ/k/poC5alwLLEKUv2Occyt3UG9/nbgJ/byn6SsB/7vM1x2+Lgk+vlMvJtjawL84hVcsAPq+SAsEoOCKvkgLBKDgir5ICwSg4Iq+SAsEoOCKvkgLBKDgir5ICwSg4Iq+SAsEoOCOuWzgHFstjgTMBxiyPAx7YlHlkSBotaOntPJIwP8+4Yt3zBOzXLLfiOAZZ2DywrLFjagWWlW5bgnZpVbusM3qk5Fvi5rewnCfuxz4913LY4+OR6uYx8+cKqWJYbnAk4bnkE+Ni20iNLwmBRS2fjJ4wP+/I4t3zB+F5twXccsJzogeV4C5YTgeUEtyzBXHOS2zqDueZk4Oe2sp8k7Mc+P9lx2+Lgk+vlMvLlC6tiWW1wJuC41RHgY9sJHlkSBotaOhs/YXzYl6d44FtjwXcK8K0J4TvNA9+pFnynAR+fVwJ8Z3jgO92C7wzgOx22me8sD3xnWvCdBUx8XinwneOB72wLvnOAj88rA77zPPCda8F3HvDxeeXAd4EHvvMt+C4APj6vO/Bd5IHvQgu+i4CPz+sBfJd44LvYgu8S4OPzcP67zAPfpRZ8lwHfpSF8V3jgu9yC7wrguzyE7yoPfFda8F0FfFeG8F3jge9qC75rgI/Pw3tY13ngu9aC7zpgud4tSzoJLNeDnxs9tPmGWO5tZv9JOA/5bvbAd5MF383Ad1MI360e+G6x4LsV+Pg8zOnbPfDdZsF3O/DxeTgn3OmB7w4LvjuB744Qvrs98N1lwXc38N0VwnevB757LPjuBb57Qvju98B3nwXf/cB3Xwjfgx74HrDgexD4Hgjhe9gD30MWfA8D30MhfI964HvEgu9R4HskhO9xD3yPWfA9DnyPhfA96YHvCQu+J4HviRC+pz3wPWXB9zTwPRXCt9YD3zMWfGuB75kQvnUe+J614FsHfM+G8D3vge85C77nge+5EL4XPfC9YMH3IvC9EML3sge+lyz4XgY+Pg+v/171wPeKBd+rwMfnYfxed8sXPHN5zYLvdWB5yy1L8H8NvGHB8hawvOmWJXj+87bbOoPnP+uBn9vKfpKwH/t8veO2xcEn18tl5BPWbZtVsbxmcCbguNciwMe2Nz2yJAwWtXQ2L4XxYV++45YvmMM3WPC9AyzvO2UZHfwNnnctWN4HlvecsmTn8A/c1hnM4R8CP7eV/SRhP/b5h47bFgefXC+XkS9X1oV5xCpxlbhKXCWuEleJq8RV4ipxlbhKXCWuEleJq8RV4ipxlbhKXCWuEleJq8RV4ipxlbhKXCWuEleJq8RV4ipxlbhKXCWuEleJq8RV4ipxzZ1VsWwwOBNw3IYI8LHtPY8sCYNFLXGj3ArbYXyYdxvd8gXvhH9kwbcRWL7jlKUleCf83yxYvgMs33bKkn0n/Ltu60yrOr4H/NxW9pOE/djn33Pctjj45Hq5jHy5si7MI1aJq8RV4ipxlbhKXCWuEleJq8RV4ipxlbhKXCWuEleJq8RV4rp1xlWxfGRwJuC4jyLAx7Zve2RJGCxq6ew+exgf5t333fIFzyQ+tuD7PrD80CnLqOCZxL9bsPwQWH7glCX7TOI/3NYZPJP4BPi5rewnCfuxzz9x3LY4+OR6uYx8WyPrwjxilRzwwyo5IKySA8IqOSCskgPCKjkgrJIDwio5IKySA8IqOSCskgPCKjkgrJIDwio5IKySA8K6pXNAsXxscCbguI8jwMe2H3hkSRgsaunsPZEwPsy7H7nlC96p+dSC70fA8hO3LMH/3/efFiw/AZYfu2UJ3qn5L7d1Bu/U/BT4ua3sJwn7sc9/6rhtcfDJ9XIZ+YR122ZVLJ8anAk47tMI8LHtxx5ZEgaLWjqbl8L4sC9/5pYvmMM/s+D7GbD8wi1LMIf/twXLL4Dl525Zgjn8f9zWGczhvwR+biv7ScJ+7PNfOm5bHHxyvVxGPmHdtlkVy2cGZwKO+ywCfGz7uUeWhMGils7mpTA+7MtfueUL5vDPLfh+BSy/8cDyvxYsvwGWX7tlCebw/3NbZzCH/xb4ua3sJwn7sc9/67htcfDJ9XIZ+fKFVbF8bnAm4LjPI8DHtl97ZEkYLGrpbPyE8WFf/t4D3+8s+H4PfL8L4fujB74/WPD9Efj+EML3Zw98f7Lg+zPw/SmE768e+P5iwfdX4PtLCN/fPfD9zYLv78D3txC+Lzzw/cOC7wvg+0cIXzzuns8E6oyP/SfhQOTr4pYvuH4osOBj/4ql0HGsVJ1FbutMqzq7OuZUdRRDkDh+RdB3vL8rxKvYMUccfHK9XEa+XFkrYluW1YPfltJY9rqmwPDFz1yQqZve7gJ2HnuqmODY6TIff70+phCOiXXLrsq0f7b3jW1qa6mHuabEYiyXQtyTHsZymeOxrOoohwZxW8sgl3l/AtpW7iGXy4xc5nI5zt96KYhtYinzwIJLK2yXhbBgXLY0S1GEWLrHosNSGiGWRIRYukaIpTBCLD0ixFIWIZaSCLEUR4ilS4RYKiPE0j9CLP0ixFIeIZZkhFi6RYilKEIs8S3Mkoht/r0nAfuL4Di+Xi8BW3duE9gKQnzwNUA52Hhu7Q7fFb9bunndGCMf30/QTyuUv2wvMHT3/F0pF5aiCLF0ixBLMkIs5RFi6Rchlv4RYqmMEEuXCLEUR4ilJEIsZRFi6REhlsIIsXSNEEsiQiylEWLpHiEWvr6NRL5EiKUgpI96uGUZjd8peDGKHb6z9AAW19+VVJ093dYZPE/t5bhOVUdvCBLHj9mTsL8XxKu3hzzqGe/YT1xGPmHdtlmV3z5O/Wb/RnFPi3mjj8cYqDorPIzxvtAgbmsF9G/fkP7t66F/K4z+5TLyCauwCquwCquwCquwCquwCquwCquwCquwCquwCquwCquwCquwCquwCquwCquwCqt7VuW3n1O/LcE7F+hXLUbxS18x8O8jBqrO/m7rDN65qIQGcVv7Q/9WhvRvpYf+7W/0L5eRT1iFVViFVViFVViFVViFVViFVViFVViFVViFVViFNV9Yld8Bbv0Gvy9Gv2oxih3uWQ/wGANVZ5XbOoN71tXQIG5rFfRvdUj/Vnvo3yqjf7mMfMK6bbMqvzVO/WafS1VZjPEajzFQdQ70MMZroUHc1oHQv7Uh/VvroX8HGv3L5Vp/foP2p76i/akQjtQ32H7ky5W1Vx6xSlwlrhJXiavEVeIqcZW4SlwlrhJXiavEVeIqcZW4SlwlrhLX3FmV3zqnfrN/ExP9qsUodrgPXucxBqrOerd1BveBB0GDuK310L+DQnJxkIf+rTf6l8vItzWy1kpct3lWyQFhlRwQVskBYZUcEFbJAWGVHBBWyQFhlRwQVskBYZUcEFbJAWGVHBBWyQFhlRwQ1i2dA8pvg1u/LQnDr1qM4pe+YuDfRwxUnY1u6wzeuWiCBnFbG6F/m0JysclD/zYa/ctl5MsXVuV3sIdcbLTIxcEeY6DqbPaQi0OgQdzWZujfISH9O8RD/zYb/ctl5MsX1gTYCmKbbLy/EGxDta0L2IZpWxHYhkOb2DZC24rBNlLbuoFtO+DidVrb+oMto23lcHyL3i4D2yi93RNso/V2b7CN0dsVYNteb/cF21hmAdsOersSbOP0dhXYdtTb1WAbr7cHgm2C3k6BbaLx2apsOxmfcco2yZj3lK3VmH+UbbKRf8q2s94uiW2yTYGcZdtUbSsF2zSOPdh24T4C23Rt6w62GdrWA2wzQ/g4P5vBxvmJ+cz5ORRsnJ/DwMb5ORxsnJ8jwMb5ORJsnJ+Yrxy3NNg4bhmwcdxawMZxGwU2jttosHHcxoCN47Y92Hpq21iw9dK2HcDWW9vGga2Ptu0ItgptGw+2vto2AWz9tG0i2Hjc7gS2Sm2bBLYB2tYKtiptmwy2am3bGWw12jYFbAO1bSrYarVtGthS2rYL2Oq0bTrY6rVtBtgGadtMmN+6wrGtep3+eksGffESN8qtsM3+g3eN3bKkk8BSB35qnfppCYZRStdVoLc5v2rBb40bvxneUH6rjfgxB/sqhGOe04O8TB9f7TQO6WCaqAGeFPBUAw8f85LmUfPg3NKO7XDJhWOCl85yEnPFUZ8xShrHcS4sGE+3eZu9/nWcA+ng70c5rlPVMQBiktJrZk/C/iqI1wDH8cLxxvVyGfmEVViFVViFVViFVViFVViFVViFVViFVViFVViFVVjzhVWx1Buc+HyrPgJ8bMPnLa7vbePzQK5bPbvYC55dpJz6zD5bwucRKWBgX4VwzPmlm7j21dslsJ/7Cp8xYv+5fd6R7T/2w/VymX2VQFuw/1w/78DndFzv1uu35Uj3Y6AlrVIKnzub4477FJ+9sg2f86k+57xr0Gt8NtbgLS659QeOmRTYeHsQ8LmNccbHM7SMqmMA9AO3jf0Uwv6lMIe0lW7qG3O+UPvXhOznJW6UW2Ebn1s3uW1rMGcOhvpbwQf6bXbrN4N+41rsg+2FsH0yv2ADx6mF48vMKu8aQ47D7VrjnCTsb/Tc5ibgaIUy+1J5sgJyag18Xrr+vMH2Ylz6QVx4fwri4nq8qbiY13fMUAUsDQYnXlfhHNjoge+fXVc1Ah/baoCP24HzyVpgTTll7XgNZL5fkwK/jj4nOrxfg+9f1AEH+8L3WS7Vea3erzGve1JwbiXU+U28E2R+NuM7QVcB8zf1ThDzhL0TdB3MExu/4vq1xrB54M8gP9dbY/DjdUGNP5acYunrOxjPWer9VORgX4VwzJ1GTjn+fM/+hiDWcensWqMJYjPYcWw8fKZmf0MA/OZnfxL2V0DbhjhuG16/cL1cRr5cWQdGgLU5hBWv+auM4xTrUKesLcH1/TCndWave4brutTcmdLb7KcQ9q+FOXYdXL9zm+ugnvUh+3npbMwNhfiNdNvW4DNuO6i/FXyg37Rbvxn0y9f37IPthbD9NlzfpzdtfhlfZlZ5NyLkONxuNs5Jwv4Rnts8Ejhaocy+VJ68ADm1Hq7vXY9zbC/GpRLiwvvxOrveOD74/Y/exusH1+MyDn64Xi4PAz62DYGYbvR2XzHLVQdcqdjm9xXxfifOCXi/s8gDV5dYx3hxmX0pv8WO/eJvb3jpbH4rBpaujlnU73h46ljZ3rZizsL5B6xY3D4/DlxFBmMBsBXAvkLjuOLY5u1yBl4R6xi8Ag3QRQNzx6kG8g+Rkrqx6mJR/ZBI/XBI/VBI/TBI/RBI/fCnD9T7ol4rX+qHPeqLoPrhjkpUdTGqBr26GFYXqOqCQ324p2LZBFYDXd24U1+s1Ye/ujBUF4RqUlADT314qEGpBqOaRNREpyZzNdGpmaeFNIo0mjSGtD1pLGkH0jjSjqTxpAmkiaSdSJN0fCeTdiZNIU0lTSPtQppOmkGaSdqVtBtpd9IepG+R9iTtRdqbtA9pFmlf0n6k/UkHkA4kHUQ6mHQI6VDSYaTDSUeQZpPmkOaSjiTNI80nLSAtJC0iLSYdRTqatIS0lLSM1EZaTjqGtIK0ktROWkU6lrSadBzpeNIJpBNJJ5FOJq0hnUI6lXQa6XTSGaQzSWeRziadQzqXdB7pfNIFpAtJF5EuJl1CupR0Gely0hWkK0lXka4mXUO6lnQd6XrSDaQbSTeRbibdQrqVdBvpdtIdpDtJd5HuJt1Dupd0H+l+0gOkB0kPkR4mPUJ6lPQY6XHSE6QnSU+RniY9E8ve/HiWtI70HOl50guxbK6+RHqZ9ArpVdJrpNdJb5DeJL1Fepu0nrSB9A7pXdJ7pPdJH5A+JH1E2hjbfOCr5Qs9G03Q5VnZSSO1cklbeyqdWkb/zlmypG31/HkjU7hvZWrpqpXtqZXtc1a0pxasaFuayozEetfpH+jw5D+nvX3+0uXtqfY2OnFJ++LlS45PrV7cvijVduz8FQvIAZ58SenXOPlKfXL15ifPmTfvn593hz6Pfy44c9m8+cel2la1p9oWpOa2rVo2b+X/A/UIbnZGOQIA",
542
- "debug_symbols": "5Z3LbmbXcUbfpcdCcPauu18lyMDIBQhg2EHsmeF3DwU02W2YirSckKoPHqlBnH1UW9X/V9TqrsU/f/ndH/71t3/6zz/8/o9ffvPnL88/1f3ym3/+85c//tdvf//jF/74p9/+95++/Ob54cu///7fXv75lx++/Md//u7fv/zmnvOXf/nhxwNGDzg9EPRA0gNFDzQ9ML/8wA9/89ypzK+Pnhp/e9q/vr2fD337+dC33w99u33o2/1D3x4f+vb80LfXh769P/TtH/pZnQ/9rM6HflbnQz+r86Gf1fnQz+p86Gd1PvSzOh/6WZ0P/azOh35Wz/N87OvPx77+fuzr/0+f1/s88fXR+9z6/vXv1eL2Vot/q+U89VqMbyomNhWTm4qpTcX0pmJmUTHn2VTM2VTM3VTMpgQ+mxL4bErgsymBz6YEPpsS+GxK4Lspge+mBL6bEvhuSuC7KYHvpgS+mxL4bkrguymB76YEtk0JbJsS2DYlsG1KYNuUwLYpgW1TAtumBLZNCWybEtg3JbBvSmDflMC+KYF9UwL7pgT2TQnsmxLYNyWwb0rg2JTAsSmBY1MCx6YEjk0JHJsSODYlcGxK4NiUwLEpgXNTAuemBM5NCZybEjg3JXBuSuDclMC5KYFzUwLnpgSuTQlcmxK4NiVwbUrg2pTAtSmBa1MC16YErk0JXJsSuDclcH/mR3te33v6x9f9bTGxqZjP+w18/a1NL798t02zqJh5NhVzNhVzNxXzed9C9Atl+Ppwv/xv9XfFvP7t+vFNxcQntqn69eGw/qs2sae/lp66pdfS0s8z9frucx6b94pv5eJHt/j70BXu+xg+4fhE4BOJTxQ+0fjE0BNkmeLriYNP4J4f3PODe35wzw/u+cE9P7jnB/f84p5f3POLe35xzy/u+cU9v7jnF/f84p5f3HPDPTfcc8M9N9xzwz033HPDPTfcc8M9N9xzxz133HPHPXfcc8c9d9xzxz133HPHPXfc88A9D9zzwD0P3PPAPQ/c88A9D9zzwD0P3PPEPU/c88Q9T9zzxD1P3PPEPU/c88Q9T9zzwj0v3HOs27rYt3WxcOti49bFyq2LnVsXS7du4Z437nnjnjfueeOeN+5545437nnjnjfueeOeD+754J4P7vngng/u+eCeD+754J4P7vnQntvz4BMHn7j4hOETjk8EPpH4ROETjU/gnmMOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMMZ5nCGOZxhDmeYwxnmcIY5nGEOZ5jDGeZwhjmcYQ5nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwznmcI45nGMO55jDOeZwjjmcYw7nmMM55nCOOZxjDueYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDBeZwgTlcYA4XmMMF5nCBOVxgDheYwwXmcIE5XGAOF5jDJeZwiTlcYg6XmMMl5nCJOVxiDpeYwyXmcIk5XGIOl5jDJeZwiTlcYg6XmMMl5nCJOVxiDpeYwyXmcIk5XGIOl5jDJeZwiTlcYg6XmMMl5nCJOVxiDpeYwyXmcIk5XGIOl5jDJeZwiTlc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"
1068
+ "bytecode": "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",
1069
+ "debug_symbols": "q1bKyU9OLMnMzytWsqqurQUA"
543
1070
  },
544
1071
  {
545
- "name": "entrypoint",
546
- "function_type": "Secret",
547
- "is_internal": false,
1072
+ "name": "set_is_valid_storage",
1073
+ "function_type": "Open",
1074
+ "is_internal": true,
548
1075
  "abi": {
549
1076
  "parameters": [
550
1077
  {
551
1078
  "name": "inputs",
552
1079
  "type": {
553
1080
  "kind": "struct",
554
- "path": "authwit::aztec::abi::PrivateContextInputs",
1081
+ "path": "authwit::aztec::abi::PublicContextInputs",
555
1082
  "fields": [
556
1083
  {
557
1084
  "name": "call_context",
@@ -604,60 +1131,140 @@
604
1131
  }
605
1132
  },
606
1133
  {
607
- "name": "block_header",
608
- "type": {
609
- "kind": "struct",
610
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
611
- "fields": [
612
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
613
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
614
- { "name": "contract_tree_root", "type": { "kind": "field" } },
615
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
616
- { "name": "archive_root", "type": { "kind": "field" } },
617
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
618
- { "name": "global_variables_hash", "type": { "kind": "field" } }
619
- ]
620
- }
621
- },
622
- {
623
- "name": "contract_deployment_data",
1134
+ "name": "historical_header",
624
1135
  "type": {
625
1136
  "kind": "struct",
626
- "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1137
+ "path": "authwit::aztec::protocol_types::header::Header",
627
1138
  "fields": [
628
1139
  {
629
- "name": "deployer_public_key",
1140
+ "name": "last_archive",
630
1141
  "type": {
631
1142
  "kind": "struct",
632
- "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1143
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
633
1144
  "fields": [
634
- { "name": "x", "type": { "kind": "field" } },
635
- { "name": "y", "type": { "kind": "field" } }
1145
+ { "name": "root", "type": { "kind": "field" } },
1146
+ {
1147
+ "name": "next_available_leaf_index",
1148
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1149
+ }
636
1150
  ]
637
1151
  }
638
1152
  },
639
- { "name": "constructor_vk_hash", "type": { "kind": "field" } },
640
- { "name": "function_tree_root", "type": { "kind": "field" } },
641
- { "name": "contract_address_salt", "type": { "kind": "field" } },
1153
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
642
1154
  {
643
- "name": "portal_contract_address",
1155
+ "name": "state",
644
1156
  "type": {
645
1157
  "kind": "struct",
646
- "path": "authwit::aztec::protocol_types::address::EthAddress",
647
- "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1158
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
1159
+ "fields": [
1160
+ {
1161
+ "name": "l1_to_l2_message_tree",
1162
+ "type": {
1163
+ "kind": "struct",
1164
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1165
+ "fields": [
1166
+ { "name": "root", "type": { "kind": "field" } },
1167
+ {
1168
+ "name": "next_available_leaf_index",
1169
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1170
+ }
1171
+ ]
1172
+ }
1173
+ },
1174
+ {
1175
+ "name": "partial",
1176
+ "type": {
1177
+ "kind": "struct",
1178
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
1179
+ "fields": [
1180
+ {
1181
+ "name": "note_hash_tree",
1182
+ "type": {
1183
+ "kind": "struct",
1184
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1185
+ "fields": [
1186
+ { "name": "root", "type": { "kind": "field" } },
1187
+ {
1188
+ "name": "next_available_leaf_index",
1189
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1190
+ }
1191
+ ]
1192
+ }
1193
+ },
1194
+ {
1195
+ "name": "nullifier_tree",
1196
+ "type": {
1197
+ "kind": "struct",
1198
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1199
+ "fields": [
1200
+ { "name": "root", "type": { "kind": "field" } },
1201
+ {
1202
+ "name": "next_available_leaf_index",
1203
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1204
+ }
1205
+ ]
1206
+ }
1207
+ },
1208
+ {
1209
+ "name": "contract_tree",
1210
+ "type": {
1211
+ "kind": "struct",
1212
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1213
+ "fields": [
1214
+ { "name": "root", "type": { "kind": "field" } },
1215
+ {
1216
+ "name": "next_available_leaf_index",
1217
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1218
+ }
1219
+ ]
1220
+ }
1221
+ },
1222
+ {
1223
+ "name": "public_data_tree",
1224
+ "type": {
1225
+ "kind": "struct",
1226
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1227
+ "fields": [
1228
+ { "name": "root", "type": { "kind": "field" } },
1229
+ {
1230
+ "name": "next_available_leaf_index",
1231
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1232
+ }
1233
+ ]
1234
+ }
1235
+ }
1236
+ ]
1237
+ }
1238
+ }
1239
+ ]
1240
+ }
1241
+ },
1242
+ {
1243
+ "name": "global_variables",
1244
+ "type": {
1245
+ "kind": "struct",
1246
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
1247
+ "fields": [
1248
+ { "name": "chain_id", "type": { "kind": "field" } },
1249
+ { "name": "version", "type": { "kind": "field" } },
1250
+ { "name": "block_number", "type": { "kind": "field" } },
1251
+ { "name": "timestamp", "type": { "kind": "field" } }
1252
+ ]
648
1253
  }
649
1254
  }
650
1255
  ]
651
1256
  }
652
1257
  },
653
1258
  {
654
- "name": "private_global_variables",
1259
+ "name": "public_global_variables",
655
1260
  "type": {
656
1261
  "kind": "struct",
657
- "path": "authwit::aztec::abi::PrivateGlobalVariables",
1262
+ "path": "authwit::aztec::abi::PublicGlobalVariables",
658
1263
  "fields": [
659
1264
  { "name": "chain_id", "type": { "kind": "field" } },
660
- { "name": "version", "type": { "kind": "field" } }
1265
+ { "name": "version", "type": { "kind": "field" } },
1266
+ { "name": "block_number", "type": { "kind": "field" } },
1267
+ { "name": "timestamp", "type": { "kind": "field" } }
661
1268
  ]
662
1269
  }
663
1270
  }
@@ -665,56 +1272,18 @@
665
1272
  },
666
1273
  "visibility": "private"
667
1274
  },
668
- {
669
- "name": "payload",
670
- "type": {
671
- "kind": "struct",
672
- "path": "authwit::entrypoint::EntrypointPayload",
673
- "fields": [
674
- {
675
- "name": "function_calls",
676
- "type": {
677
- "kind": "array",
678
- "length": 4,
679
- "type": {
680
- "kind": "struct",
681
- "path": "authwit::entrypoint::FunctionCall",
682
- "fields": [
683
- { "name": "args_hash", "type": { "kind": "field" } },
684
- {
685
- "name": "function_selector",
686
- "type": {
687
- "kind": "struct",
688
- "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
689
- "fields": [
690
- { "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
691
- ]
692
- }
693
- },
694
- {
695
- "name": "target_address",
696
- "type": {
697
- "kind": "struct",
698
- "path": "authwit::aztec::protocol_types::address::AztecAddress",
699
- "fields": [{ "name": "inner", "type": { "kind": "field" } }]
700
- }
701
- },
702
- { "name": "is_public", "type": { "kind": "boolean" } }
703
- ]
704
- }
705
- }
706
- },
707
- { "name": "nonce", "type": { "kind": "field" } }
708
- ]
709
- },
710
- "visibility": "public"
711
- }
1275
+ { "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" },
1276
+ { "name": "value", "type": { "kind": "boolean" }, "visibility": "private" }
712
1277
  ],
713
- "param_witnesses": { "inputs": [{ "start": 0, "end": 23 }], "payload": [{ "start": 23, "end": 40 }] },
1278
+ "param_witnesses": {
1279
+ "inputs": [{ "start": 0, "end": 30 }],
1280
+ "message_hash": [{ "start": 30, "end": 31 }],
1281
+ "value": [{ "start": 31, "end": 32 }]
1282
+ },
714
1283
  "return_type": {
715
1284
  "abi_type": {
716
1285
  "kind": "struct",
717
- "path": "authwit::aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
1286
+ "path": "authwit::aztec::protocol_types::abis::public_circuit_public_inputs::PublicCircuitPublicInputs",
718
1287
  "fields": [
719
1288
  {
720
1289
  "name": "call_context",
@@ -767,20 +1336,40 @@
767
1336
  { "name": "args_hash", "type": { "kind": "field" } },
768
1337
  { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
769
1338
  {
770
- "name": "read_requests",
1339
+ "name": "contract_storage_update_requests",
771
1340
  "type": {
772
1341
  "kind": "array",
773
- "length": 32,
1342
+ "length": 16,
774
1343
  "type": {
775
1344
  "kind": "struct",
776
- "path": "authwit::aztec::protocol_types::abis::side_effect::SideEffect",
1345
+ "path": "authwit::aztec::protocol_types::contrakt::storage_update_request::StorageUpdateRequest",
777
1346
  "fields": [
778
- { "name": "value", "type": { "kind": "field" } },
779
- { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1347
+ { "name": "storage_slot", "type": { "kind": "field" } },
1348
+ { "name": "old_value", "type": { "kind": "field" } },
1349
+ { "name": "new_value", "type": { "kind": "field" } }
780
1350
  ]
781
1351
  }
782
1352
  }
783
1353
  },
1354
+ {
1355
+ "name": "contract_storage_reads",
1356
+ "type": {
1357
+ "kind": "array",
1358
+ "length": 16,
1359
+ "type": {
1360
+ "kind": "struct",
1361
+ "path": "authwit::aztec::protocol_types::contrakt::storage_read::StorageRead",
1362
+ "fields": [
1363
+ { "name": "storage_slot", "type": { "kind": "field" } },
1364
+ { "name": "current_value", "type": { "kind": "field" } }
1365
+ ]
1366
+ }
1367
+ }
1368
+ },
1369
+ {
1370
+ "name": "public_call_stack_hashes",
1371
+ "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
1372
+ },
784
1373
  {
785
1374
  "name": "new_commitments",
786
1375
  "type": {
@@ -812,95 +1401,166 @@
812
1401
  }
813
1402
  }
814
1403
  },
815
- {
816
- "name": "private_call_stack_hashes",
817
- "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
818
- },
819
- {
820
- "name": "public_call_stack_hashes",
821
- "type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
822
- },
823
1404
  { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
824
- { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
825
- { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
826
1405
  {
827
1406
  "name": "unencrypted_logs_hash",
828
1407
  "type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
829
1408
  },
830
- { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
831
1409
  { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
832
1410
  {
833
- "name": "block_header",
1411
+ "name": "historical_header",
834
1412
  "type": {
835
1413
  "kind": "struct",
836
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
837
- "fields": [
838
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
839
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
840
- { "name": "contract_tree_root", "type": { "kind": "field" } },
841
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
842
- { "name": "archive_root", "type": { "kind": "field" } },
843
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
844
- { "name": "global_variables_hash", "type": { "kind": "field" } }
845
- ]
846
- }
847
- },
848
- {
849
- "name": "contract_deployment_data",
850
- "type": {
851
- "kind": "struct",
852
- "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1414
+ "path": "authwit::aztec::protocol_types::header::Header",
853
1415
  "fields": [
854
1416
  {
855
- "name": "deployer_public_key",
1417
+ "name": "last_archive",
1418
+ "type": {
1419
+ "kind": "struct",
1420
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1421
+ "fields": [
1422
+ { "name": "root", "type": { "kind": "field" } },
1423
+ {
1424
+ "name": "next_available_leaf_index",
1425
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1426
+ }
1427
+ ]
1428
+ }
1429
+ },
1430
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1431
+ {
1432
+ "name": "state",
856
1433
  "type": {
857
1434
  "kind": "struct",
858
- "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1435
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
859
1436
  "fields": [
860
- { "name": "x", "type": { "kind": "field" } },
861
- { "name": "y", "type": { "kind": "field" } }
1437
+ {
1438
+ "name": "l1_to_l2_message_tree",
1439
+ "type": {
1440
+ "kind": "struct",
1441
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1442
+ "fields": [
1443
+ { "name": "root", "type": { "kind": "field" } },
1444
+ {
1445
+ "name": "next_available_leaf_index",
1446
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1447
+ }
1448
+ ]
1449
+ }
1450
+ },
1451
+ {
1452
+ "name": "partial",
1453
+ "type": {
1454
+ "kind": "struct",
1455
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
1456
+ "fields": [
1457
+ {
1458
+ "name": "note_hash_tree",
1459
+ "type": {
1460
+ "kind": "struct",
1461
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1462
+ "fields": [
1463
+ { "name": "root", "type": { "kind": "field" } },
1464
+ {
1465
+ "name": "next_available_leaf_index",
1466
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1467
+ }
1468
+ ]
1469
+ }
1470
+ },
1471
+ {
1472
+ "name": "nullifier_tree",
1473
+ "type": {
1474
+ "kind": "struct",
1475
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1476
+ "fields": [
1477
+ { "name": "root", "type": { "kind": "field" } },
1478
+ {
1479
+ "name": "next_available_leaf_index",
1480
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1481
+ }
1482
+ ]
1483
+ }
1484
+ },
1485
+ {
1486
+ "name": "contract_tree",
1487
+ "type": {
1488
+ "kind": "struct",
1489
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1490
+ "fields": [
1491
+ { "name": "root", "type": { "kind": "field" } },
1492
+ {
1493
+ "name": "next_available_leaf_index",
1494
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1495
+ }
1496
+ ]
1497
+ }
1498
+ },
1499
+ {
1500
+ "name": "public_data_tree",
1501
+ "type": {
1502
+ "kind": "struct",
1503
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1504
+ "fields": [
1505
+ { "name": "root", "type": { "kind": "field" } },
1506
+ {
1507
+ "name": "next_available_leaf_index",
1508
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1509
+ }
1510
+ ]
1511
+ }
1512
+ }
1513
+ ]
1514
+ }
1515
+ }
862
1516
  ]
863
1517
  }
864
1518
  },
865
- { "name": "constructor_vk_hash", "type": { "kind": "field" } },
866
- { "name": "function_tree_root", "type": { "kind": "field" } },
867
- { "name": "contract_address_salt", "type": { "kind": "field" } },
868
1519
  {
869
- "name": "portal_contract_address",
1520
+ "name": "global_variables",
870
1521
  "type": {
871
1522
  "kind": "struct",
872
- "path": "authwit::aztec::protocol_types::address::EthAddress",
873
- "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1523
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
1524
+ "fields": [
1525
+ { "name": "chain_id", "type": { "kind": "field" } },
1526
+ { "name": "version", "type": { "kind": "field" } },
1527
+ { "name": "block_number", "type": { "kind": "field" } },
1528
+ { "name": "timestamp", "type": { "kind": "field" } }
1529
+ ]
874
1530
  }
875
1531
  }
876
1532
  ]
877
1533
  }
878
1534
  },
879
- { "name": "chain_id", "type": { "kind": "field" } },
880
- { "name": "version", "type": { "kind": "field" } }
1535
+ {
1536
+ "name": "prover_address",
1537
+ "type": {
1538
+ "kind": "struct",
1539
+ "path": "authwit::aztec::protocol_types::address::AztecAddress",
1540
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1541
+ }
1542
+ }
881
1543
  ]
882
1544
  },
883
1545
  "visibility": "public"
884
1546
  },
885
1547
  "return_witnesses": [
886
- 3517, 3518, 3519, 3520, 3521, 3522, 3523, 3524, 3525, 3526, 3527, 3528, 3529, 3530, 3531, 3532, 3533, 3534,
887
- 3535, 3536, 3537, 3538, 3539, 3540, 3541, 3542, 3543, 3544, 3545, 3546, 3547, 3548, 3549, 3550, 3551, 3552,
888
- 3553, 3554, 3555, 3556, 3557, 3558, 3559, 3560, 3561, 3562, 3563, 3564, 3565, 3566, 3567, 3568, 3569, 3570,
889
- 3571, 3572, 3573, 3574, 3575, 3576, 3577, 3578, 3579, 3580, 3581, 3582, 3583, 3584, 3585, 3586, 3587, 3588,
890
- 3589, 3590, 3591, 3592, 3593, 3594, 3595, 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606,
891
- 3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618, 3619, 3620, 3621, 3622, 3623, 3624,
892
- 3625, 3626, 3627, 3628, 3629, 3630, 3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642,
893
- 3643, 3644, 3645, 3646, 3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658, 3659, 3660,
894
- 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3670, 3671, 3672, 3673, 3674, 3675, 3676, 3677, 3678,
895
- 3679, 3680, 3681, 3682, 3683, 3684, 3685, 3686, 3687, 3688, 3689, 3690, 3691, 3692, 3693, 3694, 3695, 3696,
896
- 3697, 3698, 3699, 3700, 3701, 3702, 3703, 3704, 3705
1548
+ 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58,
1549
+ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1550
+ 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1551
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
1552
+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
1553
+ 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
1554
+ 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198,
1555
+ 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
1556
+ 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232
897
1557
  ]
898
1558
  },
899
- "bytecode": "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",
900
- "debug_symbols": "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"
1559
+ "bytecode": "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",
1560
+ "debug_symbols": "5Z3NjlzZca3fpceNixP/sfUqF3cgXNuAAUM2LM0EvbuPYGaxBSdNrmpW9lrsURcSZ5+M7MhcUfzI+PKvP/3bv///P/7lX//9T3/+6Q9//en6P7bnpz/837/+9Of/+OOf/v7In//yx//8y09/uH7+6Z//9E/3f//280//8q//9s8//cHd/vb/fv77iXPBJww+4fCJgE8kfKLgE/3tJ37+H9fd/6v306X36+u3qzMft5+Pvf1+7O3PR97er+tjb28fe3v/2NvHx94+P/b29bG374+9/Xzs7fdjb/+xn1r72E+tfeyn1j72U2sf+6m1j/3U2sd+au1jP7X2sZ9a+9hPrX3sp9Z/3ad2Yh63nzq/vP2zi9feLl5/u9iufRRjTMU4UzHBVEwyFVNMxTRTMcNUzDIVc4iKCaYEDqYEDqYEDqYEDqYEDqYEDqYEDqYEDqYEDqYETqYETqYETqYETqYETqYETqYETqYETqYETqYETqYELqYELqYELqYELqYELqYELqYELqYELqYELqYELqYEbqYEbqYEbqYEbqYEbqYEbqYEbqYEbqYEbqYEbqYEHqYEHqYEHqYEHqYEHqYEHqYEHqYEHqYEHqYEHqYEXqYEXqYEXqYEXqYEXqYEXqYEXqYEXqYEXqYEXqYEPkwJfJgS+DAl8GFK4MOUwIcpgQ9TAh+mBD5MCXyIEjguogSOiyiB4yJK4LiIEjguogSOiyiB4yJK4LiIEjguogSOiymBjSmBjSmBjSmBjSmBjSmBjSmBjSmBjSmBjSmBjSmBmXbigmknLph24oJpJy6YduKCaScumHbigmknLph24oJpJy6YduKCaScumHbigmknLph24oJpJy6YduKCaScumHbigmknLph24oJpJy6YduKCaScumHbigmknLph24oJpJy6YduKCaScumHbigmknLph24oJpJy6YduKCaScumHbigmknLph24oJpJy6YduKCaScuXrlstf5msNs8z4pppmJe9wb2fGvT/eOzNr1wpegbijGmYpypmGAqJl/3abru4fO4+rrj9hfl+KOc4irndVnjZf1oVU3/Q6uwqz+VPrqlL2npZtn5uLeV77Pij3DxL1yJ+oDi0W8WCGSb59OJX5VPnj5vcVyfX/M5j9v3x97+V2VC2KlPl94/Prv9fuzt0W/ACPgbMAL+BoyAvwEj4G/ACPgbMAL+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Tq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTqZWdTq3sdGplp1MrO51a2enUyk6nVnY6tbLTaZSdTqPsdBplp9MoO53mEp6wo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplJ1Oo+x0GmWn0yg7nUbZ6TTKTqdRdjqNstNplZ1Oq+x0WmWn0yo7nfYSnrCr7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y02mVnU6r7HRaZafTKjudVtnptMpOp1V2Oq2y0+koO52OstPpKDudjrLT6VzCE/YoO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Sg7nY6y0+koO52OstPpKDudjrLT6Qg7ne7HdCfs/ZjuhL0f052w92O6E/Z+THfC3o/pTtj7Md0Jez+mO2Hvx3Qn7P2Y8oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxStPWGGn01288oQVdjrdxQtPWFN2Opmy08mUnU6m7HSyS3jCmrLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nU3Y6mbLTyZSdTqbsdDJlp5MpO51M2elkyk4nV3Y6ubLTyZWdTq7sdPJLeMK6stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTidXdjq5stPJlZ1Orux0cmWnkys7nVzZ6eTKTqdQdjqFstMplJ1Ooex0ikt4woay0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1B2OoWy0ymUnU6h7HQKZadTKDudQtnpFMpOp1R2OqWy0ymVnU6p7HTKS3jCprLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nVHY6pbLTKZWdTqnsdEplp1MqO51S2emUyk6nUnY6lbLTqZSdTqXsdKpLeMKWstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdSdjqVstOplJ1Opex0KmWnUyk7nUrZ6VTKTqdWdjq1stOplZ1Orex06kt4wray06mVnU6t7HRqZadTKzudWtnp1MpOp1Z2OrWy06mVnU6t7HRqZadTKzud+qOdTo+nOS95mo/2JD2exl7zNN9jEtjJt6fZ+sob62vvlu8iFPq+FSVdRUVXUdNVNHQVLV1Fh62i7+LIgSq62/Lp4pmvDcX7z1ufrr3f8G/X5r5Vb9LVu3T1IV198lT/KKn4Smq+koavJHjOPA6edx7EvSuPg/beg/7eg/Heg/neg/Xeg/3eg/Peg+995+R7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"
901
1561
  },
902
1562
  {
903
- "name": "constructor",
1563
+ "name": "entrypoint",
904
1564
  "function_type": "Secret",
905
1565
  "is_internal": false,
906
1566
  "abi": {
@@ -962,18 +1622,127 @@
962
1622
  }
963
1623
  },
964
1624
  {
965
- "name": "block_header",
1625
+ "name": "historical_header",
966
1626
  "type": {
967
1627
  "kind": "struct",
968
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
1628
+ "path": "authwit::aztec::protocol_types::header::Header",
969
1629
  "fields": [
970
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
971
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
972
- { "name": "contract_tree_root", "type": { "kind": "field" } },
973
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
974
- { "name": "archive_root", "type": { "kind": "field" } },
975
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
976
- { "name": "global_variables_hash", "type": { "kind": "field" } }
1630
+ {
1631
+ "name": "last_archive",
1632
+ "type": {
1633
+ "kind": "struct",
1634
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1635
+ "fields": [
1636
+ { "name": "root", "type": { "kind": "field" } },
1637
+ {
1638
+ "name": "next_available_leaf_index",
1639
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1640
+ }
1641
+ ]
1642
+ }
1643
+ },
1644
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
1645
+ {
1646
+ "name": "state",
1647
+ "type": {
1648
+ "kind": "struct",
1649
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
1650
+ "fields": [
1651
+ {
1652
+ "name": "l1_to_l2_message_tree",
1653
+ "type": {
1654
+ "kind": "struct",
1655
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1656
+ "fields": [
1657
+ { "name": "root", "type": { "kind": "field" } },
1658
+ {
1659
+ "name": "next_available_leaf_index",
1660
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1661
+ }
1662
+ ]
1663
+ }
1664
+ },
1665
+ {
1666
+ "name": "partial",
1667
+ "type": {
1668
+ "kind": "struct",
1669
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
1670
+ "fields": [
1671
+ {
1672
+ "name": "note_hash_tree",
1673
+ "type": {
1674
+ "kind": "struct",
1675
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1676
+ "fields": [
1677
+ { "name": "root", "type": { "kind": "field" } },
1678
+ {
1679
+ "name": "next_available_leaf_index",
1680
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1681
+ }
1682
+ ]
1683
+ }
1684
+ },
1685
+ {
1686
+ "name": "nullifier_tree",
1687
+ "type": {
1688
+ "kind": "struct",
1689
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1690
+ "fields": [
1691
+ { "name": "root", "type": { "kind": "field" } },
1692
+ {
1693
+ "name": "next_available_leaf_index",
1694
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1695
+ }
1696
+ ]
1697
+ }
1698
+ },
1699
+ {
1700
+ "name": "contract_tree",
1701
+ "type": {
1702
+ "kind": "struct",
1703
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1704
+ "fields": [
1705
+ { "name": "root", "type": { "kind": "field" } },
1706
+ {
1707
+ "name": "next_available_leaf_index",
1708
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1709
+ }
1710
+ ]
1711
+ }
1712
+ },
1713
+ {
1714
+ "name": "public_data_tree",
1715
+ "type": {
1716
+ "kind": "struct",
1717
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
1718
+ "fields": [
1719
+ { "name": "root", "type": { "kind": "field" } },
1720
+ {
1721
+ "name": "next_available_leaf_index",
1722
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
1723
+ }
1724
+ ]
1725
+ }
1726
+ }
1727
+ ]
1728
+ }
1729
+ }
1730
+ ]
1731
+ }
1732
+ },
1733
+ {
1734
+ "name": "global_variables",
1735
+ "type": {
1736
+ "kind": "struct",
1737
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
1738
+ "fields": [
1739
+ { "name": "chain_id", "type": { "kind": "field" } },
1740
+ { "name": "version", "type": { "kind": "field" } },
1741
+ { "name": "block_number", "type": { "kind": "field" } },
1742
+ { "name": "timestamp", "type": { "kind": "field" } }
1743
+ ]
1744
+ }
1745
+ }
977
1746
  ]
978
1747
  }
979
1748
  },
@@ -984,7 +1753,7 @@
984
1753
  "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
985
1754
  "fields": [
986
1755
  {
987
- "name": "deployer_public_key",
1756
+ "name": "public_key",
988
1757
  "type": {
989
1758
  "kind": "struct",
990
1759
  "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
@@ -994,8 +1763,15 @@
994
1763
  ]
995
1764
  }
996
1765
  },
997
- { "name": "constructor_vk_hash", "type": { "kind": "field" } },
998
- { "name": "function_tree_root", "type": { "kind": "field" } },
1766
+ { "name": "initialization_hash", "type": { "kind": "field" } },
1767
+ {
1768
+ "name": "contract_class_id",
1769
+ "type": {
1770
+ "kind": "struct",
1771
+ "path": "authwit::aztec::protocol_types::contract_class::ContractClassId",
1772
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1773
+ }
1774
+ },
999
1775
  { "name": "contract_address_salt", "type": { "kind": "field" } },
1000
1776
  {
1001
1777
  "name": "portal_contract_address",
@@ -1022,9 +1798,53 @@
1022
1798
  ]
1023
1799
  },
1024
1800
  "visibility": "private"
1801
+ },
1802
+ {
1803
+ "name": "payload",
1804
+ "type": {
1805
+ "kind": "struct",
1806
+ "path": "authwit::entrypoint::EntrypointPayload",
1807
+ "fields": [
1808
+ {
1809
+ "name": "function_calls",
1810
+ "type": {
1811
+ "kind": "array",
1812
+ "length": 4,
1813
+ "type": {
1814
+ "kind": "struct",
1815
+ "path": "authwit::entrypoint::FunctionCall",
1816
+ "fields": [
1817
+ { "name": "args_hash", "type": { "kind": "field" } },
1818
+ {
1819
+ "name": "function_selector",
1820
+ "type": {
1821
+ "kind": "struct",
1822
+ "path": "authwit::aztec::protocol_types::abis::function_selector::FunctionSelector",
1823
+ "fields": [
1824
+ { "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
1825
+ ]
1826
+ }
1827
+ },
1828
+ {
1829
+ "name": "target_address",
1830
+ "type": {
1831
+ "kind": "struct",
1832
+ "path": "authwit::aztec::protocol_types::address::AztecAddress",
1833
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
1834
+ }
1835
+ },
1836
+ { "name": "is_public", "type": { "kind": "boolean" } }
1837
+ ]
1838
+ }
1839
+ }
1840
+ },
1841
+ { "name": "nonce", "type": { "kind": "field" } }
1842
+ ]
1843
+ },
1844
+ "visibility": "public"
1025
1845
  }
1026
1846
  ],
1027
- "param_witnesses": { "inputs": [{ "start": 0, "end": 23 }] },
1847
+ "param_witnesses": { "inputs": [{ "start": 0, "end": 34 }], "payload": [{ "start": 34, "end": 51 }] },
1028
1848
  "return_type": {
1029
1849
  "abi_type": {
1030
1850
  "kind": "struct",
@@ -1080,6 +1900,7 @@
1080
1900
  },
1081
1901
  { "name": "args_hash", "type": { "kind": "field" } },
1082
1902
  { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
1903
+ { "name": "meta_hwm", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
1083
1904
  {
1084
1905
  "name": "read_requests",
1085
1906
  "type": {
@@ -1095,6 +1916,41 @@
1095
1916
  }
1096
1917
  }
1097
1918
  },
1919
+ {
1920
+ "name": "nullifier_key_validation_requests",
1921
+ "type": {
1922
+ "kind": "array",
1923
+ "length": 1,
1924
+ "type": {
1925
+ "kind": "struct",
1926
+ "path": "authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
1927
+ "fields": [
1928
+ {
1929
+ "name": "public_key",
1930
+ "type": {
1931
+ "kind": "struct",
1932
+ "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
1933
+ "fields": [
1934
+ { "name": "x", "type": { "kind": "field" } },
1935
+ { "name": "y", "type": { "kind": "field" } }
1936
+ ]
1937
+ }
1938
+ },
1939
+ {
1940
+ "name": "secret_key",
1941
+ "type": {
1942
+ "kind": "struct",
1943
+ "path": "authwit::aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
1944
+ "fields": [
1945
+ { "name": "high", "type": { "kind": "field" } },
1946
+ { "name": "low", "type": { "kind": "field" } }
1947
+ ]
1948
+ }
1949
+ }
1950
+ ]
1951
+ }
1952
+ }
1953
+ },
1098
1954
  {
1099
1955
  "name": "new_commitments",
1100
1956
  "type": {
@@ -1144,18 +2000,127 @@
1144
2000
  { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
1145
2001
  { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
1146
2002
  {
1147
- "name": "block_header",
2003
+ "name": "historical_header",
1148
2004
  "type": {
1149
2005
  "kind": "struct",
1150
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
2006
+ "path": "authwit::aztec::protocol_types::header::Header",
1151
2007
  "fields": [
1152
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
1153
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
1154
- { "name": "contract_tree_root", "type": { "kind": "field" } },
1155
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
1156
- { "name": "archive_root", "type": { "kind": "field" } },
1157
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
1158
- { "name": "global_variables_hash", "type": { "kind": "field" } }
2008
+ {
2009
+ "name": "last_archive",
2010
+ "type": {
2011
+ "kind": "struct",
2012
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2013
+ "fields": [
2014
+ { "name": "root", "type": { "kind": "field" } },
2015
+ {
2016
+ "name": "next_available_leaf_index",
2017
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2018
+ }
2019
+ ]
2020
+ }
2021
+ },
2022
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
2023
+ {
2024
+ "name": "state",
2025
+ "type": {
2026
+ "kind": "struct",
2027
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
2028
+ "fields": [
2029
+ {
2030
+ "name": "l1_to_l2_message_tree",
2031
+ "type": {
2032
+ "kind": "struct",
2033
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2034
+ "fields": [
2035
+ { "name": "root", "type": { "kind": "field" } },
2036
+ {
2037
+ "name": "next_available_leaf_index",
2038
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2039
+ }
2040
+ ]
2041
+ }
2042
+ },
2043
+ {
2044
+ "name": "partial",
2045
+ "type": {
2046
+ "kind": "struct",
2047
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
2048
+ "fields": [
2049
+ {
2050
+ "name": "note_hash_tree",
2051
+ "type": {
2052
+ "kind": "struct",
2053
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2054
+ "fields": [
2055
+ { "name": "root", "type": { "kind": "field" } },
2056
+ {
2057
+ "name": "next_available_leaf_index",
2058
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2059
+ }
2060
+ ]
2061
+ }
2062
+ },
2063
+ {
2064
+ "name": "nullifier_tree",
2065
+ "type": {
2066
+ "kind": "struct",
2067
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2068
+ "fields": [
2069
+ { "name": "root", "type": { "kind": "field" } },
2070
+ {
2071
+ "name": "next_available_leaf_index",
2072
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2073
+ }
2074
+ ]
2075
+ }
2076
+ },
2077
+ {
2078
+ "name": "contract_tree",
2079
+ "type": {
2080
+ "kind": "struct",
2081
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2082
+ "fields": [
2083
+ { "name": "root", "type": { "kind": "field" } },
2084
+ {
2085
+ "name": "next_available_leaf_index",
2086
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2087
+ }
2088
+ ]
2089
+ }
2090
+ },
2091
+ {
2092
+ "name": "public_data_tree",
2093
+ "type": {
2094
+ "kind": "struct",
2095
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2096
+ "fields": [
2097
+ { "name": "root", "type": { "kind": "field" } },
2098
+ {
2099
+ "name": "next_available_leaf_index",
2100
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2101
+ }
2102
+ ]
2103
+ }
2104
+ }
2105
+ ]
2106
+ }
2107
+ }
2108
+ ]
2109
+ }
2110
+ },
2111
+ {
2112
+ "name": "global_variables",
2113
+ "type": {
2114
+ "kind": "struct",
2115
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
2116
+ "fields": [
2117
+ { "name": "chain_id", "type": { "kind": "field" } },
2118
+ { "name": "version", "type": { "kind": "field" } },
2119
+ { "name": "block_number", "type": { "kind": "field" } },
2120
+ { "name": "timestamp", "type": { "kind": "field" } }
2121
+ ]
2122
+ }
2123
+ }
1159
2124
  ]
1160
2125
  }
1161
2126
  },
@@ -1166,7 +2131,7 @@
1166
2131
  "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1167
2132
  "fields": [
1168
2133
  {
1169
- "name": "deployer_public_key",
2134
+ "name": "public_key",
1170
2135
  "type": {
1171
2136
  "kind": "struct",
1172
2137
  "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
@@ -1176,8 +2141,15 @@
1176
2141
  ]
1177
2142
  }
1178
2143
  },
1179
- { "name": "constructor_vk_hash", "type": { "kind": "field" } },
1180
- { "name": "function_tree_root", "type": { "kind": "field" } },
2144
+ { "name": "initialization_hash", "type": { "kind": "field" } },
2145
+ {
2146
+ "name": "contract_class_id",
2147
+ "type": {
2148
+ "kind": "struct",
2149
+ "path": "authwit::aztec::protocol_types::contract_class::ContractClassId",
2150
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2151
+ }
2152
+ },
1181
2153
  { "name": "contract_address_salt", "type": { "kind": "field" } },
1182
2154
  {
1183
2155
  "name": "portal_contract_address",
@@ -1197,18 +2169,22 @@
1197
2169
  "visibility": "public"
1198
2170
  },
1199
2171
  "return_witnesses": [
1200
- 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1201
- 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1202
- 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103,
1203
- 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125,
1204
- 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147,
1205
- 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
1206
- 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191,
1207
- 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212
2172
+ 1513, 1514, 1515, 1516, 1517, 1518, 1519, 1520, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530,
2173
+ 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1539, 1540, 1541, 1542, 1543, 1544, 1545, 1546, 1547, 1548,
2174
+ 1549, 1550, 1551, 1552, 1553, 1554, 1555, 1556, 1557, 1558, 1559, 1560, 1561, 1562, 1563, 1564, 1565, 1566,
2175
+ 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584,
2176
+ 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602,
2177
+ 1603, 1604, 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616, 1617, 1618, 1619, 1620,
2178
+ 1621, 1622, 1623, 1624, 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, 1636, 1637, 1638,
2179
+ 1639, 1640, 1641, 1642, 1643, 1644, 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656,
2180
+ 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674,
2181
+ 1675, 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, 1688, 1689, 1690, 1691, 1692,
2182
+ 1693, 1694, 1695, 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, 1709, 1710,
2183
+ 1711, 1712, 1713, 1714, 1715, 1716, 1717
1208
2184
  ]
1209
2185
  },
1210
- "bytecode": "H4sIAAAAAAAA/+Xd5XNUVxzG8U2yu6l7CU5wh9XsXdzdqtQLWzb1lir1UupOlXopdaeutLTUvcAfxPMMm5m8gFeczHDme2eeyUxe3NnP3rtXz/n9dqdSqR2pvUuT0qy0KO3d/udlRuNv7sCWfFrrSO9jvcVcR6lUrxTq+WJ+da5QrSXlXKlc60jySb6clNcUkmKxnpSSSrVWreSq+VKxnu8sV4udjRWnw33GXE+4M1pHpgfcmYPcndU6sj3gzgZ0d+33rd32+9R+9v8D/dxtgbdX19IceLuFNPeOxNwU0NwnEnNzQHPfSMwtAc39IjGnA5r7R2LOBDQPiMScDWgeGIm5NaB5UCTmtoDmdqB5MNA8BGgeCjQPA5qHA80jgOaRQPMooHk00DwGaB4LNI8DmscDzROA5olAcw5ozgPNBaC5CDSXgOYy0NwBNFeA5gRorgLNk4DmyUDzFKB5KtA8DWieDjTPAJpnAs2zgObZQPMcoHku0DwPaJ4PNC8AmhcCzYuA5sVA8xKgeSnQvAxoXg40rwCaTwKaTwaaTwGaTwWaTwOaTweaVwLNZwDNZwLNZwHNZwPN5wDN5wLN5wHN5wPNq4Dm1UBzDWi+AGheAzTXgeZOoPlCoPkioPlioPkSoPlSoPkyoPlyoPkKoPlKoHkt0HwV0Hw10HwN0Hwt0Hwd0Hw90LwOaL4BaL4RaL4JaL4ZaL4FaL4VaL4NaL4daF4PNN8BNG8Amu8Emu8Cmu8Gmu8Bmu8Fmu8Dmu8Hmh8Amh8Emh8Cmh8Gmh8Bmh8FmjcCzY8BzY8DzU8AzU8CzU8BzU8DzZuA5meA5meB5ueA5ueB5heA5heB5peA5peB5s1A8ytA8xag+VWg+TWg+XWg+Q2g+U2g+S2g+W2g+R2g+V2g+T2g+X2g+QOg+UOgeSvQ/BHQ/DHQ/AnQ/CnQ/BnQ/DnQ/AXQ/CXQ/BXQ/DXQ/A3Q/C3QvA1o/i4Sc2tA8/fA7bwdaP4BaP4RaN4BNP8ENP8cifmQgOZfIjEfGtD8ayTmwwKaf4vEfHhA8++RmI8IaP4jEvORAc1/RmI+KqD5r0jMRwc0/x2J+ZiA5n8iMR8b0PxvJObjApr/i8R8fEDz/5GYTwho3hmJ+cSA5l2RmHsFNO8OaG7rZm5quFuUtJJRsoqfX/q+0PdJvm/wdbSvK32d5esOn4d9XvJx2sct/469X3s79+q2/m2Nv72VPkpfpZ/SXxmgDFQGKe3KYGWIMlQZpgxXRigjlVHKaGWMMlYZp4xXJigT/Z0oeaXg71opKWWlQ6koiVJVJimTlSnKVGWaMr3x3c5UZimzlTnKXGWeMl9ZoCxUFimLlSXKUmWZslxZobj/vPuxuz+5+3W7f7X7Oa9U3O/X/W/dD9b9Ud0v1P0z3U/S/RVXKe6/V1Pcn839yty/y/2s3N/J/Y7c/8f9cNwfxv1S3D/E/TTcX2Kt4v4Drsfv+vSu1+765a7nvU5xvWfXP3Y9YNfHdb1Y1091PVHX11yvuP7iBsX1+VyvzvXbXM/M9b1c78r1n1wPyfWBXC/H9WNcT8X1RTYqrj/hegyuT+D5+p6/7vncmxTP9/X8V88H9fxIzxf0/DnPJ/P8qs2K599sUTw/w/MVPH7f49k9vtvjnT3+1+NhPT7U4yU9ftDj6Ty+bKvi8Ucej+PxKR6v4fELfp/v99t+3+v3n34f6Pdjfl/kfdPvE/x8fbvi569+Hunnc35e5ec3fp7h+3vf7/r+z/dDvj/w9bKvH3095esLn299/vHx2Mcn/167lj1HMZVAULsAAA==",
1211
- "debug_symbols": "q1bKyU9OLMnMzytWsqqurQUA"
2186
+ "bytecode": "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1JeLFOrLhITUlx97rC8e8zrrU35mUmRMqrjVzeigpl81bcWPB6VSmvJ91aN8q3TFSqVemvHrqwr18icex8WDbLmSj0+5asj2J4OqH+N/K2AsPL4nq77icbLqpwmYrPpPhUr5ripvjExh/KkC35MSoiS85rFceszrrE/5KTfmG5fQa7Exfy0pjXnWY1w/81hpTIUWiqpKRmVSOhnlG+e4hOAcmxCcHi/iyIwnnD+3hfYX1vylNX9lzV9b8zfWfN2a/8+a/2PN31rzDWv+zpq/t+YfbOeMOvJmZPlj9P4pev9siW9ZP1Otn/+N3H+J3r9G79+i9+/R+4/o/Wf0vm02mUfvv0zYaPhYF71bRW999A6K3sHROyR6h0bvsOjdOnobond49DZG7zbRu230bhe920fvDtG7Y/SOiN6donfn6N0leneN3t2id/fo3SN694zevaJ37+jdJ3r3jd509DZF78jo3S96R0Vvc/SOjt6W6N0/eluj94DobYveA6N3TPSOjd5x0WuGv9nozUVve/Tmo3f84N7y6ojcndHbFb0T7Le0/XZQ5J4Yve+K3knROzl6p0Tv1Og9OHoPid5p0Xto9E6P3hnROzN63x2974new6J3VvTOjt450Ts3eudF7/zoXRC9C6N3UfQujt4l0bs0epdF7/LoPdxiQeE/InKviN4jo/eo6D06eldG76ro7Y7e1dG7JnrXRu+66F0fvcdE73uj99joPS56j4/eE6L3xOg9KXpPjt5TovfU6D0tejdE7+nRe0b0nhm9Z0Xv2dF7TvS+L3rPjd7zovf86L0gei+M3oui9+LovSR6L43e90fvB6L3g9F7WfReHr1XCJlfGbmvit6ro/ca8e3ayH1d9H4oej88uPfWjesj9w2De+w3im8fidwfFbSbIvfHrP+brXmLNW+15m0izMcj9yfst9uteYc177TmXda825r3WPNea95nzfut+YA1H7TmQ9Z82JqPWPNRaz5mzcet+UlrfsqaT1jzSWs+FZmf2qnHPjRVfNIpT21bfm1HISmbSbI/NlteID98NDQo43VEQ9itiGbZSNVbmtnS8zWKe5Clb0W0wZZWT7QhAp+hDbWOwUQbRumAtrWlDSVag6UNI9pwS9uaaI3EC8xtLG040ba1tEaibWdp2xBte0vblmg7WBq2Ehmch1h7OuUrn7M5E+803/FGMZt4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",
2187
+ "debug_symbols": "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+jWdT7+m8+nXdD79ms6nX9P59Gs6n35N59Ov6Xz6NZ1Pv6bL6dd0Of2aLqdf0+X0a7qcfk2X06/pcvo1XU6/psvp13Q5/Zqup1/T9fRrup5+TdfTr+l6+jVdT7+m6+nXdD39mq6nX9P19GvaLcv5H+HO/wh//kes539EOP8j4vkfkc7/iHz+R5TzP+L8q9udf3W7869ud/7V7c6/ut35V7c7/+p251/d7vyr251/dbvzr25//tXtz7+6/flXtz//6vbnX93+/Kvbn391+/Ovbn/+1e3Pv7rX86/u9fyrez3/6l7Pv7rX86/u9fyrez3/6l7Pv7rX86/u9fyrO5x/dYfzr+5w/tUdzr+6w/lXdzj/6g7nX93h/Ks7nH91h/Ov7nj+1R3Pv7rj+Vf3+afP3PnHz9z558/c+QfQ3Pkn0Nz5R9Dc+WfQ3PmH0Nz5p9Dc+cfQ3Pnn0Nz5B9Hc+SfR3PlH0dz5Z9Hc+YfR3Pmn0dz5x9Hc+efR3PkH0tz5J9Lc+UfS3Pln0tz5h9Lc+afS3PnH0tz559Lc+QfT3Pkn09z5R9Pc+WfT3PmH09z5p9Pc+cfT3Pnn09z5B9Tc+SfU3PlH1Nz5Z9Tc+YfU3Pmn1Nz5x9Tc+efU3PkH1dz5J9Xc+UfV3Pln1fz5Z9X8+WfV/Pln1fz5Z9X8Es7/iHj+R6TzPyKf/xHl/I84/+o+/6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rJo//6yaP/+smj//rNp6/lm19fyzauv5Z9XW88+q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KSBnOgXkTKeAnOkUkDOdAnKmU0DOdIrImU4ROdMpImc6ReRMp7gAd9iInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOiXkTKeEnOmUkDOdEnKmU1qAO2xCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznTJyplNGznTKyJlOGTnTKS/AHTYjZzpl5EynjJzplJEznTJyplNGznTKyJlOGTnTKSNnOmXkTKeMnOmUkTOdMnKmU0bOdMrImU4ZOdMpI2c6ZeRMp4yc6ZSRM50ycqZTRs50ysiZThk50ykjZzpl5EynjJzplJEznTJyplNGznTKyJlOGTnTKSNnOmXkTKeMnOmUkTOdMnKm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XpsLentt/1sQLujttSPV6+21I9Xr7bUj1evttSPV6+21I9Xr7bUDk2HQ22tHqtfbaweqj4p77UD1invtQPWKe+1A9Yp77UD1invtQPWKe+1A9Yp77UD10L02QvfaCN1rE3SvTdC9NkH32gTda69O3xauHrrXJuhem6B7bYLutQm612boXpuhe22G7rUZutdena4tXD10r83QvTZD99oM3WszdK8t0L22QPfaAt1rBTJgl60g70MUrH7gnIJAUuud1Wfo6gt09RW5eoEE0Turd9DVe+jqV+jqA3T10L226u21A2cCq95eO3C6qOrttSPV6+21/er9orfXjlSvt9eOVK+3145Ur7fX9idDv+jttSPV6+21I9Ur7rUD1SvutQPVK+61A9Ur7rX96p3iXjtQveJeO1C94l47UD10rxVI9Lqzeuhe66B7rYPutQ661zroXuuhe62H7rUeutd66F4rkCZ0Z/XQvdZD91oP3Ws9dK/10L12he61K3SvXaF77QrdawWyi+6sHrrXrtC9doXutSt0rz2en+P89iGPBxROsPr+OQV/PD/n1upX6OoDdPURuvoEXX2Grr5AV1+Rqz+en3Nr9dC9Nurttf0zgT7q7bUDp4uO5+fcWr3eXjtSvd5eO1K93l47Ur3eXjtSvd5eOzAZJr29dqR6vb12pHrFvXagesW9dqB6xb12oHrFvXagesW9dqB6xb12oHrFvXageuhem6F7bYbutRm612boXns8P+fW6qF7bYbutRm612boXpuhe22B7rUFutcW6F5boHttge61BbrXFuheW6B7bYHutQW611boXluhe22F7rUVutcezy66p/q11v/05vtKy/ZjNZRn7W7/qfVXPxV+9VPxVz+VPv2pGP1/ehONkZe8/VO+/lh5/lj83Y+l3/1Y/t2Pld/9WP3Vj7W/8N//Mfe7H/O/+7Gj9523L90/IZz+CYe98hL2lNIl5c7dJ6SNaSjrv99R/i4oaSson1jQ/iHlig+pF3zI8a8Pj3yIu+JD/BUfsl7xIeGKD4lXfEi64kOuuOL9FVe8v+KKX6+44tcrrvj1iit+veKKP/4Fu8+Girh10RRLs4uuUVtBeh+zJV/214Z28Xqfsg0Ur/ch20Dxep+x9YsPeh+xDRSv9wnbQPF6H7ANFK/3+dpA8QG5eL1/yRooHrnDKv7e4UDxyB1W8bcO+8Ur/tLhQPHIHVbxVw4Higf9hvnfxYN+wfzv4kH/Zv5X8ahfu/q7eNC/mP9dPOgfzP8uHvTv5X8XH5CLV3wyrfuHMM1fuOoXr/hcWr94xcfS+sUr7rDd4jV/2apfvOIO2y9ecYftF6+4w/aLV9xh+8Ujd1jNX7PqF4/cYdV8yWovSEvX3Aq6+qtQb5+ZfH+tc3l7Z+fKSyimj8/yHXb5Hrv8Fbv8gF1+xC4/YZd/Zl/cP6Rc8SEXZ+13z/Bcve68X5DeRPz+HyEULzAfKF5vHv5A8QG5eL1p+APF6w3DHyhebxb+QPF6o/AHite7daZb/Kp4cflA8cAddlW8tnygeOAOuy7AHXZVvLN8oHjgDrsq3lg+UDxwh10V7yvvF694XflA8cgdVvGy8oHikTus4lXlA8Ujd1jFi8oHikfusIrXlA8Uj9xhFS/K7p45XhXvyR4oHnR95N/Fg26P/Lt40OWRfxcPuqf5r+JR1zT/XTzolua/i1e8pLl3qGjVvKO5X3xALl7xhuZ+8Yo7bL94xR22X7ziDtsvXnGH7RYfFHfYfvGKO2y/eOQOG5A77PFkijuL19Jh94K0dM29oIs74SfHFsNa/7zYheifr47hWX7BLr9Clx8X7PIddvkeu/wVu/yguHy3PMtfv5T//dU1bA9Ta3ypIsWn1MgjNfFI1dz5y1NqXdvXn+bOP1C+5s7fLz9p7vwD5Wvu/APla+78A+Vr7vwD5QeI8uPi2uVr7uYD5Wvu0APlK+660ee9/LC0y1fcdUfKV9x1B8rPirvuSPmKu+5I+Yq77kj5irvuSPmKu+6X8ku7fMVdd6R8xV13pHzNXTeXvfzaNg1Zc9cdKF9z1+2XXzR33YHyNXfdgfI1d92B8jV33YHyNXfd1/Jru3zNXXegfM1dd6D8M7vu/iHlig853sHyvg1rXdfeP0QvwmUVyJQRLshdW5Do9zQEMmVuLH5FLj4gFx+Ri0/IxWfk4gty8RW3+LAsyMUDd9iwAHfYsAB32LAAd9iwAHfYsAB32LAAd9iwAHfYsCB3WIfcYR1yh3XIHdYhd1iBTJkbi0fusA65wzrkDuuQO6xD7rAeucN65A7rkTusR+6wHrnDeuQO65E7rEfusB65w3rkDrsid9gVucOuyB12Re6wAjlKNxaP3GFX5A67InfYFbnDrsgdNiB32IDcYQNyhw3IHVYgR+nG4pE7bEDusAG5wwbkDhuQO2xE7rARucNG5A4bkTusQCLTjcUjd9iI3GEjcoeNyB02InfYhNxhE3KHTcgdNiF3WIHkoxuLR+6wCbnDJuQOm5A7bELusBm5w2bkDpuRO2xG7rACKUc3Fo/cYTNyh83IHTYjd9iM3GELcoctyB22IHfYgtxhBRKNbiweucMW5A5bkDtsQe6wBbnDVuQOi5zpFJAznQJyplNAznQKyJlOATnTKSBnOgXkTKeAnOkUkTOdInKmU0TOdIrImU5xAe6wETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznSKyJlOETnTKSJnOkXkTKeInOkUkTOdInKmU0TOdIrImU4ROdMpImc6ReRMp4ic6RSRM50icqZTRM50isiZThE50ykiZzpF5EyniJzpFJEznSJyplNEznRKyJlOCTnTKSFnOiXkTKe0AHfYhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzol5EynhJzplJAznRJyplNCznRKyJlOCTnTKSFnOiXkTKeEnOmUkDOdEnKmU0LOdErImU4JOdMpIWc6JeRMp4Sc6ZSQM50ScqZTQs50SsiZTgk50ykhZzpl5EynjJzplJEznTJyplNegDtsRs50ysiZThk50ykjZzpl5EynjJzplJEznTJyplNGznTKyJlOGTnTKSNnOmXkTKeMnOmUkTOdMnKmU0bOdMrImU4ZOdMpI2c6ZeRMp4yc6ZSRM50ycqZTRs50ysiZThk50ykjZzpl5EynjJzplJEznTJyplNGznTKyJlOGTnTKSNnOmXkTKeMnOmUkTOdMnKmU0bOdMrImU4ZOdMpI2c6ZeRMp4yc6ZSRM50ycqZTRs50ysiZThk50ykjZzpl5EynjJzplJEznTJyplNGznTKyJlOGTnTKSNnOmXkTKeMnOmUkTOdMnKmU0bOdMrImU4ZOdMpI2c6ZeRMp4yc6ZSRM50ycqZTRs50ysiZThk50ykjZzpl5EynjJzplJEznTJyplNGznTKyJlOGTnTKSNnOmXkTKeMnOmUkTOdMnKmU0bOdMrImU4ZOdMpI2c6ZeRMp4yc6ZSRM50KcqZTQc50KsiZTgU506kswB22IGc6FeRMp4Kc6VSQM50KcqZTQc50KsiZTgU506kgZzoV5EyngpzpVJAznQpyplNBznQqyJlOBTnTqSBnOhXkTKeCnOlUkDOdCnKmU0HOdCrImU4FOdOpIGc6FeRMp4Kc6VSQM50KcqZTQc50KsiZTgU506kgZzoV5EyngpzpVJAznQpyplNBznQqyJlOBTnTqSBnOhXkTKeCnOlUkDOdCnKmU0HOdCrImU4FOdOpIGc6FeRMp4Kc6VSQM50KcqZTQc50KsiZTgU506kgZzoV5EyngpzpVJAznQpyplNBznQqyJlOBTnTqSBnOhXkTKeCnOlUkDOdCnKmU0HOdCrImU4FOdOpIGc6FeRMp4Kc6VSQM50KcqZTQc50KsiZTgU506kgZzoV5EyngpzpVJAznQpyplNBznQqyJlOBTnTqSBnOhXkTKeCnOlUkDOdCnKmU0HOdCrImU4VOdOpImc6VeRMp4qc6VQX4A5bkTOdKnKmU0XOdKrImU4VOdOpImc6VeRMp4qc6VSRM50qcqZTRc50qsiZThU506kiZzpV5EynipzpVJEznSpyplNFznSqyJlOFTnTqSJnOlXkTKeKnOlUkTOdKnKmU0XOdKrImU4VOdOpImc6VeRMp4qc6VSRM50qcqZTRc50qsiZThU506kiZzpV5EynipzpVJEznSpyplNFznSqyJlOFTnTqSJnOlXkTKeKnOlUkTOdKnKmU0XOdKrImU4VOdOpImc6VeRMp4qc6VSRM50qcqZTRc50qsiZThU506kiZzpV5EynipzpVJEznSpyplNFznSqyJlOFTnTqSJnOlXkTKeKnOlUkTOdKnKmU0XOdKrImU4VOdOpImc6VeRMp4qc6VSRM50qcqZTRc50qsiZThU506kiZzpV5EynipzpVJEznSpyplNFznSqyJlOFTnTqSJnOlXkTCe3IIc6PaoH7rGP6oGb7KN64C77qB64zT6qB+6zj+qBG+2jeuBO+6geuNU+qofutcjxTo/qoXstcsDTo3roXosc8fSoHrrXIoc8PaqH7rXIMU+P6qF7LXLQ06N66F6LHPX0qB661yKHPT2qh+61yHFPj+qhey1y4NOjeuheixz59Kgeutcihz49qofutcixT4/qoXstcvDTo3roXosc/fSoHrrXIoc/PaqH7rXI8U+P6qF7LXIA1KN66F6LHAH1qB661yKHQD2qh+61yDFQj+qhey1yENSjeuheixwF9ageutcih0E9qofutchxUI/qoXstciDUo3roXoscCfWoHrrXIodCPaqH7rXIsVCP6qF7LXIw1KN66F6LHA31qB661yKHQz2qh+61yPFQj+qhey1yQNSjeuheixwR9ageutcih0Q9qofutcgxUY/qoXstclDUo3roXoscFfWoHrrXIodFPaqH7rXIcVGP6qF7LXJg1KN66F6LHBn1qB661yKHRj2qh+61yLFRj+qRe62Dzo1y0LlRDjo3ykHnRrkFudc66NwoB50b5aBzoxx0bpSDzo1y0LlRDjo3ykHnRjno3CgHnRvloHOjHHRulIPOjXLQuVEOOjfKQedGOejcKAedG+Wgc6McdG6Ug86NctC5UQ46N8pB50Y56NwoB50b5aBzoxx0bpSDzo1y0LlRDjo3ykHnRjno3CgHnRvloHOjHHRulIPOjXLQuVEOOjfKQedGOejcKAedG+Wgc6McdG6Ug86NctC5UQ46N8pB50Y56NwoB50b5aBzoxx0bpSDzo1y0LlRDjo3ykHnRjno3CgHnRvloHOjHHRulIPOjXLQuVEOOjfKQedGOejcKAedG+Wgc6McdG6Ug86NctC5UQ46N8pB50Y56NwoB50b5aBzoxx0bpSDzo1y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kDudGnKnU0PudGrInU4NudOpIXc6NeROp4bc6dSQO50acqdTQ+50asidTg2506khdzp15E6njtzp1JE7nTpyp1N/AG/Yjtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzp15E6njtzp1JE7nTpyp1NH7nTqyJ1OHbnTqSN3OnXkTqeO3OnUkTudOnKnU0fudOrInU4dudOpI3c6deROp47c6dSRO506cqdTR+506sidTh2506kjdzqlB3Kp03N64B37nB54yT6nB96yz+mB1+xzeuA9+5weeNE+pwfetM/pgVftc3roXYtc7/ScHnrXIhc8PaeH3rXIFU/P6aF3LXLJ03N66F2LXPP0nB561yIXPT2nh961yFVPz+mhdy1y2dNzeuhdi1z39JweetciFz49p4fetciVT8/poXctcunTc3roXYtc+/ScHnrXIhc/PaeH3rXI1U/P6aF3LXL503N66F2LXP/0nB561yIXQD2nh961yBVQz+mhdy1yCdRzeuhdi1wD9ZweetciF0E9p4fetchVUM/poXctchnUc3roXYtcB/WcHnrXIhdCPaeH3rXIlVDP6aF3LXIp1HN66F2LXAv1nB561yIXQz2nh961yNVQz+mhdy1yOdRzeuhdi1wP9ZweetciF0Q9p4fetcgVUc/poXctcknUc3roXYtcE/WcHnrXIhdFPaeH3rXIVVHP6aF3LXJZ1HN66F2LXBf1nB561yIXRj2nh961yJVRz+mhdy1yadRzeuhdi1wb9Zweedcm6N6oBN0blaB7oxJ0b1R6IO/aBN0blaB7oxJ0b1SC7o1K0L1RCbo3KkH3RiXo3qgE3RuVoHujEnRvVILujUrQvVEJujcqQfdGJejeqATdG5Wge6MSdG9Ugu6NStC9UQm6NypB90Yl6N6oBN0blaB7oxJ0b1SC7o1K0L1RCbo3KkH3RiXo3qgE3RuVoHujEnRvVILujUrQvVEJujcqQfdGJejeqATdG5Wge6MSdG9Ugu6NStC9UQm6NypB90Yl6N6oBN0blaB7oxJ0b1SC7o1K0L1RCbo3KkH3RiXo3qgE3RuVoHujEnRvVILujUrQvVEJujcqQfdGJejeqATdG5Wge6MSdG9Ugu6NStC9UQm6NypB90Yl6N6oBN0blaB7oxJ0b1SC7o1K0L1RCbo3KkH3RiXo3qgE3RuVoHujEnRvVILujUrQvVEJujcqQfdGJejeqATdG5Wge6MSdG9Ugu6NStC9UQm6NypB90Yt0L1RC3Rv1ALdG7VA90YtD+Rdu0D3Ri3QvVELdG/UAt0btUD3Ri3QvVELdG/UAt0btUD3Ri3QvVELdG/UAt0btUD3Ri3QvVELdG/UAt0btUD3Ri3QvVELdG/UEri7aO3rP1+79qPp477eG6YP3J+TU/nna3OqB9PHfc2xTB/3NccyfdzXHMv0GXr6uP7eMn3c1/tc6mv6th5MH/f13jJ9XH9vmT6uvzdMH7g/xzJ94F1rmD7wrjVMH3jXGqYPvGsN0wfetYbpoXdt4P4cy/TQuzZMf857ojCdOD8TfXknHj5L+d+v7e8hetsOpl+gp1/DTl8e9RWCyqP3n6/e0r/7Xfx2K85QrRuk1p/5C/j8FXz+Bj5/x57/22067vPH3em2+eNuddv8mHv9Z37MXf0zP/j+LeD7t4Dv3wK+fwv4/q3g+7eC798aeP+m9xQlnWa1sr2yWtnaflargXe1u9bAe/13Wn3fvVMD+4WhXAL7kKFcAvuboVwC+6ahXAL7sZFcWmCfN5RLYP84lMs0vtSZyzQe1plLFpddLvK7+1zkd/e5yO/uc5Hf3eciv7vLpcvv7nOR393nIr+7z0V+d59LFpddLvK7+1zkd/e5yO/uc5Hf3eciv7vHZX3I7+5zkd/d5yK/u89FfnefSxaXXS7yu/tc5Hf3ucjv7nOR393nIr+7yyXJ7+5zkd/d5yK/u89FfnefSxaXXS7yu/tc5Hf3ucjv7nOR393lsjD6l/PmzXVh9C8WLoz76Lw1cV0Y95GFC+M+snBh3EcWLozPXwxcVsbnLxYujP7lvKdpXRn9i4UL4/MXC5csLrtcKP2ugQul3zVwofS7Bi7z+90frfN72LfWPI0v/cV3Xlp5PShZWi0f3/mTzDTO1J3MNN7Uncw07tSdTBaZAzLTOFR3MtN4VHcy07jU35DpeXnN3LftgMw0PtWdzDSu1pvMRumBTWQoPbCJDKUHNpGh9MAmMpmQzPpIry9eH2s6IMPogW1kGD2wjQyjB7aRYfTANjKMHthEJvJdkcFkGD3w+uivmdf0qAdkGD2wjQyjB7aRySJzQIbTA1vIcHpgCxlOD2whw+mBy/ZDpv1B5n+/uufXPzT88cSibB8UOf2yM8XIN4OAKFL68PR+C8+atnX/tW6em0juZCh9uIlMFpkDMpQ+3ESG0oebyFD6cBMZSh/+SaYcPFec5/KSN5l5bi+5k+H0wD29yCyPfECG0wNbyHB6YAuZLDIHZDg9sIUMpwe2kOH0wBYynB74g0xaDshwemADmXnuMbmTofTAy/ZOB0s5yNrz3GRyJ0PpgU1kssgckKH0wCYylB7YRIbSA5vIUHrgTzL14JnePBeanMnkeW40uZOh9MBren3Gan1SOiBD6YFNZCg9sIlMFpkDMpQe2ESG0gObyFB6YBMZSg/8SWZdDshQemALmXnuNrmTwfTAP/NjOtWf+QP7yWV5feeyrPXkb+ayvEZe8n5LdY583chda2DP5641sItz1xrYl7lrDey03LUG9k6/07q9WoiXut9Wm5fAbshda2B/4641sBdy1zqNbzJozURap/FNBq2RfVN7Z5ellf3sEvmqlWn+yP6mvI7+lDU9Tv6utfz64nbkbyJflPLWGvlKlLvWyP7GW2tkf+OtNbK/8daaibRG9jfeWiP7G2+tkb2Qt1Yi3xT5ipG31shXjNy1EvmmyJeG3LUS+abI14DctRL5psgXe9y1EvmmyFd13LUS+abIl2/ctRL5psjXady1EvmmyBdk3LUS+abIV17ctc6yX9f+6qxde97XGvmqhrvWWV6Hc3p9cU4Hf4cjXzFw1zrL67BF6yyvwxats+RXi9ZZ8qtF6yz79fk39KW1HbwPKXKzvrvWWfKrRess+dWidRrfZNCaibRO45sMWjF908/8mF7oZ35Mf/MzP6Znec8fubF8Xd/v/V6zw+eNIneQu2sN7EPctQb2Ie5aM5HWwD7EXWtgH/I7reefwYnct+2uNbC/cdca2At5a43ccu2udRrfZNA6jW8yaJ3GNxm0ZgytW97PaZE7nU3zg/ibw/kDe5b8M3/+45rd5/yBfYhp/sjeoq3v+dt68lqV0uM1c0rLR0tuXt9qt8j9wTeojewv/NVGdhj+aiN7DH+1mUptZE/irzayg/FXG/kZjb/ayE9p/NVSeanIPbQ3qKXyUpGbaG9QS+WlIjfX3qCWyktFbq+9QS2Vl4rcYHuDWiovFbnF9ga1VF4qcpPtDWqpvFTkNtsb1FJ5qciNtjeopfJSkdtyb1BL5aUiN+beoJbKS0Vuzb1BLZWXityce4NaKi8VuT33BrVUXipyg+4Naqm8VOQW3RvUUnmpyE26N6il8lKR23RvUEvlpSI36t6glspLRW7VvUEtlZeK3Kx7g1oqLxW5XfcGtVReKnLD7g1qqbxU5JbdG9RSeamNyktF7lD2Vxu5RfkGtVReqlB5qcgd2TeozVRqqbxU5KbsG9RSeanIbdk3qKXyUpEbs29QS+WlIrdm36CWyktFbs6+QS2Vl4rcnn2DWiovFbmZ+wa1VF4qdOu3v1oqLxW6+dtfLZWXCt3+7a+WykuFbgD3V0vlpUK3gPurpfJSoZvA/dVSeanQbeD+aqm8VOhGcH+1VF4qdNu4v1oqLxW5yfwGtUxeqlD1nheq3vNC1XteqHrPyyNTqWXyUoWq97xQ9Z4Xqt7zQtV7Xqh6zwtV73mh6j0vVL3nhar3vFD1nheq3vNC1XteqHrPC1XveaHqPS9UveeFqve8UPWeF6re80LVe16oes8LVe95oeo9L1S954Wq97xQ9Z4Xqt7zQtV7Xqh6zwtV73mh6j0vVL3nhar3vFD1nheq3vNC1XteqHrPC1XveaHqPS9UveeFqve8UPWeF6re80LVe16oes8LVe95oeo9L1S954Wq97xQ9Z4Xqt7zQtV7Xqh6zwtV73mh6j0vVL3nhar3vFD1nheq3vNC1XteqHrPC1XveaHqPS9UveeFqve8UPWeF6re80LVe16oes8LVe95oeo9L1S954Wq97xQ9Z4Xqt7zQtV7Xqh6zwtV73mh6j0vVL3nhar3vFD1nheq3vNC1XteqHrPC1XveaHqPS9UveeFqve8UPWeF6re80LVe16oes8LVe95peo9r1S955Wq97xS9Z7XR6ZSy+SlKlXveaXqPa9UveeVqve8UvWeV6re80rVe16pes8rVe95peo9r1S955Wq97xS9Z5Xqt7zStV7Xql6zytV73ml6j2vVL3nlar3vFL1nleq3vNK1XteqXrPK1XveaXqPa9UveeVqve8UvWeV6re80rVe16pes8rVe95peo9r1S955Wq97xS9Z5Xqt7zStV7Xql6zytV73ml6j2vVL3nlar3vFL1nleq3vNK1XteqXrPK1XveaXqPa9UveeVqve8UvWeV6re80rVe16pes8rVe95peo9r1S955Wq97xS9Z5Xqt7zStV7Xql6z+s0bdFteX1xW/78zj9aZ9k/Fq2zvEK1XF4j53qgdZbXJ4vWWV6dDFqn6RG2aJ0l5Vm0Yma8n/kxd+bP/IH34LYu7y/ujzOHsy395XC2+vG9t8eH2sA57Aa1gXPYDWoDu5wb1Ab2OTeoDex0/NVG7vm9QW1gt3OD2sB+5wa1gd3RDWozlVoqLxW55/cGtVReKnLP7w1qmbxUi9zze4NaJi/VIvf83qCWyUu1R6ZSy+SlWuSe3xvUMnmpFrnn9wa1VF4qcs/vDWqpvFTknt8b1FJ5qcjtqL9Se/5elxa5G9Vba+T2zN9pPX2fQIvcnemudZZXJ4vWTKR1lpRn0YqZ8X7mx9yZP/MH3oN1Sa8vfr7Wnfxdy6X+88V/vIfpj79rgVOYt9bInZbuWgP7G3etgf2Nu9bA/sZdaybSGtjfuGsN7G/ctQb2Qu5aiXxT5AZLb62R+yvdtRL5psjdle5aiXxT5N5Kd61EvilyZ6W7ViLfFLmv0l0rkW+K3FXprpXIN0XuqXTXSuSbIndUumsl8k2R+yndtRL5psjdlO5aiXxT5F5Kd61EvilyJ6W7ViLfFLmP0l0rkW+K3EXprpXIN0XuoXTXSuSbKpFvqkS+qRL5psg9qu5aM5FWIt9UiXxT5H5cd61EvilyP6631sj9uO5aiXxT5H5cd61Evily7667ViLfFLlz110rkW+K3LfrrpXIN0Xu2nXXSuSbIvfsumsl8k2RO3bdtRL5psj9uu5aiXxT5G5dd608vqlH7tV118rjm3rkTl13rTy+qT8ykVYe39Qjd+m6a+XxTT1yj667ViLfFLlD110rkW+K3J/rrpXIN6VMpJXINyUi3xS5/9ldK5FvSkS+aSHyTZF7vd21EvmmyL3e7lozkVYi3xS519tdK5FvIuoL70R94Z2oL7wT9YV3or7wTtQX3on6wjtRX3gn6gvvRH3hnagvvBP1hXeivvBO1BfeifrCO1FfeCfqC+9EfeGdqC+8E/WFd6K+8E7UF96J+sI7UV94J+oL70R94Z2oL7wT9YV3or7wTtQX3on6wjtRX3gn6gvvRH3hnagvvBP1hXeivvBO1BfeifrCO1FfeCfqC+9EfeGdqC+8T9O1/PyK18hLPtA6y86xaJ3ltanl8ho51wOts7w2GbRO08lr0TpLprNonSXTWbRiZrqf+TF35s/8gfdg216rrfRWTv6uLWtd33O0/jHH+qE2cPq6QW3g/HWD2sAu5wa1gX2Ov9rILbo3qA3sdW5QG9jt3KA2sN+5QW2mUkvlpSI36t6glspLRW7VvUEtkZdaHpGbdW9QS+SlnmqJvNRTLZGXeqrNVGqJvNRTLZGXeqol8lJPtURe6qmWyktFbtu9QS2Vl4rcuHuDWiovFbl19wa1VF4qcvPuDWqpvFTk9t0b1FJ5qcgNvDeopfJSkVt4b1BL5aUiN/HeoJbKS0Vu471BLZWXitzIe4NaKi8VuZX3BrVUXipyM+8Naqm8VOR23hvUUnmpyA29N6il8lKRW3pvUEvlpSI39d6glspLRW7rvUEtlZeK3Nh7g1oqLxW5tfcGtVReKnJz7w1qqbxU5PbeG9RSeanIDb43qKXyUpFbfG9QS+WlIjf53qCWyktFbvO9QS2Vl4rc6HuDWiovFbnV9wa1VF4qcrPvDWqpvFTkdt8b1FJ5qcgNvzeopfJSkVt+b1BL5aUqlZeqVF4qcmP1DWqpvFSl8lKVyktFbiS/QS2Vl4rcSn6DWiovFbmZ/Aa1VF4qcpP5DWqpvBRT7/lTLZWXYuo9f6ql8lJMvedPtVReiqn3/KmWyksx9Z4/1VJ5Kabe86daKi/F1Hv+VMvkpRJV73mi6j1PVL3niar3PD0ylVomL5Woes8TVe95ouo9T1S954mq9zxR9Z4nqt7zRNV7nqh6zxNV73mi6j1PVL3niar3PFH1nieq3vNE1XueqHrPE1XveaLqPU9UveeJqvc8UfWeJ6re80TVe56oes8TVe95ouo9T1S954mq9zxR9Z4nqt7zRNV7nqh6zxNV73mi6j1PVL3niar3PFH1nieq3vNE1XueqHrPE1XveaLqPU9UveeJqvc8UfWeJ6re80TVe56oes8TVe95ouo9T1S954mq9zxR9Z4nqt7zRNV7nqh6zxNV73mi6j1PVL3niar3PFH1nieq3vNE1XueqHrPE1XveaLqPU9UveeJqvc8UfWeJ6re80TVe56oes8TVe95ouo9T1S954mq9zxR9Z4nqt7zRNV7nqh6zxNV73mi6j1PVL3niar3PFH1nqdp2qLb8vritvz5nX+0zrJ/LFpneYVqubxGznVX6zJNl7BF6yyvThats+Q8i9ZZUp5Fa4bU+jM/5s78mT/uHqyPpf7zxfXx6Vn+9d+1uCnMX2vcDOavNa6/cdcauN/XX2tcf+OvNa6/8dca19/4a81EWuN6IX+tRL4pcKOvv1Yi3xS4zddda+AuX3+tRL4pcI+vv1Yi3xS4w9dfK5FvCtzf66+VyDcF7u7110rkmwL39vprJfJNgTt7/bUS+abAfb3+Wol8U+A+199pXfvrHyXXng+0zrJfDVoD933+TmtOr7/DOR38HQ7c9umvdZbXYYvWWV6HLVpnya8WrbPkV4vWWfZrLq8vzm090DrLfjVoDdzv6a91lvxq0TqNbzJoncY3GbRmIq3T+CaD1ml8k0HrNL7JoJXINwVu83TXGrjL018rpm/6mR/TC/3MH9jfpPz64vp/3213/gw+f2Afkpb+nr8//nP5OXrgPkx/rYF9iLvWwD7EXWtgH+KtNXAPpr/WwD7EXWtgz+KuNbK/8daaibQS+abA3Zf+Wol8U+DeS3+tRL4pcOelv1Yi3xS479JfK5FvCtx16a+VyDcF7rn010rkmwJ3XPprJfJNgfst/bUS+aZO5Js6kW/qmUjrLPvV8LmIPst+Pde6Bu7x/J3W8/dZr4F7PP21zvI6bNE6y+uwRess+dWidZb8atE6y349f8/bGrkf1F3rLPnVoDVyP6i71ml8k0HrNL7JoHUa32TQmom0TuObDFqn8U0GrUS+KXI/qLtWIt8UuR/0L1p/5sf0Qj/zB/Y3S15e8y95PZg/sGcxzZ8Dz/8+cVWXWh1+1wP7EHetgX2Iu9bAPsRda2Af4q41sA/x1hq5b9Nda2DP4q41sr/x1hrZC3lrzURaiXzTSuSbViLfFLlH1V0rkW/KRL4pE/mmyP247lqJfFPkflx3rUS+KXKP6q+0Gt63GblH1Vtr5L7N3/0dPn8fWOS+TXet07wOG7RO8zps0DpNfjVonSa/GrQS5dfIfZveWiP3bbprJcqvkbs53bUS5dfInZ/uWjF908/8mF7oZ35Mf/MzP6Zn+Zk/sA9Z35axrks/+V1fltfIy8FnjNfIfZvuWgP7EHetgX2Iu9bAPsRdaybSGtiH/E7r9vJcSz3wXJH7Nt21BvY37loDeyF3rdP4pnOtkfs23bVO45sMWqfxTQatIL5pLfs5LXKHpml+EH9zOH9kz9If7/l7Opg/sg+xzB/ZW9T0mv/5r1z/ufxMMnInpbfWyJ2U7lojewtvrZG9hbfWyN7CW2sm0hrZs3hrjexvvLVG9kLeWol8U+fxTfnB45ty5A5Zd608vilH7pB115qJtPL4phy5Q9ZdK49vypE7ZN21EvmmyF2jv9J6/rmmHLlr1F3rNK/Dp5+TyJE7Kd21TvM6bNA6zevwudbInZTuWqfJrwatRPk1ci+mu9ZMpJUov0bu0HTXSpRfI3doumslyq+ROzTdtRI994/coemulcg3Re7QdNeK6Zt+5sf0Qj/zB/Y3ub57+vPne7T/mD+wZzHNH9iH5O39WeDc2/Xf9cidlO5aA/sQd62BfYi71sA+xF1rJtIa2Ie4aw3sWdy1RvY33lojeyFvrUS+aSPyTRuRb4rcIeuulcg3Re6QdddK5Jsid8i6ayXyTZE7ZN21EvmmyB2y7lpn2a+G921G7hp11zrN6/D5+8Ai92K6a53mdfhca+QOTXet0+RXg9Zp8qtBK1F+jdyh6a6VKL9G7tB010qUXyN3aLprJcqvkTs0/6L1Z35ML/QzP6a/+Zkf07P8zJ/jzr/l13eu23Z2U+S8yztH7rp01xrYh7hrDexD3LUG9iHuWgP7EG+tkfs2f6f1tPM5R+7bdNca2N/8RevP/IH9jWn+HHf+8nhNUUtqDq8hgf2Nu9bA/sZda2B/4641sL9x1xrY3zhr3SL3Yv5O6+nO3yL3YrprDexv3LUG9kLuWjOR1ml8k0HrNL7JoBXTN/3Mj+mFfuaP7G+29+e2S3+c/F0r779rZWv7f9dSZH/jrTWyv/mV1vx4f+f15DsfT/HDJbIXGsklsm8aySWLyy6XyH5sJJfI3m0kl8g+bySXyP5xJJdpfKkvl8jdv0O5yO/uc5Hf3eciv7vPJYvLLhf53X0u8rv7XOR397nI7+5zkd/d5RK5s3koF/ndfS7yu/tc5Hf3uWRx2eUiv7vPRX53n4v87j4X+d19LvK7u1wid4MP5SK/u89Ffnefi/zuPpcsLrtc5Hf3ucjv7nOR393nIr+7z0V+d5dL5E73oVzkd/e5yO/uc5Hf3eeSxWWXi/zuPhf53X0u8rv7XOR397nI7+5yidzFP5SL/O4+F/ndfS7yu/tcsrjscpHf3eciv7vPRX53n4v87j4X+d1dLpFvngzlIr+7z0V+d5+L/O4+lywuu1zkd/e5yO/uc5Hf3eciv7vPRX53l0vkWzVDucjv7nOR393nIr+7zyWLyy4X+d19LvK7+1zkd/e5yO/uc5Hf3eUS+SbSUC7yu/tc5Hf3ucjv7nPJ4rLLRX53n4v87j4XRv+y9tdx3bXvcymhbx6N5MK4j3Iq/3xtTvWAC+M+snBh3EcWLoz7yMKF8fmLhQvj8xcLF0b/ksvrzk9u6z6XeW4aOXNhfP5i4cL4/MXChdLvGrhkcdnlQul3DVwo/a6BC6XfNXCh9LsGLvK7u1wo7x9ZuMjv7nOZ3+/+aJ3fw/5ozbNo/cV3TqUu/3zx8z8/Zn7UDzLTOFN3MtN4U3cy07hTdzLT+FN3MtM41N+Qqevri5//2ffJzHOzyJ3MNC71V2TS402m/fnb9L9fvfXXd976B8X0+KA4jacdSnEatzyUYhZFB4qUnt2dIqW/d6dImQXcKVLmBneKnBnDmeI8N6WGUlR28aCo7OJBUdnFg2IWRQeKyi4eFJVdPCgqu3hQVHbxoKjs4kBxnvtgQykqu3hQzKJ4RvEtcPv82j8oyi96UNSO9viN1o52oDjPTaOhFLWjPSjq+aIHRT1fPHjX2zz3ldzJyNcdkaF8ttce7/eQtnxEhvJ5nYkMpb83kaH07O29tJ//2ffJzHNryZ0Mpbdu9b2b+rr857IrnOc201CKlN7anWIWRQeKlJ7dnSKnv/emyJkFvCly5gZvipwZw5niPLewhlJUdvGgqOziQVHZxYNiFkUHisouHhSVXTwoKrt4UFR28aCo7OJAcZ67ZkMpKrt4UFR28aAov3hK8fx9x/Pc1xpKUTv6+m90ned211CK2tEeFLWjPSjq+aIHxSyKf1D8ISMPeERGvu6IDOWzvf7+zqm3dECG8nmdiQylv7eQmede3S++8/JY+2vmR34ckGH04TYyjN56eaT0JlPzfy67wnku3A2lmEXRgSKjD/enyOjZ/Sky+nt/ioxZwJ8iY25wpzjPjcChFDnziDdFZRcPisouHhSzKDpQVHbxoKjs4kFR2cWDorKLB0VlFweKlLcj/Skqu3hQVHbxoKjs4kExi6IDRWUXD4rKLh4UlV08KCq7eFBUdnGgSHln0p+isosHRWUXD4rKLh4Usyg6UFR28aCo7OJBUdnFg6KyiwdFZRcHipR3Jv0pKrt4UFR28aCo7OJBMYuiA0VlFw+Kyi4eFJVdPCgqu3hQVHZxoEh5f9eforKLB0VlFw+Kyi4eFLMoOlBUdvGgKL94SvG0N7VS3n51p0h5x9P9N5ryjqc/Re1oD4ra0R4U9XzRg6KeL/5J8YeMPOARGfm6AzKUNzSXR19fM6fliAzn8zoLGU5/byFD6dnTB5l+RCaLzAEZSm+dykvfsiz9Pyeu8D3GVj96n7ftgyKlt3anSOmt3SlS+nB3ipSe3Zsi5Z1Jf4qUWcCdImVucKfImTG8KWZRdKCo7OJBUdnFg6KyiwdFZRcPisou1yk2yvu7/hSVXTwoKrt4UFR28aCYRdGBorKLB0VlFw+Kyi4eFJVdPCgquzhQ5LxD7E5R2cWDorKLB0VlFw+KWRQdKMovnlI8/Zxa47wp602R847n7yiefqqlcd7xdKeoHe1BUTvag6KeL3pQ1PPFPyn+kJEHPCIjX3dERs/2Dshw3sVc6vYzczp5tc69vF6tH30/l3LexXSnSJkF3ClSZgF3ilkUHShSZgF3ipRZwJ0iZW74FcWPJ/Cf3/kPipQZw50iZR7xpsh5F9OdorKLB0VlFw+Kyi4eFLMo2ikevdeA8y6mO0VlFw+Kyi5/UvwhozxyREYZ44AM501KExnKLLD+kMmpnLxapx+Oz//8/Or8wZEyDdzAkTIP3MAxi6MLR8pM8DuO6/Z4cVy3dMCRMhXcwJEyF/yS47K8OfbtD447Wez8nXmcFyoHM6fMMmOZc16/HMxc+ev7zJXVvs9cue77zLOYf5258uL3mStbfp+5cuj3mSuHfp+5cujXmVfl0O8zVw79PnPl0O8zVw79PvMs5l9nrhz6febKod9nrhz6deacl5TvZH7ePcZ5o3kw8yzmX39tkW/5PnP5lu8zl2/5PnM9P/8+cz0/v8L8zZHzuvENHOWjfTjq2fUpx5xeClPejjjqebQPxyyOLhyVv045bun9uaEtHXxuiPPS8Q0clZPOf69bfXPc2h8cd753qq9PGS1LqR9fvX5QV1IaQV1Z6fvUO+ft5eHUlcNGUFdqG0FdGW8E9SzqA6grP46grrQ5grqy6QjqyqYjqCubDqDOeVt7OHVl0xHUlU1HUFc2HUE9i/oA6sqmI6grm46grmw6grqy6QjqyqYDqC/KpiOoK5uOoK5sOoK6sukI6lnUB1BXNh1BXdl0BHVl0xHUlU1HUFc2HUB9VTYdQV3ZdAR1ZdMR1JVNR1DPoj6AurLpCOrKpiOoK5uOoK5sOoK6sukA6lnZdAR1ZdMR1JVNR1CXX/elft4V27Pc+veZy784Mz/tc+yb3Mv3mcu7fJ+5nMv3meuZ+veZZzG/wPyHozy3D0f5aB+Oeo7tw1FPpk85luU1RyqtnOyk3MtrJz0+dtK2fTBXrvs686Jc933mynXfZ65c933mynXfZ57F/OvMlQF9mW/vobfPOf5grrz4febKlt9nrhz6febKoV9nXpVDv89cOfT7zJVDb2Ne0wFz5dDvM89i/nXmyqFXmP9wVLb04ai8eMqxPvqLY936yWtAavl9obX9ccnx413AVYlxBHVlxgHUm1LjCOrKjSOoKzmOoK7s6E19e7/7qtXHAfUs6gOoKz+OoK60OYK6sukI6sqmI6grmzpTr629qbc/neO/enLblWOj/x9S5o3+f0j52Pn/UC/vr34+fdjfLV35eAT1LOoDqCsfj6CufDyCuvLxCOrKxyOoKx97U2/5Tb3vtpWtj4cy7wjqyrEjqCubjqCubDqCehb1AdSVTUdQVzb1pp7e3/uR/vTr/+Kp8PP/kHJs9P9DyrzR/w8pH/v+H1oe/f2906Pt75akfDyCuvLxCOrKxyOoKx+PoJ5FfQB15eMR1JWPnamn9L4Dk5b1gLoy7wjqyrEjqCubDqC+KJuOoK5sOoK6sukI6sqm3n49pzf19U+//q+eCi9Z/4eC/x9S5o3+f0j52Pn/0LK8eTx/zsFuUT4eQV35eAR15eMB1Ffl4xHUlY9HUFc+HkFd+dib+trf1LflgHoW9QHUlWNHUFc2HUFd2XQEdWXTEdSVTQdQz8qm3v+eVd//nrWUP/36v3oqnJVjo/8fUuaN/n9I+fjP/0M/ZLLIHJChzJk5v7542R7p5Le6pdcYbfn4zlv5oEiZG90pUuZAd4qUuc6dImVO86a4UeYud4qU2eh3FPOrEryVxwFFyvziTpEyY7hTzKLoQFHZxYOisosHRWWXU4rv8vv++bV/UFR28aCo7OJAsSi7eFBUdvGgqOziQVHZ5YxiX8qL4toPKGZRdKCo7OJBUdnFg6KyiwdFZRcPivNnl7fWOn/C+NGKmQN+5sd04D/zB/a+dX29D6rWz6uI+3/X8uP9ndeT72z5e5nFZZdLYH86lEtgxzmUS2APOZRLYFc4lEtgnzeSSwvsCYdyCewfh3IJ7EuHcpHf3eeSxWWXi/zuPhf53X0u8rv7XOR397nI7+5y6fK7+1zkd/e5yO/uc5Hf3eeSxWWXi/zuPhf53X0u8rv7XOR397nI7+5xSQ/53X0u8rv7XOR397nI7+5zyeKyy0V+d5+L/O4+F/ndfS7yu/tc5Hd3uUS+cn0bl7Wv/3zt2o+4MPoXCxfGfZTT633xOdUDLoz7yMKFcR9ZuDDuIwOXyFdch3JhfP5i4cLoX3J59Z3kth5wYfQvFi5ZXHa5MD5/sXCh9LsGLpR+18CF0u8auMzvd99aI19adNc6jS/9xXdObX09KEktfzS3r+mDzDTO1J3MNN7UnUwWmQMy0/hTdzLTOFR3MtN4VHcy07jUX5F529TU2uOAzDQ+1ZtM5Bttg8lwemALGU4PbCHD6YEtZLLIHJCh9MD9/Z1Tz+sBGUoPbCJD6YFNZCg9sIkMpQe2kIl8L2swGUoPbCLD6IGXx+M98+OP9258kmH0wDYyWWQOyDB6YBsZRg9sI8PogW1kGD2wjQyjB14eb33Lo7R9MpHvLg0mw+iBbWQ4PbCFDKcHtpDJInNAhtMDW8hQeuD0/s5LOnoKEfmG0GAylB7YRIbSA1vIRL4MNJgMpQc2kaH0wCYymB74Z/4MPn9gP9ke/TV/W5aTv5nL8raI+eDzopHvA7lrDez53LUGdnHuWgP7Mm+tke/tuGsN7J1+p3V7vZltqQefG4t8F+cvWn/mD+xZTPPnwPPn7T3/1hx+ryL7G2+tkf2Nt9bI/sZba2R/4601sr9x1hr5vsrvtJ7v/Mg3U9y1RvY33lojeyFvrZlI6zS+yaB1Gt9k0Irpm37mx/RCP/Nj+pvX/EvkGxmm+TF9yM/8mN7iZ35Mv/AzfwafH3Ov/8yPuat/5sfev0vkGwOm+cH3bwLfvwl8/0a+mWCaH3z/JvD9m8D3b+QbEKb5wfdv5JsKpvnB92/kGwWm+SPv3/Z+v1rrZ+9E/NtX/6iNvK391Ube7b9R298j98/3LX48x1wid/m7a43sGby1RvYX3lqjeJGfiaK4i5+JoviF90RhGt5/Joqy038mirJ3fyaKsht/JoqywX4mirJnfiaKsg1+Jgr3mh2mz/lnonCv2WH6i38mCveaHaav92eicK/ZYfppfyYK95odpo/1Z6Jwr9lh+kd/JrrzNfv9U27t0Pz5KekrP2X5yk9Zv/JT8ld+yvaVn1K+8lPqV35K+8pP+crvfvnK7375yu9++crvfvnK7375yu9++crvfvnK7375yu9++crvfvnK7379yu9+/crvfv3K7379yu9+/crvfv3K7379yu9+/crvfv3K7379yu9++8rvfvvK7377yu9++8rvfvvK7377yu9++8rvfvvK7377yu9++8rvfv/K737/yu9+/8rvfv/K7/71TzKu7699/pPI4z9/f/5k+Lfw6583dJ+ohJuoBpsoh3kHw867NW67eL/215HVtecDLtP0ijpzmaZV1JdLmPeUROMyTaOoM5dp+kSduUzTqO/MJYvLLpdp2vSduUzTpe/MRX53nwuj3326k3++NudywIXR7+blh8t+81kO8368aFwY/a6FC6PftXBh9LsWLllcdrkw+t2cyotLOuLC6HctXBj9roULpd81cKH0u+dcNkq/a+BC6XcNXCj9roELpd81cMnisstFfnefi/zuPhf53X0u8rv7XOR3d7kU+d19LvK7+1zkd/e5yO/uc8nisstFfnefi/zuPhf53X0u8rv7XOR3d7lU+d19LvK7+1zkd/e5yO/uc8nisstFfnefi/zuPhf53X0u8rv7XOR3d7k0+d19LoH9S9lebw+spT/OuPziOy9rfX+q+Mno56sfdeerU26vI6Vp+7xS8cg7X729cWztg0Z6fDDPYv515oF917TMA3u6aZkH9ovTMg/sRSGZl8fri8unb/mDeWCfC8p8fTNv+8x7YA89LfPAz6OnZR74Wfe0zJVDv888i/nXmSuHOvvz/ppj6/2AuXLo95krh36fuXLo95krh36b+fZQDv0+c+XQ7zNXDv0+c+XQ7zPPYv515sqh32euHPp95sqh32euHPp95sqhX2eelEO/z1w59PvMlUO/z1w59PvMs5h/nbly6PeZK4d+n7ly6PeZK4d+n7ly6NeZL8qh32euHPp95sqh32euHPp95lnMv85cOfT7zJVDv89cOfT7zJVDv89cOfTrzCPfBJ+Wufz5KfN1WV7M176dMT/9vP8W+Tb1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"
1212
2188
  },
1213
2189
  {
1214
2190
  "name": "is_valid",
@@ -1273,18 +2249,127 @@
1273
2249
  }
1274
2250
  },
1275
2251
  {
1276
- "name": "block_header",
2252
+ "name": "historical_header",
1277
2253
  "type": {
1278
2254
  "kind": "struct",
1279
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
2255
+ "path": "authwit::aztec::protocol_types::header::Header",
1280
2256
  "fields": [
1281
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
1282
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
1283
- { "name": "contract_tree_root", "type": { "kind": "field" } },
1284
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
1285
- { "name": "archive_root", "type": { "kind": "field" } },
1286
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
1287
- { "name": "global_variables_hash", "type": { "kind": "field" } }
2257
+ {
2258
+ "name": "last_archive",
2259
+ "type": {
2260
+ "kind": "struct",
2261
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2262
+ "fields": [
2263
+ { "name": "root", "type": { "kind": "field" } },
2264
+ {
2265
+ "name": "next_available_leaf_index",
2266
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2267
+ }
2268
+ ]
2269
+ }
2270
+ },
2271
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
2272
+ {
2273
+ "name": "state",
2274
+ "type": {
2275
+ "kind": "struct",
2276
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
2277
+ "fields": [
2278
+ {
2279
+ "name": "l1_to_l2_message_tree",
2280
+ "type": {
2281
+ "kind": "struct",
2282
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2283
+ "fields": [
2284
+ { "name": "root", "type": { "kind": "field" } },
2285
+ {
2286
+ "name": "next_available_leaf_index",
2287
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2288
+ }
2289
+ ]
2290
+ }
2291
+ },
2292
+ {
2293
+ "name": "partial",
2294
+ "type": {
2295
+ "kind": "struct",
2296
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
2297
+ "fields": [
2298
+ {
2299
+ "name": "note_hash_tree",
2300
+ "type": {
2301
+ "kind": "struct",
2302
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2303
+ "fields": [
2304
+ { "name": "root", "type": { "kind": "field" } },
2305
+ {
2306
+ "name": "next_available_leaf_index",
2307
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2308
+ }
2309
+ ]
2310
+ }
2311
+ },
2312
+ {
2313
+ "name": "nullifier_tree",
2314
+ "type": {
2315
+ "kind": "struct",
2316
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2317
+ "fields": [
2318
+ { "name": "root", "type": { "kind": "field" } },
2319
+ {
2320
+ "name": "next_available_leaf_index",
2321
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2322
+ }
2323
+ ]
2324
+ }
2325
+ },
2326
+ {
2327
+ "name": "contract_tree",
2328
+ "type": {
2329
+ "kind": "struct",
2330
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2331
+ "fields": [
2332
+ { "name": "root", "type": { "kind": "field" } },
2333
+ {
2334
+ "name": "next_available_leaf_index",
2335
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2336
+ }
2337
+ ]
2338
+ }
2339
+ },
2340
+ {
2341
+ "name": "public_data_tree",
2342
+ "type": {
2343
+ "kind": "struct",
2344
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2345
+ "fields": [
2346
+ { "name": "root", "type": { "kind": "field" } },
2347
+ {
2348
+ "name": "next_available_leaf_index",
2349
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2350
+ }
2351
+ ]
2352
+ }
2353
+ }
2354
+ ]
2355
+ }
2356
+ }
2357
+ ]
2358
+ }
2359
+ },
2360
+ {
2361
+ "name": "global_variables",
2362
+ "type": {
2363
+ "kind": "struct",
2364
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
2365
+ "fields": [
2366
+ { "name": "chain_id", "type": { "kind": "field" } },
2367
+ { "name": "version", "type": { "kind": "field" } },
2368
+ { "name": "block_number", "type": { "kind": "field" } },
2369
+ { "name": "timestamp", "type": { "kind": "field" } }
2370
+ ]
2371
+ }
2372
+ }
1288
2373
  ]
1289
2374
  }
1290
2375
  },
@@ -1295,7 +2380,7 @@
1295
2380
  "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1296
2381
  "fields": [
1297
2382
  {
1298
- "name": "deployer_public_key",
2383
+ "name": "public_key",
1299
2384
  "type": {
1300
2385
  "kind": "struct",
1301
2386
  "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
@@ -1305,8 +2390,15 @@
1305
2390
  ]
1306
2391
  }
1307
2392
  },
1308
- { "name": "constructor_vk_hash", "type": { "kind": "field" } },
1309
- { "name": "function_tree_root", "type": { "kind": "field" } },
2393
+ { "name": "initialization_hash", "type": { "kind": "field" } },
2394
+ {
2395
+ "name": "contract_class_id",
2396
+ "type": {
2397
+ "kind": "struct",
2398
+ "path": "authwit::aztec::protocol_types::contract_class::ContractClassId",
2399
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2400
+ }
2401
+ },
1310
2402
  { "name": "contract_address_salt", "type": { "kind": "field" } },
1311
2403
  {
1312
2404
  "name": "portal_contract_address",
@@ -1336,7 +2428,7 @@
1336
2428
  },
1337
2429
  { "name": "message_hash", "type": { "kind": "field" }, "visibility": "private" }
1338
2430
  ],
1339
- "param_witnesses": { "inputs": [{ "start": 0, "end": 23 }], "message_hash": [{ "start": 23, "end": 24 }] },
2431
+ "param_witnesses": { "inputs": [{ "start": 0, "end": 34 }], "message_hash": [{ "start": 34, "end": 35 }] },
1340
2432
  "return_type": {
1341
2433
  "abi_type": {
1342
2434
  "kind": "struct",
@@ -1392,6 +2484,7 @@
1392
2484
  },
1393
2485
  { "name": "args_hash", "type": { "kind": "field" } },
1394
2486
  { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
2487
+ { "name": "meta_hwm", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
1395
2488
  {
1396
2489
  "name": "read_requests",
1397
2490
  "type": {
@@ -1407,6 +2500,41 @@
1407
2500
  }
1408
2501
  }
1409
2502
  },
2503
+ {
2504
+ "name": "nullifier_key_validation_requests",
2505
+ "type": {
2506
+ "kind": "array",
2507
+ "length": 1,
2508
+ "type": {
2509
+ "kind": "struct",
2510
+ "path": "authwit::aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
2511
+ "fields": [
2512
+ {
2513
+ "name": "public_key",
2514
+ "type": {
2515
+ "kind": "struct",
2516
+ "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
2517
+ "fields": [
2518
+ { "name": "x", "type": { "kind": "field" } },
2519
+ { "name": "y", "type": { "kind": "field" } }
2520
+ ]
2521
+ }
2522
+ },
2523
+ {
2524
+ "name": "secret_key",
2525
+ "type": {
2526
+ "kind": "struct",
2527
+ "path": "authwit::aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
2528
+ "fields": [
2529
+ { "name": "high", "type": { "kind": "field" } },
2530
+ { "name": "low", "type": { "kind": "field" } }
2531
+ ]
2532
+ }
2533
+ }
2534
+ ]
2535
+ }
2536
+ }
2537
+ },
1410
2538
  {
1411
2539
  "name": "new_commitments",
1412
2540
  "type": {
@@ -1456,18 +2584,127 @@
1456
2584
  { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
1457
2585
  { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
1458
2586
  {
1459
- "name": "block_header",
2587
+ "name": "historical_header",
1460
2588
  "type": {
1461
2589
  "kind": "struct",
1462
- "path": "authwit::aztec::protocol_types::abis::block_header::BlockHeader",
2590
+ "path": "authwit::aztec::protocol_types::header::Header",
1463
2591
  "fields": [
1464
- { "name": "note_hash_tree_root", "type": { "kind": "field" } },
1465
- { "name": "nullifier_tree_root", "type": { "kind": "field" } },
1466
- { "name": "contract_tree_root", "type": { "kind": "field" } },
1467
- { "name": "l1_to_l2_message_tree_root", "type": { "kind": "field" } },
1468
- { "name": "archive_root", "type": { "kind": "field" } },
1469
- { "name": "public_data_tree_root", "type": { "kind": "field" } },
1470
- { "name": "global_variables_hash", "type": { "kind": "field" } }
2592
+ {
2593
+ "name": "last_archive",
2594
+ "type": {
2595
+ "kind": "struct",
2596
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2597
+ "fields": [
2598
+ { "name": "root", "type": { "kind": "field" } },
2599
+ {
2600
+ "name": "next_available_leaf_index",
2601
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2602
+ }
2603
+ ]
2604
+ }
2605
+ },
2606
+ { "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
2607
+ {
2608
+ "name": "state",
2609
+ "type": {
2610
+ "kind": "struct",
2611
+ "path": "authwit::aztec::protocol_types::state_reference::StateReference",
2612
+ "fields": [
2613
+ {
2614
+ "name": "l1_to_l2_message_tree",
2615
+ "type": {
2616
+ "kind": "struct",
2617
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2618
+ "fields": [
2619
+ { "name": "root", "type": { "kind": "field" } },
2620
+ {
2621
+ "name": "next_available_leaf_index",
2622
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2623
+ }
2624
+ ]
2625
+ }
2626
+ },
2627
+ {
2628
+ "name": "partial",
2629
+ "type": {
2630
+ "kind": "struct",
2631
+ "path": "authwit::aztec::protocol_types::partial_state_reference::PartialStateReference",
2632
+ "fields": [
2633
+ {
2634
+ "name": "note_hash_tree",
2635
+ "type": {
2636
+ "kind": "struct",
2637
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2638
+ "fields": [
2639
+ { "name": "root", "type": { "kind": "field" } },
2640
+ {
2641
+ "name": "next_available_leaf_index",
2642
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2643
+ }
2644
+ ]
2645
+ }
2646
+ },
2647
+ {
2648
+ "name": "nullifier_tree",
2649
+ "type": {
2650
+ "kind": "struct",
2651
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2652
+ "fields": [
2653
+ { "name": "root", "type": { "kind": "field" } },
2654
+ {
2655
+ "name": "next_available_leaf_index",
2656
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2657
+ }
2658
+ ]
2659
+ }
2660
+ },
2661
+ {
2662
+ "name": "contract_tree",
2663
+ "type": {
2664
+ "kind": "struct",
2665
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2666
+ "fields": [
2667
+ { "name": "root", "type": { "kind": "field" } },
2668
+ {
2669
+ "name": "next_available_leaf_index",
2670
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2671
+ }
2672
+ ]
2673
+ }
2674
+ },
2675
+ {
2676
+ "name": "public_data_tree",
2677
+ "type": {
2678
+ "kind": "struct",
2679
+ "path": "authwit::aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
2680
+ "fields": [
2681
+ { "name": "root", "type": { "kind": "field" } },
2682
+ {
2683
+ "name": "next_available_leaf_index",
2684
+ "type": { "kind": "integer", "sign": "unsigned", "width": 32 }
2685
+ }
2686
+ ]
2687
+ }
2688
+ }
2689
+ ]
2690
+ }
2691
+ }
2692
+ ]
2693
+ }
2694
+ },
2695
+ {
2696
+ "name": "global_variables",
2697
+ "type": {
2698
+ "kind": "struct",
2699
+ "path": "authwit::aztec::protocol_types::abis::global_variables::GlobalVariables",
2700
+ "fields": [
2701
+ { "name": "chain_id", "type": { "kind": "field" } },
2702
+ { "name": "version", "type": { "kind": "field" } },
2703
+ { "name": "block_number", "type": { "kind": "field" } },
2704
+ { "name": "timestamp", "type": { "kind": "field" } }
2705
+ ]
2706
+ }
2707
+ }
1471
2708
  ]
1472
2709
  }
1473
2710
  },
@@ -1478,7 +2715,7 @@
1478
2715
  "path": "authwit::aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
1479
2716
  "fields": [
1480
2717
  {
1481
- "name": "deployer_public_key",
2718
+ "name": "public_key",
1482
2719
  "type": {
1483
2720
  "kind": "struct",
1484
2721
  "path": "authwit::aztec::protocol_types::grumpkin_point::GrumpkinPoint",
@@ -1488,8 +2725,15 @@
1488
2725
  ]
1489
2726
  }
1490
2727
  },
1491
- { "name": "constructor_vk_hash", "type": { "kind": "field" } },
1492
- { "name": "function_tree_root", "type": { "kind": "field" } },
2728
+ { "name": "initialization_hash", "type": { "kind": "field" } },
2729
+ {
2730
+ "name": "contract_class_id",
2731
+ "type": {
2732
+ "kind": "struct",
2733
+ "path": "authwit::aztec::protocol_types::contract_class::ContractClassId",
2734
+ "fields": [{ "name": "inner", "type": { "kind": "field" } }]
2735
+ }
2736
+ },
1493
2737
  { "name": "contract_address_salt", "type": { "kind": "field" } },
1494
2738
  {
1495
2739
  "name": "portal_contract_address",
@@ -1509,145 +2753,178 @@
1509
2753
  "visibility": "public"
1510
2754
  },
1511
2755
  "return_witnesses": [
1512
- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
1513
- 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241,
1514
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263,
1515
- 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
1516
- 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307,
1517
- 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329,
1518
- 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
1519
- 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373,
1520
- 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386
2756
+ 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264,
2757
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286,
2758
+ 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308,
2759
+ 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330,
2760
+ 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
2761
+ 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
2762
+ 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396,
2763
+ 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418,
2764
+ 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440,
2765
+ 441, 442, 443, 444, 445, 446, 447
1521
2766
  ]
1522
2767
  },
1523
- "bytecode": "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",
1524
- "debug_symbols": "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"
2768
+ "bytecode": "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",
2769
+ "debug_symbols": "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oRkfQzM+h2Z8EM34JJrxUTTjs2jGh9GMT6MZH0czPo9mfCDN+ESa8ZE04zNpxofSjE+lGR9LMz6XZnwwzfhkmvHRNOOzacaH04xPpxkfTzM+n2Z8QM34hJrxETXjM2rGh9SMT6kZH1MzPqdmfFDN+KSa8VE147Nq4LNq4LNq4LNq4LNquJwv0fkSgy8x+RKLL8FPN59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59VA59Va3xWrfFZtcZn1RqfVWuX8yU6X2LwJSZfYvEl+Onms2qNz6o1PqvW+Kxa47Nqjc+qNT6r1visWuOzao3PqjU+q9b4rFrjs2rtDRCseXvdY5seSky6xOPwkq/14VnfM5QwvgT4Eo0v4XyJzpcYfImHc+H79my/Viix+BKbLvE4vHRfwvgS4Es0vsTj6R4fJXYo0fkSgy8x+RKLL7HpEo/DS/clHk5337d3H4/rCiXAl2h8CedLdL7E4EtMusQbsAf3avMbsAd3JYwvAb5E40s8/oP15dX1biOU6HyJwZeYfInFl9h0icfZA7/8RSL8FeZx9uC+BPgSjS/hfInOlxhvKIH4pe+TL7H4Eo//7H75RczjevAG7MFdCeNLgC/R+BLOl+h8icGXmHyJxZegp9uviy9hfAnwJRpfwvkSnS8x+BKTL7H4Evx0Gz/dxk+38dNt/HQbP93GT7fx0238dBs/3cZPN/jpBj/d4Kcb/HSDn+4Yb7B5++sv7BPw4vkjbsvW2bJ9tCwGJO4vs4Nl69s/OTu4OTln8Fvz87J2tszPlvWzZeNs2Txbts6W7aNlf4LR3F1mZ8vOTkk7OyXt7JS0s1PSzk5JOzsl7eyUtLNT4menxM9OiZ+dEj87JX52SvzslPjZKfGzU+Jnp8TPTkk/OyX97JT0s1NCvw/kWcL5Ep0vMfgSky+x+BKbLkG/D+RZwvgS4Evw0z346R78dA9+ugc/3YOf7sFP9+Sne/LTPfnpnvx0T366Jz/dk5/uyU/35Kd78tO9+Ole/HQvfroXP92Ln+7FT/fip3vx07346V78dG9+ujc/3Zuf7s1P9+ane/PTvfnp3vx0b366Nz/ddl0CDRNoQKDRBBou0OgCjSHQmAKNJdAQ5NwEOTdBzk2QcxPk3AQ5N0HOTZBzE+TcBDk3Qc4hyDkEOYcg5xDkHIKcQ5BzCHIOQc4hyDkEOW+CnDdBzpsg502Q8ybIeRPkvAly3gQ5b4KcN0HOXZBzF+TcBTl3Qc5dkHMX5NwFOXdBzl2QcxfkvAty3gU574KcCwg3EyBuJmDcTAC5mYByMwHmZgLOzQSgmwlINxOgbiZg3UwAu5mAdjMB7mYC3s0EwJsJiDcTIG8mYN5MAL2ZgHozAfZmAu7NBOCbCcg3E6BvJmDfTAC/mYB+MwH+ZgL+zQQAnAkIOBMgcCZg4EwAwZmAgjMBBmcCDs4EIJwJSDgToHAmYOFMAMOZgIYzAQ5nAh4OAh4OAh4OAh4OAh4Olws0ukBjCDSmQGMJNAQ5F/BwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwEPBwTcDDNQEP1wQ8XBPwcO1ygUYXaAyBxhRoLIGGIOcCHq4JeLgm4OGagIdrAh6uCXi4JuDhmoCHawIergl4uCbg4ZqAh2sCHq69AeM1cdOYHmtMvsbjbJSv29sRfc9YwwQaEGg0gYYLNLpAYwg0Hs6Hv7zstF8r1lgCjc3XeJyN+gINE2hAoNEEGo/nfHzU2LFGF2gMgcYUaCyBxuZrPM5GfYHGwznv+/rw7IheMv1eAwKNJtBwgUYXaAyBxuRrvAHPcLdTvwHPcF/DBBoQaDSBxuM/a81uXdRGrNEFGkOgMQUaS6Cx+RqP8wx++YtG/DvO4zzDF2hAoNEEGi7Q6AKN8YYaaLHGFGgsgcbjP89fflfzP+kMb8Az3NcwgQYEGk2g4QKNLtAYAo0p0FgCDX7O/boEGibQgECjCTRcoNEFGkOgMQUaS6AhyLkJcm6CnJsg5ybIuQlyboKcmyDnJsi5CXJugpxDkHMIcg5BziHIOQQ5j5kJm7e/JcM+4TmeP+Nl3Tpct8/WxdzFF6yz/3Hdu3f/BQ=="
1525
2770
  }
1526
2771
  ],
1527
2772
  "events": [],
1528
2773
  "file_map": {
1529
- "16": {
1530
- "source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n \n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(_self: Self, _bit_size: u32) -> [u1] {}\n \n #[builtin(to_be_bits)]\n fn __to_be_bits(_self: Self, _bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(_self: Self, _bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n \n #[builtin(to_be_radix)]\n fn __to_be_radix(_self: Self, _radix: u32, _result_len: u32) -> [u8] {}\n\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> Field {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\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 + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n",
2774
+ "3": {
2775
+ "source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n // TODO: change this to return a u64 as Noir now\n // uses u64 for indexing\n len: Field,\n empty_value: T,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new(initial_value: T) -> Self {\n BoundedVec { storage: [initial_value; MaxLen], len: 0, empty_value: initial_value }\n }\n\n pub fn get(mut self: Self, index: Field) -> T {\n assert(index as u64 < self.len as u64);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: Field) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len as u64 < MaxLen as u64, \"push out of bounds\");\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn len(self) -> Field {\n self.len\n }\n\n pub fn max_len(_self: BoundedVec<T, MaxLen>) -> Field {\n MaxLen\n }\n\n // This is a intermediate method, while we don't have an\n // .extend method\n pub fn storage(self) -> [T; MaxLen] {\n self.storage\n }\n\n pub fn extend_from_array<Len>(&mut self, array: [T; Len]) {\n let new_len = self.len + array.len();\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_array out of bounds\");\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = new_len;\n }\n\n pub fn extend_from_bounded_vec<Len>(&mut self, vec: BoundedVec<T, Len>) {\n let append_len = vec.len();\n let new_len = self.len + append_len;\n assert(new_len as u64 <= MaxLen as u64, \"extend_from_bounded_vec out of bounds\");\n\n let mut exceeded_len = false;\n for i in 0..Len {\n exceeded_len |= i == append_len;\n if !exceeded_len {\n self.storage[self.len + (i as Field)] = vec.get_unchecked(i as Field);\n }\n }\n self.len = new_len;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n self.len -= 1;\n\n let elem = self.storage[self.len];\n self.storage[self.len] = self.empty_value;\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if (!exceeded_len) {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}",
2776
+ "path": "std/collections/bounded_vec.nr"
2777
+ },
2778
+ "19": {
2779
+ "source": "mod bn254;\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n pub fn to_le_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_le_bits(bit_size)\n }\n \n pub fn to_be_bits(self: Self, bit_size: u32) -> [u1] {\n crate::assert_constant(bit_size);\n self.__to_be_bits(bit_size)\n }\n\n #[builtin(to_le_bits)]\n fn __to_le_bits(self, _bit_size: u32) -> [u1] {}\n \n #[builtin(to_be_bits)]\n fn __to_be_bits(self, bit_size: u32) -> [u1] {}\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n pub fn assert_max_bit_size(self: Self, bit_size: u32) {\n crate::assert_constant(bit_size);\n assert(bit_size < modulus_num_bits() as u32);\n self.__assert_max_bit_size(bit_size);\n }\n\n pub fn to_le_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_le_radix(256, byte_size)\n }\n\n pub fn to_be_bytes(self: Self, byte_size: u32) -> [u8] {\n self.to_be_radix(256, byte_size)\n }\n\n\n pub fn to_le_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_le_radix(radix, result_len)\n }\n\n pub fn to_be_radix(self: Self, radix: u32, result_len: u32) -> [u8] {\n crate::assert_constant(radix);\n crate::assert_constant(result_len);\n self.__to_be_radix(radix, result_len)\n }\n\n\n\n // decompose `_self` into a `_result_len` vector over the `_radix` basis\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix(self, radix: u32, result_len: u32) -> [u8] {}\n \n #[builtin(to_be_radix)]\n fn __to_be_radix(self, radix: u32, result_len: u32) -> [u8] {}\n\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b = exponent.to_le_bits(32);\n\n for i in 1..33 {\n r *= r;\n r = (b[32-i] as Field) * (r * self) + (1 - b[32-i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x ∈ {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n}\n\n#[builtin(modulus_num_bits)]\npub fn modulus_num_bits() -> Field {}\n\n#[builtin(modulus_be_bits)]\npub fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub fn modulus_le_bytes() -> [u8] {}\n// Convert a 32 byte array to a field element\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\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 + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n let num_bytes = (modulus_num_bits() as u32 + 7) / 8;\n let x_bytes = x.to_le_bytes(num_bytes);\n let y_bytes = y.to_le_bytes(num_bytes);\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..num_bytes {\n if (!done) {\n let x_byte = x_bytes[num_bytes - 1 - i] as u8;\n let y_byte = y_bytes[num_bytes - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n}\n\n",
1531
2780
  "path": "std/field.nr"
1532
2781
  },
1533
- "28": {
2782
+ "31": {
1534
2783
  "source": "struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::unsafe::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<U, Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n",
1535
2784
  "path": "std/option.nr"
1536
2785
  },
1537
- "41": {
1538
- "source": "use dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::hash_args,\n};\n\n// docs:start:private-global-variables\nstruct PrivateGlobalVariables {\n chain_id: Field,\n version: Field,\n}\n// docs:end:private-global-variables\n\nimpl PrivateGlobalVariables {\n fn serialize(self) -> [Field; 2] {\n [self.chain_id, self.version]\n }\n}\n\n// docs:start:public-global-variables\nstruct PublicGlobalVariables {\n chain_id: Field,\n version: Field,\n block_number: Field,\n timestamp: Field,\n}\n// docs:end:public-global-variables\n\nimpl PublicGlobalVariables {\n fn serialize(self) -> [Field; 4] {\n [self.chain_id, self.version, self.block_number, self.timestamp]\n }\n}\n\n// PrivateContextInputs are expected to be provided to each private function\n// docs:start:private-context-inputs\nstruct PrivateContextInputs {\n call_context : CallContext,\n block_header: BlockHeader,\n contract_deployment_data: ContractDeploymentData,\n private_global_variables: PrivateGlobalVariables,\n}\n// docs:end:private-context-inputs\n\n// PublicContextInputs are expected to be provided to each public function\n// docs:start:public-context-inputs\nstruct PublicContextInputs {\n call_context: CallContext,\n block_header: BlockHeader,\n\n public_global_variables: PublicGlobalVariables,\n}\n// docs:end:public-context-inputs\n\nstruct Hasher {\n fields: [Field],\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 pub fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n",
2786
+ "44": {
2787
+ "source": "use dep::protocol_types::{\n abis::{\n call_context::CallContext,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::hash_args,\n traits::{Hash, Serialize},\n header::Header,\n};\n\n// docs:start:private-global-variables\nstruct PrivateGlobalVariables {\n chain_id: Field,\n version: Field,\n}\n// docs:end:private-global-variables\n\nimpl Serialize<2> for PrivateGlobalVariables {\n fn serialize(self) -> [Field; 2] {\n [self.chain_id, self.version]\n }\n}\n\n// docs:start:public-global-variables\nstruct PublicGlobalVariables {\n chain_id: Field,\n version: Field,\n block_number: Field,\n timestamp: Field,\n}\n// docs:end:public-global-variables\n\nimpl Serialize<4> for PublicGlobalVariables {\n fn serialize(self) -> [Field; 4] {\n [self.chain_id, self.version, self.block_number, self.timestamp]\n }\n}\n\n// PrivateContextInputs are expected to be provided to each private function\n// docs:start:private-context-inputs\nstruct PrivateContextInputs {\n call_context : CallContext,\n historical_header: Header,\n contract_deployment_data: ContractDeploymentData,\n private_global_variables: PrivateGlobalVariables,\n}\n// docs:end:private-context-inputs\n\n// PublicContextInputs are expected to be provided to each public function\n// docs:start:public-context-inputs\nstruct PublicContextInputs {\n call_context: CallContext,\n historical_header: Header,\n\n public_global_variables: PublicGlobalVariables,\n}\n// docs:end:public-context-inputs\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",
1539
2788
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/abi.nr"
1540
2789
  },
1541
- "43": {
1542
- "source": "use crate::context::{Context};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse crate::types::type_serialization::TypeSerializationInterface;\nuse dep::std::option::Option;\n\n// docs:start:public_state_struct\nstruct PublicState<T, T_SERIALIZED_LEN> {\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n}\n// docs:end:public_state_struct\n\nimpl<T, T_SERIALIZED_LEN> PublicState<T, T_SERIALIZED_LEN> {\n // docs:start:public_state_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field,\n serialization_methods: TypeSerializationInterface<T, T_SERIALIZED_LEN>,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicState {\n context,\n storage_slot,\n serialization_methods,\n }\n }\n // docs:end:public_state_struct_new\n\n // docs:start:public_state_struct_read\n pub fn read(self) -> T {\n assert(self.context.private.is_none(), \"Public state reads only supported in public functions\");\n storage_read(self.storage_slot, self.serialization_methods.deserialize)\n }\n // docs:end:public_state_struct_read\n\n // docs:start:public_state_struct_write\n pub fn write(self, value: T) {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n let serialize = self.serialization_methods.serialize;\n let fields = serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_state_struct_write\n}\n",
2790
+ "46": {
2791
+ "source": "use crate::context::{Context};\nuse crate::oracle::storage::storage_read;\nuse crate::oracle::storage::storage_write;\nuse dep::std::option::Option;\nuse dep::protocol_types::traits::{Deserialize, Serialize};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:public_state_struct\nstruct PublicState<T> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:public_state_struct\n\nimpl<T> Storage<T> for PublicState<T> {}\n\nimpl<T> PublicState<T> {\n // docs:start:public_state_struct_new\n pub fn new(\n // Note: Passing the contexts to new(...) just to have an interface compatible with a Map.\n context: Context,\n storage_slot: Field,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n PublicState {\n context,\n storage_slot,\n }\n }\n // docs:end:public_state_struct_new\n\n // docs:start:public_state_struct_read\n pub fn read<T_SERIALIZED_LEN>(self) -> T where T: Deserialize<T_SERIALIZED_LEN> {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n let fields = storage_read(self.storage_slot);\n T::deserialize(fields)\n }\n // docs:end:public_state_struct_read\n\n // docs:start:public_state_struct_write\n pub fn write<T_SERIALIZED_LEN>(self, value: T) where T: Serialize<T_SERIALIZED_LEN> {\n assert(self.context.private.is_none(), \"Public state writes only supported in public functions\");\n let fields = T::serialize(value);\n storage_write(self.storage_slot, fields);\n }\n // docs:end:public_state_struct_write\n}\n",
1543
2792
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/public_state.nr"
1544
2793
  },
1545
- "44": {
1546
- "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::{\n hash::pedersen_hash,\n traits::{ToField}\n};\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map {\n context,\n storage_slot,\n state_var_constructor,\n }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()],0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n",
2794
+ "48": {
2795
+ "source": "use crate::context::{PrivateContext, PublicContext, Context};\nuse dep::std::option::Option;\nuse dep::protocol_types::{\n hash::pedersen_hash,\n traits::{ToField}\n};\nuse crate::state_vars::storage::Storage;\n\n// docs:start:map\nstruct Map<K, V> {\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n}\n// docs:end:map\n\nimpl<K, T> Storage<T> for Map<K, T> {}\n\nimpl<K, V> Map<K, V> {\n // docs:start:new\n pub fn new(\n context: Context,\n storage_slot: Field,\n state_var_constructor: fn(Context, Field) -> V,\n ) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Map {\n context,\n storage_slot,\n state_var_constructor,\n }\n }\n // docs:end:new\n\n // docs:start:at\n pub fn at(self, key: K) -> V where K: ToField {\n // TODO(#1204): use a generator index for the storage slot\n let derived_storage_slot = pedersen_hash([self.storage_slot, key.to_field()],0);\n\n let state_var_constructor = self.state_var_constructor;\n state_var_constructor(self.context, derived_storage_slot)\n }\n // docs:end:at\n}\n",
1547
2796
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/state_vars/map.nr"
1548
2797
  },
1549
- "51": {
1550
- "source": "use crate::types::type_serialization::TypeSerializationInterface;\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\n\nfn deserializeBool(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n}\n\nfn serializeBool(value: bool) -> [Field; BOOL_SERIALIZED_LEN] {\n [value as Field]\n}\n\nglobal BoolSerializationMethods = TypeSerializationInterface {\n deserialize: deserializeBool,\n serialize: serializeBool,\n};\n",
1551
- "path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/type_serialization/bool_serialization.nr"
1552
- },
1553
- "53": {
1554
- "source": "struct BoundedVec<T, MaxLen> {\n storage: [T; MaxLen],\n len: Field,\n}\n\nimpl<T, MaxLen> BoundedVec<T, MaxLen> {\n pub fn new(initial_value: T) -> Self {\n BoundedVec { storage: [initial_value; MaxLen], len: 0 }\n }\n\n pub fn get(mut self: Self, index: Field) -> T {\n assert(index as u64 < self.len as u64);\n self.storage[index]\n }\n\n pub fn get_unchecked(mut self: Self, index: Field) -> T {\n self.storage[index]\n }\n\n pub fn push(&mut self, elem: T) {\n assert(self.len as u64 < MaxLen as u64);\n\n self.storage[self.len] = elem;\n self.len += 1;\n }\n\n pub fn push_array<Len>(&mut self, array: [T; Len]) {\n let newLen = self.len + array.len();\n assert(newLen as u64 <= MaxLen as u64);\n for i in 0..array.len() {\n self.storage[self.len + i] = array[i];\n }\n self.len = newLen;\n }\n\n pub fn pop(&mut self) -> T {\n assert(self.len as u64 > 0);\n\n let elem = self.storage[self.len - 1];\n self.len -= 1;\n elem\n }\n\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n let mut exceeded_len = false;\n for i in 0..MaxLen {\n exceeded_len |= i == self.len;\n if (!exceeded_len) {\n ret |= predicate(self.storage[i]);\n }\n }\n ret\n }\n}\n\n#[test]\nfn test_vec_push_pop() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n assert(vec.len == 0);\n vec.push(2);\n assert(vec.len == 1);\n vec.push(4);\n assert(vec.len == 2);\n vec.push(6);\n assert(vec.len == 3);\n let x = vec.pop();\n assert(x == 6);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test]\nfn test_vec_push_array() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n assert(vec.len == 2);\n assert(vec.get(0) == 2);\n assert(vec.get(1) == 4);\n}\n\n#[test(should_fail)]\nfn test_vec_get_out_of_bound() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2, 4]);\n let _x = vec.get(2);\n}\n\n#[test(should_fail)]\nfn test_vec_get_not_declared() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n vec.push_array([2]);\n let _x = vec.get(1);\n}\n\n#[test(should_fail)]\nfn test_vec_get_uninitialized() {\n let mut vec: BoundedVec<Field, 2> = BoundedVec::new(0);\n let _x = vec.get(0);\n}\n\n#[test(should_fail)]\nfn test_vec_push_overflow() {\n let mut vec: BoundedVec<Field, 1> = BoundedVec::new(0);\n vec.push(1);\n vec.push(2);\n}\n\n#[test]\nfn test_vec_any() {\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(0);\n vec.push_array([2, 4, 6]);\n assert(vec.any(|v| v == 2) == true);\n assert(vec.any(|v| v == 4) == true);\n assert(vec.any(|v| v == 6) == true);\n assert(vec.any(|v| v == 3) == false);\n}\n\n#[test]\nfn test_vec_any_not_default() {\n let default_value = 1;\n let mut vec: BoundedVec<Field, 3> = BoundedVec::new(default_value);\n vec.push_array([2, 4]);\n assert(vec.any(|v| v == default_value) == false);\n}\n",
1555
- "path": "/usr/src/yarn-project/aztec-nr/aztec/src/types/vec.nr"
1556
- },
1557
- "66": {
1558
- "source": "pub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: Field) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n\n// TODO(#3470): Copied over from https://github.com/AztecProtocol/aztec-packages/blob/a07c4bd47313be6aa604a63f37857eb0136b41ba/yarn-project/noir-protocol-circuits/src/crates/rollup-lib/src/base/base_rollup_inputs.nr#L599\n// move to a shared place?\n\n// TODO to radix returns u8, so we cannot use bigger radixes. It'd be ideal to use a radix of the maximum range-constrained integer noir supports\npub fn full_field_less_than(lhs: Field, rhs: Field) -> bool {\n lhs.lt(rhs)\n}\n\npub fn full_field_greater_than(lhs: Field, rhs: Field) -> bool {\n rhs.lt(lhs)\n}\n\nstruct Reader<N> {\n data: [Field; N],\n offset: Field,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n } \n}\n",
1559
- "path": "/usr/src/yarn-project/aztec-nr/aztec/src/utils.nr"
1560
- },
1561
- "68": {
1562
- "source": "use crate::{\n abi::{\n PrivateContextInputs,\n PublicContextInputs,\n },\n key::nullifier_key::validate_nullifier_key_against_address,\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n public_call::call_public_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n get_block_header::get_block_header,\n nullifier_key::get_nullifier_key_pair,\n },\n types::vec::BoundedVec,\n utils::Reader,\n};\nuse dep::protocol_types::{\n abis::{\n block_header::BlockHeader,\n call_context::CallContext,\n function_data::FunctionData,\n function_selector::FunctionSelector,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n call_stack_item::PrivateCallStackItem,\n call_stack_item::PublicCallStackItem,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::{\n grumpkin_scalar::GrumpkinScalar,\n option::Option,\n};\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 args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_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 block_header: BlockHeader,\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\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n block_header: inputs.block_header,\n\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\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\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 pub fn get_block_header(self, block_number: u32) -> BlockHeader {\n get_block_header(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 read_requests: self.read_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: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.block_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 push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\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 {\n value: note_hash,\n counter: self.side_effect_counter,\n };\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 {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\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) -> GrumpkinScalar {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key, key_pair.secret_key);\n // TODO: Add request to context.\n // self.context.push_nullifier_key_validation_request(public_key, secret_key);\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 {\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(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n ) \n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\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 fields = call_private_function_internal(\n contract_address,\n function_selector, \n args_hash,\n self.side_effect_counter,\n );\n let mut reader = Reader::new(fields);\n\n let item = PrivateCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PrivateCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]), // +1\n read_requests: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialise, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialise, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n block_header: BlockHeader{\n // Must match order in `private_circuit_public_inputs.hpp`\n note_hash_tree_root : reader.read(),\n nullifier_tree_root : reader.read(),\n contract_tree_root : reader.read(),\n l1_to_l2_message_tree_root : reader.read(),\n archive_root : reader.read(),\n public_data_tree_root: reader.read(),\n global_variables_hash: reader.read(),\n },\n contract_deployment_data: ContractDeploymentData {\n deployer_public_key: GrumpkinPoint {\n x: reader.read(), \n y: reader.read()\n },\n constructor_vk_hash : reader.read(),\n function_tree_root : reader.read(),\n contract_address_salt : reader.read(),\n portal_contract_address : EthAddress::from_field(reader.read()),\n },\n chain_id: reader.read(),\n version: reader.read(),\n },\n is_execution_request: reader.read() as bool,\n };\n\n reader.finish();\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(item.is_execution_request == false);\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(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\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 let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: FunctionData {\n selector: FunctionSelector::from_field(reader.read()),\n is_internal: reader.read() as bool,\n is_private: reader.read() as bool,\n is_constructor: reader.read() as bool,\n },\n public_inputs: PublicCircuitPublicInputs {\n call_context: CallContext {\n msg_sender : AztecAddress::from_field(reader.read()),\n storage_contract_address : AztecAddress::from_field(reader.read()),\n portal_contract_address : EthAddress::from_field(reader.read()),\n function_selector: FunctionSelector::from_field(reader.read()), // practically same as fields[1]\n is_delegate_call : reader.read() as bool,\n is_static_call : reader.read() as bool,\n is_contract_deployment: reader.read() as bool,\n start_side_effect_counter: reader.read() as u32,\n },\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 block_header: BlockHeader::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(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\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\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_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 new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n block_header: BlockHeader,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n \n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n block_header: inputs.block_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\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.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.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 unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n block_header: self.inputs.block_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\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 {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\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 pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.block_header.l1_to_l2_message_tree_root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\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;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: 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 call_public_function_internal(\n contract_address, \n function_selector, \n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress, \n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address, \n function_selector, \n 0,\n )\n }\n\n}\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
2798
+ "65": {
2799
+ "source": "mod private;\nmod public;\nmod avm;\n\nuse public::PublicContext;\nuse private::PrivateContext;\nuse avm::AVMContext;\n\nstruct Context {\n private: Option<&mut PrivateContext>,\n public: Option<&mut PublicContext>,\n}\n\nimpl Context {\n pub fn private(context: &mut PrivateContext) -> Context {\n Context {\n private: Option::some(context),\n public: Option::none()\n }\n }\n\n pub fn public(context: &mut PublicContext) -> Context {\n Context {\n public: Option::some(context),\n private: Option::none()\n }\n }\n\n pub fn none() -> Context {\n Context {\n public: Option::none(),\n private: Option::none()\n }\n }\n}\n",
1563
2800
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/context.nr"
1564
2801
  },
1565
- "83": {
2802
+ "81": {
1566
2803
  "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n};\n\n// contract_address + \n// args_hash +\n// crate::abi::FUNCTION_DATA_SIZE +\n// crate::abi::CALL_CONTEXT_SIZE\n// = 2 + 4 + 8\nglobal ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE: Field = 14;\n\n#[oracle(enqueuePublicFunctionCall)]\nfn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {}\n\nunconstrained pub fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32\n) -> [Field; ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE] {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter\n )\n}\n",
1567
2804
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr"
1568
2805
  },
1569
- "89": {
1570
- "source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::CALL_PRIVATE_FUNCTION_RETURN_SIZE,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32\n) -> [Field; CALL_PRIVATE_FUNCTION_RETURN_SIZE] {\n call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter\n )\n}\n",
2806
+ "88": {
2807
+ "source": "use dep::protocol_types::{\n abis::{\n function_selector::FunctionSelector,\n private_call_stack_item::PrivateCallStackItem,\n },\n address::AztecAddress,\n constants::PRIVATE_CALL_STACK_ITEM_LENGTH,\n};\n\n#[oracle(callPrivateFunction)]\nfn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32\n) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {}\n\nunconstrained pub fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32\n) -> PrivateCallStackItem {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter\n );\n\n PrivateCallStackItem::deserialize(fields)\n}\n",
1571
2808
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/call_private_function.nr"
1572
2809
  },
1573
- "96": {
1574
- "source": "#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<T, N>(storage_slot: Field, deserialize: fn([Field; N]) -> T) -> T {\n let fields = storage_read_oracle_wrapper(storage_slot);\n deserialize(fields)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\n// TODO: Remove return value.\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n",
2810
+ "94": {
2811
+ "source": "use dep::protocol_types::traits::{Deserialize, Serialize};\n\n#[oracle(storageRead)]\nfn storage_read_oracle<N>(_storage_slot: Field, _number_of_elements: Field) -> [Field; N] {}\n\nunconstrained fn storage_read_oracle_wrapper<N>(_storage_slot: Field) -> [Field; N] {\n storage_read_oracle(_storage_slot, N)\n}\n\npub fn storage_read<N>(storage_slot: Field) -> [Field; N] {\n storage_read_oracle_wrapper(storage_slot)\n}\n\n#[oracle(storageWrite)]\nfn storage_write_oracle<N>(_storage_slot: Field, _values: [Field; N]) -> [Field; N] {}\n\nunconstrained pub fn storage_write<N>(storage_slot: Field, fields: [Field; N]) {\n let _hash = storage_write_oracle(storage_slot, fields);\n}\n",
1575
2812
  "path": "/usr/src/yarn-project/aztec-nr/aztec/src/oracle/storage.nr"
1576
2813
  },
1577
- "101": {
1578
- "source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 16;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue bellow is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 26;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal BLOCK_HEADER_LENGTH: Field = 7;\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we\n// should change this constant as well as the offsets in private_call_stack_item.nr\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 189;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 190;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal CALL_PRIVATE_FUNCTION_RETURN_SIZE: Field = 195;\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 87;\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH: Field = 177;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n 8 | 0 < hash_index 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
2814
+ "99": {
2815
+ "source": "use crate::{\n abi::PublicContextInputs,\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n public_call::call_public_function_internal,\n },\n};\nuse dep::protocol_types::{\n abis::{\n global_variables::GlobalVariables,\n function_selector::FunctionSelector,\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::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::hash_args,\n header::Header,\n utils::reader::Reader,\n};\n\nstruct PublicContext {\n inputs: PublicContextInputs,\n side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n contract_storage_update_requests: BoundedVec<StorageUpdateRequest, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL>,\n contract_storage_reads: BoundedVec<StorageRead, MAX_PUBLIC_DATA_READS_PER_CALL>,\n public_call_stack_hashes: BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_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 new_l2_to_l1_msgs: BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n\n unencrypted_logs_hash: BoundedVec<Field, NUM_FIELDS_PER_SHA256>,\n unencrypted_logs_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n prover_address: AztecAddress,\n}\n\nimpl PublicContext {\n pub fn new(inputs: PublicContextInputs, args_hash: Field) -> PublicContext {\n let empty_storage_read = StorageRead::empty();\n let empty_storage_update = StorageUpdateRequest::empty();\n PublicContext {\n inputs: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n contract_storage_update_requests: BoundedVec::new(empty_storage_update),\n contract_storage_reads: BoundedVec::new(empty_storage_read),\n public_call_stack_hashes: BoundedVec::new(0),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n new_l2_to_l1_msgs: BoundedVec::new(0),\n\n\n unencrypted_logs_hash: BoundedVec::new(0),\n unencrypted_logs_preimages_length: 0,\n\n historical_header: inputs.historical_header,\n prover_address: AztecAddress::zero(),\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\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.public_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.public_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn block_number(self) -> Field {\n self.inputs.public_global_variables.block_number\n }\n\n pub fn timestamp(self) -> Field {\n self.inputs.public_global_variables.timestamp\n }\n\n pub fn finish(self) -> PublicCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_log_preimages_length = 0;\n\n\n // Compute the public call stack hashes\n let pub_circuit_pub_inputs = PublicCircuitPublicInputs {\n call_context: self.inputs.call_context, // Done\n args_hash: self.args_hash, // Done\n contract_storage_update_requests: self.contract_storage_update_requests.storage,\n contract_storage_reads: self.contract_storage_reads.storage,\n return_values: self.return_values.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.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 unencrypted_logs_hash: unencrypted_logs_hash,\n unencrypted_log_preimages_length: unencrypted_log_preimages_length,\n historical_header: self.inputs.historical_header,\n prover_address: self.prover_address,\n };\n pub_circuit_pub_inputs\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect {\n value: note_hash,\n counter: self.side_effect_counter\n };\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 {\n value: nullifier,\n note_hash: 0, // cannot nullify pending notes in public context\n counter: self.side_effect_counter\n };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn message_portal(&mut self, content: Field) {\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 pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n let this = (*self).this_address();\n let nullifier = process_l1_to_l2_message(self.historical_header.state.l1_to_l2_message_tree.root, this, self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self;\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;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n _self: 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 call_public_function_internal(\n contract_address,\n function_selector,\n args_hash,\n )\n }\n\n pub fn call_public_function_no_args(\n _self: Self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> [Field; RETURN_VALUES_LENGTH] {\n call_public_function_internal(\n contract_address,\n function_selector,\n 0,\n )\n }\n\n}\n",
2816
+ "path": "/usr/src/yarn-project/aztec-nr/aztec/src/context/public.nr"
2817
+ },
2818
+ "100": {
2819
+ "source": "use crate::{\n abi::PrivateContextInputs,\n key::nullifier_key::validate_nullifier_key_against_address,\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal,\n context::get_portal_address,\n header::get_header_at,\n nullifier_key::{get_nullifier_key_pair, NullifierKeyPair},\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_data::FunctionData,\n 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::{\n AztecAddress,\n EthAddress,\n },\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n },\n contract_class::ContractClassId,\n contrakt::{\n deployment_data::ContractDeploymentData,\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n grumpkin_private_key::GrumpkinPrivateKey,\n hash::hash_args,\n header::Header,\n 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 meta_hwm: 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: inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n meta_hwm: 0,\n\n args_hash: args_hash,\n return_values: BoundedVec::new(0),\n\n read_requests: BoundedVec::new(SideEffect::empty()),\n nullifier_key_validation_requests: BoundedVec::new(NullifierKeyValidationRequest::empty()),\n\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n\n historical_header: inputs.historical_header,\n\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\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n\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 meta_hwm: self.meta_hwm,\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: encrypted_logs_hash,\n unencrypted_logs_hash: unencrypted_logs_hash,\n encrypted_log_preimages_length: encrypted_log_preimages_length,\n unencrypted_log_preimages_length: 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 push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect {\n value: read_request,\n counter: self.side_effect_counter,\n };\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 {\n value: note_hash,\n counter: self.side_effect_counter,\n };\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 {\n value: nullifier,\n note_hash: nullified_commitment,\n counter: self.side_effect_counter,\n };\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(key_pair.account == account, \"Cannot query nullifier key for more than one account per call\");\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 {\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(\n &mut self,\n msg_key: Field,\n content: Field,\n secret: Field\n )\n // docs:end:context_consume_l1_to_l2_message\n {\n let nullifier = process_l1_to_l2_message(self.historical_header.state.l1_to_l2_message_tree.root, self.this_address(), self.this_portal_address(), self.chain_id(), self.version(), msg_key, content, secret);\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(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\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(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address));\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",
2820
+ "path": "/usr/src/yarn-project/aztec-nr/aztec/src/context/private.nr"
2821
+ },
2822
+ "102": {
2823
+ "source": "global ARGS_LENGTH: Field = 16;\nglobal RETURN_VALUES_LENGTH: Field = 4;\n\n/**\n * Convention for constant array lengths are mainly divided in 2 classes:\n * - FUNCTION CALL\n * - TRANSACTION\n *\n * Agreed convention is to use MAX_XXX_PER_CALL resp. MAX_XXX_PER_TX, where XXX denotes a type of element such as\n * commitment, or nullifier, e.g.,:\n * - MAX_NEW_NULLIFIERS_PER_CALL\n * - MAX_NEW_COMMITMENTS_PER_TX\n *\n * In the kernel circuits, we accumulate elements such as commitments and the nullifiers from all functions calls in a\n * transaction. Therefore, we always must have:\n * MAX_XXX_PER_TX ≥ MAX_XXX_PER_CALL\n *\n * For instance:\n * MAX_NEW_COMMITMENTS_PER_TX ≥ MAX_NEW_COMMITMENTS_PER_CALL\n * MAX_NEW_NULLIFIERS_PER_TX ≥ MAX_NEW_NULLIFIERS_PER_CALL\n *\n */\n\n// docs:start:constants\n// \"PER CALL\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_CALL: Field = 16;\nglobal MAX_NEW_NULLIFIERS_PER_CALL: Field = 16;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL: Field = 4;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_CALL: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_CALL: Field = 16;\nglobal MAX_READ_REQUESTS_PER_CALL: Field = 32;\nglobal MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL: Field = 1;\n\n// \"PER TRANSACTION\" CONSTANTS\nglobal MAX_NEW_COMMITMENTS_PER_TX: Field = 64;\nglobal MAX_NEW_NULLIFIERS_PER_TX: Field = 64;\nglobal MAX_PRIVATE_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX: Field = 8;\nglobal MAX_NEW_L2_TO_L1_MSGS_PER_TX: Field = 2;\nglobal MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_TX: Field = 16;\nglobal MAX_PUBLIC_DATA_READS_PER_TX: Field = 16;\nglobal MAX_NEW_CONTRACTS_PER_TX: Field = 1;\nglobal MAX_OPTIONALLY_REVEALED_DATA_LENGTH_PER_TX: Field = 4;\nglobal MAX_READ_REQUESTS_PER_TX: Field = 128;\nglobal MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_TX: Field = 4;\nglobal NUM_ENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\nglobal NUM_UNENCRYPTED_LOGS_HASHES_PER_TX: Field = 1;\n\nglobal MAX_NEW_COMMITMENTS_PER_TX_META: Field = 8;\nglobal MAX_NEW_NULLIFIERS_PER_TX_META: Field = 8;\nglobal MAX_PUBLIC_CALL_STACK_LENGTH_PER_TX_META: Field = 2;\n// docs:end:constants\n\n// ROLLUP CONTRACT CONSTANTS - constants used only in l1-contracts\nglobal NUMBER_OF_L1_L2_MESSAGES_PER_ROLLUP: Field = 16;\n\n// TREES RELATED CONSTANTS\nglobal VK_TREE_HEIGHT: Field = 3;\nglobal FUNCTION_TREE_HEIGHT: Field = 5;\nglobal CONTRACT_TREE_HEIGHT: Field = 16;\nglobal NOTE_HASH_TREE_HEIGHT: Field = 32;\nglobal PUBLIC_DATA_TREE_HEIGHT: Field = 40;\nglobal NULLIFIER_TREE_HEIGHT: Field = 20;\nglobal L1_TO_L2_MSG_TREE_HEIGHT: Field = 16;\nglobal ROLLUP_VK_TREE_HEIGHT: Field = 8;\nglobal ARTIFACT_FUNCTION_TREE_MAX_HEIGHT = 5;\n\n// SUB-TREES RELATED CONSTANTS\nglobal CONTRACT_SUBTREE_HEIGHT: Field = 0;\nglobal CONTRACT_SUBTREE_SIBLING_PATH_LENGTH: Field = 16;\nglobal NOTE_HASH_SUBTREE_HEIGHT: Field = 6;\nglobal NOTE_HASH_SUBTREE_SIBLING_PATH_LENGTH: Field = 26;\nglobal NULLIFIER_SUBTREE_HEIGHT: Field = 6;\nglobal PUBLIC_DATA_SUBTREE_HEIGHT: Field = 4;\nglobal ARCHIVE_HEIGHT: Field = 16;\nglobal NULLIFIER_SUBTREE_SIBLING_PATH_LENGTH: Field = 14;\nglobal PUBLIC_DATA_SUBTREE_SIBLING_PATH_LENGTH: Field = 36;\nglobal L1_TO_L2_MSG_SUBTREE_HEIGHT: Field = 4;\nglobal L1_TO_L2_MSG_SUBTREE_SIBLING_PATH_LENGTH: Field = 12;\n\n// MISC CONSTANTS\nglobal FUNCTION_SELECTOR_NUM_BYTES: Field = 4;\nglobal MAPPING_SLOT_PEDERSEN_SEPARATOR: Field = 4;\n// sha256 hash is stored in two fields to accommodate all 256-bits of the hash\nglobal NUM_FIELDS_PER_SHA256: Field = 2;\nglobal ARGS_HASH_CHUNK_LENGTH: u32 = 32;\nglobal ARGS_HASH_CHUNK_COUNT: u32 = 32;\n\n// CONTRACT CLASS CONSTANTS\n// This should be around 8192 (assuming 2**15 instructions packed at 8 bytes each), \n// but it's reduced to speed up build times, otherwise the ClassRegisterer takes over 5 mins to compile.\n// We are not using 1024 so we can squeeze in a few more args to methods that consume packed public bytecode,\n// such as the ClassRegisterer.register, and still land below the 32 * 32 max args limit for hashing.\nglobal MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS: Field = 1000;\n// Bytecode size for private functions is per function, not for the entire contract.\n// Note that private functions bytecode includes a mix of acir and brillig.\nglobal MAX_PACKED_BYTECODE_SIZE_PER_PRIVATE_FUNCTION_IN_FIELDS: Field = 500;\n// Same for unconstrained functions: the size is per function.\nglobal MAX_PACKED_BYTECODE_SIZE_PER_UNCONSTRAINED_FUNCTION_IN_FIELDS: Field = 500;\n// Since we are not yet emitting selectors we'll use this magic value to identify events emitted by the ClassRegisterer.\n// This is just a stopgap until we implement proper selectors.\n// sha224sum 'struct ContractClassRegistered {contract_class_id: ContractClassId, version: Field, artifact_hash: Field, private_functions_root: Field, packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] }'\nglobal REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE = 0x6999d1e02b08a447a463563453cb36919c9dd7150336fc7c4d2b52f8;\n// sha224sum 'struct ClassPrivateFunctionBroadcasted'\nglobal REGISTERER_PRIVATE_FUNCTION_BROADCASTED_MAGIC_VALUE = 0x1b70e95fde0b70adc30496b90a327af6a5e383e028e7a43211a07bcd;\n// sha224sum 'struct ClassUnconstrainedFunctionBroadcasted'\nglobal REGISTERER_UNCONSTRAINED_FUNCTION_BROADCASTED_MAGIC_VALUE = 0xe7af816635466f128568edb04c9fa024f6c87fb9010fdbffa68b3d99;\n\n// NOIR CONSTANTS - constants used only in yarn-packages/noir-contracts\n// Some are defined here because Noir doesn't yet support globals referencing other globals yet.\n// Move these constants to a noir file once the issue below is resolved:\n// https://github.com/noir-lang/noir/issues/1734\nglobal L1_TO_L2_MESSAGE_LENGTH: Field = 8;\nglobal L1_TO_L2_MESSAGE_ORACLE_CALL_LENGTH: Field = 25;\nglobal MAX_NOTE_FIELDS_LENGTH: Field = 20;\n// GET_NOTE_ORACLE_RETURN_LENGT = MAX_NOTE_FIELDS_LENGTH + 1 + 2\n// The plus 1 is 1 extra field for nonce.\n// + 2 for EXTRA_DATA: [number_of_return_notes, contract_address]\nglobal GET_NOTE_ORACLE_RETURN_LENGTH: Field = 23;\nglobal MAX_NOTES_PER_PAGE: Field = 10;\n// VIEW_NOTE_ORACLE_RETURN_LENGTH = MAX_NOTES_PER_PAGE * (MAX_NOTE_FIELDS_LENGTH + 1) + 2;\nglobal VIEW_NOTE_ORACLE_RETURN_LENGTH: Field = 212;\nglobal CALL_CONTEXT_LENGTH: Field = 8;\nglobal GLOBAL_VARIABLES_LENGTH: Field = 4;\nglobal PARTIAL_STATE_REFERENCE_LENGTH: Field = 8;\nglobal STATE_REFERENCE_LENGTH: Field = 10; // 2 for snap + 8 for partial\nglobal HEADER_LENGTH: Field = 18; // 2 for last_archive, 2 for body hash, 10 for state reference, 4 for global vars\nglobal FUNCTION_DATA_LENGTH: Field = 4;\nglobal CONTRACT_DEPLOYMENT_DATA_LENGTH: Field = 6;\n// Change this ONLY if you have changed the PrivateCircuitPublicInputs structure.\n// In other words, if the structure/size of the public inputs of a function call changes then we should change this\n// constant as well PRIVATE_CALL_STACK_ITEM_LENGTH\nglobal PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 205;\nglobal PRIVATE_CALL_STACK_ITEM_LENGTH: Field = 210;\nglobal CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH: Field = 3;\nglobal CONTRACT_STORAGE_READ_LENGTH: Field = 2;\n// Change this ONLY if you have changed the PublicCircuitPublicInputs structure.\nglobal PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH: Field = 201;\nglobal GET_NOTES_ORACLE_RETURN_LENGTH: Field = 674;\nglobal COMMITMENTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal NULLIFIERS_NUM_BYTES_PER_BASE_ROLLUP: Field = 2048;\nglobal PUBLIC_DATA_WRITES_NUM_BYTES_PER_BASE_ROLLUP: Field = 1024;\nglobal CONTRACTS_NUM_BYTES_PER_BASE_ROLLUP: Field = 32;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal CONTRACT_DATA_NUM_BYTES_PER_BASE_ROLLUP_UNPADDED: Field = 52;\nglobal L2_TO_L1_MSGS_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\nglobal LOGS_HASHES_NUM_BYTES_PER_BASE_ROLLUP: Field = 64;\n\n/**\n * Enumerate the hash_indices which are used for pedersen hashing.\n * We start from 1 to avoid the default generators. The generator indices are listed\n * based on the number of elements each index hashes. The following conditions must be met:\n *\n * +-----------+-------------------------------+----------------------+\n * | Hash size | Number of elements hashed (n) | Condition to use |\n * |-----------+-------------------------------+----------------------|\n * | LOW | n ≤ 8 | 0 < hash_index ≤ 32 |\n * | MID | 8 < n ≤ 16 | 32 < hash_index ≤ 40 |\n * | HIGH | 16 < n ≤ 48 | 40 < hash_index ≤ 48 |\n * +-----------+-------------------------------+----------------------+\n *\n * Note: When modifying, modify `GeneratorIndexPacker` in packer.hpp accordingly.\n */\n// Indices with size ≤ 8\nglobal GENERATOR_INDEX__COMMITMENT = 1;\nglobal GENERATOR_INDEX__COMMITMENT_NONCE = 2;\nglobal GENERATOR_INDEX__UNIQUE_COMMITMENT = 3;\nglobal GENERATOR_INDEX__SILOED_COMMITMENT = 4;\nglobal GENERATOR_INDEX__NULLIFIER = 5;\nglobal GENERATOR_INDEX__INITIALIZATION_NULLIFIER = 6;\nglobal GENERATOR_INDEX__OUTER_NULLIFIER = 7;\nglobal GENERATOR_INDEX__PUBLIC_DATA_READ = 8;\nglobal GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST = 9;\nglobal GENERATOR_INDEX__FUNCTION_DATA = 10;\nglobal GENERATOR_INDEX__FUNCTION_LEAF = 11;\nglobal GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA = 12;\nglobal GENERATOR_INDEX__CONSTRUCTOR = 13;\nglobal GENERATOR_INDEX__CONSTRUCTOR_ARGS = 14;\nglobal GENERATOR_INDEX__CONTRACT_ADDRESS = 15;\nglobal GENERATOR_INDEX__CONTRACT_LEAF = 16;\nglobal GENERATOR_INDEX__CALL_CONTEXT = 17;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM = 18;\nglobal GENERATOR_INDEX__CALL_STACK_ITEM_2 = 19;\nglobal GENERATOR_INDEX__L1_TO_L2_MESSAGE_SECRET = 20;\nglobal GENERATOR_INDEX__L2_TO_L1_MSG = 21;\nglobal GENERATOR_INDEX__TX_CONTEXT = 22;\nglobal GENERATOR_INDEX__PUBLIC_LEAF_INDEX = 23;\nglobal GENERATOR_INDEX__PUBLIC_DATA_LEAF = 24;\nglobal GENERATOR_INDEX__SIGNED_TX_REQUEST = 25;\nglobal GENERATOR_INDEX__GLOBAL_VARIABLES = 26;\nglobal GENERATOR_INDEX__PARTIAL_ADDRESS = 27;\nglobal GENERATOR_INDEX__BLOCK_HASH = 28;\nglobal GENERATOR_INDEX__SIDE_EFFECT = 29;\n// Indices with size ≤ 16\nglobal GENERATOR_INDEX__TX_REQUEST = 33;\nglobal GENERATOR_INDEX__SIGNATURE_PAYLOAD = 34;\n// Indices with size ≤ 44\nglobal GENERATOR_INDEX__VK = 41;\nglobal GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS = 42;\nglobal GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS = 43;\nglobal GENERATOR_INDEX__FUNCTION_ARGS = 44;\n",
1579
2824
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/constants.nr"
1580
2825
  },
2826
+ "103": {
2827
+ "source": "use crate::{\n abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot,\n constants::PARTIAL_STATE_REFERENCE_LENGTH,\n traits::{\n Deserialize,\n Empty,\n Hash,\n Serialize,\n },\n};\n\nstruct PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot,\n nullifier_tree: AppendOnlyTreeSnapshot,\n contract_tree: AppendOnlyTreeSnapshot,\n public_data_tree: AppendOnlyTreeSnapshot,\n}\n\nimpl Eq for PartialStateReference {\n fn eq(self, other: PartialStateReference) -> bool {\n self.note_hash_tree.eq(other.note_hash_tree) &\n self.nullifier_tree.eq(other.nullifier_tree) &\n self.contract_tree.eq(other.contract_tree) &\n self.public_data_tree.eq(other.public_data_tree)\n }\n}\n\nimpl Serialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn serialize(self) -> [Field; PARTIAL_STATE_REFERENCE_LENGTH] {\n let serialized_note_hash_tree = self.note_hash_tree.serialize();\n let serialized_nullifier_tree = self.nullifier_tree.serialize();\n let serialized_contract_tree = self.contract_tree.serialize();\n let serialized_public_data_tree = self.public_data_tree.serialize();\n\n [\n serialized_note_hash_tree[0],\n serialized_note_hash_tree[1],\n serialized_nullifier_tree[0],\n serialized_nullifier_tree[1],\n serialized_contract_tree[0],\n serialized_contract_tree[1],\n serialized_public_data_tree[0],\n serialized_public_data_tree[1],\n ]\n }\n}\n\nimpl Deserialize<PARTIAL_STATE_REFERENCE_LENGTH> for PartialStateReference {\n fn deserialize(serialized: [Field; PARTIAL_STATE_REFERENCE_LENGTH]) -> PartialStateReference {\n PartialStateReference {\n note_hash_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[0], serialized[1]]\n ),\n nullifier_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[2], serialized[3]]\n ),\n contract_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[4], serialized[5]]\n ),\n public_data_tree: AppendOnlyTreeSnapshot::deserialize(\n [serialized[6], serialized[7]]\n ),\n }\n }\n}\n\nimpl Empty for PartialStateReference {\n fn empty() -> Self {\n Self {\n note_hash_tree: AppendOnlyTreeSnapshot::zero(),\n nullifier_tree: AppendOnlyTreeSnapshot::zero(),\n contract_tree: AppendOnlyTreeSnapshot::zero(),\n public_data_tree: AppendOnlyTreeSnapshot::zero(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let partial: PartialStateReference = dep::std::unsafe::zeroed();\n let _serialized = partial.serialize();\n let _deserialized = PartialStateReference::deserialize(_serialized);\n}\n",
2828
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/partial_state_reference.nr"
2829
+ },
2830
+ "104": {
2831
+ "source": "use crate::{\n abis::append_only_tree_snapshot::{\n AppendOnlyTreeSnapshot,\n APPEND_ONLY_TREE_SNAPSHOT_LENGTH,\n },\n constants::{\n PARTIAL_STATE_REFERENCE_LENGTH,\n STATE_REFERENCE_LENGTH,\n },\n partial_state_reference::PartialStateReference,\n traits::{\n Deserialize,\n Empty,\n Hash,\n Serialize,\n },\n utils::{\n arr_copy_slice,\n },\n};\n\nstruct StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot,\n partial: PartialStateReference,\n}\n\nimpl Eq for StateReference {\n fn eq(self, other: StateReference) -> bool {\n self.l1_to_l2_message_tree.eq(other.l1_to_l2_message_tree) &\n self.partial.eq(other.partial)\n }\n}\n\nimpl Serialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn serialize(self) -> [Field; STATE_REFERENCE_LENGTH] {\n let mut fields: BoundedVec<Field, STATE_REFERENCE_LENGTH> = BoundedVec::new(0);\n\n fields.extend_from_array(self.l1_to_l2_message_tree.serialize());\n fields.extend_from_array(self.partial.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<STATE_REFERENCE_LENGTH> for StateReference {\n fn deserialize(serialized: [Field; STATE_REFERENCE_LENGTH]) -> StateReference {\n let mut offset = 0;\n\n let l1_to_l2_message_tree_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let partial_fields = arr_copy_slice(serialized, [0; PARTIAL_STATE_REFERENCE_LENGTH], offset);\n\n StateReference {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::deserialize(l1_to_l2_message_tree_fields),\n partial: PartialStateReference::deserialize(partial_fields),\n }\n }\n}\n\nimpl Empty for StateReference {\n fn empty() -> Self {\n Self {\n l1_to_l2_message_tree: AppendOnlyTreeSnapshot::zero(),\n partial: PartialStateReference::empty(),\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let state: StateReference = dep::std::unsafe::zeroed();\n let _serialized = state.serialize();\n let _deserialized = StateReference::deserialize(_serialized);\n}\n",
2832
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/state_reference.nr"
2833
+ },
1581
2834
  "107": {
1582
- "source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::FunctionLeafPreimage;\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::utils::bounded_vec::BoundedVec;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n 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 function_tree_root: Field,\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, function_tree_root };\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 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",
2835
+ "source": "use crate::{\n abis::{\n append_only_tree_snapshot::{\n AppendOnlyTreeSnapshot,\n APPEND_ONLY_TREE_SNAPSHOT_LENGTH,\n },\n global_variables::{\n GlobalVariables,\n GLOBAL_VARIABLES_LENGTH,\n },\n },\n constants::{\n GENERATOR_INDEX__BLOCK_HASH,\n HEADER_LENGTH,\n NUM_FIELDS_PER_SHA256,\n STATE_REFERENCE_LENGTH,\n },\n hash::pedersen_hash,\n state_reference::StateReference,\n traits::{\n Deserialize,\n Empty,\n Hash,\n Serialize,\n },\n utils::{\n arr_copy_slice,\n },\n};\n\n// docs:start:header\nstruct Header {\n last_archive: AppendOnlyTreeSnapshot,\n body_hash: [Field; NUM_FIELDS_PER_SHA256],\n state: StateReference,\n global_variables: GlobalVariables,\n}\n// docs:end:header\n\nimpl Eq for Header {\n fn eq(self, other: Self) -> bool {\n self.last_archive.eq(other.last_archive) &\n (self.body_hash == other.body_hash) &\n self.state.eq(other.state) &\n self.global_variables.eq(other.global_variables)\n }\n}\n\nimpl Serialize<HEADER_LENGTH> for Header {\n fn serialize(self) -> [Field; HEADER_LENGTH] {\n let mut fields: BoundedVec<Field, HEADER_LENGTH> = BoundedVec::new(0);\n\n fields.extend_from_array(self.last_archive.serialize());\n fields.extend_from_array(self.body_hash);\n fields.extend_from_array(self.state.serialize());\n fields.extend_from_array(self.global_variables.serialize());\n\n fields.storage\n }\n}\n\nimpl Deserialize<HEADER_LENGTH> for Header {\n fn deserialize(serialized: [Field; HEADER_LENGTH]) -> Self {\n let mut offset = 0;\n\n let last_archive_fields = arr_copy_slice(serialized, [0; APPEND_ONLY_TREE_SNAPSHOT_LENGTH], offset);\n offset = offset + APPEND_ONLY_TREE_SNAPSHOT_LENGTH;\n\n let body_hash = arr_copy_slice(serialized, [0; NUM_FIELDS_PER_SHA256], offset);\n offset = offset + NUM_FIELDS_PER_SHA256;\n\n let state_fields = arr_copy_slice(serialized, [0; STATE_REFERENCE_LENGTH], offset);\n offset = offset + STATE_REFERENCE_LENGTH;\n\n let global_variables_fields = arr_copy_slice(serialized, [0; GLOBAL_VARIABLES_LENGTH], offset);\n\n Header {\n last_archive: AppendOnlyTreeSnapshot::deserialize(last_archive_fields),\n body_hash,\n state: StateReference::deserialize(state_fields),\n global_variables: GlobalVariables::deserialize(global_variables_fields),\n }\n }\n}\n\nimpl Empty for Header {\n fn empty() -> Self {\n Self {\n last_archive: AppendOnlyTreeSnapshot::zero(),\n body_hash: [0; NUM_FIELDS_PER_SHA256],\n state: StateReference::empty(),\n global_variables: GlobalVariables::empty(),\n }\n }\n}\n\nimpl Hash for Header {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__BLOCK_HASH)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let header: Header = dep::std::unsafe::zeroed();\n let serialized = header.serialize();\n let deserialized = Header::deserialize(serialized);\n assert(header.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let header: Header = dep::std::unsafe::zeroed();\n let _hashed = header.hash();\n}\n",
2836
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/header.nr"
2837
+ },
2838
+ "108": {
2839
+ "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,\n ARGS_HASH_CHUNK_LENGTH,\n CONTRACT_TREE_HEIGHT, \n FUNCTION_TREE_HEIGHT, \n NOTE_HASH_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256,\n GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK,\n GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE,\n 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",
1583
2840
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/hash.nr"
1584
2841
  },
1585
- "123": {
1586
- "source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n },\n hash::pedersen_hash,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, ToField};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(pub_key: GrumpkinPoint, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_key.x, pub_key.y, partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n \n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\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 {\n inner: fields[0]\n }\n }\n}\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl EthAddress{\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\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 {\n inner: fields[0]\n }\n }\n}\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(contract_address_salt : Field, function_tree_root : Field, constructor_hash : Field) -> Self {\n PartialAddress::from_field(\n pedersen_hash([\n // TODO why the zeroes?\n 0,\n 0,\n contract_address_salt,\n function_tree_root,\n constructor_hash\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
1587
- "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/address.nr"
2842
+ "110": {
2843
+ "source": "// general util packages/modules are usually bad practice\n// because there is no criteria for what we should not put in here.\n// Reducing the size of this package would be welcome.\n\nmod arrays;\nmod field;\nmod reader;\nmod uint256;\n\n// if predicate == true then return lhs, else return rhs\npub fn conditional_assign(predicate: bool, lhs: Field, rhs: Field) -> Field {\n if predicate { lhs } else { rhs }\n}\n\n// Copied over from \"yarn-project/aztec-nr/aztec/src/utils.nr\"\npub fn arr_copy_slice<T, N, M>(src: [T; N], mut dst: [T; M], offset: Field) -> [T; M] {\n for i in 0..dst.len() {\n dst[i] = src[i + offset];\n }\n dst\n}\n",
2844
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/utils.nr"
1588
2845
  },
1589
- "128": {
1590
- "source": "use crate::address::EthAddress;\nuse crate::constants::{\n CONTRACT_DEPLOYMENT_DATA_LENGTH,\n GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA,\n};\nuse crate::hash::pedersen_hash;\nuse crate::grumpkin_point::GrumpkinPoint;\nuse crate::traits::Hash;\n\n// docs:start:contract-deployment-data\nstruct ContractDeploymentData {\n deployer_public_key : GrumpkinPoint,\n constructor_vk_hash : Field,\n function_tree_root : Field,\n contract_address_salt : Field,\n portal_contract_address : EthAddress,\n}\n// docs:end:contract-deployment-data\n\nimpl Hash for ContractDeploymentData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA)\n }\n}\n\nimpl ContractDeploymentData {\n fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] {\n [\n self.deployer_public_key.x,\n self.deployer_public_key.y,\n self.constructor_vk_hash,\n self.function_tree_root,\n self.contract_address_salt,\n self.portal_contract_address.to_field(),\n ]\n }\n\n fn assert_is_zero(self) {\n self.deployer_public_key.assert_is_zero();\n assert(self.constructor_vk_hash == 0);\n assert(self.function_tree_root == 0);\n assert(self.contract_address_salt == 0);\n self.portal_contract_address.assert_is_zero();\n }\n\n}\n",
1591
- "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/deployment_data.nr"
2846
+ "125": {
2847
+ "source": "use crate::{\n constants::{\n GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONSTRUCTOR\n },\n hash::pedersen_hash,\n contract_class::ContractClassId,\n utils,\n grumpkin_point::GrumpkinPoint,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, ToField, Serialize, Deserialize};\nuse crate::type_serialization::{ETH_ADDRESS_SERIALIZED_LEN, AZTEC_ADDRESS_SERIALIZED_LEN};\n\n// Aztec address\nstruct AztecAddress {\n inner : Field\n}\n\nimpl Eq for AztecAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for AztecAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<AZTEC_ADDRESS_SERIALIZED_LEN> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_SERIALIZED_LEN] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_SERIALIZED_LEN> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_SERIALIZED_LEN]) -> Self {\n AztecAddress::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute_from_public_key(pub_key: GrumpkinPoint, contract_class_id: ContractClassId, salt: Field, initialization_hash: Field, portal_contract_address: EthAddress) -> AztecAddress {\n AztecAddress::compute(PublicKeysHash::compute(pub_key), PartialAddress::compute(contract_class_id, salt, initialization_hash, portal_contract_address))\n }\n\n pub fn compute(pub_keys_hash: PublicKeysHash, partial_address: PartialAddress) -> AztecAddress {\n AztecAddress::from_field(\n pedersen_hash(\n [pub_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS\n )\n )\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n \n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n}\n\nstruct EthAddress{\n inner : Field\n}\n\nimpl Eq for EthAddress {\n fn eq(self, other : Self) -> bool {\n self.to_field() == other.to_field()\n }\n}\n\nimpl Empty for EthAddress {\n fn empty() -> Self {\n Self {\n inner : 0\n }\n }\n}\n\nimpl ToField for EthAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<ETH_ADDRESS_SERIALIZED_LEN> for EthAddress {\n fn serialize(self: Self) -> [Field; ETH_ADDRESS_SERIALIZED_LEN] {\n [self.inner]\n }\n}\n\nimpl Deserialize<ETH_ADDRESS_SERIALIZED_LEN> for EthAddress {\n fn deserialize(fields: [Field; ETH_ADDRESS_SERIALIZED_LEN]) -> Self {\n Self {\n inner: fields[0]\n }\n }\n}\n\nimpl EthAddress{\n pub fn zero() -> Self {\n Self {\n inner: 0\n }\n }\n\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn is_zero(self) -> bool {\n self.inner == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n\n pub fn conditional_assign(predicate: bool, lhs : Self, rhs : Self) -> Self{\n let result = utils::conditional_assign(predicate, rhs.to_field(), lhs.to_field());\n Self {\n inner : result\n }\n }\n}\n\n// Partial address\nstruct PartialAddress {\n inner : Field\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(contract_class_id: ContractClassId, salt: Field, initialization_hash: Field, portal_contract_address: EthAddress) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(contract_class_id, SaltedInitializationHash::compute(salt, initialization_hash, portal_contract_address))\n }\n\n pub fn compute_from_salted_initialization_hash(contract_class_id: ContractClassId, salted_initialization_hash: SaltedInitializationHash) -> Self {\n PartialAddress::from_field(\n pedersen_hash([\n contract_class_id.to_field(),\n salted_initialization_hash.to_field()\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n// Salted initialization hash. Used in the computation of a partial address.\nstruct SaltedInitializationHash {\n inner: Field\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(salt : Field, initialization_hash: Field, portal_contract_address: EthAddress) -> Self {\n SaltedInitializationHash::from_field(\n pedersen_hash([\n salt,\n initialization_hash,\n portal_contract_address.to_field(),\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\n// Public keys hash. Used in the computation of an address.\nstruct PublicKeysHash {\n inner: Field\n}\n\nimpl ToField for PublicKeysHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl PublicKeysHash {\n pub fn from_field(field : Field) -> Self {\n Self {\n inner : field\n }\n }\n\n pub fn compute(public_key: GrumpkinPoint) -> Self {\n PublicKeysHash::from_field(\n pedersen_hash([\n public_key.x,\n public_key.y,\n ], GENERATOR_INDEX__PARTIAL_ADDRESS)\n )\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n\npub fn compute_initialization_hash(selector: Field, args_hash: Field) -> Field {\n pedersen_hash(\n [\n selector,\n args_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n",
2848
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/address.nr"
1592
2849
  },
1593
- "129": {
1594
- "source": "use crate::{\n constants::{\n CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Hash, Empty};\n\nstruct StorageUpdateRequest{\n storage_slot : Field,\n old_value : Field,\n new_value : Field,\n}\n\nimpl Eq for StorageUpdateRequest {\n fn eq(self, request: Self) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n (request.storage_slot == self.storage_slot)\n & (request.old_value == self.old_value)\n & (request.new_value == self.new_value)\n }\n}\n\nimpl Empty for StorageUpdateRequest {\n fn empty() -> Self {\n StorageUpdateRequest {\n storage_slot: 0,\n old_value: 0,\n new_value: 0,\n }\n }\n}\n\nimpl Hash for StorageUpdateRequest {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_UPDATE_REQUEST)\n }\n}\n\nimpl StorageUpdateRequest {\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_UPDATE_REQUEST_LENGTH] {\n [self.storage_slot, self.old_value, self.new_value]\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
1595
- "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_update_request.nr"
2850
+ "127": {
2851
+ "source": "use crate::traits::{Serialize, Deserialize};\n\nglobal BOOL_SERIALIZED_LEN: Field = 1;\nglobal U32_SERIALIZED_LEN: Field = 1;\nglobal U8_SERIALIZED_LEN: Field = 1;\nglobal FIELD_SERIALIZED_LEN: Field = 1;\nglobal AZTEC_ADDRESS_SERIALIZED_LEN = 1;\nglobal ETH_ADDRESS_SERIALIZED_LEN = 1;\n\nimpl Serialize<U32_SERIALIZED_LEN> for u32 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U32_SERIALIZED_LEN> for u32 {\n fn deserialize(fields: [Field; U32_SERIALIZED_LEN]) -> Self {\n fields[0] as u32\n }\n}\n\nimpl Serialize<U8_SERIALIZED_LEN> for u8 {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<U8_SERIALIZED_LEN> for u8 {\n fn deserialize(fields: [Field; U8_SERIALIZED_LEN]) -> Self {\n fields[0] as u8\n }\n}\n\nimpl Serialize<FIELD_SERIALIZED_LEN> for Field {\n fn serialize(self) -> [Field; U32_SERIALIZED_LEN] {\n [self]\n }\n}\n\nimpl Deserialize<FIELD_SERIALIZED_LEN> for Field {\n fn deserialize(fields: [Field; FIELD_SERIALIZED_LEN]) -> Self {\n fields[0]\n }\n}\n\nimpl Serialize<BOOL_SERIALIZED_LEN> for bool {\n fn serialize(self) -> [Field; BOOL_SERIALIZED_LEN] {\n [self as Field]\n }\n}\n\nimpl Deserialize<BOOL_SERIALIZED_LEN> for bool {\n fn deserialize(fields: [Field; BOOL_SERIALIZED_LEN]) -> bool {\n fields[0] as bool\n }\n}\n",
2852
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/type_serialization.nr"
1596
2853
  },
1597
- "130": {
1598
- "source": "use crate::{\n constants::{\n CONTRACT_STORAGE_READ_LENGTH,\n GENERATOR_INDEX__PUBLIC_DATA_READ,\n },\n hash::pedersen_hash,\n};\nuse crate::traits::Empty;\n\nstruct StorageRead {\n storage_slot: Field,\n current_value: Field,\n}\n\nimpl Empty for StorageRead { \n fn empty() -> Self {\n Self {\n storage_slot: 0,\n current_value: 0,\n }\n }\n}\n\nimpl StorageRead {\n\n pub fn serialize(self) -> [Field; CONTRACT_STORAGE_READ_LENGTH] {\n [self.storage_slot, self.current_value]\n }\n\n pub fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_DATA_READ)\n }\n\n pub fn is_empty(self) -> bool {\n self.storage_slot == 0\n }\n}\n",
1599
- "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/storage_read.nr"
2854
+ "131": {
2855
+ "source": "use crate::{\n address::EthAddress,\n contract_class::ContractClassId,\n constants::{\n CONTRACT_DEPLOYMENT_DATA_LENGTH,\n GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA,\n },\n grumpkin_point::GrumpkinPoint,\n hash::pedersen_hash,\n traits::{\n Deserialize,\n Hash,\n Serialize,\n },\n};\n\n// docs:start:contract-deployment-data\nstruct ContractDeploymentData {\n public_key : GrumpkinPoint,\n initialization_hash : Field,\n contract_class_id : ContractClassId,\n contract_address_salt : Field,\n portal_contract_address : EthAddress,\n}\n// docs:end:contract-deployment-data\n\nimpl Eq for ContractDeploymentData {\n fn eq(self, other: Self) -> bool {\n self.public_key.eq(other.public_key) &\n self.initialization_hash.eq(other.initialization_hash) &\n self.contract_class_id.eq(other.contract_class_id) &\n self.contract_address_salt.eq(other.contract_address_salt) &\n self.portal_contract_address.eq(other.portal_contract_address)\n }\n}\n\nimpl Hash for ContractDeploymentData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CONTRACT_DEPLOYMENT_DATA)\n }\n}\n\nimpl Serialize<CONTRACT_DEPLOYMENT_DATA_LENGTH> for ContractDeploymentData {\n fn serialize(self) -> [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH] {\n [\n self.public_key.x,\n self.public_key.y,\n self.initialization_hash,\n self.contract_class_id.to_field(),\n self.contract_address_salt,\n self.portal_contract_address.to_field(),\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_DEPLOYMENT_DATA_LENGTH> for ContractDeploymentData {\n fn deserialize(serialized: [Field; CONTRACT_DEPLOYMENT_DATA_LENGTH]) -> Self {\n Self {\n public_key: GrumpkinPoint {\n x: serialized[0],\n y: serialized[1],\n },\n initialization_hash: serialized[2],\n contract_class_id: ContractClassId::from_field(serialized[3]),\n contract_address_salt: serialized[4],\n portal_contract_address: EthAddress::from_field(serialized[5]),\n }\n }\n}\n\nimpl ContractDeploymentData {\n fn assert_is_zero(self) {\n self.public_key.assert_is_zero();\n assert(self.initialization_hash == 0);\n self.contract_class_id.assert_is_zero();\n assert(self.contract_address_salt == 0);\n self.portal_contract_address.assert_is_zero();\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let data: ContractDeploymentData = dep::std::unsafe::zeroed();\n let serialized = data.serialize();\n let deserialized = ContractDeploymentData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n",
2856
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/contrakt/deployment_data.nr"
1600
2857
  },
1601
- "138": {
1602
- "source": "use crate::abis::{\n function_data::FunctionData,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{\n GENERATOR_INDEX__CALL_STACK_ITEM,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n public_inputs: PrivateCircuitPublicInputs,\n function_data: FunctionData,\n // Not really needed for PrivateCallStackItem.\n is_execution_request: bool,\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.contract_address.to_field(),\n self.function_data.hash(),\n self.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs,\n };\n call_stack_item\n }\n}\n",
1603
- "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_stack_item.nr"
2858
+ "139": {
2859
+ "source": "struct Reader<N> {\n data: [Field; N],\n offset: Field,\n}\n\nimpl<N> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_array<K>(&mut self, mut result: [Field; K]) -> [Field; K] {\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n // TODO(#4394)\n pub fn read_struct<T, K>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array([0; K]));\n result\n }\n\n pub fn read_struct_array<T, K, C>(&mut self, deserialise: fn([Field; K]) -> T, mut result: [T; C]) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n } \n}\n",
2860
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/utils/reader.nr"
1604
2861
  },
1605
2862
  "143": {
1606
- "source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash};\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\nstruct SideEffect{\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffect {\n pub fn serialize(self) -> [Field; 2] {\n [self.value, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 2]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.counter == 0)\n }\n}\n\nstruct SideEffectLinkedToNoteHash{\n value: Field,\n note_hash: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffectLinkedToNoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffectLinkedToNoteHash {\n fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool {\n (self.value == side_effect.value)\n & (self.note_hash == side_effect.note_hash) \n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffectLinkedToNoteHash {\n fn empty() -> Self {\n SideEffectLinkedToNoteHash {\n value: 0,\n note_hash: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffectLinkedToNoteHash {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl SideEffectLinkedToNoteHash{\n pub fn serialize(self) -> [Field; 3] {\n [self.value, self.note_hash, self.counter as Field]\n }\n\n pub fn deserialise(values: [Field; 3]) -> Self {\n Self {\n value: values[0],\n note_hash: values[1],\n counter: values[2] as u32,\n }\n }\n\n pub fn is_empty(self) -> bool {\n (self.value == 0)\n & (self.note_hash == 0)\n & (self.counter == 0)\n }\n}\n\n",
2863
+ "source": "use crate::constants::{GENERATOR_INDEX__SIDE_EFFECT};\nuse dep::std::cmp::Eq;\nuse crate::traits::{Empty, Hash, Serialize, Deserialize};\n\ntrait Ordered {\n fn counter(self) -> u32;\n}\n\nstruct SideEffect{\n value: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffect {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffect {\n fn eq(self, side_effect: SideEffect) -> bool {\n (self.value == side_effect.value)\n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffect {\n fn empty() -> Self {\n SideEffect {\n value: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffect {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize() , GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl Serialize<2> for SideEffect {\n fn serialize(self) -> [Field; 2] {\n [self.value, self.counter as Field]\n }\n}\n\nimpl Deserialize<2> for SideEffect {\n fn deserialize(values: [Field; 2]) -> Self {\n Self {\n value: values[0],\n counter: values[1] as u32,\n }\n }\n}\n\nstruct SideEffectLinkedToNoteHash{\n value: Field,\n note_hash: Field,\n counter: u32,\n}\n\nimpl Ordered for SideEffectLinkedToNoteHash {\n fn counter(self) -> u32 {\n self.counter\n }\n}\n\nimpl Eq for SideEffectLinkedToNoteHash {\n fn eq(self, side_effect: SideEffectLinkedToNoteHash) -> bool {\n (self.value == side_effect.value)\n & (self.note_hash == side_effect.note_hash) \n & (self.counter == side_effect.counter)\n }\n}\n\nimpl Empty for SideEffectLinkedToNoteHash {\n fn empty() -> Self {\n SideEffectLinkedToNoteHash {\n value: 0,\n note_hash: 0,\n counter: 0,\n }\n }\n}\n\nimpl Hash for SideEffectLinkedToNoteHash {\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__SIDE_EFFECT)\n }\n}\n\nimpl Serialize<3> for SideEffectLinkedToNoteHash {\n fn serialize(self) -> [Field; 3] {\n [self.value, self.note_hash, self.counter as Field]\n }\n}\n\nimpl Deserialize<3> for SideEffectLinkedToNoteHash {\n fn deserialize(values: [Field; 3]) -> Self {\n Self {\n value: values[0],\n note_hash: values[1],\n counter: values[2] as u32,\n }\n }\n}\n\n",
1607
2864
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/side_effect.nr"
1608
2865
  },
1609
- "146": {
1610
- "source": "use crate::constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n};\nuse crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n block_header::BlockHeader,\n },\n address::AztecAddress,\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n utils::bounded_vec::BoundedVec,\n};\n\nstruct PublicCircuitPublicInputs{\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n prover_address: AztecAddress,\n}\n\nimpl PublicCircuitPublicInputs{\n fn hash(self) -> Field { \n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595) have mercy por favor \n let mut inputs: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0);\n inputs.push(self.call_context.hash());\n inputs.push(self.args_hash);\n inputs.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n inputs.push(self.contract_storage_update_requests[i].hash());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n inputs.push(self.contract_storage_reads[i].hash());\n }\n inputs.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n inputs.push(self.new_commitments[i].hash());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n inputs.push(self.new_nullifiers[i].hash());\n }\n inputs.push_array(self.new_l2_to_l1_msgs);\n inputs.push_array(self.unencrypted_logs_hash);\n inputs.push(self.unencrypted_log_preimages_length);\n inputs.push_array(self.block_header.serialize());\n inputs.push(self.prover_address.to_field());\n\n assert_eq(inputs.len(), PUBLIC_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PublicCircuitPublicInputs\");\n\n dep::std::hash::pedersen_hash_with_separator(inputs.storage, GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n\n pub fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize()); \n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.push_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.push_array(self.contract_storage_reads[i].serialize());\n }\n fields.push_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.prover_address.to_field());\n fields.storage\n }\n}\n",
2866
+ "145": {
2867
+ "source": "use crate::abis::{\n function_data::FunctionData,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n};\nuse crate::address::AztecAddress;\nuse crate::constants::GENERATOR_INDEX__CALL_STACK_ITEM;\nuse crate::traits::Hash;\n\nstruct PublicCallStackItem {\n contract_address: AztecAddress,\n public_inputs: PublicCircuitPublicInputs,\n function_data: FunctionData,\n // True if this call stack item represents a request to execute a function rather than a\n // fulfilled execution. Used when enqueuing calls from private to public functions.\n is_execution_request: bool,\n}\n\nimpl Hash for PublicCallStackItem {\n fn hash(self) -> Field {\n let item = if self.is_execution_request {\n self.as_execution_request()\n } else {\n self\n };\n\n dep::std::hash::pedersen_hash_with_separator([\n item.contract_address.to_field(),\n item.function_data.hash(),\n item.public_inputs.hash(),\n ], GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\nimpl PublicCallStackItem {\n fn as_execution_request(self) -> Self {\n let public_inputs = self.public_inputs;\n let mut request_public_inputs: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n request_public_inputs.call_context = public_inputs.call_context;\n request_public_inputs.args_hash = public_inputs.args_hash;\n\n let call_stack_item = PublicCallStackItem {\n contract_address: self.contract_address,\n function_data: self.function_data,\n is_execution_request: true,\n public_inputs: request_public_inputs,\n };\n call_stack_item\n }\n}\n",
2868
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_call_stack_item.nr"
2869
+ },
2870
+ "147": {
2871
+ "source": "use crate::{\n abis::{\n call_context::CallContext,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n address::AztecAddress,\n constants::{\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL,\n MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS,\n PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n },\n contrakt::{\n storage_read::StorageRead,\n storage_update_request::StorageUpdateRequest,\n },\n hash::pedersen_hash,\n header::Header,\n traits::{\n Hash,\n Serialize,\n Deserialize,\n },\n utils::reader::Reader,\n};\n\nstruct PublicCircuitPublicInputs{\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n contract_storage_update_requests: [StorageUpdateRequest; MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead; MAX_PUBLIC_DATA_READS_PER_CALL],\n\n // todo: add sideeffect ranges for the input to these hashes\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n unencrypted_log_preimages_length: Field,\n\n // Header of a block whose state is used during public execution. Set by sequencer to be a header of a block\n // previous to the one in which the tx is included.\n historical_header: Header,\n\n prover_address: AztecAddress,\n}\n\nimpl Eq for PublicCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.serialize() == other.serialize()\n }\n}\n\nimpl Serialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn serialize(self) -> [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.extend_from_array(self.call_context.serialize()); \n fields.push(self.args_hash);\n fields.extend_from_array(self.return_values);\n for i in 0..MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL {\n fields.extend_from_array(self.contract_storage_update_requests[i].serialize());\n }\n for i in 0..MAX_PUBLIC_DATA_READS_PER_CALL {\n fields.extend_from_array(self.contract_storage_reads[i].serialize());\n }\n fields.extend_from_array(self.public_call_stack_hashes);\n\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.extend_from_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n fields.extend_from_array(self.new_l2_to_l1_msgs);\n fields.extend_from_array(self.unencrypted_logs_hash);\n fields.push(self.unencrypted_log_preimages_length);\n fields.extend_from_array(self.historical_header.serialize());\n fields.push(self.prover_address.to_field());\n fields.storage\n }\n}\n\nimpl Deserialize<PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PublicCircuitPublicInputs {\n fn deserialize(serialized: [Field; PUBLIC_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]),\n contract_storage_update_requests: reader.read_struct_array(StorageUpdateRequest::deserialize, [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL]),\n contract_storage_reads: reader.read_struct_array(StorageRead::deserialize, [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialize, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_log_preimages_length: reader.read(),\n historical_header: reader.read_struct(Header::deserialize),\n prover_address: reader.read_struct(AztecAddress::deserialize),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PublicCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PUBLIC_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n let serialized = pcpi.serialize();\n let deserialized = PublicCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let pcpi: PublicCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _hashed = pcpi.hash();\n}\n",
1611
2872
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/public_circuit_public_inputs.nr"
1612
2873
  },
1613
- "148": {
1614
- "source": "use crate::{\n abis::{\n call_context::CallContext,\n block_header::BlockHeader,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash},\n },\n contrakt::deployment_data::ContractDeploymentData,\n hash::{\n pedersen_hash,\n },\n utils::bounded_vec::BoundedVec,\n};\nuse crate::constants::{\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n};\nuse crate::traits::Hash;\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n \n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL],\n\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n end_side_effect_counter : u32,\n\n encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\n\n block_header: BlockHeader,\n\n contract_deployment_data: ContractDeploymentData,\n\n chain_id: Field,\n version: Field,\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH> = BoundedVec::new(0); \n fields.push(self.call_context.hash());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push(self.contract_deployment_data.hash());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_HASH_INPUT_LENGTH, \"Incorrect number of input fields when hashing PrivateCircuitPublicInputs\");\n\n pedersen_hash(fields.storage, GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\nimpl PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0); \n fields.push_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.push_array(self.return_values);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.push_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.push_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.push_array(self.new_nullifiers[i].serialize());\n }\n fields.push_array(self.private_call_stack_hashes);\n fields.push_array(self.public_call_stack_hashes);\n fields.push_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.push_array(self.encrypted_logs_hash);\n fields.push_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.push_array(self.block_header.serialize());\n fields.push_array(self.contract_deployment_data.serialize());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\n#[test]\nfn serialization_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _serialized = pcpi.serialize();\n}\n\n#[test]\nfn hash_smoke() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let _hashed = pcpi.hash();\n}\n",
1615
- "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr"
2874
+ "149": {
2875
+ "source": "use crate::{\n abis::{\n function_data::FunctionData,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n },\n address::AztecAddress,\n constants::{\n GENERATOR_INDEX__CALL_STACK_ITEM,\n PRIVATE_CALL_STACK_ITEM_LENGTH,\n },\n hash::pedersen_hash,\n traits::{\n Deserialize,\n Hash,\n Serialize,\n },\n utils::reader::Reader,\n};\n\nstruct PrivateCallStackItem {\n // This is the _actual_ contract address relating to where this function's code resides in the\n // contract tree. Regardless of whether this is a call or delegatecall, this\n // `contract_address` _does not change_. Amongst other things, it's used as a lookup for\n // getting the correct code from the tree. There is a separate `storage_contract_address`\n // within a CallStackItem which varies depending on whether this is a call or delegatecall.\n contract_address: AztecAddress,\n function_data: FunctionData,\n public_inputs: PrivateCircuitPublicInputs,\n}\n\nimpl Eq for PrivateCallStackItem {\n fn eq(self, other: Self) -> bool {\n self.contract_address.eq(other.contract_address) &\n self.function_data.eq(other.function_data) &\n self.public_inputs.eq(other.public_inputs)\n }\n}\n\nimpl Serialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn serialize(self) -> [Field; PRIVATE_CALL_STACK_ITEM_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CALL_STACK_ITEM_LENGTH> = BoundedVec::new(0); \n\n fields.push(self.contract_address.to_field());\n fields.extend_from_array(self.function_data.serialize());\n fields.extend_from_array(self.public_inputs.serialize());\n\n assert_eq(fields.len(), PRIVATE_CALL_STACK_ITEM_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CALL_STACK_ITEM_LENGTH> for PrivateCallStackItem {\n fn deserialize(serialized: [Field; PRIVATE_CALL_STACK_ITEM_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n\n let item = Self {\n contract_address: reader.read_struct(AztecAddress::deserialize),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: reader.read_struct(PrivateCircuitPublicInputs::deserialize),\n };\n\n reader.finish();\n item\n }\n}\n\nimpl Hash for PrivateCallStackItem {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_STACK_ITEM)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let item: PrivateCallStackItem = dep::std::unsafe::zeroed();\n let serialized = item.serialize();\n let deserialized = PrivateCallStackItem::deserialize(serialized);\n assert(item.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let mut item: PrivateCallStackItem = dep::std::unsafe::zeroed();\n item.function_data.is_private = true;\n let hash = item.hash();\n\n // Value from private_call_stack_item.test.ts \"computes empty item hash\" test\n assert_eq(hash, 0x059cec98e99de84399e51ba84bc3b7fe6f0afa407a8da6ae30b07d40cd4356cd);\n}\n",
2876
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_call_stack_item.nr"
2877
+ },
2878
+ "150": {
2879
+ "source": "use dep::std::cmp::Eq;\nuse crate::{\n address::AztecAddress,\n traits::{Empty, Serialize, Deserialize},\n grumpkin_point::GrumpkinPoint,\n grumpkin_private_key::GrumpkinPrivateKey,\n};\n\nglobal NULLIFIER_KEY_VALIDATION_REQUEST_SERIALIZED_LEN = 4;\nglobal NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_SERIALIZED_LEN = 5;\n\nstruct NullifierKeyValidationRequest {\n public_key: GrumpkinPoint,\n secret_key: GrumpkinPrivateKey,\n}\n\nimpl Eq for NullifierKeyValidationRequest {\n fn eq(self, request: NullifierKeyValidationRequest) -> bool {\n (request.public_key.eq(self.public_key))\n & (request.secret_key.eq(self.secret_key))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequest {\n fn empty() -> Self {\n NullifierKeyValidationRequest {\n public_key: GrumpkinPoint::zero(),\n secret_key: GrumpkinPrivateKey::zero(),\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_SERIALIZED_LEN> for NullifierKeyValidationRequest {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_SERIALIZED_LEN] {\n [\n self.public_key.x,\n self.public_key.y,\n self.secret_key.high,\n self.secret_key.low,\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_SERIALIZED_LEN> for NullifierKeyValidationRequest {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_SERIALIZED_LEN]) -> Self {\n Self {\n public_key: GrumpkinPoint::new(fields[0], fields[1]),\n secret_key: GrumpkinPrivateKey::new(fields[2], fields[3]),\n }\n }\n}\n\nimpl NullifierKeyValidationRequest {\n pub fn to_context(self, contract_address: AztecAddress) -> NullifierKeyValidationRequestContext {\n NullifierKeyValidationRequestContext {\n public_key: self.public_key,\n secret_key: self.secret_key,\n contract_address,\n }\n }\n}\n\nstruct NullifierKeyValidationRequestContext {\n public_key: GrumpkinPoint,\n secret_key: GrumpkinPrivateKey,\n contract_address: AztecAddress,\n}\n\nimpl Eq for NullifierKeyValidationRequestContext {\n fn eq(self, request: NullifierKeyValidationRequestContext) -> bool {\n (request.public_key.eq(self.public_key))\n & (request.secret_key.eq(self.secret_key))\n & (request.contract_address.eq(self.contract_address))\n }\n}\n\nimpl Empty for NullifierKeyValidationRequestContext {\n fn empty() -> Self {\n NullifierKeyValidationRequestContext {\n public_key: GrumpkinPoint::zero(),\n secret_key: GrumpkinPrivateKey::zero(),\n contract_address: AztecAddress::zero(),\n }\n }\n}\n\nimpl Serialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_SERIALIZED_LEN> for NullifierKeyValidationRequestContext {\n fn serialize(self) -> [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_SERIALIZED_LEN] {\n [\n self.public_key.x,\n self.public_key.y,\n self.secret_key.high,\n self.secret_key.low,\n self.contract_address.to_field(),\n ]\n }\n}\n\nimpl Deserialize<NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_SERIALIZED_LEN> for NullifierKeyValidationRequestContext {\n fn deserialize(fields: [Field; NULLIFIER_KEY_VALIDATION_REQUEST_CONTEXT_SERIALIZED_LEN]) -> Self {\n Self {\n public_key: GrumpkinPoint::new(fields[0], fields[1]),\n secret_key: GrumpkinPrivateKey::new(fields[2], fields[3]),\n contract_address: AztecAddress::from_field(fields[4]),\n }\n }\n}\n\n",
2880
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/nullifier_key_validation_request.nr"
1616
2881
  },
1617
2882
  "151": {
1618
- "source": "use crate::abis::function_selector::FunctionSelector;\nuse crate::constants::GENERATOR_INDEX__FUNCTION_DATA;\n\nstruct FunctionData {\n // First four bytes of the abi encoding \n // of a function. \n selector : FunctionSelector,\n is_internal : bool,\n is_private : bool,\n is_constructor : bool,\n}\n\nimpl FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn hash(self) -> Field {\n dep::std::hash::pedersen_hash_with_separator([\n self.selector.to_field(),\n self.is_internal as Field,\n self.is_private as Field,\n self.is_constructor as Field,\n ], GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n",
2883
+ "source": "use crate::{\n abis::{\n call_context::CallContext,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n side_effect::{\n SideEffect,\n SideEffectLinkedToNoteHash,\n },\n },\n constants::{\n MAX_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL,\n MAX_NEW_COMMITMENTS_PER_CALL,\n MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_NEW_L2_TO_L1_MSGS_PER_CALL,\n NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH,\n PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH,\n GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS,\n },\n contrakt::deployment_data::ContractDeploymentData,\n header::Header,\n hash::pedersen_hash,\n traits::{\n Deserialize,\n Hash,\n Serialize,\n },\n utils::reader::Reader,\n};\n\nstruct PrivateCircuitPublicInputs {\n call_context: CallContext,\n\n args_hash: Field,\n return_values: [Field; RETURN_VALUES_LENGTH],\n\n meta_hwm: u32,\n\n read_requests: [SideEffect; MAX_READ_REQUESTS_PER_CALL],\n nullifier_key_validation_requests: [NullifierKeyValidationRequest; MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL],\n\n new_commitments: [SideEffect; MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash; MAX_NEW_NULLIFIERS_PER_CALL],\n private_call_stack_hashes: [Field; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL],\n public_call_stack_hashes: [Field; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_l2_to_l1_msgs: [Field; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n end_side_effect_counter : u32,\n\n encrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n unencrypted_logs_hash: [Field; NUM_FIELDS_PER_SHA256],\n\n // Here so that the gas cost of this request can be measured by circuits, without actually needing to feed in the\n // variable-length data.\n encrypted_log_preimages_length: Field,\n unencrypted_log_preimages_length: Field,\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 contract_deployment_data: ContractDeploymentData,\n\n // Note: The following 2 values are not redundant to the values in self.historical_header.global_variables because\n // they can be different in case of a protocol upgrade. In such a situation we could be using header from a block\n // before the upgrade took place but be using the updated protocol to execute and prove the transaction.\n chain_id: Field,\n version: Field,\n}\n\nimpl Eq for PrivateCircuitPublicInputs {\n fn eq(self, other: Self) -> bool {\n self.call_context.eq(other.call_context) &\n self.args_hash.eq(other.args_hash) &\n (self.return_values == other.return_values) &\n (self.read_requests == other.read_requests) &\n (self.nullifier_key_validation_requests == other.nullifier_key_validation_requests) &\n (self.new_commitments == other.new_commitments) &\n (self.new_nullifiers == other.new_nullifiers) &\n (self.private_call_stack_hashes == other.private_call_stack_hashes) &\n (self.public_call_stack_hashes == other.public_call_stack_hashes) &\n (self.new_l2_to_l1_msgs == other.new_l2_to_l1_msgs) &\n (self.end_side_effect_counter == other.end_side_effect_counter) &\n (self.encrypted_logs_hash == other.encrypted_logs_hash) &\n (self.unencrypted_logs_hash == other.unencrypted_logs_hash) &\n (self.encrypted_log_preimages_length == other.encrypted_log_preimages_length) &\n (self.unencrypted_log_preimages_length == other.unencrypted_log_preimages_length) &\n self.historical_header.eq(other.historical_header) &\n self.contract_deployment_data.eq(other.contract_deployment_data) &\n self.chain_id.eq(other.chain_id) &\n self.version.eq(other.version)\n }\n}\n\nimpl Serialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn serialize(self) -> [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH] {\n let mut fields: BoundedVec<Field, PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> = BoundedVec::new(0);\n fields.extend_from_array(self.call_context.serialize());\n fields.push(self.args_hash);\n fields.extend_from_array(self.return_values);\n\n fields.push(self.meta_hwm as Field);\n\n for i in 0..MAX_READ_REQUESTS_PER_CALL{\n fields.extend_from_array(self.read_requests[i].serialize());\n }\n for i in 0..MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL{\n fields.extend_from_array(self.nullifier_key_validation_requests[i].serialize());\n }\n for i in 0..MAX_NEW_COMMITMENTS_PER_CALL{\n fields.extend_from_array(self.new_commitments[i].serialize());\n }\n for i in 0..MAX_NEW_NULLIFIERS_PER_CALL{\n fields.extend_from_array(self.new_nullifiers[i].serialize());\n }\n fields.extend_from_array(self.private_call_stack_hashes);\n fields.extend_from_array(self.public_call_stack_hashes);\n fields.extend_from_array(self.new_l2_to_l1_msgs);\n fields.push(self.end_side_effect_counter as Field);\n fields.extend_from_array(self.encrypted_logs_hash);\n fields.extend_from_array(self.unencrypted_logs_hash);\n fields.push(self.encrypted_log_preimages_length);\n fields.push(self.unencrypted_log_preimages_length);\n fields.extend_from_array(self.historical_header.serialize());\n fields.extend_from_array(self.contract_deployment_data.serialize());\n fields.push(self.chain_id);\n fields.push(self.version);\n\n assert_eq(fields.len(), PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH);\n\n fields.storage\n }\n}\n\nimpl Deserialize<PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH> for PrivateCircuitPublicInputs {\n fn deserialize(serialized: [Field; PRIVATE_CIRCUIT_PUBLIC_INPUTS_LENGTH]) -> Self {\n // TODO(#4390): This should accept a reader ^ to avoid copying data.\n let mut reader = Reader::new(serialized);\n let inputs = Self {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n return_values: reader.read_array([0; RETURN_VALUES_LENGTH]),\n meta_hwm: reader.read() as u32,\n read_requests: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_READ_REQUESTS_PER_CALL]),\n nullifier_key_validation_requests: reader.read_struct_array(NullifierKeyValidationRequest::deserialize, [NullifierKeyValidationRequest::empty(); MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL]),\n new_commitments: reader.read_struct_array(SideEffect::deserialize, [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL]),\n new_nullifiers: reader.read_struct_array(SideEffectLinkedToNoteHash::deserialize, [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL]),\n private_call_stack_hashes: reader.read_array([0; MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL]),\n public_call_stack_hashes: reader.read_array([0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL]),\n new_l2_to_l1_msgs: reader.read_array([0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL]),\n end_side_effect_counter: reader.read() as u32,\n encrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n unencrypted_logs_hash: reader.read_array([0; NUM_FIELDS_PER_SHA256]),\n encrypted_log_preimages_length: reader.read(),\n unencrypted_log_preimages_length: reader.read(),\n historical_header: reader.read_struct(Header::deserialize),\n contract_deployment_data: reader.read_struct(ContractDeploymentData::deserialize),\n chain_id: reader.read(),\n version: reader.read(),\n };\n\n reader.finish();\n inputs\n }\n}\n\nimpl Hash for PrivateCircuitPublicInputs {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__PRIVATE_CIRCUIT_PUBLIC_INPUTS)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let pcpi: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let serialized = pcpi.serialize();\n let deserialized = PrivateCircuitPublicInputs::deserialize(serialized);\n assert(pcpi.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let inputs: PrivateCircuitPublicInputs = dep::std::unsafe::zeroed();\n let hash = inputs.hash();\n\n // Value from private_circuit_public_inputs.test.ts \"computes empty item hash\" test\n assert_eq(hash, 0x0f16478dc1731c940b04c312d322697f6a3bff523d2660d896426b2ab3af9598);\n}\n",
2884
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/private_circuit_public_inputs.nr"
2885
+ },
2886
+ "154": {
2887
+ "source": "use crate::{\n abis::function_selector::FunctionSelector,\n constants::{\n GENERATOR_INDEX__FUNCTION_DATA,\n FUNCTION_DATA_LENGTH,\n },\n hash::pedersen_hash,\n traits::{\n Serialize,\n Hash,\n Deserialize,\n },\n};\n\nstruct FunctionData {\n // First four bytes of the abi encoding \n // of a function. \n selector : FunctionSelector,\n is_internal : bool,\n is_private : bool,\n is_constructor : bool,\n}\n\nimpl Eq for FunctionData {\n fn eq(self, other: Self) -> bool {\n self.selector.eq(other.selector) &\n self.is_internal == other.is_internal &\n self.is_private == other.is_private &\n self.is_constructor == other.is_constructor\n }\n}\n\nimpl Serialize<FUNCTION_DATA_LENGTH> for FunctionData {\n // A field is ~256 bits\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3057): Since, function data can fit into a Field,\n // This method will simply return a bit packed Field instead of hashing\n fn serialize(self) -> [Field; FUNCTION_DATA_LENGTH] {\n [\n self.selector.to_field(),\n self.is_internal as Field,\n self.is_private as Field,\n self.is_constructor as Field,\n ]\n }\n}\n\nimpl Deserialize<FUNCTION_DATA_LENGTH> for FunctionData {\n fn deserialize(serialized: [Field; FUNCTION_DATA_LENGTH]) -> Self {\n Self {\n selector: FunctionSelector::from_field(serialized[0]),\n is_internal: serialized[1] as bool,\n is_private: serialized[2] as bool,\n is_constructor: serialized[3] as bool,\n }\n }\n}\n\nimpl Hash for FunctionData {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__FUNCTION_DATA)\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let data: FunctionData = dep::std::unsafe::zeroed();\n let serialized = data.serialize();\n let deserialized = FunctionData::deserialize(serialized);\n assert(data.eq(deserialized));\n}\n\n#[test]\nfn empty_hash() {\n let data: FunctionData = dep::std::unsafe::zeroed();\n let hash = data.hash();\n\n // Value from function_data.test.ts \"computes empty item hash\" test\n assert_eq(hash, 0x200569267c0f73ac89aaa414239398db9445dd4ad3a8cf37015cd55b8d4c5e8d);\n}\n",
1619
2888
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_data.nr"
1620
2889
  },
2890
+ "155": {
2891
+ "source": "use dep::std::cmp::Eq;\n\nstruct AppendOnlyTreeSnapshot {\n root : Field,\n next_available_leaf_index : u32\n}\n\nglobal APPEND_ONLY_TREE_SNAPSHOT_LENGTH: Field = 2;\n\nimpl AppendOnlyTreeSnapshot {\n pub fn serialize(self) -> [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH] {\n [self.root, self.next_available_leaf_index as Field]\n }\n\n pub fn deserialize(serialized: [Field; APPEND_ONLY_TREE_SNAPSHOT_LENGTH]) -> AppendOnlyTreeSnapshot {\n AppendOnlyTreeSnapshot {\n root : serialized[0],\n next_available_leaf_index : serialized[1] as u32\n }\n }\n\n pub fn zero() -> Self {\n Self {\n root: 0,\n next_available_leaf_index: 0,\n }\n }\n}\n\nimpl Eq for AppendOnlyTreeSnapshot {\n fn eq(self, other : AppendOnlyTreeSnapshot) -> bool {\n (self.root == other.root) & (self.next_available_leaf_index == other.next_available_leaf_index)\n }\n}\n",
2892
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/append_only_tree_snapshot.nr"
2893
+ },
1621
2894
  "156": {
1622
- "source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n};\nuse dep::std::cmp::Eq;\nuse crate::traits::Hash;\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl Eq for CallContext {\n fn eq(self, call_context: CallContext) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n call_context.msg_sender.eq(self.msg_sender)\n & call_context.storage_contract_address.eq(self.storage_contract_address)\n & call_context.portal_contract_address.eq(self.portal_contract_address)\n & call_context.function_selector.eq(self.function_selector)\n & (call_context.is_delegate_call == self.is_delegate_call)\n & (call_context.is_static_call == self.is_static_call)\n & (call_context.is_contract_deployment == self.is_contract_deployment)\n & (call_context.start_side_effect_counter == self.start_side_effect_counter)\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n [\n self.msg_sender.to_field(),\n self.storage_contract_address.to_field(),\n self.portal_contract_address.to_field(),\n self.function_selector.to_field(),\n self.is_delegate_call as Field,\n self.is_static_call as Field,\n self.is_contract_deployment as Field,\n self.start_side_effect_counter as Field,\n ]\n }\n\n fn assert_is_zero(self) {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n assert(self.msg_sender.to_field() == 0);\n assert(self.storage_contract_address.to_field() == 0);\n assert(self.portal_contract_address.to_field() == 0);\n assert(self.function_selector.to_field() == 0);\n assert(self.is_delegate_call == false);\n assert(self.is_static_call == false);\n assert(self.is_contract_deployment == false);\n assert(self.start_side_effect_counter == 0);\n }\n}\n",
2895
+ "source": "use dep::std::cmp::Eq;\nuse crate::{\n constants::{\n GENERATOR_INDEX__GLOBAL_VARIABLES,\n GLOBAL_VARIABLES_LENGTH,\n },\n traits::{\n Deserialize,\n Empty,\n Hash,\n Serialize,\n },\n};\n\nstruct GlobalVariables {\n chain_id : Field,\n version : Field,\n block_number : Field,\n timestamp : Field,\n}\n\nimpl Serialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn serialize(self) -> [Field; GLOBAL_VARIABLES_LENGTH] {\n [\n self.chain_id,\n self.version,\n self.block_number,\n self.timestamp\n ]\n }\n}\n\nimpl Deserialize<GLOBAL_VARIABLES_LENGTH> for GlobalVariables {\n fn deserialize(serialized: [Field; GLOBAL_VARIABLES_LENGTH]) -> GlobalVariables {\n GlobalVariables {\n chain_id: serialized[0],\n version: serialized[1],\n block_number: serialized[2],\n timestamp: serialized[3],\n }\n }\n}\n\nimpl Eq for GlobalVariables {\n fn eq(self, other : GlobalVariables) -> bool {\n (self.chain_id == other.chain_id) &\n (self.version == other.version) &\n (self.block_number == other.block_number) &\n (self.timestamp == other.timestamp)\n }\n}\n\nimpl Empty for GlobalVariables {\n fn empty() -> Self {\n Self {\n chain_id: 0,\n version: 0,\n block_number: 0,\n timestamp: 0,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let vars: GlobalVariables = dep::std::unsafe::zeroed();\n let _serialized = vars.serialize();\n let _deserialized = GlobalVariables::deserialize(_serialized);\n}\n",
2896
+ "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/global_variables.nr"
2897
+ },
2898
+ "159": {
2899
+ "source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{EthAddress,AztecAddress},\n constants::{\n CALL_CONTEXT_LENGTH,\n GENERATOR_INDEX__CALL_CONTEXT,\n },\n hash::pedersen_hash,\n traits::{\n Deserialize,\n Hash,\n Serialize,\n },\n};\n\n// docs:start:call-context\nstruct CallContext {\n msg_sender : AztecAddress,\n storage_contract_address : AztecAddress,\n portal_contract_address : EthAddress,\n\n function_selector : FunctionSelector,\n\n is_delegate_call : bool,\n is_static_call : bool,\n is_contract_deployment : bool,\n\n start_side_effect_counter : u32,\n}\n// docs:end:call-context\n\nimpl CallContext {\n fn assert_is_zero(self) {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n assert(self.msg_sender.to_field() == 0);\n assert(self.storage_contract_address.to_field() == 0);\n assert(self.portal_contract_address.to_field() == 0);\n assert(self.function_selector.to_field() == 0);\n assert(self.is_delegate_call == false);\n assert(self.is_static_call == false);\n assert(self.is_contract_deployment == false);\n assert(self.start_side_effect_counter == 0);\n }\n}\n\nimpl Eq for CallContext {\n fn eq(self, call_context: CallContext) -> bool {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/3595)\n call_context.msg_sender.eq(self.msg_sender)\n & call_context.storage_contract_address.eq(self.storage_contract_address)\n & call_context.portal_contract_address.eq(self.portal_contract_address)\n & call_context.function_selector.eq(self.function_selector)\n & (call_context.is_delegate_call == self.is_delegate_call)\n & (call_context.is_static_call == self.is_static_call)\n & (call_context.is_contract_deployment == self.is_contract_deployment)\n & (call_context.start_side_effect_counter == self.start_side_effect_counter)\n }\n}\n\nimpl Hash for CallContext {\n fn hash(self) -> Field {\n pedersen_hash(self.serialize(), GENERATOR_INDEX__CALL_CONTEXT)\n }\n}\n\nimpl Serialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn serialize(self) -> [Field; CALL_CONTEXT_LENGTH] {\n [\n self.msg_sender.to_field(),\n self.storage_contract_address.to_field(),\n self.portal_contract_address.to_field(),\n self.function_selector.to_field(),\n self.is_delegate_call as Field,\n self.is_static_call as Field,\n self.is_contract_deployment as Field,\n self.start_side_effect_counter as Field,\n ]\n }\n}\n\nimpl Deserialize<CALL_CONTEXT_LENGTH> for CallContext {\n fn deserialize(serialized: [Field; CALL_CONTEXT_LENGTH]) -> CallContext {\n CallContext {\n msg_sender: AztecAddress::from_field(serialized[0]),\n storage_contract_address: AztecAddress::from_field(serialized[1]),\n portal_contract_address: EthAddress::from_field(serialized[2]),\n function_selector: FunctionSelector::from_field(serialized[3]),\n is_delegate_call: serialized[4] as bool,\n is_static_call: serialized[5] as bool,\n is_contract_deployment: serialized[6] as bool,\n start_side_effect_counter: serialized[7] as u32,\n }\n }\n}\n\n#[test]\nfn serialization_of_empty() {\n let context: CallContext = dep::std::unsafe::zeroed();\n let serialized = context.serialize();\n let deserialized = CallContext::deserialize(serialized);\n assert(context.eq(deserialized));\n}\n\n#[test]\nfn hash_smoke() {\n let context: CallContext = dep::std::unsafe::zeroed();\n let _hashed = context.hash();\n}\n",
1623
2900
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/call_context.nr"
1624
2901
  },
1625
- "162": {
1626
- "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_u32(value: u32) -> Self {\n Self {\n inner : value,\n }\n }\n\n pub fn from_field(value : Field) -> Self {\n Self {\n inner : value as u32,\n }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n",
2902
+ "165": {
2903
+ "source": "use crate::utils::field::field_from_bytes;\nuse dep::std::cmp::Eq;\nuse crate::traits::{Serialize, Deserialize};\n\nglobal SELECTOR_SIZE = 4;\n\nstruct FunctionSelector {\n // 1st 4-bytes of abi-encoding of function.\n inner: u32,\n}\n\nimpl Eq for FunctionSelector {\n fn eq(self, function_selector: FunctionSelector) -> bool {\n function_selector.inner == self.inner\n }\n}\n\nimpl Serialize<1> for FunctionSelector {\n fn serialize(self: Self) -> [Field; 1] {\n [self.inner as Field]\n }\n}\n\nimpl Deserialize<1> for FunctionSelector {\n fn deserialize(fields: [Field; 1]) -> Self {\n Self {\n inner: fields[0] as u32\n }\n }\n}\n\nimpl FunctionSelector {\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_u32(value: u32) -> Self {\n Self {\n inner : value,\n }\n }\n\n pub fn from_field(value : Field) -> Self {\n Self {\n inner : value as u32,\n }\n }\n\n pub fn from_signature<N>(signature: str<N>) -> Self {\n let bytes = signature.as_bytes();\n let hash = dep::std::hash::keccak256(bytes, bytes.len() as u32);\n\n let mut selector_be_bytes = [0; SELECTOR_SIZE];\n for i in 0..SELECTOR_SIZE {\n selector_be_bytes[i] = hash[i];\n }\n\n FunctionSelector::from_field(field_from_bytes(selector_be_bytes, true))\n }\n\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n}\n",
1627
2904
  "path": "/usr/src/yarn-project/noir-protocol-circuits/src/crates/types/src/abis/function_selector.nr"
1628
2905
  },
1629
- "186": {
1630
- "source": "use dep::aztec::abi;\nuse dep::aztec::types::vec::BoundedVec;\nuse dep::aztec::context::PrivateContext;\nuse dep::aztec::protocol_types::{\n abis::{\n call_stack_item::{\n PrivateCallStackItem,\n PublicCallStackItem,\n },\n function_selector::FunctionSelector,\n },\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.push_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
2906
+ "196": {
2907
+ "source": "use dep::aztec::context::PrivateContext;\nuse dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::pedersen_hash,\n traits::{Hash, Serialize}\n};\n\nglobal ACCOUNT_MAX_CALLS: Field = 4;\n// 1 (ARGS_HASH) + 1 (FUNCTION_SELECTOR) + 1 (TARGET_ADDRESS) + 1 (IS_PUBLIC)\nglobal FUNCTION_CALL_SIZE: Field = 4;\n// 3 * 32 + 1\nglobal FUNCTION_CALL_SIZE_IN_BYTES: Field = 97;\n\nstruct FunctionCall {\n args_hash: Field,\n function_selector: FunctionSelector,\n target_address: AztecAddress,\n is_public: bool,\n}\n\nimpl Serialize<FUNCTION_CALL_SIZE> for FunctionCall {\n fn serialize(self) -> [Field; FUNCTION_CALL_SIZE] {\n [self.args_hash, self.function_selector.to_field(), self.target_address.to_field(), self.is_public as Field]\n }\n}\n\nimpl FunctionCall {\n fn to_be_bytes(self) -> [u8; FUNCTION_CALL_SIZE_IN_BYTES] {\n let mut bytes: [u8; FUNCTION_CALL_SIZE_IN_BYTES] = [0; FUNCTION_CALL_SIZE_IN_BYTES];\n let args_hash_bytes = self.args_hash.to_be_bytes(32);\n for i in 0..32 { bytes[i] = args_hash_bytes[i]; }\n let function_selector_bytes = self.function_selector.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 32] = function_selector_bytes[i]; }\n let target_address_bytes = self.target_address.to_field().to_be_bytes(32);\n for i in 0..32 { bytes[i + 64] = target_address_bytes[i]; }\n bytes[96] = self.is_public as u8;\n bytes\n }\n}\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal ENTRYPOINT_PAYLOAD_SIZE: Field = 17;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES: Field = 420;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:entrypoint-struct\nstruct EntrypointPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:entrypoint-struct\n\nimpl Serialize<ENTRYPOINT_PAYLOAD_SIZE> for EntrypointPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; ENTRYPOINT_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, ENTRYPOINT_PAYLOAD_SIZE> = BoundedVec::new(0); \n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage\n }\n}\n\nimpl Hash for EntrypointPayload {\n fn hash(self) -> Field {\n pedersen_hash(\n self.serialize(), \n GENERATOR_INDEX__SIGNATURE_PAYLOAD\n )\n }\n}\n\nimpl EntrypointPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: [u8; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES] = [0; ENTRYPOINT_PAYLOAD_SIZE_IN_BYTES];\n\n for i in 0..ACCOUNT_MAX_CALLS {\n let item_bytes = self.function_calls[i].to_be_bytes();\n for j in 0..FUNCTION_CALL_SIZE_IN_BYTES { \n bytes[i * FUNCTION_CALL_SIZE_IN_BYTES + j] = item_bytes[j];\n }\n }\n\n let nonce_bytes = self.nonce.to_be_bytes(32);\n let nonce_offset = FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS;\n for j in 0..32 {\n bytes[nonce_offset + j] = nonce_bytes[j];\n }\n \n bytes\n }\n\n // Executes all private and public calls \n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address, call.function_selector, call.args_hash\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n",
1631
2908
  "path": "/usr/src/yarn-project/aztec-nr/authwit/src/entrypoint.nr"
1632
2909
  },
1633
- "187": {
1634
- "source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\nuse dep::aztec::types::type_serialization::bool_serialization::{BoolSerializationMethods,BOOL_SERIALIZED_LEN};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<Field, PublicState<bool, BOOL_SERIALIZED_LEN>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot, BoolSerializationMethods)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
2910
+ "197": {
2911
+ "source": "use dep::aztec::context::{PrivateContext, PublicContext, Context};\nuse dep::aztec::state_vars::{map::Map, public_state::PublicState};\n\nuse crate::entrypoint::EntrypointPayload;\nuse crate::auth::IS_VALID_SELECTOR;\n\nstruct AccountActions {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n approved_action: Map<Field, PublicState<bool>>,\n}\n\nimpl AccountActions {\n pub fn init(context: Context, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions {\n context: context,\n is_valid_impl: is_valid_impl,\n approved_action: Map::new(\n context,\n approved_action_storage_slot,\n |context, slot| {\n PublicState::new(context, slot)\n },\n ),\n }\n }\n\n pub fn private(context: &mut PrivateContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::private(context), approved_action_storage_slot, is_valid_impl)\n }\n\n pub fn public(context: &mut PublicContext, approved_action_storage_slot: Field, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions::init(Context::public(context), approved_action_storage_slot, is_valid_impl)\n }\n \n // docs:start:entrypoint\n pub fn entrypoint(self, payload: EntrypointPayload) {\n let message_hash = payload.hash();\n let valid_fn = self.is_valid_impl;\n let private_context = self.context.private.unwrap();\n assert(valid_fn(private_context, message_hash));\n payload.execute_calls(private_context);\n }\n // docs:end:entrypoint\n\n pub fn is_valid(self, message_hash: Field) -> Field {\n let valid_fn = self.is_valid_impl;\n if (valid_fn(self.context.private.unwrap(), message_hash)) {\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn is_valid_public(self, message_hash: Field) -> Field {\n let value = self.approved_action.at(message_hash).read();\n if (value){\n IS_VALID_SELECTOR\n } else {\n 0\n }\n }\n\n pub fn internal_set_is_valid_storage(self, message_hash: Field, value: bool) {\n self.approved_action.at(message_hash).write(value);\n }\n}\n",
1635
2912
  "path": "/usr/src/yarn-project/aztec-nr/authwit/src/account.nr"
1636
2913
  },
1637
- "190": {
2914
+ "200": {
1638
2915
  "source": "#[oracle(getAuthWitness)]\nfn get_auth_witness_oracle<N>(_message_hash: Field) -> [Field; N] {}\n\nunconstrained pub fn get_auth_witness<N>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n",
1639
2916
  "path": "/usr/src/yarn-project/aztec-nr/authwit/src/auth_witness.nr"
1640
2917
  },
1641
- "211": {
2918
+ "221": {
1642
2919
  "source": "mod util;\nmod auth_oracle;\n\ncontract SchnorrSingleKeyAccount {\n use dep::std::{\n option::Option,\n };\n use dep::aztec::context::{ PrivateContext, PublicContext, Context };\n\n use dep::authwit::{\n entrypoint::EntrypointPayload,\n account::AccountActions,\n };\n\n use crate::{ util::recover_address, auth_oracle::get_auth_witness };\n\n global ACCOUNT_ACTIONS_STORAGE_SLOT = 1;\n\n #[aztec(private)]\n fn constructor() {}\n\n // Note: If you globally change the entrypoint signature don't forget to update default_entrypoint.ts\n #[aztec(private)]\n fn entrypoint(payload: pub EntrypointPayload) {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.entrypoint(payload);\n }\n\n #[aztec(private)]\n fn is_valid(message_hash: Field) -> Field {\n let actions = AccountActions::private(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid(message_hash)\n }\n\n #[aztec(public)]\n fn is_valid_public(message_hash: Field) -> Field {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.is_valid_public(message_hash)\n }\n\n #[aztec(public)]\n internal fn set_is_valid_storage(message_hash: Field, value: bool) {\n let actions = AccountActions::public(&mut context, ACCOUNT_ACTIONS_STORAGE_SLOT, is_valid_impl);\n actions.internal_set_is_valid_storage(message_hash, value)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, message_hash: Field) -> pub bool {\n let witness = get_auth_witness(message_hash);\n assert(recover_address(message_hash, witness).eq(context.this_address()));\n true\n }\n}\n",
1643
2920
  "path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_single_key_account_contract/src/main.nr"
1644
2921
  },
1645
- "212": {
2922
+ "222": {
1646
2923
  "source": "use dep::authwit::auth_witness;\nuse dep::aztec::protocol_types::{\n address::PartialAddress,\n grumpkin_point::GrumpkinPoint,\n};\n\nstruct AuthWitness {\n owner: GrumpkinPoint,\n signature: [u8; 64],\n partial_address: PartialAddress,\n}\n\nimpl AuthWitness {\n fn deserialize(values: [Field; 67]) -> Self {\n let mut signature = [0; 64];\n for i in 0..64 {\n signature[i] = values[i + 2] as u8;\n }\n Self {\n owner: GrumpkinPoint::new(values[0], values[1]),\n signature,\n partial_address: PartialAddress::from_field(values[66]),\n }\n }\n}\n\nunconstrained pub fn get_auth_witness(message_hash: Field) -> AuthWitness {\n let witness: [Field; 67] = auth_witness::get_auth_witness(message_hash);\n AuthWitness::deserialize(witness)\n}\n",
1647
2924
  "path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_single_key_account_contract/src/auth_oracle.nr"
1648
2925
  },
1649
- "213": {
1650
- "source": "use dep::aztec::protocol_types::address::AztecAddress;\nuse dep::std::{schnorr::verify_signature};\nuse crate::auth_oracle::{AuthWitness};\n\npub fn recover_address(message_hash: Field, witness: AuthWitness) -> AztecAddress {\n let message_bytes = message_hash.to_be_bytes(32);\n let verification = verify_signature(\n witness.owner.x,\n witness.owner.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(witness.owner, witness.partial_address)\n}\n",
2926
+ "223": {
2927
+ "source": "use dep::aztec::protocol_types::address::{AztecAddress, PublicKeysHash};\nuse dep::std::{schnorr::verify_signature};\nuse crate::auth_oracle::{AuthWitness};\n\npub fn recover_address(message_hash: Field, witness: AuthWitness) -> AztecAddress {\n let message_bytes = message_hash.to_be_bytes(32);\n let verification = verify_signature(\n witness.owner.x,\n witness.owner.y,\n witness.signature,\n message_bytes\n );\n assert(verification == true);\n\n AztecAddress::compute(\n PublicKeysHash::compute(witness.owner),\n witness.partial_address\n )\n}\n",
1651
2928
  "path": "/usr/src/yarn-project/noir-contracts/contracts/schnorr_single_key_account_contract/src/util.nr"
1652
2929
  }
1653
2930
  }