@aztec/protocol-contracts 0.24.0 → 0.26.2
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.
- package/dest/artifacts/ContractClassRegisterer.json +1 -2617
- package/dest/artifacts/ContractInstanceDeployer.json +1 -1309
- package/dest/artifacts/GasToken.json +1 -0
- package/dest/class-registerer/index.js +1 -1
- package/dest/gas-token/artifact.d.ts +2 -0
- package/dest/gas-token/artifact.d.ts.map +1 -0
- package/dest/gas-token/artifact.js +4 -0
- package/dest/gas-token/index.d.ts +5 -0
- package/dest/gas-token/index.d.ts.map +1 -0
- package/dest/gas-token/index.js +8 -0
- package/dest/instance-deployer/index.d.ts.map +1 -1
- package/dest/instance-deployer/index.js +3 -3
- package/package.json +6 -6
- package/src/artifacts/ContractClassRegisterer.json +1 -2617
- package/src/artifacts/ContractInstanceDeployer.json +1 -1309
- package/src/artifacts/GasToken.json +1 -0
- package/src/class-registerer/index.ts +1 -1
- package/src/gas-token/artifact.ts +6 -0
- package/src/gas-token/index.ts +9 -0
- package/src/instance-deployer/index.ts +2 -4
|
@@ -1,2617 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"noir_version": "0.23.0+5f5843e35052b9d3599b8ab4f7633db0a225e82f",
|
|
3
|
-
"name": "ContractClassRegisterer",
|
|
4
|
-
"functions": [
|
|
5
|
-
{
|
|
6
|
-
"name": "broadcast_unconstrained_function",
|
|
7
|
-
"function_type": "Secret",
|
|
8
|
-
"is_internal": false,
|
|
9
|
-
"abi": {
|
|
10
|
-
"parameters": [
|
|
11
|
-
{
|
|
12
|
-
"name": "inputs",
|
|
13
|
-
"type": {
|
|
14
|
-
"kind": "struct",
|
|
15
|
-
"path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
|
|
16
|
-
"fields": [
|
|
17
|
-
{
|
|
18
|
-
"name": "call_context",
|
|
19
|
-
"type": {
|
|
20
|
-
"kind": "struct",
|
|
21
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
22
|
-
"fields": [
|
|
23
|
-
{
|
|
24
|
-
"name": "msg_sender",
|
|
25
|
-
"type": {
|
|
26
|
-
"kind": "struct",
|
|
27
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
28
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
"name": "storage_contract_address",
|
|
33
|
-
"type": {
|
|
34
|
-
"kind": "struct",
|
|
35
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
36
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
{
|
|
40
|
-
"name": "portal_contract_address",
|
|
41
|
-
"type": {
|
|
42
|
-
"kind": "struct",
|
|
43
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
44
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"name": "function_selector",
|
|
49
|
-
"type": {
|
|
50
|
-
"kind": "struct",
|
|
51
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
52
|
-
"fields": [
|
|
53
|
-
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
54
|
-
]
|
|
55
|
-
}
|
|
56
|
-
},
|
|
57
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
58
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
59
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
60
|
-
{
|
|
61
|
-
"name": "start_side_effect_counter",
|
|
62
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"name": "historical_header",
|
|
69
|
-
"type": {
|
|
70
|
-
"kind": "struct",
|
|
71
|
-
"path": "aztec::protocol_types::header::Header",
|
|
72
|
-
"fields": [
|
|
73
|
-
{
|
|
74
|
-
"name": "last_archive",
|
|
75
|
-
"type": {
|
|
76
|
-
"kind": "struct",
|
|
77
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
78
|
-
"fields": [
|
|
79
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
80
|
-
{
|
|
81
|
-
"name": "next_available_leaf_index",
|
|
82
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
83
|
-
}
|
|
84
|
-
]
|
|
85
|
-
}
|
|
86
|
-
},
|
|
87
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
88
|
-
{
|
|
89
|
-
"name": "state",
|
|
90
|
-
"type": {
|
|
91
|
-
"kind": "struct",
|
|
92
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
93
|
-
"fields": [
|
|
94
|
-
{
|
|
95
|
-
"name": "l1_to_l2_message_tree",
|
|
96
|
-
"type": {
|
|
97
|
-
"kind": "struct",
|
|
98
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
99
|
-
"fields": [
|
|
100
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
101
|
-
{
|
|
102
|
-
"name": "next_available_leaf_index",
|
|
103
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
104
|
-
}
|
|
105
|
-
]
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
"name": "partial",
|
|
110
|
-
"type": {
|
|
111
|
-
"kind": "struct",
|
|
112
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
113
|
-
"fields": [
|
|
114
|
-
{
|
|
115
|
-
"name": "note_hash_tree",
|
|
116
|
-
"type": {
|
|
117
|
-
"kind": "struct",
|
|
118
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
119
|
-
"fields": [
|
|
120
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
121
|
-
{
|
|
122
|
-
"name": "next_available_leaf_index",
|
|
123
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
124
|
-
}
|
|
125
|
-
]
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
{
|
|
129
|
-
"name": "nullifier_tree",
|
|
130
|
-
"type": {
|
|
131
|
-
"kind": "struct",
|
|
132
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
133
|
-
"fields": [
|
|
134
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
135
|
-
{
|
|
136
|
-
"name": "next_available_leaf_index",
|
|
137
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
138
|
-
}
|
|
139
|
-
]
|
|
140
|
-
}
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"name": "contract_tree",
|
|
144
|
-
"type": {
|
|
145
|
-
"kind": "struct",
|
|
146
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
147
|
-
"fields": [
|
|
148
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
149
|
-
{
|
|
150
|
-
"name": "next_available_leaf_index",
|
|
151
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
152
|
-
}
|
|
153
|
-
]
|
|
154
|
-
}
|
|
155
|
-
},
|
|
156
|
-
{
|
|
157
|
-
"name": "public_data_tree",
|
|
158
|
-
"type": {
|
|
159
|
-
"kind": "struct",
|
|
160
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
161
|
-
"fields": [
|
|
162
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
163
|
-
{
|
|
164
|
-
"name": "next_available_leaf_index",
|
|
165
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
166
|
-
}
|
|
167
|
-
]
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
]
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
]
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
{
|
|
177
|
-
"name": "global_variables",
|
|
178
|
-
"type": {
|
|
179
|
-
"kind": "struct",
|
|
180
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
181
|
-
"fields": [
|
|
182
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
183
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
184
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
185
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
186
|
-
{
|
|
187
|
-
"name": "coinbase",
|
|
188
|
-
"type": {
|
|
189
|
-
"kind": "struct",
|
|
190
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
191
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
192
|
-
}
|
|
193
|
-
},
|
|
194
|
-
{
|
|
195
|
-
"name": "fee_recipient",
|
|
196
|
-
"type": {
|
|
197
|
-
"kind": "struct",
|
|
198
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
199
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
]
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
]
|
|
206
|
-
}
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
"name": "contract_deployment_data",
|
|
210
|
-
"type": {
|
|
211
|
-
"kind": "struct",
|
|
212
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
213
|
-
"fields": [
|
|
214
|
-
{
|
|
215
|
-
"name": "public_key",
|
|
216
|
-
"type": {
|
|
217
|
-
"kind": "struct",
|
|
218
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
219
|
-
"fields": [
|
|
220
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
221
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
222
|
-
]
|
|
223
|
-
}
|
|
224
|
-
},
|
|
225
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
226
|
-
{
|
|
227
|
-
"name": "contract_class_id",
|
|
228
|
-
"type": {
|
|
229
|
-
"kind": "struct",
|
|
230
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
231
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
232
|
-
}
|
|
233
|
-
},
|
|
234
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
235
|
-
{
|
|
236
|
-
"name": "portal_contract_address",
|
|
237
|
-
"type": {
|
|
238
|
-
"kind": "struct",
|
|
239
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
240
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
]
|
|
244
|
-
}
|
|
245
|
-
},
|
|
246
|
-
{
|
|
247
|
-
"name": "private_global_variables",
|
|
248
|
-
"type": {
|
|
249
|
-
"kind": "struct",
|
|
250
|
-
"path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
|
|
251
|
-
"fields": [
|
|
252
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
253
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
254
|
-
]
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
]
|
|
258
|
-
},
|
|
259
|
-
"visibility": "private"
|
|
260
|
-
},
|
|
261
|
-
{
|
|
262
|
-
"name": "contract_class_id",
|
|
263
|
-
"type": {
|
|
264
|
-
"kind": "struct",
|
|
265
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
266
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
267
|
-
},
|
|
268
|
-
"visibility": "private"
|
|
269
|
-
},
|
|
270
|
-
{ "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" },
|
|
271
|
-
{ "name": "private_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" },
|
|
272
|
-
{
|
|
273
|
-
"name": "artifact_function_tree_sibling_path",
|
|
274
|
-
"type": { "kind": "array", "length": 5, "type": { "kind": "field" } },
|
|
275
|
-
"visibility": "private"
|
|
276
|
-
},
|
|
277
|
-
{
|
|
278
|
-
"name": "function_data",
|
|
279
|
-
"type": {
|
|
280
|
-
"kind": "struct",
|
|
281
|
-
"path": "events::unconstrained_function_broadcasted::UnconstrainedFunction",
|
|
282
|
-
"fields": [
|
|
283
|
-
{
|
|
284
|
-
"name": "selector",
|
|
285
|
-
"type": {
|
|
286
|
-
"kind": "struct",
|
|
287
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
288
|
-
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
289
|
-
}
|
|
290
|
-
},
|
|
291
|
-
{ "name": "metadata_hash", "type": { "kind": "field" } },
|
|
292
|
-
{ "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }
|
|
293
|
-
]
|
|
294
|
-
},
|
|
295
|
-
"visibility": "private"
|
|
296
|
-
}
|
|
297
|
-
],
|
|
298
|
-
"param_witnesses": {
|
|
299
|
-
"artifact_function_tree_sibling_path": [{ "start": 39, "end": 44 }],
|
|
300
|
-
"artifact_metadata_hash": [{ "start": 37, "end": 38 }],
|
|
301
|
-
"contract_class_id": [{ "start": 36, "end": 37 }],
|
|
302
|
-
"function_data": [{ "start": 44, "end": 546 }],
|
|
303
|
-
"inputs": [{ "start": 0, "end": 36 }],
|
|
304
|
-
"private_functions_artifact_tree_root": [{ "start": 38, "end": 39 }]
|
|
305
|
-
},
|
|
306
|
-
"return_type": {
|
|
307
|
-
"abi_type": {
|
|
308
|
-
"kind": "struct",
|
|
309
|
-
"path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
310
|
-
"fields": [
|
|
311
|
-
{
|
|
312
|
-
"name": "call_context",
|
|
313
|
-
"type": {
|
|
314
|
-
"kind": "struct",
|
|
315
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
316
|
-
"fields": [
|
|
317
|
-
{
|
|
318
|
-
"name": "msg_sender",
|
|
319
|
-
"type": {
|
|
320
|
-
"kind": "struct",
|
|
321
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
322
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
323
|
-
}
|
|
324
|
-
},
|
|
325
|
-
{
|
|
326
|
-
"name": "storage_contract_address",
|
|
327
|
-
"type": {
|
|
328
|
-
"kind": "struct",
|
|
329
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
330
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
331
|
-
}
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
"name": "portal_contract_address",
|
|
335
|
-
"type": {
|
|
336
|
-
"kind": "struct",
|
|
337
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
338
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
339
|
-
}
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
"name": "function_selector",
|
|
343
|
-
"type": {
|
|
344
|
-
"kind": "struct",
|
|
345
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
346
|
-
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
347
|
-
}
|
|
348
|
-
},
|
|
349
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
350
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
351
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
352
|
-
{
|
|
353
|
-
"name": "start_side_effect_counter",
|
|
354
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
355
|
-
}
|
|
356
|
-
]
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
|
-
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
360
|
-
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
361
|
-
{
|
|
362
|
-
"name": "max_non_revertible_side_effect_counter",
|
|
363
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
364
|
-
},
|
|
365
|
-
{
|
|
366
|
-
"name": "read_requests",
|
|
367
|
-
"type": {
|
|
368
|
-
"kind": "array",
|
|
369
|
-
"length": 32,
|
|
370
|
-
"type": {
|
|
371
|
-
"kind": "struct",
|
|
372
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
373
|
-
"fields": [
|
|
374
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
375
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
376
|
-
]
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
},
|
|
380
|
-
{
|
|
381
|
-
"name": "nullifier_key_validation_requests",
|
|
382
|
-
"type": {
|
|
383
|
-
"kind": "array",
|
|
384
|
-
"length": 1,
|
|
385
|
-
"type": {
|
|
386
|
-
"kind": "struct",
|
|
387
|
-
"path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
|
|
388
|
-
"fields": [
|
|
389
|
-
{
|
|
390
|
-
"name": "public_key",
|
|
391
|
-
"type": {
|
|
392
|
-
"kind": "struct",
|
|
393
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
394
|
-
"fields": [
|
|
395
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
396
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
397
|
-
]
|
|
398
|
-
}
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
"name": "secret_key",
|
|
402
|
-
"type": {
|
|
403
|
-
"kind": "struct",
|
|
404
|
-
"path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
|
|
405
|
-
"fields": [
|
|
406
|
-
{ "name": "high", "type": { "kind": "field" } },
|
|
407
|
-
{ "name": "low", "type": { "kind": "field" } }
|
|
408
|
-
]
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
]
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
},
|
|
415
|
-
{
|
|
416
|
-
"name": "new_commitments",
|
|
417
|
-
"type": {
|
|
418
|
-
"kind": "array",
|
|
419
|
-
"length": 16,
|
|
420
|
-
"type": {
|
|
421
|
-
"kind": "struct",
|
|
422
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
423
|
-
"fields": [
|
|
424
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
425
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
426
|
-
]
|
|
427
|
-
}
|
|
428
|
-
}
|
|
429
|
-
},
|
|
430
|
-
{
|
|
431
|
-
"name": "new_nullifiers",
|
|
432
|
-
"type": {
|
|
433
|
-
"kind": "array",
|
|
434
|
-
"length": 16,
|
|
435
|
-
"type": {
|
|
436
|
-
"kind": "struct",
|
|
437
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
438
|
-
"fields": [
|
|
439
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
440
|
-
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
441
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
442
|
-
]
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
},
|
|
446
|
-
{
|
|
447
|
-
"name": "private_call_stack_hashes",
|
|
448
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
449
|
-
},
|
|
450
|
-
{
|
|
451
|
-
"name": "public_call_stack_hashes",
|
|
452
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
453
|
-
},
|
|
454
|
-
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
455
|
-
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
456
|
-
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
457
|
-
{
|
|
458
|
-
"name": "unencrypted_logs_hash",
|
|
459
|
-
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
460
|
-
},
|
|
461
|
-
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
462
|
-
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
463
|
-
{
|
|
464
|
-
"name": "historical_header",
|
|
465
|
-
"type": {
|
|
466
|
-
"kind": "struct",
|
|
467
|
-
"path": "aztec::protocol_types::header::Header",
|
|
468
|
-
"fields": [
|
|
469
|
-
{
|
|
470
|
-
"name": "last_archive",
|
|
471
|
-
"type": {
|
|
472
|
-
"kind": "struct",
|
|
473
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
474
|
-
"fields": [
|
|
475
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
476
|
-
{
|
|
477
|
-
"name": "next_available_leaf_index",
|
|
478
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
479
|
-
}
|
|
480
|
-
]
|
|
481
|
-
}
|
|
482
|
-
},
|
|
483
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
484
|
-
{
|
|
485
|
-
"name": "state",
|
|
486
|
-
"type": {
|
|
487
|
-
"kind": "struct",
|
|
488
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
489
|
-
"fields": [
|
|
490
|
-
{
|
|
491
|
-
"name": "l1_to_l2_message_tree",
|
|
492
|
-
"type": {
|
|
493
|
-
"kind": "struct",
|
|
494
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
495
|
-
"fields": [
|
|
496
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
497
|
-
{
|
|
498
|
-
"name": "next_available_leaf_index",
|
|
499
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
500
|
-
}
|
|
501
|
-
]
|
|
502
|
-
}
|
|
503
|
-
},
|
|
504
|
-
{
|
|
505
|
-
"name": "partial",
|
|
506
|
-
"type": {
|
|
507
|
-
"kind": "struct",
|
|
508
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
509
|
-
"fields": [
|
|
510
|
-
{
|
|
511
|
-
"name": "note_hash_tree",
|
|
512
|
-
"type": {
|
|
513
|
-
"kind": "struct",
|
|
514
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
515
|
-
"fields": [
|
|
516
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
517
|
-
{
|
|
518
|
-
"name": "next_available_leaf_index",
|
|
519
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
520
|
-
}
|
|
521
|
-
]
|
|
522
|
-
}
|
|
523
|
-
},
|
|
524
|
-
{
|
|
525
|
-
"name": "nullifier_tree",
|
|
526
|
-
"type": {
|
|
527
|
-
"kind": "struct",
|
|
528
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
529
|
-
"fields": [
|
|
530
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
531
|
-
{
|
|
532
|
-
"name": "next_available_leaf_index",
|
|
533
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
534
|
-
}
|
|
535
|
-
]
|
|
536
|
-
}
|
|
537
|
-
},
|
|
538
|
-
{
|
|
539
|
-
"name": "contract_tree",
|
|
540
|
-
"type": {
|
|
541
|
-
"kind": "struct",
|
|
542
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
543
|
-
"fields": [
|
|
544
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
545
|
-
{
|
|
546
|
-
"name": "next_available_leaf_index",
|
|
547
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
548
|
-
}
|
|
549
|
-
]
|
|
550
|
-
}
|
|
551
|
-
},
|
|
552
|
-
{
|
|
553
|
-
"name": "public_data_tree",
|
|
554
|
-
"type": {
|
|
555
|
-
"kind": "struct",
|
|
556
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
557
|
-
"fields": [
|
|
558
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
559
|
-
{
|
|
560
|
-
"name": "next_available_leaf_index",
|
|
561
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
562
|
-
}
|
|
563
|
-
]
|
|
564
|
-
}
|
|
565
|
-
}
|
|
566
|
-
]
|
|
567
|
-
}
|
|
568
|
-
}
|
|
569
|
-
]
|
|
570
|
-
}
|
|
571
|
-
},
|
|
572
|
-
{
|
|
573
|
-
"name": "global_variables",
|
|
574
|
-
"type": {
|
|
575
|
-
"kind": "struct",
|
|
576
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
577
|
-
"fields": [
|
|
578
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
579
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
580
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
581
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
582
|
-
{
|
|
583
|
-
"name": "coinbase",
|
|
584
|
-
"type": {
|
|
585
|
-
"kind": "struct",
|
|
586
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
587
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
588
|
-
}
|
|
589
|
-
},
|
|
590
|
-
{
|
|
591
|
-
"name": "fee_recipient",
|
|
592
|
-
"type": {
|
|
593
|
-
"kind": "struct",
|
|
594
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
595
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
]
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
]
|
|
602
|
-
}
|
|
603
|
-
},
|
|
604
|
-
{
|
|
605
|
-
"name": "contract_deployment_data",
|
|
606
|
-
"type": {
|
|
607
|
-
"kind": "struct",
|
|
608
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
609
|
-
"fields": [
|
|
610
|
-
{
|
|
611
|
-
"name": "public_key",
|
|
612
|
-
"type": {
|
|
613
|
-
"kind": "struct",
|
|
614
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
615
|
-
"fields": [
|
|
616
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
617
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
618
|
-
]
|
|
619
|
-
}
|
|
620
|
-
},
|
|
621
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
622
|
-
{
|
|
623
|
-
"name": "contract_class_id",
|
|
624
|
-
"type": {
|
|
625
|
-
"kind": "struct",
|
|
626
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
627
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
628
|
-
}
|
|
629
|
-
},
|
|
630
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
631
|
-
{
|
|
632
|
-
"name": "portal_contract_address",
|
|
633
|
-
"type": {
|
|
634
|
-
"kind": "struct",
|
|
635
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
636
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
637
|
-
}
|
|
638
|
-
}
|
|
639
|
-
]
|
|
640
|
-
}
|
|
641
|
-
},
|
|
642
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
643
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
644
|
-
]
|
|
645
|
-
},
|
|
646
|
-
"visibility": "public"
|
|
647
|
-
},
|
|
648
|
-
"return_witnesses": [
|
|
649
|
-
566, 567, 568, 569, 570, 571, 572, 573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587,
|
|
650
|
-
588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609,
|
|
651
|
-
610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631,
|
|
652
|
-
632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653,
|
|
653
|
-
654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675,
|
|
654
|
-
676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697,
|
|
655
|
-
698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719,
|
|
656
|
-
720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741,
|
|
657
|
-
742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763,
|
|
658
|
-
764, 765, 766, 767, 768, 769, 770, 771, 772
|
|
659
|
-
]
|
|
660
|
-
},
|
|
661
|
-
"bytecode": "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",
|
|
662
|
-
"debug_symbols": "1ZjbaoQwFEX/Jc8yeC5JTvyV0gfbTkEQZxilUMR/rzITrTQgpDBwnjSwV1gmwS2Opr2810Nz6XpTjQbQVC+j6a91twz7ob4NpioLc+4+5utUmM+mPZsKxE/FnxzY8EiCwJr1kIgiCj2ySPxrYrCpiYGcjVMDY9jlXwsDpNSblXpbpd5OqbdX6i1KvYNObyyVeoNSb6V9iUr7EpX2JSrtS1Tal6i0L1FpX+LT+pLBR2/2/r/elOxL8jaqkzje2S9QsqxIPEcokDt8ZIrrD67c0sx3rRMn3xiAEs3m222tQoiYy8N8HiZ5WPK0gGzHIICsmMQlseUhhpTAIA/DPIwyMDilPyQOTsmMUR7G6X0rZd03L7t9mwdf9a2p39rz8qNgHg7f1/vt9AM="
|
|
663
|
-
},
|
|
664
|
-
{
|
|
665
|
-
"name": "register",
|
|
666
|
-
"function_type": "Secret",
|
|
667
|
-
"is_internal": false,
|
|
668
|
-
"abi": {
|
|
669
|
-
"parameters": [
|
|
670
|
-
{
|
|
671
|
-
"name": "inputs",
|
|
672
|
-
"type": {
|
|
673
|
-
"kind": "struct",
|
|
674
|
-
"path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
|
|
675
|
-
"fields": [
|
|
676
|
-
{
|
|
677
|
-
"name": "call_context",
|
|
678
|
-
"type": {
|
|
679
|
-
"kind": "struct",
|
|
680
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
681
|
-
"fields": [
|
|
682
|
-
{
|
|
683
|
-
"name": "msg_sender",
|
|
684
|
-
"type": {
|
|
685
|
-
"kind": "struct",
|
|
686
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
687
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
688
|
-
}
|
|
689
|
-
},
|
|
690
|
-
{
|
|
691
|
-
"name": "storage_contract_address",
|
|
692
|
-
"type": {
|
|
693
|
-
"kind": "struct",
|
|
694
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
695
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
696
|
-
}
|
|
697
|
-
},
|
|
698
|
-
{
|
|
699
|
-
"name": "portal_contract_address",
|
|
700
|
-
"type": {
|
|
701
|
-
"kind": "struct",
|
|
702
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
703
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
704
|
-
}
|
|
705
|
-
},
|
|
706
|
-
{
|
|
707
|
-
"name": "function_selector",
|
|
708
|
-
"type": {
|
|
709
|
-
"kind": "struct",
|
|
710
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
711
|
-
"fields": [
|
|
712
|
-
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
713
|
-
]
|
|
714
|
-
}
|
|
715
|
-
},
|
|
716
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
717
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
718
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
719
|
-
{
|
|
720
|
-
"name": "start_side_effect_counter",
|
|
721
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
722
|
-
}
|
|
723
|
-
]
|
|
724
|
-
}
|
|
725
|
-
},
|
|
726
|
-
{
|
|
727
|
-
"name": "historical_header",
|
|
728
|
-
"type": {
|
|
729
|
-
"kind": "struct",
|
|
730
|
-
"path": "aztec::protocol_types::header::Header",
|
|
731
|
-
"fields": [
|
|
732
|
-
{
|
|
733
|
-
"name": "last_archive",
|
|
734
|
-
"type": {
|
|
735
|
-
"kind": "struct",
|
|
736
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
737
|
-
"fields": [
|
|
738
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
739
|
-
{
|
|
740
|
-
"name": "next_available_leaf_index",
|
|
741
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
742
|
-
}
|
|
743
|
-
]
|
|
744
|
-
}
|
|
745
|
-
},
|
|
746
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
747
|
-
{
|
|
748
|
-
"name": "state",
|
|
749
|
-
"type": {
|
|
750
|
-
"kind": "struct",
|
|
751
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
752
|
-
"fields": [
|
|
753
|
-
{
|
|
754
|
-
"name": "l1_to_l2_message_tree",
|
|
755
|
-
"type": {
|
|
756
|
-
"kind": "struct",
|
|
757
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
758
|
-
"fields": [
|
|
759
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
760
|
-
{
|
|
761
|
-
"name": "next_available_leaf_index",
|
|
762
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
763
|
-
}
|
|
764
|
-
]
|
|
765
|
-
}
|
|
766
|
-
},
|
|
767
|
-
{
|
|
768
|
-
"name": "partial",
|
|
769
|
-
"type": {
|
|
770
|
-
"kind": "struct",
|
|
771
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
772
|
-
"fields": [
|
|
773
|
-
{
|
|
774
|
-
"name": "note_hash_tree",
|
|
775
|
-
"type": {
|
|
776
|
-
"kind": "struct",
|
|
777
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
778
|
-
"fields": [
|
|
779
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
780
|
-
{
|
|
781
|
-
"name": "next_available_leaf_index",
|
|
782
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
783
|
-
}
|
|
784
|
-
]
|
|
785
|
-
}
|
|
786
|
-
},
|
|
787
|
-
{
|
|
788
|
-
"name": "nullifier_tree",
|
|
789
|
-
"type": {
|
|
790
|
-
"kind": "struct",
|
|
791
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
792
|
-
"fields": [
|
|
793
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
794
|
-
{
|
|
795
|
-
"name": "next_available_leaf_index",
|
|
796
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
797
|
-
}
|
|
798
|
-
]
|
|
799
|
-
}
|
|
800
|
-
},
|
|
801
|
-
{
|
|
802
|
-
"name": "contract_tree",
|
|
803
|
-
"type": {
|
|
804
|
-
"kind": "struct",
|
|
805
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
806
|
-
"fields": [
|
|
807
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
808
|
-
{
|
|
809
|
-
"name": "next_available_leaf_index",
|
|
810
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
811
|
-
}
|
|
812
|
-
]
|
|
813
|
-
}
|
|
814
|
-
},
|
|
815
|
-
{
|
|
816
|
-
"name": "public_data_tree",
|
|
817
|
-
"type": {
|
|
818
|
-
"kind": "struct",
|
|
819
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
820
|
-
"fields": [
|
|
821
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
822
|
-
{
|
|
823
|
-
"name": "next_available_leaf_index",
|
|
824
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
825
|
-
}
|
|
826
|
-
]
|
|
827
|
-
}
|
|
828
|
-
}
|
|
829
|
-
]
|
|
830
|
-
}
|
|
831
|
-
}
|
|
832
|
-
]
|
|
833
|
-
}
|
|
834
|
-
},
|
|
835
|
-
{
|
|
836
|
-
"name": "global_variables",
|
|
837
|
-
"type": {
|
|
838
|
-
"kind": "struct",
|
|
839
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
840
|
-
"fields": [
|
|
841
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
842
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
843
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
844
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
845
|
-
{
|
|
846
|
-
"name": "coinbase",
|
|
847
|
-
"type": {
|
|
848
|
-
"kind": "struct",
|
|
849
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
850
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
851
|
-
}
|
|
852
|
-
},
|
|
853
|
-
{
|
|
854
|
-
"name": "fee_recipient",
|
|
855
|
-
"type": {
|
|
856
|
-
"kind": "struct",
|
|
857
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
858
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
859
|
-
}
|
|
860
|
-
}
|
|
861
|
-
]
|
|
862
|
-
}
|
|
863
|
-
}
|
|
864
|
-
]
|
|
865
|
-
}
|
|
866
|
-
},
|
|
867
|
-
{
|
|
868
|
-
"name": "contract_deployment_data",
|
|
869
|
-
"type": {
|
|
870
|
-
"kind": "struct",
|
|
871
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
872
|
-
"fields": [
|
|
873
|
-
{
|
|
874
|
-
"name": "public_key",
|
|
875
|
-
"type": {
|
|
876
|
-
"kind": "struct",
|
|
877
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
878
|
-
"fields": [
|
|
879
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
880
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
881
|
-
]
|
|
882
|
-
}
|
|
883
|
-
},
|
|
884
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
885
|
-
{
|
|
886
|
-
"name": "contract_class_id",
|
|
887
|
-
"type": {
|
|
888
|
-
"kind": "struct",
|
|
889
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
890
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
891
|
-
}
|
|
892
|
-
},
|
|
893
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
894
|
-
{
|
|
895
|
-
"name": "portal_contract_address",
|
|
896
|
-
"type": {
|
|
897
|
-
"kind": "struct",
|
|
898
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
899
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
900
|
-
}
|
|
901
|
-
}
|
|
902
|
-
]
|
|
903
|
-
}
|
|
904
|
-
},
|
|
905
|
-
{
|
|
906
|
-
"name": "private_global_variables",
|
|
907
|
-
"type": {
|
|
908
|
-
"kind": "struct",
|
|
909
|
-
"path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
|
|
910
|
-
"fields": [
|
|
911
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
912
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
913
|
-
]
|
|
914
|
-
}
|
|
915
|
-
}
|
|
916
|
-
]
|
|
917
|
-
},
|
|
918
|
-
"visibility": "private"
|
|
919
|
-
},
|
|
920
|
-
{ "name": "artifact_hash", "type": { "kind": "field" }, "visibility": "private" },
|
|
921
|
-
{ "name": "private_functions_root", "type": { "kind": "field" }, "visibility": "private" },
|
|
922
|
-
{ "name": "public_bytecode_commitment", "type": { "kind": "field" }, "visibility": "private" },
|
|
923
|
-
{
|
|
924
|
-
"name": "packed_public_bytecode",
|
|
925
|
-
"type": { "kind": "array", "length": 1000, "type": { "kind": "field" } },
|
|
926
|
-
"visibility": "private"
|
|
927
|
-
}
|
|
928
|
-
],
|
|
929
|
-
"param_witnesses": {
|
|
930
|
-
"artifact_hash": [{ "start": 36, "end": 37 }],
|
|
931
|
-
"inputs": [{ "start": 0, "end": 36 }],
|
|
932
|
-
"packed_public_bytecode": [{ "start": 39, "end": 1039 }],
|
|
933
|
-
"private_functions_root": [{ "start": 37, "end": 38 }],
|
|
934
|
-
"public_bytecode_commitment": [{ "start": 38, "end": 39 }]
|
|
935
|
-
},
|
|
936
|
-
"return_type": {
|
|
937
|
-
"abi_type": {
|
|
938
|
-
"kind": "struct",
|
|
939
|
-
"path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
940
|
-
"fields": [
|
|
941
|
-
{
|
|
942
|
-
"name": "call_context",
|
|
943
|
-
"type": {
|
|
944
|
-
"kind": "struct",
|
|
945
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
946
|
-
"fields": [
|
|
947
|
-
{
|
|
948
|
-
"name": "msg_sender",
|
|
949
|
-
"type": {
|
|
950
|
-
"kind": "struct",
|
|
951
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
952
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
953
|
-
}
|
|
954
|
-
},
|
|
955
|
-
{
|
|
956
|
-
"name": "storage_contract_address",
|
|
957
|
-
"type": {
|
|
958
|
-
"kind": "struct",
|
|
959
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
960
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
961
|
-
}
|
|
962
|
-
},
|
|
963
|
-
{
|
|
964
|
-
"name": "portal_contract_address",
|
|
965
|
-
"type": {
|
|
966
|
-
"kind": "struct",
|
|
967
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
968
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
969
|
-
}
|
|
970
|
-
},
|
|
971
|
-
{
|
|
972
|
-
"name": "function_selector",
|
|
973
|
-
"type": {
|
|
974
|
-
"kind": "struct",
|
|
975
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
976
|
-
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
977
|
-
}
|
|
978
|
-
},
|
|
979
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
980
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
981
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
982
|
-
{
|
|
983
|
-
"name": "start_side_effect_counter",
|
|
984
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
985
|
-
}
|
|
986
|
-
]
|
|
987
|
-
}
|
|
988
|
-
},
|
|
989
|
-
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
990
|
-
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
991
|
-
{
|
|
992
|
-
"name": "max_non_revertible_side_effect_counter",
|
|
993
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
994
|
-
},
|
|
995
|
-
{
|
|
996
|
-
"name": "read_requests",
|
|
997
|
-
"type": {
|
|
998
|
-
"kind": "array",
|
|
999
|
-
"length": 32,
|
|
1000
|
-
"type": {
|
|
1001
|
-
"kind": "struct",
|
|
1002
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1003
|
-
"fields": [
|
|
1004
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
1005
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1006
|
-
]
|
|
1007
|
-
}
|
|
1008
|
-
}
|
|
1009
|
-
},
|
|
1010
|
-
{
|
|
1011
|
-
"name": "nullifier_key_validation_requests",
|
|
1012
|
-
"type": {
|
|
1013
|
-
"kind": "array",
|
|
1014
|
-
"length": 1,
|
|
1015
|
-
"type": {
|
|
1016
|
-
"kind": "struct",
|
|
1017
|
-
"path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
|
|
1018
|
-
"fields": [
|
|
1019
|
-
{
|
|
1020
|
-
"name": "public_key",
|
|
1021
|
-
"type": {
|
|
1022
|
-
"kind": "struct",
|
|
1023
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1024
|
-
"fields": [
|
|
1025
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
1026
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
1027
|
-
]
|
|
1028
|
-
}
|
|
1029
|
-
},
|
|
1030
|
-
{
|
|
1031
|
-
"name": "secret_key",
|
|
1032
|
-
"type": {
|
|
1033
|
-
"kind": "struct",
|
|
1034
|
-
"path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
|
|
1035
|
-
"fields": [
|
|
1036
|
-
{ "name": "high", "type": { "kind": "field" } },
|
|
1037
|
-
{ "name": "low", "type": { "kind": "field" } }
|
|
1038
|
-
]
|
|
1039
|
-
}
|
|
1040
|
-
}
|
|
1041
|
-
]
|
|
1042
|
-
}
|
|
1043
|
-
}
|
|
1044
|
-
},
|
|
1045
|
-
{
|
|
1046
|
-
"name": "new_commitments",
|
|
1047
|
-
"type": {
|
|
1048
|
-
"kind": "array",
|
|
1049
|
-
"length": 16,
|
|
1050
|
-
"type": {
|
|
1051
|
-
"kind": "struct",
|
|
1052
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1053
|
-
"fields": [
|
|
1054
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
1055
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1056
|
-
]
|
|
1057
|
-
}
|
|
1058
|
-
}
|
|
1059
|
-
},
|
|
1060
|
-
{
|
|
1061
|
-
"name": "new_nullifiers",
|
|
1062
|
-
"type": {
|
|
1063
|
-
"kind": "array",
|
|
1064
|
-
"length": 16,
|
|
1065
|
-
"type": {
|
|
1066
|
-
"kind": "struct",
|
|
1067
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
1068
|
-
"fields": [
|
|
1069
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
1070
|
-
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
1071
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1072
|
-
]
|
|
1073
|
-
}
|
|
1074
|
-
}
|
|
1075
|
-
},
|
|
1076
|
-
{
|
|
1077
|
-
"name": "private_call_stack_hashes",
|
|
1078
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1079
|
-
},
|
|
1080
|
-
{
|
|
1081
|
-
"name": "public_call_stack_hashes",
|
|
1082
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1083
|
-
},
|
|
1084
|
-
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1085
|
-
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
1086
|
-
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1087
|
-
{
|
|
1088
|
-
"name": "unencrypted_logs_hash",
|
|
1089
|
-
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
1090
|
-
},
|
|
1091
|
-
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1092
|
-
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1093
|
-
{
|
|
1094
|
-
"name": "historical_header",
|
|
1095
|
-
"type": {
|
|
1096
|
-
"kind": "struct",
|
|
1097
|
-
"path": "aztec::protocol_types::header::Header",
|
|
1098
|
-
"fields": [
|
|
1099
|
-
{
|
|
1100
|
-
"name": "last_archive",
|
|
1101
|
-
"type": {
|
|
1102
|
-
"kind": "struct",
|
|
1103
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1104
|
-
"fields": [
|
|
1105
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1106
|
-
{
|
|
1107
|
-
"name": "next_available_leaf_index",
|
|
1108
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1109
|
-
}
|
|
1110
|
-
]
|
|
1111
|
-
}
|
|
1112
|
-
},
|
|
1113
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1114
|
-
{
|
|
1115
|
-
"name": "state",
|
|
1116
|
-
"type": {
|
|
1117
|
-
"kind": "struct",
|
|
1118
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
1119
|
-
"fields": [
|
|
1120
|
-
{
|
|
1121
|
-
"name": "l1_to_l2_message_tree",
|
|
1122
|
-
"type": {
|
|
1123
|
-
"kind": "struct",
|
|
1124
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1125
|
-
"fields": [
|
|
1126
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1127
|
-
{
|
|
1128
|
-
"name": "next_available_leaf_index",
|
|
1129
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1130
|
-
}
|
|
1131
|
-
]
|
|
1132
|
-
}
|
|
1133
|
-
},
|
|
1134
|
-
{
|
|
1135
|
-
"name": "partial",
|
|
1136
|
-
"type": {
|
|
1137
|
-
"kind": "struct",
|
|
1138
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
1139
|
-
"fields": [
|
|
1140
|
-
{
|
|
1141
|
-
"name": "note_hash_tree",
|
|
1142
|
-
"type": {
|
|
1143
|
-
"kind": "struct",
|
|
1144
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1145
|
-
"fields": [
|
|
1146
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1147
|
-
{
|
|
1148
|
-
"name": "next_available_leaf_index",
|
|
1149
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1150
|
-
}
|
|
1151
|
-
]
|
|
1152
|
-
}
|
|
1153
|
-
},
|
|
1154
|
-
{
|
|
1155
|
-
"name": "nullifier_tree",
|
|
1156
|
-
"type": {
|
|
1157
|
-
"kind": "struct",
|
|
1158
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1159
|
-
"fields": [
|
|
1160
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1161
|
-
{
|
|
1162
|
-
"name": "next_available_leaf_index",
|
|
1163
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1164
|
-
}
|
|
1165
|
-
]
|
|
1166
|
-
}
|
|
1167
|
-
},
|
|
1168
|
-
{
|
|
1169
|
-
"name": "contract_tree",
|
|
1170
|
-
"type": {
|
|
1171
|
-
"kind": "struct",
|
|
1172
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1173
|
-
"fields": [
|
|
1174
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1175
|
-
{
|
|
1176
|
-
"name": "next_available_leaf_index",
|
|
1177
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1178
|
-
}
|
|
1179
|
-
]
|
|
1180
|
-
}
|
|
1181
|
-
},
|
|
1182
|
-
{
|
|
1183
|
-
"name": "public_data_tree",
|
|
1184
|
-
"type": {
|
|
1185
|
-
"kind": "struct",
|
|
1186
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1187
|
-
"fields": [
|
|
1188
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1189
|
-
{
|
|
1190
|
-
"name": "next_available_leaf_index",
|
|
1191
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1192
|
-
}
|
|
1193
|
-
]
|
|
1194
|
-
}
|
|
1195
|
-
}
|
|
1196
|
-
]
|
|
1197
|
-
}
|
|
1198
|
-
}
|
|
1199
|
-
]
|
|
1200
|
-
}
|
|
1201
|
-
},
|
|
1202
|
-
{
|
|
1203
|
-
"name": "global_variables",
|
|
1204
|
-
"type": {
|
|
1205
|
-
"kind": "struct",
|
|
1206
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
1207
|
-
"fields": [
|
|
1208
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1209
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
1210
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
1211
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
1212
|
-
{
|
|
1213
|
-
"name": "coinbase",
|
|
1214
|
-
"type": {
|
|
1215
|
-
"kind": "struct",
|
|
1216
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1217
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1218
|
-
}
|
|
1219
|
-
},
|
|
1220
|
-
{
|
|
1221
|
-
"name": "fee_recipient",
|
|
1222
|
-
"type": {
|
|
1223
|
-
"kind": "struct",
|
|
1224
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1225
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1226
|
-
}
|
|
1227
|
-
}
|
|
1228
|
-
]
|
|
1229
|
-
}
|
|
1230
|
-
}
|
|
1231
|
-
]
|
|
1232
|
-
}
|
|
1233
|
-
},
|
|
1234
|
-
{
|
|
1235
|
-
"name": "contract_deployment_data",
|
|
1236
|
-
"type": {
|
|
1237
|
-
"kind": "struct",
|
|
1238
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
1239
|
-
"fields": [
|
|
1240
|
-
{
|
|
1241
|
-
"name": "public_key",
|
|
1242
|
-
"type": {
|
|
1243
|
-
"kind": "struct",
|
|
1244
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1245
|
-
"fields": [
|
|
1246
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
1247
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
1248
|
-
]
|
|
1249
|
-
}
|
|
1250
|
-
},
|
|
1251
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
1252
|
-
{
|
|
1253
|
-
"name": "contract_class_id",
|
|
1254
|
-
"type": {
|
|
1255
|
-
"kind": "struct",
|
|
1256
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
1257
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1258
|
-
}
|
|
1259
|
-
},
|
|
1260
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
1261
|
-
{
|
|
1262
|
-
"name": "portal_contract_address",
|
|
1263
|
-
"type": {
|
|
1264
|
-
"kind": "struct",
|
|
1265
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1266
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1267
|
-
}
|
|
1268
|
-
}
|
|
1269
|
-
]
|
|
1270
|
-
}
|
|
1271
|
-
},
|
|
1272
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1273
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
1274
|
-
]
|
|
1275
|
-
},
|
|
1276
|
-
"visibility": "public"
|
|
1277
|
-
},
|
|
1278
|
-
"return_witnesses": [
|
|
1279
|
-
1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094,
|
|
1280
|
-
1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111, 1112,
|
|
1281
|
-
1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130,
|
|
1282
|
-
1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148,
|
|
1283
|
-
1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
|
|
1284
|
-
1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184,
|
|
1285
|
-
1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202,
|
|
1286
|
-
1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220,
|
|
1287
|
-
1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, 1237, 1238,
|
|
1288
|
-
1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
|
|
1289
|
-
1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274,
|
|
1290
|
-
1275, 1276, 1277, 1278, 1279, 1280, 1281, 1282, 1283
|
|
1291
|
-
]
|
|
1292
|
-
},
|
|
1293
|
-
"bytecode": "H4sIAAAAAAAA/+XdBXCUd9/2fYK7FqiXCsUKJCQhCS7F3d0J7u5aXNviLsXd3Yu7uxd3d3iPs/cv071y5Z175nmWZ/qdMzPfOdjdsnz+C5QQkt0o0SJF8vGJ9PebM5FVFJXC43JU+3bY5WjhLkcPdzlGuO8fK9zleOEuJwh3OVG4y0nCXU7qcTmmfdt5+0G9Vyltf7RNZZvaNo1tWtt0tj/ZprfNYJvR1tfWzzaTrb9tgG2gbWbbINtg2xDbLLZZbbPZZrfNYZvTNpdtbts8tnk9/Ami/vfj8rPdns82v20B24K2hWwL2xaxLWpbzLa4bQnbkralbEvblrEta1vOtrxtBduKtpVsK9tWsa1qW822um0N25q2tWxr29bxeFwSRvC41LXbQ23r2da3bWDb0LaRbWPbJrZNbZvZNrdtYdvStpVta9s2tm1t29m2t+1g29G2k21n2y62XW272Xa37WHb07aXbW+PxyVRBI/LL3Z7H9u+tv1s+9sOsB1oO8h2sO0Q26G2w2yH2/5q+5vt77YjbEfajrIdbTvGdqztONvxthNsJ9pOsp1sO8V2qu002+kej0viCB6XP+z2GbYzbWfZzradYzvXdp7tfNsFtgttF9kutl1iu9R2me1y2xW2K21X2a62XWO71nad7XrbDbYbbTfZbrbdYrvVdpvH45IkgsflT7t9u+0O2522u2x32+6x3Wu7z3a/7QHbg7aHbA/bHrE9anvM9rjtCduTtqdsT9uesT1re872vO0F24u2l2wv216xverxuHwSwePyl91+zfa67Q3bm7a3bG/b3rG9a3vP9r7tA9uHto9sH9s+sX1q+8z2ue0L25e2r2xf276xfWv7zjasD7bOgZ31sY1sG8Xnn8claQSPS1S7PZptdNsYtjFtY9nGto1jG9c2nm182wS2CW0T2Sa2TWL7iW1S22S2yW0/tf3M9nPbL2y/tP3K9mvbb2xT2H5r+53t9x6PS7IIHpcf7PaUtj/aprJNbZvGNq1turD7tU1vm8E2o62vrZ9tJlt/2wDbQNvMtkG2wbYhtllss9pms81um8M2p20u29y2eWzzejwuySN6/8Vuz2eb37aAbUHbQraFbYvYFrUtZlvctoRtSdtStqVty9iWtS1nW962gm1F20q2lW2r2Fa1rWZb3baGbU3bWra1bet4PC6fRvT+i90ealvPtr5tA9uGto1sG9s2sW1q28y2uW0L25a2rWxb27axbWvbzra9bQfbjradbDvbdrHtatvNtrttD9uetr1se3s8Lp9F9P6L3d7Htq9tP9v+tgNsB9oOsh1sO8R2qO0w2+G2v9r+Zvu77QjbkbajbEfbjrEdazvOdrztBNuJtpNsJ9tOsZ1qO812usfj8nlE77/Y7TNsZ9rOsp1tO8d2ru082/m2C2wX2i6yXWy7xHap7TLb5bYrbFfarrJdbbvGdq3tOtv1thtsN9pust1su8V2q+02j8fli4jef7Hbt9vusN1pu8t2t+0e2722+2z32x6wPWh7yPaw7RHbo7bHbI/bnrA9aXvK9rTtGduztudsz9tesL1oe8n2su0V26sej8uXEb3/Yrdfs71ue8P2pu0t29u2d2zv2t6zvW/7wPah7SPbx7ZPbJ/aPrN9bvvC9qXtK9vXtm9s39q+s31v+8HW+WCCsz62kW2jRP7ncfkqovdf7PZottFtY9jGtI1lG9s2jm1c23i28W0T2Ca0TWSb2DaJ7Se2SW2T2Sa3/dT2M9vPbb+w/dL2K9uvbb+xTWH7re13tt97PC5fR/T+i92e0vZH21S2qW3T2Ka1TRd2v7bpbTPYZrT1tfWzzWTrbxtgG2ib2TbINtg2xDaLbVbbbLbZbXPY5rTNZZvbNo9tXo/H5ZuI3n+x2/PZ5rctYFvQtpBtYdsitkVti9kWty1hW9K2lG1p2zK2ZW3L2Za3rWBb0baSbWXbKrZVbavZVretYVvTtpZtbds6Ho9Liojef7HbQ23r2da3bWDb0LaRbWPbJrZNbZvZNrdtYdvStpVta9s2tm1t29m2t+1g29G2k21n2y62XW272Xa37WHb07aXbW+Px+XbiN5/sdv72Pa17Wfb33aA7UDbQbaDbYfYDrUdZjvc9lfb32x/tx1hO9J2lO1o2zG2Y23H2Y63nWA70XaS7WTbKbZTbafZTvd4XL6L6P0Xu32G7UzbWbazbefYzrWdZzvfdoHtQttFtottl9gutV1mu9x2he1K21W2q23X2K61XWe73naD7UbbTbabbbfYbrXd5vG4fB/R+y92+3bbHbY7bXfZ7rbdY7vXdp/tftsDtgdtD9ketj1ie9T2mO1x2xO2J21P2Z62PWN71vac7XnbC7YXbS/ZXra9YnvV43H5IaL3X+z2a7bXbW/Y3rS9ZXvb9o7tXdt7tvdtH9g+tH1k+9j2ie1T22e2z21f2L60fWX72vaN7Vvbd7bvbT/YOv9Q46yPbWTbKFH+eVxSRvT+i90ezTa6bQzbmLaxbGPbxrGNaxvPNr5tAtuEtolsE9smsf3ENqltMtvktp/afmb7ue0Xtl/afmX7te03tilsv7X9zvZ7j8flx4jef7HbU9r+aJvKNrVtGtu0tunC7tc2vW0G24y2vrZ+tpls/W0DbANtM9sG2Qbbhthmsc1qm802u20O25y2uWxz2+axzevxuKSK6P0Xuz2fbX7bArYFbQvZFrYtYlvUtphtcdsStiVtS9mWti1jW9a2nG152wq2FW0r2Va2rWJb1baabXXbGrY1bWvZ1rat4/G4pI7o/Re7PdS2nm192wa2DW0b2Ta2bWLb1LaZbXPbFrYtbVvZtrZtY9vWtp1te9sOth1tO9l2tu1i29W2m2132x62PW172fb2eFzSRPT+i93ex7avbT/b/rYDbAfaDrIdbDvEdqjtMNvhtr/a/mb7u+0I25G2o2xH246xHWs7zna87QTbibaTbCfbTrGdajvNdrrH45I2ovdf7PYZtjNtZ9nOtp1jO9d2nu182wW2C20X2S62XWK71HaZ7XLbFbYrbVfZrrZdY7vWdp3tetsNthttN9lutt1iu9V2m8fjki6i91/s9u22O2x32u6y3W27x3av7T7b/bYHbA/aHrI9bHvE9qjtMdvjtidsT9qesj1te8b2rO052/O2F2wv2l6yvWx7xfaqx+PyU0Tvv9jt12yv296wvWl7y/a27R3bu7b3bO/bPrB9aPvI9rHtE9unts9sn9u+sH1p+8r2te0b27e272zf236wdT6xxFkf28i2UaL+87ikjxrpP958bHPZ+vtmDggIDcoU6ufvV8s3U0jt4EDfgMDamYP9gv0CgwPrZgr29w8NDggOCqkdEuQb4hfgH+pXLzDEv57v/7xliPrPffn+X7791/tZdo5ottFtY9jGtI1lG9s2jm1c23i28W0zQNb5+csYwa/rBHZ7QttEtoltk9h+YpvUNpltcttPbT+z/dz2C9svbb+y/dr2G9sUtt/afmf7ve0Ptiltf7RNZZvaNo1tWtt0Yee3TW+b0eNx8fV4XKLY4/JDJPvxbMM+fymh8gv3+yBypP/8feD7f/fmFyOS935PZfLe7ynnnyr/PqtznynssQo7u3Nb8kgRv3nnxw/w/zj3m7neR7rf0I9zv0EBH+l+M32kx8HvI93vR/r18LEe34/267fOR7rfj/TzFuTPut/Aj/X7IvAj3W/QR7rfENbP28f6ffyxft6CaL/OnE9R+vvvMxG9hf8xMoeEhNT1C/XNVNs3uFZAQFCtgMz+gZn9AwL969T2zxziF1InpG7dIL9AX3//zPXqBNUJqJupdmCmesFh9+fjVbuvn58X/67xv539/9T4sc7+QyTvn93bxpQAYyqAMTXAmAZgTAswpgMYfwIY0wOMGQDGjACjL8DoBzBmAhj9AcYAgDEQYMwMMAYBjMEAYwjAmAVgzAowZgMYswOMOQDGnABjLoAxN8CYB2DMCzD+DDDmAxjzA4wFAMaCAGMhgLEwwFgEYCwKMBYDGIsDjCUAxpIAYymAsTTAWAZgLAswlgMYywOMFQDGigBjJYCxMsBYBWCsCjBWAxirA4w1AMaaAGMtgLE2wFgHYKwLMIYCjPUAxvoAYwOAsSHA2AhgbAwwNgEYmwKMzQDG5gBjC4CxJcDYCmBsDTC2ARjbAoztAMb2AGMHgLEjwNgJYOwMMHYBGLsCjN0Axu4AYw+AsSfA2Atg7A0w/gIw9gEY+wKM/QDG/gDjAIBxIMA4CGAcDDAOARiHAozDAMbhAOOvAONvAOPvAOMIgHEkwDgKYBwNMI4BGMcCjOMAxvEA4wSAcSLAOAlgnAwwTgEYpwKM0wDG6QDjHwDjDIBxJsA4C2CcDTDOARjnAozzAMb5AOMCgHEhwLgIYFwMMC4BGJcCjMsAxuUA4wqAcSXAuApgXA0wrgEY1wKM6wDG9QDjBoBxI8C4CWDcDDBuARi3AozbAMY/AcbtAOMOgHEnwLgLYNwNMO4BGPcCjPsAxv0A4wGA8SDAeAhgPAwwHgEYjwKMxwDG4wDjCYDxJMB4CmA8DTCeARjPAoznAMbzAOMFgPEiwHgJYLwMMF4BGK8CjH8BjNcAxusA4w2A8SbAeAtgvA0w3gEY7wKM9wDG+wDjA4DxIcD4CGB8DDA+ARifAozPAMbnAOMLgPElwPgKYHwNML4BGN8CjO8AxvcA4weA0bnDf7vRB2CMDDBGARijAozRAMboAGMMgDEmwBgLYIwNMMYBGOMCjPEAxvgAYwKAMSHAmAhgTAwwJgEYPwEYkwKMyQDG5ADjpwDjZwDj5wDjFwDjlwDjVwDj1wDjNwBjCoDxW4DxO4Dxe4DxB4AxJcD4I8CYCmBMDTCmARjTAozpAMafAMb0AGMGgDEjwOgLMPoBjJkARn+AMQBgDAQYMwOMQQBjMMAYAjBmARizAozZAMbsAGMOgDEnwJgLYMwNMOYBGPMCjD8DjPkAxvwAYwGAsSDAWAhgLAwwFgEYiwKMxQDG4gBjCYCxJMBYCmAsDTCWARjLAozlAMbyAGMFgLEiwFgJYKwMMFYBGKsCjNUAxuoAYw2AsSbAWAtgrA0w1gEY6wKMoQBjPYCxPsDYAGBsCDA2AhgbA4xNAMamAGMzgLE5wNgCYGwJMLYCGFsDjG0AxrYAYzuAsT3A2AFg7AgwdgIYOwOMXQDGrgBjN4CxO8DYA2DsCTD2Ahh7A4y/AIx9AMa+AGM/gLE/wDgAYBwIMA4CGAcDjEMAxqEA4zCAcTjA+CvA+BvA+DvAOAJgHAkwjgIYRwOMYwDGsQDjOIBxPMA4AWCcCDBOAhgnA4xTAMapAOM0gHE6wPgHwDgDYJwJMM4CGGcDjHMAxrkA4zyAcT7AuABgXAgwLgIYFwOMSwDGpQDjMoBxOcC4AmBcCTCuAhhXA4xrAMa1AOM6gHE9wLgBYNwIMG4CGDcDjFsAxq0A4zaA8U+AcTvAuANg3Akw7gIYdwOMewDGvQDjPoBxP8B4AGA8CDAeAhgPA4xHAMajAOMxgPE4wHgCYDwJMJ4CGE8DjGcAxrMA4zmA8TzAeAFgvAgwXgIYLwOMVwDGqwDjXwDjNYDxOsB4A2C8CTDeAhhvA4x3AMa7AOM9gPE+wPgAYHwIMD4CGB8DjE8AxqcA4zOA8TnA+AJgfAkwvgIYXwOMbwDGtwDjO4DxPcD4AWCMFPnfb/QBGCMDjFEAxqgAYzSAMTrAGANgjAkwxgIYYwOMcQDGuABjPIAxPsCYAGBMCDAmAhgTA4xJAMZPAMakAGMygDE5wPgpwPgZwPg5wPgFwPglwPgVwPg1wPgNwJgCYPwWYPwOYPweYPwBYEwJMP4IMKYCGFMDjGkAxrQAYzqA8SeAMT3AmAFgzAgw+gKMfgBjJoDRH2AMABgDAcbMAGMQwBgMMIYAjFkAxqwAYzaAMTvAmANgzAkw5gIYcwOMeQDGvADjzwBjPoAxP8BYAGAsCDAWAhgLA4xFAMaiAGMxgLE4wFgCYCwJMJYCGEsDjGUAxrIAYzmAsTzAWAFgrAgwVgIYKwOMVQDGqgBjNYCxOsBYA2CsCTDWAhhrA4x1AMa6AGMowFgPYKwPMDYAGBsCjI0AxsYAYxOAsSnA2AxgbA4wtgAYWwKMrQDG1gBjG4CxLcDYDmBsDzB2ABg7AoydAMbOAGMXgLErwNgNYOwOMPYAGHsCjL0Axt4A4y8AYx+AsS/A2A9g7A8wDgAYBwKMgwDGwQDjEIBxKMA4DGAcDjD+CjD+BjD+DjCOABhHAoyjAMbRAOMYgHEswDgOYBwPME4AGCcCjJMAxskA4xSAcSrAOA1gnA4w/gEwzgAYZwKMswDG2QDjHIBxLsA4D2CcDzAuABgXAoyLAMbFAOMSgHEpwLgMYFwOMK4AGFcCjKsAxtUA4xqAcS3AuA5gXA8wbgAYNwKMmwDGzQDjFoBxK8C4DWD8E2DcDjDuABh3Aoy7AMbdAOMegHEvwLgPYNwPMB4AGA8CjIcAxsMA4xGA8SjAeAxgPA4wngAYTwKMpwDG0wDjGYDxLMB4DmA8DzBeABgvAoyXAMbLAOMVgPEqwPgXwHgNYLwOMN4AGG8CjLcAxtsA4x2A8S7AeA9gvA8wPgAYHwKMjwDGxwDjE4DxKcD4DGB8DjC+ABhfAoyvAMbXAOMbgPEtwPgOYHwPMH4AGCNF+fcbfQDGyABjFIAxKsAYDWCMDjDGABhjAoyxAMbYAGMcgDEuwBgPYIwPMCYAGBMCjIkAxsQAYxKA8ROAMSnAmAxgTA4wfgowfgYwfg4wfgEwfgkwfgUwfg0wfgMwpgAYvwUYvwMYvwcYfwAYUwKMPwKMqQDG1ABjGoAxLcCYDmD8CWBMDzBmABgzAoy+AKMfwJgJYPQHGAMAxkCAMTPAGAQwBgOMIQBjFoAxK8CYDWDMDjDmABhzAoy5AMbcAGMegDEvwPgzwJgPYMwPMBYAGAsCjIUAxsIAYxGAsSjAWAxgLA4wlgAYSwKMpQDG0gBjGYCxLMBYDmAsDzBWABgrAoyVAMbKAGMVgLEqwFgNYKwOMNYAGGsCjLUAxtoAYx2AsS7AGAow1gMY6wOMDQDGhgBjI4CxMcDYBGBsCjA2AxibA4wtAMaWAGMrgLE1wNgGYGwLMLYDGNsDjB0Axo4AYyeAsTPA2AVg7AowdgMYuwOMPQDGngBjL4CxN8D4C8DYB2DsCzD2Axj7A4wDAMaBAOMggHEwwDgEYBwKMA4DGIcDjL8CjL8BjL8DjCMAxpEA4yiAcTTAOAZgHAswjgMYxwOMEwDGiQDjJIBxMsA4BWCcCjBOAxinA4x/AIwzAMaZAOMsgHE2wDgHYJwLMM4DGOcDjAsAxoUA4yKAcTHAuARgXAowLgMYlwOMKwDGlQDjKoBxNcC4BmBcCzCuAxjXA4wbAMaNAOMmgHEzwLgFYNwKMG4DGP8EGLcDjDsAxp0A4y6AcTfAuAdg3Asw7gMY9wOMBwDGgwDjIYDxMMB4BGA8CjAeAxiPA4wnAMaTAOMpgPE0wHgGYDwLMJ4DGM8DjBcAxosA4yWA8TLAeAVgvAow/gUwXgMYrwOMNwDGmwDjLYDxNsB4B2C8CzDeAxjvA4wPAMaHAOMjgPExwPgEYHwKMD4DGJ8DjC8AxpcA4yuA8TXA+AZgfAswvgMY3wOMHwDGSFH//UYfgDEywBgFYIwKMEYDGKMDjDEAxpgAYyyAMTbAGAdgjAswxgMY438EYxrbmJH+eUvhLXOwb0B0506i/s99RY0a6T/eInvcFrYx7Xofu+wT7vrIdjlyuOuj2OUo4a6PGu7HDrs+ml2OFu766HY5erjrY9jlGOGujxl2Odz1sexyrHDXx7bLscNdH8cuxwl3fVy7HDfc9fHscrxw18e3y/HDXZ/ALicId31Cu5ww3PWJ7HKicNcntsuJw12fxC4nCXf9J3b5k3DXJ7XLScNdn8wuJ/O4Puw25y1FJC/92gzw9XXuN4q379f58zfSP7+svef1C3LuN9pH8MbQfXxj95XQsXv+z8Ae/+gf4cf18Xj8w+477HL0/wc/drRwP3a0cD92bJXYvl03tHbb+kWb16/QsE2Dkq1C6zXs4OPxvcO+h+d1kT2uC/t2co/rwn6F3Ivy3/+95/0k//+5Puz7hf0Ocd7ee+8R+vtPiBh2X1Ej/efPSNh1Ybentk2gYoVz/v2WyzsoP+fMUSL995vX//oeybsP5Ed6PAJ9PH4h/G8/RuaQkJC6fqG+mWr7BtcKCAiqFZDZPzCzf0Cgf53a/plD/ELqhNStG+QX6Ovvn7lenaA6AXUz1Q7MVC/4Yz3GflE/3mPsLePHOvsPkbx/dm8bUwKMqQDG1ABjGoAxLcCYDmD8CWBMDzBmABgzAoy+AKMfwJgJYPQHGAMAxkCAMTPAGAQwBgOMIQBjFoAxK8CYDWDMDjDmABhzAoy5AMbcAGMegDEvwPgzwJgPYMwPMBYAGAsCjIUAxsIAYxGAsSjAWAxgLA4wlgAYSwKMpQDG0gBjGYCxLMBYDmAsDzBWABgrAoyVAMbKAGMVgLEqwFgNYKwOMNYAGGsCjLUAxtoAYx2AsS7AGAow1gMY6wOMDQDGhgBjI4CxMcDYBGBsCjA2AxibA4wtAMaWAGMrgLE1wNgGYGwLMLYDGNsDjB0Axo4AYyeAsTPA2AVg7AowdgMYuwOMPQDGngBjL4CxN8D4C8DYB2DsCzD2Axj7A4wDAMaBAOMggHEwwDgEYBwKMA4DGIcDjL8CjL8BjL8DjCMAxpEA4yiAcTTAOAZgHAswjgMYxwOMEwDGiQDjJIBxMsA4BWCcCjBOAxinA4x/AIwzAMaZAOMsgHE2wDgHYJwLMM4DGOcDjAsAxoUA4yKAcTHAuARgXAowLgMYlwOMKwDGlQDjKoBxNcC4BmBcCzCuAxjXA4wbAMaNAOMmgHEzwLgFYNwKMG4DGP8EGLcDjDsAxp0A4y6AcTfAuAdg3Asw7gMY9wOMBwDGgwDjIYDxMMB4BGA8CjAeAxiPA4wnAMaTAOMpgPE0wHgGYDwLMJ4DGM8DjBcAxosA4yWA8TLAeAVgvAow/gUwXgMYrwOMNwDGmwDjLYDxNsB4B2C8CzDeAxjvA4wPAMaHAOMjgPExwPgEYHwKMD4DGJ8DjC8AxpcA4yuA8TXA+AZgfAswvgMY3wOMHwBG5w7/7UYfgDEywBgFYIwKMEYDGKMDjDEAxpgAYyyAMTbAGAdgjAswxgMY4wOMCQDGhABjIoAxMcCYBGD8BGBMCjAmAxiTA4yfAoyfAYyfA4xfAIxfAoxfAYxfA4zfAIwpAMZvAcbvAMbvAcYfAMaUAOOPAGMqgDE1wJgGYEwLMKYDGH8CGNMDjBkAxowAoy/A6AcwZgIY/QHGAIAxEGDMDDAGAYzBAGMIwJgFYMwKMGYDGLMDjDkAxpwAYy6AMTfAmAdgzAsw/gww5gMY8wOMBQDGggBjIYCxMMBYBGAsCjAWAxiLA4wlAMaSAGMpgLE0wFgGYCwLMJYDGMsDjBUAxooAYyWAsTLAWAVgrAowVgMYqwOMNQDGmgBjLYCxNsBYB2CsCzCGAoz1AMb6AGMDgLEhwNgIYGwMMDYBGJsCjM0AxuYAYwuAsSXA2ApgbA0wtgEY2wKM7QDG9gBjB4CxI8DYCWDsDDB2ARi7AozdAMbuAGMPgLEnwNgLYOwNMP4CMPYBGPsCjP0Axv4A4wCAcSDAOAhgHAwwDgEYhwKMwwDG4QDjrwDjbwDj7wDjCIBxJMA4CmAcDTCOARjHAozjAMbxAOMEgHEiwDgJYJwMME4BGKcCjNMAxukA4x8A4wyAcSbAOAtgnA0wzgEY5wKM8wDG+QDjAoBxIcC4CGBcDDAuARiXAozLAMblAOMKgHElwLgKYFwNMK4BGNcCjOsAxvUA4waAcSPAuAlg3AwwbgEYtwKM2wDGPwHG7QDjDoBxJ8C4C2DcDTDuARj3Aoz7AMb9AOMBgPEgwHgIYDwMMB4BGI8CjMcAxuMA4wmA8STAeApgPA0wngEYzwKM5wDG8wDjBYDxIsB4CWC8DDBeARivAox/AYzXAMbrAOMNgPEmwHgLYLwNMN4BGO8CjPcAxvsA4wOA8SHA+AhgfAwwPgEYnwKMzwDG5wDjC4DxJcD4CmB8DTC+ARjfAozvAMb3AOMHgDFS5H+/0QdgjAwwRgEYowKM0QDG6ABjDIAxJsAYC2CMDTDGARjjAozxAMb4AGMCgDEhwJgIYEwMMCYBGD8BGJMCjMkAxuQA46cA42cA4+cA4xcA45cA41cA49cA4zcAYwqA8VuA8TuA8XuA8QeAMSXA+CPAmApgTA0wpgEY0wKM6QDGnwDG9ABjBoAxI8DoCzD6AYyZAEZ/gDEAYAwEGDMDjEEAYzDAGAIwZgEYswKM2QDG7ABjDoAxJ8CYC2DMDTDmARjzAow/A4z5AMb8AGMBgLEgwFgIYCwMMBYBGIsCjMUAxuIAYwmAsSTAWApgLA0wlgEYywKM5QDG8gBjBYCxIsBYCWCsDDBWARirAozVAMbqAGMNgLEmwFgLYKwNMNYBGOsCjKEAYz2AsT7A2ABgbAgwNgIYGwOMTQDGpgBjM4CxOcDYAmBsCTC2AhhbA4xtAMa2AGM7gLE9wNgBYOwIMHYCGDsDjF0Axq4AYzeAsTvA2ANg7Akw9gIYewOMvwCMfQDGvgBjP4CxP8A4AGAcCDAOAhgHA4xDAMahAOMwgHE4wPgrwPgbwPg7wDgCYBwJMI4CGEcDjGMAxrEA4ziAcTzAOAFgnAgwTgIYJwOMUwDGqQDjNIBxOsD4B8A4A2CcCTDOAhhnA4xzAMa5AOM8gHE+wLgAYFwIMC4CGBcDjEsAxqUA4zKAcTnAuAJgXAkwrgIYVwOMawDGtQDjOoBxPcC4AWDcCDBuAhg3A4xbAMatAOM2gPFPgHE7wLgDYNwJMO4CGHcDjHsAxr0A4z6AcT/AeABgPAgwHgIYDwOMRwDGowDjMYDxOMB4AmA8CTCeAhhPA4xnAMazAOM5gPE8wHgBYLwIMF4CGC8DjFcAxqsA418A4zWA8TrAeANgvAkw3gIYbwOMdwDGuwDjPYDxPsD4AGB8CDA+AhgfA4xPAManAOMzgPE5wPgCYHwJML4CGF8DjG8AxrcA4zuA8T3A+AFgjBTl32/0ARgjA4xRAMaoAGM0gDE6wBgDYIwJMMYCGGMDjHEAxrgAYzyAMT7AmABgTAgwJgIYEwOMSQDGTwDGpABjMoAxOcD4KcD4GcD4OcD4BcD4JcD4FcD4NcD4DcCYAmD8FmD8DmD8HmD8AWBMCTD+CDCmAhhTA4xpAMa0AGM6gPEngDE9wJgBYMwIMPoCjH4AYyaA0R9gDAAYAwHGzABjEMAYDDCGAIxZAMasAGM2gDE7wJgDYMwJMOYCGHMDjHkAxrwA488AYz6AMT/AWABgLAgwFgIYCwOMRQDGogBjMYCxOMBYAmAsCTCWAhhLA4xlAMayAGM5gLE8wFgBYKwIMFYCGCsDjFUAxqoAYzWAsTrAWANgrAkw1gIYawOMdQDGugBjKMBYD2CsDzA2ABgbAoyNAMbGAGMTgLEpwNgMYGwOMLYAGFsCjK0AxtYAYxuAsS3A2A5gbA8wdgAYOwKMnQDGzgBjF4CxK8DYDWDsDjD2ABh7Aoy9AMbeAOMvAGMfgLEvwNgPYOwPMA4AGAcCjIMAxsEA4xCAcSjAOAxgHA4w/gow/gYw/g4wjgAYRwKMowDG0QDjGIBxLMA4DmAcDzBOABgnAoyTAMbJAOMUgHEqwDgNYJwOMP4BMM4AGGcCjLMAxtkA4xyAcS7AOA9gnA8wLgAYFwKMiwDGxQDjEoBxKcC4DGBcDjCuABhXAoyrAMbVAOMagHEtwLgOYFwPMG4AGDcCjJsAxs0A4xaAcSvAuA1g/BNg3A4w7gAYdwKMuwDG3QDjHoBxL8C4D2DcDzAeABgPAoyHAMbDAOMRgPEowHgMYDwOMJ4AGE8CjKcAxtMA4xmA8SzAeA5gPA8wXgAYLwKMlwDGywDjFYDxKsD4F8B4DWC8DjDeABhvAoy3AMbbAOMdgPEuwHgPYLwPMD4AGB8CjI8AxscA4xOA8SnA+AxgfA4wvgAYXwKMrwDG1wDjG4DxLcD4DmB8DzB+ABgjRf33G30AxsgAYxSAMSrAGA1gjA4wxgAYYwKMsQDG2ABjHIAxLsAYD2CM70Wjj4cxsn3bX/cfoH6yyzEj/fOWwlvnCKrnF925k6j/c1/Oxys93+J4eML+G+e6sP/MJ+o/tqjetgX4ZnLuN5q379f5c0P3kSzSR7QHhdb7SPa/H5MY3r/fv38Nhv0ai273HfbjRPN4rGKF/dx78efD88f2sWJ5/JiR7Oco7NtJI/3zFsvj22G/VsPcce0s4f87z29HDfd94nncHj2Cc6fw8rljeFhSeFwO+/Gcxz62fTuhehDjP88a08PpbVu0cLZo4R4Xx5XYvh3atGGbcs1Cm9Vp1bFFm9C6RZvX9/H43mHfw/M6z//ZRI7geue/DfvZuRflv79P2H/jeZ9h/91H+hnL5PzfL0YEBs+3FB7f9vxVHNP7Hr+PdM6//9SM7XGO8L8q43nc7vm7JPZHOKPn/w3C7jvscuwIfuz3kbz7OMT5Xx6HOBFY4vw/fhzieGyscNY4HrfH9LgucrizeP7JHsfjtvC/vr33oSOPt8gf4b7D7svfN3NAQGhQplA/f79avplCagcH+gYE1s4c7BfsFxgcWDdTsL9/aHBAcFBI7ZAg3xC/AP9Qv3qBIf717M4CP8K7ox/jzD5ePHNmyJkje/HMQZAzR/HimYMhZ47qxTOHQM4czYtnzgI5c3Qvnjkr5MwxvHjmbJAz+0b13pmzQ86cwYtnzuHCM+d04ZlzufDMuV145jwuPHNeF575ZxeeOZ8Lz5zfhWcu4MIzF3ThmQu58MyFXXjmIi48c1EXnrmYC89c3IVnLuHCM5d04ZlLufDMpV145jIuPHNZF565nAvPXN6FZ67gwjNXdOGZK7nwzJVdeOYqLjxzVReeuZoLz1zdhWeu4cIz13ThmWu58My1XXjmOi48c10XnjnUhWeu58Iz13fhmRu48MwNXXjmRi48c2MXnrmJC8/c1IVnbubCMzd34ZlbuPDMLV145lYuPHNrF565jQvP3NaFZ27nwjO3d+GZO7jwzB1deOZOLjxzZxeeuYsLz9zVhWfu5sIzd3fhmXu48Mw9XXjmXi48c28XnvkXF565jwvP3NeFZ+7nwjP3d+GZB7jwzANdeOZBLjzzYBeeeYgLzzzUhWce5sIzD3fhmX914Zl/c+GZf3fhmUe48MwjXXjmUS4882gXnnmMC8881oVnHufCM4934ZknuPDME1145kkuPPNkF555igvPPNWFZ57mwjNPd+GZ/3DhmWe48MwzIWf28+KZZ7nw53k25MzefI2fOS78eZ7rwjPPc+GZ57vwzAtceOaFLjzzIheeebELz7zEhWde6sIzL3PhmZe78MwrXHjmlS488yoXnnm1C8+8xoVnXuvCM69z4ZnXu/DMG1x45o0uPPMmF555swvPvMWFZ97qwjNvc+GZ/3Thmbe78Mw7XHjmnS488y4Xnnm3C8+8x4Vn3uvCM+9z4Zn3u/DMB1x45oMuPPMhF575sAvPfMSFZz7qwjMfc+GZj7vwzCdceOaTLjzzKRee+bQLz3zGhWc+68Izn3Phmc+78MwXXHjmiy488yXImTN58cyXXfjzfMWFZ77qwjP/5cIzX3Phma+78Mw3IGeOGcl7Z74JOXMsL575FuTMsb145tuQM8fx4pnvQM4c14tnvgs5czwvnvke5MzxvXjm+5AzJ/DimR9AzpzQi2d+CDlzIi+e+RHkzIm9eObHkDMn8eKZn0DO/IkXz/wUcuakXjzzM8iZk3nxzM8hZ07uxTO/gJz5Uy+e+SXkzJ958cyvIGf+3Itnfg058xdePPMbyJm/9OKZ30LO/JUXz/wOcuavvXjm95Azf+PFM3+AnDmFF88cKRrjzN968cw+kDN/58UzR4ac+XsvnjmKF8/so/uIYveVIOo/5/exx8C5zblaP2Sk6Mp5Plrn36Gcf5dx/p3C+bi983Fs5+O6zsc5nY/7OR8Hcz4u5HycxPm4gfP3aOfvlc7fs5y/dzjvhzvvlzrvpznvtzh/jjt/rjn/n3f+v5dCOb8vnF8nzuP2g0qpflSpVGqVRqVV6dRPKr3KoDI6j4nyU5mcx1oFqECVWQWpYBWisqisKpvKrnKonPbzlFvlUXnVzyqfyq8KqIKqkCqsiqiiqpgqrkqokqqUKq3KqLKqnCqvKqiKqpKqrKqoqqqaqq5qqJqqlqqt6qi6KlTVU/VVA9VQNVKNVRPVVDVTzVUL1VK1Uq1VG9VWtVPtVQfVUXVSnVUX1VV1U91VD9VT9VK91S+qj+qr+qn+aoAaqAapwWqIGqqGqeHqV/Wb+l2NUCPVKDVajVFj1Tg1Xk1QE9UkNVlNUVPVNDVd/aFmqJlqlpqt5qi5ap6arxaohWqRWqyWqKVqmVquVqiVapVardaotWqdWq82qI1qk9qstqitapv6U21XO9ROtUvtVnvUXrVP7VcH1EF1SB1WR9RRdUwdVyfUSXVKnVZn1Fl1Tp1XF9RFdUldVlfUVfWXuqauqxvqprqlbqs76q66p+6rB+qheqQeqyfqqXqmnqsX6qV6pV6rN+qteqfeqw/K+c3voyKrKCqqiqaiqxgqpoqlYqs4Kq6Kp+KrBCqhSqQSqyTqE5VUJVPJ1afqM/W5+kJ9qb5SX6tvVAr1rfpOfa9+UCnVjyqVSq3SqLQqnfpJpVcZVEbl/E/NT2VS/ipABarMKkgFqxCVRWVV2VR2lUPlVLlUbpVH5VU/q3wqvyqgCqpCqrAqooqqYqq4KqFKqlKqtCqjyqpyqryqoCqqSqqyqqKqqmqquqqhaqpaqraqo+qqUFVP1VcNVEPVSDVWTVRT1Uw1Vy1US9VKtVZtVFvVTrVXHVRH1Ul1Vl1UV9VNdVc9VE/VS/VWv6g+qq/qp/qrAWqgGqQGqyFqqBqmhqtf1W/qdzVCjVSj1Gg1Ro1V49R4NUFNVJPUZDVFTVXT1HT1h5qhZqpZaraao+aqeWq+WqAWqkVqsVqilqplarlaoVaqVWq1WqPWqnVqvdqgNqpNarPaoraqbepPtV3tUDvVLrVb7VF71T61Xx1QB9UhdVgdUUfVMXVcnVAn1Sl1Wp1RZ9U5dV5dUBfVJXVZXVFX1V/qmrqubqib6pa6re6ou+qeuq8eqIfqkXqsnqin6pl6rl6ol+qVeq3eqLfqnXqvPijnD34fFVlFUVFVNBVdxVAxVSwVW8VRcVU8FV8lUAlVIpVYJVGfqKQqmUquPlWfqc/VF+pL9ZX6Wn2jUqhv1Xfqe/WDSql+VKlUapVGpVXp1E8qvcqgMipf5acyKX8VoAJVZhWkglWIyqKyqmwqu8qhcqpcKrfKo/Kqn1U+lV8VUAVVIVVYFVFFVTFVXJVQJVUpVVqVUWVVOVVeVVAVVSVVWVVRVVU1VV3VUDVVLVVb1VF1Vaiqp+qrBqqhaqQaqyaqqWqmmqsWqqVqpVqrNqqtaqfaqw6qo+qkOqsuqqvqprqrHqqn6qV6q19UH9VX9VP91QA1UA1Sg9UQNVQNU8PVr+o39bsaoUaqUWq0GqPGqnFqvJqgJqpJarKaoqaqaWq6+kPNUDPVLDVbzVFz1Tw1Xy1QC9UitVgtUUvVMrVcrVAr1Sq1Wq1Ra9U6tV5tUBvVJrVZbVFb1Tb1p9qudqidapfarfaovWqf2q8OqIPqkDqsjqij6pg6rk6ok+qUOq3OqLPqnDqvLqiL6pK6rK6oq+ovdU1dVzfUTXVL3VZ31F11T91XD9RD9Ug9Vk/UU/VMPVcv1Ev1Sr1Wb9Rb9U69Vx+U806/j4qsoqioKpqKrmKomCqWiq3iqLgqnoqvEqiEKpFKrJKoT1RSlUwlV5+qz9Tn6gv1pfpKfa2+USnUt+o79b36QaVUP6pUKrVKo9KqdOonlV5lUBmVr/JTmZS/ClCBKrMKUsEqRGVRWVU2lV3lUDlVLpVb5VF51c8qn8qvCqiCqpAqrIqooqqYKq5KqJKqlCqtyqiyqpwqryqoiqqSqqyqqKqqmqquaqiaqpaqreqouipU1VP1VQPVUDVSjVUT1VQ1U81VC9VStVKtVRvVVrVT7VUH1VF1Up1VF9VVdVPdVQ/VU/VSvdUvqo/qq/qp/mqAGqgGqcFqiBqqhqnh6lf1m/pdjVAj1Sg1Wo1RY9U4NV5NUBPVJDVZTVFT1TQ1Xf2hZqiZapaareaouWqemq8WqIVqkVqslqilaplarlaolWqVWq3WqLVqnVqvNqiNapParLaorWqb+lNtVzvUTrVL7VZ71F61T+1XB9RBdUgdVkfUUXVMHVcn1El1Sp1WZ9RZdU6dVxfURXVJXVZX1FX1l7qmrqsb6qa6pW6rO+quuqfuqwfqoXqkHqsn6ql6pp6rF+qleqVeqzfqrXqn3qsPyvkLv4+KrKKoqCqaiq5iqJgqloqt4qi4Kp6K7/Hxg4O2gbouswpSwSpEZVFZVTaVXeVQOZ2PUarcKo/Kq35W+VR+VUAVVIVUYVVEFVXFVHFVQpVUpVRpVUaVVeVUeVVBVVSVVGVVRVVV1VR1VUPVVLVUbVVH1VWhqp6qrxqohqqRaqyaqKaqmWquWqiWqpVqrdqotqqdaq86qI6qk+qsuqiuqpvqrnqonqqX6q1+UX1UX9VP9VcD1EA1SA1WQ9RQNUwNV85r2Duv6e68xrnzmt/Oa2A7rwntvEay85rBzmvoOq8p67zGqvOao85rcDqvSem8RqPzmoXOa/g5r2nnvMab85pnzmuAOa+J5bxGlPOaSc5rCDmvqeO8xozzmivOa5AsVM5rVDiv2eC8hoHznP7Oc9w7z/nuPAe685zgznNkO88Z7TyHsvOcws5z7DrPOes8B6vznKTOc3Q6z1npPIej85yGznP8Oc955zwHnPOcaM5zhDnPmeU8h5TznErOcww5z7njPAeN85wsznOUOM/Z4TyHhfOcDs5zHDhf8+98DbzzNeHO10g7XzPsfA2t8zWlztdYOl9z6HwNnvM1ac7XaDlfs+R8DY/zNS3O13g4X/PgfA2A8znxzueIO58z7XwOsfM5tc7nmDqfc+l8DqLzOXnO56g5n7PlfA6T8zk9zue4OJ/z4XwOhPM5Ac6/kTv/Zuz8G6rzb4rOv7E5/+bk/BuM828SzsfonQ+yOR/DdT6m6XyMz+ef305/f1zLefvStlabNqFNW7RJ0aZ5ilp166Zo37BNgxTN24W2qtekeftI/x9GUYzrHx8GAA==",
|
|
1294
|
-
"debug_symbols": "1ZndasJAEIXfZa+D7PwkO5tXKb1IWwuCqGgoFPHdG3+yGrolsKWFc6UL5+ycccd8ITm69fa161fbzcG1R0fk2qejO+y6zXl56Lt971pfueXmbfg8Ve59tV66liycqm86quNNSUZJGygjZTa5aVn0YWOqcxuTNPW4NSnHif65csSguQU0t4LmrkFzN6C5A2huA80dMXOzB80NyksG5SWD8pJBecmgvGRQXjIoLxmUlwzKSwHlpYDyUkB5KaC8FFBeCigvBZSXAspLAeWlgPJSQXmpoLxUUF4qKC/133ipFMbcGsKvc2d5SaLJpcYz6ZsktvDQaWguBbJgo1D71LGPMwWMdOzZBudd7f2lRPj7EllcUOSxc/ZcT0qcTdlrNXu5m2KYnQwZx5Qa3yS16jXWIn9DT2ypeX4YqRhHG5fZpMymZbb8cNr93xLJks3ST9LM2lgytlBmszJbLLDFRf654cyUDDYps/1wbt7SuQWbnNuw+Oj2q+5lvTy/zxyW/efu+vX0BQ=="
|
|
1295
|
-
},
|
|
1296
|
-
{
|
|
1297
|
-
"name": "constructor",
|
|
1298
|
-
"function_type": "Secret",
|
|
1299
|
-
"is_internal": false,
|
|
1300
|
-
"abi": {
|
|
1301
|
-
"parameters": [
|
|
1302
|
-
{
|
|
1303
|
-
"name": "inputs",
|
|
1304
|
-
"type": {
|
|
1305
|
-
"kind": "struct",
|
|
1306
|
-
"path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
|
|
1307
|
-
"fields": [
|
|
1308
|
-
{
|
|
1309
|
-
"name": "call_context",
|
|
1310
|
-
"type": {
|
|
1311
|
-
"kind": "struct",
|
|
1312
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
1313
|
-
"fields": [
|
|
1314
|
-
{
|
|
1315
|
-
"name": "msg_sender",
|
|
1316
|
-
"type": {
|
|
1317
|
-
"kind": "struct",
|
|
1318
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1319
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1320
|
-
}
|
|
1321
|
-
},
|
|
1322
|
-
{
|
|
1323
|
-
"name": "storage_contract_address",
|
|
1324
|
-
"type": {
|
|
1325
|
-
"kind": "struct",
|
|
1326
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1327
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1328
|
-
}
|
|
1329
|
-
},
|
|
1330
|
-
{
|
|
1331
|
-
"name": "portal_contract_address",
|
|
1332
|
-
"type": {
|
|
1333
|
-
"kind": "struct",
|
|
1334
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1335
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1336
|
-
}
|
|
1337
|
-
},
|
|
1338
|
-
{
|
|
1339
|
-
"name": "function_selector",
|
|
1340
|
-
"type": {
|
|
1341
|
-
"kind": "struct",
|
|
1342
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1343
|
-
"fields": [
|
|
1344
|
-
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1345
|
-
]
|
|
1346
|
-
}
|
|
1347
|
-
},
|
|
1348
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1349
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1350
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1351
|
-
{
|
|
1352
|
-
"name": "start_side_effect_counter",
|
|
1353
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1354
|
-
}
|
|
1355
|
-
]
|
|
1356
|
-
}
|
|
1357
|
-
},
|
|
1358
|
-
{
|
|
1359
|
-
"name": "historical_header",
|
|
1360
|
-
"type": {
|
|
1361
|
-
"kind": "struct",
|
|
1362
|
-
"path": "aztec::protocol_types::header::Header",
|
|
1363
|
-
"fields": [
|
|
1364
|
-
{
|
|
1365
|
-
"name": "last_archive",
|
|
1366
|
-
"type": {
|
|
1367
|
-
"kind": "struct",
|
|
1368
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1369
|
-
"fields": [
|
|
1370
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1371
|
-
{
|
|
1372
|
-
"name": "next_available_leaf_index",
|
|
1373
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1374
|
-
}
|
|
1375
|
-
]
|
|
1376
|
-
}
|
|
1377
|
-
},
|
|
1378
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1379
|
-
{
|
|
1380
|
-
"name": "state",
|
|
1381
|
-
"type": {
|
|
1382
|
-
"kind": "struct",
|
|
1383
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
1384
|
-
"fields": [
|
|
1385
|
-
{
|
|
1386
|
-
"name": "l1_to_l2_message_tree",
|
|
1387
|
-
"type": {
|
|
1388
|
-
"kind": "struct",
|
|
1389
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1390
|
-
"fields": [
|
|
1391
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1392
|
-
{
|
|
1393
|
-
"name": "next_available_leaf_index",
|
|
1394
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1395
|
-
}
|
|
1396
|
-
]
|
|
1397
|
-
}
|
|
1398
|
-
},
|
|
1399
|
-
{
|
|
1400
|
-
"name": "partial",
|
|
1401
|
-
"type": {
|
|
1402
|
-
"kind": "struct",
|
|
1403
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
1404
|
-
"fields": [
|
|
1405
|
-
{
|
|
1406
|
-
"name": "note_hash_tree",
|
|
1407
|
-
"type": {
|
|
1408
|
-
"kind": "struct",
|
|
1409
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1410
|
-
"fields": [
|
|
1411
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1412
|
-
{
|
|
1413
|
-
"name": "next_available_leaf_index",
|
|
1414
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1415
|
-
}
|
|
1416
|
-
]
|
|
1417
|
-
}
|
|
1418
|
-
},
|
|
1419
|
-
{
|
|
1420
|
-
"name": "nullifier_tree",
|
|
1421
|
-
"type": {
|
|
1422
|
-
"kind": "struct",
|
|
1423
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1424
|
-
"fields": [
|
|
1425
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1426
|
-
{
|
|
1427
|
-
"name": "next_available_leaf_index",
|
|
1428
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1429
|
-
}
|
|
1430
|
-
]
|
|
1431
|
-
}
|
|
1432
|
-
},
|
|
1433
|
-
{
|
|
1434
|
-
"name": "contract_tree",
|
|
1435
|
-
"type": {
|
|
1436
|
-
"kind": "struct",
|
|
1437
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1438
|
-
"fields": [
|
|
1439
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1440
|
-
{
|
|
1441
|
-
"name": "next_available_leaf_index",
|
|
1442
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1443
|
-
}
|
|
1444
|
-
]
|
|
1445
|
-
}
|
|
1446
|
-
},
|
|
1447
|
-
{
|
|
1448
|
-
"name": "public_data_tree",
|
|
1449
|
-
"type": {
|
|
1450
|
-
"kind": "struct",
|
|
1451
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1452
|
-
"fields": [
|
|
1453
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1454
|
-
{
|
|
1455
|
-
"name": "next_available_leaf_index",
|
|
1456
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1457
|
-
}
|
|
1458
|
-
]
|
|
1459
|
-
}
|
|
1460
|
-
}
|
|
1461
|
-
]
|
|
1462
|
-
}
|
|
1463
|
-
}
|
|
1464
|
-
]
|
|
1465
|
-
}
|
|
1466
|
-
},
|
|
1467
|
-
{
|
|
1468
|
-
"name": "global_variables",
|
|
1469
|
-
"type": {
|
|
1470
|
-
"kind": "struct",
|
|
1471
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
1472
|
-
"fields": [
|
|
1473
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1474
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
1475
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
1476
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
1477
|
-
{
|
|
1478
|
-
"name": "coinbase",
|
|
1479
|
-
"type": {
|
|
1480
|
-
"kind": "struct",
|
|
1481
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1482
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1483
|
-
}
|
|
1484
|
-
},
|
|
1485
|
-
{
|
|
1486
|
-
"name": "fee_recipient",
|
|
1487
|
-
"type": {
|
|
1488
|
-
"kind": "struct",
|
|
1489
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1490
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1491
|
-
}
|
|
1492
|
-
}
|
|
1493
|
-
]
|
|
1494
|
-
}
|
|
1495
|
-
}
|
|
1496
|
-
]
|
|
1497
|
-
}
|
|
1498
|
-
},
|
|
1499
|
-
{
|
|
1500
|
-
"name": "contract_deployment_data",
|
|
1501
|
-
"type": {
|
|
1502
|
-
"kind": "struct",
|
|
1503
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
1504
|
-
"fields": [
|
|
1505
|
-
{
|
|
1506
|
-
"name": "public_key",
|
|
1507
|
-
"type": {
|
|
1508
|
-
"kind": "struct",
|
|
1509
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1510
|
-
"fields": [
|
|
1511
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
1512
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
1513
|
-
]
|
|
1514
|
-
}
|
|
1515
|
-
},
|
|
1516
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
1517
|
-
{
|
|
1518
|
-
"name": "contract_class_id",
|
|
1519
|
-
"type": {
|
|
1520
|
-
"kind": "struct",
|
|
1521
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
1522
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1523
|
-
}
|
|
1524
|
-
},
|
|
1525
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
1526
|
-
{
|
|
1527
|
-
"name": "portal_contract_address",
|
|
1528
|
-
"type": {
|
|
1529
|
-
"kind": "struct",
|
|
1530
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1531
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1532
|
-
}
|
|
1533
|
-
}
|
|
1534
|
-
]
|
|
1535
|
-
}
|
|
1536
|
-
},
|
|
1537
|
-
{
|
|
1538
|
-
"name": "private_global_variables",
|
|
1539
|
-
"type": {
|
|
1540
|
-
"kind": "struct",
|
|
1541
|
-
"path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
|
|
1542
|
-
"fields": [
|
|
1543
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1544
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
1545
|
-
]
|
|
1546
|
-
}
|
|
1547
|
-
}
|
|
1548
|
-
]
|
|
1549
|
-
},
|
|
1550
|
-
"visibility": "private"
|
|
1551
|
-
}
|
|
1552
|
-
],
|
|
1553
|
-
"param_witnesses": { "inputs": [{ "start": 0, "end": 36 }] },
|
|
1554
|
-
"return_type": {
|
|
1555
|
-
"abi_type": {
|
|
1556
|
-
"kind": "struct",
|
|
1557
|
-
"path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
1558
|
-
"fields": [
|
|
1559
|
-
{
|
|
1560
|
-
"name": "call_context",
|
|
1561
|
-
"type": {
|
|
1562
|
-
"kind": "struct",
|
|
1563
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
1564
|
-
"fields": [
|
|
1565
|
-
{
|
|
1566
|
-
"name": "msg_sender",
|
|
1567
|
-
"type": {
|
|
1568
|
-
"kind": "struct",
|
|
1569
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1570
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1571
|
-
}
|
|
1572
|
-
},
|
|
1573
|
-
{
|
|
1574
|
-
"name": "storage_contract_address",
|
|
1575
|
-
"type": {
|
|
1576
|
-
"kind": "struct",
|
|
1577
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1578
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1579
|
-
}
|
|
1580
|
-
},
|
|
1581
|
-
{
|
|
1582
|
-
"name": "portal_contract_address",
|
|
1583
|
-
"type": {
|
|
1584
|
-
"kind": "struct",
|
|
1585
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1586
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1587
|
-
}
|
|
1588
|
-
},
|
|
1589
|
-
{
|
|
1590
|
-
"name": "function_selector",
|
|
1591
|
-
"type": {
|
|
1592
|
-
"kind": "struct",
|
|
1593
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1594
|
-
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
1595
|
-
}
|
|
1596
|
-
},
|
|
1597
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1598
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1599
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1600
|
-
{
|
|
1601
|
-
"name": "start_side_effect_counter",
|
|
1602
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1603
|
-
}
|
|
1604
|
-
]
|
|
1605
|
-
}
|
|
1606
|
-
},
|
|
1607
|
-
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
1608
|
-
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
1609
|
-
{
|
|
1610
|
-
"name": "max_non_revertible_side_effect_counter",
|
|
1611
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1612
|
-
},
|
|
1613
|
-
{
|
|
1614
|
-
"name": "read_requests",
|
|
1615
|
-
"type": {
|
|
1616
|
-
"kind": "array",
|
|
1617
|
-
"length": 32,
|
|
1618
|
-
"type": {
|
|
1619
|
-
"kind": "struct",
|
|
1620
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1621
|
-
"fields": [
|
|
1622
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
1623
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1624
|
-
]
|
|
1625
|
-
}
|
|
1626
|
-
}
|
|
1627
|
-
},
|
|
1628
|
-
{
|
|
1629
|
-
"name": "nullifier_key_validation_requests",
|
|
1630
|
-
"type": {
|
|
1631
|
-
"kind": "array",
|
|
1632
|
-
"length": 1,
|
|
1633
|
-
"type": {
|
|
1634
|
-
"kind": "struct",
|
|
1635
|
-
"path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
|
|
1636
|
-
"fields": [
|
|
1637
|
-
{
|
|
1638
|
-
"name": "public_key",
|
|
1639
|
-
"type": {
|
|
1640
|
-
"kind": "struct",
|
|
1641
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1642
|
-
"fields": [
|
|
1643
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
1644
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
1645
|
-
]
|
|
1646
|
-
}
|
|
1647
|
-
},
|
|
1648
|
-
{
|
|
1649
|
-
"name": "secret_key",
|
|
1650
|
-
"type": {
|
|
1651
|
-
"kind": "struct",
|
|
1652
|
-
"path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
|
|
1653
|
-
"fields": [
|
|
1654
|
-
{ "name": "high", "type": { "kind": "field" } },
|
|
1655
|
-
{ "name": "low", "type": { "kind": "field" } }
|
|
1656
|
-
]
|
|
1657
|
-
}
|
|
1658
|
-
}
|
|
1659
|
-
]
|
|
1660
|
-
}
|
|
1661
|
-
}
|
|
1662
|
-
},
|
|
1663
|
-
{
|
|
1664
|
-
"name": "new_commitments",
|
|
1665
|
-
"type": {
|
|
1666
|
-
"kind": "array",
|
|
1667
|
-
"length": 16,
|
|
1668
|
-
"type": {
|
|
1669
|
-
"kind": "struct",
|
|
1670
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
1671
|
-
"fields": [
|
|
1672
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
1673
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1674
|
-
]
|
|
1675
|
-
}
|
|
1676
|
-
}
|
|
1677
|
-
},
|
|
1678
|
-
{
|
|
1679
|
-
"name": "new_nullifiers",
|
|
1680
|
-
"type": {
|
|
1681
|
-
"kind": "array",
|
|
1682
|
-
"length": 16,
|
|
1683
|
-
"type": {
|
|
1684
|
-
"kind": "struct",
|
|
1685
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
1686
|
-
"fields": [
|
|
1687
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
1688
|
-
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
1689
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1690
|
-
]
|
|
1691
|
-
}
|
|
1692
|
-
}
|
|
1693
|
-
},
|
|
1694
|
-
{
|
|
1695
|
-
"name": "private_call_stack_hashes",
|
|
1696
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1697
|
-
},
|
|
1698
|
-
{
|
|
1699
|
-
"name": "public_call_stack_hashes",
|
|
1700
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
1701
|
-
},
|
|
1702
|
-
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1703
|
-
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
1704
|
-
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1705
|
-
{
|
|
1706
|
-
"name": "unencrypted_logs_hash",
|
|
1707
|
-
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
1708
|
-
},
|
|
1709
|
-
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1710
|
-
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
1711
|
-
{
|
|
1712
|
-
"name": "historical_header",
|
|
1713
|
-
"type": {
|
|
1714
|
-
"kind": "struct",
|
|
1715
|
-
"path": "aztec::protocol_types::header::Header",
|
|
1716
|
-
"fields": [
|
|
1717
|
-
{
|
|
1718
|
-
"name": "last_archive",
|
|
1719
|
-
"type": {
|
|
1720
|
-
"kind": "struct",
|
|
1721
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1722
|
-
"fields": [
|
|
1723
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1724
|
-
{
|
|
1725
|
-
"name": "next_available_leaf_index",
|
|
1726
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1727
|
-
}
|
|
1728
|
-
]
|
|
1729
|
-
}
|
|
1730
|
-
},
|
|
1731
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1732
|
-
{
|
|
1733
|
-
"name": "state",
|
|
1734
|
-
"type": {
|
|
1735
|
-
"kind": "struct",
|
|
1736
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
1737
|
-
"fields": [
|
|
1738
|
-
{
|
|
1739
|
-
"name": "l1_to_l2_message_tree",
|
|
1740
|
-
"type": {
|
|
1741
|
-
"kind": "struct",
|
|
1742
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1743
|
-
"fields": [
|
|
1744
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1745
|
-
{
|
|
1746
|
-
"name": "next_available_leaf_index",
|
|
1747
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1748
|
-
}
|
|
1749
|
-
]
|
|
1750
|
-
}
|
|
1751
|
-
},
|
|
1752
|
-
{
|
|
1753
|
-
"name": "partial",
|
|
1754
|
-
"type": {
|
|
1755
|
-
"kind": "struct",
|
|
1756
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
1757
|
-
"fields": [
|
|
1758
|
-
{
|
|
1759
|
-
"name": "note_hash_tree",
|
|
1760
|
-
"type": {
|
|
1761
|
-
"kind": "struct",
|
|
1762
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1763
|
-
"fields": [
|
|
1764
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1765
|
-
{
|
|
1766
|
-
"name": "next_available_leaf_index",
|
|
1767
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1768
|
-
}
|
|
1769
|
-
]
|
|
1770
|
-
}
|
|
1771
|
-
},
|
|
1772
|
-
{
|
|
1773
|
-
"name": "nullifier_tree",
|
|
1774
|
-
"type": {
|
|
1775
|
-
"kind": "struct",
|
|
1776
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1777
|
-
"fields": [
|
|
1778
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1779
|
-
{
|
|
1780
|
-
"name": "next_available_leaf_index",
|
|
1781
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1782
|
-
}
|
|
1783
|
-
]
|
|
1784
|
-
}
|
|
1785
|
-
},
|
|
1786
|
-
{
|
|
1787
|
-
"name": "contract_tree",
|
|
1788
|
-
"type": {
|
|
1789
|
-
"kind": "struct",
|
|
1790
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1791
|
-
"fields": [
|
|
1792
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1793
|
-
{
|
|
1794
|
-
"name": "next_available_leaf_index",
|
|
1795
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1796
|
-
}
|
|
1797
|
-
]
|
|
1798
|
-
}
|
|
1799
|
-
},
|
|
1800
|
-
{
|
|
1801
|
-
"name": "public_data_tree",
|
|
1802
|
-
"type": {
|
|
1803
|
-
"kind": "struct",
|
|
1804
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1805
|
-
"fields": [
|
|
1806
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1807
|
-
{
|
|
1808
|
-
"name": "next_available_leaf_index",
|
|
1809
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1810
|
-
}
|
|
1811
|
-
]
|
|
1812
|
-
}
|
|
1813
|
-
}
|
|
1814
|
-
]
|
|
1815
|
-
}
|
|
1816
|
-
}
|
|
1817
|
-
]
|
|
1818
|
-
}
|
|
1819
|
-
},
|
|
1820
|
-
{
|
|
1821
|
-
"name": "global_variables",
|
|
1822
|
-
"type": {
|
|
1823
|
-
"kind": "struct",
|
|
1824
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
1825
|
-
"fields": [
|
|
1826
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1827
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
1828
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
1829
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
1830
|
-
{
|
|
1831
|
-
"name": "coinbase",
|
|
1832
|
-
"type": {
|
|
1833
|
-
"kind": "struct",
|
|
1834
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1835
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1836
|
-
}
|
|
1837
|
-
},
|
|
1838
|
-
{
|
|
1839
|
-
"name": "fee_recipient",
|
|
1840
|
-
"type": {
|
|
1841
|
-
"kind": "struct",
|
|
1842
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1843
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1844
|
-
}
|
|
1845
|
-
}
|
|
1846
|
-
]
|
|
1847
|
-
}
|
|
1848
|
-
}
|
|
1849
|
-
]
|
|
1850
|
-
}
|
|
1851
|
-
},
|
|
1852
|
-
{
|
|
1853
|
-
"name": "contract_deployment_data",
|
|
1854
|
-
"type": {
|
|
1855
|
-
"kind": "struct",
|
|
1856
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
1857
|
-
"fields": [
|
|
1858
|
-
{
|
|
1859
|
-
"name": "public_key",
|
|
1860
|
-
"type": {
|
|
1861
|
-
"kind": "struct",
|
|
1862
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
1863
|
-
"fields": [
|
|
1864
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
1865
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
1866
|
-
]
|
|
1867
|
-
}
|
|
1868
|
-
},
|
|
1869
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
1870
|
-
{
|
|
1871
|
-
"name": "contract_class_id",
|
|
1872
|
-
"type": {
|
|
1873
|
-
"kind": "struct",
|
|
1874
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
1875
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1876
|
-
}
|
|
1877
|
-
},
|
|
1878
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
1879
|
-
{
|
|
1880
|
-
"name": "portal_contract_address",
|
|
1881
|
-
"type": {
|
|
1882
|
-
"kind": "struct",
|
|
1883
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1884
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1885
|
-
}
|
|
1886
|
-
}
|
|
1887
|
-
]
|
|
1888
|
-
}
|
|
1889
|
-
},
|
|
1890
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
1891
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
1892
|
-
]
|
|
1893
|
-
},
|
|
1894
|
-
"visibility": "public"
|
|
1895
|
-
},
|
|
1896
|
-
"return_witnesses": [
|
|
1897
|
-
37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
|
|
1898
|
-
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
|
|
1899
|
-
91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
|
|
1900
|
-
115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136,
|
|
1901
|
-
137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158,
|
|
1902
|
-
159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
|
|
1903
|
-
181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
|
|
1904
|
-
203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
|
|
1905
|
-
225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243
|
|
1906
|
-
]
|
|
1907
|
-
},
|
|
1908
|
-
"bytecode": "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",
|
|
1909
|
-
"debug_symbols": "q1bKyU9OLMnMzytWsqqu1VEqSyzKTEzKSYVySyoLIMxaAA=="
|
|
1910
|
-
},
|
|
1911
|
-
{
|
|
1912
|
-
"name": "broadcast_private_function",
|
|
1913
|
-
"function_type": "Secret",
|
|
1914
|
-
"is_internal": false,
|
|
1915
|
-
"abi": {
|
|
1916
|
-
"parameters": [
|
|
1917
|
-
{
|
|
1918
|
-
"name": "inputs",
|
|
1919
|
-
"type": {
|
|
1920
|
-
"kind": "struct",
|
|
1921
|
-
"path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs",
|
|
1922
|
-
"fields": [
|
|
1923
|
-
{
|
|
1924
|
-
"name": "call_context",
|
|
1925
|
-
"type": {
|
|
1926
|
-
"kind": "struct",
|
|
1927
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
1928
|
-
"fields": [
|
|
1929
|
-
{
|
|
1930
|
-
"name": "msg_sender",
|
|
1931
|
-
"type": {
|
|
1932
|
-
"kind": "struct",
|
|
1933
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1934
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1935
|
-
}
|
|
1936
|
-
},
|
|
1937
|
-
{
|
|
1938
|
-
"name": "storage_contract_address",
|
|
1939
|
-
"type": {
|
|
1940
|
-
"kind": "struct",
|
|
1941
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
1942
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1943
|
-
}
|
|
1944
|
-
},
|
|
1945
|
-
{
|
|
1946
|
-
"name": "portal_contract_address",
|
|
1947
|
-
"type": {
|
|
1948
|
-
"kind": "struct",
|
|
1949
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
1950
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
1951
|
-
}
|
|
1952
|
-
},
|
|
1953
|
-
{
|
|
1954
|
-
"name": "function_selector",
|
|
1955
|
-
"type": {
|
|
1956
|
-
"kind": "struct",
|
|
1957
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
1958
|
-
"fields": [
|
|
1959
|
-
{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
1960
|
-
]
|
|
1961
|
-
}
|
|
1962
|
-
},
|
|
1963
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
1964
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
1965
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
1966
|
-
{
|
|
1967
|
-
"name": "start_side_effect_counter",
|
|
1968
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1969
|
-
}
|
|
1970
|
-
]
|
|
1971
|
-
}
|
|
1972
|
-
},
|
|
1973
|
-
{
|
|
1974
|
-
"name": "historical_header",
|
|
1975
|
-
"type": {
|
|
1976
|
-
"kind": "struct",
|
|
1977
|
-
"path": "aztec::protocol_types::header::Header",
|
|
1978
|
-
"fields": [
|
|
1979
|
-
{
|
|
1980
|
-
"name": "last_archive",
|
|
1981
|
-
"type": {
|
|
1982
|
-
"kind": "struct",
|
|
1983
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
1984
|
-
"fields": [
|
|
1985
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
1986
|
-
{
|
|
1987
|
-
"name": "next_available_leaf_index",
|
|
1988
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
1989
|
-
}
|
|
1990
|
-
]
|
|
1991
|
-
}
|
|
1992
|
-
},
|
|
1993
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
1994
|
-
{
|
|
1995
|
-
"name": "state",
|
|
1996
|
-
"type": {
|
|
1997
|
-
"kind": "struct",
|
|
1998
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
1999
|
-
"fields": [
|
|
2000
|
-
{
|
|
2001
|
-
"name": "l1_to_l2_message_tree",
|
|
2002
|
-
"type": {
|
|
2003
|
-
"kind": "struct",
|
|
2004
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2005
|
-
"fields": [
|
|
2006
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2007
|
-
{
|
|
2008
|
-
"name": "next_available_leaf_index",
|
|
2009
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2010
|
-
}
|
|
2011
|
-
]
|
|
2012
|
-
}
|
|
2013
|
-
},
|
|
2014
|
-
{
|
|
2015
|
-
"name": "partial",
|
|
2016
|
-
"type": {
|
|
2017
|
-
"kind": "struct",
|
|
2018
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
2019
|
-
"fields": [
|
|
2020
|
-
{
|
|
2021
|
-
"name": "note_hash_tree",
|
|
2022
|
-
"type": {
|
|
2023
|
-
"kind": "struct",
|
|
2024
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2025
|
-
"fields": [
|
|
2026
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2027
|
-
{
|
|
2028
|
-
"name": "next_available_leaf_index",
|
|
2029
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2030
|
-
}
|
|
2031
|
-
]
|
|
2032
|
-
}
|
|
2033
|
-
},
|
|
2034
|
-
{
|
|
2035
|
-
"name": "nullifier_tree",
|
|
2036
|
-
"type": {
|
|
2037
|
-
"kind": "struct",
|
|
2038
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2039
|
-
"fields": [
|
|
2040
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2041
|
-
{
|
|
2042
|
-
"name": "next_available_leaf_index",
|
|
2043
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2044
|
-
}
|
|
2045
|
-
]
|
|
2046
|
-
}
|
|
2047
|
-
},
|
|
2048
|
-
{
|
|
2049
|
-
"name": "contract_tree",
|
|
2050
|
-
"type": {
|
|
2051
|
-
"kind": "struct",
|
|
2052
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2053
|
-
"fields": [
|
|
2054
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2055
|
-
{
|
|
2056
|
-
"name": "next_available_leaf_index",
|
|
2057
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2058
|
-
}
|
|
2059
|
-
]
|
|
2060
|
-
}
|
|
2061
|
-
},
|
|
2062
|
-
{
|
|
2063
|
-
"name": "public_data_tree",
|
|
2064
|
-
"type": {
|
|
2065
|
-
"kind": "struct",
|
|
2066
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2067
|
-
"fields": [
|
|
2068
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2069
|
-
{
|
|
2070
|
-
"name": "next_available_leaf_index",
|
|
2071
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2072
|
-
}
|
|
2073
|
-
]
|
|
2074
|
-
}
|
|
2075
|
-
}
|
|
2076
|
-
]
|
|
2077
|
-
}
|
|
2078
|
-
}
|
|
2079
|
-
]
|
|
2080
|
-
}
|
|
2081
|
-
},
|
|
2082
|
-
{
|
|
2083
|
-
"name": "global_variables",
|
|
2084
|
-
"type": {
|
|
2085
|
-
"kind": "struct",
|
|
2086
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
2087
|
-
"fields": [
|
|
2088
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
2089
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
2090
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
2091
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
2092
|
-
{
|
|
2093
|
-
"name": "coinbase",
|
|
2094
|
-
"type": {
|
|
2095
|
-
"kind": "struct",
|
|
2096
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
2097
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2098
|
-
}
|
|
2099
|
-
},
|
|
2100
|
-
{
|
|
2101
|
-
"name": "fee_recipient",
|
|
2102
|
-
"type": {
|
|
2103
|
-
"kind": "struct",
|
|
2104
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
2105
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2106
|
-
}
|
|
2107
|
-
}
|
|
2108
|
-
]
|
|
2109
|
-
}
|
|
2110
|
-
}
|
|
2111
|
-
]
|
|
2112
|
-
}
|
|
2113
|
-
},
|
|
2114
|
-
{
|
|
2115
|
-
"name": "contract_deployment_data",
|
|
2116
|
-
"type": {
|
|
2117
|
-
"kind": "struct",
|
|
2118
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
2119
|
-
"fields": [
|
|
2120
|
-
{
|
|
2121
|
-
"name": "public_key",
|
|
2122
|
-
"type": {
|
|
2123
|
-
"kind": "struct",
|
|
2124
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
2125
|
-
"fields": [
|
|
2126
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
2127
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
2128
|
-
]
|
|
2129
|
-
}
|
|
2130
|
-
},
|
|
2131
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
2132
|
-
{
|
|
2133
|
-
"name": "contract_class_id",
|
|
2134
|
-
"type": {
|
|
2135
|
-
"kind": "struct",
|
|
2136
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
2137
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2138
|
-
}
|
|
2139
|
-
},
|
|
2140
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
2141
|
-
{
|
|
2142
|
-
"name": "portal_contract_address",
|
|
2143
|
-
"type": {
|
|
2144
|
-
"kind": "struct",
|
|
2145
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
2146
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2147
|
-
}
|
|
2148
|
-
}
|
|
2149
|
-
]
|
|
2150
|
-
}
|
|
2151
|
-
},
|
|
2152
|
-
{
|
|
2153
|
-
"name": "private_global_variables",
|
|
2154
|
-
"type": {
|
|
2155
|
-
"kind": "struct",
|
|
2156
|
-
"path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables",
|
|
2157
|
-
"fields": [
|
|
2158
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
2159
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
2160
|
-
]
|
|
2161
|
-
}
|
|
2162
|
-
}
|
|
2163
|
-
]
|
|
2164
|
-
},
|
|
2165
|
-
"visibility": "private"
|
|
2166
|
-
},
|
|
2167
|
-
{
|
|
2168
|
-
"name": "contract_class_id",
|
|
2169
|
-
"type": {
|
|
2170
|
-
"kind": "struct",
|
|
2171
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
2172
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2173
|
-
},
|
|
2174
|
-
"visibility": "private"
|
|
2175
|
-
},
|
|
2176
|
-
{ "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" },
|
|
2177
|
-
{
|
|
2178
|
-
"name": "unconstrained_functions_artifact_tree_root",
|
|
2179
|
-
"type": { "kind": "field" },
|
|
2180
|
-
"visibility": "private"
|
|
2181
|
-
},
|
|
2182
|
-
{
|
|
2183
|
-
"name": "private_function_tree_sibling_path",
|
|
2184
|
-
"type": { "kind": "array", "length": 5, "type": { "kind": "field" } },
|
|
2185
|
-
"visibility": "private"
|
|
2186
|
-
},
|
|
2187
|
-
{
|
|
2188
|
-
"name": "artifact_function_tree_sibling_path",
|
|
2189
|
-
"type": { "kind": "array", "length": 5, "type": { "kind": "field" } },
|
|
2190
|
-
"visibility": "private"
|
|
2191
|
-
},
|
|
2192
|
-
{
|
|
2193
|
-
"name": "function_data",
|
|
2194
|
-
"type": {
|
|
2195
|
-
"kind": "struct",
|
|
2196
|
-
"path": "events::private_function_broadcasted::PrivateFunction",
|
|
2197
|
-
"fields": [
|
|
2198
|
-
{
|
|
2199
|
-
"name": "selector",
|
|
2200
|
-
"type": {
|
|
2201
|
-
"kind": "struct",
|
|
2202
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
2203
|
-
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
2204
|
-
}
|
|
2205
|
-
},
|
|
2206
|
-
{ "name": "metadata_hash", "type": { "kind": "field" } },
|
|
2207
|
-
{ "name": "vk_hash", "type": { "kind": "field" } },
|
|
2208
|
-
{ "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }
|
|
2209
|
-
]
|
|
2210
|
-
},
|
|
2211
|
-
"visibility": "private"
|
|
2212
|
-
}
|
|
2213
|
-
],
|
|
2214
|
-
"param_witnesses": {
|
|
2215
|
-
"artifact_function_tree_sibling_path": [{ "start": 44, "end": 49 }],
|
|
2216
|
-
"artifact_metadata_hash": [{ "start": 37, "end": 38 }],
|
|
2217
|
-
"contract_class_id": [{ "start": 36, "end": 37 }],
|
|
2218
|
-
"function_data": [{ "start": 49, "end": 552 }],
|
|
2219
|
-
"inputs": [{ "start": 0, "end": 36 }],
|
|
2220
|
-
"private_function_tree_sibling_path": [{ "start": 39, "end": 44 }],
|
|
2221
|
-
"unconstrained_functions_artifact_tree_root": [{ "start": 38, "end": 39 }]
|
|
2222
|
-
},
|
|
2223
|
-
"return_type": {
|
|
2224
|
-
"abi_type": {
|
|
2225
|
-
"kind": "struct",
|
|
2226
|
-
"path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs",
|
|
2227
|
-
"fields": [
|
|
2228
|
-
{
|
|
2229
|
-
"name": "call_context",
|
|
2230
|
-
"type": {
|
|
2231
|
-
"kind": "struct",
|
|
2232
|
-
"path": "aztec::protocol_types::abis::call_context::CallContext",
|
|
2233
|
-
"fields": [
|
|
2234
|
-
{
|
|
2235
|
-
"name": "msg_sender",
|
|
2236
|
-
"type": {
|
|
2237
|
-
"kind": "struct",
|
|
2238
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
2239
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2240
|
-
}
|
|
2241
|
-
},
|
|
2242
|
-
{
|
|
2243
|
-
"name": "storage_contract_address",
|
|
2244
|
-
"type": {
|
|
2245
|
-
"kind": "struct",
|
|
2246
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
2247
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2248
|
-
}
|
|
2249
|
-
},
|
|
2250
|
-
{
|
|
2251
|
-
"name": "portal_contract_address",
|
|
2252
|
-
"type": {
|
|
2253
|
-
"kind": "struct",
|
|
2254
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
2255
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2256
|
-
}
|
|
2257
|
-
},
|
|
2258
|
-
{
|
|
2259
|
-
"name": "function_selector",
|
|
2260
|
-
"type": {
|
|
2261
|
-
"kind": "struct",
|
|
2262
|
-
"path": "aztec::protocol_types::abis::function_selector::FunctionSelector",
|
|
2263
|
-
"fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }]
|
|
2264
|
-
}
|
|
2265
|
-
},
|
|
2266
|
-
{ "name": "is_delegate_call", "type": { "kind": "boolean" } },
|
|
2267
|
-
{ "name": "is_static_call", "type": { "kind": "boolean" } },
|
|
2268
|
-
{ "name": "is_contract_deployment", "type": { "kind": "boolean" } },
|
|
2269
|
-
{
|
|
2270
|
-
"name": "start_side_effect_counter",
|
|
2271
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2272
|
-
}
|
|
2273
|
-
]
|
|
2274
|
-
}
|
|
2275
|
-
},
|
|
2276
|
-
{ "name": "args_hash", "type": { "kind": "field" } },
|
|
2277
|
-
{ "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } },
|
|
2278
|
-
{
|
|
2279
|
-
"name": "max_non_revertible_side_effect_counter",
|
|
2280
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2281
|
-
},
|
|
2282
|
-
{
|
|
2283
|
-
"name": "read_requests",
|
|
2284
|
-
"type": {
|
|
2285
|
-
"kind": "array",
|
|
2286
|
-
"length": 32,
|
|
2287
|
-
"type": {
|
|
2288
|
-
"kind": "struct",
|
|
2289
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
2290
|
-
"fields": [
|
|
2291
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
2292
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
2293
|
-
]
|
|
2294
|
-
}
|
|
2295
|
-
}
|
|
2296
|
-
},
|
|
2297
|
-
{
|
|
2298
|
-
"name": "nullifier_key_validation_requests",
|
|
2299
|
-
"type": {
|
|
2300
|
-
"kind": "array",
|
|
2301
|
-
"length": 1,
|
|
2302
|
-
"type": {
|
|
2303
|
-
"kind": "struct",
|
|
2304
|
-
"path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest",
|
|
2305
|
-
"fields": [
|
|
2306
|
-
{
|
|
2307
|
-
"name": "public_key",
|
|
2308
|
-
"type": {
|
|
2309
|
-
"kind": "struct",
|
|
2310
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
2311
|
-
"fields": [
|
|
2312
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
2313
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
2314
|
-
]
|
|
2315
|
-
}
|
|
2316
|
-
},
|
|
2317
|
-
{
|
|
2318
|
-
"name": "secret_key",
|
|
2319
|
-
"type": {
|
|
2320
|
-
"kind": "struct",
|
|
2321
|
-
"path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey",
|
|
2322
|
-
"fields": [
|
|
2323
|
-
{ "name": "high", "type": { "kind": "field" } },
|
|
2324
|
-
{ "name": "low", "type": { "kind": "field" } }
|
|
2325
|
-
]
|
|
2326
|
-
}
|
|
2327
|
-
}
|
|
2328
|
-
]
|
|
2329
|
-
}
|
|
2330
|
-
}
|
|
2331
|
-
},
|
|
2332
|
-
{
|
|
2333
|
-
"name": "new_commitments",
|
|
2334
|
-
"type": {
|
|
2335
|
-
"kind": "array",
|
|
2336
|
-
"length": 16,
|
|
2337
|
-
"type": {
|
|
2338
|
-
"kind": "struct",
|
|
2339
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffect",
|
|
2340
|
-
"fields": [
|
|
2341
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
2342
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
2343
|
-
]
|
|
2344
|
-
}
|
|
2345
|
-
}
|
|
2346
|
-
},
|
|
2347
|
-
{
|
|
2348
|
-
"name": "new_nullifiers",
|
|
2349
|
-
"type": {
|
|
2350
|
-
"kind": "array",
|
|
2351
|
-
"length": 16,
|
|
2352
|
-
"type": {
|
|
2353
|
-
"kind": "struct",
|
|
2354
|
-
"path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash",
|
|
2355
|
-
"fields": [
|
|
2356
|
-
{ "name": "value", "type": { "kind": "field" } },
|
|
2357
|
-
{ "name": "note_hash", "type": { "kind": "field" } },
|
|
2358
|
-
{ "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }
|
|
2359
|
-
]
|
|
2360
|
-
}
|
|
2361
|
-
}
|
|
2362
|
-
},
|
|
2363
|
-
{
|
|
2364
|
-
"name": "private_call_stack_hashes",
|
|
2365
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
2366
|
-
},
|
|
2367
|
-
{
|
|
2368
|
-
"name": "public_call_stack_hashes",
|
|
2369
|
-
"type": { "kind": "array", "length": 4, "type": { "kind": "field" } }
|
|
2370
|
-
},
|
|
2371
|
-
{ "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
2372
|
-
{ "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } },
|
|
2373
|
-
{ "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
2374
|
-
{
|
|
2375
|
-
"name": "unencrypted_logs_hash",
|
|
2376
|
-
"type": { "kind": "array", "length": 2, "type": { "kind": "field" } }
|
|
2377
|
-
},
|
|
2378
|
-
{ "name": "encrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
2379
|
-
{ "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } },
|
|
2380
|
-
{
|
|
2381
|
-
"name": "historical_header",
|
|
2382
|
-
"type": {
|
|
2383
|
-
"kind": "struct",
|
|
2384
|
-
"path": "aztec::protocol_types::header::Header",
|
|
2385
|
-
"fields": [
|
|
2386
|
-
{
|
|
2387
|
-
"name": "last_archive",
|
|
2388
|
-
"type": {
|
|
2389
|
-
"kind": "struct",
|
|
2390
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2391
|
-
"fields": [
|
|
2392
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2393
|
-
{
|
|
2394
|
-
"name": "next_available_leaf_index",
|
|
2395
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2396
|
-
}
|
|
2397
|
-
]
|
|
2398
|
-
}
|
|
2399
|
-
},
|
|
2400
|
-
{ "name": "body_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } },
|
|
2401
|
-
{
|
|
2402
|
-
"name": "state",
|
|
2403
|
-
"type": {
|
|
2404
|
-
"kind": "struct",
|
|
2405
|
-
"path": "aztec::protocol_types::state_reference::StateReference",
|
|
2406
|
-
"fields": [
|
|
2407
|
-
{
|
|
2408
|
-
"name": "l1_to_l2_message_tree",
|
|
2409
|
-
"type": {
|
|
2410
|
-
"kind": "struct",
|
|
2411
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2412
|
-
"fields": [
|
|
2413
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2414
|
-
{
|
|
2415
|
-
"name": "next_available_leaf_index",
|
|
2416
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2417
|
-
}
|
|
2418
|
-
]
|
|
2419
|
-
}
|
|
2420
|
-
},
|
|
2421
|
-
{
|
|
2422
|
-
"name": "partial",
|
|
2423
|
-
"type": {
|
|
2424
|
-
"kind": "struct",
|
|
2425
|
-
"path": "aztec::protocol_types::partial_state_reference::PartialStateReference",
|
|
2426
|
-
"fields": [
|
|
2427
|
-
{
|
|
2428
|
-
"name": "note_hash_tree",
|
|
2429
|
-
"type": {
|
|
2430
|
-
"kind": "struct",
|
|
2431
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2432
|
-
"fields": [
|
|
2433
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2434
|
-
{
|
|
2435
|
-
"name": "next_available_leaf_index",
|
|
2436
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2437
|
-
}
|
|
2438
|
-
]
|
|
2439
|
-
}
|
|
2440
|
-
},
|
|
2441
|
-
{
|
|
2442
|
-
"name": "nullifier_tree",
|
|
2443
|
-
"type": {
|
|
2444
|
-
"kind": "struct",
|
|
2445
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2446
|
-
"fields": [
|
|
2447
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2448
|
-
{
|
|
2449
|
-
"name": "next_available_leaf_index",
|
|
2450
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2451
|
-
}
|
|
2452
|
-
]
|
|
2453
|
-
}
|
|
2454
|
-
},
|
|
2455
|
-
{
|
|
2456
|
-
"name": "contract_tree",
|
|
2457
|
-
"type": {
|
|
2458
|
-
"kind": "struct",
|
|
2459
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2460
|
-
"fields": [
|
|
2461
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2462
|
-
{
|
|
2463
|
-
"name": "next_available_leaf_index",
|
|
2464
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2465
|
-
}
|
|
2466
|
-
]
|
|
2467
|
-
}
|
|
2468
|
-
},
|
|
2469
|
-
{
|
|
2470
|
-
"name": "public_data_tree",
|
|
2471
|
-
"type": {
|
|
2472
|
-
"kind": "struct",
|
|
2473
|
-
"path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot",
|
|
2474
|
-
"fields": [
|
|
2475
|
-
{ "name": "root", "type": { "kind": "field" } },
|
|
2476
|
-
{
|
|
2477
|
-
"name": "next_available_leaf_index",
|
|
2478
|
-
"type": { "kind": "integer", "sign": "unsigned", "width": 32 }
|
|
2479
|
-
}
|
|
2480
|
-
]
|
|
2481
|
-
}
|
|
2482
|
-
}
|
|
2483
|
-
]
|
|
2484
|
-
}
|
|
2485
|
-
}
|
|
2486
|
-
]
|
|
2487
|
-
}
|
|
2488
|
-
},
|
|
2489
|
-
{
|
|
2490
|
-
"name": "global_variables",
|
|
2491
|
-
"type": {
|
|
2492
|
-
"kind": "struct",
|
|
2493
|
-
"path": "aztec::protocol_types::abis::global_variables::GlobalVariables",
|
|
2494
|
-
"fields": [
|
|
2495
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
2496
|
-
{ "name": "version", "type": { "kind": "field" } },
|
|
2497
|
-
{ "name": "block_number", "type": { "kind": "field" } },
|
|
2498
|
-
{ "name": "timestamp", "type": { "kind": "field" } },
|
|
2499
|
-
{
|
|
2500
|
-
"name": "coinbase",
|
|
2501
|
-
"type": {
|
|
2502
|
-
"kind": "struct",
|
|
2503
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
2504
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2505
|
-
}
|
|
2506
|
-
},
|
|
2507
|
-
{
|
|
2508
|
-
"name": "fee_recipient",
|
|
2509
|
-
"type": {
|
|
2510
|
-
"kind": "struct",
|
|
2511
|
-
"path": "aztec::protocol_types::address::AztecAddress",
|
|
2512
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2513
|
-
}
|
|
2514
|
-
}
|
|
2515
|
-
]
|
|
2516
|
-
}
|
|
2517
|
-
}
|
|
2518
|
-
]
|
|
2519
|
-
}
|
|
2520
|
-
},
|
|
2521
|
-
{
|
|
2522
|
-
"name": "contract_deployment_data",
|
|
2523
|
-
"type": {
|
|
2524
|
-
"kind": "struct",
|
|
2525
|
-
"path": "aztec::protocol_types::contrakt::deployment_data::ContractDeploymentData",
|
|
2526
|
-
"fields": [
|
|
2527
|
-
{
|
|
2528
|
-
"name": "public_key",
|
|
2529
|
-
"type": {
|
|
2530
|
-
"kind": "struct",
|
|
2531
|
-
"path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint",
|
|
2532
|
-
"fields": [
|
|
2533
|
-
{ "name": "x", "type": { "kind": "field" } },
|
|
2534
|
-
{ "name": "y", "type": { "kind": "field" } }
|
|
2535
|
-
]
|
|
2536
|
-
}
|
|
2537
|
-
},
|
|
2538
|
-
{ "name": "initialization_hash", "type": { "kind": "field" } },
|
|
2539
|
-
{
|
|
2540
|
-
"name": "contract_class_id",
|
|
2541
|
-
"type": {
|
|
2542
|
-
"kind": "struct",
|
|
2543
|
-
"path": "aztec::protocol_types::contract_class::ContractClassId",
|
|
2544
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2545
|
-
}
|
|
2546
|
-
},
|
|
2547
|
-
{ "name": "contract_address_salt", "type": { "kind": "field" } },
|
|
2548
|
-
{
|
|
2549
|
-
"name": "portal_contract_address",
|
|
2550
|
-
"type": {
|
|
2551
|
-
"kind": "struct",
|
|
2552
|
-
"path": "aztec::protocol_types::address::EthAddress",
|
|
2553
|
-
"fields": [{ "name": "inner", "type": { "kind": "field" } }]
|
|
2554
|
-
}
|
|
2555
|
-
}
|
|
2556
|
-
]
|
|
2557
|
-
}
|
|
2558
|
-
},
|
|
2559
|
-
{ "name": "chain_id", "type": { "kind": "field" } },
|
|
2560
|
-
{ "name": "version", "type": { "kind": "field" } }
|
|
2561
|
-
]
|
|
2562
|
-
},
|
|
2563
|
-
"visibility": "public"
|
|
2564
|
-
},
|
|
2565
|
-
"return_witnesses": [
|
|
2566
|
-
573, 574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594,
|
|
2567
|
-
595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616,
|
|
2568
|
-
617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638,
|
|
2569
|
-
639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660,
|
|
2570
|
-
661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682,
|
|
2571
|
-
683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704,
|
|
2572
|
-
705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726,
|
|
2573
|
-
727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748,
|
|
2574
|
-
749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770,
|
|
2575
|
-
771, 772, 773, 774, 775, 776, 777, 778, 779
|
|
2576
|
-
]
|
|
2577
|
-
},
|
|
2578
|
-
"bytecode": "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",
|
|
2579
|
-
"debug_symbols": "1ZjRaoQwEEX/Jc+yZO5EM/FXSh9suwVB3GWVQhH/vcqqW2lASGFhnkzgnvE6GbiSwTSX96qvL21nysEQTPkymO5atfO266tbb0qbmXP7MT3HzHzWzdmUJH7M/ugoD4uShDatp4gUEF60YPerMOWxwsRFvpYmh7DTv2aGWKlvp9R3rtR3odS3V+pblPoOOn3DKvVNSn0rzUsozUsozUsozUsozUsozUsozUsozUt+Wl468qtv5/2/fUfzEhKwUGzt3v0MRcOKLdkN8jj8ZF77T4UtNrVzd1snjk4CQdaXTMtHr0JYMGfTMErDkIZFU5PkMQaBZMNkbYlzhxg4guVpWJGG+QQMp/gP0MGUTBinYfFOwsp2bl525zZtvqpbXb015/mCY9r239f7cvwB"
|
|
2580
|
-
}
|
|
2581
|
-
],
|
|
2582
|
-
"events": [],
|
|
2583
|
-
"file_map": {
|
|
2584
|
-
"44": {
|
|
2585
|
-
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n log\n );\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n\n// TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n// --> might be a better approach to force devs to make a public function call that emits the log if needed then\n// it would be less easy to accidentally leak information.\n// If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n",
|
|
2586
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/log.nr"
|
|
2587
|
-
},
|
|
2588
|
-
"71": {
|
|
2589
|
-
"source": "use dep::protocol_types::{hash::hash_args, traits::Hash};\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hash for Hasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl Hasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n",
|
|
2590
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/hasher.nr"
|
|
2591
|
-
},
|
|
2592
|
-
"84": {
|
|
2593
|
-
"source": "// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle<T, N>(_msg: T, _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_format_oracle<T, N>(_msg: T, _args: [Field; N], _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_field_oracle(_field: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_array_oracle<T, N>(_arbitrary_array: [T; N]) -> Field {}\n#[oracle(debugLogWithPrefix)]\nfn debug_log_array_with_prefix_oracle<S, T, N>(_prefix: S, _arbitrary_array: [T; N]) -> Field {}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<T>(msg: T) {\n assert(debug_log_oracle(msg, 0) == 0);\n}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\nunconstrained pub fn debug_log_format<T, N>(msg: T, args: [Field; N]) {\n assert(debug_log_format_oracle(msg, args, args.len()) == 0);\n}\n\n/// Example:\n/// `debug_log_field(my_field);`\nunconstrained pub fn debug_log_field(field: Field) {\n assert(debug_log_field_oracle(field) == 0);\n}\n\n/// Example:\n/// `debug_log_array(my_array);`\nunconstrained fn debug_log_array<T, N>(arbitrary_array: [T; N]) {\n assert(debug_log_array_oracle(arbitrary_array) == 0);\n}\n\n/// Example:\n/// `debug_log_array_with_prefix(\"Prefix\", my_array);`\nunconstrained pub fn debug_log_array_with_prefix<S, T, N>(prefix: S, arbitrary_array: [T; N]) {\n assert(debug_log_array_with_prefix_oracle(prefix, arbitrary_array) == 0);\n}\n",
|
|
2594
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/debug_log.nr"
|
|
2595
|
-
},
|
|
2596
|
-
"99": {
|
|
2597
|
-
"source": "use dep::protocol_types::{address::AztecAddress, constants::NUM_FIELDS_PER_SHA256, grumpkin_point::GrumpkinPoint};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [\n emit_encrypted_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n preimage\n ), 0\n ]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n",
|
|
2598
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr"
|
|
2599
|
-
},
|
|
2600
|
-
"100": {
|
|
2601
|
-
"source": "use crate::{\n context::inputs::PrivateContextInputs, key::nullifier_key::validate_nullifier_key_against_address,\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, context::get_portal_address,\n header::get_header_at, nullifier_key::{get_nullifier_key_pair, NullifierKeyPair}\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_call_stack_item::PrivateCallStackItem,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_COMMITMENTS_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256,\n RETURN_VALUES_LENGTH\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, hash::hash_args, header::Header, utils::reader::Reader\n};\nuse dep::std::option::Option;\n\n// TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n// use dep::std::collections::vec::Vec;\n\n// When finished, one can call .finish() to convert back to the abi\nstruct PrivateContext {\n // docs:start:private-context\n inputs: PrivateContextInputs,\n side_effect_counter: u32,\n\n max_non_revertible_side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n read_requests: BoundedVec<SideEffect, MAX_READ_REQUESTS_PER_CALL>,\n nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n new_commitments: BoundedVec<SideEffect, MAX_NEW_COMMITMENTS_PER_CALL>,\n new_nullifiers: BoundedVec<SideEffectLinkedToNoteHash, MAX_NEW_NULLIFIERS_PER_CALL>,\n\n private_call_stack_hashes : BoundedVec<Field, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n public_call_stack_hashes : BoundedVec<Field, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL>,\n new_l2_to_l1_msgs : BoundedVec<Field, MAX_NEW_L2_TO_L1_MSGS_PER_CALL>,\n // docs:end:private-context\n\n // Header of a block whose state is used during private execution (not the block the transaction is included in).\n historical_header: Header,\n\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec<Field>,\n // unencrypted_logs_preimages: Vec<Field>,\n\n nullifier_key: Option<NullifierKeyPair>,\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.call_context.start_side_effect_counter,\n max_non_revertible_side_effect_counter: 0,\n args_hash,\n return_values: BoundedVec::new(0),\n read_requests: BoundedVec::new(SideEffect::empty()),\n nullifier_key_validation_requests: BoundedVec::new(NullifierKeyValidationRequest::empty()),\n new_commitments: BoundedVec::new(SideEffect::empty()),\n new_nullifiers: BoundedVec::new(SideEffectLinkedToNoteHash::empty()),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(0),\n public_call_stack_hashes: BoundedVec::new(0),\n new_l2_to_l1_msgs: BoundedVec::new(0),\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\n }\n\n pub fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n pub fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n pub fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n // Returns the header of a block whose state is used during private execution (not the block the transaction is\n // included in).\n pub fn get_header(self) -> Header {\n self.historical_header\n }\n\n // Returns the header of an arbitrary block whose block number is less than or equal to the block number\n // of historical header.\n pub fn get_header_at(self, block_number: u32) -> Header {\n get_header_at(block_number, self)\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n let encrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let unencrypted_logs_hash = [0; NUM_FIELDS_PER_SHA256];\n let encrypted_log_preimages_length = 0;\n let unencrypted_log_preimages_length = 0;\n\n let priv_circuit_pub_inputs = PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n return_values: self.return_values.storage,\n max_non_revertible_side_effect_counter: self.max_non_revertible_side_effect_counter,\n read_requests: self.read_requests.storage,\n nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_commitments: self.new_commitments.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash,\n unencrypted_logs_hash,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version\n };\n priv_circuit_pub_inputs\n }\n\n pub fn capture_max_non_revertible_side_effect_counter(&mut self) {\n assert(\n self.max_non_revertible_side_effect_counter == 0, \"Already captured the non-revertible side effect counter\"\n );\n self.max_non_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n pub fn push_read_request(&mut self, read_request: Field) {\n let side_effect = SideEffect { value: read_request, counter: self.side_effect_counter };\n self.read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_commitments.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: nullified_commitment, counter: self.side_effect_counter };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_nullifier_secret_key(&mut self, account: AztecAddress) -> GrumpkinPrivateKey {\n let key_pair = if self.nullifier_key.is_none() {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key);\n let request = NullifierKeyValidationRequest { public_key: key_pair.public_key, secret_key: key_pair.secret_key };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(key_pair);\n key_pair\n } else {\n let key_pair = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(\n key_pair.account == account, \"Cannot query nullifier key for more than one account per call\"\n );\n key_pair\n };\n key_pair.secret_key\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, content: Field) {\n // docs:end:context_message_portal\n self.new_l2_to_l1_msgs.push(content);\n }\n\n // PrivateContextInputs must be temporarily passed in to prevent too many unknowns\n // Note this returns self to get around an issue where mutable structs do not maintain mutations unless reassigned\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, msg_key: Field, content: Field, secret: Field) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n self.this_portal_address(),\n self.chain_id(),\n self.version(),\n msg_key,\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) -> [Field; RETURN_VALUES_LENGTH] {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_private_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter\n );\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n self.side_effect_counter = item.public_inputs.end_side_effect_counter + 1;\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.private_call_stack_hashes.push(item.hash());\n\n item.public_inputs.return_values\n }\n\n pub fn call_public_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_public_function_with_packed_args(contract_address, function_selector, args_hash)\n }\n\n pub fn call_public_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector\n ) {\n self.call_public_function_with_packed_args(contract_address, function_selector, 0)\n }\n\n pub fn call_public_function_with_packed_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field\n ) {\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter\n );\n\n let mut reader = Reader::new(fields);\n\n // Note: Not using PublicCirclePublicInputs::deserialize here, because everything below args_hash is 0 and\n // there is no more data in fields because there is only ENQUEUE_PUBLIC_FUNCTION_CALL_RETURN_SIZE fields!\n let item = PublicCallStackItem {\n contract_address: AztecAddress::from_field(reader.read()),\n function_data: reader.read_struct(FunctionData::deserialize),\n public_inputs: PublicCircuitPublicInputs {\n call_context: reader.read_struct(CallContext::deserialize),\n args_hash: reader.read(),\n return_values: [0; RETURN_VALUES_LENGTH],\n contract_storage_update_requests: [StorageUpdateRequest::empty(); MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL],\n contract_storage_reads: [StorageRead::empty(); MAX_PUBLIC_DATA_READS_PER_CALL],\n public_call_stack_hashes: [0; MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL],\n new_commitments: [SideEffect::empty(); MAX_NEW_COMMITMENTS_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [0; MAX_NEW_L2_TO_L1_MSGS_PER_CALL],\n unencrypted_logs_hash: [0; NUM_FIELDS_PER_SHA256],\n unencrypted_log_preimages_length: 0,\n historical_header: Header::empty(),\n prover_address: AztecAddress::zero()\n },\n is_execution_request: true\n };\n reader.finish();\n\n assert(contract_address.eq(item.contract_address));\n assert(function_selector.eq(item.function_data.selector));\n\n assert_eq(item.public_inputs.call_context.start_side_effect_counter, self.side_effect_counter);\n // We increment the sideffect counter by one, to account for the call itself being a side effect.\n self.side_effect_counter = self.side_effect_counter + 1;\n\n assert(args_hash == item.public_inputs.args_hash);\n\n // Assert that the call context of the enqueued call generated by the oracle matches our request.\n // We are issuing a regular call which is not delegate, static, or deployment. We also constrain\n // the msg_sender in the nested call to be equal to our address, and the execution context address\n // for the nested call to be equal to the address we actually called.\n assert(item.public_inputs.call_context.is_delegate_call == false);\n assert(item.public_inputs.call_context.is_static_call == false);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n",
|
|
2602
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr"
|
|
2603
|
-
},
|
|
2604
|
-
"115": {
|
|
2605
|
-
"source": "use crate::address::{AztecAddress, EthAddress};\nuse crate::mocked::VerificationKey;\nuse crate::abis::function_selector::FunctionSelector;\nuse crate::abis::function_leaf_preimage::{ContractClassFunctionLeafPreimage, FunctionLeafPreimage};\nuse crate::contract_class::ContractClassId;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT, ARGS_HASH_CHUNK_LENGTH, CONTRACT_TREE_HEIGHT, FUNCTION_TREE_HEIGHT,\n NOTE_HASH_TREE_HEIGHT, NUM_FIELDS_PER_SHA256, GENERATOR_INDEX__SILOED_COMMITMENT,\n GENERATOR_INDEX__OUTER_NULLIFIER, GENERATOR_INDEX__VK, GENERATOR_INDEX__CONSTRUCTOR,\n GENERATOR_INDEX__PARTIAL_ADDRESS, GENERATOR_INDEX__CONTRACT_ADDRESS,\n GENERATOR_INDEX__COMMITMENT_NONCE, GENERATOR_INDEX__UNIQUE_COMMITMENT,\n GENERATOR_INDEX__FUNCTION_ARGS\n};\n\nuse dep::std::hash::{pedersen_hash_with_separator, sha256};\n\npub fn sha256_to_field<N>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = sha256(bytes_to_hash);\n\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (sha256_hashed[15 - i] as Field) * v;\n low = low + (sha256_hashed[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n let hash_in_a_field = low + high * v;\n\n hash_in_a_field\n}\n\npub fn hash_args<N>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n let mut chunks_hashes = [0; ARGS_HASH_CHUNK_COUNT];\n for i in 0..ARGS_HASH_CHUNK_COUNT {\n let mut chunk_hash = 0;\n let start_chunk_index = i * ARGS_HASH_CHUNK_LENGTH;\n if start_chunk_index < (args.len() as u32) {\n let mut chunk_args = [0; ARGS_HASH_CHUNK_LENGTH];\n for j in 0..ARGS_HASH_CHUNK_LENGTH {\n let item_index = i * ARGS_HASH_CHUNK_LENGTH + j;\n if item_index < (args.len() as u32) {\n chunk_args[j] = args[item_index];\n }\n }\n chunk_hash = pedersen_hash(chunk_args, GENERATOR_INDEX__FUNCTION_ARGS);\n }\n chunks_hashes[i] = chunk_hash;\n }\n pedersen_hash(chunks_hashes, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n// Checks that `value` is a member of a merkle tree with root `root` at position `index`\n// The witness being the `sibling_path`\npub fn assert_check_membership<N>(value: Field, index: Field, sibling_path: [Field; N], root: Field) {\n let calculated_root = root_from_sibling_path(value, index, sibling_path);\n assert(calculated_root == root, \"membership check failed\");\n}\n\n// Calculate the Merkle tree root from the sibling path and leaf.\n//\n// The leaf is hashed with its sibling, and then the result is hashed\n// with the next sibling etc in the path. The last hash is the root.\n//\n// TODO(David/Someone): The cpp code is using a uint256, whereas its\n// TODO a bit simpler in Noir to just have a bit array.\n// TODO: I'd generally like to avoid u256 for algorithms like \n// this because it means we never even need to consider cases where \n// the index is greater than p.\npub fn root_from_sibling_path<N>(leaf: Field, leaf_index: Field, sibling_path: [Field; N]) -> Field {\n let mut node = leaf;\n let indices = leaf_index.to_le_bits(N);\n\n for i in 0..N {\n let (hash_left, hash_right) = if indices[i] == 1 {\n (sibling_path[i], node)\n } else {\n (node, sibling_path[i])\n };\n node = merkle_hash(hash_left, hash_right);\n }\n node\n}\n\n// Calculate the function tree root from the sibling path and leaf preimage.\n//\n// TODO: The cpp code passes in components of the FunctionLeafPreimage and then \n// builds it up. We should build it up and then pass the leaf preimage as a parameter.\n// We can then choose to have a general method that takes in anything hashable\n// and deduplicate the logic in `contract_tree_root_from_siblings`\npub fn function_tree_root_from_siblings(\n selector: FunctionSelector,\n is_internal: bool,\n is_private: bool,\n vk_hash: Field,\n acir_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = FunctionLeafPreimage { selector, is_internal, is_private, vk_hash, acir_hash };\n\n let function_leaf = function_leaf_preimage.hash();\n\n let function_tree_root = root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path);\n\n function_tree_root\n}\n\n// Calculate the contract tree root from the sibling path and leaf preimage.\npub fn contract_tree_root_from_siblings(\n contract_class_id: ContractClassId,\n storage_contract_address: AztecAddress,\n portal_contract_address: EthAddress,\n contract_leaf_index: Field,\n contract_leaf_sibling_path: [Field; CONTRACT_TREE_HEIGHT]\n) -> Field {\n //TODO(Kev): if we use shorthand syntax here, we get an error as expected,\n // since variable name is `storage_contract_address` but the span is incorrect.\n let contract_leaf_preimage = ContractLeafPreimage { contract_address: storage_contract_address, portal_contract_address, contract_class_id };\n\n let contract_leaf = contract_leaf_preimage.hash();\n\n let computed_contract_tree_root = root_from_sibling_path(contract_leaf, contract_leaf_index, contract_leaf_sibling_path);\n\n computed_contract_tree_root\n}\n\npub fn private_functions_root_from_siblings(\n selector: FunctionSelector,\n vk_hash: Field,\n function_leaf_index: Field,\n function_leaf_sibling_path: [Field; FUNCTION_TREE_HEIGHT]\n) -> Field {\n let function_leaf_preimage = ContractClassFunctionLeafPreimage { selector, vk_hash };\n let function_leaf = function_leaf_preimage.hash();\n root_from_sibling_path(function_leaf, function_leaf_index, function_leaf_sibling_path)\n}\n\npub fn read_request_root_from_siblings(\n read_request: Field,\n leaf_index: Field,\n sibling_path: [Field; NOTE_HASH_TREE_HEIGHT]\n) -> Field {\n root_from_sibling_path(read_request, leaf_index, sibling_path)\n}\n\npub fn silo_commitment(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_COMMITMENT\n )\n}\n\npub fn silo_nullifier(address: AztecAddress, nullifier: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n nullifier\n ],\n GENERATOR_INDEX__OUTER_NULLIFIER\n )\n}\n\nfn merkle_hash(left: Field, right: Field) -> Field {\n pedersen_hash([left, right], 0)\n}\n\npub fn stdlib_recursion_verification_key_compress_native_vk(_vk: VerificationKey) -> Field {\n // Original cpp code\n // stdlib::recursion::verification_key<CT::bn254>::compress_native(private_call.vk, GeneratorIndex::VK);\n // The above cpp method is only ever called on verification key, so it has been special cased here\n let _hash_index = GENERATOR_INDEX__VK;\n 0\n}\n\n// TODO CPP uses blake2s for this\npub fn compute_new_contract_address_hash(new_contract_address: AztecAddress) -> Field {\n dep::std::hash::pedersen_hash([new_contract_address.to_field()])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n rollup_version_id: Field,\n portal_contract_address: EthAddress,\n chain_id: Field,\n content: Field\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new(0);\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, portal_contract_address.to_field(), chain_id, content\n ];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes = inputs[i].to_be_bytes(32);\n for j in 0..32 {\n bytes.push(item_bytes[j]);\n }\n }\n\n sha256_to_field(bytes.storage)\n}\n\npub fn compute_constructor_hash(\n function_data: FunctionData,\n args_hash: Field,\n constructor_vk_hash: Field\n) -> Field {\n let function_data_hash = function_data.hash();\n\n pedersen_hash(\n [\n function_data_hash,\n args_hash,\n constructor_vk_hash\n ],\n GENERATOR_INDEX__CONSTRUCTOR\n )\n}\n\n// Computes sha256 hash of 2 input hashes stored in 4 fields.\n// \n// This method is bn254 specific. Two fields is needed in order to \n// encode the sha256 output. It can be abstracted away with any 4-2 hash function.\n//\n// TODO(Jan and David): This is used for the encrypted_log hashes.\n// Can we check to see if we can just use hash_to_field or pedersen_compress here?\n//\n// Returning a Field would be desirable because then this can be replaced with \n// poseidon without changing the rest of the code\n//\npub fn accumulate_sha256(input: [U128; 4]) -> [Field; NUM_FIELDS_PER_SHA256] {\n // This is a note about the cpp code, since it takes an array of Fields\n // instead of a U128.\n // 4 Field elements when converted to bytes will usually \n // occupy 4 * 32 = 128 bytes.\n // However, this function is making the assumption that each Field \n // only occupies 128 bits.\n //\n // TODO(David): This does not seem to be getting guaranteed anywhere in the code?\n //\n // Concatenate 4 u128 bit integers into a byte array.\n let mut hash_input_flattened = [0; 64];\n for offset in 0..4 {\n let input_as_bytes = input[offset].to_be_bytes();\n for byte_index in 0..16 {\n hash_input_flattened[offset * 16 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n let sha_digest = dep::std::hash::sha256(hash_input_flattened);\n\n U256::from_bytes32(sha_digest).to_u128_limbs()\n}\n\npub fn compute_logs_hash(\n previous_log_hash: [Field; 2],\n current_log_hash: [Field; 2]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n accumulate_sha256(\n [\n U128::from_integer(previous_log_hash[0]),\n U128::from_integer(previous_log_hash[1]),\n U128::from_integer(current_log_hash[0]),\n U128::from_integer(current_log_hash[1])\n ]\n )\n}\n\npub fn compute_commitment_nonce(first_nullifier: Field, commitment_index: Field) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index\n ],\n GENERATOR_INDEX__COMMITMENT_NONCE\n )\n}\n\npub fn compute_unique_siloed_commitment(nonce: Field, siloed_commitment: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_commitment\n ],\n GENERATOR_INDEX__UNIQUE_COMMITMENT\n )\n}\n\npub fn compute_unique_siloed_commitments<N>(\n first_nullifier: Field,\n siloed_commitments: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_commitments = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_commitment = siloed_commitments[i];\n if siloed_commitment.value != 0 {\n let nonce = compute_commitment_nonce(first_nullifier, i);\n unique_siloed_commitments[i] = SideEffect {\n value: compute_unique_siloed_commitment(nonce, siloed_commitment.value),\n counter: siloed_commitment.counter\n };\n }\n }\n unique_siloed_commitments\n}\n\npub fn pedersen_hash<N>(inputs: [Field; N], hash_index: u32) -> Field {\n dep::std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n",
|
|
2606
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/src/crates/types/src/hash.nr"
|
|
2607
|
-
},
|
|
2608
|
-
"176": {
|
|
2609
|
-
"source": "use crate::abis::{\n function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{GENERATOR_INDEX__CONTRACT_LEAF};\nuse crate::traits::Hash;\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n",
|
|
2610
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/src/crates/types/src/contract_class.nr"
|
|
2611
|
-
},
|
|
2612
|
-
"187": {
|
|
2613
|
-
"source": "mod events;\n\ncontract ContractClassRegisterer {\n use dep::std::option::Option;\n use dep::aztec::protocol_types::{\n address::{AztecAddress, EthAddress}, contract_class::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::{Serialize}\n };\n\n use dep::aztec::log::{emit_unencrypted_log, emit_unencrypted_log_from_private};\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n #[aztec(private)]\n fn constructor() {}\n\n #[aztec(private)]\n fn register(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field,\n packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS]\n ) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\"ContractClassRegistered\", event_payload);\n emit_unencrypted_log_from_private(&mut context, event_payload);\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\"ClassPrivateFunctionBroadcasted\", event_payload);\n emit_unencrypted_log_from_private(&mut context, event_payload);\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n let event_payload = event.serialize();\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\"ClassUnconstrainedFunctionBroadcasted\", event_payload);\n emit_unencrypted_log_from_private(&mut context, event_payload);\n }\n}\n",
|
|
2614
|
-
"path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr"
|
|
2615
|
-
}
|
|
2616
|
-
}
|
|
2617
|
-
}
|
|
1
|
+
{ "noir_version": "0.24.0+edaef211ea08832b1aaabcfc8b3f2419c3a2184c", "name": "ContractClassRegisterer", "functions": [{ "name": "register", "function_type": "Secret", "is_internal": false, "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "artifact_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_functions_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "public_bytecode_commitment", "type": { "kind": "field" }, "visibility": "private" }], "param_witnesses": { "artifact_hash": [{ "start": 41, "end": 42 }], "inputs": [{ "start": 0, "end": 41 }], "private_functions_root": [{ "start": 42, "end": 43 }], "public_bytecode_commitment": [{ "start": 43, "end": 44 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_key_validation_requests", "type": { "kind": "array", "length": 1, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [8054, 8055, 8056, 8057, 8058, 8059, 8060, 8061, 8062, 8063, 8064, 8065, 8066, 8067, 8068, 8069, 8070, 8071, 8072, 8073, 8074, 8075, 8076, 8077, 8078, 8079, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, 8089, 8090, 8091, 8092, 8093, 8094, 8095, 8096, 8097, 8098, 8099, 8100, 8101, 8102, 8103, 8104, 8105, 8106, 8107, 8108, 8109, 8110, 8111, 8112, 8113, 8114, 8115, 8116, 8117, 8118, 8119, 8120, 8121, 8122, 8123, 8124, 8125, 8126, 8127, 8128, 8129, 8130, 8131, 8132, 8133, 8134, 8135, 8136, 8137, 8138, 8139, 8140, 8141, 8142, 8143, 8144, 8145, 8146, 8147, 8148, 8149, 8150, 8151, 8152, 8153, 8154, 8155, 8156, 8157, 8158, 8159, 8160, 8161, 8162, 8163, 8164, 8165, 8166, 8167, 8168, 8169, 8170, 8171, 8172, 8173, 8174, 8175, 8176, 8177, 8178, 8179, 8180, 8181, 8182, 8183, 8184, 8185, 8186, 8187, 8188, 8189, 8190, 8191, 8192, 8193, 8194, 8195, 8196, 8197, 8198, 8199, 8200, 8201, 8202, 8203, 8204, 8205, 8206, 8207, 8208, 8209, 8210, 8211, 8212, 8213, 8214, 8215, 8216, 8217, 8218, 8219, 8220, 8221, 8222, 8223, 8224, 8225, 8226, 8227, 8228, 8229, 8230, 8231, 8232, 8233, 8234, 8235, 8236, 8237, 8238, 8239, 8240, 8241, 8242, 8243, 8244, 8245, 8246, 8247, 8248, 8249, 8250, 8251, 8252, 8253, 8254, 8255, 8256, 8257, 8258, 8259, 8260, 8261, 8262, 8263, 8264, 8265, 8266, 8267, 8268, 8269, 8270, 8271] }, "bytecode": "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NE4TNE4XNM4QNM4UNM4SNM4WNM4RNM4VNM4TNM4XNC4QNC4UNC4SNC4WNC4RNC4VNC4TNC4XNK4QNK4UNK4SNK4WNK4RNK4VNK4TNK4XNG4QNG4UNG4SNG4WNG4RNG4VNG4TNG4XNO4QNO4UNO4SNO4WNO4RNO4VNO4TNO4XNB4QNB4UNB4SNB4WNB4RNB4VNB4TNB4XNJ4QNJ4UNJ4SNJ4WNJ4RNJ4VNJ4TNJ4XNF4QNF4UNF4SNF4WNF4RNF4VNF4TNF4XNN4QNN4UNN4SNN4WNN4RNN4VNN4TNN4XND4QND4UND4SND4WND4RND4VND4TND4XNL4QNL4UNL4SNL4WNL4RNL4VNL4TNL4XNH4QNH4UNH4SNH4WNH4RNH4VNH4TNH4XNAYI9O9v/EHQGFDQGEjQGFjQGETQGFTQGEzQGFzQGELQGFLQGErQGFrQGEbQGFbQGE7QGF7QGEHQGFHQGEnQGFnQGEXQGFXQGE3QGF3QGEPQGFPQGEvQGFvQGEfQGFfQGE/QGF/Q+KOg8SdB48+Cxl8Ejb8KGn8TNP4uaEwgaEwoaEwkaEwsaEwiaEwqaEwmaEwuaEwhaEwpaEwlaEwtaEwjaEwraEwnaEwvaMwgaMwoaMwkaMwsaMwiaMwqaMwmaMwuaMwhaMwpaMwlaMwtaMwjaMwraMwnaMwvaCwgaCwoaCwkaCwsaCwiaCwqaCwmaCwuaCwhaCwpaCwlaCwtaCwjaCwraCwnaCwvaKwgaKwoaKwkaKwsaKwiaKwqaKwmaKwuaKwhaKwpaKwlaKwtaKwjaKwraKwnaKwvaGwgaGwoaGwkaGwsaGwiaGwqaGwmaGwuaGwhaGwpaGwlaGwtaGwjaGwraGwnaGwvaOwgaOwoaOwkaOwsaOwiaOwqaOwmaOwuaOwhaOwpaOwlaOwtaOwjaOwraOwnaOwvaBwgaBwoaBwkaBwsaBwiaBwqaBwmaBwuaBwhaBwpaBwlaBwtaBwjaBwraBwnaBwvaJwgaJwoaJwkaJwsaJwiaJwqaJwmaJwuaJwhaJwpaJwlaJwtaJwjaJwraJwnaJwvaFwgaFwoaFwkaFwsaFwiaFwqaFwmaFwuaFwhaFwpaFwlaFwtaFwjaFwraFwnaFwvaNwgaNwoaNwkaNwsaNwiaNwqaNwmaNwuaNwhaNwpaNwlaNwtaNwjaNwraNwnaNwvaDwgaDwoaDwkaDwsaDwiaDwqaDwmaDwuaDwhaDwpaDwlaDwtaDwjaDwraDwnaDwvaLwgaLwoaLwkaLwsaLwiaLwqaLwmaLwuaLwhaLwpaLwlaLwtaLwjaLwraLwnaLwvaHwgaHwoaHwkaHwsaHwiaHwqaHwmaHwuaHwhaHwpaHwlaHwtaHwjaHwraHwnaHwvaPwgaPwoaPwkaPwsaPwiaPwqaPwmaPwuaAwQ+N/f+IOgMaCgMZCgMbCgMYigMaigMZigMbigMYSgMaSgMZSgMbSgMYygMaygMZygMbygMYKgMaKgMZKgMbKgMYqgMaqgMZqgMbqgMYagMaagMZagMbagMY6gMa6gMZ6gMb6g8UdB40+Cxp8Fjb8IGn8VNP4maPxd0JhA0JhQ0JhI0JhY0JhE0JhU0JhM0Jhc0JhC0JhS0JhK0Jha0JhG0JhW0JhO0Jhe0JhB0JhR0JhJ0JhZ0JhF0JhV0JhN0Jhd0JhD0JhT0JhL0Jhb0JhH0JhX0JhP0Jhf0FhA0FhQ0FhI0FhY0FhE0FhU0FhM0Fhc0FhC0FhS0FhK0Fha0FhG0FhW0FhO0Fhe0FhB0FhR0FhJ0FhZ0FhF0FhV0FhN0Fhd0FhD0FhT0FhL0Fhb0FhH0FhX0FhP0Fhf0NhA0NhQ0NhI0NhY0NhE0NhU0NhM0Nhc0NhC0NhS0NhK0Nha0NhG0NhW0NhO0Nhe0NhB0NhR0NhJ0NhZ0NhF0NhV0NhN0Nhd0NhD0NhT0NhL0Nhb0NhH0NhX0NhP0Nhf0DhA0DhQ0DhI0DhY0DhE0DhU0DhM0Dhc0DhC0DhS0DhK0Dha0DhG0DhW0DhO0Dhe0DhB0DhR0DhJ0DhZ0DhF0DhV0DhN0Dhd0DhD0DhT0DhL0Dhb0DhH0DhX0DhP0Dhf0LhA0LhQ0LhI0LhY0LhE0LhU0LhM0Lhc0LhC0LhS0LhK0Lha0LhG0LhW0LhO0Lhe0LhB0LhR0LhJ0LhZ0LhF0LhV0LhN0Lhd0LhD0LhT0LhL0Lhb0LhH0LhX0LhP0Lhf0HhA0HhQ0HhI0HhY0HhE0HhU0HhM0Hhc0HhC0HhS0HhK0Hha0HhG0HhW0HhO0Hhe0HhB0HhR0HhJ0HhZ0HhF0HhV0HhN0Hhd0HhD0HhT0HhL0Hhb0HhH0HhX0HhP0Hhf0PhA0PhQ0PhI0PhY0PhE0PhU0PhM0Phc0PhC0PhS0PhK0Pha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NE4TNE4XNM4QNM4UNM4SNM4WNM4RNM4VNM4TNM4XNC4QNC4UNC4SNC4WNC4RNC4VNC4TNC4XNK4QNK4UNK4SNK4WNK4RNK4VNK4TNK4XNG4QNG4UNG4SNG4WNG4RNG4VNG4TNG4XNO4QNO4UNO4SNO4WNO4RNO4VNO4TNO4XNB4QNB4UNB4SNB4WNB4RNB4VNB4TNB4XNJ4QNJ4UNJ4SNJ4WNJ4RNJ4VNJ4TNJ4XNF4QNF4UNF4SNF4WNF4RNF4VNF4TNF4XNN4QNN4UNN4SNN4WNN4RNN4VNN4TNN4XND4QND4UND4SND4WND4RND4VND4TND4XNL4QNL4UNL4SNL4WNL4RNL4VNL4TNL4XNH4QNH4UNH4SNH4WNH4RNH4VNH4TNH4XNAYI+e9v/EHQGFDQGEjQGFjQGETQGFTQGEzQGFzQGELQGFLQGErQGFrQGEbQGFbQGE7QGF7QGEHQGFHQGEnQGFnQGEXQGFXQGE3QGF3QGEPQGFPQGEvQGFvQGEfQGFfQGE/QGF/Q+KOg8SdB48+Cxl8Ejb8KGn8TNP4uaEwgaEwoaEwkaEwsaEwiaEwqaEwmaEwuaEwhaEwpaEwlaEwtaEwjaEwraEwnaEwvaMwgaMwoaMwkaMwsaMwiaMwqaMwmaMwuaMwhaMwpaMwlaMwtaMwjaMwraMwnaMwvaCwgaCwoaCwkaCwsaCwiaCwqaCwmaCwuaCwhaCwpaCwlaCwtaCwjaCwraCwnaCwvaKwgaKwoaKwkaKwsaKwiaKwqaKwmaKwuaKwhaKwpaKwlaKwtaKwjaKwraKwnaKwvaGwgaGwoaGwkaGwsaGwiaGwqaGwmaGwuaGwhaGwpaGwlaGwtaGwjaGwraGwnaGwvaOwgaOwoaOwkaOwsaOwiaOwqaOwmaOwuaOwhaOwpaOwlaOwtaOwjaOwraOwnaOwvaBwgaBwoaBwkaBwsaBwiaBwqaBwmaBwuaBwhaBwpaBwlaBwtaBwjaBwraBwnaBwvaJwgaJwoaJwkaJwsaJwiaJwqaJwmaJwuaJwhaJwpaJwlaJwtaJwjaJwraJwnaJwvaFwgaFwoaFwkaFwsaFwiaFwqaFwmaFwuaFwhaFwpaFwlaFwtaFwjaFwraFwnaFwvaNwgaNwoaNwkaNwsaNwiaNwqaNwmaNwuaNwhaNwpaNwlaNwtaNwjaNwraNwnaNwvaDwgaDwoaDwkaDwsaDwiaDwqaDwmaDwuaDwhaDwpaDwlaDwtaDwjaDwraDwnaDwvaLwgaLwoaLwkaLwsaLwiaLwqaLwmaLwuaLwhaLwpaLwlaLwtaLwjaLwraLwnaLwvaHwgaHwoaHwkaHwsaHwiaHwqaHwmaHwuaHwhaHwpaHwlaHwtaHwjaHwraHwnaHwvaPwgaPwoaPwkaPwsaPwiaPwqaPwmaPwuaAwQ6t/f+IOgMaCgMZCgMbCgMYigMaigMZigMbigMYSgMaSgMZSgMbSgMYygMaygMZygMbygMYKgMaKgMZKgMbKgMYqgMaqgMZqgMbqgMYagMaagMZagMbagMY6gMa6gMZ6gMb6g8UdB40+Cxp8Fjb8IGn8VNP4maPxd0JhA0JhQ0JhI0JhY0JhE0JhU0JhM0Jhc0JhC0JhS0JhK0Jha0JhG0JhW0JhO0Jhe0JhB0JhR0JhJ0JhZ0JhF0JhV0JhN0Jhd0JhD0JhT0JhL0Jhb0JhH0JhX0JhP0Jhf0FhA0FhQ0FhI0FhY0FhE0FhU0FhM0Fhc0FhC0FhS0FhK0Fha0FhG0FhW0FhO0Fhe0FhB0FhR0FhJ0FhZ0FhF0FhV0FhN0Fhd0FhD0FhT0FhL0Fhb0FhH0FhX0FhP0Fhf0NhA0NhQ0NhI0NhY0NhE0NhU0NhM0Nhc0NhC0NhS0NhK0Nha0NhG0NhW0NhO0Nhe0NhB0NhR0NhJ0NhZ0NhF0NhV0NhN0Nhd0NhD0NhT0NhL0Nhb0NhH0NhX0NhP0Nhf0DhA0DhQ0DhI0DhY0DhE0DhU0DhM0Dhc0DhC0DhS0DhK0Dha0DhG0DhW0DhO0Dhe0DhB0DhR0DhJ0DhZ0DhF0DhV0DhN0Dhd0DhD0DhT0DhL0Dhb0DhH0DhX0DhP0Dhf0LhA0LhQ0LhI0LhY0LhE0LhU0LhM0Lhc0LhC0LhS0LhK0Lha0LhG0LhW0LhO0Lhe0LhB0LhR0LhJ0LhZ0LhF0LhV0LhN0Lhd0LhD0LhT0LhL0Lhb0LhH0LhX0LhP0Lhf0HhA0HhQ0HhI0HhY0HhE0HhU0HhM0Hhc0HhC0HhS0HhK0Hha0HhG0HhW0HhO0Hhe0HhB0HhR0HhJ0HhZ0HhF0HhV0HhN0Hhd0HhD0HhT0HhL0Hhb0HhH0HhX0HhP0Hhf0PhA0PhQ0PhI0PhY0PhE0PhU0PhM0Phc0PhC0PhS0PhK0Pha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gsaCgsZCgsbCgsYigsaigsZigsbigsYSgsaSgsZSgsbSgsYygsaygsZygsbygsYKgsaKgsZKgsbKgsYqgsaqgsZqgsbqgsYagsaagsZagsbagsY6gsa6gsZ6gsb6gsYGgsaGgsZGgsbGgsYmgsamgsZmgsbmgsYWgsaWgsZWgsbWgsY2gsa2gsZ2gsb2gsYOgsaOgsZOgsbOgsYugsaugsZugsbugsYegsaegsZegsbegsY+gsa+gsZ+gsb+gsYBgsaBgsZBgsbBgsYhgsahgsZhgsbhgsYRgsaRgsZRgsbRgsYxgsaxgsZxgsbxgsYJgsaJgsZJgsbJgsYpgsapgsZpgsbpgsYZgsaZgsZZgsbZgsY5gsa5gsZ5gsb5gsYFgsaFgsZFgsbFgsYlgsalgsZlgsblgsYVgsaVgsZVgsbVgsY1gsa1gsZ1gsb1gsYNgsaNgsZNgsbNgsYtgsatgsZtgsbtgsYdgsadgsZdgsbdgsY9gsa9gsZ9gsb9gsYDgsaDgsZDgsbDgsYjgsajgsZjgsbjgsYTgsaTgsZTgsbTgsYzgsazgsZzgsbzgsYLgsaLgsZLgsbLgsYrgsargsZrgsbrgsYbgsabgsZbgsbbgsY7gsa7gsZ7gsb7gsYHgsaHgsZHgsbHgsYngsangsZngsbngsYXgsaXgsZXgsbXgsY3gsa3gsZ3gsb3gsYPgsaPgsZPgsbPgsYvgsavgsZvgsbvgsYA4f79jT8IGgMKGgMJGgMLGoMIGoMKGoMJGoMLGkMIGkMKGkMJGkMLGsMIGsMKGsMJGsMLGiMIGiMKGiMJGiMLGqMIGqMKGqMJGqMLGmMIGmMKGmMJGmMLGuMIGuMKGuMJGuMLGn8UNP4kaPxZ0PiLoPFXQeNvgsbfBY0JBI0JBY2JBI2JBY1JBI1JBY3JBI3JBY0pBI0pBY2pBI2pBY1pBI1pBY3pBI3pBY0ZBI0ZBY2ZBI2ZBY1ZBI1ZBY3ZBI3ZBY05BI05BY25BI25BY15BI15BY35BI35BY0FBI0FBY2FBI2FBY1FBI1FBY3FBI3FBY0lBI0lBY2lBI2lBY1lBI1lBY3lBI3lBY0VBI0VBY2VBI2VBY1VBI1VBY3VBI3VBY01BI01BY21BI21BY11BI11BY31BI31BY0NBI0NBY2NBI2NBY1NBI1NBY3NBI3NBY0tBI0tBY2tBI2tBY1tBI1tBY3tBI3tBY0dBI0dBY2dBI2dBY1dBI1dBY3dBI3dBY09BI09BY29BI29BY19BI19BY39BI39BY0DBI0DBY2DBI2DBY1DBI1DBY3DBI3DBY0jBI0jBY2jBI2jBY1jBI1jBY3jBI3jBY0TBI0TBY2TBI2TBY1TBI1TBY3TBI3TBY0zBI0zBY2zBI2zBY1zBI1zBY3zBI3zBY0LBI0LBY2LBI2LBY1LBI1LBY3LBI3LBY0rBI0rBY2rBI2rBY1rBI1rBY3rBI3rBY0bBI0bBY2bBI2bBY1bBI1bBY3bBI3bBY07BI07BY27BI27BY17BI17BY37BI37BY0HBI0HBY2HBI2HBY1HBI1HBY3HBI3HBY0nBI0nBY2nBI2nBY1nBI1nBY3nBI3nBY0XBI0XBY2XBI2XBY1XBI1XBY3XBI3XBY03BI03BY23BI23BY13BI13BY33BI33BY0PBI0PBY2PBI2PBY1PBI1PBY3PBI3PBY0vBI0vBY2vBI2vBY1vBI1vBY3vBI3vBY0fBI0fBY2fBI2fBY1fBI1fBY3fBI3fBY0Bwv/7G38QNAYUNAYSNAYWNAYRNAYVNAYTNAYXNIYQNIYUNIYSNIYWNIYRNIYVNIYTNIYXNEYQNEYUNEYSNEYWNEYRNEYVNEYTNEYXNMYQNMYUNMYSNMYWNMYRNMYVNMYTNMYXNP4oaPxJ0PizoPEXQeOvgsbfBI2/CxoTCBoTChoTCRoTCxqTCBqTChqTCRqTCxpTCBpTChpTCRpTCxrTCBrTChrTCRrTCxozCBozChozCRozCxqzCBqzChqzCRqzCxpzCBpzChpzCRpzCxrzCBrzChrzCRrzCxoLCBoLChoLCRoLCxqLCBqLChqLCRqLCxpLCBpLChpLCRpLCxrLCBrLChrLCRrLCxorCBorChorCRorCxqrCBqrChqrCRqrCxprCBprChprCRprCxrrCBrrChrrCRrrCxobCBobChobCRobCxqbCBqbChqbCRqbCxpbCBpbChpbCRpbCxrbCBrbChrbCRrbCxo7CBo7Cho7CRo7Cxq7CBq7Chq7CRq7Cxp7CBp7Chp7CRp7Cxr7CBr7Chr7CRr7CxoHCBoHChoHCRoHCxqHCBqHChqHCRqHCxpHCBpHChpHCRpHCxrHCBrHChrHCRrHCxonCBonChonCRonCxqnCBqnChqnCRqnCxpnCBpnChpnCRpnCxrnCBrnChrnCRrnCxoXCBoXChoXCRoXCxqXCBqXChqXCRqXCxpXCBpXChpXCRpXCxrXCBrXChrXCRrXCxo3CBo3Cho3CRo3Cxq3CBq3Chq3CRq3Cxp3CBp3Chp3CRp3Cxr3CBr3Chr3CRr3CxoPCBoPChoPCRoPCxqPCBqPChqPCRqPCxpPCBpPChpPCRpPCxrPCBrPChrPCRrPCxovCBovChovCRovCxqvCBqvChqvCRqvCxpvCBpvChpvCRpvCxrvCBrvChrvCRrvCxofCBofChofCRofCxqfCBqfChqfCRqfCxpfCBpfChpfCRpfCxrfCBrfChrfCRrfCxo/CBo/Cho/CRo/Cxq/CBq/Chq/CRq/CxoDRPj3N/4gaAwoaAwkaAwsaAwiaAwqaAwmaAwuaAwhaAwpaAwlaAwtaAwjaAwraAwnaAwvaIwgaIwoaIwkaIwsaIwiaIwqaIwmaIwuaIwhaIwpaIwlaIwtaIwjaIwraIwnaIwvaPxR0PiToPFnQeMvgsZfBY2/CRp/FzQmEDQmFDQmEjQmFjQmETQmFTQmEzQmFzSmEDSmFDSmEjSmFjSmETSmFTSmEzSmFzRmEDRmFDRmEjRmFjRmETRmFTRmEzRmFzTmEDTmFDTmEjTmFjTmETTmFTTmEzTmFzQWEDQWFDQWEjQWFjQWETQWFTQWEzQWFzSWEDSWFDSWEjSWFjSWETSWFTSWEzSWFzRWEDRWFDRWEjRWFjRWETRWFTRWEzRWFzTWEDTWFDTWEjTWFjTWETTWFTTWEzTWFzQ2EDQ2FDQ2EjQ2FjQ2ETQ2FTQ2EzQ2FzS2EDS2FDS2EjS2FjS2ETS2FTS2EzS2FzR2EDR2FDR2EjR2FjR2ETR2FTR2EzR2FzT2EDT2FDT2EjT2FjT2ETT2FTT2EzT2FzQOEDQOFDQOEjQOFjQOETQOFTQOEzQOFzSOEDSOFDSOEjSOFjSOETSOFTSOEzSOFzROEDROFDROEjROFjROETROFTROEzROFzTOEDTOFDTOEjTOFjTOETTOFTTOEzTOFzQuEDQuFDQuEjQuFjQuETQuFTQuEzQuFzSuEDSuFDSuEjSuFjSuETSuFTSuEzSuFzRuEDRuFDRuEjRuFjRuETRuFTRuEzRuFzTuEDTuFDTuEjTuFjTuETTuFTTuEzTuFzQeEDQeFDQeEjQeFjQeETQeFTQeEzQeFzSeEDSeFDSeEjSeFjSeETSeFTSeEzSeFzReEDReFDReEjReFjReETReFTReEzReFzTeEDTeFDTeEjTeFjTeETTeFTTeEzTeFzQ+EDQ+FDQ+EjQ+FjQ+ETQ+FTQ+EzQ+FzS+EDS+FDS+EjS+FjS+ETS+FTS+EzS+FzR+EDR+FDR+EjR+FjR+ETR+FTR+EzR+FzQGiPjvb/xB0BhQ0BhI0BhY0BhE0BhU0BhM0Bhc0BhC0BhS0BhK0Bha0BhG0BhW0BhO0Bhe0BhB0BhR0BhJ0BhZ0BhF0BhV0BhN0Bhd0BhD0BhT0BhL0Bhb0BhH0BhX0BhP0Bhf0PijoPEnQePPgsZfBI2/Chp/EzT+LmhMIGhMKGhMJGhMLGhMImhMKmhMJmhMLmhMIWhMKWhMJWhMLWhMI2hMK2hMJ2hML2jMIGjMKGjMJGjMLGjMImjMKmjMJmjMLmjMIWjMKWjMJWjMLWjMI2jMK2jMJ2jML2gsIGgsKGgsJGgsLGgsImgsKmgsJmgsLmgsIWgsKWgsJWgsLWgsI2gsK2gsJ2gsL2isIGisKGisJGisLGisImisKmisJmisLmisIWisKWisJWisLWisI2isK2isJ2isL2hsIGhsKGhsJGhsLGhsImhsKmhsJmhsLmhsIWhsKWhsJWhsLWhsI2hsK2hsJ2hsL2jsIGjsKGjsJGjsLGjsImjsKmjsJmjsLmjsIWjsKWjsJWjsLWjsI2jsK2jsJ2jsL2gcIGgcKGgcJGgcLGgcImgcKmgcJmgcLmgcIWgcKWgcJWgcLWgcI2gcK2gcJ2gcL2icIGicKGicJGicLGicImicKmicJmicLmicIWicKWicJWicLWicI2icK2icJ2icL2hcIGhcKGhcJGhcLGhcImhcKmhcJmhcLmhcIWhcKWhcJWhcLWhcI2hcK2hcJ2hcL2jcIGjcKGjcJGjcLGjcImjcKmjcJmjcLmjcIWjcKWjcJWjcLWjcI2jcK2jcJ2jcL2g8IGg8KGg8JGg8LGg8Img8Kmg8Jmg8Lmg8IWg8KWg8JWg8LWg8I2g8K2g8J2g8L2i8IGi8KGi8JGi8LGi8Imi8Kmi8Jmi8Lmi8IWi8KWi8JWi8LWi8I2i8K2i8J2i8L2h8IGh8KGh8JGh8LGh8Imh8Kmh8Jmh8Lmh8IWh8KWh8JWh8LWh8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NoLGtoLGdoLG9oLGDoLGjoLGToLGzoLGLoLGroLGboLG7oLGHoLGnoLGXoLG3oLGPoLGvoLGfoLG/oLGAYLGgYLGQYLGwYLGIYLGoYLGYYLG4YLGEYLGkYLGUYLG0YLGMYLGsYLGcYLG8YLGCYLGiYLGSYLGyYLGKYLGqYLGaYLG6YLGGYLGmYLGWYLG2YLGOYLGuYLGeYLG+YLGBYLGhYLGRYLGxYLGJYLGpYLGZYLG5YLGFYLGlYLGVYLG1YLGNYLGtYLGdYLG9YLGDYLGjYLGTYLGzYLGLYLGrYLGbYLG7YLGHYLGnYLGXYLG3YLGPYLGvYLGfYLG/YLGA4LGg4LGQ4LGw4LGI4LGo4LGY4LG44LGE4LGk4LGU4LG04LGM4LGs4LGc4LG84LGC4LGi4LGS4LGy4LGK4LGq4LGa4LG64LGG4LGm4LGW4LG24LGO4LGu4LGe4LG+4LGB4LGh4LGR4LGx4LGJ4LGp4LGZ4LG54LGF4LGl4LGV4LG14LGN4LGt4LGd4LG94LGD4LGj4LGT4LGz4LGL4LGr4LGb4LG74LGANH+/Y0/CBoDChoDCRoDCxqDCBqDChqDCRqDCxpDCBpDChpDCRpDCxrDCBrDChrDCRrDCxojCBojChojCRojCxqjCBqjChqjCRqjCxpjCBpjChpjCRpjCxrjCBrjChrjCRrjCxp/FDT+JGj8WdD4i6DxV0Hjb4LG3wWNCQSNCQWNiQSNiQWNSQSNSQWNyQSNyQWNKQSNKQWNqQSNqQWNaQSNaQWN6QSN6QWNGQSNGQWNmQSNmQWNWQSNWQWN2QSN2QWNOQSNOQWNuQSNuQWNeQSNeQWN+QSN+QWNBQSNBQWNhQSNhQWNRQSNRQWNxQSNxQWNJQSNJQWNpQSNpQWNZQSNZQWN5QSN5QWNFQSNFQWNlQSNlQWNVQSNVQWN1QSN1QWNNQSNNQWNtQSNtQWNdQSNdQWN9QSN9QWNDQSNDQWNjQSNjQWNTQSNTQWNzQSNzQWNLQSNLQWNrQSNrQWNbQSNbQWN7QSN7QWNHQSNHQWNnQSNnQWNXQSNXQWN3QSN3QWNPQSNPQWNvQSNvQWNfQSNfQWN/QSN/QWNAwSNAwWNgwSNgwWNQwSNQwWNwwSNwwWNIwSNIwWNowSNowWNYwSNYwWN4wSN4wWNEwSNEwWNkwSNkwWNUwSNUwWN0wSN0wWNMwSNMwWNswSNswWNcwSNcwWN8wSN8wWNCwSNCwWNiwSNiwWNSwSNSwWNywSNywWNKwSNKwWNqwSNqwWNawSNawWN6wSN6wWNGwSNGwWNmwSNmwWNWwSNWwWN2wSN2wWNOwSNOwWNuwSNuwWNewSNewWN+wSN+wWNBwSNBwWNhwSNhwWNRwSNRwWNxwSNxwWNJwSNJwWNpwSNpwWNZwSNZwWN5wSN5wWNFwSNFwWNlwSNlwWNVwSNVwWN1wSN1wWNNwSNNwWNtwSNtwWNdwSNdwWN9wSN9wWNDwSNDwWNjwSNjwWNTwSNTwWNzwSNzwWNLwSNLwWNrwSNrwWNbwSNbwWN7wSN7wWNHwSNHwWNnwSNnwWNXwSNXwWN3wSN3wWNAaL/+xt/EDQGFDQGEjQGFjQGETQGFTQGEzQGFzSGEDSGFDSGEjSGFjSGETSGFTSGEzSGFzRGEDRGFDRGEjRGFjRGETRGFTRGEzRGFzTGEDTGFDTGEjTGFjTGETTGFTTGEzTGFzT+KGj8SdD4s6DxF0Hjr4LG3wSNvwsaEwgaEwoaEwkaEwsakwgakwoakwkakwsaUwgaUwoaUwkaUwsa0wga0woa0wka0wsaMwgaMwoaMwkaMwsaswgaswoaswkaswsacwgacwoacwkacwsa8wga8woa8wka8wsaCwgaCwoaCwkaCwsaiwgaiwoaiwkaiwsaSwgaSwoaSwkaSwsaywgaywoaywkaywsaKwgaKwoaKwkaKwsaqwgaqwoaqwkaqwsaawgaawoaawkaawsa6wga6woa6wka6wsaGwgaGwoaGwkaGwsamwgamwoamwkamwsaWwgaWwoaWwkaWwsa2wga2woa2wka2wsaOwgaOwoaOwkaOwsauwgauwoauwkauwsaewgaewoaewkaewsa+wga+woa+wka+wsaBwgaBwoaBwkaBwsahwgahwoahwkahwsaRwgaRwoaRwkaRwsaxwgaxwoaxwkaxwsaJwgaJwoaJwkaJwsapwgapwoapwkapwsaZwgaZwoaZwkaZwsa5wga5woa5wka5wsaFwgaFwoaFwkaFwsalwgalwoalwkalwsaVwgaVwoaVwkaVwsa1wga1woa1wka1wsaNwgaNwoaNwkaNwsatwgatwoatwkatwsadwgadwoadwkadwsa9wga9woa9wka9wsaDwgaDwoaDwkaDwsajwgajwoajwkajwsaTwgaTwoaTwkaTwsazwgazwoazwkazwsaLwgaLwoaLwkaLwsarwgarwoarwkarwsabwgabwoabwkabwsa7wga7woa7wka7wsaHwgaHwoaHwkaHwsanwganwoanwkanwsaXwgaXwoaXwkaXwsa3wga3woa3wka3wsaPwgaPwoaPwkaPwsavwgavwoavwkavwsaA8T49zf+IGgMKGgMJGgMLGgMImgMKmgMJmgMLmgMIWgMKWgMJWgMLWgMI2gMK2gMJ2gML2iMIGiMKGiMJGiMLGiMImiMKmiMJmiMLmiMIWiMKWiMJWiMLWiMI2iMK2iMJ2iML2j8UdD4k6DxZ0HjL4LGXwWNvwkafxc0JhA0JhQ0JhI0JhY0JhE0JhU0JhM0Jhc0phA0phQ0phI0phY0phE0phU0phM0phc0ZhA0ZhQ0ZhI0ZhY0ZhE0ZhU0ZhM0Zhc05hA05hQ05hI05hY05hE05hU05hM05hc0FhA0FhQ0FhI0FhY0FhE0FhU0FhM0Fhc0lhA0lhQ0lhI0lhY0lhE0lhU0lhM0lhc0VhA0VhQ0VhI0VhY0VhE0VhU0VhM0Vhc01hA01hQ01hI01hY01hE01hU01hM01hc0NhA0NhQ0NhI0NhY0NhE0NhU0NhM0Nhc0thA0thQ0thI0thY0thE0thU0thM0thc0dhA0dhQ0dhI0dhY0dhE0dhU0dhM0dhc09hA09hQ09hI09hY09hE09hU09hM09hc0DhA0DhQ0DhI0DhY0DhE0DhU0DhM0Dhc0jhA0jhQ0jhI0jhY0jhE0jhU0jhM0jhc0ThA0ThQ0ThI0ThY0ThE0ThU0ThM0Thc0zhA0zhQ0zhI0zhY0zhE0zhU0zhM0zhc0LhA0LhQ0LhI0LhY0LhE0LhU0LhM0Lhc0rhA0rhQ0rhI0rhY0rhE0rhU0rhM0rhc0bhA0bhQ0bhI0bhY0bhE0bhU0bhM0bhc07hA07hQ07hI07hY07hE07hU07hM07hc0HhA0HhQ0HhI0HhY0HhE0HhU0HhM0Hhc0nhA0nhQ0nhI0nhY0nhE0nhU0nhM0nhc0XhA0XhQ0XhI0XhY0XhE0XhU0XhM0Xhc03hA03hQ03hI03hY03hE03hU03hM03hc0PhA0PhQ0PhI0PhY0PhE0PhU0PhM0Phc0vhA0vhQ0vhI0vhY0vhE0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", "debug_symbols": "1ZbbSsNAEIbfZa9D2TnsKa8iXkStUChtaYMgpe9uUjPpVqcGtyjkKln4v8yXneyQo1lvn5t2td0cTH00AKZ+OJrDrtn0y0Pb7FtT28osNy/d9VSZ19V6aWpkd6q+5cClIQkRxmz0ShSJw5BFtjyGIUXtwQBBJAA69ir/WBnAmXrTf3lzBPF2DHd78z3ezno/RB1YfzEHzcVaFBWLmbmzSpqThB2GS5b5bO1mae1naR00a8DkpADZeOXeQ1GFKLFAjmDihT1LhRiyzbF4LpDUAiFdDpKLEwU4BNHh2D0229GuAto/r6DOaEg4Dia09HVnUR2QiEAjFNLkuCFJg88/paHhC719FESMUshKkFCphNL3eZKCIgp/TSEsSO8TxnGyYja1wTrhsJCjQo4LOXWaQvRRuJSNheQF85MYoYKFMiyWYakAwxsfys/npseoDLvRODtKYojXjetWb81+1Tytl/3/Xrds33eft6cP" }, { "name": "broadcast_unconstrained_function", "function_type": "Secret", "is_internal": false, "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "artifact_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "function_data", "type": { "kind": "struct", "path": "events::unconstrained_function_broadcasted::UnconstrainedFunction", "fields": [{ "name": "selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "metadata_hash", "type": { "kind": "field" } }, { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }] }, "visibility": "private" }], "param_witnesses": { "artifact_function_tree_sibling_path": [{ "start": 44, "end": 49 }], "artifact_metadata_hash": [{ "start": 42, "end": 43 }], "contract_class_id": [{ "start": 41, "end": 42 }], "function_data": [{ "start": 49, "end": 551 }], "inputs": [{ "start": 0, "end": 41 }], "private_functions_artifact_tree_root": [{ "start": 43, "end": 44 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_key_validation_requests", "type": { "kind": "array", "length": 1, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [574, 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791] }, "bytecode": "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", "debug_symbols": "1ZjdaoQwEIXfJdeyzEwmf75K6YVtt7CwuMsqhSK+e2Nr1KUBIQsLc6WB8+kXTDzioM6X96Y/XdpO1YNCUvXLoLpr007Drm9uvaqhUsf2Ix7HSn2ezkdVE5ux+pdDE+Ykelyy3maipNnNWWLgJYzB5y6M6JIEYmTv8q+VQi3Um4V6G6HeVqi3E+rthXoHmd4EQr1RqLfQviShfUlC+5KE9iUJ7UsS2pcktC/paX3JHpO3YXzUWz/UlwasnaMGwa7mmHMBoKQCtDE3kElzSGFDbs0y/1qjSGsSaZ1tSkadxJkD3rlPULam2EBau2ys290UWqc52O2EZ60DZzslTt2vU9/cBChxtpBzhZwv5LLvFPR24cKGC3bGDOximjIYlmFUhukCjA/5z82dlRIxXYZlVzHS+uDI+XW/QFz6cfTV3E7N2/k4/U+Kw/77+nc6/gA=" }, { "name": "broadcast_private_function", "function_type": "Secret", "is_internal": false, "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "artifact_metadata_hash", "type": { "kind": "field" }, "visibility": "private" }, { "name": "unconstrained_functions_artifact_tree_root", "type": { "kind": "field" }, "visibility": "private" }, { "name": "private_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "artifact_function_tree_sibling_path", "type": { "kind": "array", "length": 5, "type": { "kind": "field" } }, "visibility": "private" }, { "name": "function_data", "type": { "kind": "struct", "path": "events::private_function_broadcasted::PrivateFunction", "fields": [{ "name": "selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "metadata_hash", "type": { "kind": "field" } }, { "name": "vk_hash", "type": { "kind": "field" } }, { "name": "bytecode", "type": { "kind": "array", "length": 500, "type": { "kind": "field" } } }] }, "visibility": "private" }], "param_witnesses": { "artifact_function_tree_sibling_path": [{ "start": 49, "end": 54 }], "artifact_metadata_hash": [{ "start": 42, "end": 43 }], "contract_class_id": [{ "start": 41, "end": 42 }], "function_data": [{ "start": 54, "end": 557 }], "inputs": [{ "start": 0, "end": 41 }], "private_function_tree_sibling_path": [{ "start": 44, "end": 49 }], "unconstrained_functions_artifact_tree_root": [{ "start": 43, "end": 44 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_key_validation_requests", "type": { "kind": "array", "length": 1, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [581, 582, 583, 584, 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 718, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746, 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, 766, 767, 768, 769, 770, 771, 772, 773, 774, 775, 776, 777, 778, 779, 780, 781, 782, 783, 784, 785, 786, 787, 788, 789, 790, 791, 792, 793, 794, 795, 796, 797, 798] }, "bytecode": "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", "debug_symbols": "1ZjdaoMwGIbvJcdSvr/ExFsZO3BbB4ViS5XBEO99cfOvLCCkUPiONPA+8kQTX7E358t73Z0uTWuq3iCZ6qU37bVuxmHb1bfOVFCYY/MRj0NhPk/no6lI7FD8y6ENUxI9LlnvElFiKacsCcgSxuBTF0YsZwnEyN7lXwuDrNRblHpbpd5OqXep1Nsr9Q46vQmUeqNSb6V9SUr7kpT2JSntS1Lal6S0L0lpX5LSvuSn9aV4nL2t4MPeD/WlBeemqEVwqzmmXABoVgHamFtIpCXMYUvlmhX5tSaV1qzSOtmUDDRvHxbiO/cRStYUC/MChbC7KZY0uu2EJ60DJ98Vcep+nfo6HQKaOIFMDjM5yuSS6wW9W7iw4YKbMdnFmBKYzcNcHlZmYPaQ/kzeWSkR4zwsfSdpfXBU+nW/QFz6cfRV30712/k4/geLw+77+nc6/AA=" }, { "name": "compute_note_hash_and_nullifier", "function_type": "Unconstrained", "is_internal": false, "abi": { "parameters": [{ "name": "contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] }, "visibility": "private" }, { "name": "nonce", "type": { "kind": "field" }, "visibility": "private" }, { "name": "storage_slot", "type": { "kind": "field" }, "visibility": "private" }, { "name": "note_type_id", "type": { "kind": "field" }, "visibility": "private" }, { "name": "serialized_note", "type": { "kind": "array", "length": 20, "type": { "kind": "field" } }, "visibility": "private" }], "param_witnesses": { "contract_address": [{ "start": 0, "end": 1 }], "nonce": [{ "start": 1, "end": 2 }], "note_type_id": [{ "start": 3, "end": 4 }], "serialized_note": [{ "start": 4, "end": 24 }], "storage_slot": [{ "start": 2, "end": 3 }] }, "return_type": { "abi_type": { "kind": "array", "length": 4, "type": { "kind": "field" } }, "visibility": "public" }, "return_witnesses": [24, 25, 26, 27] }, "bytecode": "H4sIAAAAAAAA/+2YS1KEQAyG09C8wefooLPhCFCycOldvP8VLIl25AedlelFqiZVXfQDOl9CV0g4EZGjb0mXltFvkfW3cB3/J5PiXmNMTmeEMzHCmSpyMtuB4p5TH8Gv2oyZAcbcAGNhgLE0wFgZYKwNMDYGGFsDjJ0BxisDjNcGGG8MMN4aYLwzwHhvgPFggPHBAOOjAcajIqMDRh/6/dKelva8tNPSXsJ8SasMWgzz9M45uyjvaSucmyQy8OtcKtwwJ/wJzMk/htSvNuTqNowz71to7xtqhR787/X9/1qCnxTZY/nk68zKWczD3qInA19Voa/4b2VC3S60CnRSeEfSP9IqFfTlTAt3S+u5rM4843fPdLCe/2H3oGx3ASwDjEVfFuxg4fyo91tuZqv12eaGtrGJxe3GA/TryL6KZOfI+zZhrw/S/U614J9y56cO1hu4p43gOwd6ZW8ZI+OF98KLDPWOtYH1CuaSnS2YS+D9+/ihapAoxGTHBThe44DJwZSDekFroKrBMH4JXMxzsczBlos9Lqa4WOFigJNtTmbxA3QuwfuRT4hpJ8qiGQAA", "debug_symbols": "q1bKyU9OLMnMzytWsqqu1VEqSyzKTEzKSYVySyoLIMxaAA==" }, { "name": "constructor", "function_type": "Secret", "is_internal": false, "abi": { "parameters": [{ "name": "inputs", "type": { "kind": "struct", "path": "aztec::context::inputs::private_context_inputs::PrivateContextInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "private_global_variables", "type": { "kind": "struct", "path": "aztec::context::globals::private_global_variables::PrivateGlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] } }] }, "visibility": "private" }], "param_witnesses": { "inputs": [{ "start": 0, "end": 41 }] }, "return_type": { "abi_type": { "kind": "struct", "path": "aztec::protocol_types::abis::private_circuit_public_inputs::PrivateCircuitPublicInputs", "fields": [{ "name": "call_context", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::call_context::CallContext", "fields": [{ "name": "msg_sender", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "storage_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "function_selector", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::function_selector::FunctionSelector", "fields": [{ "name": "inner", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "is_delegate_call", "type": { "kind": "boolean" } }, { "name": "is_static_call", "type": { "kind": "boolean" } }, { "name": "is_contract_deployment", "type": { "kind": "boolean" } }, { "name": "start_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "args_hash", "type": { "kind": "field" } }, { "name": "return_values", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "min_revertible_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "note_hash_read_requests", "type": { "kind": "array", "length": 32, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_read_requests", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::read_request::ReadRequest", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "nullifier_key_validation_requests", "type": { "kind": "array", "length": 1, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::nullifier_key_validation_request::NullifierKeyValidationRequest", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "secret_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_private_key::GrumpkinPrivateKey", "fields": [{ "name": "high", "type": { "kind": "field" } }, { "name": "low", "type": { "kind": "field" } }] } }] } } }, { "name": "new_note_hashes", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffect", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "new_nullifiers", "type": { "kind": "array", "length": 16, "type": { "kind": "struct", "path": "aztec::protocol_types::abis::side_effect::SideEffectLinkedToNoteHash", "fields": [{ "name": "value", "type": { "kind": "field" } }, { "name": "note_hash", "type": { "kind": "field" } }, { "name": "counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } } }, { "name": "private_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "public_call_stack_hashes", "type": { "kind": "array", "length": 4, "type": { "kind": "field" } } }, { "name": "new_l2_to_l1_msgs", "type": { "kind": "array", "length": 2, "type": { "kind": "struct", "path": "aztec::protocol_types::messaging::l2_to_l1_message::L2ToL1Message", "fields": [{ "name": "recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "content", "type": { "kind": "field" } }] } } }, { "name": "end_side_effect_counter", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }, { "name": "encrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "unencrypted_logs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "encrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "unencrypted_log_preimages_length", "type": { "kind": "field" } }, { "name": "historical_header", "type": { "kind": "struct", "path": "aztec::protocol_types::header::Header", "fields": [{ "name": "last_archive", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "content_commitment", "type": { "kind": "struct", "path": "aztec::protocol_types::content_commitment::ContentCommitment", "fields": [{ "name": "tx_tree_height", "type": { "kind": "field" } }, { "name": "txs_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "in_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }, { "name": "out_hash", "type": { "kind": "array", "length": 2, "type": { "kind": "field" } } }] } }, { "name": "state", "type": { "kind": "struct", "path": "aztec::protocol_types::state_reference::StateReference", "fields": [{ "name": "l1_to_l2_message_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "partial", "type": { "kind": "struct", "path": "aztec::protocol_types::partial_state_reference::PartialStateReference", "fields": [{ "name": "note_hash_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "nullifier_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "contract_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }, { "name": "public_data_tree", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::append_only_tree_snapshot::AppendOnlyTreeSnapshot", "fields": [{ "name": "root", "type": { "kind": "field" } }, { "name": "next_available_leaf_index", "type": { "kind": "integer", "sign": "unsigned", "width": 32 } }] } }] } }] } }, { "name": "global_variables", "type": { "kind": "struct", "path": "aztec::protocol_types::abis::global_variables::GlobalVariables", "fields": [{ "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }, { "name": "block_number", "type": { "kind": "field" } }, { "name": "timestamp", "type": { "kind": "field" } }, { "name": "coinbase", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "fee_recipient", "type": { "kind": "struct", "path": "aztec::protocol_types::address::aztec_address::AztecAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }] } }, { "name": "contract_deployment_data", "type": { "kind": "struct", "path": "aztec::protocol_types::contrakt::contract_deployment_data::ContractDeploymentData", "fields": [{ "name": "public_key", "type": { "kind": "struct", "path": "aztec::protocol_types::grumpkin_point::GrumpkinPoint", "fields": [{ "name": "x", "type": { "kind": "field" } }, { "name": "y", "type": { "kind": "field" } }] } }, { "name": "initialization_hash", "type": { "kind": "field" } }, { "name": "contract_class_id", "type": { "kind": "struct", "path": "aztec::protocol_types::contract_class_id::ContractClassId", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }, { "name": "contract_address_salt", "type": { "kind": "field" } }, { "name": "portal_contract_address", "type": { "kind": "struct", "path": "aztec::protocol_types::address::eth_address::EthAddress", "fields": [{ "name": "inner", "type": { "kind": "field" } }] } }] } }, { "name": "chain_id", "type": { "kind": "field" } }, { "name": "version", "type": { "kind": "field" } }] }, "visibility": "public" }, "return_witnesses": [45, 46, 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, 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, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262] }, "bytecode": "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", "debug_symbols": "1dJNCsMgEAXgu8zaxYxV23qV0sW0tSCICVEKRbx7Dc3PIrlAVjMPvsVbvAKhe3L2XUxgCxCBvRVIPccxpsxDBosCXHy1WwW8fXBgpdJVbJxGYyaqCc2iL7SDCVFOmFDSgknjjlbXGWt5Xq1S9S6A5CFbn47XuqUPD54fwY17aTF/+/9bfw==" }], "events": [], "file_map": { "81": { "source": "use crate::{\n context::{inputs::PrivateContextInputs, interface::ContextInterface},\n key::nullifier_key::validate_nullifier_key_against_address, messaging::process_l1_to_l2_message,\n oracle::{\n arguments, call_private_function::call_private_function_internal,\n enqueue_public_function_call::enqueue_public_function_call_internal, context::get_portal_address,\n header::get_header_at, nullifier_key::{get_nullifier_key_pair, NullifierKeyPair},\n debug_log::debug_log\n}\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext, function_data::FunctionData, function_selector::FunctionSelector,\n nullifier_key_validation_request::NullifierKeyValidationRequest,\n private_call_stack_item::PrivateCallStackItem,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_call_stack_item::PublicCallStackItem,\n public_circuit_public_inputs::PublicCircuitPublicInputs, read_request::ReadRequest,\n side_effect::{SideEffect, SideEffectLinkedToNoteHash}\n},\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_NEW_NOTE_HASHES_PER_CALL, MAX_NEW_L2_TO_L1_MSGS_PER_CALL, MAX_NEW_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PUBLIC_CALL_STACK_LENGTH_PER_CALL,\n MAX_PUBLIC_DATA_READS_PER_CALL, MAX_PUBLIC_DATA_UPDATE_REQUESTS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NULLIFIER_READ_REQUESTS_PER_CALL,\n MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL, NUM_FIELDS_PER_SHA256, RETURN_VALUES_LENGTH\n},\n contrakt::{storage_read::StorageRead, storage_update_request::StorageUpdateRequest},\n grumpkin_private_key::GrumpkinPrivateKey, hash::hash_args, header::Header,\n messaging::l2_to_l1_message::L2ToL1Message, utils::reader::Reader, traits::is_empty\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 min_revertible_side_effect_counter: u32,\n\n args_hash : Field,\n return_values : BoundedVec<Field, RETURN_VALUES_LENGTH>,\n\n note_hash_read_requests: BoundedVec<SideEffect, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n nullifier_key_validation_requests: BoundedVec<NullifierKeyValidationRequest, MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n new_note_hashes: BoundedVec<SideEffect, MAX_NEW_NOTE_HASHES_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<L2ToL1Message, 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 ContextInterface for PrivateContext {\n fn msg_sender(self) -> AztecAddress {\n self.inputs.call_context.msg_sender\n }\n\n fn this_address(self) -> AztecAddress {\n self.inputs.call_context.storage_contract_address\n }\n\n fn this_portal_address(self) -> EthAddress {\n self.inputs.call_context.portal_contract_address\n }\n\n fn chain_id(self) -> Field {\n self.inputs.private_global_variables.chain_id\n }\n\n fn version(self) -> Field {\n self.inputs.private_global_variables.version\n }\n\n 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 fn push_new_note_hash(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.new_note_hashes.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n fn push_new_nullifier(&mut self, nullifier: Field, nullified_commitment: Field) {\n let side_effect = SideEffectLinkedToNoteHash { value: nullifier, note_hash: nullified_commitment, counter: self.side_effect_counter };\n self.new_nullifiers.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n let side_effect_counter = inputs.call_context.start_side_effect_counter;\n let mut min_revertible_side_effect_counter = 0;\n if is_empty(inputs.call_context.msg_sender) {\n min_revertible_side_effect_counter = side_effect_counter;\n }\n PrivateContext {\n inputs,\n side_effect_counter,\n min_revertible_side_effect_counter,\n args_hash,\n return_values: BoundedVec::new(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n nullifier_key_validation_requests: BoundedVec::new(),\n new_note_hashes: BoundedVec::new(),\n new_nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_stack_hashes: BoundedVec::new(),\n public_call_stack_hashes: BoundedVec::new(),\n new_l2_to_l1_msgs: BoundedVec::new(),\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n // encrypted_logs_preimages: Vec::new(),\n // unencrypted_logs_preimages: Vec::new(),\n nullifier_key: Option::none()\n }\n }\n\n pub fn is_deployment(self) -> bool {\n // TODO(#4738): Implement this\n false\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 // TODO(fees): start this from 0 and test the following:\n // - in the private circuit init that it gets set correctly\n // - in the private circuit inner that it remains 0\n // I've had to initialize the counter here so that it would work for contract deployments\n // the above checks should be doable after we figure out fee payments for contract deployments\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n note_hash_read_requests: self.note_hash_read_requests.storage,\n nullifier_read_requests: self.nullifier_read_requests.storage,\n nullifier_key_validation_requests: self.nullifier_key_validation_requests.storage,\n new_note_hashes: self.new_note_hashes.storage,\n new_nullifiers: self.new_nullifiers.storage,\n private_call_stack_hashes: self.private_call_stack_hashes.storage,\n public_call_stack_hashes: self.public_call_stack_hashes.storage,\n new_l2_to_l1_msgs: self.new_l2_to_l1_msgs.storage,\n end_side_effect_counter: self.side_effect_counter,\n encrypted_logs_hash,\n unencrypted_logs_hash,\n encrypted_log_preimages_length,\n unencrypted_log_preimages_length,\n historical_header: self.historical_header,\n contract_deployment_data: self.inputs.contract_deployment_data,\n chain_id: self.inputs.private_global_variables.chain_id,\n version: self.inputs.private_global_variables.version\n };\n priv_circuit_pub_inputs\n }\n\n pub fn capture_min_revertible_side_effect_counter(&mut self) {\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = SideEffect { value: note_hash, counter: self.side_effect_counter };\n self.note_hash_read_requests.push(side_effect);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.side_effect_counter };\n self.nullifier_read_requests.push(request);\n self.side_effect_counter = self.side_effect_counter + 1;\n }\n\n pub fn request_nullifier_secret_key(&mut self, account: AztecAddress) -> GrumpkinPrivateKey {\n let key_pair = if self.nullifier_key.is_none() {\n let key_pair = get_nullifier_key_pair(account);\n validate_nullifier_key_against_address(account, key_pair.public_key);\n let request = NullifierKeyValidationRequest { public_key: key_pair.public_key, secret_key: key_pair.secret_key };\n self.nullifier_key_validation_requests.push(request);\n self.nullifier_key = Option::some(key_pair);\n key_pair\n } else {\n let key_pair = self.nullifier_key.unwrap_unchecked();\n // If MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL is larger than 1, need to update the way the key pair is cached.\n assert(MAX_NULLIFIER_KEY_VALIDATION_REQUESTS_PER_CALL == 1);\n assert(\n key_pair.account == account, \"Cannot query nullifier key for more than one account per call\"\n );\n key_pair\n };\n key_pair.secret_key\n }\n\n // docs:start:context_message_portal\n pub fn message_portal(&mut self, recipient: EthAddress, content: Field) {\n // docs:end:context_message_portal\n let message = L2ToL1Message { recipient, content };\n self.new_l2_to_l1_msgs.push(message);\n }\n\n // docs:start:context_consume_l1_to_l2_message\n // docs:start:consume_l1_to_l2_message\n pub fn consume_l1_to_l2_message(&mut self, content: Field, secret: Field, sender: EthAddress) {\n // docs:end:context_consume_l1_to_l2_message\n let nullifier = process_l1_to_l2_message(\n self.historical_header.state.l1_to_l2_message_tree.root,\n self.this_address(),\n sender,\n self.chain_id(),\n self.version(),\n content,\n secret\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_new_nullifier(nullifier, 0)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn accumulate_encrypted_logs<N>(&mut self, log: [Field; N]) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn accumulate_unencrypted_logs<T>(&mut self, log: T) {\n let _void1 = self.inputs;\n let _void2 = log;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1165)\n }\n\n pub fn call_private_function<ARGS_COUNT>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT]\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let args_hash = hash_args(args);\n assert(args_hash == arguments::pack_arguments(args));\n self.call_private_function_with_packed_args(contract_address, function_selector, args_hash, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_call_private_function_no_args<ARGS_COUNT>(\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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) -> [Field; RETURN_VALUES_LENGTH] {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let item = call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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, false, false)\n }\n\n pub fn static_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, true, false)\n }\n\n pub fn delegate_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, false, true)\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 is_static_call: bool,\n is_delegate_call: bool\n ) {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let fields = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n self.side_effect_counter,\n is_static_call,\n is_delegate_call\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_note_hashes: [SideEffect::empty(); MAX_NEW_NOTE_HASHES_PER_CALL],\n new_nullifiers: [SideEffectLinkedToNoteHash::empty(); MAX_NEW_NULLIFIERS_PER_CALL],\n new_l2_to_l1_msgs: [L2ToL1Message::empty(); 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 assert(item.public_inputs.call_context.is_delegate_call == is_delegate_call);\n assert(item.public_inputs.call_context.is_static_call == is_static_call);\n assert(item.public_inputs.call_context.is_contract_deployment == false);\n\n if (is_delegate_call) {\n // For delegate calls, we also constrain the execution context address for the nested call to be equal to our address.\n assert(\n item.public_inputs.call_context.storage_contract_address.eq(self.inputs.call_context.storage_contract_address)\n );\n assert(item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.msg_sender));\n } else {\n // For non-delegate calls, we also constrain the execution context address for the nested call to be equal to the address we called.\n assert(item.public_inputs.call_context.storage_contract_address.eq(contract_address));\n assert(\n item.public_inputs.call_context.msg_sender.eq(self.inputs.call_context.storage_contract_address)\n );\n }\n\n self.public_call_stack_hashes.push(item.hash());\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr" }, "84": { "source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::oracle;\nuse dep::protocol_types::{address::AztecAddress, grumpkin_point::GrumpkinPoint};\n\npub fn emit_encrypted_log<N>(\n context: &mut PrivateContext,\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n log: [Field; N]\n) {\n let _ = oracle::logs::emit_encrypted_log(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n log\n );\n context.accumulate_encrypted_logs(log);\n}\n\npub fn emit_unencrypted_log<T>(context: &mut PublicContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n\n// TODO: We might want to remove this since emitting unencrypted logs from private functions is violating privacy.\n// --> might be a better approach to force devs to make a public function call that emits the log if needed then\n// it would be less easy to accidentally leak information.\n// If we decide to keep this function around would make sense to wait for traits and then merge it with emit_unencrypted_log.\npub fn emit_unencrypted_log_from_private<T>(context: &mut PrivateContext, log: T) {\n let contract_address = context.this_address();\n let event_selector = 5; // TODO: compute actual event selector.\n let _ = oracle::logs::emit_unencrypted_log(contract_address, event_selector, log);\n // context.accumulate_unencrypted_logs(log);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/log.nr" }, "86": { "source": "use dep::protocol_types::{hash::hash_args, traits::Hash};\n\nstruct Hasher {\n fields: [Field],\n}\n\nimpl Hash for Hasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl Hasher {\n pub fn new() -> Self {\n Self { fields: [] }\n }\n\n pub fn add(&mut self, field: Field) {\n self.fields = self.fields.push_back(field);\n }\n\n pub fn add_multiple<N>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hasher.nr" }, "96": { "source": "// Utility function to console.log data in the acir simulator\n// WARNING: sometimes when using debug logs the ACVM errors with: `thrown: \"solver opcode resolution error: cannot solve opcode: expression has too many unknowns x155\"`\n\n#[oracle(debugLog)]\nfn debug_log_oracle<T, N>(_msg: T, _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_format_oracle<T, N>(_msg: T, _args: [Field; N], _num_args: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_field_oracle(_field: Field) -> Field {}\n#[oracle(debugLog)]\nfn debug_log_array_oracle<T, N>(_arbitrary_array: [T; N]) -> Field {}\n#[oracle(debugLogWithPrefix)]\nfn debug_log_array_with_prefix_oracle<S, T, N>(_prefix: S, _arbitrary_array: [T; N]) -> Field {}\n\n/// NOTE: call this with a str<N> msg of length > 1\n/// Example:\n/// `debug_log(\"blah blah this is a debug string\");`\nunconstrained pub fn debug_log<T>(msg: T) {\n assert(debug_log_oracle(msg, 0) == 0);\n}\n\n/// NOTE: call this with a str<N> msg of form\n/// \"some string with {0} and {1} ... {N}\"\n/// and an array of N field which will be formatted\n/// into the string in the simulator.\n/// Example:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\nunconstrained pub fn debug_log_format<T, N>(msg: T, args: [Field; N]) {\n assert(debug_log_format_oracle(msg, args, args.len() as Field) == 0);\n}\n\n/// Example:\n/// `debug_log_field(my_field);`\nunconstrained pub fn debug_log_field(field: Field) {\n assert(debug_log_field_oracle(field) == 0);\n}\n\n/// Example:\n/// `debug_log_array(my_array);`\nunconstrained fn debug_log_array<T, N>(arbitrary_array: [T; N]) {\n assert(debug_log_array_oracle(arbitrary_array) == 0);\n}\n\n/// Example:\n/// `debug_log_array_with_prefix(\"Prefix\", my_array);`\nunconstrained pub fn debug_log_array_with_prefix<S, T, N>(prefix: S, arbitrary_array: [T; N]) {\n assert(debug_log_array_with_prefix_oracle(prefix, arbitrary_array) == 0);\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/debug_log.nr" }, "105": { "source": "use dep::protocol_types::{address::AztecAddress, constants::NUM_FIELDS_PER_SHA256, grumpkin_point::GrumpkinPoint};\n\n// TODO: Should take encrypted data.\n#[oracle(emitEncryptedLog)]\nfn emit_encrypted_log_oracle<N>(\n _contract_address: AztecAddress,\n _storage_slot: Field,\n _note_type_id: Field,\n _encryption_pub_key: GrumpkinPoint,\n _preimage: [Field; N]\n) -> Field {}\n\nunconstrained pub fn emit_encrypted_log<N>(\n contract_address: AztecAddress,\n storage_slot: Field,\n note_type_id: Field,\n encryption_pub_key: GrumpkinPoint,\n preimage: [Field; N]\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n [\n emit_encrypted_log_oracle(\n contract_address,\n storage_slot,\n note_type_id,\n encryption_pub_key,\n preimage\n ), 0\n ]\n}\n\n#[oracle(emitUnencryptedLog)]\nfn emit_unencrypted_log_oracle<T>(\n _contract_address: AztecAddress,\n _event_selector: Field,\n _message: T\n) -> Field {}\n\nunconstrained pub fn emit_unencrypted_log<T>(\n contract_address: AztecAddress,\n event_selector: Field,\n message: T\n) -> [Field; NUM_FIELDS_PER_SHA256] {\n // https://github.com/AztecProtocol/aztec-packages/issues/885\n [emit_unencrypted_log_oracle(contract_address, event_selector, message), 0]\n}\n", "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/logs.nr" }, "144": { "source": "use crate::{\n crate::address::{eth_address::EthAddress, partial_address::PartialAddress, public_keys_hash::PublicKeysHash},\n constants::{AZTEC_ADDRESS_LENGTH, GENERATOR_INDEX__CONTRACT_ADDRESS},\n contract_class_id::ContractClassId, hash::pedersen_hash, grumpkin_point::GrumpkinPoint,\n traits::{Empty, ToField, Serialize, Deserialize}, utils\n};\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_LENGTH> for AztecAddress {\n fn serialize(self: Self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn deserialize(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n AztecAddress::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute_from_public_key(\n pub_key: GrumpkinPoint,\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n portal_contract_address: EthAddress\n ) -> AztecAddress {\n AztecAddress::compute(\n PublicKeysHash::compute(pub_key),\n PartialAddress::compute(\n contract_class_id,\n salt,\n initialization_hash,\n portal_contract_address\n )\n )\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 { inner: result }\n }\n}\n\n#[test]\nfn compute_address() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let contract_address_salt = 3;\n let contract_class_id = ContractClassId::from_field(4);\n let initialization_hash = 5;\n let portal_contract_address = EthAddress::from_field(6);\n\n let address = AztecAddress::compute_from_public_key(\n point,\n contract_class_id,\n contract_address_salt,\n initialization_hash,\n portal_contract_address\n );\n\n assert(address.to_field() == 0x2fd71a4f0742364f194dd16d0ae32d2f47845ddc7f5d328f37d4148b565c4123);\n}\n\n#[test]\nfn compute_address_from_partial_and_pubkey() {\n let point = GrumpkinPoint { x: 1, y: 2 };\n let partial_address = PartialAddress::from_field(3);\n\n let address = AztecAddress::compute(PublicKeysHash::compute(point), partial_address);\n assert(address.to_field() == 0x0447f893197175723deb223696e2e96dbba1e707ee8507766373558877e74197);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr" }, "150": { "source": "use dep::std::cmp::Eq;\n\n// Trait: is_empty\n//\n// The general is_empty trait checks if a data type is is empty,\n// and it defines empty for the basic data types as 0.\n//\n// If a Field is equal to zero, then it is regarded as zero.\n// We will go with this definition for now, however it can be problematic \n// if a value can actually be zero. In a future refactor, we can \n// use the optional type for safety. Doing it now would lead to a worse devex\n// and would make it harder to sync up with the cpp code.\n// Preferred over Default trait to convey intent, as default doesn't necessarily mean empty.\ntrait Empty {\n fn empty() -> Self;\n}\n\nimpl Empty for Field { fn empty() -> Self {0} }\n\nimpl Empty for u1 { fn empty() -> Self {0} }\nimpl Empty for u8 { fn empty() -> Self {0} }\nimpl Empty for u32 { fn empty() -> Self {0} }\nimpl Empty for u64 { fn empty() -> Self {0} }\nimpl Empty for U128 { fn empty() -> Self {U128::from_integer(0)} }\n\npub fn is_empty<T>(item: T) -> bool where T: Empty + Eq {\n item.eq(T::empty())\n}\n\npub fn is_empty_array<T, N>(array: [T; N]) -> bool where T: Empty + Eq {\n array.all(|elem| is_empty(elem))\n}\n\ntrait Hash {\n fn hash(self) -> Field;\n}\n\ntrait ToField {\n fn to_field(self) -> Field;\n}\n\nimpl ToField for Field {\n fn to_field(self) -> Field {\n self\n }\n}\n\nimpl ToField for U128 {\n fn to_field(self) -> Field {\n self.to_integer()\n }\n}\n\n// docs:start:serialize\ntrait Serialize<N> {\n fn serialize(self) -> [Field; N];\n}\n// docs:end:serialize\n\n// docs:start:deserialize\ntrait Deserialize<N> {\n fn deserialize(fields: [Field; N]) -> Self;\n}\n// docs:end:deserialize\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/traits.nr" }, "198": { "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::contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage;\nuse crate::contract_class_id::ContractClassId;\nuse crate::abis::new_contract_data::NewContractData as ContractLeafPreimage;\nuse crate::abis::function_data::FunctionData;\nuse crate::abis::side_effect::{SideEffect};\nuse crate::utils::uint256::U256;\nuse crate::constants::{\n ARGS_HASH_CHUNK_COUNT, ARGS_HASH_CHUNK_LENGTH, CONTRACT_TREE_HEIGHT, FUNCTION_TREE_HEIGHT,\n NUM_FIELDS_PER_SHA256, GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__VK, GENERATOR_INDEX__CONSTRUCTOR, GENERATOR_INDEX__PARTIAL_ADDRESS,\n GENERATOR_INDEX__CONTRACT_ADDRESS, GENERATOR_INDEX__NOTE_HASH_NONCE,\n GENERATOR_INDEX__UNIQUE_NOTE_HASH, GENERATOR_INDEX__FUNCTION_ARGS\n};\nuse crate::messaging::l2_to_l1_message::L2ToL1Message;\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() {\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() {\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 silo_note_hash(address: AztecAddress, inner_commitment: Field) -> Field {\n pedersen_hash(\n [\n address.to_field(),\n inner_commitment\n ],\n GENERATOR_INDEX__SILOED_NOTE_HASH\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 chain_id: Field,\n message: L2ToL1Message\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs = [\n contract_address.to_field(), rollup_version_id, message.recipient.to_field(), chain_id, message.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_note_hash_nonce(first_nullifier: Field, commitment_index: u64) -> Field {\n pedersen_hash(\n [\n first_nullifier,\n commitment_index as Field\n ],\n GENERATOR_INDEX__NOTE_HASH_NONCE\n )\n}\n\npub fn compute_unique_siloed_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n pedersen_hash(\n [\n nonce,\n siloed_note_hash\n ],\n GENERATOR_INDEX__UNIQUE_NOTE_HASH\n )\n}\n\npub fn compute_unique_siloed_note_hashes<N>(\n first_nullifier: Field,\n siloed_note_hashes: [SideEffect; N]\n) -> [SideEffect; N] {\n let mut unique_siloed_note_hashes = [SideEffect::empty(); N];\n for i in 0..N {\n let siloed_note_hash = siloed_note_hashes[i];\n if siloed_note_hash.value != 0 {\n let nonce = compute_note_hash_nonce(first_nullifier, i);\n unique_siloed_note_hashes[i] = SideEffect {\n value: compute_unique_siloed_note_hash(nonce, siloed_note_hash.value),\n counter: siloed_note_hash.counter\n };\n }\n }\n unique_siloed_note_hashes\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\n#[test]\nfn smoke_sha256_to_field() {\n let full_buffer = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,\n 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,\n 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,\n 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,\n 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,\n 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,\n 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139,\n 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159\n ];\n let result = sha256_to_field(full_buffer);\n assert(result == 0x142a6d57007171f6eaa33d55976d9dbe739c889c8e920f115f7808dea184c718);\n}\n\n#[test]\nfn compute_var_args_hash() {\n let mut input = [0; 800];\n for i in 0..800 {\n input[i] = i as Field;\n }\n let hash = hash_args(input);\n assert(hash == 0x371960dd84ed3445ab099ac4c1af5ba90e0c713b593e0ca52ee532087c7f097);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(0), 0, 0, L2ToL1Message::empty());\n assert(hash_result == 0x2266ac2f9f0c19c015239ef5ea85862fc6fac00db73779b220a4d49c4856c2e1);\n\n // Non-zero case\n let message = L2ToL1Message { recipient: EthAddress::from_field(3), content: 5 };\n let hash_result = compute_l2_to_l1_hash(AztecAddress::from_field(1), 2, 4, message);\n assert(hash_result == 0x0f24729168d4450a5681beafa5e3a899ac28bd17bf5a4877dab37bcd834e1634);\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr" }, "202": { "source": "use crate::abis::{\n function_data::FunctionData, private_circuit_public_inputs::PrivateCircuitPublicInputs,\n public_circuit_public_inputs::PublicCircuitPublicInputs\n};\nuse crate::address::AztecAddress;\nuse crate::constants::{GENERATOR_INDEX__CONTRACT_LEAF};\nuse crate::traits::Hash;\n\nstruct ContractClassId {\n inner: Field\n}\n\nimpl Eq for ContractClassId {\n fn eq(self, other: ContractClassId) -> bool {\n other.inner == self.inner\n }\n}\n\nimpl ContractClassId {\n pub fn compute(\n artifact_hash: Field,\n private_functions_root: Field,\n public_bytecode_commitment: Field\n ) -> Self {\n let hash = dep::std::hash::pedersen_hash_with_separator(\n [\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ],\n GENERATOR_INDEX__CONTRACT_LEAF\n ); // TODO(@spalladino): Update generator index\n\n ContractClassId::from_field(hash)\n }\n\n fn to_field(self) -> Field {\n self.inner as Field\n }\n\n pub fn from_field(value: Field) -> Self {\n Self { inner: value }\n }\n\n pub fn serialize(self: Self) -> [Field; 1] {\n [self.inner]\n }\n\n pub fn deserialize(fields: [Field; 1]) -> Self {\n Self { inner: fields[0] }\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n", "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_class_id.nr" }, "243": { "source": "// Copied from noir-contracts/contracts/slow_tree_contract/src/capsule.nr\n// We should extract this to a shared lib in aztec-nr once we settle on a design for capsules\n\n#[oracle(popCapsule)]\nfn pop_capsule_oracle<N>() -> [Field; N] {}\n\n// A capsule is a \"blob\" of data that is passed to the contract through an oracle.\nunconstrained pub fn pop_capsule<N>() -> [Field; N] {\n pop_capsule_oracle()\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/capsule.nr" }, "245": { "source": "mod events;\nmod capsule;\n\ncontract ContractClassRegisterer {\n use dep::aztec::prelude::{AztecAddress, EthAddress, FunctionSelector, emit_unencrypted_log};\n use dep::aztec::protocol_types::{\n contract_class_id::ContractClassId,\n constants::{\n ARTIFACT_FUNCTION_TREE_MAX_HEIGHT, FUNCTION_TREE_HEIGHT,\n MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS, REGISTERER_CONTRACT_CLASS_REGISTERED_MAGIC_VALUE\n },\n traits::{Serialize}\n };\n\n use dep::aztec::log::{emit_unencrypted_log_from_private};\n\n use crate::events::{\n class_registered::ContractClassRegistered,\n private_function_broadcasted::{ClassPrivateFunctionBroadcasted, PrivateFunction},\n unconstrained_function_broadcasted::{ClassUnconstrainedFunctionBroadcasted, UnconstrainedFunction}\n };\n\n use crate::capsule::pop_capsule;\n\n #[aztec(private)]\n fn constructor() {}\n\n #[aztec(private)]\n fn register(artifact_hash: Field, private_functions_root: Field, public_bytecode_commitment: Field) {\n // TODO: Validate public_bytecode_commitment is the correct commitment of packed_public_bytecode\n // TODO: Validate packed_public_bytecode is legit public bytecode\n\n let packed_public_bytecode: [Field; MAX_PACKED_PUBLIC_BYTECODE_SIZE_IN_FIELDS] = pop_capsule();\n\n // Compute contract class id from preimage\n let contract_class_id = ContractClassId::compute(\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n );\n\n // Emit the contract class id as a nullifier to be able to prove that this class has been (not) registered\n let event = ContractClassRegistered { contract_class_id, version: 1, artifact_hash, private_functions_root, packed_public_bytecode };\n context.push_new_nullifier(contract_class_id.to_field(), 0);\n\n // Broadcast class info including public bytecode\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ContractClassRegistered\",\n [\n contract_class_id.to_field(),\n artifact_hash,\n private_functions_root,\n public_bytecode_commitment\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_private_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n unconstrained_functions_artifact_tree_root: Field,\n private_function_tree_sibling_path: [Field; FUNCTION_TREE_HEIGHT],\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: PrivateFunction\n ) {\n let event = ClassPrivateFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n private_function_tree_sibling_path,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ClassPrivateFunctionBroadcasted\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n unconstrained_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.vk_hash,\n function_data.metadata_hash\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n\n #[aztec(private)]\n fn broadcast_unconstrained_function(\n contract_class_id: ContractClassId,\n artifact_metadata_hash: Field,\n private_functions_artifact_tree_root: Field,\n artifact_function_tree_sibling_path: [Field; ARTIFACT_FUNCTION_TREE_MAX_HEIGHT],\n function_data: UnconstrainedFunction\n ) {\n let event = ClassUnconstrainedFunctionBroadcasted {\n contract_class_id,\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n artifact_function_tree_sibling_path,\n function: function_data\n };\n dep::aztec::oracle::debug_log::debug_log_array_with_prefix(\n \"ClassUnconstrainedFunctionBroadcasted\",\n [\n contract_class_id.to_field(),\n artifact_metadata_hash,\n private_functions_artifact_tree_root,\n function_data.selector.to_field(),\n function_data.metadata_hash\n ]\n );\n emit_unencrypted_log_from_private(&mut context, event.serialize());\n }\n}\n", "path": "/usr/src/noir-projects/noir-contracts/contracts/contract_class_registerer_contract/src/main.nr" } } }
|