@aztec/accounts 0.66.0 → 0.67.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/artifacts/EcdsaKAccount.json +297 -302
- package/artifacts/EcdsaRAccount.json +271 -276
- package/artifacts/SchnorrAccount.json +659 -672
- package/artifacts/SchnorrSingleKeyAccount.json +110 -110
- package/dest/testing/configuration.js +4 -4
- package/package.json +12 -8
- package/src/testing/configuration.ts +3 -3
|
@@ -1,8 +1,134 @@
|
|
|
1
1
|
{
|
|
2
2
|
"transpiled": true,
|
|
3
|
-
"noir_version": "1.0.0-beta.0+
|
|
3
|
+
"noir_version": "1.0.0-beta.0+b3f4ad661c8c6f88544d714fd5b7b6f58a8ce4ad-x8664",
|
|
4
4
|
"name": "EcdsaKAccount",
|
|
5
5
|
"functions": [
|
|
6
|
+
{
|
|
7
|
+
"name": "sync_notes",
|
|
8
|
+
"is_unconstrained": true,
|
|
9
|
+
"custom_attributes": [],
|
|
10
|
+
"abi": {
|
|
11
|
+
"error_types": {
|
|
12
|
+
"17843811134343075018": {
|
|
13
|
+
"error_kind": "string",
|
|
14
|
+
"string": "Stack too deep"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"parameters": [],
|
|
18
|
+
"return_type": null
|
|
19
|
+
},
|
|
20
|
+
"bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
|
|
21
|
+
"debug_symbols": "ndLNCoQgFAXgd7nrFvlX2avEEFYWgmiYDQzRu49FMzRDG9tcPOJ33ZwFOtnMQ61MbycoqwW0bYVX1oS0rAk0Tmmthvp8Dek2ENrfT6MwW5y8cB5KTEgC0nThRFHwvdISSsLz9ZEAwvGExBMaT1g0wZe/cMKzw3CKyRdxtBt2w2Q3TH7DFPGGXFaA04J9DEvpj1lDegqnRKPl0bB+Nu2pcP41yr/ujc62spud3Fp4KmCYFcoTjMPasPoN",
|
|
22
|
+
"brillig_names": [
|
|
23
|
+
"sync_notes"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
28
|
+
"is_unconstrained": true,
|
|
29
|
+
"custom_attributes": [],
|
|
30
|
+
"abi": {
|
|
31
|
+
"error_types": {
|
|
32
|
+
"11091894166229312484": {
|
|
33
|
+
"error_kind": "fmtstring",
|
|
34
|
+
"item_types": [],
|
|
35
|
+
"length": 20
|
|
36
|
+
},
|
|
37
|
+
"16761564377371454734": {
|
|
38
|
+
"error_kind": "string",
|
|
39
|
+
"string": "Array index out of bounds"
|
|
40
|
+
},
|
|
41
|
+
"17843811134343075018": {
|
|
42
|
+
"error_kind": "string",
|
|
43
|
+
"string": "Stack too deep"
|
|
44
|
+
},
|
|
45
|
+
"2920182694213909827": {
|
|
46
|
+
"error_kind": "string",
|
|
47
|
+
"string": "attempt to subtract with overflow"
|
|
48
|
+
},
|
|
49
|
+
"5019202896831570965": {
|
|
50
|
+
"error_kind": "string",
|
|
51
|
+
"string": "attempt to add with overflow"
|
|
52
|
+
},
|
|
53
|
+
"8270195893599566439": {
|
|
54
|
+
"error_kind": "string",
|
|
55
|
+
"string": "Invalid public keys hint for address"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"parameters": [
|
|
59
|
+
{
|
|
60
|
+
"name": "contract_address",
|
|
61
|
+
"type": {
|
|
62
|
+
"fields": [
|
|
63
|
+
{
|
|
64
|
+
"name": "inner",
|
|
65
|
+
"type": {
|
|
66
|
+
"kind": "field"
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
],
|
|
70
|
+
"kind": "struct",
|
|
71
|
+
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
72
|
+
},
|
|
73
|
+
"visibility": "private"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "nonce",
|
|
77
|
+
"type": {
|
|
78
|
+
"kind": "field"
|
|
79
|
+
},
|
|
80
|
+
"visibility": "private"
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"name": "storage_slot",
|
|
84
|
+
"type": {
|
|
85
|
+
"kind": "field"
|
|
86
|
+
},
|
|
87
|
+
"visibility": "private"
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"name": "note_type_id",
|
|
91
|
+
"type": {
|
|
92
|
+
"kind": "field"
|
|
93
|
+
},
|
|
94
|
+
"visibility": "private"
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
"name": "compute_nullifier",
|
|
98
|
+
"type": {
|
|
99
|
+
"kind": "boolean"
|
|
100
|
+
},
|
|
101
|
+
"visibility": "private"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"name": "serialized_note",
|
|
105
|
+
"type": {
|
|
106
|
+
"kind": "array",
|
|
107
|
+
"length": 5,
|
|
108
|
+
"type": {
|
|
109
|
+
"kind": "field"
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
"visibility": "private"
|
|
113
|
+
}
|
|
114
|
+
],
|
|
115
|
+
"return_type": {
|
|
116
|
+
"abi_type": {
|
|
117
|
+
"kind": "array",
|
|
118
|
+
"length": 4,
|
|
119
|
+
"type": {
|
|
120
|
+
"kind": "field"
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
"visibility": "public"
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"bytecode": "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",
|
|
127
|
+
"debug_symbols": "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",
|
|
128
|
+
"brillig_names": [
|
|
129
|
+
"compute_note_hash_and_optionally_a_nullifier"
|
|
130
|
+
]
|
|
131
|
+
},
|
|
6
132
|
{
|
|
7
133
|
"name": "verify_private_authwit",
|
|
8
134
|
"is_unconstrained": false,
|
|
@@ -402,7 +528,7 @@
|
|
|
402
528
|
}
|
|
403
529
|
],
|
|
404
530
|
"kind": "struct",
|
|
405
|
-
"path": "authwit::aztec::protocol_types::
|
|
531
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
406
532
|
}
|
|
407
533
|
},
|
|
408
534
|
{
|
|
@@ -1501,7 +1627,7 @@
|
|
|
1501
1627
|
}
|
|
1502
1628
|
],
|
|
1503
1629
|
"kind": "struct",
|
|
1504
|
-
"path": "authwit::aztec::protocol_types::
|
|
1630
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
1505
1631
|
}
|
|
1506
1632
|
},
|
|
1507
1633
|
{
|
|
@@ -1612,8 +1738,8 @@
|
|
|
1612
1738
|
"visibility": "databus"
|
|
1613
1739
|
}
|
|
1614
1740
|
},
|
|
1615
|
-
"bytecode": "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",
|
|
1616
|
-
"debug_symbols": "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",
|
|
1741
|
+
"bytecode": "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",
|
|
1742
|
+
"debug_symbols": "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rtgortgortgortgortgortgortiortiortiortiortiortiortiortiortiortiorthorthorthorthorthorthorthorthorthorthontjQlFyo7EKRC8UulLhQ6kKZC1VcqOpCuWIju2Iju2Iju2Iju2Iju2Iju2Iju2Iju2Iju2LDdS6qrnNRdZ2LqutcVF3nouo6F1XXuai6zkXVdS6qrnNRdZ2LqutcVF3nouo6F9UvOBe9+emB9dcNufKlS0aucv2tLc1/mpD+JrS/CetvovQ3UfubaN1NfMGR8lebyP1NUH8T/We39J/d0n92S//ZLf1nt/Sf3dJ/dmv/2a39Z/fjf8hku3G3Pv6HTJjmH8NhTktChEaI0QgJGqHHNxnM9UooLwkZGqGCRqiiEWpghB7/QyZ7hDIaocdn6s3ffNDH/5DJHiFBI6RohAyNUEEjVNEINTBCNaERAvsxHK1ombqiZerH/9TL9s9J6+N/6iXz7KHMy0Lx8T/1skeogRF6/E+97BF6/I+UklwJlSUhQiPEaIQEjZCiETI0QgWN0OMzdb7+riwtC8XH/9TLNiF7/E+97BHKaIQIjRCjERI0QopGyNAIFTRCYJnaElqmXv9Upkm9vJBoml4rWW396xWh+dfPhcqVV25rDyHJLg8hJLcXf7Ig3S1odwvW3ULpbqF2t9B6W1j/bGXDwidQ9oDIA+oeJtI9TKR7mEj3MNHU3ULuboG6W2BHiKt4QG9N0N9Nf+SXS9c/r85pPqHMiW8+M6krXijpssSWTLeXTszWv8M+7vb29bdnvtxe2uvblwNuT5fbG7++fe17+/b1t6/zXquVV7df/6j8uNvnr759pcvsrPI6ctY/U3/j7S/7vnrzU46fb89ff/tyGdq6dI4cePv2alpNf9Cn1LC+jJQ55eVrxPHk4LsxsQ3Jb4fQ2yH8doi8ETL9xS9Xrr8knd57XQZn+ufV41RejK2/x9zGrL9q3MFkB4YcGHZgxIFRB8YcmOLAOOKgOuKgOeKgOeKgOeKgOeKgOeKgOeJg/fD+rz/G2F5jigNTHZj2dkxeP0neA+VdUJEF6I7r6uUbrekQmRag1WcyshlEbQFalzXugbIHRB7Q+jMpX7YG09a8vAatr5J7oOwBkQfEHpCsg8xmUK0LkHpA5gEVD6jughq/Bq1r3MzyDJriaAFiD0g8IPWA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",
|
|
1617
1743
|
"brillig_names": [
|
|
1618
1744
|
"get_note_internal",
|
|
1619
1745
|
"decompose_hint",
|
|
@@ -1625,8 +1751,8 @@
|
|
|
1625
1751
|
"directive_integer_quotient",
|
|
1626
1752
|
"directive_to_radix"
|
|
1627
1753
|
],
|
|
1628
|
-
"verification_key": "
|
|
1629
|
-
"artifact_hash": "
|
|
1754
|
+
"verification_key": "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",
|
|
1755
|
+
"artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-ea7f8c857358e3ae7e35547db539287f-client-ivc-true"
|
|
1630
1756
|
},
|
|
1631
1757
|
{
|
|
1632
1758
|
"name": "constructor",
|
|
@@ -1684,10 +1810,6 @@
|
|
|
1684
1810
|
"error_kind": "string",
|
|
1685
1811
|
"string": "attempt to add with overflow"
|
|
1686
1812
|
},
|
|
1687
|
-
"5727012404371710682": {
|
|
1688
|
-
"error_kind": "string",
|
|
1689
|
-
"string": "push out of bounds"
|
|
1690
|
-
},
|
|
1691
1813
|
"6485997221020871071": {
|
|
1692
1814
|
"error_kind": "string",
|
|
1693
1815
|
"string": "call to assert_max_bit_size"
|
|
@@ -1699,10 +1821,6 @@
|
|
|
1699
1821
|
"8193989641828211937": {
|
|
1700
1822
|
"error_kind": "string",
|
|
1701
1823
|
"string": "ciphertext length mismatch"
|
|
1702
|
-
},
|
|
1703
|
-
"8270195893599566439": {
|
|
1704
|
-
"error_kind": "string",
|
|
1705
|
-
"string": "Invalid public keys hint for address"
|
|
1706
1824
|
}
|
|
1707
1825
|
},
|
|
1708
1826
|
"parameters": [
|
|
@@ -2048,7 +2166,7 @@
|
|
|
2048
2166
|
}
|
|
2049
2167
|
],
|
|
2050
2168
|
"kind": "struct",
|
|
2051
|
-
"path": "authwit::aztec::protocol_types::
|
|
2169
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
2052
2170
|
}
|
|
2053
2171
|
},
|
|
2054
2172
|
{
|
|
@@ -3166,7 +3284,7 @@
|
|
|
3166
3284
|
}
|
|
3167
3285
|
],
|
|
3168
3286
|
"kind": "struct",
|
|
3169
|
-
"path": "authwit::aztec::protocol_types::
|
|
3287
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
3170
3288
|
}
|
|
3171
3289
|
},
|
|
3172
3290
|
{
|
|
@@ -3277,15 +3395,14 @@
|
|
|
3277
3395
|
"visibility": "databus"
|
|
3278
3396
|
}
|
|
3279
3397
|
},
|
|
3280
|
-
"bytecode": "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",
|
|
3281
|
-
"debug_symbols": "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pKTtyVLczYaUWaSk7UkjJW1PGilpe9KMPbQ9aaSk7ckipdH2pJGStieNlLQ9aaSk7UkjpSFlFilpe9JISduTRkranizFndH2pJGStieLlAttTxopaXuyjD0LbU8aKWl70khpSJlFStqeNFLS9qSRkrYnjZS0PWmkpO3JIuVK25NGStqeLMXdStuTRkranjRSGlJmkZK2J83YQ9uTRkranjRS0vakkZK2J4uUG21PGilpe9JISduTRkranjRSGlJmkZK2J0txt9H2pJGStieNlLQ9aaSk7cky9uy0PWmkpO1JIyVtTxopaXvSSGlImUVK2p40UtL2pJGStieNlLQ9aaSk7clS3B20PWmkpO1JIyVtTxopaXuyjD2HIWUWKWl70khJ25NGStqeNFLS9qSRkrYniZTTQNuTRkranjRS0vakkZK2J0lxNw2GlFmkpO1JIyVtTxopaXvSjD20PWmkpO3JIuVI25NGStqeNFLS9qSRkrYnjZSGlFmkpO1JIyVtTxopaXuyFHcjbU8aKWl7skg50fakkZK2J8vYM9H2pJGStieNlIaUWaSk7UkjJW1PGilpe9JISduTRkranixSzrQ9aaSk7clS3M20PWmkpO1JI6UhZRYpaXvSjD20PWmkpO1JIyVtTxopaXuySGm0PWmkpO1JIyVtTxopaXvSSGlImUVK2p4sxZ3R9qSRkrYnjZS0PWmkpO3JMvYstD1ppKTtSSMlbU8aKWl70khpSJlFStqeNFLS9qSRkrYnjZS0PWmkpO3JUtyttD1ppKTtSSMlbU8aKWl7sow9qyFlFilpe9JISduTRkranjRS0vakkZK2J4uUG21PGilpe9JISduTRkranizF3WZImUVK2p40UtL2pJGStifN2EPbk0ZK2p4sUu60PWmkpO1JIyVtTxopaXvSSGlImUVK2p40UtL2pJGStidLcbfT9qSRkrYni5QHbU8aKWl7sow9B21PGilpe9JIaUiZRUranjRS0vakkZK2J42UtD1ppKTtSSLlPND2pJGStidJcTcPtD1ppKTtSSOlIWUWKWl70ow9tD1ppKTtSSMlbU8aKWl7skg50vakkZK2J42UtD1ppKTtSSOlIWUWKWl7shR3I21PGilpe9JISduTRkranixjz0Tbk0ZK2p40UtL2pJGStieNlIaUWaSk7UkjJW1PGilpe9JISduT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",
|
|
3398
|
+
"bytecode": "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",
|
|
3399
|
+
"debug_symbols": "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",
|
|
3282
3400
|
"brillig_names": [
|
|
3283
3401
|
"get_contract_instance_internal",
|
|
3284
3402
|
"decompose_hint",
|
|
3285
3403
|
"lte_hint",
|
|
3286
|
-
"get_public_keys_and_partial_address",
|
|
3287
3404
|
"notify_created_note_oracle_wrapper",
|
|
3288
|
-
"
|
|
3405
|
+
"debug_log_oracle_wrapper",
|
|
3289
3406
|
"get_random_bytes",
|
|
3290
3407
|
"random",
|
|
3291
3408
|
"field_less_than",
|
|
@@ -3297,28 +3414,8 @@
|
|
|
3297
3414
|
"directive_invert",
|
|
3298
3415
|
"directive_to_radix"
|
|
3299
3416
|
],
|
|
3300
|
-
"verification_key": "
|
|
3301
|
-
"artifact_hash": "
|
|
3302
|
-
},
|
|
3303
|
-
{
|
|
3304
|
-
"name": "sync_notes",
|
|
3305
|
-
"is_unconstrained": true,
|
|
3306
|
-
"custom_attributes": [],
|
|
3307
|
-
"abi": {
|
|
3308
|
-
"error_types": {
|
|
3309
|
-
"17843811134343075018": {
|
|
3310
|
-
"error_kind": "string",
|
|
3311
|
-
"string": "Stack too deep"
|
|
3312
|
-
}
|
|
3313
|
-
},
|
|
3314
|
-
"parameters": [],
|
|
3315
|
-
"return_type": null
|
|
3316
|
-
},
|
|
3317
|
-
"bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
|
|
3318
|
-
"debug_symbols": "ndLfCoMgFAbwdznXXcx/K3uVGGFlIYiG2WBE7z6LNtroRm8OfuLvePMt0MlmHmplejtBWS2gbSu8siakZc2gcUprNdTna7htA6H9/TQKs8XJC+ehxIRkIE0XThQF3ystoSScro8MEI4nJJ7QeMKiCb78hVN2Owynef5FCOEdsRR0T0F5CioSELnsAWeEfxBjxS9aQ3wKp0Sj5dGzfjbtqXb+Ncq/Bo7OtrKbndy6eKphmBXKM4zD2rD6DQ==",
|
|
3319
|
-
"brillig_names": [
|
|
3320
|
-
"sync_notes"
|
|
3321
|
-
]
|
|
3417
|
+
"verification_key": "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",
|
|
3418
|
+
"artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-1c757b7d1c53b84df9236548d6bbfae9-client-ivc-true"
|
|
3322
3419
|
},
|
|
3323
3420
|
{
|
|
3324
3421
|
"name": "entrypoint",
|
|
@@ -3713,7 +3810,7 @@
|
|
|
3713
3810
|
}
|
|
3714
3811
|
],
|
|
3715
3812
|
"kind": "struct",
|
|
3716
|
-
"path": "authwit::aztec::protocol_types::
|
|
3813
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
3717
3814
|
}
|
|
3718
3815
|
},
|
|
3719
3816
|
{
|
|
@@ -4976,7 +5073,7 @@
|
|
|
4976
5073
|
}
|
|
4977
5074
|
],
|
|
4978
5075
|
"kind": "struct",
|
|
4979
|
-
"path": "authwit::aztec::protocol_types::
|
|
5076
|
+
"path": "authwit::aztec::protocol_types::block_header::BlockHeader"
|
|
4980
5077
|
}
|
|
4981
5078
|
},
|
|
4982
5079
|
{
|
|
@@ -5087,8 +5184,8 @@
|
|
|
5087
5184
|
"visibility": "databus"
|
|
5088
5185
|
}
|
|
5089
5186
|
},
|
|
5090
|
-
"bytecode": "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",
|
|
5091
|
-
"debug_symbols": "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6mje80FaFEsdzXs+SItiqaN5zwdpUSx1NO/5IC2KpY7mPR+kRbHU0bzng7Qoljqa93yQFsVSR/OeD9KiWOpo3vNBWhRLobznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeG8p7bijvuaG854byntsiqLQkljKU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDe847ynneU97yjvOcd5T3vi6DSkliqo7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5z/vrvec5X6efc22jtHX9n8ubV9X0Oe33BCl8guw9gfZ8TWC5DHacpeuOs9xvdlxBpRVU2opK21BpFZXWUGn7wdK2ck1rN8zT3DPPpmnd89GmaY/GUs/THo2lnqcVVNqjsdTztEdjqedpj8ZSz9MejaWep0WxlKJYSlEspSiWUhRLvd5P/ta0KJZS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zXs+SEtiKVkElZbEUnI07/kgLYml5Gje80FaFEsdzXs+SItiqaN5zwdpUSx1NO/5IC2KpY7mPR+kRbHU0bzng7Qoljqa93yQFsVSR/OeD9KiWOpo3vNBWhRLHc17PkiLYqmjec8HaVEsdTTv+SAtiqWO5j0fpEWx1NG854O0KJY6mvd8kBbFUkfzng/SoljqaN7zQVoUSx3Nez5Ii2Kpo3nPB2lRLHU07/kgLYqljuY9H6RFsdTRvOeDtCiWOpr3fJAWxVIo77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC85xXlPa8o73lFec8rynteF0GlJbFURXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcV5T2vKO95RXnPK8p7XlHe84rynleU97yivOcN5T1vKO95Q3nPG8p73hZBpSWxVEN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q3vOG8p43lPe8obznDeU9byjveUN5zxvKe95Q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uaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO+5oLzngvKeC8p7LijvuaC854LyngvKey4o77mgvOeC8p4LynsuKO95RXnPK8p7XlHe84ryntdFUGlJLFVR3vOK8p5XlPe8orznFeU9ryjveUV5z+s23nMt17S9DtJWXS5rUzV9rM0a/ceUxN+Uqr8pNX9TUn9TMn9T6u6mtI16etspbVFzbNHLlKzk4VW4flyF7XOANhUgRw9QogeQVwdY37td37unQYBk67Svb67fXvOskOc12PXdf7E+68u/B660wI0WWGmBjRa4wwJvomoOFTjRAmda4EILLLTANNIqNNIqNNIqxyKt9ZawXO8OS7mNeyzOGsWVY1HWMO6xGGsY91iENYx7LL4axhVW3GOx1TDuschqGPdYXDWM652qein5+sx9/Tb4NoF3UPri1+GWrl+HW/741uDH1+HVOydtm9Y7Jm2b1jslbZvWOyRtm1YOlraVa1q7+dFO9Y5I26b1TkjbpvUOSNumdc9Hm6Y9Gks9TduOxlLP0x6NpZ6nPRpLPU97NJZ6nlZQaVEs1VAs1VAs1VAs1VAspSiWUhRLKYqlFMVSmwia46RFsZSiWEpRLKUollIUSxmKpQzFUoZiKUOx1CaC5jhpUSxlKJYyFEsZiqUMxVIdxVIdxVIdxVIdxVKbCJrjpEWxVEexVEexVEexVCexVFtILNUWEku1hcRSbSGxVFsElZbEUm0hsVRbSCzVFhJLtQXFUgnFUgnFUgnFUgnFUpu4n+OkRbFUQrFUQrFUQrFUQrFURrFURrFURrFURrGUe//5tmlRLOXefL5tWhRLuXeeb5sWxVLubefbpkWxlHvP+bZpUSzl3nC+bVoUS7l3m2+bFsVS7q3m26ZFsZR7p/m2aVEs5d5ovm1aFEu595lvmxbFUu5t5tumRbGUf5f5pmlRLHU47/nztCiWOpz3/HlaFEuhvOcN5T1vKO95Q3nPG8p73lDe84bynjeU97yhvOcN5T1vKO95Q3nPG8p73lDe84bynjeU97yhvOcN5T1vKO95Q3nP29G85325/vXBnm7THoylBmkPxlKDtAdjqUHag7HUIO3BWOp52qN5zwdpD8ZSg7QHY6lB2oOx1CCtoNKiWOpo3vNBWhRLHc17PkiLYqmjec8HaVEsdTTv+SAtiqWO5j0fpEWx1NG854O0KJY6mvd8kJbEUno07/kgLYml9Gje80FaEkvpIqi0JJbSo3nPB2lJLKVH854P0qJY6mje80FaFEsdzXs+SItiqaN5zwdpUSx1NO/5IC2KpY7mPR+kRbHU0bzng7Qoljqa93yQFsVSR/OeD9KiWOpo3vNBWhRLHc17PkiLYqmjec8HaVEsdTTv+SAtiqWO5j0fpEWx1NG854O0KJY6mvd8kBbFUkfzng/SoljqaN7zQVoUSx3Nez5Ii2Kpo3nPB2lRLHU07/kgLYqljuY9H6RFsdTRvOeDtCiWOpr3fJAWxVJH854P0qJY6mje80FaFEsdzXs+SItiqaN5zwdpUSx1NO/5IC2KpY7mPR+kRbHU0bzng7Qoljqa93yQFsVSR/OeD9KiWArlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU99xQ3nNDec8N5T03lPfcFkGlJbGUobznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p53lPe8o7znHeU97yjveV8ElZbEUh3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zTvKey0Lynq9pQSy1pgWx1JoWxFJrWkGlBbHUmhbEUmtaEEutaUEstaZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqZFsRTJe76mRbEUyXu+pkWxFMl7vqYlsVRCec8TynueUN7zhPKep0VQaUkslVDe84TynieU9zyhvOcJ5T1PKO95QnnPE8p7nlDe84TynieU9zyhvOcJ5T1PKO95QnnPE8p7nlDe84TynieU9zyhvOcJ5T1PKO95QnnPE8p7nlDe84TynieU9zyhvOcJ5T1PKO95QnnPE8p7nlDe84TynieU9zyhvOcJ5T1PKO95QnnPE8p7nlDe84TynieU9zyhvOcJ5T1PKO95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77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynneU97yjvOcd5T3vKO95XwSVlsRSHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vOO8p53lPe8o7znHeU97yjveUd5zzvKe95R3vNO8p7XheQ9X9OCWGpNC2KpNS2Ipda0gkoLYqk1LYil1rQgllrTglhqTYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TYtiKZL3fE2LYimS93xNi2Ipkvd8TUtiqYTynieU9zyhvOcJ5T1Pi6DS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35kWxVKCYilBsZSgWEpQLFVRLFVRLFVRLFVRLPUGVfI706JYqqJYqqJYqqJYqqJYqqFYqqFYqqFYqqFY6g3a6nemRbFUQ7FUQ7FUQ7FUQ7GUolhKUSylKJZSFEu9wZ79zrQollIUSymKpRTFUopiKUOxlKFYylAsZSiWcu8/3zYtiqXcm8+3TYtiKffO823ToljKve1827QolnLvOd82LYql3BvOt02LYin3bvNt06JYyr3VfNu0JJZq7p3m26YlsVRzbzTfNi2JpdoiqLQklmrubebbpiWxVPPvMt80LYqlDuc9f54WxVKH854/T4tiKZT3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73k7mve8L9e/PtjTbdqDsdQg7cFYapD2YCw1SHswlhqkPRhLPU97NO/5IO3BWGqQ9mAsNUh7MJYapBVUWhRLHc17PkiLYqmjec8HaVEsdTTv+SAtiqWO5j0fpEWx1NG854O0KJY6mvd8kBbFUkfzng/SoljqaN7zQVoUSx3Nez5Ii2Kpo3nPB2lRLHU07/kgLYqljuY9H6RFsdTRvOeDtCiWOpr3fJAWxVJH854P0qJY6mje80FaFEsdzXs+SItiqaN5zwdpUSx1NO/5IC2KpY7mPR+kRbHU0bzng7Qoljqa93yQFsVSR/OeD9KiWOpo3vNBWhRLHc17PkiLYqmjec8HaVEsdTTv+SAtiaX0aN7zQVoSS+nRvOeDtCSW0kVQaUkspUfzng/SklhKj+Y9H6RFsdTRvOeDtCiWOpr3fJAWxVJH854P0qJY6mje80FaFEsdzXs+SItiqaN5zwdpUSx1NO/5IC2KpY7mPR+kRbHU0bzng7Qoljqa93yQFsVSR/OeD9KiWOpo3vNBWhRLobznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynhvKe24o77mhvOeG8p7bIqi0JJYylPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3vOO8p53lPe8o7znHeU974ug0pJYqqO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveUd7zjvKed5T3vKO85x3lPe8o73lHec87ynveSd7ztpC852taEEutaUEstaYFsdSaVlBpQSy1pgWx1JoWxFJrWhBLrWlRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lRLEXynq9pUSxF8p6vaVEsRfKer2lJLJVQ3vOE8p4nlPc8obznaRFUWhJLJZT3PKG85wnlPU8o73lCec8TynueUN7zhPKepzd4z4vY5b1/fr/naev6P5c3r6rpc9rvCWr4BM17Au35msByGew4S9cdZ7nf7DhFpTVU2k5K+wY/+TvTJlTajEpbDpa2lWtau2GeN/jJ35nWPR9tmvZoLPU87dFY6nnao7HU87RHY6mnacvRWOp52qOx1PO0R2Op52lRLPUGP/k706JYqqBYqqBYqqBYqqBYSlAsJSiWEhRLCYql3uAnf2daFEsJiqUExVKCYilBsVRFsVRFsVRFsVRFsdQb/OTvTItiqYpiqYpiqYpiqYpiqYZiqYZiqYZiqYZiqTf4yd+ZFsVSDcVSDcVSDcVSDcVSimIpRbGUolhKUSz1Bj/5O9OiWEpRLKUollIUSymKpQzFUoZiKUOxlKFY6g1+8nemRbGUoVjKUCxlKJYyFEt1FEt1FEt1FEt1FEu9wU/+zrQoluooluooluooluoklsoLiaXyQmKpvJBYKi8kllpjodKSWCovJJbKC4ml8kJiqbygWCqhWCp5Z6nW5eqwbr3p57TfE3jno3EC78wzTiDhE3hnk3EC77wxTuCdIcYJvHPBOIH3Wj9M4N61PU4Qvia7d2KPE4Svye7d1eME4Wuye8f0OEH4muzeBT1OEL4mu3c2jxOEr8nu3crjBOFrsnsH8jhB+Jrs3lU8ThC+Jrt3Co8ThK/J7t2/4wTha7J7R+84Qfia7N6lO04Qvia7d96OE4Svye7dtOME4Wuye4fsOEH4muze9TpOEL4mu3eyjhOEr8nu3anjBOFrsnvH6ThB+Jrs3kU6ThC+Jrt3ho4ThK/J7t2e4wTha7J7B+c4Qfia7N6VOU4Qvia7d1qOE4Svye7dk+ME4Wuye0fkOEH4muze5ThOEL4mu3cujhOEr8nu3YjjBOFrsnuH4ThB+Jrs3jU4ThC+Jrt3Ao4ThK/J7t194wTha7J7x944Qfia7N6FN04Qvia7d9aNE4Svye7dcuME4WuyewfcOEH0mlzcu9rGCaLX5OLeqTZOEL0mlyV6TS7ufWbjBNFrcnHvHRsniF6Ti3s/2DCBe+fXOEH4mhze41XCe7xKeI9XCe/xKuE9XiW8x6uE93iV8B6vEt7jVcJ7vEp4j1cJ7/Eq4T1eJbzHq4T3eJXwHq8S3uNVwnu8SniPVwnv8SrhPV4lvMerhPd4lfAerxLe41XCe7xKeI9XCe/xKuE9XiW8x6uE93iV8B6vEt7jVcJ7vEp4j1cJ7/Eq4T1eJbzHq4T3eJXwHq8S3uNVwnu8SniPVwnv8SrhPV4lvMerhPd4lfAerxLe41XCe7xKeI9XCe/xKuE9XiW8x6uE93iV8B6vEt7jVcJ7vEp4j1cJ7/Eq4T1eJbzHq4T3eJXwHq8S3uNVwnu8SniPVwnv8SrhPV4lvMerhPd4lfAerxLe41XCe7xKeI9XCe/xKuE9XiW8x6uE93iV8B6vEt7jVcJ7vEp4j1cJ7/Eq4T1eJbzHq4T3eJXwHi8J7/GS8B4vCe/xkvAeL1mi12QJ7/GS8B4vCe/xkvAeLwnv8ZLwHi8J7/GS8B4vCe/xkvAeLwnv8ZLwHi8J7/GS8B4vCe/xkvAeLwnv8ZLwHi8J7/GS8B4vCe/xkvAeLwnv8ZLwHi8J7/GS8B4v2cTj1fNyffWSBgmsSfvxamttub465+Xee6uV6+osH6uT78Zd8uWt06L184u/h82ksIUUVn5/2Lykj1fL6ESstlyWplr6xYl1561Tr5f5r/+2ense1ugBWvQAGj2ARQ/QgwfYQiH23gApeoAcPUCJHiB6JZbolTi8PEzCy8Mktjxs/Y9/+9uf/vznP/3nv/z5r//+r3//01//8t/fBi/f/tf9O0aV652CSvk4/Lf9eTtXSz9eWz7dVNTl29rdv0fb7u3Lvm8v+7593fft275vr/u+ve379n3Xt7/Pjtu9/b5nrex71sq+Z63se9bKvmet7HvWyr5nrex71sq+Z23d96yt+561dd+ztu571tZ9z9r61bP225g2MUYnxtjEmP71MW2ZGJMmxuSJMWVijEyMmdgHbWIftIl90Cb2QZvYBzqxD3RiH+jEPtCJfaAT+0An9oFO7AOd2Ac6sQ90Yh/YxD6wiX1gE/vAJvaBTewDe7APml7HNPv1mDYxRifG2MSY/vUxfZkYkybG5IkxZWKMTIyZ2Ad9Yh/0iX3QJ/bB/U5CbYtcxrSl/mpMut+8NxqUZgblmUFlZpDMDKozg9rMIJ0ZZDODZnZEmtkRaWZHpJkdkWZ2RJrZEWlmR6SZHZFmdkSa2RFpZkfkmR2RZ3ZEntkReWZH5JkdkWd2RJ7ZEXlmR9z/QaHW6/cKavqLQT89f3GXmyP0vY9w/wd5mx4h7X6EvPsRyu5HkN99BFG77Fax9PF0Zr3ufz9E3f8Qbf9D6P6HsP0P8ftPbLFy/RJ8/XL0F4e4fXWrly9SW/v0s8T085O7JIuv6SRf08kvnk6p+bJ7Sk/lZvdI8TYh8Tah6m1CzduE1NuEzNuEurMJ1cXbhJK3CXm7UldvV+rq7UpdvV2pq7crdfV2pa7ertTV25W6ebtSt32v1D8fIu9/iLL/IX7/9bHmbNdDFL09RN3/EG3/Q+i2hxC5PYTtf4i++yF02eAQ/XqIstx+Fpr2P0Te/xC//+yu5fqFXS223BzCNjiEXp8JV823V1qT/Q9R9z/EBhcQbel6CLs9L0z3P4Ttf4i+7SH67bPCvux/iLT/ITa4gPR8eUxXu+YBErV22eFN+z9+/UyvF1/TEV/Tqb6m03xNR31Nx3xNp3uaTl4WX9NJvqbj6qqcF1dX5by4uirnxdVVOS+ursp5cXVVzsvvvyq3ZbkgVVukDKazVsnLW6///DShXr9PqDubUFq8TSh5m1D2NqHibULy4gmtPHF5wrD+024nVL1NqHmbkHqbkHmbUHc2obx4m1DyNqHsbULF24S8Xamztyt19nalzt6u1NnblTp7u1IXb1fq8vor9dWpud4SttsJZW8TKt4mJN4mVL1NqHmbkHqbkHmbUHc2IVm8Tejlp326WvzWf+bbCb18U6d0rWUpp9sJvXxTp3bV363fyd1OqDubUF28TSh5m1D2NqHibULibUL1jRPKn34odZ1Q8zYh9Tah11+p60fpaLe1rHZnE2qLtwklbxPK3iZUvE1IvE2oepvQy6/U+WopXh/fLbcTUm8TMm8T6s4mpIu3CSVvE8reJlS8TUi8Tah6m9Drr0NdrhPqt49j7OVnWUmXV6//vL0NspefZaX264Ts9rcfVrxNSLxNqHqbUPM2IfU2IfM2of7GCcly+xS2L94mlLxN6A1X6o/SUW9rWS/eJiTeJlS9Tah5m5B6m5B5m1D3NaGyLN4mlLxNyNmVuizOrtRlcXalLouzK3VZnF2py7LvlfrnQ9j+h+i7H2LnBpifD5H2P0Te/xBbXJWuT+rbMm7tWq4PZ1pKdjsh8Tah6m1CzduE1NuEzNuE+q4T+naILRpJUr5eK1LpvzPzFo0k204oe5tQ8TYh8Tah6m1CbdcJ/XwI3f8Qtv8h+u6HKMv+h0j7H2ILxnu+aTdpgxgcQvY/RN3/EG3/Q+j+h7D9D9F3P8QmP+IfHCLtf4j9z27Z/+yW/c9u2f/slv3Pbtn/7Jb9z27Z/+yu+5/ddf+zu+5/dtf9z+66/9ld9z+76/5nd93/7K77n911/7O77X92t/3P7rb/2d32P7vb/md32//sbvuf3W3/s7vtf3a3/c9u3f/s1v3Pbt3/7Nb9z27d/+zW/c9u3f/s1v3Pbt3/7Nb9z27b/+y2/c9u2//stv3Pbtv/7Lb9z27b/+y2/c9u2//stv3P7r7/2d33P7v7/md33//s7vuf3X3/s7vvf3b3/c/uvv/Z3Xc/u2VZ9j9E2v8Qef9DlP0PIfsfou5/iLb/IXT/Q9j+h9j/7E77n91p/7M77X92p/3P7rT/2Z32P7vT/md32v/U+y0/rrPPh/g26Lf8XO52UJoZlGcGlZlBMjOozgxqM4N0ZpDNDJrZEWVmR5SZHVFmdkSZ2RFlZkeUmR1RZnZEmdkRZWZHlJkdITM7QmZ2hMzsCJnZETKzI2RmR8jMjpCZHSEzO0JmdkSd2RF1ZkfUmR1RZ3ZEndkRdWZH1JkdUWd2RJ3ZEXVmR7SZHdFmdkSb2RFtZke0mR3RZnZEm9kRbWZHtJkd0WZ2hM7sCJ3ZETqzI3RmR+jMjtCZHaEzO0JndoTO7Aid2RE2syNsZkfYzI6wmR1hMzvCZnaEzewIm9kRNrMjbGZH9Jkd0Wd2RJ/ZEX1mR/SZHdFndkSf2RF9Zkf0mR3RJ3ZEXZaZQWlmUJ4ZVGYGycygOjOozQzSmUE2M2hmR6SZHZFmdkSa2RFpZkekmR2RZnZEmtkRaWZHpJkdMfPMss48s6wzzyzrzDPLOvPMss48s6wzzyzrzDPLOvPMss48s6wzzyzrzDPLOvPMss48s6y/4Zlll388ffifrFwe/ieTjyPU5fsRZPcj1N2P0HY/gu5+BNv9CH3vI/yGx72/9whp9yPk3Y+w+zktu5/Tsvs5Lbuf07L7OS27n9Oy+zlddz+n6+7n9Ov/nshzf3Z9/d8TKfn6N2lKWW4nlL1NqHibkHib0Otdf8k+JpRuJ9S8TUi9Tci8Tag7m9Dr/57IaELJ24Ref6V++qcX6uv/nshoQuJtQtXbhJq3Cam3CZm3CXVnE7LF24Sc/U2aat6u1ObtSv36v7jy/K8619f/xZVUriuUyu2N4uv/4spoQt3ZhF7/F1dGE3r93wrN8jEhvZ1Q9jah4m1C4m1C1duEmrcJqbcJvf5KnT7+vGu+vVF8/V9ceT6h9vq/uDKaUPI2oextQsXbhMTbhKq3CTVvE1JvE3J2pW6Ltyv1/R/F9Fouf9mv12q/OMbPo+5eLCRf/+qCZP00s35nYlWW9uPF6xfx8vnFPx9Bdj9C3f0Ibfcj6O5HsN2P0Pc+wv3fqjw5ws+D0sygPDNo920iu28T2X2byO7bpC67HyHtfoS8+xHKxBavMjPoqxfof17/I3176f1fTqfl+ogyLeWjyn6zJNyW5OVyC6gpf37pOrP7v7He7u3b73/7Ui5vL/3Xb68bvH2+vH0rv3572/ft++9/e7uwjXb91dvf/9X4dm+ffvfbW76cnSa/3jn3f4n+xbe//BLFPv1JxR9vX37/2+vlo7XbxZEN377/6rRa/yP/fGm4X0b0eslLHzuuyPJ4Tzwfkr4+JH99SPn6EPnikPW/yrdX3v+WdP3i6/LhrP/8WPGs3w52/4vM52Puf9c4GJMmxuSJMWVijEyMqRNj2sQYnRgzsQ9sYh/0iX3QJ/ZBn9gHfWIf9Il90Cf2wf2n9+v3MBdoWr9w6L8eoxNjbGJM//qYdP9R8mhQGg5SuRn0YOnMro9bUr4ZdDdTy+06KPebQfe7FUeD0sygPDPofqZaLmiworn+etD9KjkalGYG5ZlBZWaQ3B/U2nWQ2c2gOjOozQzSmUE2HNTLrwfdb2hrLV0HrfvoZlCZGSQzg+rMoDYz6P7qrZvnOqjdXFikzAy6/3B/seu90dJvB90/c1u/3JI0XZZfD7r/3GM0KM0Mur+NTK5LbvVmw95/4DAaJDOD6sygNjNIZwbZzKA+Mag9+JzSdcNavrlGPGhSWK7fpevSbkrNg0aCwSCdODUe/CB/MKhPDHrww/bBoDQzKM8MKjODZGZQnRk0c93TmR2hMztCZ3aEzewIm9kRNrMjbHzduz0Jrc0M0plBNjPowXXvw47bl5vqfv8mrfXr88jWpd4MqjOD2swgnRl0f/V6to9B7WZQ//qgfP9ObTQozQzKM4PKzCCZGfTgc7KPvWf1ZpANK6HIzaA+MeiBK2cwKM0MyjODyswgmRlUZwY9qE+ij4klP3DlPMWcnGxmUJ8YlJeZQWlmUJ4ZVGYGycygCYbN9yExSb42IHz796+LTb6PieNh97+EkY8W4vXf5ebych/gxsPq3LA2N0znhtncsD41zJa5YWluWH4w7PqY4tuwmxJkZW6YzA2rc8Pa3DD9+rD1P+Tbi9uDL2Br+fiSscqvT7qWp0aVqVEyNapOjWpTo3RqlE2N6jOjHlxaa++XIp3akn/9eOr+LfhwVJ4aVaZG3d8b6yv7xyi5GVWnRt1f+bYWpeuo9ZnPr0Y9uDi29c7vOmqF6l+PSlOj8tSoMjXqwcpnkY9R9deXqgfXxdGoNjVKp0bZ1Kg+M6ovU6Me7I1c7WNUu/mqMU+NKlOjHu2NT+fXSnufR93RGq3Aej1IXr+fG7y8ftxwrP+++eqqV4dzag7npA7nZA7n1P3N6cFPA949qeRxUtnjpMpbJlXs06RuvvpatrqYLx+T0pvnq0t9yVHaS46iLzmKveQo/RVHSctLjpJecpRHV5b0Cery7bAyN0zmhtW5YW1umM4Ns7lhfWpYXuaGpblhc7skz+2S/GiX9OujtvbZUXMZVueGtblhOjfMpoaVBx936R8XA7n5MWkqaW7YgyWRj2edTcoNEJQHW7nqx+1XvfOjp2VuWJoblueGlblhMjeszg1rc8N0btiDrdyuHS7rv8sNoUl/NOxjc7Wante1DTviHvx+7p0TSt4mlL1NqHibkHibUPU2obbvhP754c8yNz6GveAYX79EfhvWlrlhaW7Yo8XWjy8Ymt78zPTBdztNP9oE11E3VUMfXYL6R7HR5WaSWuaGydywOjeszQ3TuWE2N6xPDXv0hdJo2IM9qfnzLrkh0EdfKY2GlblhMjfswS7R9nFXpHbz4/tHXyuNhuncMJsb1qeGPfpqaTQszQ17sEts+Rhm6ebK9ejbpdEwmRtW54Y92iX987Abln/0PcpomM0N6zPD8qPvC0bD0tywPDfs0S75eG7dTPRmmMwNq3PD2tywB7vE8udhdjPM5ob1qWGPns6OhqW5YXluWJkb9miXfGIus3QzrM4Na3PDdG7Yo13SPg/7jT+YHQ579Px0NCzNDctzw8rcMJkb9ohL5ANn7Je9pXe+cChqV7Ir2m9+EPnocesXj2LL9UQplm+uwo+ezm58FHvJUforjvLoCfPGR0kvOUp+yVHKS44i2xwl68dRbn+TW+r2We4cpb3kKPqSo9hLjrLRuS/94yg3P/rMsrzkKOklR8kvOUp5yVHkJUepLzlKe8lRNjr326ezUm/ug8S2z3LnKP0VR6nLS46SXnKUjc79fv3JTOnLzTW5lpccRV5ylPqSo7SXHEVfchR7yVH6K47Stjn3+/JxVvZ089Cipe2z3DlKfslRykuOIi85Sp35Ji63NjdM54bZ3LA+NWzuy8msaW5YnhtW5obJ3LC5XaJzu0TndonO7RKd2yU2t0sefcv4/Fd1j3p6m3z8br5JW26G1blhbW6Yzg2zuWF9atijbxlHw9LcsDw3rMwNm9slfW6X9Lld0ud2SZ/bJX1ql5QH30MMvA4lTVkkSn7kB3iqFSi5zA2TuWF1blibG6Zzw2xu2JRFopRlbtgji8RTZUIpeW5YmRsmc8Pq3LAJi8T6H/Xbi/MDufDVlvZJLZzydx16+3ngfW3V9a8m2fLJVJ/S9+9hvj6kfH2IfH1I/fqQ9vUh+vUh9vUh/ctD7p+Jdu2S+vw1+rcht3dKpV3O2fUR/PW1ZbHvF/Z93z7v+/bla2//bYh8fUj9+pD29SH69SH29SH9y0Nk+fqQ9PUh+etD7n/6V4+d9f7bN9cn4fqPzXX/64nt3r7u+/Zt37fXfd/e9n37vuvb3//SYbu3Txu+/e1F9f7XDNu9fdn37e+etf3atNU/PYL4cR25/y3B8yHt60P060Ps60P6l4fcf0z+fEj68pD7TwOfDylfH3L301+/A/4xZH1O++sNc/8J4PMh7etD9OtD7OtD+peH3H/a93zI3U9/fbh5GdJvzsr7nQvPh5SvD5GvD6lfH9K+PkS/OGT9L/32yvtP7LtensR2+9yJ9v0USF8fkr8+pHx9iHx9SP36kPb1Ifr1Ifb1If3LQ+zrn759/dO3r3/69vVP377+6dvXP337+qdvX//07z/X79dfb3TTmyH9y0PuP89/PiR9fUj++pDy9SHyxSHrf9m3Vz7oJPj0XZTqpz+l+PNDsPU//79//duf/vXf/vzH/14Hffv//s9f/v3vf/rrX37859////+6/H/+7W9/+vOf//Sf//Jff/vrv//xP/7nb3/8lz//9d+//f/+sPz4X//Uqv3UtP/zz39q8J9ayj+1nP/5m47n23/msv6nffvPb2vfbP1Pqx9/6vXba7L+VPL1TzyWH/8XvbxFsZ+kXP+S4c8DpP201t3LEdtP2i4vztl+yqVcjrd+MfLT+nXFVSD78/tJ+ak0+TF6XeLar4da8k9l0cvo0mydx3J93vj9COWnNc8/fjxJ/B6y/rS+6segXn7q9Vqgvh3i2/rY5RC9/ZSW9PH5ffu/pfpTXo/yj/Wz+X8=",
|
|
5187
|
+
"bytecode": "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",
|
|
5188
|
+
"debug_symbols": "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Fnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2Rx1wdZ3PVBFnd9kMVdH2R11wdZ3fVBVnd9kNVdH2RdvK3Z1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UFWd32Q1V0fZHXXB1nd9UE2d32QzV0fZHPXB9nc9UG2xdua3dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1QTZ3fZDNXR9kc9cH2dz1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i/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UkL6VH454P1JK8lB6Nez5QS/JSuihKLclL6dG45wO1JC+lR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KS6G454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeFxT3vKC45wXFPS8o7nlZFKWW5KUKinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPS8o7nlBcc8LinteUNzzguKeFxT3vKC45wXFPa8o7nlFcc8rinteUdzzuihKLclLVRT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKe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eKXwHK8UnuOVwnO8UniOVwrP8UrhOV4pPMcrhed4pfAcrxSe45XCc7xSeI5XCs/xSuE5Xik8xyuF53il8ByvFJ7jlcJzvFJ4jlcKz/FK4TleKTzHK7nneNWcl2squaTPCm4vr33JP66uPX3IbT/Ueq/f26r1Xuu3VevdF2yr1ruH2Fatd7+xrVrv3mRTte7ZZ9uq3cLztKzXoq59oDb15WoBepFPau+lnxeR6+Asq3v4x9RmlFpBqVWU2oJSW1FqG0qtodR2ktpNmHVx1KK8VEN5qYbyUpsw9uKoRXmphvJSDeWlGspLNZSXMpSXMpSXMpSXMpSX2oSNGEctyksZyksZyksZyksZykt1lJfqKC/VUV6qo7zUJkzLOGpRXqqjvFRHeamO8lKd5KXyQvJSeSF5qbyQvFReSF4qL4pSS/JSeSF5qbyQvFReSF4qLygvlVBeKqG8VEJ5qYTyUpswZOOoRXmphPJSCeWlEspLJZSXyigvlVFeKqO8VEZ5qU3Yv3HUorxURnmpjPJSGeWlMspLCcpLCcpLCcpLCcpLbcJsjqMW5aUE5aUE5aUE5aUE5aUU5aUU5aUU5aUU5aU2YW3HUYvyUoryUoryUoryUoryUgXlpQrKSxWUlyooL7UJ9zyOWpSXKigvVVBeqqC8VEF5qYryUijueUZxzzOKe55R3POM4p5nFPc8o7jnGcU9zyjueUZxzzOKe55R3POM4p5nFPc8o7jnGcU9zyjueUZxzzOKe55R3POM4p5nFPc8o7jnGcU9zyjueUZxzzOKe55R3POM4p5nFPc8o7jnGcU9zyjueUZxzzOKe55R3POM4p5nFPc8o7jnguKeC4p7LijuuaC457IoSi3JSwmKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaC454LinguKey4o7rmguOeC4p4LinsuKO65oLjnguKeC4p7LijuuaK454riniuKe64o7rkuilJL8lKK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe64o7rmiuOeK4p4rinuuKO65orjniuKeK4p7rijuuaK454riniuKe15Q3POC4p4XFPe8oLjnZVGUWpKXKijueUFxzwuKe15Q3POC4p4XFPe8oLjnBcU9L9twz5tc1fYyUFtqv1xd2vKRfWr1R0rFX0rVX0rNX0rmL6XuLqVtqNbbppT8pbRFzbGlXa42ycNVuHyswvZJgLQpARJdgEYXUF4tIC9ar5W5p4GA1JNeP7ynqs8Lec5iF1ORsyb5fPl3wZUmuNEEG01whwnehNMcSnCiCc40wUITrDTBNKclNKclNKclNKclx3JaNaXL7rAmuZWrx/JZQ7nHcllDucfyWEO5x3JYQ7nKknssdzWUeyxvNZR7LGc1lHssXzWU695Vtbpc5XZNNwqKc6P01a/DLV2/Drf88c38j6/Di3OftLFa5zZpY7XOXdLGahWl1rlH+rLaei0rZjc/2inOLdLGap07pI3VOjdIG6t17o+2VVuP5qWeqz2al3qu9mhe6rnao3mp52oVpRblpSrKS1WUl6ooL1VRXqqhvFRDeamG8lIN5aU2ATTHUYvyUg3lpRrKSzWUl2ooL2UoL2UoL2UoL2UoL7UJoDmOWpSXMpSXMpSXMpSXMpSX6igv1VFeqqO8VEd5qU0AzXHUorxUR3mpjvJSHeWlOslL1YXkpepC8lJ1IXmpupC8VF0UpZbkpepC8lJ1IXmpupC8VF1QXiqhvFRCeamE8lIJ5aU2ATTHUYvyUgnlpRLKSyWUl0ooL5VRXiqjvFRGeamM8lKvR5q/VS3KS3mHn2+sFuWlvGPPN1aL8lLegecbq0V5Ke+o843VoryUd8j5xmpRXso73nxjtSgv5R1svrFalJfyDjXfWC3KS3lHmm+sFuWlvAPNN1aL8lLeceYbq0V5Ke8w843VorzU4bjnz9WivNThuOfP1aK81OG458/VorwUinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKeVxT3vKK45xXFPa8o7nlFcc8rinteUdzziuKe16Nxz/ty/euDPd2qPZiXGqg9mJcaqD2YlxqoPZiXeq72aNzzgdqDeamB2oN5qYHag3mpgVpFqUV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oJbkpdrRuOcDtSQv1Y7GPR+oJXmptihKLclLtaNxzwdqSV6qHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorwUinveUNzzhuKeNxT3vKG45w3FPW8o7nlDcc8binveUNzzhuKeNxT3vKG45w3FPW8o7nlDcc8binveUNzzhuKeNxT3vKG45w3FPW8o7nlDcc8NxT03FPfcUNxzQ3HPbVGUWpKXMhT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNzzjuKedxT3vKO45x3FPe+LotSSvFRHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vKO45x3FPe8o7nlHcc87inveUdzzjuKedxT3vJO457qQuOerWpCXWtWCvNSqFuSlVrWKUgvyUqtakJda1YK81KoW5KVWtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqFuWlSNzzVS3KS5G456talJcicc9XtSgvReKer2pRXorEPV/VorwUiXu+qkV5KRL3fFWL8lIk7vmqluSlEop7nlDc84TinicU9zwtilJL8lIJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU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CspLVZSXqigvVVFeqqK81Bswuu9Ui/JSFeWlKspLVZSXqigv1VBeqqG8VEN5qYbyUm/AH79TLcpLNZSXaigv1VBeqqG8lKG8lKG8lKG8lKG81Buw1e9Ui/JShvJShvJShvJShvJSHeWlOspLdZSX6igv9QYg9jvVorxUR3mpjvJSHeWlOslL1YXkpepC8lJ1IXmpupC8VF0UpZbkpap3+PnGakleqnrHnm+sFuWlvAPPN1aL8lLeUecbq0V5Ke+Q843VoryUd7z5xmpRXso72HxjtSgv5R1qvrFalJfyjjTfWK2g1CpKLcpLeceZb6wW5aW8w8w3VovyUofjnj9Xi/JSh+OeP1eL8lKH454/V4vyUijueUVxzyuKe15R3POK4p5XFPe8orjnFcU9ryjueUVxzyuKe15R3POK4p5XFPe8orjnFcU9ryjueUVxzyuKe16Pxj3vy/WvD/Z0q/ZgXmqg9mBeaqD2YF5qoPZgXuq52qNxzwdqD+alBmoP5qUGag/mpQZqFaUW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6gleal2NO75QC3JS7Wjcc8Hakleqi2KUkvyUu1o3POBWpKXakfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUijueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3HNDcc8NxT03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",
|
|
5092
5189
|
"brillig_names": [
|
|
5093
5190
|
"get_note_internal",
|
|
5094
5191
|
"decompose_hint",
|
|
@@ -5103,114 +5200,8 @@
|
|
|
5103
5200
|
"directive_integer_quotient",
|
|
5104
5201
|
"directive_to_radix"
|
|
5105
5202
|
],
|
|
5106
|
-
"verification_key": "
|
|
5107
|
-
"artifact_hash": "
|
|
5108
|
-
},
|
|
5109
|
-
{
|
|
5110
|
-
"name": "compute_note_hash_and_optionally_a_nullifier",
|
|
5111
|
-
"is_unconstrained": true,
|
|
5112
|
-
"custom_attributes": [],
|
|
5113
|
-
"abi": {
|
|
5114
|
-
"error_types": {
|
|
5115
|
-
"11091894166229312484": {
|
|
5116
|
-
"error_kind": "fmtstring",
|
|
5117
|
-
"item_types": [],
|
|
5118
|
-
"length": 20
|
|
5119
|
-
},
|
|
5120
|
-
"16761564377371454734": {
|
|
5121
|
-
"error_kind": "string",
|
|
5122
|
-
"string": "Array index out of bounds"
|
|
5123
|
-
},
|
|
5124
|
-
"17843811134343075018": {
|
|
5125
|
-
"error_kind": "string",
|
|
5126
|
-
"string": "Stack too deep"
|
|
5127
|
-
},
|
|
5128
|
-
"2920182694213909827": {
|
|
5129
|
-
"error_kind": "string",
|
|
5130
|
-
"string": "attempt to subtract with overflow"
|
|
5131
|
-
},
|
|
5132
|
-
"5019202896831570965": {
|
|
5133
|
-
"error_kind": "string",
|
|
5134
|
-
"string": "attempt to add with overflow"
|
|
5135
|
-
},
|
|
5136
|
-
"8270195893599566439": {
|
|
5137
|
-
"error_kind": "string",
|
|
5138
|
-
"string": "Invalid public keys hint for address"
|
|
5139
|
-
}
|
|
5140
|
-
},
|
|
5141
|
-
"parameters": [
|
|
5142
|
-
{
|
|
5143
|
-
"name": "contract_address",
|
|
5144
|
-
"type": {
|
|
5145
|
-
"fields": [
|
|
5146
|
-
{
|
|
5147
|
-
"name": "inner",
|
|
5148
|
-
"type": {
|
|
5149
|
-
"kind": "field"
|
|
5150
|
-
}
|
|
5151
|
-
}
|
|
5152
|
-
],
|
|
5153
|
-
"kind": "struct",
|
|
5154
|
-
"path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
|
|
5155
|
-
},
|
|
5156
|
-
"visibility": "private"
|
|
5157
|
-
},
|
|
5158
|
-
{
|
|
5159
|
-
"name": "nonce",
|
|
5160
|
-
"type": {
|
|
5161
|
-
"kind": "field"
|
|
5162
|
-
},
|
|
5163
|
-
"visibility": "private"
|
|
5164
|
-
},
|
|
5165
|
-
{
|
|
5166
|
-
"name": "storage_slot",
|
|
5167
|
-
"type": {
|
|
5168
|
-
"kind": "field"
|
|
5169
|
-
},
|
|
5170
|
-
"visibility": "private"
|
|
5171
|
-
},
|
|
5172
|
-
{
|
|
5173
|
-
"name": "note_type_id",
|
|
5174
|
-
"type": {
|
|
5175
|
-
"kind": "field"
|
|
5176
|
-
},
|
|
5177
|
-
"visibility": "private"
|
|
5178
|
-
},
|
|
5179
|
-
{
|
|
5180
|
-
"name": "compute_nullifier",
|
|
5181
|
-
"type": {
|
|
5182
|
-
"kind": "boolean"
|
|
5183
|
-
},
|
|
5184
|
-
"visibility": "private"
|
|
5185
|
-
},
|
|
5186
|
-
{
|
|
5187
|
-
"name": "serialized_note",
|
|
5188
|
-
"type": {
|
|
5189
|
-
"kind": "array",
|
|
5190
|
-
"length": 5,
|
|
5191
|
-
"type": {
|
|
5192
|
-
"kind": "field"
|
|
5193
|
-
}
|
|
5194
|
-
},
|
|
5195
|
-
"visibility": "private"
|
|
5196
|
-
}
|
|
5197
|
-
],
|
|
5198
|
-
"return_type": {
|
|
5199
|
-
"abi_type": {
|
|
5200
|
-
"kind": "array",
|
|
5201
|
-
"length": 4,
|
|
5202
|
-
"type": {
|
|
5203
|
-
"kind": "field"
|
|
5204
|
-
}
|
|
5205
|
-
},
|
|
5206
|
-
"visibility": "public"
|
|
5207
|
-
}
|
|
5208
|
-
},
|
|
5209
|
-
"bytecode": "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",
|
|
5210
|
-
"debug_symbols": "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",
|
|
5211
|
-
"brillig_names": [
|
|
5212
|
-
"compute_note_hash_and_optionally_a_nullifier"
|
|
5213
|
-
]
|
|
5203
|
+
"verification_key": "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",
|
|
5204
|
+
"artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-62c0ff8660286d4a45bab1c5d8c7cd14-client-ivc-true"
|
|
5214
5205
|
}
|
|
5215
5206
|
],
|
|
5216
5207
|
"outputs": {
|
|
@@ -5346,45 +5337,6 @@
|
|
|
5346
5337
|
},
|
|
5347
5338
|
"structs": {
|
|
5348
5339
|
"functions": [
|
|
5349
|
-
{
|
|
5350
|
-
"fields": [
|
|
5351
|
-
{
|
|
5352
|
-
"name": "parameters",
|
|
5353
|
-
"type": {
|
|
5354
|
-
"fields": [
|
|
5355
|
-
{
|
|
5356
|
-
"name": "signing_pub_key_x",
|
|
5357
|
-
"type": {
|
|
5358
|
-
"kind": "array",
|
|
5359
|
-
"length": 32,
|
|
5360
|
-
"type": {
|
|
5361
|
-
"kind": "integer",
|
|
5362
|
-
"sign": "unsigned",
|
|
5363
|
-
"width": 8
|
|
5364
|
-
}
|
|
5365
|
-
}
|
|
5366
|
-
},
|
|
5367
|
-
{
|
|
5368
|
-
"name": "signing_pub_key_y",
|
|
5369
|
-
"type": {
|
|
5370
|
-
"kind": "array",
|
|
5371
|
-
"length": 32,
|
|
5372
|
-
"type": {
|
|
5373
|
-
"kind": "integer",
|
|
5374
|
-
"sign": "unsigned",
|
|
5375
|
-
"width": 8
|
|
5376
|
-
}
|
|
5377
|
-
}
|
|
5378
|
-
}
|
|
5379
|
-
],
|
|
5380
|
-
"kind": "struct",
|
|
5381
|
-
"path": "EcdsaKAccount::constructor_parameters"
|
|
5382
|
-
}
|
|
5383
|
-
}
|
|
5384
|
-
],
|
|
5385
|
-
"kind": "struct",
|
|
5386
|
-
"path": "EcdsaKAccount::constructor_abi"
|
|
5387
|
-
},
|
|
5388
5340
|
{
|
|
5389
5341
|
"fields": [
|
|
5390
5342
|
{
|
|
@@ -5568,6 +5520,45 @@
|
|
|
5568
5520
|
"kind": "struct",
|
|
5569
5521
|
"path": "EcdsaKAccount::entrypoint_abi"
|
|
5570
5522
|
},
|
|
5523
|
+
{
|
|
5524
|
+
"fields": [
|
|
5525
|
+
{
|
|
5526
|
+
"name": "parameters",
|
|
5527
|
+
"type": {
|
|
5528
|
+
"fields": [
|
|
5529
|
+
{
|
|
5530
|
+
"name": "signing_pub_key_x",
|
|
5531
|
+
"type": {
|
|
5532
|
+
"kind": "array",
|
|
5533
|
+
"length": 32,
|
|
5534
|
+
"type": {
|
|
5535
|
+
"kind": "integer",
|
|
5536
|
+
"sign": "unsigned",
|
|
5537
|
+
"width": 8
|
|
5538
|
+
}
|
|
5539
|
+
}
|
|
5540
|
+
},
|
|
5541
|
+
{
|
|
5542
|
+
"name": "signing_pub_key_y",
|
|
5543
|
+
"type": {
|
|
5544
|
+
"kind": "array",
|
|
5545
|
+
"length": 32,
|
|
5546
|
+
"type": {
|
|
5547
|
+
"kind": "integer",
|
|
5548
|
+
"sign": "unsigned",
|
|
5549
|
+
"width": 8
|
|
5550
|
+
}
|
|
5551
|
+
}
|
|
5552
|
+
}
|
|
5553
|
+
],
|
|
5554
|
+
"kind": "struct",
|
|
5555
|
+
"path": "EcdsaKAccount::constructor_parameters"
|
|
5556
|
+
}
|
|
5557
|
+
}
|
|
5558
|
+
],
|
|
5559
|
+
"kind": "struct",
|
|
5560
|
+
"path": "EcdsaKAccount::constructor_abi"
|
|
5561
|
+
},
|
|
5571
5562
|
{
|
|
5572
5563
|
"fields": [
|
|
5573
5564
|
{
|
|
@@ -5635,183 +5626,187 @@
|
|
|
5635
5626
|
"path": "std/hash/sha256.nr",
|
|
5636
5627
|
"source": "use crate::runtime::is_unconstrained;\n\n// Implementation of SHA-256 mapping a byte array of variable length to\n// 32 bytes.\n\n// A message block is up to 64 bytes taken from the input.\nglobal BLOCK_SIZE: u32 = 64;\n\n// The first index in the block where the 8 byte message size will be written.\nglobal MSG_SIZE_PTR: u32 = 56;\n\n// Size of the message block when packed as 4-byte integer array.\nglobal INT_BLOCK_SIZE: u32 = 16;\n\n// A `u32` integer consists of 4 bytes.\nglobal INT_SIZE: u32 = 4;\n\n// Index of the integer in the `INT_BLOCK` where the length is written.\nglobal INT_SIZE_PTR: u32 = MSG_SIZE_PTR / INT_SIZE;\n\n// Magic numbers for bit shifting.\n// Works with actual bit shifting as well as the compiler turns them into * and /\n// but circuit execution appears to be 10% faster this way.\nglobal TWO_POW_8: u32 = 256;\nglobal TWO_POW_16: u32 = TWO_POW_8 * 256;\nglobal TWO_POW_24: u32 = TWO_POW_16 * 256;\nglobal TWO_POW_32: u64 = TWO_POW_24 as u64 * 256;\n\n// Index of a byte in a 64 byte block; ie. 0..=63\ntype BLOCK_BYTE_PTR = u32;\n\n// The foreign function to compress blocks works on 16 pieces of 4-byte integers, instead of 64 bytes.\ntype INT_BLOCK = [u32; INT_BLOCK_SIZE];\n\n// A message block is a slice of the original message of a fixed size,\n// potentially padded with zeros, with neighbouring 4 bytes packed into integers.\ntype MSG_BLOCK = INT_BLOCK;\n\n// The hash is 32 bytes.\ntype HASH = [u8; 32];\n\n// The state accumulates the blocks.\n// Its overall size is the same as the `HASH`.\ntype STATE = [u32; 8];\n\n// Deprecated in favour of `sha256_var`\n// docs:start:sha256\npub fn sha256<let N: u32>(input: [u8; N]) -> HASH\n// docs:end:sha256\n{\n digest(input)\n}\n\n#[foreign(sha256_compression)]\npub fn sha256_compression(_input: INT_BLOCK, _state: STATE) -> STATE {}\n\n// SHA-256 hash function\n#[no_predicates]\npub fn digest<let N: u32>(msg: [u8; N]) -> HASH {\n sha256_var(msg, N as u64)\n}\n\n// Variable size SHA-256 hash\npub fn sha256_var<let N: u32>(msg: [u8; N], message_size: u64) -> HASH {\n let message_size = message_size as u32;\n let num_blocks = N / BLOCK_SIZE;\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n // Intermediate hash, starting with the canonical initial value\n let mut h: STATE = [\n 1779033703, 3144134277, 1013904242, 2773480762, 1359893119, 2600822924, 528734635,\n 1541459225,\n ];\n // Pointer into msg_block on a 64 byte scale\n let mut msg_byte_ptr = 0;\n for i in 0..num_blocks {\n let msg_start = BLOCK_SIZE * i;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n // Verify the block we are compressing was appropriately constructed\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n\n // If the block is filled, compress it.\n // An un-filled block is handled after this loop.\n if (msg_start < message_size) & (msg_byte_ptr == BLOCK_SIZE) {\n h = sha256_compression(msg_block, h);\n }\n }\n\n let modulo = N % BLOCK_SIZE;\n // Handle setup of the final msg block.\n // This case is only hit if the msg is less than the block size,\n // or our message cannot be evenly split into blocks.\n if modulo != 0 {\n let msg_start = BLOCK_SIZE * num_blocks;\n let (new_msg_block, new_msg_byte_ptr) =\n unsafe { build_msg_block(msg, message_size, msg_start) };\n\n if msg_start < message_size {\n msg_block = new_msg_block;\n }\n\n if !is_unconstrained() {\n let new_msg_byte_ptr = verify_msg_block(msg, message_size, msg_block, msg_start);\n if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n verify_msg_block_padding(msg_block, msg_byte_ptr);\n }\n } else if msg_start < message_size {\n msg_byte_ptr = new_msg_byte_ptr;\n }\n }\n\n // If we had modulo == 0 then it means the last block was full,\n // and we can reset the pointer to zero to overwrite it.\n if msg_byte_ptr == BLOCK_SIZE {\n msg_byte_ptr = 0;\n }\n\n // Pad the rest such that we have a [u32; 2] block at the end representing the length\n // of the message, and a block of 1 0 ... 0 following the message (i.e. [1 << 7, 0, ..., 0]).\n // Here we rely on the fact that everything beyond the available input is set to 0.\n msg_block = update_block_item(\n msg_block,\n msg_byte_ptr,\n |msg_item| set_item_byte_then_zeros(msg_item, msg_byte_ptr, 1 << 7),\n );\n msg_byte_ptr = msg_byte_ptr + 1;\n let last_block = msg_block;\n\n // If we don't have room to write the size, compress the block and reset it.\n if msg_byte_ptr > MSG_SIZE_PTR {\n h = sha256_compression(msg_block, h);\n // `attach_len_to_msg_block` will zero out everything after the `msg_byte_ptr`.\n msg_byte_ptr = 0;\n }\n\n msg_block = unsafe { attach_len_to_msg_block(msg_block, msg_byte_ptr, message_size) };\n\n if !is_unconstrained() {\n verify_msg_len(msg_block, last_block, msg_byte_ptr, message_size);\n }\n\n hash_final_block(msg_block, h)\n}\n\n// Take `BLOCK_SIZE` number of bytes from `msg` starting at `msg_start`.\n// Returns the block and the length that has been copied rather than padded with zeros.\nunconstrained fn build_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_start: u32,\n) -> (MSG_BLOCK, BLOCK_BYTE_PTR) {\n let mut msg_block: MSG_BLOCK = [0; INT_BLOCK_SIZE];\n\n // We insert `BLOCK_SIZE` bytes (or up to the end of the message)\n let block_input = if msg_start + BLOCK_SIZE > message_size {\n if message_size < msg_start {\n // This function is sometimes called with `msg_start` past the end of the message.\n // In this case we return an empty block and zero pointer to signal that the result should be ignored.\n 0\n } else {\n message_size - msg_start\n }\n } else {\n BLOCK_SIZE\n };\n\n // Figure out the number of items in the int array that we have to pack.\n // e.g. if the input is [0,1,2,3,4,5] then we need to pack it as 2 items: [0123, 4500]\n let mut int_input = block_input / INT_SIZE;\n if block_input % INT_SIZE != 0 {\n int_input = int_input + 1;\n };\n\n for i in 0..int_input {\n let mut msg_item: u32 = 0;\n // Always construct the integer as 4 bytes, even if it means going beyond the input.\n for j in 0..INT_SIZE {\n let k = i * INT_SIZE + j;\n let msg_byte = if k < block_input {\n msg[msg_start + k]\n } else {\n 0\n };\n msg_item = lshift8(msg_item, 1) + msg_byte as u32;\n }\n msg_block[i] = msg_item;\n }\n\n // Returning the index as if it was a 64 byte array.\n // We have to project it down to 16 items and bit shifting to get a byte back if we need it.\n (msg_block, block_input)\n}\n\n// Verify the block we are compressing was appropriately constructed by `build_msg_block`\n// and matches the input data. Returns the index of the first unset item.\n// If `message_size` is less than `msg_start` then this is called with the old non-empty block;\n// in that case we can skip verification, ie. no need to check that everything is zero.\nfn verify_msg_block<let N: u32>(\n msg: [u8; N],\n message_size: u32,\n msg_block: MSG_BLOCK,\n msg_start: u32,\n) -> BLOCK_BYTE_PTR {\n let mut msg_byte_ptr = 0;\n let mut msg_end = msg_start + BLOCK_SIZE;\n if msg_end > N {\n msg_end = N;\n }\n // We might have to go beyond the input to pad the fields.\n if msg_end % INT_SIZE != 0 {\n msg_end = msg_end + INT_SIZE - msg_end % INT_SIZE;\n }\n\n // Reconstructed packed item.\n let mut msg_item: u32 = 0;\n\n // Inclusive at the end so that we can compare the last item.\n let mut i: u32 = 0;\n for k in msg_start..=msg_end {\n if k % INT_SIZE == 0 {\n // If we consumed some input we can compare against the block.\n if (msg_start < message_size) & (k > msg_start) {\n assert_eq(msg_block[i], msg_item as u32);\n i = i + 1;\n msg_item = 0;\n }\n }\n // Shift the accumulator\n msg_item = lshift8(msg_item, 1);\n // If we have input to consume, add it at the rightmost position.\n if k < message_size & k < msg_end {\n msg_item = msg_item + msg[k] as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n\n msg_byte_ptr\n}\n\n// Verify the block we are compressing was appropriately padded with zeros by `build_msg_block`.\n// This is only relevant for the last, potentially partially filled block.\nfn verify_msg_block_padding(msg_block: MSG_BLOCK, msg_byte_ptr: BLOCK_BYTE_PTR) {\n // Check all the way to the end of the block.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_BLOCK_SIZE);\n}\n\n// Verify that a region of ints in the message block are (partially) zeroed,\n// up to an (exclusive) maximum which can either be the end of the block\n// or just where the size is to be written.\nfn verify_msg_block_zeros(\n msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n max_int_byte_ptr: u32,\n) {\n // This variable is used to get around the compiler under-constrained check giving a warning.\n // We want to check against a constant zero, but if it does not come from the circuit inputs\n // or return values the compiler check will issue a warning.\n let zero = msg_block[0] - msg_block[0];\n\n // First integer which is supposed to be (partially) zero.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n let zeros = INT_SIZE - modulo;\n let mask = if zeros == 3 {\n TWO_POW_24\n } else if zeros == 2 {\n TWO_POW_16\n } else {\n TWO_POW_8\n };\n assert_eq(msg_block[int_byte_ptr] % mask, zero);\n int_byte_ptr = int_byte_ptr + 1;\n }\n\n // Check the rest of the items.\n for i in 0..max_int_byte_ptr {\n if i >= int_byte_ptr {\n assert_eq(msg_block[i], zero);\n }\n }\n}\n\n// Verify that up to the byte pointer the two blocks are equal.\n// At the byte pointer the new block can be partially zeroed.\nfn verify_msg_block_equals_last(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n) {\n // msg_byte_ptr is the position at which they are no longer have to be the same.\n // First integer which is supposed to be (partially) zero contains that pointer.\n let mut int_byte_ptr = msg_byte_ptr / INT_SIZE;\n\n // Check partial zeros.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Reconstruct the partially zero item from the last block.\n let last_field = last_block[int_byte_ptr];\n let mut msg_item: u32 = 0;\n // Reset to where they are still equal.\n msg_byte_ptr = msg_byte_ptr - modulo;\n for i in 0..INT_SIZE {\n msg_item = lshift8(msg_item, 1);\n if i < modulo {\n msg_item = msg_item + get_item_byte(last_field, msg_byte_ptr) as u32;\n msg_byte_ptr = msg_byte_ptr + 1;\n }\n }\n assert_eq(msg_block[int_byte_ptr], msg_item);\n }\n\n for i in 0..INT_SIZE_PTR {\n if i < int_byte_ptr {\n assert_eq(msg_block[i], last_block[i]);\n }\n }\n}\n\n// Apply a function on the block item which the pointer indicates.\nfn update_block_item<Env>(\n mut msg_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n f: fn[Env](u32) -> u32,\n) -> MSG_BLOCK {\n let i = msg_byte_ptr / INT_SIZE;\n msg_block[i] = f(msg_block[i]);\n msg_block\n}\n\n// Set the rightmost `zeros` number of bytes to 0.\nfn set_item_zeros(item: u32, zeros: u8) -> u32 {\n lshift8(rshift8(item, zeros), zeros)\n}\n\n// Replace one byte in the item with a value, and set everything after it to zero.\nfn set_item_byte_then_zeros(msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR, msg_byte: u8) -> u32 {\n let zeros = INT_SIZE - msg_byte_ptr % INT_SIZE;\n let zeroed_item = set_item_zeros(msg_item, zeros as u8);\n let new_item = byte_into_item(msg_byte, msg_byte_ptr);\n zeroed_item + new_item\n}\n\n// Get a byte of a message item according to its overall position in the `BLOCK_SIZE` space.\nfn get_item_byte(mut msg_item: u32, msg_byte_ptr: BLOCK_BYTE_PTR) -> u8 {\n // How many times do we have to shift to the right to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n msg_item = rshift8(msg_item, shifts as u8);\n // At this point the byte we want is in the rightmost position.\n msg_item as u8\n}\n\n// Project a byte into a position in a field based on the overall block pointer.\n// For example putting 1 into pointer 5 would be 100, because overall we would\n// have [____, 0100] with indexes [0123,4567].\nfn byte_into_item(msg_byte: u8, msg_byte_ptr: BLOCK_BYTE_PTR) -> u32 {\n let mut msg_item = msg_byte as u32;\n // How many times do we have to shift to the left to get to the position we want?\n let max_shifts = INT_SIZE - 1;\n let shifts = max_shifts - msg_byte_ptr % INT_SIZE;\n lshift8(msg_item, shifts as u8)\n}\n\n// Construct a field out of 4 bytes.\nfn make_item(b0: u8, b1: u8, b2: u8, b3: u8) -> u32 {\n let mut item = b0 as u32;\n item = lshift8(item, 1) + b1 as u32;\n item = lshift8(item, 1) + b2 as u32;\n item = lshift8(item, 1) + b3 as u32;\n item\n}\n\n// Shift by 8 bits to the left between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise multiplies by 256.\nfn lshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n if item == 0 {\n 0\n } else {\n // Brillig wouldn't shift 0<<4 without overflow.\n item << (8 * shifts)\n }\n } else {\n // We can do a for loop up to INT_SIZE or an if-else.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item * TWO_POW_8\n } else if shifts == 2 {\n item * TWO_POW_16\n } else if shifts == 3 {\n item * TWO_POW_24\n } else {\n // Doesn't make sense, but it's most likely called on 0 anyway.\n 0\n }\n }\n}\n\n// Shift by 8 bits to the right between 0 and 4 times.\n// Checks `is_unconstrained()` to just use a bitshift if we're running in an unconstrained context,\n// otherwise divides by 256.\nfn rshift8(item: u32, shifts: u8) -> u32 {\n if is_unconstrained() {\n item >> (8 * shifts)\n } else {\n // Division wouldn't work on `Field`.\n if shifts == 0 {\n item\n } else if shifts == 1 {\n item / TWO_POW_8\n } else if shifts == 2 {\n item / TWO_POW_16\n } else if shifts == 3 {\n item / TWO_POW_24\n } else {\n 0\n }\n }\n}\n\n// Zero out all bytes between the end of the message and where the length is appended,\n// then write the length into the last 8 bytes of the block.\nunconstrained fn attach_len_to_msg_block(\n mut msg_block: MSG_BLOCK,\n mut msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) -> MSG_BLOCK {\n // We assume that `msg_byte_ptr` is less than 57 because if not then it is reset to zero before calling this function.\n // In any case, fill blocks up with zeros until the last 64 bits (i.e. until msg_byte_ptr = 56).\n // There can be one item which has to be partially zeroed.\n let modulo = msg_byte_ptr % INT_SIZE;\n if modulo != 0 {\n // Index of the block in which we find the item we need to partially zero.\n let i = msg_byte_ptr / INT_SIZE;\n let zeros = INT_SIZE - modulo;\n msg_block[i] = set_item_zeros(msg_block[i], zeros as u8);\n msg_byte_ptr = msg_byte_ptr + zeros;\n }\n\n // The rest can be zeroed without bit shifting anything.\n for i in (msg_byte_ptr / INT_SIZE)..INT_SIZE_PTR {\n msg_block[i] = 0;\n }\n\n // Set the last two 4 byte ints as the first/second half of the 8 bytes of the length.\n let len = 8 * message_size;\n let len_bytes: [u8; 8] = (len as Field).to_be_bytes();\n for i in 0..=1 {\n let shift = i * 4;\n msg_block[INT_SIZE_PTR + i] = make_item(\n len_bytes[shift],\n len_bytes[shift + 1],\n len_bytes[shift + 2],\n len_bytes[shift + 3],\n );\n }\n msg_block\n}\n\n// Verify that the message length was correctly written by `attach_len_to_msg_block`,\n// and that everything between the byte pointer and the size pointer was zeroed,\n// and that everything before the byte pointer was untouched.\nfn verify_msg_len(\n msg_block: MSG_BLOCK,\n last_block: MSG_BLOCK,\n msg_byte_ptr: BLOCK_BYTE_PTR,\n message_size: u32,\n) {\n // Check zeros up to the size pointer.\n verify_msg_block_zeros(msg_block, msg_byte_ptr, INT_SIZE_PTR);\n\n // Check that up to the pointer we match the last block.\n verify_msg_block_equals_last(msg_block, last_block, msg_byte_ptr);\n\n // We verify the message length was inserted correctly by reversing the byte decomposition.\n let mut reconstructed_len: u64 = 0;\n for i in INT_SIZE_PTR..INT_BLOCK_SIZE {\n reconstructed_len = reconstructed_len * TWO_POW_32;\n reconstructed_len = reconstructed_len + msg_block[i] as u64;\n }\n let len = 8 * message_size as u64;\n assert_eq(reconstructed_len, len);\n}\n\n// Perform the final compression, then transform the `STATE` into `HASH`.\nfn hash_final_block(msg_block: MSG_BLOCK, mut state: STATE) -> HASH {\n let mut out_h: HASH = [0; 32]; // Digest as sequence of bytes\n // Hash final padded block\n state = sha256_compression(msg_block, state);\n\n // Return final hash as byte array\n for j in 0..8 {\n let h_bytes: [u8; 4] = (state[j] as Field).to_be_bytes();\n for k in 0..4 {\n out_h[4 * j + k] = h_bytes[k];\n }\n }\n\n out_h\n}\n\nmod tests {\n use super::{\n attach_len_to_msg_block, build_msg_block, byte_into_item, get_item_byte, make_item,\n set_item_byte_then_zeros, set_item_zeros,\n };\n use super::INT_BLOCK;\n use super::sha256_var;\n\n #[test]\n fn smoke_test() {\n let input = [0xbd];\n let result = [\n 0x68, 0x32, 0x57, 0x20, 0xaa, 0xbd, 0x7c, 0x82, 0xf3, 0x0f, 0x55, 0x4b, 0x31, 0x3d,\n 0x05, 0x70, 0xc9, 0x5a, 0xcc, 0xbb, 0x7d, 0xc4, 0xb5, 0xaa, 0xe1, 0x12, 0x04, 0xc0,\n 0x8f, 0xfe, 0x73, 0x2b,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n let result = [\n 91, 122, 146, 93, 52, 109, 133, 148, 171, 61, 156, 70, 189, 238, 153, 7, 222, 184, 94,\n 24, 65, 114, 192, 244, 207, 199, 87, 232, 192, 224, 171, 207,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_multiple_over_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99,\n ];\n let result = [\n 116, 90, 151, 31, 78, 22, 138, 180, 211, 189, 69, 76, 227, 200, 155, 29, 59, 123, 154,\n 60, 47, 153, 203, 129, 157, 251, 48, 2, 79, 11, 65, 47,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_just_under_block() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59,\n ];\n let result = [\n 143, 140, 76, 173, 222, 123, 102, 68, 70, 149, 207, 43, 39, 61, 34, 79, 216, 252, 213,\n 165, 74, 16, 110, 74, 29, 64, 138, 167, 30, 1, 9, 119,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_not_block_multiple() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116, 61, 117, 115, 45, 97, 115,\n 99, 105, 105, 13, 10, 109, 105, 109, 101, 45, 118, 101, 114, 115, 105, 111, 110, 58, 49,\n 46, 48, 32, 40, 77, 97, 99, 32, 79, 83, 32, 88, 32, 77, 97, 105, 108, 32, 49, 54, 46,\n 48, 32, 92, 40, 51, 55, 51, 49, 46, 53, 48, 48, 46, 50, 51, 49, 92, 41, 41, 13, 10, 115,\n 117, 98, 106, 101, 99, 116, 58, 72, 101, 108, 108, 111, 13, 10, 109, 101, 115, 115, 97,\n 103, 101, 45, 105, 100, 58, 60, 56, 70, 56, 49, 57, 68, 51, 50, 45, 66, 54, 65, 67, 45,\n 52, 56, 57, 68, 45, 57, 55, 55, 70, 45, 52, 51, 56, 66, 66, 67, 52, 67, 65, 66, 50, 55,\n 64, 109, 101, 46, 99, 111, 109, 62, 13, 10, 100, 97, 116, 101, 58, 83, 97, 116, 44, 32,\n 50, 54, 32, 65, 117, 103, 32, 50, 48, 50, 51, 32, 49, 50, 58, 50, 53, 58, 50, 50, 32,\n 43, 48, 52, 48, 48, 13, 10, 116, 111, 58, 122, 107, 101, 119, 116, 101, 115, 116, 64,\n 103, 109, 97, 105, 108, 46, 99, 111, 109, 13, 10, 100, 107, 105, 109, 45, 115, 105, 103,\n 110, 97, 116, 117, 114, 101, 58, 118, 61, 49, 59, 32, 97, 61, 114, 115, 97, 45, 115,\n 104, 97, 50, 53, 54, 59, 32, 99, 61, 114, 101, 108, 97, 120, 101, 100, 47, 114, 101,\n 108, 97, 120, 101, 100, 59, 32, 100, 61, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109,\n 59, 32, 115, 61, 49, 97, 49, 104, 97, 105, 59, 32, 116, 61, 49, 54, 57, 51, 48, 51, 56,\n 51, 51, 55, 59, 32, 98, 104, 61, 55, 120, 81, 77, 68, 117, 111, 86, 86, 85, 52, 109, 48,\n 87, 48, 87, 82, 86, 83, 114, 86, 88, 77, 101, 71, 83, 73, 65, 83, 115, 110, 117, 99, 75,\n 57, 100, 74, 115, 114, 99, 43, 118, 85, 61, 59, 32, 104, 61, 102, 114, 111, 109, 58, 67,\n 111, 110, 116, 101, 110, 116, 45, 84, 121, 112, 101, 58, 77, 105, 109, 101, 45, 86, 101,\n 114, 115, 105, 111, 110, 58, 83, 117, 98, 106, 101, 99, 116, 58, 77, 101, 115, 115, 97,\n 103, 101, 45, 73, 100, 58, 68, 97, 116, 101, 58, 116, 111, 59, 32, 98, 61,\n ];\n let result = [\n 112, 144, 73, 182, 208, 98, 9, 238, 54, 229, 61, 145, 222, 17, 72, 62, 148, 222, 186,\n 55, 192, 82, 220, 35, 66, 47, 193, 200, 22, 38, 26, 186,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn msg_big_with_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n let message_size = 297;\n assert_eq(sha256_var(input, message_size), result);\n }\n\n #[test]\n fn msg_big_no_padding() {\n let input = [\n 48, 130, 1, 37, 2, 1, 0, 48, 11, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 48, 130, 1, 17,\n 48, 37, 2, 1, 1, 4, 32, 176, 223, 31, 133, 108, 84, 158, 102, 70, 11, 165, 175, 196, 12,\n 201, 130, 25, 131, 46, 125, 156, 194, 28, 23, 55, 133, 157, 164, 135, 136, 220, 78, 48,\n 37, 2, 1, 2, 4, 32, 190, 82, 180, 235, 222, 33, 79, 50, 152, 136, 142, 35, 116, 224, 6,\n 242, 156, 141, 128, 248, 10, 61, 98, 86, 248, 45, 207, 210, 90, 232, 175, 38, 48, 37, 2,\n 1, 3, 4, 32, 0, 194, 104, 108, 237, 246, 97, 230, 116, 198, 69, 110, 26, 87, 17, 89,\n 110, 199, 108, 250, 36, 21, 39, 87, 110, 102, 250, 213, 174, 131, 171, 174, 48, 37, 2,\n 1, 11, 4, 32, 136, 155, 87, 144, 111, 15, 152, 127, 85, 25, 154, 81, 20, 58, 51, 75,\n 193, 116, 234, 0, 60, 30, 29, 30, 183, 141, 72, 247, 255, 203, 100, 124, 48, 37, 2, 1,\n 12, 4, 32, 41, 234, 106, 78, 31, 11, 114, 137, 237, 17, 92, 71, 134, 47, 62, 78, 189,\n 233, 201, 214, 53, 4, 47, 189, 201, 133, 6, 121, 34, 131, 64, 142, 48, 37, 2, 1, 13, 4,\n 32, 91, 222, 210, 193, 62, 222, 104, 82, 36, 41, 138, 253, 70, 15, 148, 208, 156, 45,\n 105, 171, 241, 195, 185, 43, 217, 162, 146, 201, 222, 89, 238, 38, 48, 37, 2, 1, 14, 4,\n 32, 76, 123, 216, 13, 51, 227, 72, 245, 59, 193, 238, 166, 103, 49, 23, 164, 171, 188,\n 194, 197, 156, 187, 249, 28, 198, 95, 69, 15, 182, 56, 54, 38,\n ];\n let result = [\n 32, 85, 108, 174, 127, 112, 178, 182, 8, 43, 134, 123, 192, 211, 131, 66, 184, 240, 212,\n 181, 240, 180, 106, 195, 24, 117, 54, 129, 19, 10, 250, 53,\n ];\n assert_eq(sha256_var(input, input.len() as u64), result);\n }\n\n #[test]\n fn same_msg_len_variable_padding() {\n let input = [\n 29, 81, 165, 84, 243, 114, 101, 37, 242, 146, 127, 99, 69, 145, 39, 72, 213, 39, 253,\n 179, 218, 37, 217, 201, 172, 93, 198, 50, 249, 70, 15, 30, 162, 112, 187, 40, 140, 9,\n 236, 53, 32, 44, 38, 163, 113, 254, 192, 197, 44, 89, 71, 130, 169, 242, 17, 211, 214,\n 72, 19, 178, 186, 168, 147, 127, 99, 101, 252, 227, 8, 147, 150, 85, 97, 158, 17, 107,\n 218, 244, 82, 113, 247, 91, 208, 214, 60, 244, 87, 137, 173, 201, 130, 18, 66, 56, 198,\n 149, 207, 189, 175, 120, 123, 224, 177, 167, 251, 159, 143, 110, 68, 183, 189, 70, 126,\n 32, 35, 164, 44, 30, 44, 12, 65, 18, 62, 239, 242, 2, 248, 104, 2, 178, 64, 28, 126, 36,\n 137, 24, 14, 116, 91, 98, 90, 159, 218, 102, 45, 11, 110, 223, 245, 184, 52, 99, 59,\n 245, 136, 175, 3, 72, 164, 146, 145, 116, 22, 66, 24, 49, 193, 121, 3, 60, 37, 41, 97,\n 3, 190, 66, 195, 225, 63, 46, 3, 118, 4, 208, 15, 1, 40, 254, 235, 151, 123, 70, 180,\n 170, 44, 172, 90, 4, 254, 53, 239, 116, 246, 67, 56, 129, 61, 22, 169, 213, 65, 27, 216,\n 116, 162, 239, 214, 207, 126, 177, 20, 100, 25, 48, 143, 84, 215, 70, 197, 53, 65, 70,\n 86, 172, 61, 62, 9, 212, 167, 169, 133, 41, 126, 213, 196, 33, 192, 238, 0, 63, 246,\n 215, 58, 128, 110, 101, 92, 3, 170, 214, 130, 149, 52, 81, 125, 118, 233, 3, 118, 193,\n 104, 207, 120, 115, 77, 253, 191, 122, 0, 107, 164, 207, 113, 81, 169, 36, 201, 228, 74,\n 134, 131, 218, 178, 35, 30, 216, 101, 2, 103, 174, 87, 95, 50, 50, 215, 157, 5, 210,\n 188, 54, 211, 78, 45, 199, 96, 121, 241, 241, 176, 226, 194, 134, 130, 89, 217, 210,\n 186, 32, 140, 39, 91, 103, 212, 26, 87, 32, 72, 144, 228, 230, 117, 99, 188, 50, 15, 69,\n 79, 179, 50, 12, 106, 86, 218, 101, 73, 142, 243, 29, 250, 122, 228, 233, 29, 255, 22,\n 121, 114, 125, 103, 41, 250, 241, 179, 126, 158, 198, 116, 209, 65, 94, 98, 228, 175,\n 169, 96, 3, 9, 233, 133, 214, 55, 161, 164, 103, 80, 85, 24, 186, 64, 167, 92, 131, 53,\n 101, 202, 47, 25, 104, 118, 155, 14, 12, 12, 25, 116, 45, 221, 249, 28, 246, 212, 200,\n 157, 167, 169, 56, 197, 181, 4, 245, 146, 1, 140, 234, 191, 212, 228, 125, 87, 81, 86,\n 119, 30, 63, 129, 143, 32, 96,\n ];\n\n // Prepare inputs of different lengths\n let mut input_511 = [0; 511];\n let mut input_512 = [0; 512]; // Next block\n let mut input_575 = [0; 575];\n let mut input_576 = [0; 576]; // Next block\n for i in 0..input.len() {\n input_511[i] = input[i];\n input_512[i] = input[i];\n input_575[i] = input[i];\n input_576[i] = input[i];\n }\n\n // Compute hashes of all inputs (with same message length)\n let fixed_length_hash = super::sha256(input);\n let var_full_length_hash = sha256_var(input, input.len() as u64);\n let var_length_hash_511 = sha256_var(input_511, input.len() as u64);\n let var_length_hash_512 = sha256_var(input_512, input.len() as u64);\n let var_length_hash_575 = sha256_var(input_575, input.len() as u64);\n let var_length_hash_576 = sha256_var(input_576, input.len() as u64);\n\n // All of the above should have produced the same hash\n assert_eq(var_full_length_hash, fixed_length_hash);\n assert_eq(var_length_hash_511, fixed_length_hash);\n assert_eq(var_length_hash_512, fixed_length_hash);\n assert_eq(var_length_hash_575, fixed_length_hash);\n assert_eq(var_length_hash_576, fixed_length_hash);\n }\n\n #[test]\n fn test_get_item_byte() {\n let fld = make_item(10, 20, 30, 40);\n assert_eq(fld, 0x0a141e28);\n assert_eq(get_item_byte(fld, 0), 10);\n assert_eq(get_item_byte(fld, 4), 10);\n assert_eq(get_item_byte(fld, 6), 30);\n }\n\n #[test]\n fn test_byte_into_item() {\n let fld = make_item(0, 20, 0, 0);\n assert_eq(byte_into_item(20, 1), fld);\n assert_eq(byte_into_item(20, 5), fld);\n }\n\n #[test]\n fn test_set_item_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 0, 0, 0);\n assert_eq(set_item_zeros(fld0, 3), fld1);\n assert_eq(set_item_zeros(fld0, 4), 0);\n assert_eq(set_item_zeros(0, 4), 0);\n }\n\n #[test]\n fn test_set_item_byte_then_zeros() {\n let fld0 = make_item(10, 20, 30, 40);\n let fld1 = make_item(10, 50, 0, 0);\n assert_eq(set_item_byte_then_zeros(fld0, 1, 50), fld1);\n }\n\n #[test]\n fn test_build_msg_block_start_0() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48,\n ];\n assert_eq(input.len(), 22);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 0) };\n assert_eq(msg_byte_ptr, input.len());\n assert_eq(msg_block[0], make_item(input[0], input[1], input[2], input[3]));\n assert_eq(msg_block[1], make_item(input[4], input[5], input[6], input[7]));\n assert_eq(msg_block[5], make_item(input[20], input[21], 0, 0));\n assert_eq(msg_block[6], 0);\n }\n\n #[test]\n fn test_build_msg_block_start_1() {\n let input = [\n 102, 114, 111, 109, 58, 114, 117, 110, 110, 105, 101, 114, 46, 108, 101, 97, 103, 117,\n 101, 115, 46, 48, 106, 64, 105, 99, 108, 111, 117, 100, 46, 99, 111, 109, 13, 10, 99,\n 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 58, 116, 101, 120, 116, 47, 112,\n 108, 97, 105, 110, 59, 32, 99, 104, 97, 114, 115, 101, 116,\n ];\n assert_eq(input.len(), 68);\n let (msg_block, msg_byte_ptr) = unsafe { build_msg_block(input, input.len(), 64) };\n assert_eq(msg_byte_ptr, 4);\n assert_eq(msg_block[0], make_item(input[64], input[65], input[66], input[67]));\n assert_eq(msg_block[1], 0);\n }\n\n #[test]\n fn test_attach_len_to_msg_block() {\n let input: INT_BLOCK = [\n 2152555847, 1397309779, 1936618851, 1262052426, 1936876331, 1985297723, 543702374,\n 1919905082, 1131376244, 1701737517, 1417244773, 978151789, 1697470053, 1920166255,\n 1849316213, 1651139939,\n ];\n let msg_block = unsafe { attach_len_to_msg_block(input, 1, 448) };\n assert_eq(msg_block[0], ((1 << 7) as u32) * 256 * 256 * 256);\n assert_eq(msg_block[1], 0);\n assert_eq(msg_block[15], 3584);\n }\n}\n"
|
|
5637
5628
|
},
|
|
5638
|
-
"
|
|
5629
|
+
"51": {
|
|
5639
5630
|
"path": "std/option.nr",
|
|
5640
5631
|
"source": "use crate::cmp::{Eq, Ord, Ordering};\nuse crate::default::Default;\nuse crate::hash::{Hash, Hasher};\n\npub struct Option<T> {\n _is_some: bool,\n _value: T,\n}\n\nimpl<T> Option<T> {\n /// Constructs a None value\n pub fn none() -> Self {\n Self { _is_some: false, _value: crate::mem::zeroed() }\n }\n\n /// Constructs a Some wrapper around the given value\n pub fn some(_value: T) -> Self {\n Self { _is_some: true, _value }\n }\n\n /// True if this Option is None\n pub fn is_none(self) -> bool {\n !self._is_some\n }\n\n /// True if this Option is Some\n pub fn is_some(self) -> bool {\n self._is_some\n }\n\n /// Asserts `self.is_some()` and returns the wrapped value.\n pub fn unwrap(self) -> T {\n assert(self._is_some);\n self._value\n }\n\n /// Returns the inner value without asserting `self.is_some()`\n /// Note that if `self` is `None`, there is no guarantee what value will be returned,\n /// only that it will be of type `T`.\n pub fn unwrap_unchecked(self) -> T {\n self._value\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, returns the given default value.\n pub fn unwrap_or(self, default: T) -> T {\n if self._is_some {\n self._value\n } else {\n default\n }\n }\n\n /// Returns the wrapped value if `self.is_some()`. Otherwise, calls the given function to return\n /// a default value.\n pub fn unwrap_or_else<Env>(self, default: fn[Env]() -> T) -> T {\n if self._is_some {\n self._value\n } else {\n default()\n }\n }\n\n /// Asserts `self.is_some()` with a provided custom message and returns the contained `Some` value\n pub fn expect<let N: u32, MessageTypes>(self, message: fmtstr<N, MessageTypes>) -> T {\n assert(self.is_some(), message);\n self._value\n }\n\n /// If self is `Some(x)`, this returns `Some(f(x))`. Otherwise, this returns `None`.\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> Option<U> {\n if self._is_some {\n Option::some(f(self._value))\n } else {\n Option::none()\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns the given default value.\n pub fn map_or<U, Env>(self, default: U, f: fn[Env](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default\n }\n }\n\n /// If self is `Some(x)`, this returns `f(x)`. Otherwise, this returns `default()`.\n pub fn map_or_else<U, Env1, Env2>(self, default: fn[Env1]() -> U, f: fn[Env2](T) -> U) -> U {\n if self._is_some {\n f(self._value)\n } else {\n default()\n }\n }\n\n /// Returns None if self is None. Otherwise, this returns `other`.\n pub fn and(self, other: Self) -> Self {\n if self.is_none() {\n Option::none()\n } else {\n other\n }\n }\n\n /// If self is None, this returns None. Otherwise, this calls the given function\n /// with the Some value contained within self, and returns the result of that call.\n ///\n /// In some languages this function is called `flat_map` or `bind`.\n pub fn and_then<U, Env>(self, f: fn[Env](T) -> Option<U>) -> Option<U> {\n if self._is_some {\n f(self._value)\n } else {\n Option::none()\n }\n }\n\n /// If self is Some, return self. Otherwise, return `other`.\n pub fn or(self, other: Self) -> Self {\n if self._is_some {\n self\n } else {\n other\n }\n }\n\n /// If self is Some, return self. Otherwise, return `default()`.\n pub fn or_else<Env>(self, default: fn[Env]() -> Self) -> Self {\n if self._is_some {\n self\n } else {\n default()\n }\n }\n\n // If only one of the two Options is Some, return that option.\n // Otherwise, if both options are Some or both are None, None is returned.\n pub fn xor(self, other: Self) -> Self {\n if self._is_some {\n if other._is_some {\n Option::none()\n } else {\n self\n }\n } else if other._is_some {\n other\n } else {\n Option::none()\n }\n }\n\n /// Returns `Some(x)` if self is `Some(x)` and `predicate(x)` is true.\n /// Otherwise, this returns `None`\n pub fn filter<Env>(self, predicate: fn[Env](T) -> bool) -> Self {\n if self._is_some {\n if predicate(self._value) {\n self\n } else {\n Option::none()\n }\n } else {\n Option::none()\n }\n }\n\n /// Flattens an Option<Option<T>> into a Option<T>.\n /// This returns None if the outer Option is None. Otherwise, this returns the inner Option.\n pub fn flatten(option: Option<Option<T>>) -> Option<T> {\n if option._is_some {\n option._value\n } else {\n Option::none()\n }\n }\n}\n\nimpl<T> Default for Option<T> {\n fn default() -> Self {\n Option::none()\n }\n}\n\nimpl<T> Eq for Option<T>\nwhere\n T: Eq,\n{\n fn eq(self, other: Self) -> bool {\n if self._is_some == other._is_some {\n if self._is_some {\n self._value == other._value\n } else {\n true\n }\n } else {\n false\n }\n }\n}\n\nimpl<T> Hash for Option<T>\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self._is_some.hash(state);\n if self._is_some {\n self._value.hash(state);\n }\n }\n}\n\n// For this impl we're declaring Option::none < Option::some\nimpl<T> Ord for Option<T>\nwhere\n T: Ord,\n{\n fn cmp(self, other: Self) -> Ordering {\n if self._is_some {\n if other._is_some {\n self._value.cmp(other._value)\n } else {\n Ordering::greater()\n }\n } else if other._is_some {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n"
|
|
5641
5632
|
},
|
|
5642
|
-
"
|
|
5633
|
+
"52": {
|
|
5643
5634
|
"path": "std/panic.nr",
|
|
5644
5635
|
"source": "pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"
|
|
5645
5636
|
},
|
|
5646
|
-
"
|
|
5647
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr",
|
|
5648
|
-
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_emission::NoteEmission,\n note_header::NoteHeader,\n note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_nullify_internal, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission<Note>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"
|
|
5649
|
-
},
|
|
5650
|
-
"78": {
|
|
5651
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr",
|
|
5652
|
-
"source": "use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n};\n\nuse dep::protocol_types::{\n hash::{\n compute_siloed_note_hash as compute_siloed_note_hash,\n compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n compute_unique_note_hash,\n },\n utils::arr_copy_slice,\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let nonce = note.get_header().nonce;\n let counter = note.get_header().note_hash_counter;\n\n if counter != 0 {\n note_hash\n } else {\n compute_unique_note_hash(nonce, note_hash)\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note.get_header();\n\n if header.note_hash_counter != 0 {\n if header.nonce == 0 {\n // Case 1: Transient note\n note_hash_for_read_request\n } else {\n // Case 2: Non-revertible note, nullified by a revertible nullifier\n let unique_note_hash =\n compute_unique_note_hash(header.nonce, note_hash_for_read_request);\n compute_siloed_note_hash(header.contract_address, unique_note_hash)\n }\n } else {\n // Case 3: Note from a previous transaction\n // note_hash_for_read_request is already the unique_note_hash in this case\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request)\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\n let mut note = deserialize_content(arr_copy_slice(serialized_note, [0; N], 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, note_hash);\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, unique_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"
|
|
5653
|
-
},
|
|
5654
|
-
"82": {
|
|
5655
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
|
|
5656
|
-
"source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n pub note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"
|
|
5657
|
-
},
|
|
5658
|
-
"85": {
|
|
5659
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr",
|
|
5660
|
-
"source": "use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::collapse_array(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"
|
|
5661
|
-
},
|
|
5662
|
-
"93": {
|
|
5637
|
+
"66": {
|
|
5663
5638
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr",
|
|
5664
|
-
"source": "use crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n header::get_header_at,\n key_validation_request::get_key_validation_request,\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log::Log,\n log_hash::LogHash,\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::PrivateLogData,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DISPATCH_SELECTOR,\n },\n header::Header,\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub max_block_number: MaxBlockNumber,\n\n pub note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n pub note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n pub public_call_requests: BoundedVec<Counted<PublicCallRequest>, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_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 pub historical_header: Header,\n\n pub private_logs: BoundedVec<PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec<LogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\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.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\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 set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert(request.pk_m.hash() == pk_m_hash);\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n },\n );\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\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, counter: self.next_counter() };\n self.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(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\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 leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS]) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, 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 ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // The oracle simulates the private call and returns the value of the side effects counter after execution of\n // the call (which means that end_side_effect_counter - start_side_effect_counter is the number of side effects\n // that took place), along with the hash of the return values. We validate these by requesting a private kernel\n // iteration in which the return values are constrained to hash to `returns_hash` and the side effects counter\n // to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\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)\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)\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 ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_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 ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: Header::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"
|
|
5665
|
-
},
|
|
5666
|
-
"99": {
|
|
5667
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr",
|
|
5668
|
-
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"
|
|
5639
|
+
"source": "use dep::protocol_types::debug_log::debug_log_format;\n\nuse crate::{\n context::{inputs::PrivateContextInputs, packed_returns::PackedReturns},\n hash::{ArgsHasher, hash_args_array},\n keys::constants::{NULLIFIER_INDEX, NUM_KEY_TYPES, OUTGOING_INDEX, sk_generators},\n messaging::process_l1_to_l2_message,\n oracle::{\n arguments,\n block_header::get_block_header_at,\n call_private_function::call_private_function_internal,\n enqueue_public_function_call::{\n enqueue_public_function_call_internal, notify_set_min_revertible_side_effect_counter,\n set_public_teardown_function_call_internal,\n },\n key_validation_request::get_key_validation_request,\n returns::pack_returns,\n },\n};\nuse dep::protocol_types::{\n abis::{\n call_context::CallContext,\n function_selector::FunctionSelector,\n log::Log,\n log_hash::LogHash,\n max_block_number::MaxBlockNumber,\n note_hash::NoteHash,\n nullifier::Nullifier,\n private_call_request::PrivateCallRequest,\n private_circuit_public_inputs::PrivateCircuitPublicInputs,\n private_log::PrivateLogData,\n public_call_request::PublicCallRequest,\n read_request::ReadRequest,\n side_effect::Counted,\n validation_requests::{KeyValidationRequest, KeyValidationRequestAndGenerator},\n },\n address::{AztecAddress, EthAddress},\n block_header::BlockHeader,\n constants::{\n MAX_CONTRACT_CLASS_LOGS_PER_CALL, MAX_ENQUEUED_CALLS_PER_CALL,\n MAX_KEY_VALIDATION_REQUESTS_PER_CALL, MAX_L2_TO_L1_MSGS_PER_CALL,\n MAX_NOTE_HASH_READ_REQUESTS_PER_CALL, MAX_NOTE_HASHES_PER_CALL,\n MAX_NULLIFIER_READ_REQUESTS_PER_CALL, MAX_NULLIFIERS_PER_CALL,\n MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL, MAX_PRIVATE_LOGS_PER_CALL,\n PRIVATE_LOG_SIZE_IN_FIELDS, PUBLIC_DISPATCH_SELECTOR,\n },\n messaging::l2_to_l1_message::L2ToL1Message,\n traits::Empty,\n};\n\n// When finished, one can call .finish() to convert back to the abi\npub struct PrivateContext {\n // docs:start:private-context\n pub inputs: PrivateContextInputs,\n pub side_effect_counter: u32,\n\n pub min_revertible_side_effect_counter: u32,\n pub is_fee_payer: bool,\n\n pub args_hash: Field,\n pub return_hash: Field,\n\n pub max_block_number: MaxBlockNumber,\n\n pub note_hash_read_requests: BoundedVec<ReadRequest, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>,\n pub nullifier_read_requests: BoundedVec<ReadRequest, MAX_NULLIFIER_READ_REQUESTS_PER_CALL>,\n key_validation_requests_and_generators: BoundedVec<KeyValidationRequestAndGenerator, MAX_KEY_VALIDATION_REQUESTS_PER_CALL>,\n\n pub note_hashes: BoundedVec<NoteHash, MAX_NOTE_HASHES_PER_CALL>,\n pub nullifiers: BoundedVec<Nullifier, MAX_NULLIFIERS_PER_CALL>,\n\n pub private_call_requests: BoundedVec<PrivateCallRequest, MAX_PRIVATE_CALL_STACK_LENGTH_PER_CALL>,\n pub public_call_requests: BoundedVec<Counted<PublicCallRequest>, MAX_ENQUEUED_CALLS_PER_CALL>,\n pub public_teardown_call_request: PublicCallRequest,\n pub l2_to_l1_msgs: BoundedVec<L2ToL1Message, MAX_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 pub historical_header: BlockHeader,\n\n pub private_logs: BoundedVec<PrivateLogData, MAX_PRIVATE_LOGS_PER_CALL>,\n pub contract_class_logs_hashes: BoundedVec<LogHash, MAX_CONTRACT_CLASS_LOGS_PER_CALL>,\n\n // Contains the last key validation request for each key type. This is used to cache the last request and avoid\n // fetching the same request multiple times.\n // The index of the array corresponds to the key type (0 nullifier, 1 incoming, 2 outgoing, 3 tagging).\n pub last_key_validation_requests: [Option<KeyValidationRequest>; NUM_KEY_TYPES],\n}\n\nimpl PrivateContext {\n pub fn new(inputs: PrivateContextInputs, args_hash: Field) -> PrivateContext {\n PrivateContext {\n inputs,\n side_effect_counter: inputs.start_side_effect_counter + 1,\n min_revertible_side_effect_counter: 0,\n is_fee_payer: false,\n args_hash,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n historical_header: inputs.historical_header,\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\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.contract_address\n }\n\n pub fn chain_id(self) -> Field {\n self.inputs.tx_context.chain_id\n }\n\n pub fn version(self) -> Field {\n self.inputs.tx_context.version\n }\n\n pub fn selector(self) -> FunctionSelector {\n self.inputs.call_context.function_selector\n }\n\n pub fn get_args_hash(self) -> Field {\n self.args_hash\n }\n\n pub fn push_note_hash(&mut self, note_hash: Field) {\n self.note_hashes.push(NoteHash { value: note_hash, counter: self.next_counter() });\n\n // WARNING(https://github.com/AztecProtocol/aztec-packages/issues/10558): if you delete this debug_log_format line, some tests fail.\n debug_log_format(\n \"Context.note_hashes, after pushing new note hash: {0}\",\n self.note_hashes.storage().map(|nh: NoteHash| nh.value),\n );\n }\n\n pub fn push_nullifier(&mut self, nullifier: Field) {\n self.nullifiers.push(\n Nullifier { value: nullifier, note_hash: 0, counter: self.next_counter() },\n );\n }\n\n pub fn push_nullifier_for_note_hash(&mut self, nullifier: Field, nullified_note_hash: Field) {\n self.nullifiers.push(\n Nullifier {\n value: nullifier,\n note_hash: nullified_note_hash,\n counter: self.next_counter(),\n },\n );\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_block_header(self) -> BlockHeader {\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_block_header_at(self, block_number: u32) -> BlockHeader {\n get_block_header_at(block_number, self)\n }\n\n pub fn set_return_hash(&mut self, returns_hasher: ArgsHasher) {\n pack_returns(returns_hasher.fields);\n self.return_hash = returns_hasher.hash();\n }\n\n pub fn finish(self) -> PrivateCircuitPublicInputs {\n PrivateCircuitPublicInputs {\n call_context: self.inputs.call_context,\n args_hash: self.args_hash,\n returns_hash: self.return_hash,\n min_revertible_side_effect_counter: self.min_revertible_side_effect_counter,\n is_fee_payer: self.is_fee_payer,\n max_block_number: self.max_block_number,\n note_hash_read_requests: self.note_hash_read_requests.storage(),\n nullifier_read_requests: self.nullifier_read_requests.storage(),\n key_validation_requests_and_generators: self\n .key_validation_requests_and_generators\n .storage(),\n note_hashes: self.note_hashes.storage(),\n nullifiers: self.nullifiers.storage(),\n private_call_requests: self.private_call_requests.storage(),\n public_call_requests: self.public_call_requests.storage(),\n public_teardown_call_request: self.public_teardown_call_request,\n l2_to_l1_msgs: self.l2_to_l1_msgs.storage(),\n start_side_effect_counter: self.inputs.start_side_effect_counter,\n end_side_effect_counter: self.side_effect_counter,\n private_logs: self.private_logs.storage(),\n contract_class_logs_hashes: self.contract_class_logs_hashes.storage(),\n historical_header: self.historical_header,\n tx_context: self.inputs.tx_context,\n }\n }\n\n pub fn set_as_fee_payer(&mut self) {\n dep::protocol_types::debug_log::debug_log_format(\n \"Setting {0} as fee payer\",\n [self.this_address().to_field()],\n );\n self.is_fee_payer = true;\n }\n\n pub fn end_setup(&mut self) {\n // dep::protocol_types::debug_log::debug_log_format(\n // \"Ending setup at counter {0}\",\n // [self.side_effect_counter as Field]\n // );\n self.min_revertible_side_effect_counter = self.side_effect_counter;\n notify_set_min_revertible_side_effect_counter(self.min_revertible_side_effect_counter);\n }\n\n // docs:start:max-block-number\n pub fn set_tx_max_block_number(&mut self, max_block_number: u32) {\n // docs:end:max-block-number\n self.max_block_number =\n MaxBlockNumber::min_with_u32(self.max_block_number, max_block_number);\n }\n\n pub fn push_note_hash_read_request(&mut self, note_hash: Field) {\n let side_effect = ReadRequest { value: note_hash, counter: self.next_counter() };\n self.note_hash_read_requests.push(side_effect);\n }\n\n pub fn push_nullifier_read_request(&mut self, nullifier: Field) {\n let request = ReadRequest { value: nullifier, counter: self.next_counter() };\n self.nullifier_read_requests.push(request);\n }\n\n pub fn request_nsk_app(&mut self, npk_m_hash: Field) -> Field {\n self.request_sk_app(npk_m_hash, NULLIFIER_INDEX)\n }\n\n pub fn request_ovsk_app(&mut self, ovpk_m_hash: Field) -> Field {\n self.request_sk_app(ovpk_m_hash, OUTGOING_INDEX)\n }\n\n fn request_sk_app(&mut self, pk_m_hash: Field, key_index: Field) -> Field {\n let cached_request =\n self.last_key_validation_requests[key_index].unwrap_or(KeyValidationRequest::empty());\n\n if cached_request.pk_m.hash() == pk_m_hash {\n // We get a match so the cached request is the latest one\n cached_request.sk_app\n } else {\n // We didn't get a match meaning the cached result is stale\n // Typically we'd validate keys by showing that they are the preimage of `pk_m_hash`, but that'd require\n // the oracle returning the master secret keys, which could cause malicious contracts to leak it or learn\n // about secrets from other contracts. We therefore silo secret keys, and rely on the private kernel to\n // validate that we siloed secret key corresponds to correct siloing of the master secret key that hashes\n // to `pk_m_hash`.\n let request = unsafe { get_key_validation_request(pk_m_hash, key_index) };\n assert(request.pk_m.hash() == pk_m_hash);\n\n self.key_validation_requests_and_generators.push(\n KeyValidationRequestAndGenerator {\n request,\n sk_app_generator: sk_generators[key_index],\n },\n );\n self.last_key_validation_requests[key_index] = Option::some(request);\n request.sk_app\n }\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, counter: self.next_counter() };\n self.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(\n &mut self,\n content: Field,\n secret: Field,\n sender: EthAddress,\n leaf_index: Field,\n ) {\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 leaf_index,\n );\n\n // Push nullifier (and the \"commitment\" corresponding to this can be \"empty\")\n self.push_nullifier(nullifier)\n }\n // docs:end:consume_l1_to_l2_message\n\n pub fn emit_private_log(&mut self, log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS]) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter: 0, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn emit_raw_note_log(\n &mut self,\n log: [Field; PRIVATE_LOG_SIZE_IN_FIELDS],\n note_hash_counter: u32,\n ) {\n let counter = self.next_counter();\n let private_log = PrivateLogData { log: Log::new(log), note_hash_counter, counter };\n self.private_logs.push(private_log);\n }\n\n pub fn call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_private_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) -> PackedReturns {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_private_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\n }\n\n pub fn call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, false)\n }\n\n pub fn static_call_private_function_no_args(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n ) -> PackedReturns {\n self.call_private_function_with_packed_args(contract_address, function_selector, 0, 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 ) -> PackedReturns {\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n let start_side_effect_counter = self.side_effect_counter;\n\n // The oracle simulates the private call and returns the value of the side effects counter after execution of\n // the call (which means that end_side_effect_counter - start_side_effect_counter is the number of side effects\n // that took place), along with the hash of the return values. We validate these by requesting a private kernel\n // iteration in which the return values are constrained to hash to `returns_hash` and the side effects counter\n // to increment from start to end.\n let (end_side_effect_counter, returns_hash) = unsafe {\n call_private_function_internal(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n )\n };\n\n self.private_call_requests.push(\n PrivateCallRequest {\n call_context: CallContext {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n },\n args_hash,\n returns_hash,\n start_side_effect_counter,\n end_side_effect_counter,\n },\n );\n\n // TODO (fees) figure out why this crashes the prover and enable it\n // we need this in order to pay fees inside child call contexts\n // assert(\n // (item.public_inputs.min_revertible_side_effect_counter == 0 as u32)\n // | (item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter)\n // );\n // if item.public_inputs.min_revertible_side_effect_counter\n // > self.min_revertible_side_effect_counter {\n // self.min_revertible_side_effect_counter = item.public_inputs.min_revertible_side_effect_counter;\n // }\n self.side_effect_counter = end_side_effect_counter + 1;\n PackedReturns::new(returns_hash)\n }\n\n pub fn call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn static_call_public_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.call_public_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n true,\n )\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)\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)\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 ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = enqueue_public_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n // Public calls are rerouted through the dispatch function.\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n let call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n\n self.public_call_requests.push(Counted::new(call_request, counter));\n }\n\n pub fn set_public_teardown_function<let ARGS_COUNT: u32>(\n &mut self,\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args: [Field; ARGS_COUNT],\n ) {\n let args_hash = hash_args_array(args);\n arguments::pack_arguments_array(args);\n self.set_public_teardown_function_with_packed_args(\n contract_address,\n function_selector,\n args_hash,\n false,\n )\n }\n\n pub fn set_public_teardown_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 ) {\n let counter = self.next_counter();\n\n let mut is_static_call = is_static_call | self.inputs.call_context.is_static_call;\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/8985): Fix this.\n // WARNING: This is insecure and should be temporary!\n // The oracle repacks the arguments and returns a new args_hash.\n // new_args = [selector, ...old_args], so as to make it suitable to call the public dispatch function.\n // We don't validate or compute it in the circuit because a) it's harder to do with slices, and\n // b) this is only temporary.\n let args_hash = set_public_teardown_function_call_internal(\n contract_address,\n function_selector,\n args_hash,\n counter,\n is_static_call,\n );\n\n let function_selector = comptime { FunctionSelector::from_field(PUBLIC_DISPATCH_SELECTOR) };\n\n self.public_teardown_call_request = PublicCallRequest {\n msg_sender: self.this_address(),\n contract_address,\n function_selector,\n is_static_call,\n args_hash,\n };\n }\n\n fn next_counter(&mut self) -> u32 {\n let counter = self.side_effect_counter;\n self.side_effect_counter += 1;\n counter\n }\n}\n\nimpl Empty for PrivateContext {\n fn empty() -> Self {\n PrivateContext {\n inputs: PrivateContextInputs::empty(),\n side_effect_counter: 0 as u32,\n min_revertible_side_effect_counter: 0 as u32,\n is_fee_payer: false,\n args_hash: 0,\n return_hash: 0,\n max_block_number: MaxBlockNumber::empty(),\n note_hash_read_requests: BoundedVec::new(),\n nullifier_read_requests: BoundedVec::new(),\n key_validation_requests_and_generators: BoundedVec::new(),\n note_hashes: BoundedVec::new(),\n nullifiers: BoundedVec::new(),\n private_call_requests: BoundedVec::new(),\n public_call_requests: BoundedVec::new(),\n public_teardown_call_request: PublicCallRequest::empty(),\n l2_to_l1_msgs: BoundedVec::new(),\n historical_header: BlockHeader::empty(),\n private_logs: BoundedVec::new(),\n contract_class_logs_hashes: BoundedVec::new(),\n last_key_validation_requests: [Option::none(); NUM_KEY_TYPES],\n }\n }\n}\n"
|
|
5669
5640
|
},
|
|
5670
|
-
"
|
|
5671
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5672
|
-
"source": "use dep::protocol_types::
|
|
5673
|
-
},
|
|
5674
|
-
"111": {
|
|
5675
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr",
|
|
5676
|
-
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"
|
|
5677
|
-
},
|
|
5678
|
-
"112": {
|
|
5679
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr",
|
|
5680
|
-
"source": "use crate::note::{note_header::NoteHeader, note_interface::NoteInterface};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::{INDEXED_TAGGING_SECRET_LENGTH, IndexedTaggingSecret},\n utils::arr_copy_slice,\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S]\nwhere\n Note: NoteInterface<N>,\n{\n sync_notes_oracle_wrapper();\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let header = NoteHeader { contract_address, nonce, storage_slot, note_hash_counter };\n let serialized_note = arr_copy_slice(fields, [0; N], read_offset + 2);\n let mut note = Note::deserialize_content(serialized_note);\n note.set_header(header);\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n/// Same as `get_app_tagging_secret_as_sender`, except it returns the derived tag, ready to be included in a log.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_app_tagging_secret_as_sender(sender, recipient).compute_tag(recipient)\n}\n\n/// Returns the tagging secret for a given sender and recipient pair, siloed for the current contract address.\n/// Includes the last known index used to send a note tagged with this secret.\n/// For this to work, PXE must know the ivpsk_m of the sender.\n/// For the recipient's side, only the address is needed.\npub unconstrained fn get_app_tagging_secret_as_sender(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> IndexedTaggingSecret {\n let result = get_app_tagging_secret_as_sender_oracle(sender, recipient);\n IndexedTaggingSecret::deserialize(result)\n}\n\n#[oracle(getAppTaggingSecretAsSender)]\nunconstrained fn get_app_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> [Field; INDEXED_TAGGING_SECRET_LENGTH] {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Finds new notes that may have been sent to all registered accounts in PXE in the current contract and makes them available\n/// for later querying via the `get_notes` oracle.\npub fn sync_notes() {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n sync_notes_oracle_wrapper();\n }\n}\n\nunconstrained fn sync_notes_oracle_wrapper() {\n sync_notes_oracle();\n}\n\n#[oracle(syncNotes)]\nunconstrained fn sync_notes_oracle() {}\n"
|
|
5641
|
+
"76": {
|
|
5642
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/generators.nr",
|
|
5643
|
+
"source": "use dep::protocol_types::point::Point;\n\n// A set of generators generated with `derive_generators(...)` function from noir::std\npub global Ga1: Point = Point {\n x: 0x30426e64aee30e998c13c8ceecda3a77807dbead52bc2f3bf0eae851b4b710c1,\n y: 0x113156a068f603023240c96b4da5474667db3b8711c521c748212a15bc034ea6,\n is_infinite: false,\n};\npub global Ga2: Point = Point {\n x: 0x2825c79cc6a5cbbeef7d6a8f1b6a12b312aa338440aefeb4396148c89147c049,\n y: 0x129bfd1da54b7062d6b544e7e36b90736350f6fba01228c41c72099509f5701e,\n is_infinite: false,\n};\npub global Ga3: Point = Point {\n x: 0x0edb1e293c3ce91bfc04e3ceaa50d2c541fa9d091c72eb403efb1cfa2cb3357f,\n y: 0x1341d675fa030ece3113ad53ca34fd13b19b6e9762046734f414824c4d6ade35,\n is_infinite: false,\n};\npub global Ga4: Point = Point {\n x: 0x0e0dad2250583f2a9f0acb04ededf1701b85b0393cae753fe7e14b88af81cb52,\n y: 0x0973b02c5caac339ee4ad5dab51329920f7bf1b6a07e1dabe5df67040b300962,\n is_infinite: false,\n};\npub global Ga5: Point = Point {\n x: 0x2f3342e900e8c488a28931aae68970738fdc68afde2910de7b320c00c902087d,\n y: 0x1bf958dc63cb09d59230603a0269ae86d6f92494da244910351f1132df20fc08,\n is_infinite: false,\n};\n// If you change this update `G_SLOT` in `yarn-project/simulator/src/client/test_utils.ts` as well\npub global G_slot: Point = Point {\n x: 0x041223147b680850dc82e8a55a952d4df20256fe0593d949a9541ca00f0abf15,\n y: 0x0a8c72e60d0e60f5d804549d48f3044d06140b98ed717a9b532af630c1530791,\n is_infinite: false,\n};\n\nmod test {\n use crate::generators::{G_slot, Ga1, Ga2, Ga3, Ga4, Ga5};\n use dep::protocol_types::point::Point;\n use std::hash::derive_generators;\n\n #[test]\n unconstrained fn test_generators() {\n let generators: [Point; 6] = derive_generators(\"aztec_nr_generators\".as_bytes(), 0);\n assert_eq(generators[0], Ga1);\n assert_eq(generators[1], Ga2);\n assert_eq(generators[2], Ga3);\n assert_eq(generators[4], Ga4);\n assert_eq(generators[5], Ga5);\n assert_eq(generators[3], G_slot);\n }\n}\n"
|
|
5681
5644
|
},
|
|
5682
|
-
"
|
|
5683
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/
|
|
5684
|
-
"source": "
|
|
5645
|
+
"77": {
|
|
5646
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr",
|
|
5647
|
+
"source": "use dep::protocol_types::{\n address::{AztecAddress, PartialAddress},\n point::Point,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n};\n\n#[oracle(getPublicKeysAndPartialAddress)]\nunconstrained fn get_public_keys_and_partial_address_oracle(_address: AztecAddress) -> [Field; 13] {}\n\npub unconstrained fn get_public_keys_and_partial_address(\n address: AztecAddress,\n) -> (PublicKeys, PartialAddress) {\n let result = get_public_keys_and_partial_address_oracle(address);\n\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: result[0], y: result[1], is_infinite: result[2] as bool } },\n ivpk_m: IvpkM {\n inner: Point { x: result[3], y: result[4], is_infinite: result[5] as bool },\n },\n ovpk_m: OvpkM {\n inner: Point { x: result[6], y: result[7], is_infinite: result[8] as bool },\n },\n tpk_m: TpkM {\n inner: Point { x: result[9], y: result[10], is_infinite: result[11] as bool },\n },\n };\n\n let partial_address = PartialAddress::from_field(result[12]);\n\n (keys, partial_address)\n}\n"
|
|
5685
5648
|
},
|
|
5686
|
-
"
|
|
5649
|
+
"79": {
|
|
5687
5650
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr",
|
|
5688
5651
|
"source": "/// Returns an unconstrained random value. Note that it is not possible to constrain this value to prove that it is\n/// truly random: we assume that the oracle is cooperating and returning random values.\n/// In some applications this behavior might not be acceptable and other techniques might be more suitable, such as\n/// producing pseudo-random values by hashing values outside of user control (like block hashes) or secrets.\npub unconstrained fn random() -> Field {\n rand_oracle()\n}\n\n#[oracle(getRandomField)]\nunconstrained fn rand_oracle() -> Field {}\n"
|
|
5689
5652
|
},
|
|
5690
|
-
"
|
|
5653
|
+
"85": {
|
|
5654
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr",
|
|
5655
|
+
"source": "use dep::protocol_types::abis::validation_requests::{\n key_validation_request::KEY_VALIDATION_REQUEST_LENGTH, KeyValidationRequest,\n};\n\n#[oracle(getKeyValidationRequest)]\nunconstrained fn get_key_validation_request_oracle(\n _pk_m_hash: Field,\n _key_index: Field,\n) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {}\n\nunconstrained fn get_key_validation_request_internal(\n npk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n let result = get_key_validation_request_oracle(npk_m_hash, key_index);\n KeyValidationRequest::deserialize(result)\n}\n\npub unconstrained fn get_key_validation_request(\n pk_m_hash: Field,\n key_index: Field,\n) -> KeyValidationRequest {\n get_key_validation_request_internal(pk_m_hash, key_index)\n}\n"
|
|
5656
|
+
},
|
|
5657
|
+
"87": {
|
|
5691
5658
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr",
|
|
5692
5659
|
"source": "use dep::protocol_types::{abis::function_selector::FunctionSelector, address::AztecAddress};\n\n#[oracle(enqueuePublicFunctionCall)]\nunconstrained fn enqueue_public_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn enqueue_public_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n enqueue_public_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\n#[oracle(setPublicTeardownFunctionCall)]\nunconstrained fn set_public_teardown_function_call_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _side_effect_counter: u32,\n _is_static_call: bool,\n) -> Field {}\n\npub unconstrained fn set_public_teardown_function_call_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n side_effect_counter: u32,\n is_static_call: bool,\n) -> Field {\n set_public_teardown_function_call_oracle(\n contract_address,\n function_selector,\n args_hash,\n side_effect_counter,\n is_static_call,\n )\n}\n\npub fn notify_set_min_revertible_side_effect_counter(counter: u32) {\n unsafe { notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter) };\n}\n\npub unconstrained fn notify_set_min_revertible_side_effect_counter_oracle_wrapper(counter: u32) {\n notify_set_min_revertible_side_effect_counter_oracle(counter);\n}\n\n#[oracle(notifySetMinRevertibleSideEffectCounter)]\nunconstrained fn notify_set_min_revertible_side_effect_counter_oracle(_counter: u32) {}\n"
|
|
5693
5660
|
},
|
|
5694
|
-
"
|
|
5695
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/
|
|
5696
|
-
"source": "
|
|
5661
|
+
"88": {
|
|
5662
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr",
|
|
5663
|
+
"source": "/// Notifies the simulator that `returns` will be later fetched once the function return is processed, referenced by\n/// their hash. This allows the simulator to know how to respond to this future request.\n///\n/// This is only used during private execution, since in public it is the VM itself that keeps track of return values.\npub fn pack_returns(returns: [Field]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call. When\n // unpacking however the caller must check that the returned value is indeed the preimage.\n unsafe { pack_returns_oracle_wrapper(returns) };\n}\n\npub unconstrained fn pack_returns_oracle_wrapper(returns: [Field]) {\n let _ = pack_returns_oracle(returns);\n}\n\npub unconstrained fn unpack_returns<let N: u32>(return_hash: Field) -> [Field; N] {\n unpack_returns_oracle(return_hash)\n}\n\n#[oracle(packReturns)]\nunconstrained fn pack_returns_oracle(_returns: [Field]) -> Field {}\n\n#[oracle(unpackReturns)]\nunconstrained fn unpack_returns_oracle<let N: u32>(_return_hash: Field) -> [Field; N] {}\n"
|
|
5697
5664
|
},
|
|
5698
|
-
"
|
|
5699
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/
|
|
5700
|
-
"source": "use dep::protocol_types::
|
|
5665
|
+
"91": {
|
|
5666
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr",
|
|
5667
|
+
"source": "use crate::{note::{note_header::NoteHeader, note_interface::NoteInterface}, utils::array};\n\nuse dep::protocol_types::{\n address::AztecAddress,\n indexed_tagging_secret::{INDEXED_TAGGING_SECRET_LENGTH, IndexedTaggingSecret},\n};\n\n/// Notifies the simulator that a note has been created, so that it can be returned in future read requests in the same\n/// transaction. This note should only be added to the non-volatile database if found in an actual block.\npub fn notify_created_note<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n notify_created_note_oracle_wrapper(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n )\n };\n}\n\n/// Notifies the simulator that a note has been nullified, so that it is no longer returned in future read requests in\n/// the same transaction. This note should only be removed to the non-volatile database if its nullifier is found in an\n/// actual block.\npub fn notify_nullified_note(nullifier: Field, note_hash: Field, counter: u32) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { notify_nullified_note_oracle_wrapper(nullifier, note_hash, counter) };\n}\n\nunconstrained fn notify_created_note_oracle_wrapper<let N: u32>(\n storage_slot: Field,\n note_type_id: Field,\n serialized_note: [Field; N],\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_created_note_oracle(\n storage_slot,\n note_type_id,\n serialized_note,\n note_hash,\n counter,\n );\n}\n\n#[oracle(notifyCreatedNote)]\nunconstrained fn notify_created_note_oracle<let N: u32>(\n _storage_slot: Field,\n _note_type_id: Field,\n _serialized_note: [Field; N],\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\nunconstrained fn notify_nullified_note_oracle_wrapper(\n nullifier: Field,\n note_hash: Field,\n counter: u32,\n) {\n let _ = notify_nullified_note_oracle(nullifier, note_hash, counter);\n}\n\n#[oracle(notifyNullifiedNote)]\nunconstrained fn notify_nullified_note_oracle(\n _nullifier: Field,\n _note_hash: Field,\n _counter: u32,\n) -> Field {}\n\n#[oracle(getNotes)]\nunconstrained fn get_notes_oracle<let N: u32, let S: u32>(\n _storage_slot: Field,\n _num_selects: u8,\n _select_by_indexes: [u8; N],\n _select_by_offsets: [u8; N],\n _select_by_lengths: [u8; N],\n _select_values: [Field; N],\n _select_comparators: [u8; N],\n _sort_by_indexes: [u8; N],\n _sort_by_offsets: [u8; N],\n _sort_by_lengths: [u8; N],\n _sort_order: [u8; N],\n _limit: u32,\n _offset: u32,\n _status: u8,\n _return_size: u32,\n _placeholder_fields: [Field; S],\n) -> [Field; S] {}\n\nunconstrained fn get_notes_oracle_wrapper<let N: u32, let S: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; N],\n select_by_offsets: [u8; N],\n select_by_lengths: [u8; N],\n select_values: [Field; N],\n select_comparators: [u8; N],\n sort_by_indexes: [u8; N],\n sort_by_offsets: [u8; N],\n sort_by_lengths: [u8; N],\n sort_order: [u8; N],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_fields: [Field; S],\n) -> [Field; S] {\n let return_size = placeholder_fields.len() as u32;\n get_notes_oracle(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n return_size,\n placeholder_fields,\n )\n}\n\npub unconstrained fn get_notes<Note, let N: u32, let M: u32, let S: u32, let NS: u32>(\n storage_slot: Field,\n num_selects: u8,\n select_by_indexes: [u8; M],\n select_by_offsets: [u8; M],\n select_by_lengths: [u8; M],\n select_values: [Field; M],\n select_comparators: [u8; M],\n sort_by_indexes: [u8; M],\n sort_by_offsets: [u8; M],\n sort_by_lengths: [u8; M],\n sort_order: [u8; M],\n limit: u32,\n offset: u32,\n status: u8,\n mut placeholder_opt_notes: [Option<Note>; S], // TODO: Remove it and use `limit` to initialize the note array.\n placeholder_fields: [Field; NS], // TODO: Remove it and use `limit` to initialize the note array.\n _placeholder_note_length: [Field; N], // Turbofish hack? Compiler breaks calculating read_offset unless we add this parameter\n) -> [Option<Note>; S]\nwhere\n Note: NoteInterface<N>,\n{\n sync_notes_oracle_wrapper();\n let fields = get_notes_oracle_wrapper(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n limit,\n offset,\n status,\n placeholder_fields,\n );\n let num_notes = fields[0] as u32;\n let contract_address = AztecAddress::from_field(fields[1]);\n for i in 0..placeholder_opt_notes.len() {\n if i < num_notes {\n // lengths named as per typescript.\n let return_header_length: u32 = 2; // num_notes & contract_address.\n let extra_preimage_length: u32 = 2; // nonce & note_hash_counter.\n let read_offset: u32 = return_header_length + i * (N + extra_preimage_length);\n\n let nonce = fields[read_offset];\n let note_hash_counter = fields[read_offset + 1] as u32;\n let note_content = array::subarray(fields, read_offset + 2);\n\n let mut note = Note::deserialize_content(note_content);\n note.set_header(NoteHeader { contract_address, nonce, storage_slot, note_hash_counter });\n\n placeholder_opt_notes[i] = Option::some(note);\n };\n }\n placeholder_opt_notes\n}\n\n/// Returns true if the nullifier exists. Note that a `true` value can be constrained by proving existence of the\n/// nullifier, but a `false` value should not be relied upon since other transactions may emit this nullifier before the\n/// current transaction is included in a block. While this might seem of little use at first, certain design patterns\n/// benefit from this abstraction (see e.g. `PrivateMutable`).\npub unconstrained fn check_nullifier_exists(inner_nullifier: Field) -> bool {\n check_nullifier_exists_oracle(inner_nullifier) == 1\n}\n\n#[oracle(checkNullifierExists)]\nunconstrained fn check_nullifier_exists_oracle(_inner_nullifier: Field) -> Field {}\n\n/// Same as `get_app_tagging_secret_as_sender`, except it returns the derived tag, ready to be included in a log.\npub unconstrained fn get_app_tag_as_sender(sender: AztecAddress, recipient: AztecAddress) -> Field {\n get_app_tagging_secret_as_sender(sender, recipient).compute_tag(recipient)\n}\n\n/// Returns the tagging secret for a given sender and recipient pair, siloed for the current contract address.\n/// Includes the last known index used to send a note tagged with this secret.\n/// For this to work, PXE must know the ivpsk_m of the sender.\n/// For the recipient's side, only the address is needed.\npub unconstrained fn get_app_tagging_secret_as_sender(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> IndexedTaggingSecret {\n let result = get_app_tagging_secret_as_sender_oracle(sender, recipient);\n IndexedTaggingSecret::deserialize(result)\n}\n\n#[oracle(getAppTaggingSecretAsSender)]\nunconstrained fn get_app_tagging_secret_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) -> [Field; INDEXED_TAGGING_SECRET_LENGTH] {}\n\n/// Notifies the simulator that a tag has been used in a note, and to therefore increment the associated index so that\n/// future notes get a different tag and can be discovered by the recipient.\n/// This change should only be persisted in a non-volatile database if the tagged log is found in an actual block -\n/// otherwise e.g. a reverting transaction can cause the sender to accidentally skip indices and later produce notes\n/// that are not found by the recipient.\npub fn increment_app_tagging_secret_index_as_sender(sender: AztecAddress, recipient: AztecAddress) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n increment_app_tagging_secret_index_as_sender_wrapper(sender, recipient);\n }\n}\n\nunconstrained fn increment_app_tagging_secret_index_as_sender_wrapper(\n sender: AztecAddress,\n recipient: AztecAddress,\n) {\n increment_app_tagging_secret_index_as_sender_oracle(sender, recipient);\n}\n\n#[oracle(incrementAppTaggingSecretIndexAsSender)]\nunconstrained fn increment_app_tagging_secret_index_as_sender_oracle(\n _sender: AztecAddress,\n _recipient: AztecAddress,\n) {}\n\n/// Finds new notes that may have been sent to all registered accounts in PXE in the current contract and makes them available\n/// for later querying via the `get_notes` oracle.\npub fn sync_notes() {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe {\n sync_notes_oracle_wrapper();\n }\n}\n\nunconstrained fn sync_notes_oracle_wrapper() {\n sync_notes_oracle();\n}\n\n#[oracle(syncNotes)]\nunconstrained fn sync_notes_oracle() {}\n"
|
|
5701
5668
|
},
|
|
5702
|
-
"
|
|
5703
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5704
|
-
"source": "use dep::protocol_types::
|
|
5669
|
+
"92": {
|
|
5670
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr",
|
|
5671
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress, utils::reader::Reader,\n};\n\n#[oracle(callPrivateFunction)]\nunconstrained fn call_private_function_oracle(\n _contract_address: AztecAddress,\n _function_selector: FunctionSelector,\n _args_hash: Field,\n _start_side_effect_counter: u32,\n _is_static_call: bool,\n) -> [Field; 2] {}\n\npub unconstrained fn call_private_function_internal(\n contract_address: AztecAddress,\n function_selector: FunctionSelector,\n args_hash: Field,\n start_side_effect_counter: u32,\n is_static_call: bool,\n) -> (u32, Field) {\n let fields = call_private_function_oracle(\n contract_address,\n function_selector,\n args_hash,\n start_side_effect_counter,\n is_static_call,\n );\n\n let mut reader = Reader::new(fields);\n let end_side_effect_counter = reader.read_u32();\n let returns_hash = reader.read();\n\n (end_side_effect_counter, returns_hash)\n}\n"
|
|
5705
5672
|
},
|
|
5706
|
-
"
|
|
5707
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5708
|
-
"source": "use
|
|
5673
|
+
"93": {
|
|
5674
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr",
|
|
5675
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress, constants::CONTRACT_INSTANCE_LENGTH, contract_class_id::ContractClassId,\n contract_instance::ContractInstance,\n};\n\n// NOTE: this is for use in private only\n#[oracle(getContractInstance)]\nunconstrained fn get_contract_instance_oracle(\n _address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {}\n\n// NOTE: this is for use in private only\nunconstrained fn get_contract_instance_internal(\n address: AztecAddress,\n) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n get_contract_instance_oracle(address)\n}\n\n// NOTE: this is for use in private only\npub fn get_contract_instance(address: AztecAddress) -> ContractInstance {\n let instance =\n unsafe { ContractInstance::deserialize(get_contract_instance_internal(address)) };\n // The to_address function combines all values in the instance object to produce an address, so by checking that we\n // get the expected address we validate the entire struct.\n assert_eq(instance.to_address(), address);\n\n instance\n}\n\n// These oracles each return a ContractInstance member\n// plus a boolean indicating whether the instance was found.\n#[oracle(avmOpcodeGetContractInstanceDeployer)]\nunconstrained fn get_contract_instance_deployer_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceClassId)]\nunconstrained fn get_contract_instance_class_id_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n#[oracle(avmOpcodeGetContractInstanceInitializationHash)]\nunconstrained fn get_contract_instance_initialization_hash_oracle_avm(\n _address: AztecAddress,\n) -> (Field, bool) {}\n\npub unconstrained fn get_contract_instance_deployer_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_deployer_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_class_id_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_class_id_oracle_avm(address)\n}\npub unconstrained fn get_contract_instance_initialization_hash_internal_avm(\n address: AztecAddress,\n) -> (Field, bool) {\n get_contract_instance_initialization_hash_oracle_avm(address)\n}\n\npub fn get_contract_instance_deployer_avm(address: AztecAddress) -> Option<AztecAddress> {\n let (member, exists) = get_contract_instance_deployer_internal_avm(address);\n if exists {\n Option::some(AztecAddress::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_class_id_avm(address: AztecAddress) -> Option<ContractClassId> {\n let (member, exists) = get_contract_instance_class_id_internal_avm(address);\n if exists {\n Option::some(ContractClassId::from_field(member))\n } else {\n Option::none()\n }\n}\npub fn get_contract_instance_initialization_hash_avm(address: AztecAddress) -> Option<Field> {\n let (member, exists) = get_contract_instance_initialization_hash_internal_avm(address);\n if exists {\n Option::some(member)\n } else {\n Option::none()\n }\n}\n"
|
|
5709
5676
|
},
|
|
5710
|
-
"
|
|
5677
|
+
"106": {
|
|
5711
5678
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr",
|
|
5712
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress,\n point::Point,\n public_keys::{IvpkM, ToPoint},\n scalar::Scalar,\n};\n\nuse crate::keys::
|
|
5679
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n point::Point,\n public_keys::{IvpkM, ToPoint},\n scalar::Scalar,\n};\n\nuse crate::keys::secret_derivation::derive_aes_secret;\n\nuse std::aes128::aes128_encrypt;\n\npub struct EncryptedLogHeader {\n address: AztecAddress,\n}\n\nimpl EncryptedLogHeader {\n pub fn new(address: AztecAddress) -> Self {\n EncryptedLogHeader { address }\n }\n\n pub fn compute_ciphertext<T>(self, secret: Scalar, pk: T) -> [u8; 48]\n where\n T: ToPoint,\n {\n let full_key = derive_aes_secret(secret, pk.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n\n let input: [u8; 32] = self.address.to_field().to_be_bytes();\n aes128_encrypt(input, iv, sym_key).as_array()\n }\n}\n\n#[test]\nunconstrained fn test_encrypted_log_header_matches_noir() {\n let address = AztecAddress::from_field(0xdeadbeef);\n let header = EncryptedLogHeader::new(address);\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = IvpkM {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n\n let ciphertext = header.compute_ciphertext(secret, point);\n\n // The following value was generated by `encrypted_log_header.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_header_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 194, 44, 7, 131,\n 160, 83, 64, 181, 98, 38, 153, 214, 62, 171, 253, 161, 111, 191, 28, 247, 216, 26, 222, 171,\n 176, 218, 48, 209, 73, 89, 200, 209,\n ];\n\n assert_eq(ciphertext, expected_header_ciphertext_from_typescript);\n}\n"
|
|
5680
|
+
},
|
|
5681
|
+
"107": {
|
|
5682
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr",
|
|
5683
|
+
"source": "use crate::{\n context::PrivateContext,\n encrypted_logs::payload::compute_private_log_payload,\n note::{note_emission::NoteEmission, note_interface::NoteInterface},\n};\nuse dep::protocol_types::{\n abis::note_hash::NoteHash, address::AztecAddress, constants::PRIVATE_LOG_SIZE_IN_FIELDS,\n};\n\n/// Computes private note log payload\nfn compute_payload<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> ([Field; PRIVATE_LOG_SIZE_IN_FIELDS], u32)\nwhere\n Note: NoteInterface<N>,\n{\n let note_header = note.get_header();\n let note_hash_counter = note_header.note_hash_counter;\n let storage_slot = note_header.storage_slot;\n\n // TODO(#8589): use typesystem to skip this check when not needed\n let note_exists =\n context.note_hashes.storage().any(|n: NoteHash| n.counter == note_hash_counter);\n assert(note_exists, \"Can only emit a note log for an existing note.\");\n\n let contract_address: AztecAddress = context.this_address();\n\n let plaintext = note.to_be_bytes(storage_slot);\n\n let payload = compute_private_log_payload(contract_address, recipient, sender, plaintext);\n\n (payload, note_hash_counter)\n}\n\nunconstrained fn compute_payload_unconstrained<Note, let N: u32>(\n context: PrivateContext,\n note: Note,\n recipient: AztecAddress,\n sender: AztecAddress,\n) -> ([Field; PRIVATE_LOG_SIZE_IN_FIELDS], u32)\nwhere\n Note: NoteInterface<N>,\n{\n compute_payload(context, note, recipient, sender)\n}\n\n// This function seems to be affected by the following Noir bug:\n// https://github.com/noir-lang/noir/issues/5771\n// If you get weird behavior it might be because of it.\npub fn encode_and_encrypt_note<Note, let N: u32>(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n let (encrypted_log, note_hash_counter) =\n compute_payload(*context, e.note, recipient, sender);\n context.emit_raw_note_log(encrypted_log, note_hash_counter);\n }\n}\n\npub fn encode_and_encrypt_note_unconstrained<Note, let N: u32>(\n context: &mut PrivateContext,\n recipient: AztecAddress,\n // We need this because to compute a tagging secret, we require a sender:\n sender: AztecAddress,\n) -> fn[(&mut PrivateContext, AztecAddress, AztecAddress)](NoteEmission<Note>) -> ()\nwhere\n Note: NoteInterface<N>,\n{\n |e: NoteEmission<Note>| {\n // Unconstrained logs have both their content and encryption unconstrained - it could occur that the\n // recipient is unable to decrypt the payload.\n // Regarding the note hash counter, this is used for squashing. The kernel assumes that a given note can have\n // more than one log and removes all of the matching ones, so all a malicious sender could do is either: cause\n // for the log to be deleted when it shouldn't have (which is fine - they can already make the content be\n // whatever), or cause for the log to not be deleted when it should have (which is also fine - it'll be a log\n // for a note that doesn't exist).\n // It's important here that we do not\n // return the log from this function to the app, otherwise it could try to do stuff with it and then that might\n // be wrong.\n let (encrypted_log, note_hash_counter) =\n unsafe { compute_payload_unconstrained(*context, e.note, recipient, sender) };\n context.emit_raw_note_log(encrypted_log, note_hash_counter);\n }\n}\n"
|
|
5713
5684
|
},
|
|
5714
|
-
"
|
|
5685
|
+
"108": {
|
|
5715
5686
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr",
|
|
5716
|
-
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, PRIVATE_LOG_SIZE_IN_FIELDS},\n hash::{poseidon2_hash, poseidon2_hash_with_separator},\n point::Point,\n public_keys::{AddressPoint, OvpkM},\n scalar::Scalar,\n utils::arrays::array_concat,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::point_to_symmetric_key::point_to_symmetric_key,\n oracle::{\n notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n random::random,\n },\n utils::{bytes::bytes_to_fields, point::point_to_bytes},\n};\n\n// 1 field is reserved for tag.\nglobal ENCRYPTED_PAYLOAD_SIZE_IN_BYTES: u32 = (PRIVATE_LOG_SIZE_IN_FIELDS - 1) * 31;\n\ncomptime global HEADER_SIZE: u32 = 48;\n\ncomptime global OUTGOING_BODY_SIZE: u32 = 112;\n\n// Bytes padded to the overhead, so that the size of the incoming body ciphertext will be a multiple of 16.\ncomptime global OVERHEAD_PADDING: u32 = 15;\n\npub comptime global OVERHEAD_SIZE: u32 = 32 /* eph_pk */\n + HEADER_SIZE /* incoming_header */\n + HEADER_SIZE /* outgoing_header */\n + OUTGOING_BODY_SIZE /* outgoing_body */\n + OVERHEAD_PADDING /* padding */;\n\nglobal PLAINTEXT_LENGTH_SIZE: u32 = 2;\n\n// This is enough for 8 fields of data.\n// 1 field for storage slot, 1 field for note/event type id, allowing 6 fields for custom values.\nglobal MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES: u32 =\n ENCRYPTED_PAYLOAD_SIZE_IN_BYTES - OVERHEAD_SIZE - PLAINTEXT_LENGTH_SIZE - 1 /* aes padding */;\n\n// Note: Might have to update PRIVATE_LOG_SIZE_IN_FIELDS in `constants.nr` if the above changes.\n// This value ideally should be set by the protocol, allowing users (or `aztec-nr`) to fit data within the defined size limits.\n// Currently, we adjust this value as the structure changes, then update `constants.nr` to match.\n// Once the structure is finalized with defined overhead and max note field sizes, this value will be fixed and should remain unaffected by further payload composition changes.\n\npub fn compute_private_log_payload<let P: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n assert(\n P < MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n f\"plaintext for log must not exceed {MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES}\",\n );\n\n let extended_plaintext: [u8; MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; ENCRYPTED_PAYLOAD_SIZE_IN_BYTES] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk,\n recipient,\n extended_plaintext,\n );\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n array_concat([tag], bytes_to_fields(encrypted))\n}\n\npub fn compute_partial_public_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let extended_plaintext: [u8; P + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; M - 32] = compute_encrypted_log(\n contract_address,\n ovsk_app,\n ovpk,\n recipient,\n extended_plaintext,\n );\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n // Silo the tag with contract address.\n // This is done by the kernel circuit to the private logs, but since the partial log will be finalized and emitted\n // in public as unencrypted log, its tag is not siloed at the moment.\n // To avoid querying logs using two types of tags, we silo the tag manually here.\n // TODO(#10273) This should be done by the AVM when it's processing the raw logs instead of their hashes.\n let siloed_tag_bytes: [u8; 32] =\n poseidon2_hash([contract_address.to_field(), tag]).to_be_bytes();\n\n // Temporary hack so that the partial public log remains the same format.\n // It should return field array and make the tag the first field as compute_private_log_payload does.\n let mut log_bytes = [0; M];\n for i in 0..32 {\n log_bytes[i] = siloed_tag_bytes[i];\n }\n for i in 0..encrypted.len() {\n log_bytes[i + 32] = encrypted[i];\n }\n\n log_bytes\n}\n\nfn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n ovsk_app: Field,\n ovpk: OvpkM,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let outgoing_header_ciphertext: [u8; 48] = header.compute_ciphertext(eph_sk, ovpk);\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n let outgoing_body_ciphertext: [u8; 112] =\n compute_outgoing_body_ciphertext(recipient, fr_to_fq(ovsk_app), eph_sk, eph_pk);\n\n let mut encrypted_bytes = [0; M];\n let mut offset = 0;\n\n // eph_pk\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n offset += 32;\n\n // incoming_header\n // outgoing_header\n for i in 0..HEADER_SIZE {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n encrypted_bytes[offset + HEADER_SIZE + i] = outgoing_header_ciphertext[i];\n }\n offset += HEADER_SIZE * 2;\n\n // outgoing_body\n for i in 0..OUTGOING_BODY_SIZE {\n encrypted_bytes[offset + i] = outgoing_body_ciphertext[i];\n }\n offset += OUTGOING_BODY_SIZE;\n\n // Padding.\n offset += OVERHEAD_PADDING;\n\n // incoming_body\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n encrypted_bytes\n}\n\n// Prepend the plaintext length as the first byte, then copy the plaintext itself starting from the second byte.\n// Fill the remaining bytes with random values to reach a fixed length of N.\nfn extend_private_log_plaintext<let P: u32, let N: u32>(plaintext: [u8; P]) -> [u8; N] {\n let mut padded = unsafe { get_random_bytes() };\n padded[0] = (P >> 8) as u8;\n padded[1] = P as u8;\n for i in 0..P {\n padded[i + PLAINTEXT_LENGTH_SIZE] = plaintext[i];\n }\n padded\n}\n\nunconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = point_to_symmetric_key(eph_sk, address_point.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\n/// Encrypts ephemeral secret key and recipient's address point --> with this information the recipient of outgoing will\n/// be able to derive the key with which the incoming log can be decrypted.\npub fn compute_outgoing_body_ciphertext(\n recipient: AztecAddress,\n ovsk_app: Scalar,\n eph_sk: Scalar,\n eph_pk: Point,\n) -> [u8; OUTGOING_BODY_SIZE] {\n // Again, we could compute `eph_pk` here, but we keep the interface more similar\n // and also make it easier to optimise it later as we just pass it along\n let mut buffer = [0 as u8; 96];\n\n let serialized_eph_sk_high: [u8; 32] = eph_sk.hi.to_be_bytes();\n let serialized_eph_sk_low: [u8; 32] = eph_sk.lo.to_be_bytes();\n\n let address_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let serialized_recipient_address_point =\n point_to_bytes(recipient.to_address_point().to_point());\n\n for i in 0..16 {\n buffer[i] = serialized_eph_sk_high[i + 16];\n buffer[i + 16] = serialized_eph_sk_low[i + 16];\n }\n for i in 0..32 {\n buffer[i + 32] = address_bytes[i];\n buffer[i + 64] = serialized_recipient_address_point[i];\n }\n\n // We compute the symmetric key using poseidon.\n let full_key: [u8; 32] = poseidon2_hash_with_separator(\n [ovsk_app.hi, ovsk_app.lo, eph_pk.x, eph_pk.y],\n GENERATOR_INDEX__SYMMETRIC_KEY as Field,\n )\n .to_be_bytes();\n\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(buffer, iv, sym_key).as_array()\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_incoming_body_ciphertext, compute_outgoing_body_ciphertext,\n compute_private_log_payload, MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n };\n use dep::protocol_types::{\n address::AztecAddress, point::Point, public_keys::OvpkM, scalar::Scalar,\n };\n use protocol_types::public_keys::AddressPoint;\n use std::embedded_curve_ops::fixed_base_scalar_mul as derive_public_key;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `encrypted_log_payload.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n let ovsk_app = 0x191ac5e29bbc8f80f29ed06b75eaf30c036ed7952d844833860c527077c8c3b4;\n let ovpk_m = OvpkM {\n inner: Point {\n x: 0x07f696b8b233de2c1935e43c793399586f532da5ff7c0356636a75acb862e964,\n y: 0x156e8a3e42bfca3663936ba98c7fd26386a14657c23b5f5146f1a94b6c465154,\n is_infinite: false,\n },\n };\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(\n (MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES as u64 + 1 + 30) / 31,\n );\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let sender = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let _ = OracleMock::mock(\"getAppTaggingSecretAsSender\").returns([69420, 1337]);\n\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let payload = compute_private_log_payload(\n contract_address,\n ovsk_app,\n ovpk_m,\n recipient,\n sender,\n plaintext,\n );\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let private_log_payload_from_typescript = [\n 0x0e9cffc3ddd746affb02410d8f0a823e89939785bcc8e88ee4f3cae05e737c36,\n 0x008d460c0e434d846ec1ea286e4090eb56376ff27bddc1aacae1d856549f701f,\n 0x00a70577790aeabcc2d81ec8d0c99e7f5d2bf2f1452025dc777a178404f851d9,\n 0x003de818923f85187871d99bdf95d695eff0a9e09ba15153fc9b4d224b6e1e71,\n 0x00dfbdcaab06c09d5b3c749bfebe1c0407eccd04f51bbb59142680c8a091b97f,\n 0x00c6cbcf615def593ab09e5b3f7f58f6fc235c90e7c77ed8dadb3b05ee4545a7,\n 0x00bc612c9139475fee6070be47efcc43a5cbbc873632f1428fac952df9c181db,\n 0x005f9e850b21fe11fedef37b88caee95111bce776e488df219732d0a77d19201,\n 0x007047186f41445ecd5c603487f7fb3c8f31010a22af69ce0000000000000000,\n 0x0000000000000000a600a61f7d59eeaf52eb51bc0592ff981d9ba3ea8e6ea8ba,\n 0x009dc0cec8c70b81e84556a77ce6c3ca47a527f99ffe7b2524bb885a23020b72,\n 0x0095748ad19c1083618ad96298b76ee07eb1a56d19cc798710e9f5de96501bd5,\n 0x009b3781c9c02a6c95c5912f8936b1500d362afbf0922c85b1ada18db8b95162,\n 0x00a6e9d067655cdf669eb387f8e0492a95fdcdb39429d5340b4bebc250ba9bf6,\n 0x002c2f49f549f37beed75a668aa51967e0e57547e5a655157bcf381e22f30e25,\n 0x00881548ec9606a151b5fbfb2d14ee4b34bf4c1dbd71c7be15ad4c63474bb6f8,\n 0x009970aeb3d9489c8edbdff80a1a3a5c28370e534abc870a85ea4318326ea192,\n 0x0022fb10df358c765edada497db4284ae30507a2e03e983d23cfa0bd831577e8,\n ];\n\n assert_eq(payload, private_log_payload_from_typescript);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let address_point = AddressPoint {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n\n #[test]\n fn test_encrypted_log_outgoing_body_matches_typescript() {\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000d0d302ee245dfaf2807e604eec4715fe,\n hi: 0x000000000000000000000000000000000f096b423017226a18461115fa8d34bb,\n };\n\n let sender_ovsk_app = Scalar {\n lo: 0x0000000000000000000000000000000074d2e28c6bc5176ac02cf7c7d36a444e,\n hi: 0x00000000000000000000000000000000089c6887cb1446d86c64e81afc78048b,\n };\n\n let eph_pk = derive_public_key(eph_sk);\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let ciphertext =\n compute_outgoing_body_ciphertext(recipient, sender_ovsk_app, eph_sk, eph_pk);\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let outgoing_body_ciphertext_from_typescript = [\n 97, 221, 53, 168, 242, 56, 217, 184, 114, 127, 137, 98, 31, 63, 86, 179, 139, 198, 162,\n 162, 216, 158, 255, 205, 90, 212, 141, 55, 9, 245, 6, 146, 202, 137, 129, 36, 190, 31,\n 17, 89, 151, 203, 43, 196, 203, 233, 178, 79, 202, 70, 250, 182, 18, 191, 79, 42, 205,\n 204, 145, 14, 13, 35, 255, 139, 142, 66, 193, 240, 175, 233, 180, 37, 153, 235, 41, 88,\n 232, 52, 235, 213, 50, 26, 153, 227, 25, 242, 161, 92, 45, 152, 100, 106, 29, 192, 131,\n 101, 121, 126, 31, 118, 191, 90, 238, 43, 24, 82, 49, 18, 199, 107, 83, 7,\n ];\n\n assert_eq(outgoing_body_ciphertext_from_typescript, ciphertext);\n }\n}\n"
|
|
5687
|
+
"source": "use dep::protocol_types::{\n address::AztecAddress,\n constants::{GENERATOR_INDEX__SYMMETRIC_KEY, PRIVATE_LOG_SIZE_IN_FIELDS},\n hash::poseidon2_hash,\n point::Point,\n public_keys::AddressPoint,\n scalar::Scalar,\n utils::arrays::array_concat,\n};\nuse std::{\n aes128::aes128_encrypt, embedded_curve_ops::fixed_base_scalar_mul as derive_public_key,\n field::bn254::decompose, hash::from_field_unsafe as fr_to_fq_unsafe,\n};\n\nuse crate::{\n encrypted_logs::header::EncryptedLogHeader,\n keys::secret_derivation::derive_aes_secret,\n oracle::{\n notes::{get_app_tag_as_sender, increment_app_tagging_secret_index_as_sender},\n random::random,\n },\n utils::{bytes::bytes_to_fields, point::point_to_bytes},\n};\n\n// 1 field is reserved for tag.\nglobal ENCRYPTED_PAYLOAD_SIZE_IN_BYTES: u32 = (PRIVATE_LOG_SIZE_IN_FIELDS - 1) * 31;\n\ncomptime global HEADER_SIZE: u32 = 48;\n\n// Bytes padded to the overhead, so that the size of the incoming body ciphertext will be a multiple of 16.\ncomptime global OVERHEAD_PADDING: u32 = 15;\n\npub comptime global OVERHEAD_SIZE: u32 = 32 /* eph_pk */\n + HEADER_SIZE /* incoming_header */\n + OVERHEAD_PADDING /* padding */;\n\nglobal PLAINTEXT_LENGTH_SIZE: u32 = 2;\n\n// This is enough for 8 fields of data.\n// 1 field for storage slot, 1 field for note/event type id, allowing 6 fields for custom values.\nglobal MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES: u32 =\n ENCRYPTED_PAYLOAD_SIZE_IN_BYTES - OVERHEAD_SIZE - PLAINTEXT_LENGTH_SIZE - 1 /* aes padding */;\n\n// Note: Might have to update PRIVATE_LOG_SIZE_IN_FIELDS in `constants.nr` if the above changes.\n// This value ideally should be set by the protocol, allowing users (or `aztec-nr`) to fit data within the defined size limits.\n// Currently, we adjust this value as the structure changes, then update `constants.nr` to match.\n// Once the structure is finalized with defined overhead and max note field sizes, this value will be fixed and should remain unaffected by further payload composition changes.\n\npub fn compute_private_log_payload<let P: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [Field; PRIVATE_LOG_SIZE_IN_FIELDS] {\n assert(\n P < MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n f\"plaintext for log must not exceed {MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES}\",\n );\n\n let extended_plaintext: [u8; MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; ENCRYPTED_PAYLOAD_SIZE_IN_BYTES] =\n compute_encrypted_log(contract_address, recipient, extended_plaintext);\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n\n array_concat([tag], bytes_to_fields(encrypted))\n}\n\npub fn compute_partial_public_log_payload<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n sender: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let extended_plaintext: [u8; P + PLAINTEXT_LENGTH_SIZE] =\n extend_private_log_plaintext(plaintext);\n let encrypted: [u8; M - 32] =\n compute_encrypted_log(contract_address, recipient, extended_plaintext);\n\n // We assume that the sender wants for the recipient to find the tagged note, and therefore that they will cooperate\n // and use the correct tag. Usage of a bad tag will result in the recipient not being able to find the note\n // automatically.\n let tag = unsafe { get_app_tag_as_sender(sender, recipient) };\n increment_app_tagging_secret_index_as_sender(sender, recipient);\n // Silo the tag with contract address.\n // This is done by the kernel circuit to the private logs, but since the partial log will be finalized and emitted\n // in public as unencrypted log, its tag is not siloed at the moment.\n // To avoid querying logs using two types of tags, we silo the tag manually here.\n // TODO(#10273) This should be done by the AVM when it's processing the raw logs instead of their hashes.\n let siloed_tag_bytes: [u8; 32] =\n poseidon2_hash([contract_address.to_field(), tag]).to_be_bytes();\n\n // Temporary hack so that the partial public log remains the same format.\n // It should return field array and make the tag the first field as compute_private_log_payload does.\n let mut log_bytes = [0; M];\n for i in 0..32 {\n log_bytes[i] = siloed_tag_bytes[i];\n }\n for i in 0..encrypted.len() {\n log_bytes[i + 32] = encrypted[i];\n }\n\n log_bytes\n}\n\nfn compute_encrypted_log<let P: u32, let M: u32>(\n contract_address: AztecAddress,\n recipient: AztecAddress,\n plaintext: [u8; P],\n) -> [u8; M] {\n let (eph_sk, eph_pk) = generate_ephemeral_key_pair();\n\n let header = EncryptedLogHeader::new(contract_address);\n\n let incoming_header_ciphertext: [u8; 48] =\n header.compute_ciphertext(eph_sk, recipient.to_address_point());\n let incoming_body_ciphertext =\n compute_incoming_body_ciphertext(plaintext, eph_sk, recipient.to_address_point());\n\n let mut encrypted_bytes = [0; M];\n let mut offset = 0;\n\n // eph_pk\n let eph_pk_bytes = point_to_bytes(eph_pk);\n for i in 0..32 {\n encrypted_bytes[offset + i] = eph_pk_bytes[i];\n }\n offset += 32;\n\n // incoming_header\n for i in 0..HEADER_SIZE {\n encrypted_bytes[offset + i] = incoming_header_ciphertext[i];\n }\n offset += HEADER_SIZE;\n\n // Padding.\n offset += OVERHEAD_PADDING;\n\n // incoming_body\n // Then we fill in the rest as the incoming body ciphertext\n let size = M - offset;\n assert_eq(size, incoming_body_ciphertext.len(), \"ciphertext length mismatch\");\n for i in 0..size {\n encrypted_bytes[offset + i] = incoming_body_ciphertext[i];\n }\n\n encrypted_bytes\n}\n\n// Prepend the plaintext length as the first byte, then copy the plaintext itself starting from the second byte.\n// Fill the remaining bytes with random values to reach a fixed length of N.\nfn extend_private_log_plaintext<let P: u32, let N: u32>(plaintext: [u8; P]) -> [u8; N] {\n let mut padded = unsafe { get_random_bytes() };\n padded[0] = (P >> 8) as u8;\n padded[1] = P as u8;\n for i in 0..P {\n padded[i + PLAINTEXT_LENGTH_SIZE] = plaintext[i];\n }\n padded\n}\n\nunconstrained fn get_random_bytes<let N: u32>() -> [u8; N] {\n let mut bytes = [0; N];\n let mut idx = 32;\n let mut randomness = [0; 32];\n for i in 0..N {\n if idx == 32 {\n randomness = random().to_be_bytes();\n idx = 1; // Skip the first byte as it's always 0.\n }\n bytes[i] = randomness[idx];\n idx += 1;\n }\n bytes\n}\n\n/// Converts a base field element to scalar field element.\n/// This is fine because modulus of the base field is smaller than the modulus of the scalar field.\nfn fr_to_fq(r: Field) -> Scalar {\n let (lo, hi) = decompose(r);\n\n Scalar { lo, hi }\n}\n\nfn generate_ephemeral_key_pair() -> (Scalar, Point) {\n // @todo Need to draw randomness from the full domain of Fq not only Fr\n // We use the randomness to preserve the privacy of both the sender and recipient via encryption, so a malicious\n // sender could use non-random values to reveal the plaintext. But they already know it themselves anyway, and so\n // the recipient already trusts them to not disclose this information. We can therefore assume that the sender will\n // cooperate in the random value generation.\n let randomness = unsafe { random() };\n\n // We use the unsafe version of `fr_to_fq` because multi_scalar_mul (called by derive_public_key) will constrain\n // the scalars.\n let eph_sk = fr_to_fq_unsafe(randomness);\n let eph_pk = derive_public_key(eph_sk);\n\n (eph_sk, eph_pk)\n}\n\npub fn compute_incoming_body_ciphertext<let P: u32>(\n plaintext: [u8; P],\n eph_sk: Scalar,\n address_point: AddressPoint,\n) -> [u8] {\n let full_key = derive_aes_secret(eph_sk, address_point.to_point());\n let mut sym_key = [0; 16];\n let mut iv = [0; 16];\n\n for i in 0..16 {\n sym_key[i] = full_key[i];\n iv[i] = full_key[i + 16];\n }\n aes128_encrypt(plaintext, iv, sym_key)\n}\n\nmod test {\n use crate::encrypted_logs::payload::{\n compute_incoming_body_ciphertext, compute_private_log_payload,\n MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES,\n };\n use dep::protocol_types::{address::AztecAddress, point::Point, scalar::Scalar};\n use protocol_types::public_keys::AddressPoint;\n use std::test::OracleMock;\n\n #[test]\n unconstrained fn test_encrypted_log_matches_typescript() {\n // All the values in this test were copied over from `encrypted_log_payload.test.ts`\n let contract_address = AztecAddress::from_field(\n 0x10f48cd9eff7ae5b209c557c70de2e657ee79166868676b787e9417e19260e04,\n );\n\n let plaintext = [\n 0, 0, 0, 1, 48, 22, 64, 206, 234, 117, 131, 145, 178, 225, 97, 201, 44, 5, 19, 241, 41,\n 2, 15, 65, 37, 37, 106, 253, 174, 38, 70, 206, 49, 9, 159, 92, 16, 244, 140, 217, 239,\n 247, 174, 91, 32, 156, 85, 124, 112, 222, 46, 101, 126, 231, 145, 102, 134, 134, 118,\n 183, 135, 233, 65, 126, 25, 38, 14, 4, 15, 228, 107, 229, 131, 183, 31, 74, 181, 183,\n 12, 38, 87, 255, 29, 5, 204, 207, 29, 41, 42, 147, 105, 98, 141, 26, 25, 79, 148, 78,\n 101, 153, 0, 0, 16, 39,\n ];\n\n let randomness = 0x0101010101010101010101010101010101010101010101010101010101010101;\n let _ = OracleMock::mock(\"getRandomField\").returns(randomness).times(\n (MAX_PRIVATE_LOG_PLAINTEXT_SIZE_IN_BYTES as u64 + 1 + 30) / 31,\n );\n\n let eph_sk = 0x1358d15019d4639393d62b97e1588c095957ce74a1c32d6ec7d62fe6705d9538;\n let _ = OracleMock::mock(\"getRandomField\").returns(eph_sk).times(1);\n\n let recipient = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let sender = AztecAddress::from_field(\n 0x25afb798ea6d0b8c1618e50fdeafa463059415013d3b7c75d46abf5e242be70c,\n );\n\n let _ = OracleMock::mock(\"getAppTaggingSecretAsSender\").returns([69420, 1337]);\n\n let _ = OracleMock::mock(\"incrementAppTaggingSecretIndexAsSender\").returns(());\n\n let payload = compute_private_log_payload(contract_address, recipient, sender, plaintext);\n\n // The following value was generated by `encrypted_log_payload.test.ts`\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let private_log_payload_from_typescript = [\n 0x0e9cffc3ddd746affb02410d8f0a823e89939785bcc8e88ee4f3cae05e737c36,\n 0x008d460c0e434d846ec1ea286e4090eb56376ff27bddc1aacae1d856549f701f,\n 0x00a70577790aeabcc2d81ec8d0c99e7f5d2bf2f1452025dc777a178404f851d9,\n 0x003de818923f85187871d99bdf95d695eff0a900000000000000000000000000,\n 0x000000a600a61f7d59eeaf52eb51bc0592ff981d9ba3ea8e6ea8ba9dc0cec8c7,\n 0x000b81e84556a77ce6c3ca47a527f99ffe7b2524bb885a23020b7295748ad19c,\n 0x001083618ad96298b76ee07eb1a56d19cc798710e9f5de96501bd59b3781c9c0,\n 0x002a6c95c5912f8936b1500d362afbf0922c85b1ada18db8b95162a6e9d06765,\n 0x005cdf669eb387f8e0492a95fdcdb39429d5340b4bebc250ba9bf62c2f49f549,\n 0x00f37beed75a668aa51967e0e57547e5a655157bcf381e22f30e25881548ec96,\n 0x0006a151b5fbfb2d14ee4b34bf4c1dbd71c7be15ad4c63474bb6f89970aeb3d9,\n 0x00489c8edbdff80a1a3a5c28370e534abc870a85ea4318326ea19222fb10df35,\n 0x008c765edada497db4284ae30507a2e03e983d23cfa0bd831577e857bbef9cf7,\n 0x0090c97cb5699cc8783a1b4276d929be2882e5b9b72829a4f8404f7e3c853d11,\n 0x00d6d5a000b80134891e95f81007ad35d3945eaeecbe137fff85d01d7eaf8f19,\n 0x00a15eb965c6a4bc97aa87fd3463c31c9d4e0d722a8ba870bcc50c9c7a8b48ad,\n 0x0063c861bdbe490d44c57382decbae663927909652f87ac18dcfd5b30649cce5,\n 0x00820f14caa725efe1fa3485ceac88499eadf0565c5b20998c05931bbf478e68,\n ];\n\n assert_eq(payload, private_log_payload_from_typescript);\n }\n\n #[test]\n fn test_incoming_body_ciphertext_matches_typescript() {\n // All the values in this test were copied over from `encrypted_note_log_incoming_body.test.ts`\n let eph_sk = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let address_point = AddressPoint {\n inner: Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n },\n };\n let plaintext = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,\n ];\n\n // `compute_incoming_body_ciphertext(...)` function then derives symmetric key from `eph_sk` and `address_point` and encrypts\n // the note plaintext using AES-128.\n let ciphertext = compute_incoming_body_ciphertext(plaintext, eph_sk, address_point);\n\n // The following value was generated by `encrypted_note_log_incoming_body.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let note_body_ciphertext_from_typescript = [\n 226, 240, 253, 6, 28, 52, 19, 131, 33, 132, 178, 212, 245, 62, 14, 190, 147, 228, 160,\n 190, 146, 61, 95, 203, 124, 153, 68, 168, 17, 150, 92, 0, 99, 214, 85, 64, 191, 78, 157,\n 131, 149, 96, 236, 253, 96, 172, 157, 30, 27, 176, 228, 74, 242, 190, 138, 48, 33, 93,\n 46, 37, 223, 130, 25, 245, 188, 163, 159, 223, 187, 24, 139, 206, 131, 154, 159, 130,\n 37, 17, 158, 114, 242, 141, 124, 193, 232, 54, 146, 96, 145, 100, 125, 234, 57, 43, 95,\n 115, 183, 39, 121, 232, 134, 229, 148, 25, 46, 77, 87, 127, 95, 7, 77, 188, 37, 234,\n 245, 142, 232, 87, 252, 28, 67, 67, 90, 214, 254, 89, 47, 68, 66, 187, 227, 8, 59, 162,\n 25, 141, 97, 141, 217, 197, 115, 15, 212, 202, 157, 41, 150, 62, 219, 57, 224, 92, 185,\n 212, 142, 94, 146, 41, 178, 145, 68, 169, 23, 185, 206, 138, 70, 47, 176, 210, 165, 236,\n 23, 206, 229, 108,\n ];\n\n assert_eq(note_body_ciphertext_from_typescript.len(), ciphertext.len());\n\n for i in 0..note_body_ciphertext_from_typescript.len() {\n assert_eq(ciphertext[i], note_body_ciphertext_from_typescript[i]);\n }\n }\n}\n"
|
|
5717
5688
|
},
|
|
5718
|
-
"
|
|
5719
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/
|
|
5720
|
-
"source": "
|
|
5689
|
+
"111": {
|
|
5690
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
|
|
5691
|
+
"source": "/// Returns `DST_LEN` elements from a source array, starting at `offset`. `DST_LEN` must be large enough to hold all of\n/// the elements past `offset`.\n///\n/// Example:\n/// ```\n/// let foo: [Field; 2] = subarray([1, 2, 3, 4, 5], 2);\n/// assert_eq(foo, [3, 4]);\n/// ```\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\nmod test {\n use super::subarray;\n\n #[test]\n unconstrained fn subarray_into_empty() {\n // In all of these cases we're setting DST_LEN to be 0, so we always get back an emtpy array.\n assert_eq(subarray([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 2), []);\n }\n\n #[test]\n unconstrained fn subarray_complete() {\n assert_eq(subarray([], 0), []);\n assert_eq(subarray([1, 2, 3, 4, 5], 0), [1, 2, 3, 4, 5]);\n }\n\n #[test]\n unconstrained fn subarray_different_end_sizes() {\n // We implicitly select how many values to read in the size of the return array\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4, 5]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3, 4]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2, 3]);\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [2]);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_offset_too_large() {\n // With an offset of 1 we can only request up to 4 elements\n let _: [_; 5] = subarray([1, 2, 3, 4, 5], 1);\n }\n\n #[test(should_fail)]\n unconstrained fn subarray_bad_return_value() {\n assert_eq(subarray([1, 2, 3, 4, 5], 1), [3, 3, 4, 5]);\n }\n}\n"
|
|
5692
|
+
},
|
|
5693
|
+
"114": {
|
|
5694
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5695
|
+
"source": "use dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5721
5696
|
},
|
|
5722
|
-
"
|
|
5697
|
+
"119": {
|
|
5698
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr",
|
|
5699
|
+
"source": "use dep::protocol_types::{\n abis::function_selector::FunctionSelector, address::AztecAddress,\n constants::GENERATOR_INDEX__CONSTRUCTOR, hash::poseidon2_hash_with_separator,\n};\n\nuse crate::{\n context::{PrivateContext, PublicContext},\n oracle::get_contract_instance::{\n get_contract_instance, get_contract_instance_deployer_avm,\n get_contract_instance_initialization_hash_avm,\n },\n};\n\npub fn mark_as_initialized_public(context: &mut PublicContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn mark_as_initialized_private(context: &mut PrivateContext) {\n let init_nullifier =\n compute_unsiloed_contract_initialization_nullifier((*context).this_address());\n context.push_nullifier(init_nullifier);\n}\n\npub fn assert_is_initialized_public(context: &mut PublicContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n assert(context.nullifier_exists(init_nullifier, context.this_address()), \"Not initialized\");\n}\n\npub fn assert_is_initialized_private(context: &mut PrivateContext) {\n let init_nullifier = compute_unsiloed_contract_initialization_nullifier(context.this_address());\n context.push_nullifier_read_request(init_nullifier);\n}\n\nfn compute_unsiloed_contract_initialization_nullifier(address: AztecAddress) -> Field {\n address.to_field()\n}\n\npub fn assert_initialization_matches_address_preimage_public(context: PublicContext) {\n let address = context.this_address();\n let deployer = get_contract_instance_deployer_avm(address).unwrap();\n let initialization_hash = get_contract_instance_initialization_hash_avm(address).unwrap();\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (deployer.is_zero()) | (deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn assert_initialization_matches_address_preimage_private(context: PrivateContext) {\n let address = context.this_address();\n let instance = get_contract_instance(address);\n let expected_init = compute_initialization_hash(context.selector(), context.get_args_hash());\n assert(instance.initialization_hash == expected_init, \"Initialization hash does not match\");\n assert(\n (instance.deployer.is_zero()) | (instance.deployer == context.msg_sender()),\n \"Initializer address is not the contract deployer\",\n );\n}\n\npub fn compute_initialization_hash(\n init_selector: FunctionSelector,\n init_args_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [init_selector.to_field(), init_args_hash],\n GENERATOR_INDEX__CONSTRUCTOR,\n )\n}\n"
|
|
5700
|
+
},
|
|
5701
|
+
"129": {
|
|
5723
5702
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr",
|
|
5724
5703
|
"source": "use crate::{\n keys::constants::{NULLIFIER_INDEX, OUTGOING_INDEX},\n oracle::{\n key_validation_request::get_key_validation_request,\n keys::get_public_keys_and_partial_address,\n },\n};\nuse dep::protocol_types::{address::AztecAddress, public_keys::PublicKeys};\n\nmod test;\n\npub unconstrained fn get_nsk_app(npk_m_hash: Field) -> Field {\n get_key_validation_request(npk_m_hash, NULLIFIER_INDEX).sk_app\n}\n\n// A helper function that gets app-siloed outgoing viewing key for a given `ovpk_m_hash`. This function is used\n// in unconstrained contexts only - when computing unconstrained note logs. The safe alternative is `request_ovsk_app`\n// function defined on `PrivateContext`.\npub unconstrained fn get_ovsk_app(ovpk_m_hash: Field) -> Field {\n get_key_validation_request(ovpk_m_hash, OUTGOING_INDEX).sk_app\n}\n\n// Returns all public keys for a given account, applying proper constraints to the context. We read all\n// keys at once since the constraints for reading them all are actually fewer than if we read them one at a time - any\n// read keys that are not required by the caller can simply be discarded.\npub fn get_public_keys(account: AztecAddress) -> PublicKeys {\n // Public keys are constrained by showing their inclusion in the address's preimage.\n let (public_keys, partial_address) = unsafe { get_public_keys_and_partial_address(account) };\n assert_eq(\n account,\n AztecAddress::compute(public_keys, partial_address),\n \"Invalid public keys hint for address\",\n );\n\n public_keys\n}\n"
|
|
5725
5704
|
},
|
|
5726
|
-
"
|
|
5727
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/
|
|
5728
|
-
"source": "use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{
|
|
5705
|
+
"131": {
|
|
5706
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/secret_derivation.nr",
|
|
5707
|
+
"source": "use crate::utils::point::point_to_bytes;\nuse dep::protocol_types::{constants::GENERATOR_INDEX__SYMMETRIC_KEY, point::Point, scalar::Scalar};\nuse std::{embedded_curve_ops::multi_scalar_mul, hash::sha256};\n\npub fn derive_aes_secret(secret: Scalar, point: Point) -> [u8; 32] {\n let shared_secret = point_to_bytes(multi_scalar_mul([point], [secret]));\n\n let mut shared_secret_bytes_with_separator: [u8; 33] = std::mem::zeroed();\n for i in 0..shared_secret.len() {\n shared_secret_bytes_with_separator[i] = shared_secret[i];\n }\n\n shared_secret_bytes_with_separator[32] = GENERATOR_INDEX__SYMMETRIC_KEY;\n\n sha256(shared_secret_bytes_with_separator)\n}\n\n#[test]\nunconstrained fn test_derive_aes_secret_matches_noir() {\n // Value taken from \"derive shared secret\" test in encrypt_buffer.test.ts\n let secret = Scalar {\n lo: 0x00000000000000000000000000000000649e7ca01d9de27b21624098b897babd,\n hi: 0x0000000000000000000000000000000023b3127c127b1f29a7adff5cccf8fb06,\n };\n let point = Point {\n x: 0x2688431c705a5ff3e6c6f2573c9e3ba1c1026d2251d0dbbf2d810aa53fd1d186,\n y: 0x1e96887b117afca01c00468264f4f80b5bb16d94c1808a448595f115556e5c8e,\n is_infinite: false,\n };\n\n let key = derive_aes_secret(secret, point);\n\n // The following value was generated by `encrypt_buffer.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let key_from_typescript = [\n 251, 232, 177, 34, 2, 174, 35, 92, 165, 118, 168, 3, 153, 140, 46, 210, 203, 154, 184, 158,\n 236, 33, 95, 77, 93, 120, 72, 88, 190, 209, 64, 159,\n ];\n assert_eq(key, key_from_typescript);\n}\n"
|
|
5729
5708
|
},
|
|
5730
5709
|
"152": {
|
|
5731
|
-
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
|
|
5732
|
-
"source": "use dep::protocol_types::point::Point;\n\n// I am storing the modulus minus 1 divided by 2 here because full modulus would throw \"String literal too large\" error\n// Full modulus is 21888242871839275222246405745257275088548364400416034343698204186575808495617\nglobal BN254_FR_MODULUS_DIV_2: Field =\n 10944121435919637611123202872628637544274182200208017171849102093287904247808;\n\n/// Converts a public key to a byte array.\n///\n/// We don't serialize the point at infinity flag because this function is used in situations where we do not want\n/// to waste the extra byte (encrypted log).\npub fn point_to_bytes(pk: Point) -> [u8; 32] {\n // Note that there is 1 more free bit in the 32 bytes (254 bits currently occupied by the x coordinate, 1 bit for\n // the \"sign\") so it's possible to use that last bit as an \"is_infinite\" flag if desired in the future.\n assert(!pk.is_infinite, \"Cannot serialize point at infinity as bytes.\");\n\n let mut result: [u8; 32] = pk.x.to_be_bytes();\n\n // We store only a \"sign\" of the y coordinate because the rest can be derived from the x coordinate. To get\n // the sign we check if the y coordinate is less or equal than the curve's order minus 1 divided by 2.\n // Ideally we'd do `y <= MOD_DIV_2`, but there's no `lte` function, so instead we do `!(y > MOD_DIV_2)`, which is\n // equivalent, and then rewrite that as `!(MOD_DIV_2 < y)`, since we also have no `gt` function.\n if !BN254_FR_MODULUS_DIV_2.lt(pk.y) {\n // y is <= (modulus - 1) / 2 so we set the sign bit to 1\n // Here we leverage that field fits into 254 bits (log2(Fr.MODULUS) < 254) and given that we serialize Fr to 32\n // bytes and we use big-endian the 2 most significant bits are never populated. Hence we can use one of\n // the bits as a sign bit.\n result[0] += 128;\n }\n\n result\n}\n\nmod test {\n use crate::utils::point::point_to_bytes;\n use dep::protocol_types::point::Point;\n\n #[test]\n unconstrained fn test_point_to_bytes_positive_sign() {\n let p = Point {\n x: 0x1af41f5de96446dc3776a1eb2d98bb956b7acd9979a67854bec6fa7c2973bd73,\n y: 0x07fc22c7f2c7057571f137fe46ea9c95114282bc95d37d71ec4bfb88de457d4a,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_positive_sign = [\n 154, 244, 31, 93, 233, 100, 70, 220, 55, 118, 161, 235, 45, 152, 187, 149, 107, 122,\n 205, 153, 121, 166, 120, 84, 190, 198, 250, 124, 41, 115, 189, 115,\n ];\n assert_eq(expected_compressed_point_positive_sign, compressed_point);\n }\n\n #[test]\n unconstrained fn test_point_to_bytes_negative_sign() {\n let p = Point {\n x: 0x247371652e55dd74c9af8dbe9fb44931ba29a9229994384bd7077796c14ee2b5,\n y: 0x26441aec112e1ae4cee374f42556932001507ad46e255ffb27369c7e3766e5c0,\n is_infinite: false,\n };\n\n let compressed_point = point_to_bytes(p);\n\n let expected_compressed_point_negative_sign = [\n 36, 115, 113, 101, 46, 85, 221, 116, 201, 175, 141, 190, 159, 180, 73, 49, 186, 41, 169,\n 34, 153, 148, 56, 75, 215, 7, 119, 150, 193, 78, 226, 181,\n ];\n\n assert_eq(expected_compressed_point_negative_sign, compressed_point);\n }\n}\n"
|
|
5733
|
-
},
|
|
5734
|
-
"171": {
|
|
5735
5710
|
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr",
|
|
5736
5711
|
"source": "use dep::protocol_types::{\n constants::GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize},\n};\n\nuse crate::context::{PrivateContext, UnconstrainedContext};\nuse crate::note::{\n lifecycle::create_note,\n note_emission::NoteEmission,\n note_getter::{get_note, view_notes},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n};\nuse crate::oracle::notes::check_nullifier_exists;\nuse crate::state_vars::storage::Storage;\n\n// docs:start:struct\npub struct PrivateImmutable<Note, Context> {\n context: Context,\n storage_slot: Field,\n}\n// docs:end:struct\n\nimpl<T, Context, let N: u32> Storage<T, N> for PrivateImmutable<T, Context>\nwhere\n T: Serialize<N> + Deserialize<N>,\n{}\n\nimpl<Note, Context> PrivateImmutable<Note, Context> {\n // docs:start:new\n pub fn new(context: Context, storage_slot: Field) -> Self {\n assert(storage_slot != 0, \"Storage slot 0 not allowed. Storage slots must start from 1.\");\n Self { context, storage_slot }\n }\n // docs:end:new\n\n // The following computation is leaky, in that it doesn't hide the storage slot that has been initialized, nor does it hide the contract address of this contract.\n // When this initialization nullifier is emitted, an observer could do a dictionary or rainbow attack to learn the preimage of this nullifier to deduce the storage slot and contract address.\n // For some applications, leaking the details that a particular state variable of a particular contract has been initialized will be unacceptable.\n // Under such circumstances, such application developers might wish to _not_ use this state variable type.\n // This is especially dangerous for initial assignment to elements of a `Map<AztecAddress, PrivateImmutable>` type (for example), because the storage slot often also identifies an actor.\n // e.g. the initial assignment to `my_map.at(msg.sender)` will leak: `msg.sender`, the fact that an element of `my_map` was assigned-to for the first time, and the contract_address.\n pub fn compute_initialization_nullifier(self) -> Field {\n poseidon2_hash_with_separator(\n [self.storage_slot],\n GENERATOR_INDEX__INITIALIZATION_NULLIFIER,\n )\n }\n}\n\nimpl<Note> PrivateImmutable<Note, &mut PrivateContext> {\n // docs:start:initialize\n pub fn initialize<let N: u32>(self, note: &mut Note) -> NoteEmission<Note>\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n // Nullify the storage slot.\n let nullifier = self.compute_initialization_nullifier();\n self.context.push_nullifier(nullifier);\n\n create_note(self.context, self.storage_slot, note)\n }\n // docs:end:initialize\n\n // docs:start:get_note\n pub fn get_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let storage_slot = self.storage_slot;\n get_note(self.context, storage_slot).0\n }\n // docs:end:get_note\n}\n\nimpl<Note> PrivateImmutable<Note, UnconstrainedContext> {\n // docs:start:is_initialized\n pub unconstrained fn is_initialized(self) -> bool {\n let nullifier = self.compute_initialization_nullifier();\n check_nullifier_exists(nullifier)\n }\n // docs:end:is_initialized\n\n // view_note does not actually use the context, but it calls oracles that are only available in private\n // docs:start:view_note\n pub unconstrained fn view_note<let N: u32>(self) -> Note\n where\n Note: NoteInterface<N> + NullifiableNote,\n {\n let mut options = NoteViewerOptions::new();\n view_notes(self.storage_slot, options.set_limit(1)).get(0)\n }\n // docs:end:view_note\n}\n"
|
|
5737
5712
|
},
|
|
5738
|
-
"
|
|
5739
|
-
"path": "/usr/src/noir-projects/
|
|
5740
|
-
"source": "
|
|
5713
|
+
"163": {
|
|
5714
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr",
|
|
5715
|
+
"source": "use crate::context::{PrivateContext, PublicContext};\nuse crate::note::{\n note_emission::NoteEmission,\n note_header::NoteHeader,\n note_interface::{NoteInterface, NullifiableNote},\n utils::{compute_note_hash_for_nullify_internal, compute_note_hash_for_read_request},\n};\nuse crate::oracle::notes::{notify_created_note, notify_nullified_note};\n\npub fn create_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n note: &mut Note,\n) -> NoteEmission<Note>\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n let note_hash_counter = context.side_effect_counter;\n\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n let serialized_note = Note::serialize_content(*note);\n notify_created_note(\n storage_slot,\n Note::get_note_type_id(),\n serialized_note,\n note_hash,\n note_hash_counter,\n );\n\n context.push_note_hash(note_hash);\n\n NoteEmission::new(*note)\n}\n\npub fn create_note_hash_from_public<Note, let N: u32>(\n context: &mut PublicContext,\n storage_slot: Field,\n note: &mut Note,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let contract_address = (*context).this_address();\n // Public note hashes are transient, but have no side effect counters, so we just need note_hash_counter != 0\n let header = NoteHeader { contract_address, storage_slot, nonce: 0, note_hash_counter: 1 };\n note.set_header(header);\n let note_hash = note.compute_note_hash();\n\n context.push_note_hash(note_hash);\n}\n\n// Note: This function is currently totally unused.\npub fn destroy_note<Note, let N: u32>(context: &mut PrivateContext, note: Note)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n\n destroy_note_unsafe(context, note, note_hash_for_read_request)\n}\n\npub fn destroy_note_unsafe<Note, let N: u32>(\n context: &mut PrivateContext,\n note: Note,\n note_hash_for_read_request: Field,\n)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_nullify =\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request);\n let nullifier = note.compute_nullifier(context, note_hash_for_nullify);\n\n let note_hash_counter = note.get_header().note_hash_counter;\n let notification_note_hash = if (note_hash_counter == 0) {\n // Counter is zero, so we're nullifying a settled note and we don't populate the note_hash with real value.\n 0\n } else {\n // A non-zero note hash counter implies that we're nullifying a pending note (i.e. one that has not yet been\n // persisted in the trees and is instead in the pending new note hashes array). In such a case we populate its\n // hash with real value to inform the kernel which note we're nullifyng so that it can either squash both\n // the note and the nullifier if it's an inner note hash, or check that the it matches a pending note if it's\n // a siloed note hash.\n note_hash_for_nullify\n };\n\n let nullifier_counter = context.side_effect_counter;\n notify_nullified_note(nullifier, notification_note_hash, nullifier_counter);\n\n context.push_nullifier_for_note_hash(nullifier, notification_note_hash)\n}\n"
|
|
5741
5716
|
},
|
|
5742
|
-
"
|
|
5743
|
-
"path": "/usr/src/noir-projects/
|
|
5744
|
-
"source": "use crate::{\n
|
|
5717
|
+
"167": {
|
|
5718
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr",
|
|
5719
|
+
"source": "use crate::{\n context::PrivateContext,\n note::{note_header::NoteHeader, note_interface::{NoteInterface, NullifiableNote}},\n utils::array,\n};\n\nuse dep::protocol_types::hash::{\n compute_siloed_note_hash, compute_siloed_nullifier as compute_siloed_nullifier_from_preimage,\n compute_unique_note_hash,\n};\n\npub fn compute_siloed_nullifier<Note, let N: u32>(\n note_with_header: Note,\n context: &mut PrivateContext,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note_with_header.get_header();\n let note_hash_for_nullify = compute_note_hash_for_nullify(note_with_header);\n let inner_nullifier = note_with_header.compute_nullifier(context, note_hash_for_nullify);\n\n compute_siloed_nullifier_from_preimage(header.contract_address, inner_nullifier)\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_read_request<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash = note.compute_note_hash();\n let header = note.get_header();\n let nonce = header.nonce;\n let counter = header.note_hash_counter;\n\n // If same tx note, read request always uses the normal note hash\n if counter != 0 {\n note_hash\n } else {\n // If the note comes from a different tx, we need to compute the note hash that reached the tree\n compute_unique_note_hash(\n nonce,\n compute_siloed_note_hash(header.contract_address, note_hash),\n )\n }\n}\n\n// TODO(#7775): make this not impossible to understand\npub fn compute_note_hash_for_nullify_internal<Note, let N: u32>(\n note: Note,\n note_hash_for_read_request: Field,\n) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let header = note.get_header();\n\n if (header.note_hash_counter != 0) & (header.nonce != 0) {\n // Non-revertible note, nullified by a revertible nullifier, we need to nullify the note hash that will reach the tree\n let siloed_note_hash =\n compute_siloed_note_hash(header.contract_address, note_hash_for_read_request);\n\n compute_unique_note_hash(header.nonce, siloed_note_hash)\n } else {\n note_hash_for_read_request\n }\n}\n\n// TODO(#7775): nuke this commented out code - kept it around as it contains comments which might be helpful when tackling #7775\n// pub fn compute_note_hash_for_nullify<Note, let N: u32, let M: u32>(note: Note) -> Field where Note: NoteInterface<N> {\n// let header = note.get_header();\n// // There are 3 cases for reading a note intended for consumption:\n// // 1. The note was inserted in this transaction, is revertible, or is not nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce == 0)\n// // 2. The note was inserted in this transaction, is non-revertible, and is nullified by a revertible nullifier in\n// // the same transaction: (note_hash_counter != 0) & (nonce != 0)\n// // 3. The note was inserted in a previous transaction: (note_hash_counter == 0) & (nonce != 0)\n\n// let note_hash = note.compute_note_hiding_point().x;\n\n// if header.nonce == 0 {\n// // Case 1.\n// // If a note is transient, we just read the note_hash (kernel will hash it with nonce and silo by contract address).\n// note_hash\n// } else {\n// // Case 2: If a note is non-revertible, and is nullified by a revertible nullifier, we cannot squash them in the\n// // private reset circuit. Because if the tx reverts, we will have to keep the note hash and throw away the\n// // nullifier.\n// // And if the tx does not revert, both will be emitted. In which case, the nullifier must be created in the app\n// // from the siloed note hash.\n// // The kernel circuit will check that a nullifier with non-zero note_nonce is linked to a note hash, whose\n// // siloed note hash matches the note hash specified in the nullifier.\n\n// // Case 3: If a note is not from the current transaction, that means we are reading a settled note (from\n// // tree) created in a previous TX. So we need the siloed_note_hash which has already been hashed with\n// // nonce and then contract address. This hash will match the existing leaf in the note hash\n// // tree, so the kernel can just perform a membership check directly on this hash/leaf.\n// let unique_note_hash = compute_unique_note_hash(header.nonce, note_hash);\n// compute_siloed_note_hash(header.contract_address, unique_note_hash)\n// // IMPORTANT NOTE ON REDUNDANT SILOING BY CONTRACT ADDRESS: The note hash computed above is\n// // \"siloed\" by contract address. When a note hash is computed solely for the purpose of\n// // nullification, it is not strictly necessary to silo the note hash before computing\n// // its nullifier. In other words, it is NOT NECESSARY for protocol security that a nullifier\n// // be computed from a siloed note hash. After all, persistable note hashes and nullifiers are\n// // siloed by the kernel circuit. That being said, the siloed note hash computed above CAN be\n// // used for nullifier computation, and this achieves the (arguably unnecessary) property that\n// // nullifiers are computed from a note hash's fully-computed note hash tree leaf.\n// }\n// }\n\npub fn compute_note_hash_for_nullify<Note, let N: u32>(note: Note) -> Field\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n compute_note_hash_for_nullify_internal(note, note_hash_for_read_request)\n}\n\npub unconstrained fn compute_note_hash_and_optionally_a_nullifier<T, let N: u32, let S: u32>(\n deserialize_content: fn([Field; N]) -> T,\n note_header: NoteHeader,\n compute_nullifier: bool,\n serialized_note: [Field; S],\n) -> [Field; 4]\nwhere\n T: NoteInterface<N> + NullifiableNote,\n{\n let mut note = deserialize_content(array::subarray(serialized_note, 0));\n note.set_header(note_header);\n\n let note_hash = note.compute_note_hash();\n let siloed_note_hash = compute_siloed_note_hash(note_header.contract_address, note_hash);\n let unique_note_hash = compute_unique_note_hash(note_header.nonce, siloed_note_hash);\n\n let inner_nullifier = if compute_nullifier {\n note.compute_nullifier_without_context()\n } else {\n 0\n };\n // docs:start:compute_note_hash_and_optionally_a_nullifier_returns\n [note_hash, unique_note_hash, siloed_note_hash, inner_nullifier]\n // docs:end:compute_note_hash_and_optionally_a_nullifier_returns\n}\n"
|
|
5745
5720
|
},
|
|
5746
|
-
"
|
|
5747
|
-
"path": "/usr/src/noir-projects/
|
|
5748
|
-
"source": "use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress},\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n pub salt: Field,\n pub deployer: AztecAddress,\n pub contract_class_id: ContractClassId,\n pub initialization_hash: Field,\n pub public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n pub fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"
|
|
5721
|
+
"170": {
|
|
5722
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr",
|
|
5723
|
+
"source": "use crate::context::PrivateContext;\nuse crate::note::{\n constants::{GET_NOTE_ORACLE_RETURN_LENGTH, VIEW_NOTE_ORACLE_RETURN_LENGTH},\n note_getter_options::{NoteGetterOptions, NoteStatus, PropertySelector, Select, Sort, SortOrder},\n note_interface::{NoteInterface, NullifiableNote},\n note_viewer_options::NoteViewerOptions,\n utils::compute_note_hash_for_read_request,\n};\nuse crate::oracle;\nuse crate::utils::comparison::compare;\nuse dep::protocol_types::constants::{\n GET_NOTES_ORACLE_RETURN_LENGTH, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL,\n};\n\npub use crate::note::constants::MAX_NOTES_PER_PAGE;\n\nmod test;\n\nfn extract_property_value_from_selector<let N: u32>(\n serialized_note: [Field; N],\n selector: PropertySelector,\n) -> Field {\n // Selectors use PropertySelectors in order to locate note properties inside the serialized note.\n // This allows easier packing and custom (de)serialization schemas. A note property is located\n // inside the serialized note using the index inside the array, a byte offset and a length.\n let value: [u8; 32] = serialized_note[selector.index].to_be_bytes();\n let offset = selector.offset;\n let length = selector.length;\n let mut value_field = 0 as Field;\n let mut acc: Field = 1;\n for i in 0..32 {\n if i < length {\n value_field += value[31 + offset - i] as Field * acc;\n acc = acc * 256;\n }\n }\n value_field\n}\n\nfn check_note_header<Note, let N: u32>(context: PrivateContext, storage_slot: Field, note: Note)\nwhere\n Note: NoteInterface<N>,\n{\n let header = note.get_header();\n let contract_address = context.this_address();\n assert(header.contract_address.eq(contract_address), \"Mismatch note header contract address.\");\n assert(header.storage_slot == storage_slot, \"Mismatch note header storage slot.\");\n}\n\nfn check_note_fields<let N: u32>(\n serialized_note: [Field; N],\n selects: BoundedVec<Option<Select>, N>,\n) {\n for i in 0..selects.len() {\n let select = selects.get_unchecked(i).unwrap_unchecked();\n let value_field =\n extract_property_value_from_selector(serialized_note, select.property_selector);\n\n assert(\n compare(value_field, select.comparator, select.value.to_field()),\n \"Mismatch return note field.\",\n );\n }\n}\n\nfn check_notes_order<let N: u32>(\n fields_0: [Field; N],\n fields_1: [Field; N],\n sorts: BoundedVec<Option<Sort>, N>,\n) {\n for i in 0..sorts.len() {\n let sort = sorts.get_unchecked(i).unwrap_unchecked();\n let field_0 = extract_property_value_from_selector(fields_0, sort.property_selector);\n let field_1 = extract_property_value_from_selector(fields_1, sort.property_selector);\n let eq = field_0 == field_1;\n let lt = field_0.lt(field_1);\n if sort.order == SortOrder.ASC {\n assert(eq | lt, \"Return notes not sorted in ascending order.\");\n } else if !eq {\n assert(!lt, \"Return notes not sorted in descending order.\");\n }\n }\n}\n\npub fn get_note<Note, let N: u32>(\n context: &mut PrivateContext,\n storage_slot: Field,\n) -> (Note, Field)\nwhere\n Note: NoteInterface<N> + NullifiableNote,\n{\n let note = unsafe { get_note_internal(storage_slot) };\n\n // Constraining that we got a valid note from the oracle is fairly straightforward: all we need to do is check that\n // the metadata is correct, and that the note exists.\n check_note_header(*context, storage_slot, note);\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n context.push_note_hash_read_request(note_hash_for_read_request);\n\n (note, note_hash_for_read_request)\n}\n\npub fn get_notes<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n let opt_notes = unsafe { get_notes_internal(storage_slot, options) };\n\n // We apply the constraints in a separate function instead of inlining them here to make it easier to test that\n // these checks correctly reject bad notes.\n constrain_get_notes_internal(context, storage_slot, opt_notes, options)\n}\n\nunconstrained fn apply_preprocessor<Note, PREPROCESSOR_ARGS>(\n notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor: fn([Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL], PREPROCESSOR_ARGS) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n preprocessor_args: PREPROCESSOR_ARGS,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL] {\n preprocessor(notes, preprocessor_args)\n}\n\nfn constrain_get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n context: &mut PrivateContext,\n storage_slot: Field,\n opt_notes: [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL],\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n ) -> (BoundedVec<Note, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>, BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL>)\nwhere\n Note: NoteInterface<N> + NullifiableNote + Eq,\n{\n // The filter is applied first to avoid pushing note read requests for notes we're not interested in. Note that\n // while the filter function can technically mutate the contents of the notes (as opposed to simply removing some),\n // the private kernel will later validate that these note actually exist, so transformations would cause for that\n // check to fail.\n let filter_fn = options.filter;\n let filter_args = options.filter_args;\n let filtered_notes = filter_fn(opt_notes, filter_args);\n\n let notes = crate::utils::array::collapse(filtered_notes);\n let mut note_hashes: BoundedVec<Field, MAX_NOTE_HASH_READ_REQUESTS_PER_CALL> =\n BoundedVec::new();\n\n // We have now collapsed the sparse array of Options into a BoundedVec. This is a more ergonomic type and also\n // results in reduced gate counts when setting a limit value, since we guarantee that the limit is an upper bound\n // for the runtime length, and can therefore have fewer loop iterations.\n assert(notes.len() <= options.limit, \"Got more notes than limit.\");\n\n let mut prev_fields = [0; N];\n for i in 0..options.limit {\n if i < notes.len() {\n let note = notes.get_unchecked(i);\n let fields = note.serialize_content();\n check_note_header(*context, storage_slot, note);\n check_note_fields(fields, options.selects);\n if i != 0 {\n check_notes_order(prev_fields, fields, options.sorts);\n }\n prev_fields = fields;\n\n let note_hash_for_read_request = compute_note_hash_for_read_request(note);\n // TODO(https://github.com/AztecProtocol/aztec-packages/issues/1410): test to ensure\n // failure if malicious oracle injects 0 nonce here for a \"pre-existing\" note.\n context.push_note_hash_read_request(note_hash_for_read_request);\n note_hashes.push(note_hash_for_read_request);\n };\n }\n\n (notes, note_hashes)\n}\n\nunconstrained fn get_note_internal<Note, let N: u32>(storage_slot: Field) -> Note\nwhere\n Note: NoteInterface<N>,\n{\n let placeholder_note = [Option::none()];\n let placeholder_fields = [0; GET_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n oracle::notes::get_notes(\n storage_slot,\n 0,\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n [],\n 1, // limit\n 0, // offset\n NoteStatus.ACTIVE,\n placeholder_note,\n placeholder_fields,\n placeholder_note_length,\n )[0]\n .expect(f\"Failed to get a note\") // Notice: we don't allow dummies to be returned from get_note (singular).\n}\n\nunconstrained fn get_notes_internal<Note, let N: u32, PREPROCESSOR_ARGS, FILTER_ARGS>(\n storage_slot: Field,\n options: NoteGetterOptions<Note, N, PREPROCESSOR_ARGS, FILTER_ARGS>,\n) -> [Option<Note>; MAX_NOTE_HASH_READ_REQUESTS_PER_CALL]\nwhere\n Note: NoteInterface<N>,\n{\n // This function simply performs some transformations from NoteGetterOptions into the types required by the oracle.\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTE_HASH_READ_REQUESTS_PER_CALL];\n let placeholder_fields = [0; GET_NOTES_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let opt_notes = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n apply_preprocessor(opt_notes, options.preprocessor, options.preprocessor_args)\n}\n\npub unconstrained fn view_notes<Note, let N: u32>(\n storage_slot: Field,\n options: NoteViewerOptions<Note, N>,\n) -> BoundedVec<Note, MAX_NOTES_PER_PAGE>\nwhere\n Note: NoteInterface<N>,\n{\n let (num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values, select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order) =\n flatten_options(options.selects, options.sorts);\n let placeholder_opt_notes = [Option::none(); MAX_NOTES_PER_PAGE];\n let placeholder_fields = [0; VIEW_NOTE_ORACLE_RETURN_LENGTH];\n let placeholder_note_length = [0; N];\n\n let notes_array = oracle::notes::get_notes(\n storage_slot,\n num_selects,\n select_by_indexes,\n select_by_offsets,\n select_by_lengths,\n select_values,\n select_comparators,\n sort_by_indexes,\n sort_by_offsets,\n sort_by_lengths,\n sort_order,\n options.limit,\n options.offset,\n options.status,\n placeholder_opt_notes,\n placeholder_fields,\n placeholder_note_length,\n );\n\n let mut notes = BoundedVec::new();\n for i in 0..notes_array.len() {\n if notes_array[i].is_some() {\n notes.push(notes_array[i].unwrap_unchecked());\n }\n }\n\n notes\n}\n\nunconstrained fn flatten_options<let N: u32>(\n selects: BoundedVec<Option<Select>, N>,\n sorts: BoundedVec<Option<Sort>, N>,\n) -> (u8, [u8; N], [u8; N], [u8; N], [Field; N], [u8; N], [u8; N], [u8; N], [u8; N], [u8; N]) {\n let mut num_selects = 0;\n let mut select_by_indexes = [0; N];\n let mut select_by_offsets = [0; N];\n let mut select_by_lengths = [0; N];\n let mut select_values = [0; N];\n let mut select_comparators = [0; N];\n\n for i in 0..selects.len() {\n let select = selects.get(i);\n if select.is_some() {\n select_by_indexes[num_selects] = select.unwrap_unchecked().property_selector.index;\n select_by_offsets[num_selects] = select.unwrap_unchecked().property_selector.offset;\n select_by_lengths[num_selects] = select.unwrap_unchecked().property_selector.length;\n select_values[num_selects] = select.unwrap_unchecked().value;\n select_comparators[num_selects] = select.unwrap_unchecked().comparator;\n num_selects += 1;\n };\n }\n\n let mut sort_by_indexes = [0; N];\n let mut sort_by_offsets = [0; N];\n let mut sort_by_lengths = [0; N];\n let mut sort_order = [0; N];\n for i in 0..sorts.len() {\n let sort = sorts.get(i);\n if sort.is_some() {\n sort_by_indexes[i] = sort.unwrap_unchecked().property_selector.index;\n sort_by_offsets[i] = sort.unwrap_unchecked().property_selector.offset;\n sort_by_lengths[i] = sort.unwrap_unchecked().property_selector.length;\n sort_order[i] = sort.unwrap_unchecked().order;\n };\n }\n\n (\n num_selects, select_by_indexes, select_by_offsets, select_by_lengths, select_values,\n select_comparators, sort_by_indexes, sort_by_offsets, sort_by_lengths, sort_order,\n )\n}\n"
|
|
5749
5724
|
},
|
|
5750
|
-
"
|
|
5751
|
-
"path": "/usr/src/noir-projects/
|
|
5752
|
-
"source": "
|
|
5725
|
+
"172": {
|
|
5726
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
|
|
5727
|
+
"source": "/**\n * A note emission struct containing the information required for emitting a note.\n * The exact `emit` logic is passed in by the application code\n */\npub struct NoteEmission<Note> {\n pub note: Note,\n}\n\nimpl<Note> NoteEmission<Note> {\n pub fn new(note: Note) -> Self {\n Self { note }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](Self) -> ()) {\n _emit(self);\n }\n\n pub fn discard(_self: Self) {}\n}\n\n/**\n * A struct wrapping note emission in `Option<T>`.\n * This is the struct provided to application codes, which can be used to emit\n * only when a note was actually inserted.\n * It is fairly common to have cases where a function conditionally inserts,\n * and this allows us to keep the same API for emission in both cases (e.g. inserting\n * a change note in a token's transfer function only when there is \"change\" left).\n */\npub struct OuterNoteEmission<Note> {\n emission: Option<NoteEmission<Note>>,\n}\n\nimpl<Note> OuterNoteEmission<Note> {\n pub fn new(emission: Option<NoteEmission<Note>>) -> Self {\n Self { emission }\n }\n\n pub fn emit<Env>(self, _emit: fn[Env](NoteEmission<Note>) -> ()) {\n if self.emission.is_some() {\n _emit(self.emission.unwrap());\n }\n }\n\n pub fn discard(_self: Self) {}\n}\n"
|
|
5728
|
+
},
|
|
5729
|
+
"175": {
|
|
5730
|
+
"path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr",
|
|
5731
|
+
"source": "use crate::utils::to_bytes::{arr_to_be_bytes_arr, str_to_be_bytes_arr};\nuse dep::protocol_types::{\n address::{AztecAddress, EthAddress},\n constants::{\n GENERATOR_INDEX__FUNCTION_ARGS, GENERATOR_INDEX__MESSAGE_NULLIFIER,\n GENERATOR_INDEX__SECRET_HASH,\n },\n hash::{poseidon2_hash_with_separator, poseidon2_hash_with_separator_slice, sha256_to_field},\n point::Point,\n traits::Hash,\n};\n\npub use dep::protocol_types::hash::{compute_siloed_nullifier, pedersen_hash};\n\npub fn pedersen_commitment<let N: u32>(inputs: [Field; N], hash_index: u32) -> Point {\n std::hash::pedersen_commitment_with_separator(inputs, hash_index)\n}\n\npub fn compute_secret_hash(secret: Field) -> Field {\n poseidon2_hash_with_separator([secret], GENERATOR_INDEX__SECRET_HASH)\n}\n\npub fn compute_unencrypted_log_hash<let N: u32>(\n contract_address: AztecAddress,\n log: [u8; N],\n) -> Field {\n let mut hash_bytes = [0; N + 36];\n // Address is converted to 32 bytes in ts\n let address_bytes: [u8; 32] = contract_address.to_field().to_be_bytes();\n for i in 0..32 {\n hash_bytes[i] = address_bytes[i];\n }\n let len_bytes: [u8; 4] = (N as Field).to_be_bytes();\n for i in 0..4 {\n hash_bytes[32 + i] = len_bytes[i];\n }\n for i in 0..N {\n hash_bytes[36 + i] = log[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\npub fn compute_l1_to_l2_message_hash(\n sender: EthAddress,\n chain_id: Field,\n recipient: AztecAddress,\n version: Field,\n content: Field,\n secret_hash: Field,\n leaf_index: Field,\n) -> Field {\n let mut hash_bytes = [0 as u8; 224];\n let sender_bytes: [u8; 32] = sender.to_field().to_be_bytes();\n let chain_id_bytes: [u8; 32] = chain_id.to_be_bytes();\n let recipient_bytes: [u8; 32] = recipient.to_field().to_be_bytes();\n let version_bytes: [u8; 32] = version.to_be_bytes();\n let content_bytes: [u8; 32] = content.to_be_bytes();\n let secret_hash_bytes: [u8; 32] = secret_hash.to_be_bytes();\n let leaf_index_bytes: [u8; 32] = leaf_index.to_be_bytes();\n\n for i in 0..32 {\n hash_bytes[i] = sender_bytes[i];\n hash_bytes[i + 32] = chain_id_bytes[i];\n hash_bytes[i + 64] = recipient_bytes[i];\n hash_bytes[i + 96] = version_bytes[i];\n hash_bytes[i + 128] = content_bytes[i];\n hash_bytes[i + 160] = secret_hash_bytes[i];\n hash_bytes[i + 192] = leaf_index_bytes[i];\n }\n\n sha256_to_field(hash_bytes)\n}\n\n// The nullifier of a l1 to l2 message is the hash of the message salted with the secret\npub fn compute_l1_to_l2_message_nullifier(message_hash: Field, secret: Field) -> Field {\n poseidon2_hash_with_separator([message_hash, secret], GENERATOR_INDEX__MESSAGE_NULLIFIER)\n}\n\npub struct ArgsHasher {\n pub fields: [Field],\n}\n\nimpl Hash for ArgsHasher {\n fn hash(self) -> Field {\n hash_args(self.fields)\n }\n}\n\nimpl ArgsHasher {\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<let N: u32>(&mut self, fields: [Field; N]) {\n for i in 0..N {\n self.fields = self.fields.push_back(fields[i]);\n }\n }\n}\n\npub fn hash_args_array<let N: u32>(args: [Field; N]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\npub fn hash_args(args: [Field]) -> Field {\n if args.len() == 0 {\n 0\n } else {\n poseidon2_hash_with_separator_slice(args, GENERATOR_INDEX__FUNCTION_ARGS)\n }\n}\n\n#[test]\nunconstrained fn compute_var_args_hash() {\n let mut input = ArgsHasher::new();\n for i in 0..100 {\n input.add(i as Field);\n }\n let hash = input.hash();\n dep::std::println(hash);\n assert(hash == 0x19b0d74feb06ebde19edd85a28986c97063e84b3b351a8b666c7cac963ce655f);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_array() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = [\n 0x20660de09f35f876e3e69d227b2a35166ad05f09d82d06366ec9b6f65a51fec2,\n 0x1b52bfe3b8689761916f76dc3d38aa8810860db325cd39ca611eed980091f01c,\n 0x2e559c4045c378a56ad13b9edb1e8de4e7ad3b3aa35cc7ba9ec77f7a68fa43a4,\n 0x25d0f689c4a4178a29d59306f2675824d19be6d25e44fa03b03f49c263053dd2,\n 0x2d513a722d6f352dc0961f156afdc5e31495b9f0e35cb069261a8e55e2df67fd,\n ];\n let serialized_log = arr_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0095b2d17ab72f4b27a341f7ac63e49ec73935ae8c9181a0ac02023eb12f3284);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_addr() {\n let contract_address = AztecAddress::from_field(\n 0x233a3e0df23b2b15b324194cb4a151f26c0b7333250781d34cc269d85dc334c6,\n );\n let log = AztecAddress::from_field(\n 0x26aa302d4715fd8a687453cb26d616b0768027bd54bcae56b09d908ecd9f8303,\n );\n let serialized_log: [u8; 32] = log.to_field().to_be_bytes();\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0083ab647dfb26e7ddee90a0f4209d049d4660cab42000c544b986aaa84c55a3);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"dummy\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x00629e88ebd6374f44aa6cfe07e251ecf07213ebc7267e8f6b578ae57ffd6c20);\n}\n\n#[test]\nunconstrained fn compute_unenc_log_hash_longer_str() {\n let contract_address = AztecAddress::from_field(\n 0x1b401e1146c5c507962287065c81f0ef7590adae3802c533d7549d6bf0a41bd8,\n );\n let log = \"Hello this is a string\";\n let serialized_log = str_to_be_bytes_arr(log);\n let hash = compute_unencrypted_log_hash(contract_address, serialized_log);\n assert(hash == 0x0098637962f7d34fa202b7ffad8a07a238c5d1fd897b82a108f7f467fa73b841);\n}\n"
|
|
5732
|
+
},
|
|
5733
|
+
"176": {
|
|
5734
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
|
|
5735
|
+
"source": "use crate::{\n abis::function_selector::FunctionSelector,\n address::{\n partial_address::PartialAddress, salted_initialization_hash::SaltedInitializationHash,\n },\n constants::{\n AZTEC_ADDRESS_LENGTH, FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n MAX_FIELD_VALUE,\n },\n contract_class_id::ContractClassId,\n hash::{poseidon2_hash_with_separator, private_functions_root_from_siblings},\n merkle_tree::membership::MembershipWitness,\n public_keys::{IvpkM, NpkM, OvpkM, PublicKeys, TpkM},\n traits::{Deserialize, Empty, FromField, Serialize, ToField},\n};\n\n// We do below because `use crate::point::Point;` does not work\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\n\nuse crate::public_keys::AddressPoint;\nuse ec::{pow, sqrt};\nuse std::embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key};\n\n// Aztec address\npub struct AztecAddress {\n pub 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 { inner: 0 }\n }\n}\n\nimpl ToField for AztecAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl FromField for AztecAddress {\n fn from_field(value: Field) -> AztecAddress {\n AztecAddress { inner: value }\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 FromField::from_field(fields[0])\n }\n}\n\nimpl AztecAddress {\n pub fn zero() -> Self {\n Self { inner: 0 }\n }\n\n pub fn to_address_point(self) -> AddressPoint {\n // We compute the address point by taking our address, setting it to x, and then solving for y in the\n // equation which defines our bn curve:\n // y^2 = x^3 - 17; x = address\n let x = self.inner;\n let y_squared = pow(x, 3) - 17;\n\n // TODO (#8970): Handle cases where we cannot recover a point from an address\n let mut y = sqrt(y_squared);\n\n // If we get a negative y coordinate (any y where y > MAX_FIELD_VALUE / 2), we pin it to the\n // positive one (any value where y <= MAX_FIELD_VALUE / 2) by subtracting it from the Field modulus\n // note: The field modulus is MAX_FIELD_VALUE + 1\n if (!(y.lt(MAX_FIELD_VALUE / 2) | y.eq(MAX_FIELD_VALUE / 2))) {\n y = (MAX_FIELD_VALUE + 1) - y;\n }\n\n AddressPoint { inner: Point { x: self.inner, y, is_infinite: false } }\n }\n\n pub fn compute(public_keys: PublicKeys, partial_address: PartialAddress) -> AztecAddress {\n let public_keys_hash = public_keys.hash();\n\n let pre_address = poseidon2_hash_with_separator(\n [public_keys_hash.to_field(), partial_address.to_field()],\n GENERATOR_INDEX__CONTRACT_ADDRESS_V1,\n );\n\n let address_point = derive_public_key(EmbeddedCurveScalar::from_field(pre_address)).add(\n public_keys.ivpk_m.to_point(),\n );\n\n // Note that our address is only the x-coordinate of the full address_point. This is okay because when people want to encrypt something and send it to us\n // they can recover our full point using the x-coordinate (our address itself). To do this, they recompute the y-coordinate according to the equation y^2 = x^3 - 17.\n // When they do this, they may get a positive y-coordinate (a value that is less than or equal to MAX_FIELD_VALUE / 2) or\n // a negative y-coordinate (a value that is more than MAX_FIELD_VALUE), and we cannot dictate which one they get and hence the recovered point may sometimes be different than the one\n // our secrect can decrypt. Regardless though, they should and will always encrypt using point with the positive y-coordinate by convention.\n // This ensures that everyone encrypts to the same point given an arbitrary x-coordinate (address). This is allowed because even though our original point may not have a positive y-coordinate,\n // with our original secret, we will be able to derive the secret to the point with the flipped (and now positive) y-coordinate that everyone encrypts to.\n AztecAddress::from_field(address_point.x)\n }\n\n pub fn compute_from_private_function(\n function_selector: FunctionSelector,\n function_vk_hash: Field,\n function_leaf_membership_witness: MembershipWitness<FUNCTION_TREE_HEIGHT>,\n contract_class_artifact_hash: Field,\n contract_class_public_bytecode_commitment: Field,\n salted_initialization_hash: SaltedInitializationHash,\n public_keys: PublicKeys,\n ) -> Self {\n let private_functions_root = private_functions_root_from_siblings(\n function_selector,\n function_vk_hash,\n function_leaf_membership_witness.leaf_index,\n function_leaf_membership_witness.sibling_path,\n );\n\n let contract_class_id = ContractClassId::compute(\n contract_class_artifact_hash,\n private_functions_root,\n contract_class_public_bytecode_commitment,\n );\n\n // Compute contract address using the preimage which includes the class_id.\n let partial_address = PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n salted_initialization_hash,\n );\n\n AztecAddress::compute(public_keys, partial_address)\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\n#[test]\nfn compute_address_from_partial_and_pub_keys() {\n let public_keys = PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: 0x22f7fcddfa3ce3e8f0cc8e82d7b94cdd740afa3e77f8e4a63ea78a239432dcab,\n y: 0x0471657de2b6216ade6c506d28fbc22ba8b8ed95c871ad9f3e3984e90d9723a7,\n is_infinite: false,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: 0x111223493147f6785514b1c195bb37a2589f22a6596d30bb2bb145fdc9ca8f1e,\n y: 0x273bbffd678edce8fe30e0deafc4f66d58357c06fd4a820285294b9746c3be95,\n is_infinite: false,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: 0x09115c96e962322ffed6522f57194627136b8d03ac7469109707f5e44190c484,\n y: 0x0c49773308a13d740a7f0d4f0e6163b02c5a408b6f965856b6a491002d073d5b,\n is_infinite: false,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: 0x00d3d81beb009873eb7116327cf47c612d5758ef083d4fda78e9b63980b2a762,\n y: 0x2f567d22d2b02fe1f4ad42db9d58a36afd1983e7e2909d1cab61cafedad6193a,\n is_infinite: false,\n },\n },\n };\n\n let partial_address = PartialAddress::from_field(\n 0x0a7c585381b10f4666044266a02405bf6e01fa564c8517d4ad5823493abd31de,\n );\n\n let address = AztecAddress::compute(public_keys, partial_address);\n\n // The following value was generated by `derivation.test.ts`.\n // --> Run the test with AZTEC_GENERATE_TEST_DATA=1 flag to update test data.\n let expected_computed_address_from_partial_and_pubkeys =\n 0x24e4646f58b9fbe7d38e317db8d5636c423fbbdfbe119fc190fe9c64747e0c62;\n assert(address.to_field() == expected_computed_address_from_partial_and_pubkeys);\n}\n\n#[test]\nfn compute_preaddress_from_partial_and_pub_keys() {\n let pre_address = poseidon2_hash_with_separator([1, 2], GENERATOR_INDEX__CONTRACT_ADDRESS_V1);\n let expected_computed_preaddress_from_partial_and_pubkey =\n 0x23ce9be3fa3c846b0f9245cc796902e731d04f086e8a42473bb29e405fc98075;\n assert(pre_address == expected_computed_preaddress_from_partial_and_pubkey);\n}\n\n#[test]\nfn from_field_to_field() {\n let address = AztecAddress { inner: 37 };\n assert_eq(FromField::from_field(address.to_field()), address);\n}\n\n#[test]\nfn serde() {\n let address = AztecAddress { inner: 37 };\n assert_eq(Deserialize::deserialize(address.serialize()), address);\n}\n"
|
|
5753
5736
|
},
|
|
5754
|
-
"
|
|
5737
|
+
"177": {
|
|
5755
5738
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr",
|
|
5756
5739
|
"source": "use crate::{\n address::aztec_address::AztecAddress, constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n hash::poseidon2_hash_with_separator, traits::ToField,\n};\n\n// Salted initialization hash. Used in the computation of a partial address.\npub struct SaltedInitializationHash {\n pub inner: Field,\n}\n\nimpl ToField for SaltedInitializationHash {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl SaltedInitializationHash {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(salt: Field, initialization_hash: Field, deployer: AztecAddress) -> Self {\n SaltedInitializationHash::from_field(poseidon2_hash_with_separator(\n [salt, initialization_hash, deployer.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
5757
5740
|
},
|
|
5758
|
-
"
|
|
5741
|
+
"181": {
|
|
5759
5742
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr",
|
|
5760
5743
|
"source": "use crate::{\n address::{aztec_address::AztecAddress, salted_initialization_hash::SaltedInitializationHash},\n constants::GENERATOR_INDEX__PARTIAL_ADDRESS,\n contract_class_id::ContractClassId,\n hash::poseidon2_hash_with_separator,\n traits::{Deserialize, Serialize, ToField},\n};\n\nglobal PARTIAL_ADDRESS_LENGTH: u32 = 1;\n\n// Partial address\npub struct PartialAddress {\n pub inner: Field,\n}\n\nimpl ToField for PartialAddress {\n fn to_field(self) -> Field {\n self.inner\n }\n}\n\nimpl Serialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn serialize(self: Self) -> [Field; PARTIAL_ADDRESS_LENGTH] {\n [self.to_field()]\n }\n}\n\nimpl Deserialize<PARTIAL_ADDRESS_LENGTH> for PartialAddress {\n fn deserialize(fields: [Field; PARTIAL_ADDRESS_LENGTH]) -> Self {\n PartialAddress { inner: fields[0] }\n }\n}\n\nimpl PartialAddress {\n pub fn from_field(field: Field) -> Self {\n Self { inner: field }\n }\n\n pub fn compute(\n contract_class_id: ContractClassId,\n salt: Field,\n initialization_hash: Field,\n deployer: AztecAddress,\n ) -> Self {\n PartialAddress::compute_from_salted_initialization_hash(\n contract_class_id,\n SaltedInitializationHash::compute(salt, initialization_hash, deployer),\n )\n }\n\n pub fn compute_from_salted_initialization_hash(\n contract_class_id: ContractClassId,\n salted_initialization_hash: SaltedInitializationHash,\n ) -> Self {\n PartialAddress::from_field(poseidon2_hash_with_separator(\n [contract_class_id.to_field(), salted_initialization_hash.to_field()],\n GENERATOR_INDEX__PARTIAL_ADDRESS,\n ))\n }\n\n pub fn to_field(self) -> Field {\n self.inner\n }\n\n pub fn is_zero(self) -> bool {\n self.to_field() == 0\n }\n\n pub fn assert_is_zero(self) {\n assert(self.to_field() == 0);\n }\n}\n"
|
|
5761
5744
|
},
|
|
5762
|
-
"
|
|
5763
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5764
|
-
"source": "use crate::
|
|
5745
|
+
"182": {
|
|
5746
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
5747
|
+
"source": "use crate::traits::{Deserialize, Serialize};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash([self.secret, recipient.to_field(), self.index as Field])\n }\n}\n"
|
|
5765
5748
|
},
|
|
5766
|
-
"
|
|
5767
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5768
|
-
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::scoped::Scoped,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::field::field_from_bytes;\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\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(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, note_hash: Field) -> Field {\n let inputs = [nonce, note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, unique_note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), unique_note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash, tx_hash: Field, note_index_in_tx: u32) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n let unique_note_hash = compute_unique_note_hash(nonce, note_hash.value());\n compute_siloed_note_hash(note_hash.contract_address, unique_note_hash)\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\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 silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of N + 1\n let in_len = N + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n // We manually hash the inputs here, since we cannot express with the type system a constant size inputs array of Math.ceil(N/31)\n let mut in_len = N / 31;\n let mut has_padding = false;\n if N % 31 != 0 {\n in_len += 1;\n has_padding = true;\n }\n\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n sponge.absorb(field_from_bytes(current_field, false));\n current_field = [0; 31];\n }\n }\n if has_padding {\n sponge.absorb(field_from_bytes(current_field, false));\n }\n\n sponge.squeeze()\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, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
5749
|
+
"183": {
|
|
5750
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr",
|
|
5751
|
+
"source": "use crate::{\n address::{aztec_address::AztecAddress, partial_address::PartialAddress},\n constants::CONTRACT_INSTANCE_LENGTH,\n contract_class_id::ContractClassId,\n public_keys::PublicKeys,\n traits::{Deserialize, Hash, Serialize},\n};\n\npub struct ContractInstance {\n pub salt: Field,\n pub deployer: AztecAddress,\n pub contract_class_id: ContractClassId,\n pub initialization_hash: Field,\n pub public_keys: PublicKeys,\n}\n\nimpl Eq for ContractInstance {\n fn eq(self, other: Self) -> bool {\n self.public_keys.eq(other.public_keys)\n & self.initialization_hash.eq(other.initialization_hash)\n & self.contract_class_id.eq(other.contract_class_id)\n & self.salt.eq(other.salt)\n }\n}\n\nimpl Serialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn serialize(self) -> [Field; CONTRACT_INSTANCE_LENGTH] {\n let public_keys_serialized = self.public_keys.serialize();\n [\n self.salt,\n self.deployer.to_field(),\n self.contract_class_id.to_field(),\n self.initialization_hash,\n public_keys_serialized[0],\n public_keys_serialized[1],\n public_keys_serialized[2],\n public_keys_serialized[3],\n public_keys_serialized[4],\n public_keys_serialized[5],\n public_keys_serialized[6],\n public_keys_serialized[7],\n public_keys_serialized[8],\n public_keys_serialized[9],\n public_keys_serialized[10],\n public_keys_serialized[11],\n ]\n }\n}\n\nimpl Deserialize<CONTRACT_INSTANCE_LENGTH> for ContractInstance {\n fn deserialize(serialized: [Field; CONTRACT_INSTANCE_LENGTH]) -> Self {\n Self {\n salt: serialized[0],\n deployer: AztecAddress::from_field(serialized[1]),\n contract_class_id: ContractClassId::from_field(serialized[2]),\n initialization_hash: serialized[3],\n public_keys: PublicKeys::deserialize([\n serialized[4],\n serialized[5],\n serialized[6],\n serialized[7],\n serialized[8],\n serialized[9],\n serialized[10],\n serialized[11],\n serialized[12],\n serialized[13],\n serialized[14],\n serialized[15],\n ]),\n }\n }\n}\n\nimpl Hash for ContractInstance {\n fn hash(self) -> Field {\n self.to_address().to_field()\n }\n}\n\nimpl ContractInstance {\n pub fn to_address(self) -> AztecAddress {\n AztecAddress::compute(\n self.public_keys,\n PartialAddress::compute(\n self.contract_class_id,\n self.salt,\n self.initialization_hash,\n self.deployer,\n ),\n )\n }\n}\n"
|
|
5769
5752
|
},
|
|
5770
|
-
"
|
|
5753
|
+
"209": {
|
|
5771
5754
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr",
|
|
5772
5755
|
"source": "use crate::{point::Point, traits::{Deserialize, Empty, Serialize}};\npub use crate::constants::KEY_VALIDATION_REQUEST_LENGTH;\n\npub struct KeyValidationRequest {\n pub pk_m: Point,\n pub sk_app: Field, // not a grumpkin scalar because it's output of poseidon2\n}\n\nimpl Eq for KeyValidationRequest {\n fn eq(self, request: KeyValidationRequest) -> bool {\n (request.pk_m.eq(self.pk_m)) & (request.sk_app.eq(self.sk_app))\n }\n}\n\nimpl Empty for KeyValidationRequest {\n fn empty() -> Self {\n KeyValidationRequest { pk_m: Point::empty(), sk_app: 0 }\n }\n}\n\nimpl Serialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn serialize(self) -> [Field; KEY_VALIDATION_REQUEST_LENGTH] {\n [self.pk_m.x, self.pk_m.y, self.pk_m.is_infinite as Field, self.sk_app]\n }\n}\n\nimpl Deserialize<KEY_VALIDATION_REQUEST_LENGTH> for KeyValidationRequest {\n fn deserialize(fields: [Field; KEY_VALIDATION_REQUEST_LENGTH]) -> Self {\n Self {\n pk_m: Point { x: fields[0], y: fields[1], is_infinite: fields[2] as bool },\n sk_app: fields[3],\n }\n }\n}\n"
|
|
5773
5756
|
},
|
|
5774
|
-
"
|
|
5775
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
|
|
5776
|
-
"source": "use crate::traits::{Deserialize, Serialize};\nuse super::{address::aztec_address::AztecAddress, hash::poseidon2_hash};\nuse std::meta::derive;\n\npub global INDEXED_TAGGING_SECRET_LENGTH: u32 = 2;\n\n#[derive(Serialize, Deserialize)]\npub struct IndexedTaggingSecret {\n secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash([self.secret, recipient.to_field(), self.index as Field])\n }\n}\n"
|
|
5777
|
-
},
|
|
5778
|
-
"308": {
|
|
5757
|
+
"241": {
|
|
5779
5758
|
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
|
|
5780
5759
|
"source": "pub struct Reader<let N: u32> {\n data: [Field; N],\n offset: u32,\n}\n\nimpl<let N: u32> Reader<N> {\n pub fn new(data: [Field; N]) -> Self {\n Self { data, offset: 0 }\n }\n\n pub fn read(&mut self) -> Field {\n let result = self.data[self.offset];\n self.offset += 1;\n result\n }\n\n pub fn read_u32(&mut self) -> u32 {\n self.read() as u32\n }\n\n pub fn read_bool(&mut self) -> bool {\n self.read() as bool\n }\n\n pub fn read_array<let K: u32>(&mut self) -> [Field; K] {\n let mut result = [0; K];\n for i in 0..K {\n result[i] = self.data[self.offset + i];\n }\n self.offset += K;\n result\n }\n\n pub fn read_struct<T, let K: u32>(&mut self, deserialise: fn([Field; K]) -> T) -> T {\n let result = deserialise(self.read_array());\n result\n }\n\n pub fn read_struct_array<T, let K: u32, let C: u32>(\n &mut self,\n deserialise: fn([Field; K]) -> T,\n mut result: [T; C],\n ) -> [T; C] {\n for i in 0..C {\n result[i] = self.read_struct(deserialise);\n }\n result\n }\n\n pub fn finish(self) {\n assert(self.offset == self.data.len(), \"Reader did not read all data\");\n }\n}\n"
|
|
5781
5760
|
},
|
|
5761
|
+
"243": {
|
|
5762
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr",
|
|
5763
|
+
"source": "pub mod assert_array_appended;\npub mod assert_array_prepended;\npub mod assert_combined_array;\npub mod assert_combined_transformed_array;\npub mod assert_exposed_sorted_transformed_value_array;\npub mod assert_sorted_array;\npub mod assert_sorted_transformed_value_array;\npub mod assert_split_sorted_transformed_value_arrays;\npub mod assert_split_transformed_value_arrays;\npub mod get_sorted_result;\npub mod get_sorted_tuple;\npub mod sort_by;\npub mod sort_by_counter;\n\n// Re-exports.\npub use assert_array_appended::{\n assert_array_appended, assert_array_appended_and_scoped, assert_array_appended_reversed,\n assert_array_appended_scoped,\n};\npub use assert_array_prepended::assert_array_prepended;\npub use assert_combined_array::{assert_combined_array, combine_arrays};\npub use assert_combined_transformed_array::{\n assert_combined_transformed_array, combine_and_transform_arrays,\n};\npub use assert_exposed_sorted_transformed_value_array::{\n assert_exposed_sorted_transformed_value_array,\n get_order_hints::{get_order_hints_asc, get_order_hints_desc, OrderHint},\n};\npub use assert_sorted_array::assert_sorted_array;\npub use assert_sorted_transformed_value_array::{\n assert_sorted_transformed_value_array, assert_sorted_transformed_value_array_capped_size,\n};\npub use assert_split_sorted_transformed_value_arrays::{\n assert_split_sorted_transformed_value_arrays_asc,\n assert_split_sorted_transformed_value_arrays_desc,\n get_split_order_hints::{get_split_order_hints_asc, get_split_order_hints_desc, SplitOrderHints},\n};\npub use assert_split_transformed_value_arrays::assert_split_transformed_value_arrays;\npub use get_sorted_result::{get_sorted_result, SortedResult};\npub use sort_by_counter::{sort_by_counter_asc, sort_by_counter_desc};\n\nuse crate::traits::{Empty, is_empty};\n\npub fn subarray<let SRC_LEN: u32, let DST_LEN: u32>(\n src: [Field; SRC_LEN],\n offset: u32,\n) -> [Field; DST_LEN] {\n assert(offset + DST_LEN <= SRC_LEN, \"offset too large\");\n\n let mut dst: [Field; DST_LEN] = std::mem::zeroed();\n for i in 0..DST_LEN {\n dst[i] = src[i + offset];\n }\n\n dst\n}\n\n// Helper function to convert a validated array to BoundedVec.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub unconstrained fn array_to_bounded_vec<T, let N: u32>(array: [T; N]) -> BoundedVec<T, N>\nwhere\n T: Empty + Eq,\n{\n let len = array_length(array);\n BoundedVec::from_parts_unchecked(array, len)\n}\n\npub unconstrained fn find_index_hint<T, let N: u32, Env>(\n array: [T; N],\n find: fn[Env](T) -> bool,\n) -> u32 {\n let mut index = N;\n for i in 0..N {\n if (index == N) & find(array[i]) {\n index = i;\n }\n }\n index\n}\n\n// Routine which validates that all zero values of an array form a contiguous region at the end, i.e.,\n// of the form: [*,*,*...,0,0,0,0] where any * is non-zero. Note that a full array of non-zero values is\n// valid.\npub fn validate_array<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let mut seen_empty = false;\n let mut length = 0;\n for i in 0..N {\n if is_empty(array[i]) {\n seen_empty = true;\n } else {\n assert(seen_empty == false, \"invalid array\");\n length += 1;\n }\n }\n length\n}\n\n// Helper function to count the number of non-empty elements in a validated array.\n// Important: Only use it for validated arrays: validate_array(array) should be true.\npub fn array_length<T, let N: u32>(array: [T; N]) -> u32\nwhere\n T: Empty + Eq,\n{\n let length = unsafe { find_index_hint(array, |elem: T| is_empty(elem)) };\n if length != 0 {\n assert(!is_empty(array[length - 1]));\n }\n if length != N {\n assert(is_empty(array[length]));\n }\n length\n}\n\npub fn array_concat<T, let N: u32, let M: u32>(array1: [T; N], array2: [T; M]) -> [T; N + M] {\n let mut result = [array1[0]; N + M];\n for i in 1..N {\n result[i] = array1[i];\n }\n for i in 0..M {\n result[i + N] = array2[i];\n }\n result\n}\n\npub fn array_merge<T, let N: u32>(array1: [T; N], array2: [T; N]) -> [T; N]\nwhere\n T: Empty + Eq,\n{\n let mut result: [T; N] = [T::empty(); N];\n let mut i = 0;\n for elem in array1 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n for elem in array2 {\n if !is_empty(elem) {\n result[i] = elem;\n i += 1;\n }\n }\n result\n}\n\npub fn check_permutation<T, let N: u32>(\n original_array: [T; N],\n permuted_array: [T; N],\n original_indexes: [u32; N],\n)\nwhere\n T: Eq + Empty,\n{\n let mut seen_value = [false; N];\n for i in 0..N {\n let index = original_indexes[i];\n let original_value = original_array[index];\n assert(permuted_array[i].eq(original_value), \"Invalid index\");\n assert(!seen_value[index], \"Duplicated index\");\n seen_value[index] = true;\n }\n}\n\n#[test]\nfn smoke_validate_array() {\n let valid_array: [Field; 0] = [];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [0];\n assert(validate_array(valid_array) == 0);\n\n let valid_array = [3];\n assert(validate_array(valid_array) == 1);\n\n let valid_array = [1, 2, 3];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0];\n assert(validate_array(valid_array) == 3);\n\n let valid_array = [1, 2, 3, 0, 0];\n assert(validate_array(valid_array) == 3);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case0() {\n let invalid_array = [0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case1() {\n let invalid_array = [1, 0, 0, 1, 0];\n let _ = validate_array(invalid_array);\n}\n\n#[test(should_fail_with = \"invalid array\")]\nfn smoke_validate_array_invalid_case2() {\n let invalid_array = [0, 0, 0, 0, 1];\n let _ = validate_array(invalid_array);\n}\n\n#[test]\nfn test_empty_array_length() {\n assert_eq(array_length([0]), 0);\n assert_eq(array_length([0, 0, 0]), 0);\n}\n\n#[test]\nfn test_array_length() {\n assert_eq(array_length([123]), 1);\n assert_eq(array_length([123, 0, 0]), 1);\n assert_eq(array_length([123, 456]), 2);\n assert_eq(array_length([123, 456, 0]), 2);\n}\n\n#[test]\nfn test_array_length_invalid_arrays() {\n // Result can be misleading (but correct) for invalid arrays.\n assert_eq(array_length([0, 0, 123]), 0);\n assert_eq(array_length([0, 123, 0]), 0);\n assert_eq(array_length([0, 123, 456]), 0);\n assert_eq(array_length([123, 0, 456]), 1);\n}\n\n#[test]\nfn find_index_greater_than_min() {\n let values = [10, 20, 30, 40];\n let min = 22;\n let index = unsafe { find_index_hint(values, |v: Field| min.lt(v)) };\n assert_eq(index, 2);\n}\n\n#[test]\nfn find_index_not_found() {\n let values = [10, 20, 30, 40];\n let min = 100;\n let index = unsafe { find_index_hint(values, |v: Field| min.lt(v)) };\n assert_eq(index, 4);\n}\n\n#[test]\nfn test_array_concat() {\n let array0 = [1, 2, 3];\n let array1 = [4, 5];\n let concated = array_concat(array0, array1);\n assert_eq(concated, [1, 2, 3, 4, 5]);\n}\n\n#[test]\nfn check_permutation_basic_test() {\n let original_array = [1, 2, 3];\n let permuted_array = [3, 1, 2];\n let indexes = [2, 0, 1];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Duplicated index\")]\nfn check_permutation_duplicated_index() {\n let original_array = [0, 1, 0];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 0];\n check_permutation(original_array, permuted_array, indexes);\n}\n\n#[test(should_fail_with = \"Invalid index\")]\nfn check_permutation_invalid_index() {\n let original_array = [0, 1, 2];\n let permuted_array = [1, 0, 0];\n let indexes = [1, 0, 2];\n check_permutation(original_array, permuted_array, indexes);\n}\n"
|
|
5764
|
+
},
|
|
5765
|
+
"271": {
|
|
5766
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr",
|
|
5767
|
+
"source": "pub use dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse crate::{hash::poseidon2_hash, traits::{Deserialize, Empty, Hash, Serialize}};\n\npub global POINT_LENGTH: u32 = 3;\n\nimpl Serialize<POINT_LENGTH> for Point {\n fn serialize(self: Self) -> [Field; POINT_LENGTH] {\n [self.x, self.y, self.is_infinite as Field]\n }\n}\n\nimpl Hash for Point {\n fn hash(self) -> Field {\n poseidon2_hash(self.serialize())\n }\n}\n\nimpl Empty for Point {\n /// Note: Does not return a valid point on curve - instead represents an empty/\"unpopulated\" point struct (e.g.\n /// empty/unpopulated value in an array of points).\n fn empty() -> Self {\n Point { x: 0, y: 0, is_infinite: false }\n }\n}\n\nimpl Deserialize<POINT_LENGTH> for Point {\n fn deserialize(serialized: [Field; POINT_LENGTH]) -> Point {\n Point { x: serialized[0], y: serialized[1], is_infinite: serialized[2] as bool }\n }\n}\n"
|
|
5768
|
+
},
|
|
5769
|
+
"309": {
|
|
5770
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
|
|
5771
|
+
"source": "/// Utility function to console.log data in the acir simulator.\n/// Example:\n/// debug_log(\"blah blah this is a debug string\");\npub fn debug_log<let N: u32>(msg: str<N>) {\n debug_log_format(msg, []);\n}\n\n/// Utility function to console.log data in the acir simulator. This variant receives a format string in which the\n/// `${k}` tokens will be replaced with the k-eth value in the `args` array.\n/// Examples:\n/// debug_log_format(\"get_2(slot:{0}) =>\\n\\t0:{1}\\n\\t1:{2}\", [storage_slot, note0_hash, note1_hash]);\n/// debug_log_format(\"whole array: {}\", [e1, e2, e3, e4]);\npub fn debug_log_format<let M: u32, let N: u32>(msg: str<M>, args: [Field; N]) {\n // This oracle call returns nothing: we only call it for its side effects. It is therefore always safe to call.\n unsafe { debug_log_oracle_wrapper(msg, args) };\n}\n\npub unconstrained fn debug_log_oracle_wrapper<let M: u32, let N: u32>(\n msg: str<M>,\n args: [Field; N],\n) {\n debug_log_oracle(msg, args.as_slice());\n}\n\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#[oracle(debugLog)]\nunconstrained fn debug_log_oracle<let M: u32>(_msg: str<M>, args: [Field]) {}\n"
|
|
5772
|
+
},
|
|
5782
5773
|
"310": {
|
|
5783
|
-
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/
|
|
5784
|
-
"source": "
|
|
5774
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
|
|
5775
|
+
"source": "use crate::{\n address::public_keys_hash::PublicKeysHash,\n constants::{\n DEFAULT_IVPK_M_X, DEFAULT_IVPK_M_Y, DEFAULT_NPK_M_X, DEFAULT_NPK_M_Y, DEFAULT_OVPK_M_X,\n DEFAULT_OVPK_M_Y, DEFAULT_TPK_M_X, DEFAULT_TPK_M_Y, GENERATOR_INDEX__PUBLIC_KEYS_HASH,\n },\n hash::poseidon2_hash_with_separator,\n point::POINT_LENGTH,\n traits::{Deserialize, Hash, Serialize},\n};\n\nuse dep::std::embedded_curve_ops::EmbeddedCurvePoint as Point;\nuse std::default::Default;\n\npub global PUBLIC_KEYS_LENGTH: u32 = 12;\n\npub struct PublicKeys {\n pub npk_m: NpkM,\n pub ivpk_m: IvpkM,\n pub ovpk_m: OvpkM,\n pub tpk_m: TpkM,\n}\n\npub trait ToPoint {\n fn to_point(self) -> Point;\n}\n\npub struct NpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for NpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for NpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\n// Note: If we store npk_m_hash directly we can remove this trait implementation. See #8091\nimpl Hash for NpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\npub struct IvpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for IvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for IvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct OvpkM {\n pub inner: Point,\n}\n\nimpl Hash for OvpkM {\n fn hash(self) -> Field {\n self.inner.hash()\n }\n}\n\nimpl ToPoint for OvpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for OvpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\npub struct TpkM {\n pub inner: Point,\n}\n\nimpl ToPoint for TpkM {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\nimpl Serialize<POINT_LENGTH> for TpkM {\n fn serialize(self) -> [Field; POINT_LENGTH] {\n self.inner.serialize()\n }\n}\n\nimpl Default for PublicKeys {\n fn default() -> Self {\n PublicKeys {\n npk_m: NpkM {\n inner: Point { x: DEFAULT_NPK_M_X, y: DEFAULT_NPK_M_Y, is_infinite: false },\n },\n ivpk_m: IvpkM {\n inner: Point { x: DEFAULT_IVPK_M_X, y: DEFAULT_IVPK_M_Y, is_infinite: false },\n },\n ovpk_m: OvpkM {\n inner: Point { x: DEFAULT_OVPK_M_X, y: DEFAULT_OVPK_M_Y, is_infinite: false },\n },\n tpk_m: TpkM {\n inner: Point { x: DEFAULT_TPK_M_X, y: DEFAULT_TPK_M_Y, is_infinite: false },\n },\n }\n }\n}\n\nimpl Eq for PublicKeys {\n fn eq(self, other: PublicKeys) -> bool {\n (self.npk_m.inner == other.npk_m.inner)\n & (self.ivpk_m.inner == other.ivpk_m.inner)\n & (self.ovpk_m.inner == other.ovpk_m.inner)\n & (self.tpk_m.inner == other.tpk_m.inner)\n }\n}\n\nimpl PublicKeys {\n pub fn hash(self) -> PublicKeysHash {\n PublicKeysHash::from_field(poseidon2_hash_with_separator(\n self.serialize(),\n GENERATOR_INDEX__PUBLIC_KEYS_HASH as Field,\n ))\n }\n}\n\nimpl Serialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn serialize(self) -> [Field; PUBLIC_KEYS_LENGTH] {\n [\n self.npk_m.inner.x,\n self.npk_m.inner.y,\n self.npk_m.inner.is_infinite as Field,\n self.ivpk_m.inner.x,\n self.ivpk_m.inner.y,\n self.ivpk_m.inner.is_infinite as Field,\n self.ovpk_m.inner.x,\n self.ovpk_m.inner.y,\n self.ovpk_m.inner.is_infinite as Field,\n self.tpk_m.inner.x,\n self.tpk_m.inner.y,\n self.tpk_m.inner.is_infinite as Field,\n ]\n }\n}\n\nimpl Deserialize<PUBLIC_KEYS_LENGTH> for PublicKeys {\n fn deserialize(serialized: [Field; PUBLIC_KEYS_LENGTH]) -> PublicKeys {\n PublicKeys {\n npk_m: NpkM {\n inner: Point {\n x: serialized[0],\n y: serialized[1],\n is_infinite: serialized[2] as bool,\n },\n },\n ivpk_m: IvpkM {\n inner: Point {\n x: serialized[3],\n y: serialized[4],\n is_infinite: serialized[5] as bool,\n },\n },\n ovpk_m: OvpkM {\n inner: Point {\n x: serialized[6],\n y: serialized[7],\n is_infinite: serialized[8] as bool,\n },\n },\n tpk_m: TpkM {\n inner: Point {\n x: serialized[9],\n y: serialized[10],\n is_infinite: serialized[11] as bool,\n },\n },\n }\n }\n}\n\npub struct AddressPoint {\n pub inner: Point,\n}\n\nimpl ToPoint for AddressPoint {\n fn to_point(self) -> Point {\n self.inner\n }\n}\n\n#[test]\nunconstrained fn compute_public_keys_hash() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let actual = keys.hash();\n let expected_public_keys_hash =\n 0x0fecd9a32db731fec1fded1b9ff957a1625c069245a3613a2538bd527068b0ad;\n\n assert(actual.to_field() == expected_public_keys_hash);\n}\n\n#[test]\nunconstrained fn compute_default_hash() {\n let keys = PublicKeys::default();\n\n let actual = keys.hash();\n let test_data_default_hash = 0x1d3bf1fb93ae0e9cda83b203dd91c3bfb492a9aecf30ec90e1057eced0f0e62d;\n\n assert(actual.to_field() == test_data_default_hash);\n}\n\n#[test]\nunconstrained fn test_public_keys_serialization() {\n let keys = PublicKeys {\n npk_m: NpkM { inner: Point { x: 1, y: 2, is_infinite: false } },\n ivpk_m: IvpkM { inner: Point { x: 3, y: 4, is_infinite: false } },\n ovpk_m: OvpkM { inner: Point { x: 5, y: 6, is_infinite: false } },\n tpk_m: TpkM { inner: Point { x: 7, y: 8, is_infinite: false } },\n };\n\n let serialized = keys.serialize();\n let deserialized = PublicKeys::deserialize(serialized);\n\n assert_eq(keys.npk_m.inner.x, deserialized.npk_m.inner.x);\n assert_eq(keys.npk_m.inner.y, deserialized.npk_m.inner.y);\n assert_eq(keys.ivpk_m.inner.x, deserialized.ivpk_m.inner.x);\n assert_eq(keys.ivpk_m.inner.y, deserialized.ivpk_m.inner.y);\n assert_eq(keys.ovpk_m.inner.x, deserialized.ovpk_m.inner.x);\n assert_eq(keys.ovpk_m.inner.y, deserialized.ovpk_m.inner.y);\n assert_eq(keys.tpk_m.inner.x, deserialized.tpk_m.inner.x);\n assert_eq(keys.tpk_m.inner.y, deserialized.tpk_m.inner.y);\n}\n"
|
|
5776
|
+
},
|
|
5777
|
+
"311": {
|
|
5778
|
+
"path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
|
|
5779
|
+
"source": "use crate::{\n abis::{\n contract_class_function_leaf_preimage::ContractClassFunctionLeafPreimage,\n function_selector::FunctionSelector,\n log_hash::{LogHash, ScopedLogHash},\n note_hash::ScopedNoteHash,\n nullifier::ScopedNullifier,\n private_log::{PrivateLog, PrivateLogData},\n side_effect::scoped::Scoped,\n },\n address::{AztecAddress, EthAddress},\n constants::{\n FUNCTION_TREE_HEIGHT, GENERATOR_INDEX__NOTE_HASH_NONCE, GENERATOR_INDEX__OUTER_NULLIFIER,\n GENERATOR_INDEX__SILOED_NOTE_HASH, GENERATOR_INDEX__UNIQUE_NOTE_HASH,\n },\n merkle_tree::root::root_from_sibling_path,\n messaging::l2_to_l1_message::{L2ToL1Message, ScopedL2ToL1Message},\n traits::{is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::utils::{arrays::array_concat, field::field_from_bytes};\n\npub fn sha256_to_field<let N: u32>(bytes_to_hash: [u8; N]) -> Field {\n let sha256_hashed = std::hash::sha256(bytes_to_hash);\n let hash_in_a_field = field_from_bytes_32_trunc(sha256_hashed);\n\n hash_in_a_field\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(\n function_leaf,\n function_leaf_index,\n function_leaf_sibling_path,\n )\n}\n\nfn compute_note_hash_nonce(tx_hash: Field, note_index_in_tx: u32) -> Field {\n // Hashing tx hash with note index in tx is guaranteed to be unique\n poseidon2_hash_with_separator(\n [tx_hash, note_index_in_tx as Field],\n GENERATOR_INDEX__NOTE_HASH_NONCE,\n )\n}\n\npub fn compute_unique_note_hash(nonce: Field, siloed_note_hash: Field) -> Field {\n let inputs = [nonce, siloed_note_hash];\n poseidon2_hash_with_separator(inputs, GENERATOR_INDEX__UNIQUE_NOTE_HASH)\n}\n\npub fn compute_siloed_note_hash(app: AztecAddress, note_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), note_hash],\n GENERATOR_INDEX__SILOED_NOTE_HASH,\n )\n}\n\n/// Computes unique note hashes from siloed note hashes\npub fn compute_unique_siloed_note_hash(\n siloed_note_hash: Field,\n tx_hash: Field,\n note_index_in_tx: u32,\n) -> Field {\n if siloed_note_hash == 0 {\n 0\n } else {\n let nonce = compute_note_hash_nonce(tx_hash, note_index_in_tx);\n compute_unique_note_hash(nonce, siloed_note_hash)\n }\n}\n\n/// Siloing in the context of Aztec refers to the process of hashing a note hash with a contract address (this way\n/// the note hash is scoped to a specific contract). This is used to prevent intermingling of notes between contracts.\npub fn silo_note_hash(note_hash: ScopedNoteHash) -> Field {\n if note_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_note_hash(note_hash.contract_address, note_hash.value())\n }\n}\n\npub fn compute_siloed_nullifier(app: AztecAddress, nullifier: Field) -> Field {\n poseidon2_hash_with_separator(\n [app.to_field(), nullifier],\n GENERATOR_INDEX__OUTER_NULLIFIER,\n )\n}\n\npub fn silo_nullifier(nullifier: ScopedNullifier) -> Field {\n if nullifier.contract_address.is_zero() {\n nullifier.value() // Return value instead of 0 because the first nullifier's contract address is zero.\n } else {\n compute_siloed_nullifier(nullifier.contract_address, nullifier.value())\n }\n}\n\npub fn compute_siloed_private_log_field(contract_address: AztecAddress, field: Field) -> Field {\n poseidon2_hash([contract_address.to_field(), field])\n}\n\npub fn silo_private_log(private_log: Scoped<PrivateLogData>) -> PrivateLog {\n if private_log.contract_address.is_zero() {\n private_log.inner.log\n } else {\n let mut fields = private_log.inner.log.fields;\n fields[0] = compute_siloed_private_log_field(private_log.contract_address, fields[0]);\n PrivateLog { fields }\n }\n}\n\nfn compute_siloed_unencrypted_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_unencrypted_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_unencrypted_log_hash(log_hash.contract_address, log_hash.value())\n }\n}\n\npub fn merkle_hash(left: Field, right: Field) -> Field {\n poseidon2_hash([left, right])\n}\n\npub fn compute_l2_to_l1_hash(\n contract_address: AztecAddress,\n recipient: EthAddress,\n content: Field,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n let mut bytes: BoundedVec<u8, 160> = BoundedVec::new();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..inputs.len() {\n // TODO are bytes be in fr.to_buffer() ?\n let item_bytes: [u8; 32] = inputs[i].to_be_bytes();\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 silo_l2_to_l1_message(\n msg: ScopedL2ToL1Message,\n rollup_version_id: Field,\n chain_id: Field,\n) -> Field {\n if msg.contract_address.is_zero() {\n 0\n } else {\n compute_l2_to_l1_hash(\n msg.contract_address,\n msg.message.recipient,\n msg.message.content,\n rollup_version_id,\n chain_id,\n )\n }\n}\n\n// Computes sha256 hash of 2 input hashes.\n//\n// NB: This method now takes in two 31 byte fields - it assumes that any input\n// is the result of a sha_to_field hash and => is truncated\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//\npub fn accumulate_sha256(input: [Field; 2]) -> Field {\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 // Concatentate two fields into 32x2 = 64 bytes\n // accumulate_sha256 assumes that the inputs are pre-truncated 31 byte numbers\n let mut hash_input_flattened = [0; 64];\n for offset in 0..input.len() {\n let input_as_bytes: [u8; 32] = input[offset].to_be_bytes();\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n\n sha256_to_field(hash_input_flattened)\n}\n\n// Computes the final logs hash for a tx.\npub fn compute_tx_logs_hash<let N: u32>(logs: [LogHash; N]) -> Field {\n // Convert each field element into a byte array and append the bytes to `hash_input_flattened`\n let mut hash_input_flattened = [0; N * 32];\n for offset in 0..N {\n // TODO: This is not checking that the decomposition is smaller than P\n let input_as_bytes: [u8; 32] = logs[offset].value.to_be_radix(256);\n for byte_index in 0..32 {\n hash_input_flattened[offset * 32 + byte_index] = input_as_bytes[byte_index];\n }\n }\n // Ideally we would push to a slice then hash, but there is no sha_slice\n // Hardcode to 256 bytes for now\n let mut hash = sha256_to_field(hash_input_flattened);\n // Not having a 0 value hash for empty logs causes issues with empty txs\n // used for padding. Returning early is currently unsupported.\n // We always provide sorted logs here, so 0 being empty means all are empty.\n if is_empty(logs[0]) {\n hash = 0;\n }\n hash\n}\n\npub fn verification_key_hash<let N: u32>(key: [Field; N]) -> Field {\n crate::hash::poseidon2_hash(key)\n}\n\n#[inline_always]\npub fn pedersen_hash<let N: u32>(inputs: [Field; N], hash_index: u32) -> Field {\n std::hash::pedersen_hash_with_separator(inputs, hash_index)\n}\n\npub fn poseidon2_hash<let N: u32>(inputs: [Field; N]) -> Field {\n std::hash::poseidon2::Poseidon2::hash(inputs, N)\n}\n\n#[no_predicates]\npub fn poseidon2_hash_with_separator<let N: u32, T>(inputs: [Field; N], separator: T) -> Field\nwhere\n T: ToField,\n{\n let inputs_with_separator = array_concat([separator.to_field()], inputs);\n poseidon2_hash(inputs_with_separator)\n}\n\npub fn poseidon2_hash_with_separator_slice<T>(inputs: [Field], separator: T) -> Field\nwhere\n T: ToField,\n{\n let in_len = inputs.len() + 1;\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = std::hash::poseidon2::Poseidon2::new(iv);\n sponge.absorb(separator.to_field());\n\n for i in 0..inputs.len() {\n sponge.absorb(inputs[i]);\n }\n\n sponge.squeeze()\n}\n\n#[no_predicates]\npub fn poseidon2_hash_bytes<let N: u32>(inputs: [u8; N]) -> Field {\n let mut fields = [0; (N + 30) / 31];\n let mut field_index = 0;\n let mut current_field = [0; 31];\n for i in 0..inputs.len() {\n let index = i % 31;\n current_field[index] = inputs[i];\n if index == 30 {\n fields[field_index] = field_from_bytes(current_field, false);\n current_field = [0; 31];\n field_index += 1;\n }\n }\n if field_index != fields.len() {\n fields[field_index] = field_from_bytes(current_field, false);\n }\n poseidon2_hash(fields)\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, 20, 21, 22, 23, 24,\n 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,\n 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,\n 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93,\n 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112,\n 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130,\n 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148,\n 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159,\n ];\n let result = sha256_to_field(full_buffer);\n\n assert(result == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184c7);\n\n // to show correctness of the current ver (truncate one byte) vs old ver (mod full bytes):\n let result_bytes = std::hash::sha256(full_buffer);\n let truncated_field = crate::utils::field::field_from_bytes_32_trunc(result_bytes);\n assert(truncated_field == result);\n let mod_res = result + (result_bytes[31] as Field);\n assert(mod_res == 0x448ebbc9e1a31220a2f3830c18eef61b9bd070e5084b7fa2a359fe729184e0);\n}\n\n#[test]\nfn compute_l2_l1_hash() {\n // All zeroes\n let hash_result =\n compute_l2_to_l1_hash(AztecAddress::from_field(0), EthAddress::zero(), 0, 0, 0);\n assert(hash_result == 0xb393978842a0fa3d3e1470196f098f473f9678e72463cb65ec4ab5581856c2);\n\n // Non-zero case\n let hash_result = compute_l2_to_l1_hash(\n AztecAddress::from_field(1),\n EthAddress::from_field(3),\n 5,\n 2,\n 4,\n );\n assert(hash_result == 0x3f88c1044a05e5340ed20466276500f6d45ca5603913b9091e957161734e16);\n}\n\n#[test]\nfn silo_l2_to_l1_message_matches_typescript() {\n let version = 4;\n let chainId = 5;\n\n let hash = silo_l2_to_l1_message(\n ScopedL2ToL1Message {\n message: L2ToL1Message { recipient: EthAddress::from_field(1), content: 2, counter: 0 },\n contract_address: AztecAddress::from_field(3),\n },\n version,\n chainId,\n );\n\n // The following value was generated by `l2_to_l1_message.test.ts`\n let hash_from_typescript = 0x00c6155d69febb9d5039b374dd4f77bf57b7c881709aa524a18acaa0bd57476a;\n\n assert_eq(hash, hash_from_typescript);\n}\n"
|
|
5785
5780
|
},
|
|
5786
5781
|
"317": {
|
|
5787
|
-
"path": "/root/nargo/github.com/noir-lang/
|
|
5782
|
+
"path": "/root/nargo/github.com/noir-lang/ec/v0.1.2/src/lib.nr",
|
|
5788
5783
|
"source": "// Elliptic curve implementation\n// Overview\n// ========\n// The following three elliptic curve representations are admissible:\npub mod tecurve; // Twisted Edwards curves\npub mod swcurve; // Elliptic curves in Short Weierstrass form\npub mod montcurve; // Montgomery curves\npub mod consts; // Commonly used curve presets\n//\n// Note that Twisted Edwards and Montgomery curves are (birationally) equivalent, so that\n// they may be freely converted between one another, whereas Short Weierstrass curves are\n// more general. Diagramatically:\n//\n// tecurve == montcurve `subset` swcurve\n//\n// Each module is further divided into two submodules, 'affine' and 'curvegroup', depending\n// on the preferred coordinate representation. Affine coordinates are none other than the usual\n// two-dimensional Cartesian coordinates used in the definitions of these curves, whereas\n// 'CurveGroup' coordinates (terminology borrowed from Arkworks, whose conventions we try\n// to follow) are special coordinate systems with respect to which the group operations may be\n// implemented more efficiently, usually by means of an appropriate choice of projective coordinates.\n//\n// In each of these submodules, there is a Point struct and a Curve struct, the former\n// representing a point in the coordinate system and the latter a curve configuration.\n//\n// Points\n// ======\n// Points may be instantiated using the associated function `new`, which takes coordinates\n// as its arguments. For instance,\n//\n// `let p = swcurve::Point::new(1,1);`\n//\n// The additive identity may be constructed by a call to the associated function `zero` of no\n// arguments:\n//\n// `let zero = swcurve::Point::zero();`\n//\n// Points may be tested for equality by calling the method `eq`:\n//\n// `let pred = p.eq(zero);`\n//\n// There is also the method `is_zero` to explicitly check whether a point is the additive identity:\n//\n// `constrain pred == p.is_zero();`\n//\n// Points may be negated by calling the `negate` method and converted to CurveGroup (or affine)\n// coordinates by calling the `into_group` (resp. `into_affine`) method on them. Finally,\n// Points may be freely mapped between their respective Twisted Edwards and Montgomery\n// representations by calling the `into_montcurve` or `into_tecurve` methods. For mappings\n// between Twisted Edwards/Montgomery curves and Short Weierstrass curves, see the Curve section\n// below, as the underlying mappings are those of curves rather than ambient spaces.\n// As a rule, Points in affine (or CurveGroup) coordinates are mapped to Points in affine\n// (resp. CurveGroup) coordinates.\n//\n// Curves\n// ======\n// A curve configuration (Curve) is completely determined by the Field coefficients of its defining\n// equation (a and b in the case of swcurve, a and d in the case of tecurve, and j and k in\n// the case of montcurve) together with a generator (`gen`) in the corresponding coordinate system.\n// For example, the Baby Jubjub curve configuration as defined in ERC-2494 may be instantiated as a Twisted\n// Edwards curve in affine coordinates as follows:\n//\n// `let bjj_affine = tecurve::Curve::new(168700, 168696, tecurve::Point::new(995203441582195749578291179787384436505546430278305826713579947235728471134,5472060717959818805561601436314318772137091100104008585924551046643952123905));`\n//\n// The `contains` method may be used to check whether a Point lies on a given curve:\n//\n// `constrain bjj_affine.contains(tecurve::Point::zero());`\n//\n// The elliptic curve group's addition operation is exposed as the `add` method, e.g.\n//\n// `let p = bjj_affine.add(bjj_affine.gen, bjj_affine.gen);`\n//\n// subtraction as the `subtract` method, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.subtract(bjj_affine.gen, bjj_affine.gen));`\n//\n// scalar multiplication as the `mul` method, where the scalar is assumed to be a Field* element, e.g.\n//\n// `constrain tecurve::Point::zero().eq(bjj_affine.mul(2, tecurve::Point::zero());`\n//\n// There is a scalar multiplication method (`bit_mul`) provided where the scalar input is expected to be\n// an array of bits (little-endian convention), as well as a multi-scalar multiplication method** (`msm`)\n// which takes an array of Field elements and an array of elliptic curve points as arguments, both assumed\n// to be of the same length.\n//\n// Curve configurations may be converted between different coordinate representations by calling the `into_group`\n// and `into_affine` methods on them, e.g.\n//\n// `let bjj_curvegroup = bjj_affine.into_group();`\n//\n// Curve configurations may also be converted between different curve representations by calling the `into_swcurve`,\n// `into_montcurve` and `into_tecurve` methods subject to the relation between the curve representations mentioned\n// above. Note that it is possible to map Points from a Twisted Edwards/Montgomery curve to the corresponding\n// Short Weierstrass representation and back, and the methods to do so are exposed as `map_into_swcurve` and\n// `map_from_swcurve`, which each take one argument, the point to be mapped.\n//\n// Curve maps\n// ==========\n// There are a few different ways of mapping Field elements to elliptic curves. Here we provide the simplified\n// Shallue-van de Woestijne-Ulas and Elligator 2 methods, the former being applicable to all curve types\n// provided above subject to the constraint that the coefficients of the corresponding Short Weierstrass curve satisfies\n// a*b != 0 and the latter being applicable to Montgomery and Twisted Edwards curves subject to the constraint that\n// the coefficients of the corresponding Montgomery curve satisfy j*k != 0 and (j^2 - 4)/k^2 is non-square.\n//\n// The simplified Shallue-van de Woestijne-Ulas method is exposed as the method `swu_map` on the Curve configuration and\n// depends on two parameters, a Field element z != -1 for which g(x) - z is irreducible over Field and g(b/(z*a)) is\n// square, where g(x) = x^3 + a*x + b is the right-hand side of the defining equation of the corresponding Short\n// Weierstrass curve, and a Field element u to be mapped onto the curve. For example, in the case of bjj_affine above,\n// it may be determined using the scripts provided at <https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve> that z = 5.\n//\n// The Elligator 2 method is exposed as the method `elligator2_map` on the Curve configurations of Montgomery and\n// Twisted Edwards curves. Like the simplified SWU method above, it depends on a certain non-square element of Field,\n// but this element need not satisfy any further conditions, so it is included as the (Field-dependent) constant\n//`ZETA` below. Thus, the `elligator2_map` method depends only on one parameter, the Field element to be mapped onto\n// the curve.\n//\n// For details on all of the above in the context of hashing to elliptic curves, see <https://datatracker.ietf.org/doc/id/draft-irtf-cfrg-hash-to-curve-06.html>.\n//\n//\n// *TODO: Replace Field with Bigint.\n// **TODO: Support arrays of structs to make this work.\n// Field-dependent constant ZETA = a non-square element of Field\n// Required for Elligator 2 map\n// TODO: Replace with built-in constant.\nglobal ZETA: Field = 5;\n// Field-dependent constants for Tonelli-Shanks algorithm (see sqrt function below)\n// TODO: Possibly make this built-in.\nglobal C1: u32 = 28;\nglobal C3: Field = 40770029410420498293352137776570907027550720424234931066070132305055;\nglobal C5: Field = 19103219067921713944291392827692070036145651957329286315305642004821462161904;\n// Higher-order version of scalar multiplication\n// TODO: Make this work so that the submodules' bit_mul may be defined in terms of it.\n//fn bit_mul<T,N>(add: fn(T,T) -> T, e: T, bits: [u1; N], p: T) -> T {\n// let mut out = e;\n// let n = bits.len();\n//\n// for i in 0..n {\n// out = add(\n// add(out, out),\n// if(bits[n - i - 1] == 0) {e} else {p});\n// }\n//\n// out\n//}\n// TODO: Make this built-in.\npub fn safe_inverse(x: Field) -> Field {\n if x == 0 {\n 0\n } else {\n 1 / x\n }\n}\n// Boolean indicating whether Field element is a square, i.e. whether there exists a y in Field s.t. x = y*y.\npub fn is_square(x: Field) -> bool {\n let v = pow(x, 0 - 1 / 2);\n\n v * (v - 1) == 0\n}\n// Power function of two Field arguments of arbitrary size.\n// Adapted from std::field::pow_32.\npub fn pow(x: Field, y: Field) -> Field {\n let mut r = 1 as Field;\n let b: [u1; 254] = y.to_le_bits();\n\n for i in 0..254 {\n r *= r;\n r *= (b[254 - 1 - i] as Field) * x + (1 - b[254 - 1 - i] as Field);\n }\n\n r\n}\n// Tonelli-Shanks algorithm for computing the square root of a Field element.\n// Requires C1 = max{c: 2^c divides (p-1)}, where p is the order of Field\n// as well as C3 = (C2 - 1)/2, where C2 = (p-1)/(2^c1),\n// and C5 = ZETA^C2, where ZETA is a non-square element of Field.\n// These are pre-computed above as globals.\npub fn sqrt(x: Field) -> Field {\n let mut z = pow(x, C3);\n let mut t = z * z * x;\n z *= x;\n let mut b = t;\n let mut c = C5;\n\n for i in 0..(C1 - 1) {\n for _j in 1..(C1 - i - 1) {\n b *= b;\n }\n\n z *= if b == 1 { 1 } else { c };\n\n c *= c;\n\n t *= if b == 1 { 1 } else { c };\n\n b = t;\n }\n\n z\n}\n\nmod tests {\n use crate::montcurve::affine::Point as MGaffine;\n use crate::montcurve::curvegroup::Point as MG;\n use crate::swcurve::affine::Point as SWGaffine;\n use crate::swcurve::curvegroup::Point as SWG;\n use crate::tecurve::affine::Curve as AffineCurve;\n use crate::tecurve::affine::Point as Gaffine;\n use crate::tecurve::curvegroup::Point as G;\n\n #[test]\n fn smoke_test() {\n // Tests may be checked against https://github.com/cfrg/draft-irtf-cfrg-hash-to-curve/tree/main/poc\n // Define Baby Jubjub (ERC-2494) parameters in affine representation\n let bjj_affine = AffineCurve::new(\n 168700,\n 168696,\n Gaffine::new(\n 995203441582195749578291179787384436505546430278305826713579947235728471134,\n 5472060717959818805561601436314318772137091100104008585924551046643952123905,\n ),\n );\n // Test addition\n let p1_affine = Gaffine::new(\n 17777552123799933955779906779655732241715742912184938656739573121738514868268,\n 2626589144620713026669568689430873010625803728049924121243784502389097019475,\n );\n let p2_affine = Gaffine::new(\n 16540640123574156134436876038791482806971768689494387082833631921987005038935,\n 20819045374670962167435360035096875258406992893633759881276124905556507972311,\n );\n\n let p3_affine = bjj_affine.add(p1_affine, p2_affine);\n assert(p3_affine.eq(Gaffine::new(\n 7916061937171219682591368294088513039687205273691143098332585753343424131937,\n 14035240266687799601661095864649209771790948434046947201833777492504781204499,\n )));\n // Test scalar multiplication\n let p4_affine = bjj_affine.mul(2, p1_affine);\n assert(p4_affine.eq(Gaffine::new(\n 6890855772600357754907169075114257697580319025794532037257385534741338397365,\n 4338620300185947561074059802482547481416142213883829469920100239455078257889,\n )));\n assert(p4_affine.eq(bjj_affine.bit_mul([0, 1], p1_affine)));\n // Test subtraction\n let p5_affine = bjj_affine.subtract(p3_affine, p3_affine);\n assert(p5_affine.eq(Gaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_affine.contains(bjj_affine.gen)\n & bjj_affine.contains(p1_affine)\n & bjj_affine.contains(p2_affine)\n & bjj_affine.contains(p3_affine)\n & bjj_affine.contains(p4_affine)\n & bjj_affine.contains(p5_affine),\n );\n // Test CurveGroup equivalents\n let bjj = bjj_affine.into_group(); // Baby Jubjub\n let p1 = p1_affine.into_group();\n let p2 = p2_affine.into_group();\n let p3 = p3_affine.into_group();\n let p4 = p4_affine.into_group();\n let p5 = p5_affine.into_group();\n // Test addition\n assert(p3.eq(bjj.add(p1, p2)));\n // Test scalar multiplication\n assert(p4.eq(bjj.mul(2, p1)));\n assert(p4.eq(bjj.bit_mul([0, 1], p1)));\n // Test subtraction\n assert(G::zero().eq(bjj.subtract(p3, p3)));\n assert(p5.eq(G::zero()));\n // Check that these points are on the curve\n assert(\n bjj.contains(bjj.gen)\n & bjj.contains(p1)\n & bjj.contains(p2)\n & bjj.contains(p3)\n & bjj.contains(p4)\n & bjj.contains(p5),\n );\n // Test SWCurve equivalents of the above\n // First the affine representation\n let bjj_swcurve_affine = bjj_affine.into_swcurve();\n\n let p1_swcurve_affine = bjj_affine.map_into_swcurve(p1_affine);\n let p2_swcurve_affine = bjj_affine.map_into_swcurve(p2_affine);\n let p3_swcurve_affine = bjj_affine.map_into_swcurve(p3_affine);\n let p4_swcurve_affine = bjj_affine.map_into_swcurve(p4_affine);\n let p5_swcurve_affine = bjj_affine.map_into_swcurve(p5_affine);\n // Addition\n assert(p3_swcurve_affine.eq(bjj_swcurve_affine.add(p1_swcurve_affine, p2_swcurve_affine)));\n // Doubling\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.mul(2, p1_swcurve_affine)));\n assert(p4_swcurve_affine.eq(bjj_swcurve_affine.bit_mul([0, 1], p1_swcurve_affine)));\n // Subtraction\n assert(SWGaffine::zero().eq(bjj_swcurve_affine.subtract(\n p3_swcurve_affine,\n p3_swcurve_affine,\n )));\n assert(p5_swcurve_affine.eq(SWGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve_affine.contains(bjj_swcurve_affine.gen)\n & bjj_swcurve_affine.contains(p1_swcurve_affine)\n & bjj_swcurve_affine.contains(p2_swcurve_affine)\n & bjj_swcurve_affine.contains(p3_swcurve_affine)\n & bjj_swcurve_affine.contains(p4_swcurve_affine)\n & bjj_swcurve_affine.contains(p5_swcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_swcurve = bjj.into_swcurve();\n\n let p1_swcurve = bjj.map_into_swcurve(p1);\n let p2_swcurve = bjj.map_into_swcurve(p2);\n let p3_swcurve = bjj.map_into_swcurve(p3);\n let p4_swcurve = bjj.map_into_swcurve(p4);\n let p5_swcurve = bjj.map_into_swcurve(p5);\n // Addition\n assert(p3_swcurve.eq(bjj_swcurve.add(p1_swcurve, p2_swcurve)));\n // Doubling\n assert(p4_swcurve.eq(bjj_swcurve.mul(2, p1_swcurve)));\n assert(p4_swcurve.eq(bjj_swcurve.bit_mul([0, 1], p1_swcurve)));\n // Subtraction\n assert(SWG::zero().eq(bjj_swcurve.subtract(p3_swcurve, p3_swcurve)));\n assert(p5_swcurve.eq(SWG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_swcurve.contains(bjj_swcurve.gen)\n & bjj_swcurve.contains(p1_swcurve)\n & bjj_swcurve.contains(p2_swcurve)\n & bjj_swcurve.contains(p3_swcurve)\n & bjj_swcurve.contains(p4_swcurve)\n & bjj_swcurve.contains(p5_swcurve),\n );\n // Test MontCurve conversions\n // First the affine representation\n let bjj_montcurve_affine = bjj_affine.into_montcurve();\n\n let p1_montcurve_affine = p1_affine.into_montcurve();\n let p2_montcurve_affine = p2_affine.into_montcurve();\n let p3_montcurve_affine = p3_affine.into_montcurve();\n let p4_montcurve_affine = p4_affine.into_montcurve();\n let p5_montcurve_affine = p5_affine.into_montcurve();\n // Addition\n assert(p3_montcurve_affine.eq(bjj_montcurve_affine.add(\n p1_montcurve_affine,\n p2_montcurve_affine,\n )));\n // Doubling\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.mul(2, p1_montcurve_affine)));\n assert(p4_montcurve_affine.eq(bjj_montcurve_affine.bit_mul([0, 1], p1_montcurve_affine)));\n // Subtraction\n assert(MGaffine::zero().eq(bjj_montcurve_affine.subtract(\n p3_montcurve_affine,\n p3_montcurve_affine,\n )));\n assert(p5_montcurve_affine.eq(MGaffine::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve_affine.contains(bjj_montcurve_affine.gen)\n & bjj_montcurve_affine.contains(p1_montcurve_affine)\n & bjj_montcurve_affine.contains(p2_montcurve_affine)\n & bjj_montcurve_affine.contains(p3_montcurve_affine)\n & bjj_montcurve_affine.contains(p4_montcurve_affine)\n & bjj_montcurve_affine.contains(p5_montcurve_affine),\n );\n // Then the CurveGroup representation\n let bjj_montcurve = bjj.into_montcurve();\n\n let p1_montcurve = p1_montcurve_affine.into_group();\n let p2_montcurve = p2_montcurve_affine.into_group();\n let p3_montcurve = p3_montcurve_affine.into_group();\n let p4_montcurve = p4_montcurve_affine.into_group();\n let p5_montcurve = p5_montcurve_affine.into_group();\n // Addition\n assert(p3_montcurve.eq(bjj_montcurve.add(p1_montcurve, p2_montcurve)));\n // Doubling\n assert(p4_montcurve.eq(bjj_montcurve.mul(2, p1_montcurve)));\n assert(p4_montcurve.eq(bjj_montcurve.bit_mul([0, 1], p1_montcurve)));\n // Subtraction\n assert(MG::zero().eq(bjj_montcurve.subtract(p3_montcurve, p3_montcurve)));\n assert(p5_montcurve.eq(MG::zero()));\n // Check that these points are on the curve\n assert(\n bjj_montcurve.contains(bjj_montcurve.gen)\n & bjj_montcurve.contains(p1_montcurve)\n & bjj_montcurve.contains(p2_montcurve)\n & bjj_montcurve.contains(p3_montcurve)\n & bjj_montcurve.contains(p4_montcurve)\n & bjj_montcurve.contains(p5_montcurve),\n );\n // Elligator 2 map-to-curve\n let ell2_pt_map = bjj_affine.elligator2_map(27);\n\n assert(ell2_pt_map.eq(MGaffine::new(\n 7972459279704486422145701269802978968072470631857513331988813812334797879121,\n 8142420778878030219043334189293412482212146646099536952861607542822144507872,\n )\n .into_tecurve()));\n // SWU map-to-curve\n let swu_pt_map = bjj_affine.swu_map(5, 27);\n\n assert(swu_pt_map.eq(bjj_affine.map_from_swcurve(SWGaffine::new(\n 2162719247815120009132293839392097468339661471129795280520343931405114293888,\n 5341392251743377373758788728206293080122949448990104760111875914082289313973,\n ))));\n }\n\n}\n"
|
|
5789
5784
|
},
|
|
5790
|
-
"334": {
|
|
5791
|
-
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/account.nr",
|
|
5792
|
-
"source": "use dep::aztec::{\n context::PrivateContext,\n hash::poseidon2_hash_with_separator,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n};\n\nuse crate::auth::{compute_authwit_message_hash, IS_VALID_SELECTOR};\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"
|
|
5793
|
-
},
|
|
5794
5785
|
"336": {
|
|
5795
|
-
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr",
|
|
5796
|
-
"source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage()\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage()\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"
|
|
5797
|
-
},
|
|
5798
|
-
"337": {
|
|
5799
5786
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr",
|
|
5800
5787
|
"source": "use crate::entrypoint::function_call::FunctionCall;\nuse dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__FEE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\n// 2 * 5 (FUNCTION_CALL_SIZE) + 2\nglobal FEE_PAYLOAD_SIZE: u32 = 12;\n\n// 2 * 98 (FUNCTION_CALL_SIZE_IN_BYTES) + 32\nglobal FEE_PAYLOAD_SIZE_IN_BYTES: u32 = 228;\n\nglobal MAX_FEE_FUNCTION_CALLS: u32 = 2;\n\n// docs:start:fee-payload-struct\npub struct FeePayload {\n function_calls: [FunctionCall; MAX_FEE_FUNCTION_CALLS],\n nonce: Field,\n is_fee_payer: bool,\n}\n// docs:end:fee-payload-struct\n\nimpl Serialize<FEE_PAYLOAD_SIZE> for FeePayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; FEE_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, FEE_PAYLOAD_SIZE> = BoundedVec::new();\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n fields.extend_from_array(self.function_calls[i].serialize());\n }\n fields.push(self.nonce);\n fields.push(self.is_fee_payer as Field);\n fields.storage()\n }\n}\n\nimpl Hash for FeePayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__FEE_PAYLOAD)\n }\n}\n\nimpl FeePayload {\n fn to_be_bytes(self) -> [u8; FEE_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, FEE_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..MAX_FEE_FUNCTION_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n bytes.push(self.is_fee_payer as u8);\n\n bytes.storage()\n }\n\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n if self.is_fee_payer {\n context.set_as_fee_payer();\n }\n }\n}\n"
|
|
5801
5788
|
},
|
|
5789
|
+
"337": {
|
|
5790
|
+
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr",
|
|
5791
|
+
"source": "use dep::aztec::prelude::PrivateContext;\nuse dep::aztec::protocol_types::{\n constants::GENERATOR_INDEX__SIGNATURE_PAYLOAD,\n hash::poseidon2_hash_with_separator,\n traits::{Hash, Serialize},\n};\n\nuse crate::entrypoint::function_call::FunctionCall;\n\n// FUNCTION_CALL_SIZE * ACCOUNT_MAX_CALLS + 1\nglobal APP_PAYLOAD_SIZE: u32 = 21;\n// FUNCTION_CALL_SIZE_IN_BYTES * ACCOUNT_MAX_CALLS + 32\nglobal APP_PAYLOAD_SIZE_IN_BYTES: u32 = 424;\n\nglobal ACCOUNT_MAX_CALLS: u32 = 4;\n\n// Note: If you change the following struct you have to update default_entrypoint.ts\n// docs:start:app-payload-struct\npub struct AppPayload {\n function_calls: [FunctionCall; ACCOUNT_MAX_CALLS],\n nonce: Field,\n}\n// docs:end:app-payload-struct\n\nimpl Serialize<APP_PAYLOAD_SIZE> for AppPayload {\n // Serializes the entrypoint struct\n fn serialize(self) -> [Field; APP_PAYLOAD_SIZE] {\n let mut fields: BoundedVec<Field, APP_PAYLOAD_SIZE> = BoundedVec::new();\n for call in self.function_calls {\n fields.extend_from_array(call.serialize());\n }\n fields.push(self.nonce);\n fields.storage()\n }\n}\n\nimpl Hash for AppPayload {\n fn hash(self) -> Field {\n poseidon2_hash_with_separator(self.serialize(), GENERATOR_INDEX__SIGNATURE_PAYLOAD)\n }\n}\n\nimpl AppPayload {\n // Serializes the payload as an array of bytes. Useful for hashing with sha256.\n fn to_be_bytes(self) -> [u8; APP_PAYLOAD_SIZE_IN_BYTES] {\n let mut bytes: BoundedVec<u8, APP_PAYLOAD_SIZE_IN_BYTES> = BoundedVec::new();\n\n for i in 0..ACCOUNT_MAX_CALLS {\n bytes.extend_from_array(self.function_calls[i].to_be_bytes());\n }\n bytes.extend_from_array(self.nonce.to_be_bytes::<32>());\n\n bytes.storage()\n }\n\n // Executes all private and public calls\n // docs:start:entrypoint-execute-calls\n fn execute_calls(self, context: &mut PrivateContext) {\n for call in self.function_calls {\n if !call.target_address.is_zero() {\n if call.is_public {\n context.call_public_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n } else {\n let _result = context.call_private_function_with_packed_args(\n call.target_address,\n call.function_selector,\n call.args_hash,\n call.is_static,\n );\n }\n }\n }\n }\n // docs:end:entrypoint-execute-calls\n}\n"
|
|
5792
|
+
},
|
|
5802
5793
|
"340": {
|
|
5794
|
+
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/account.nr",
|
|
5795
|
+
"source": "use dep::aztec::{\n context::PrivateContext,\n hash::poseidon2_hash_with_separator,\n protocol_types::constants::{GENERATOR_INDEX__COMBINED_PAYLOAD, GENERATOR_INDEX__TX_NULLIFIER},\n};\n\nuse crate::auth::{compute_authwit_message_hash, IS_VALID_SELECTOR};\nuse crate::entrypoint::{app::AppPayload, fee::FeePayload};\n\npub struct AccountActions<Context> {\n context: Context,\n is_valid_impl: fn(&mut PrivateContext, Field) -> bool,\n}\n\nimpl<Context> AccountActions<Context> {\n pub fn init(context: Context, is_valid_impl: fn(&mut PrivateContext, Field) -> bool) -> Self {\n AccountActions { context, is_valid_impl }\n }\n}\n\n/**\n * An implementation of the Account Action struct for the private context.\n *\n * Implements logic to verify authorization and execute payloads.\n */\nimpl AccountActions<&mut PrivateContext> {\n\n /**\n * Verifies that the `app_hash` and `fee_hash` are authorized and then executes them.\n *\n * Executes the `fee_payload` and `app_payload` in sequence.\n * Will execute the `fee_payload` as part of the setup, and then enter the app phase.\n *\n * @param app_payload The payload that contains the calls to be executed in the app phase.\n * @param fee_payload The payload that contains the calls to be executed in the setup phase.\n */\n // docs:start:entrypoint\n pub fn entrypoint(self, app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let valid_fn = self.is_valid_impl;\n\n let combined_payload_hash = poseidon2_hash_with_separator(\n [app_payload.hash(), fee_payload.hash()],\n GENERATOR_INDEX__COMBINED_PAYLOAD,\n );\n assert(valid_fn(self.context, combined_payload_hash));\n\n fee_payload.execute_calls(self.context);\n self.context.end_setup();\n app_payload.execute_calls(self.context);\n if cancellable {\n let tx_nullifier =\n poseidon2_hash_with_separator([app_payload.nonce], GENERATOR_INDEX__TX_NULLIFIER);\n self.context.push_nullifier(tx_nullifier);\n }\n }\n // docs:end:entrypoint\n\n /**\n * Verifies that the `msg_sender` is authorized to consume `inner_hash` by the account.\n *\n * Computes the `message_hash` using the `msg_sender`, `chain_id`, `version` and `inner_hash`.\n * Then executes the `is_valid_impl` function to verify that the message is authorized.\n *\n * Will revert if the message is not authorized.\n *\n * @param inner_hash The hash of the message that the `msg_sender` is trying to consume.\n */\n // docs:start:verify_private_authwit\n pub fn verify_private_authwit(self, inner_hash: Field) -> Field {\n // The `inner_hash` is \"siloed\" with the `msg_sender` to ensure that only it can\n // consume the message.\n // This ensures that contracts cannot consume messages that are not intended for them.\n let message_hash = compute_authwit_message_hash(\n self.context.msg_sender(),\n self.context.chain_id(),\n self.context.version(),\n inner_hash,\n );\n let valid_fn = self.is_valid_impl;\n assert(valid_fn(self.context, message_hash) == true, \"Message not authorized by account\");\n IS_VALID_SELECTOR\n }\n // docs:end:verify_private_authwit\n}\n"
|
|
5796
|
+
},
|
|
5797
|
+
"342": {
|
|
5803
5798
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr",
|
|
5804
5799
|
"source": "#[oracle(getAuthWitness)]\nunconstrained fn get_auth_witness_oracle<let N: u32>(_message_hash: Field) -> [Field; N] {}\n\n/**\n * Oracle wrapper to fetch an `auth_witness` for a given `message_hash` from the PXE.\n *\n * @param message_hash The hash of the message for which the `auth_witness` is to be fetched.\n * @return The `auth_witness` for the given `message_hash` as Field array.\n */\npub unconstrained fn get_auth_witness<let N: u32>(message_hash: Field) -> [Field; N] {\n get_auth_witness_oracle(message_hash)\n}\n"
|
|
5805
5800
|
},
|
|
5806
|
-
"
|
|
5801
|
+
"343": {
|
|
5807
5802
|
"path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr",
|
|
5808
5803
|
"source": "use dep::aztec::{context::{gas::GasOpts, PrivateContext, PublicContext}, hash::hash_args_array};\nuse dep::aztec::protocol_types::{\n abis::function_selector::FunctionSelector,\n address::AztecAddress,\n constants::{\n CANONICAL_AUTH_REGISTRY_ADDRESS, GENERATOR_INDEX__AUTHWIT_INNER,\n GENERATOR_INDEX__AUTHWIT_NULLIFIER, GENERATOR_INDEX__AUTHWIT_OUTER,\n },\n hash::poseidon2_hash_with_separator,\n};\n\n/**\n * Authenticaion witness helper library\n *\n * Authentication Witness is a scheme for authenticating actions on Aztec, so users can allow third-parties\n * (e.g. protocols or other users) to execute an action on their behalf.\n *\n * This library provides helper functions to manage such witnesses.\n * The authentication witness, is some \"witness\" (data) that authenticates a `message_hash`.\n * The simplest example of an authentication witness, is a signature. The signature is the \"evidence\",\n * that the signer has seen the message, agrees with it, and has allowed it.\n * It does not need to be a signature. It could be any kind of \"proof\" that the message is allowed.\n * Another proof could be knowing some kind of secret, or having some kind of \"token\" that allows the message.\n *\n * The `message_hash` is a hash of the following structure:\n * hash(consumer, chain_id, version, inner_hash)\n * - consumer: the address of the contract that is \"consuming\" the message,\n * - chain_id: the chain id of the chain that the message is being consumed on,\n * - version: the version of the chain that the message is being consumed on,\n * - inner_hash: the hash of the \"inner\" message that is being consumed, this is the \"actual\" message or action.\n *\n * While the `inner_hash` could be anything, such as showing you signed a specific message, it will often be\n * a hash of the \"action\" to approve, along with who made the call. As part of this library, we provide a few\n * helper functions to deal with such messages.\n *\n * For example, we provide helper function that is used for checking that the message is an encoding of the current call.\n * This can be used to let some contract \"allow\" another contract to act on its behalf, as long as it can\n * show that it is acting on behalf of the contract.\n *\n * If we take a case of allowing a contract to transfer tokens on behalf of an account, the `inner_hash` can be\n * derived as:\n * inner_hash = hash(caller, \"transfer\", hash(to, amount))\n *\n * Where the `caller` would be the address of the contract that is trying to transfer the tokens, and `to` and `amount`\n * the arguments for the transfer.\n *\n * Note that we have both a `caller` and a `consumer`, the `consumer` will be the contract that is consuming the message,\n * in the case of the transfer, it would be the `Token` contract itself, while the caller, will be the actor that is\n * allowed to transfer the tokens.\n *\n *\n * The authentication mechanism works differently in public and private contexts. In private, we recall that everything\n * is executed on the user's device, so we can use `oracles` to \"ask\" the user (not contract) for information. In public\n * we cannot do this, since it is executed by the sequencer (someone else). Therefore we can instead use a \"registry\"\n * to store the messages that we have approved.\n *\n * A simple example would be a \"token\" that is being \"pulled\" from one account into another. We will first outline\n * how this would look in private, and then in public later.\n *\n * Say that a user `Alice` wants to deposit some tokens into a DeFi protocol (say a DEX).\n * `Alice` would make a `deposit` transaction, that she is executing using her account contract.\n * The account would call the `DeFi` contract to execute `deposit`, which would try to pull funds from the `Token`\n * contract. Since the `DeFi` contract is trying to pull funds from an account that is not its own, it needs to\n * convince the `Token` contract that it is allowed to do so.\n *\n * This is where the authentication witness comes in The `Token` contract computes a `message_hash` from the\n * `transfer` call, and then asks `Alice Account` contract to verify that the `DeFi` contract is allowed to\n * execute that call.\n *\n * `Alice Account` contract can then ask `Alice` if she wants to allow the `DeFi` contract to pull funds from her\n * account. If she does, she will sign the `message_hash` and return the signature to the `Alice Account` which\n * will validate it and return success to the `Token` contract which will then allow the `DeFi` contract to pull\n * funds from `Alice`.\n *\n * To ensure that the same \"approval\" cannot be used multiple times, we also compute a `nullifier` for the\n * authentication witness, and emit it from the `Token` contract (consumer).\n *\n * Note that we can do this flow as we are in private were we can do oracle calls out from contracts.\n *\n *\n * Person Contract Contract Contract\n * Alice Alice Account Token DeFi\n * | | | |\n * | Defi.deposit(Token, 1000) | |\n * |----------------->| | |\n * | | deposit(Token, 1000) |\n * | |---------------------------------------->|\n * | | | |\n * | | | transfer(Alice, Defi, 1000)\n * | | |<---------------------|\n * | | | |\n * | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | |<-----------------| |\n * | | | |\n * | Please give me AuthWit for DeFi | |\n * | calling transfer(Alice, Defi, 1000) | |\n * |<-----------------| | |\n * | | | |\n * | | | |\n * | AuthWit for transfer(Alice, Defi, 1000) |\n * |----------------->| | |\n * | | AuthWit validity | |\n * | |----------------->| |\n * | | | |\n * | | throw if invalid AuthWit |\n * | | | |\n * | | emit AuthWit nullifier |\n * | | | |\n * | | transfer(Alice, Defi, 1000) |\n * | | | |\n * | | | |\n * | | | success |\n * | | |--------------------->|\n * | | | |\n * | | | |\n * | | | deposit(Token, 1000)\n * | | | |\n * | | | |\n *\n *\n * If we instead were in public, we cannot do the same flow. Instead we would use an authentication registry to store\n * the messages that we have approved.\n *\n * To approve a message, `Alice Account` can make a `set_authorized` call to the registry, to set a `message_hash`\n * as authorized. This is essentially a mapping from `message_hash` to `true` for `Alice Contract`. Every account\n * has its own map in the registry, so `Alice` cannot approve a message for `Bob`.\n *\n * The `Token` contract can then try to \"spend\" the approval by calling `consume` on the registry. If the message\n * was approved, the value is updated to `false`, and we return the success flag. For more information on the\n * registry, see `main.nr` in `auth_registry_contract`.\n *\n * Person Contract Contract Contract Contract\n * Alice Alice Account Registry Token DeFi\n * | | | | |\n * | Registry.set_authorized(..., true) | | |\n * |----------------->| | | |\n * | | set_authorized(..., true) | |\n * | |------------------->| | |\n * | | | | |\n * | | set authorized to true | |\n * | | | | |\n * | | | | |\n * | Defi.deposit(Token, 1000) | | |\n * |----------------->| | | |\n * | | deposit(Token, 1000) | |\n * | |-------------------------------------------------------------->|\n * | | | | |\n * | | | transfer(Alice, Defi, 1000) |\n * | | | |<---------------------|\n * | | | | |\n * | | | Check if Defi may call transfer(Alice, Defi, 1000)\n * | | |<------------------| |\n * | | | | |\n * | | throw if invalid AuthWit | |\n * | | | | |\n * | | | | |\n * | | set authorized to false | |\n * | | | | |\n * | | | | |\n * | | | AuthWit validity | |\n * | | |------------------>| |\n * | | | | |\n * | | | | transfer(Alice, Defi, 1000)\n * | | | |<-------------------->|\n * | | | | |\n * | | | | success |\n * | | | |--------------------->|\n * | | | | |\n * | | | | deposit(Token, 1000)\n * | | | | |\n *\n *\n * --- FAQ ---\n * Q: Why are we using a success flag of `poseidon2_hash_bytes(\"IS_VALID()\")` instead of just returning a boolean?\n * A: We want to make sure that we don't accidentally return `true` if there is a collision in the function selector.\n * By returning a hash of `IS_VALID()`, it becomes very unlikely that there is both a collision and we return\n * a success flag.\n *\n * Q: Why are we using static calls?\n * A: We are using static calls to ensure that the account contract cannot re-enter. If it was a normal call, it\n * could make a new call and do a re-entry attack. Using a static ensures that it cannot update any state.\n *\n * Q: Would it not be cheaper to use a nullifier instead of updating state in public?\n * A: At a quick glance, a public state update + nullifier is 96 bytes, but two state updates are 128, so it would be\n * cheaper to use a nullifier, if this is the way it would always be done. However, if both the approval and the\n * consumption is done in the same transaction, then we will be able to squash the updates (only final tx state diff is posted to DA), and now it is cheaper.\n *\n * Q: Why is the chain id and the version part of the message hash?\n * A: The chain id and the version is part of the message hash to ensure that the message is only valid on a specific\n * chain to avoid a case where the same message could be used across multiple chains.\n */\n\nglobal IS_VALID_SELECTOR: Field = 0x47dacd73; // 4 last bytes of poseidon2_hash_bytes(\"IS_VALID()\")\n\n/**\n * Assert that `on_behalf_of` has authorized the current call with a valid authentication witness\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit\npub fn assert_current_call_valid_authwit(context: &mut PrivateContext, on_behalf_of: AztecAddress) {\n let inner_hash = compute_inner_authwit_hash([\n context.msg_sender().to_field(),\n context.selector().to_field(),\n context.args_hash,\n ]);\n assert_inner_hash_valid_authwit(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit\n\n/**\n * Assert that a specific `inner_hash` is valid for the `on_behalf_of` address\n *\n * Used as an internal function for `assert_current_call_valid_authwit` and can be used as a standalone function when\n * the `inner_hash` is from a different source, e.g., say a block of text etc.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n * @param inner_hash The hash of the message to authorize\n */\npub fn assert_inner_hash_valid_authwit(\n context: &mut PrivateContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n // We perform a static call here and not a standard one to ensure that the account contract cannot re-enter.\n let result: Field = context\n .static_call_private_function(\n on_behalf_of,\n comptime { FunctionSelector::from_signature(\"verify_private_authwit(Field)\") },\n [inner_hash],\n )\n .unpack_into();\n assert(result == IS_VALID_SELECTOR, \"Message not authorized by account\");\n // Compute the nullifier, similar computation to the outer hash, but without the chain_id and version.\n // Those should already be handled in the verification, so we just need something to nullify, that allows the same inner_hash for multiple actors.\n let nullifier = compute_authwit_nullifier(on_behalf_of, inner_hash);\n context.push_nullifier(nullifier);\n}\n\n/**\n * Assert that `on_behalf_of` has authorized the current call in the authentication registry\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that has allegedly authorized the current call\n */\n// docs:start:assert_current_call_valid_authwit_public\npub unconstrained fn assert_current_call_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n) {\n let inner_hash = compute_inner_authwit_hash([\n (*context).msg_sender().to_field(),\n (*context).selector().to_field(),\n (*context).get_args_hash(),\n ]);\n assert_inner_hash_valid_authwit_public(context, on_behalf_of, inner_hash);\n}\n// docs:end:assert_current_call_valid_authwit_public\n\n/**\n * Assert that `on_behalf_of` has authorized a specific `inner_hash` in the authentication registry\n *\n * Compute the `inner_hash` using the `msg_sender`, `selector` and `args_hash` and then make a call out to the\n * `on_behalf_of` contract to verify that the `inner_hash` is valid.\n *\n * Note that the authentication registry will take the `msg_sender` into account as the consumer, so this will only\n * work if the `msg_sender` is the same as the `consumer` when the `message_hash` was inserted into the registry.\n *\n * @param on_behalf_of The address that has allegedly authorized the `inner_hash`\n */\npub unconstrained fn assert_inner_hash_valid_authwit_public(\n context: &mut PublicContext,\n on_behalf_of: AztecAddress,\n inner_hash: Field,\n) {\n let results: [Field] = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"consume((Field),Field)\") },\n [on_behalf_of.to_field(), inner_hash].as_slice(),\n GasOpts::default(),\n );\n assert(results.len() == 1, \"Invalid response from registry\");\n assert(results[0] == IS_VALID_SELECTOR, \"Message not authorized by account\");\n}\n\n/**\n * Compute the `message_hash` from a function call to be used by an authentication witness\n *\n * Useful for when you need a non-account contract to approve during execution. For example if you need a contract\n * to make a call to nested contract, e.g., contract A wants to exit token T to L1 using bridge B, so it needs to allow\n * B to transfer T on its behalf.\n *\n * @param caller The address of the contract that is calling the function, in the example above, this would be B\n * @param consumer The address of the contract that is consuming the message, in the example above, this would be T\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param selector The function selector of the function that is being called\n * @param args The arguments of the function that is being called\n */\n// docs:start:compute_authwit_message_hash_from_call\npub fn compute_authwit_message_hash_from_call<let N: u32>(\n caller: AztecAddress,\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n selector: FunctionSelector,\n args: [Field; N],\n) -> Field {\n let args_hash = hash_args_array(args);\n let inner_hash =\n compute_inner_authwit_hash([caller.to_field(), selector.to_field(), args_hash]);\n compute_authwit_message_hash(consumer, chain_id, version, inner_hash)\n}\n// docs:end:compute_authwit_message_hash_from_call\n\n/**\n * Computes the `inner_hash` of the authentication witness\n *\n * This is used internally, but also useful in cases where you want to compute the `inner_hash` for a specific message\n * that is not necessarily a call, but just some \"bytes\" or text.\n *\n * @param args The arguments to hash\n */\npub fn compute_inner_authwit_hash<let N: u32>(args: [Field; N]) -> Field {\n poseidon2_hash_with_separator(args, GENERATOR_INDEX__AUTHWIT_INNER)\n}\n\n/**\n * Computes the `authwit_nullifier` for a specific `on_behalf_of` and `inner_hash`\n *\n * Using the `on_behalf_of` and the `inner_hash` to ensure that the nullifier is siloed for a specific `on_behalf_of`.\n *\n * @param on_behalf_of The address that has authorized the `inner_hash`\n * @param inner_hash The hash of the message to authorize\n */\npub fn compute_authwit_nullifier(on_behalf_of: AztecAddress, inner_hash: Field) -> Field {\n poseidon2_hash_with_separator(\n [on_behalf_of.to_field(), inner_hash],\n GENERATOR_INDEX__AUTHWIT_NULLIFIER,\n )\n}\n\n/**\n * Computes the `message_hash` for the authentication witness\n *\n * @param consumer The address of the contract that is consuming the message\n * @param chain_id The chain id of the chain that the message is being consumed on\n * @param version The version of the chain that the message is being consumed on\n * @param inner_hash The hash of the \"inner\" message that is being consumed\n */\npub fn compute_authwit_message_hash(\n consumer: AztecAddress,\n chain_id: Field,\n version: Field,\n inner_hash: Field,\n) -> Field {\n poseidon2_hash_with_separator(\n [consumer.to_field(), chain_id, version, inner_hash],\n GENERATOR_INDEX__AUTHWIT_OUTER,\n )\n}\n\n/**\n * Helper function to set the authorization status of a message hash\n *\n * Wraps a public call to the authentication registry to set the authorization status of a `message_hash`\n *\n * @param message_hash The hash of the message to authorize\n * @param authorize True if the message should be authorized, false if it should be revoked\n */\npub unconstrained fn set_authorized(\n context: &mut PublicContext,\n message_hash: Field,\n authorize: bool,\n) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_authorized(Field,bool)\") },\n [message_hash, authorize as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n\n/**\n * Helper function to reject all authwits\n *\n * Wraps a public call to the authentication registry to set the `reject_all` flag\n *\n * @param reject True if all authwits should be rejected, false otherwise\n */\npub unconstrained fn set_reject_all(context: &mut PublicContext, reject: bool) {\n let res = context.call_public_function(\n CANONICAL_AUTH_REGISTRY_ADDRESS,\n comptime { FunctionSelector::from_signature(\"set_reject_all(bool)\") },\n [context.this_address().to_field(), reject as Field].as_slice(),\n GasOpts::default(),\n );\n assert(res.len() == 0);\n}\n"
|
|
5809
5804
|
},
|
|
5810
|
-
"
|
|
5805
|
+
"397": {
|
|
5811
5806
|
"path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_k_account_contract/src/main.nr",
|
|
5812
|
-
"source": "// Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum.\n// The signing key is stored in an immutable private note and should be different from the signing key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaKAccount {\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n
|
|
5807
|
+
"source": "// Account contract that uses ECDSA signatures for authentication on the same curve as Ethereum.\n// The signing key is stored in an immutable private note and should be different from the signing key.\nuse dep::aztec::macros::aztec;\n\n#[aztec]\ncontract EcdsaKAccount {\n use dep::aztec::{\n encrypted_logs::encrypted_note_emission::encode_and_encrypt_note,\n macros::{functions::{initializer, noinitcheck, private, view}, storage::storage},\n };\n use dep::aztec::prelude::{PrivateContext, PrivateImmutable};\n\n use dep::authwit::{\n account::AccountActions,\n auth_witness::get_auth_witness,\n entrypoint::{app::AppPayload, fee::FeePayload},\n };\n\n use dep::ecdsa_public_key_note::EcdsaPublicKeyNote;\n\n #[storage]\n struct Storage<Context> {\n public_key: PrivateImmutable<EcdsaPublicKeyNote, Context>,\n }\n\n // Creates a new account out of an ECDSA public key to use for signature verification\n #[private]\n #[initializer]\n fn constructor(signing_pub_key_x: [u8; 32], signing_pub_key_y: [u8; 32]) {\n let this = context.this_address();\n let mut pub_key_note = EcdsaPublicKeyNote::new(signing_pub_key_x, signing_pub_key_y, this);\n\n storage.public_key.initialize(&mut pub_key_note).emit(encode_and_encrypt_note(\n &mut context,\n this,\n this,\n ));\n }\n\n // Note: If you globally change the entrypoint signature don't forget to update account_entrypoint.ts\n #[private]\n fn entrypoint(app_payload: AppPayload, fee_payload: FeePayload, cancellable: bool) {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.entrypoint(app_payload, fee_payload, cancellable);\n }\n\n #[private]\n #[noinitcheck]\n #[view]\n fn verify_private_authwit(inner_hash: Field) -> Field {\n let actions = AccountActions::init(&mut context, is_valid_impl);\n actions.verify_private_authwit(inner_hash)\n }\n\n #[contract_library_method]\n fn is_valid_impl(context: &mut PrivateContext, outer_hash: Field) -> bool {\n // Load public key from storage\n let storage = Storage::init(context);\n let public_key = storage.public_key.get_note();\n\n // Load auth witness\n let witness: [Field; 64] = unsafe { get_auth_witness(outer_hash) };\n let mut signature: [u8; 64] = [0; 64];\n for i in 0..64 {\n signature[i] = witness[i] as u8;\n }\n\n // Verify payload signature using Ethereum's signing scheme\n // Note that noir expects the hash of the message/challenge as input to the ECDSA verification.\n let outer_hash_bytes: [u8; 32] = outer_hash.to_be_bytes();\n let hashed_message: [u8; 32] = std::hash::sha256(outer_hash_bytes);\n std::ecdsa_secp256k1::verify_signature(\n public_key.x,\n public_key.y,\n signature,\n hashed_message,\n )\n }\n}\n\n"
|
|
5813
5808
|
},
|
|
5814
|
-
"
|
|
5809
|
+
"398": {
|
|
5815
5810
|
"path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr",
|
|
5816
5811
|
"source": "use dep::aztec::prelude::{NoteHeader, NoteInterface, NullifiableNote, PrivateContext};\n\nuse dep::aztec::{\n note::utils::compute_note_hash_for_nullify, keys::getters::{get_nsk_app, get_public_keys},\n protocol_types::{address::AztecAddress, constants::GENERATOR_INDEX__NOTE_NULLIFIER, hash::poseidon2_hash_with_separator},\n macros::notes::note_custom_interface, generators::Ga1 as Gx_1, generators::Ga2 as Gx_2,\n generators::Ga3 as Gy_1, generators::Ga4 as Gy_2, generators::Ga5 as G_owner, generators::G_slot\n};\n\nuse std::hash::from_field_unsafe;\n\nglobal ECDSA_PUBLIC_KEY_NOTE_LEN: u32 = 5;\n\n// Stores an ECDSA public key composed of two 32-byte elements\n// TODO: Do we need to include a nonce, in case we want to read/nullify/recreate with the same pubkey value?\n#[note_custom_interface]\npub struct EcdsaPublicKeyNote {\n x: [u8; 32],\n y: [u8; 32],\n owner: AztecAddress,\n}\n\nimpl NoteInterface<ECDSA_PUBLIC_KEY_NOTE_LEN> for EcdsaPublicKeyNote {\n // Cannot use the automatic serialization since x and y don't fit. Serialize the note as 5 fields where:\n // [0] = x[0..31] (upper bound excluded)\n // [1] = x[31]\n // [2] = y[0..31]\n // [3] = y[31]\n // [4] = owner\n fn serialize_content(self) -> [Field; ECDSA_PUBLIC_KEY_NOTE_LEN] {\n let mut x: Field = 0;\n let mut y: Field = 0;\n let mut mul: Field = 1;\n\n for i in 1..32 {\n let byte_x: Field = self.x[31 - i] as Field;\n x = x + (byte_x * mul);\n let byte_y: Field = self.y[31 - i] as Field;\n y = y + (byte_y * mul);\n mul *= 256;\n }\n\n let last_x = self.x[31] as Field;\n let last_y = self.y[31] as Field;\n\n [x, last_x, y, last_y, self.owner.to_field()]\n }\n\n // Cannot use the automatic deserialization for the aforementioned reasons\n fn deserialize_content(serialized_note: [Field; ECDSA_PUBLIC_KEY_NOTE_LEN]) -> EcdsaPublicKeyNote {\n let mut x: [u8; 32] = [0; 32];\n let mut y: [u8; 32] = [0; 32];\n\n let part_x:[u8; 32] = serialized_note[0].to_be_bytes();\n for i in 0..31 {\n x[i] = part_x[i + 1];\n }\n x[31] = serialized_note[1].to_be_bytes::<32>()[31];\n\n let part_y:[u8; 32] = serialized_note[2].to_be_bytes();\n for i in 0..31 {\n y[i] = part_y[i + 1];\n }\n y[31] = serialized_note[3].to_be_bytes::<32>()[31];\n\n EcdsaPublicKeyNote { x, y, owner: AztecAddress::from_field(serialized_note[4]), header: NoteHeader::empty() }\n }\n\n fn to_be_bytes(self, storage_slot: Field) -> [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] {\n let serialized_note = self.serialize_content();\n\n let mut buffer: [u8; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64] = [0; ECDSA_PUBLIC_KEY_NOTE_LEN * 32 + 64];\n\n let storage_slot_bytes: [u8; 32] = storage_slot.to_be_bytes();\n let note_type_id_bytes: [u8; 32] = EcdsaPublicKeyNote::get_note_type_id().to_be_bytes();\n\n for i in 0..32 {\n buffer[i] = storage_slot_bytes[i];\n buffer[32 + i] = note_type_id_bytes[i];\n }\n\n for i in 0..serialized_note.len() {\n let bytes: [u8; 32] = serialized_note[i].to_be_bytes();\n for j in 0..32 {\n buffer[64 + i * 32 + j] = bytes[j];\n }\n }\n buffer\n }\n\n fn get_note_type_id() -> Field {\n comptime\n {\n let bytes = \"EcdsaPublicKeyNote\".as_bytes();\n let hash = aztec::protocol_types::hash::poseidon2_hash_bytes(bytes);\n let hash_bytes = hash.to_be_bytes::<4>();\n aztec::protocol_types::utils::field::field_from_bytes(hash_bytes, true)\n }\n }\n\n fn get_header(self) -> NoteHeader {\n self.header\n }\n\n fn set_header(&mut self, header: NoteHeader) {\n self.header = header;\n }\n\n fn compute_note_hash(self) -> Field {\n let serialized = self.serialize_content();\n std::embedded_curve_ops::multi_scalar_mul(\n [Gx_1, Gx_2, Gy_1, Gy_2, G_owner, G_slot],\n [\n from_field_unsafe(serialized[0]),\n from_field_unsafe(serialized[1]),\n from_field_unsafe(serialized[2]),\n from_field_unsafe(serialized[3]),\n from_field_unsafe(serialized[4]),\n from_field_unsafe(self.get_header().storage_slot)\n ]\n ).x\n }\n}\n\nimpl NullifiableNote for EcdsaPublicKeyNote {\n\n fn compute_nullifier(self, context: &mut PrivateContext, note_hash_for_nullify: Field) -> Field {\n let owner_npk_m_hash = get_public_keys(self.owner).npk_m.hash();\n let secret = context.request_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n\n unconstrained fn compute_nullifier_without_context(self) -> Field {\n let note_hash_for_nullify = compute_note_hash_for_nullify(self);\n let owner_npk_m_hash = get_public_keys(self.owner).npk_m.hash();\n let secret = get_nsk_app(owner_npk_m_hash);\n poseidon2_hash_with_separator(\n [\n note_hash_for_nullify,\n secret\n ],\n GENERATOR_INDEX__NOTE_NULLIFIER as Field\n )\n }\n}\n\nimpl EcdsaPublicKeyNote {\n pub fn new(x: [u8; 32], y: [u8; 32], owner: AztecAddress) -> Self {\n EcdsaPublicKeyNote { x, y, owner, header: NoteHeader::empty() }\n }\n}\n"
|
|
5817
5812
|
}
|