@aztec/accounts 0.67.0 → 0.67.1-devnet

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,28 +1,8 @@
1
1
  {
2
2
  "transpiled": true,
3
- "noir_version": "1.0.0-beta.0+b3f4ad661c8c6f88544d714fd5b7b6f58a8ce4ad-x8664",
3
+ "noir_version": "1.0.0-beta.0+4184522b3ac6c4ce82aadf4911289cdf9fb0dd79-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
6
  {
27
7
  "name": "compute_note_hash_and_optionally_a_nullifier",
28
8
  "is_unconstrained": true,
@@ -123,12 +103,32 @@
123
103
  "visibility": "public"
124
104
  }
125
105
  },
126
- "bytecode": "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",
127
- "debug_symbols": "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",
106
+ "bytecode": "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",
107
+ "debug_symbols": "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",
128
108
  "brillig_names": [
129
109
  "compute_note_hash_and_optionally_a_nullifier"
130
110
  ]
131
111
  },
112
+ {
113
+ "name": "sync_notes",
114
+ "is_unconstrained": true,
115
+ "custom_attributes": [],
116
+ "abi": {
117
+ "error_types": {
118
+ "17843811134343075018": {
119
+ "error_kind": "string",
120
+ "string": "Stack too deep"
121
+ }
122
+ },
123
+ "parameters": [],
124
+ "return_type": null
125
+ },
126
+ "bytecode": "H4sIAAAAAAAA/9VUyw6CMBBseURBOaiJ3kz8gyIYOJJ49x8akKMe8OKNT5eabbqpVRKlJkzSbEs3szNlW0oUKESPvAH9tGnIFdhBDCA6aN/tRgFr9hviQKs7JH/O0iQw+BtQ/5OfWtIvIPktnT+bAM+xVfzYi6w77UaIesKWZ/nPbHpe9fhc/MFnh32k1caghm+uIYci3RuYR4Y8iRlRd9prh/eV5YzJei7w++RVO67va/lrWIeafvmOFV/qrDMe1wmv+YFXVVrypcYv4KBzGnMvbGHe1wvY45yo3mjul/J0vZ0b0gNB8gCVxsvQjgYAAA==",
127
+ "debug_symbols": "ndLBCoQgFAXQf3nrFmla2a/EEFYWgmiYDQzRv49FMzRDG908vOJ5bu4KvWiXsZF6MDNU9QrKdNxJo31atwRaK5WSY3O9hnQfCB3v54nrPc6OWwcVzrIEhO79iSDvB6kEVCTF2yMBhMNJFk5IOKHBBN/+wghip2GE5F+EaHogGoPyGFTEoDICZbc9YDQtP4ji4hdtPj65lbxV4uzZsOjuUjv3msRfAydrOtEvVuxdvNTQzxoVCcZ+rV/9Bg==",
128
+ "brillig_names": [
129
+ "sync_notes"
130
+ ]
131
+ },
132
132
  {
133
133
  "name": "verify_private_authwit",
134
134
  "is_unconstrained": false,
@@ -290,7 +290,7 @@
290
290
  }
291
291
  },
292
292
  {
293
- "name": "txs_effects_hash",
293
+ "name": "blobs_hash",
294
294
  "type": {
295
295
  "kind": "field"
296
296
  }
@@ -621,6 +621,27 @@
621
621
  "kind": "struct",
622
622
  "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
623
623
  }
624
+ },
625
+ {
626
+ "name": "max_priority_fees_per_gas",
627
+ "type": {
628
+ "fields": [
629
+ {
630
+ "name": "fee_per_da_gas",
631
+ "type": {
632
+ "kind": "field"
633
+ }
634
+ },
635
+ {
636
+ "name": "fee_per_l2_gas",
637
+ "type": {
638
+ "kind": "field"
639
+ }
640
+ }
641
+ ],
642
+ "kind": "struct",
643
+ "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
644
+ }
624
645
  }
625
646
  ],
626
647
  "kind": "struct",
@@ -1389,7 +1410,7 @@
1389
1410
  }
1390
1411
  },
1391
1412
  {
1392
- "name": "txs_effects_hash",
1413
+ "name": "blobs_hash",
1393
1414
  "type": {
1394
1415
  "kind": "field"
1395
1416
  }
@@ -1720,6 +1741,27 @@
1720
1741
  "kind": "struct",
1721
1742
  "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
1722
1743
  }
1744
+ },
1745
+ {
1746
+ "name": "max_priority_fees_per_gas",
1747
+ "type": {
1748
+ "fields": [
1749
+ {
1750
+ "name": "fee_per_da_gas",
1751
+ "type": {
1752
+ "kind": "field"
1753
+ }
1754
+ },
1755
+ {
1756
+ "name": "fee_per_l2_gas",
1757
+ "type": {
1758
+ "kind": "field"
1759
+ }
1760
+ }
1761
+ ],
1762
+ "kind": "struct",
1763
+ "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
1764
+ }
1723
1765
  }
1724
1766
  ],
1725
1767
  "kind": "struct",
@@ -1738,8 +1780,8 @@
1738
1780
  "visibility": "databus"
1739
1781
  }
1740
1782
  },
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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",
1783
+ "bytecode": "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",
1784
+ "debug_symbols": "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",
1743
1785
  "brillig_names": [
1744
1786
  "get_note_internal",
1745
1787
  "decompose_hint",
@@ -1751,8 +1793,8 @@
1751
1793
  "directive_integer_quotient",
1752
1794
  "directive_to_radix"
1753
1795
  ],
1754
- "verification_key": "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",
1755
- "artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-ea7f8c857358e3ae7e35547db539287f-client-ivc-true"
1796
+ "verification_key": "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",
1797
+ "artifact_hash": "e7552d296af009c9ed2e2ca261de6124cad0b1c1-dd38a381b25b33ff54a63a2b254cd73e-client-ivc-true"
1756
1798
  },
1757
1799
  {
1758
1800
  "name": "constructor",
@@ -1783,10 +1825,6 @@
1783
1825
  "error_kind": "string",
1784
1826
  "string": "Initializer address is not the contract deployer"
1785
1827
  },
1786
- "2429784973622283587": {
1787
- "error_kind": "string",
1788
- "string": "Can only emit a note log for an existing note."
1789
- },
1790
1828
  "2709101749560550278": {
1791
1829
  "error_kind": "string",
1792
1830
  "string": "Cannot serialize point at infinity as bytes."
@@ -1928,7 +1966,7 @@
1928
1966
  }
1929
1967
  },
1930
1968
  {
1931
- "name": "txs_effects_hash",
1969
+ "name": "blobs_hash",
1932
1970
  "type": {
1933
1971
  "kind": "field"
1934
1972
  }
@@ -2259,6 +2297,27 @@
2259
2297
  "kind": "struct",
2260
2298
  "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
2261
2299
  }
2300
+ },
2301
+ {
2302
+ "name": "max_priority_fees_per_gas",
2303
+ "type": {
2304
+ "fields": [
2305
+ {
2306
+ "name": "fee_per_da_gas",
2307
+ "type": {
2308
+ "kind": "field"
2309
+ }
2310
+ },
2311
+ {
2312
+ "name": "fee_per_l2_gas",
2313
+ "type": {
2314
+ "kind": "field"
2315
+ }
2316
+ }
2317
+ ],
2318
+ "kind": "struct",
2319
+ "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
2320
+ }
2262
2321
  }
2263
2322
  ],
2264
2323
  "kind": "struct",
@@ -3046,7 +3105,7 @@
3046
3105
  }
3047
3106
  },
3048
3107
  {
3049
- "name": "txs_effects_hash",
3108
+ "name": "blobs_hash",
3050
3109
  "type": {
3051
3110
  "kind": "field"
3052
3111
  }
@@ -3377,6 +3436,27 @@
3377
3436
  "kind": "struct",
3378
3437
  "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
3379
3438
  }
3439
+ },
3440
+ {
3441
+ "name": "max_priority_fees_per_gas",
3442
+ "type": {
3443
+ "fields": [
3444
+ {
3445
+ "name": "fee_per_da_gas",
3446
+ "type": {
3447
+ "kind": "field"
3448
+ }
3449
+ },
3450
+ {
3451
+ "name": "fee_per_l2_gas",
3452
+ "type": {
3453
+ "kind": "field"
3454
+ }
3455
+ }
3456
+ ],
3457
+ "kind": "struct",
3458
+ "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
3459
+ }
3380
3460
  }
3381
3461
  ],
3382
3462
  "kind": "struct",
@@ -3395,8 +3475,8 @@
3395
3475
  "visibility": "databus"
3396
3476
  }
3397
3477
  },
3398
- "bytecode": "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",
3399
- "debug_symbols": "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",
3478
+ "bytecode": "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NRADqoEdgKTfsRVPcdFdH4l5J+HTZ++waaDVQG9gDpGNd2fh9SC+7Mwwhe3MPH0i+LIzgxoATt1qZyAPdxGuBgjrLgw83JVJDewaxmpzMvaY/l3e3VoxBrwbw2TcX/hkTLj7M0zGplgRjYFibQHOAbDhQOttc8O6TBt2QCvGgAcwbNjdhW9Ywr17hDbs7sI3LLrehQutvBTwftsewPzZbFJ7tOJpUnu2Ygx4T4YmtZfwJkW497LUpJzyrn+ayV4MMn8XYI2Q9d5buMynRrc3g7zaR7isJMz7MODel0lW7mu4XYvOCXfNEHt8b4ZbM8gBZ29g7xgYgT00kGEPDWLaQ4MMD2rRORkIVqRVhljp19vD3+yn/779tR2gLa0toy2rLactry3QdqC2g7QdrO0QbYdqO0zb4doGaxui7QhtR2o7StvR2o7Rdqy247QN1TZM2/HaTtB2oraTtA3XdrK2U7SN0DZS26naTtN2urZR2kZrG6PtDG1jtY3Tdqa2s7Sdre0cbedqG6/tPG0TtE3Udr62C7RdqO0ibRdru0TbpdomaZus7TJtl2u7QtuV2q7SdrW2a7Rdq+06bddru0Hbjdpu0naztlu03aptirbbtN2u7Q5td2q7S9vd2u7Rdq+2qdqmabtP2/3aHtD2oLaHtD2s7RFt07XN0Paotse0Pa7tCW1PantK29PaZmp7Rtuz2p7T9ry2F7S9qO0lbS9re0Xbq9pe0/a6tje0vantLW1va3tH27va3tP2vrYPtH2o7SNtH2v7RNun2j7TNkvb59q+0Paltq+0fa3tG23favtO22xt32v7QduP2n7S9rO2X7T9qm2OtrnaftP2u7Z52uZr+0Pbn9r+0rZA29/aKlprXmproa2ltkptVdqqtdVoq9VWp62Vttba2mhrq62dtnptDdraa+ugbXltHbWtoG1FbStpW1nbKtpW1baattW1raFtTW1raeukbW1tnbWto21dbetp66JtfW0baNtQ20baNta2ibZNtW2mras2R5vS5mrztMW0xbUltPnaktpS2jbXtoW2LbVtpa2btu7attbWQ1tPbdto21bbdtp6aeutrY+27bX11dZP2w7adtS2k7adte2ibVdtu2nrr22Att217aFtT217adtb2z7a9tU2UNsgbftp21/bAdrS2jLastpy2vLaAm0HajtI28HaDtF2qLbD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S95JlrxzLHltLHlFlrzulrxSS95oS950S96jlrwFlrzFlryPLHlrLHk/WPL+tuTVT42et68l7yhLXrYlr5kl7xJL3rWWvC6WvDsseSPdPNM8ONbyu2lunmn83WXJu9eSd78lb5Yl7zFL3pOWvLmWvGcteQsseS9b8l615L1uyVtsyXvbkveuJe8DS99+avGJlZa8VZY6G6RFz2uUFr3OJMvvUiy/S7P8bm9L3r6WOve3/K6J5XcHWX53qCXvcEudR1p+d7Tld8dafneCJS9sqTPD8rtMy++yLb/Ls+SdbKnzVMvvTrf87gzL75pZ8s621HmO5XfnWn53vuV3F1nyWlnqvNTyu9aW37W1/K69Je9KS51XW353reV3BZbfDbf87kU3z6QHf7PUWTM9el6qJe8QS17YkneaJe98S157S951lrybLXkDLXnjLXn3WfJmW/JesOQtteR9Zslbb8n7yZJXY6/oeY0teU0secdZ8k6y5J1jyWtjySuy5HW35PV380zjaLDld2PcPGNcbMmbZMmbYsm715J3vyVvpiXvEUve45a82Za8Zy15Cyx5Cy15L1jyXrHkvWbJe9PSt+9afOIDS97Hljr/tOTtiJLn3uLaub5fbe6t3F3PUKuly2oZZFP3/+HqbU4dVC91/bnhrMw6ofIbMf9InVDZcxtc9vHqZKg/7C6xCZ1VWla/3ha1NXD/jx572PUbtQQkGf0G1xFy69B/6+Vzti83nJnp1Z/AUL963XQDr42lu9vPy0soLX9snJeI8jyOyp77afbh8C9sHx7/cna+RzOaT6l2HoHsoftNnGYDJo5OnHa8kHYsnXddxj5RhOK043l8dPt4afUsmHvpLdShuMdZXbv06J5f2KNll5t65HcpLMZNwNU2NjQRm8BURi+nl29gyPdo1kP7a5WGyjVt51+0zxsW3jCpjctreXVQXkJpeV513f8noOPgujweiVp5L37xToc10W+83zc2HL+mdvxyvA37sAvpdcUb9nnl1WrZJm5a2dU7zSWUltVH5ZI5ueGwx8+zfWKovHuGtOMnauWPdf9fV2uvN+013UOeJTn5TkkkvyQ/K7+oKLMwP1mrH9tM2elgNy1b1mRmx2SNfaOSNQ1QObU1Q/XFaXnNDceSLW/CGSkG/iaZEm8op49x/RSmn+JCUeownUvqhHbvt6Z71mZH36G309Y2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",
3479
+ "debug_symbols": "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",
3400
3480
  "brillig_names": [
3401
3481
  "get_contract_instance_internal",
3402
3482
  "decompose_hint",
@@ -3414,8 +3494,8 @@
3414
3494
  "directive_invert",
3415
3495
  "directive_to_radix"
3416
3496
  ],
3417
- "verification_key": "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",
3418
- "artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-1c757b7d1c53b84df9236548d6bbfae9-client-ivc-true"
3497
+ "verification_key": "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",
3498
+ "artifact_hash": "e7552d296af009c9ed2e2ca261de6124cad0b1c1-75564340eaf6aa0d51ac4e5113d29612-client-ivc-true"
3419
3499
  },
3420
3500
  {
3421
3501
  "name": "entrypoint",
@@ -3572,7 +3652,7 @@
3572
3652
  }
3573
3653
  },
3574
3654
  {
3575
- "name": "txs_effects_hash",
3655
+ "name": "blobs_hash",
3576
3656
  "type": {
3577
3657
  "kind": "field"
3578
3658
  }
@@ -3903,6 +3983,27 @@
3903
3983
  "kind": "struct",
3904
3984
  "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
3905
3985
  }
3986
+ },
3987
+ {
3988
+ "name": "max_priority_fees_per_gas",
3989
+ "type": {
3990
+ "fields": [
3991
+ {
3992
+ "name": "fee_per_da_gas",
3993
+ "type": {
3994
+ "kind": "field"
3995
+ }
3996
+ },
3997
+ {
3998
+ "name": "fee_per_l2_gas",
3999
+ "type": {
4000
+ "kind": "field"
4001
+ }
4002
+ }
4003
+ ],
4004
+ "kind": "struct",
4005
+ "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
4006
+ }
3906
4007
  }
3907
4008
  ],
3908
4009
  "kind": "struct",
@@ -4835,7 +4936,7 @@
4835
4936
  }
4836
4937
  },
4837
4938
  {
4838
- "name": "txs_effects_hash",
4939
+ "name": "blobs_hash",
4839
4940
  "type": {
4840
4941
  "kind": "field"
4841
4942
  }
@@ -5166,6 +5267,27 @@
5166
5267
  "kind": "struct",
5167
5268
  "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
5168
5269
  }
5270
+ },
5271
+ {
5272
+ "name": "max_priority_fees_per_gas",
5273
+ "type": {
5274
+ "fields": [
5275
+ {
5276
+ "name": "fee_per_da_gas",
5277
+ "type": {
5278
+ "kind": "field"
5279
+ }
5280
+ },
5281
+ {
5282
+ "name": "fee_per_l2_gas",
5283
+ "type": {
5284
+ "kind": "field"
5285
+ }
5286
+ }
5287
+ ],
5288
+ "kind": "struct",
5289
+ "path": "authwit::aztec::protocol_types::abis::gas_fees::GasFees"
5290
+ }
5169
5291
  }
5170
5292
  ],
5171
5293
  "kind": "struct",
@@ -5184,8 +5306,8 @@
5184
5306
  "visibility": "databus"
5185
5307
  }
5186
5308
  },
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+qkV5KRL3fFWL8lIk7vmqluSlEop7nlDc84TinicU9zwtilJL8lIJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHPE4p7nlDc84TinicU9zyhuOcJxT1PKO55QnHP0xu456LX9KXrQO1aNEyuqaTeP6v9rqCGV9CcK6g5L9dUckmDGWfpOuMs95sZZyi1naT2DXzyd6pNKLUZpVZQavVgaqtc1dqN52nePc+2ar37o23VHs1LPVd7NC/1XO3RvNRTtXY0L/Vc7dG81HO1R/NSz9UezUs9V6sotSgvZSgvZSgvZSgvZSgv1VFeqqO8VEd5qY7yUm/gk79TLcpLdZSX6igv1VFeqpO8VF5IXiovJC+VF5KXygvJS+VFUWpJXiovJC+VF5KXygvJS+UF5aUSyksllJdKKC+VUF7qDXzyd6pFeamE8lIJ5aUSyksllJfKKC+VUV4qo7xURnmpN/DJ36kW5aUyyktllJfKKC+VUV5KUF5KUF5KUF5KUF7qDXzyd6pFeSlBeSlBeSlBeSlBeSlFeSlFeSlFeSlFeak38MnfqRblpRTlpRTlpRTlpRTlpQrKSxWUlyooL1VQXuoNfPJ3qkV5qYLyUgXlpQrKSxWUl6ooL1VRXqoezEs9ZVjnejAvNVCrztU2qZfL13/38lntdwXe/dFYgXfPM1bg3ceMFXj3JmMF3v3GUIF73vdYgXdfMFbgvdaPFXiv32MF4Wuyeyb2WEH4muyeXT1WEL4mu2dMDxW450aPFYSvye75zmMF4Wuyew7zWEH4muyelzxWEL4mu+cajxWEr8nu+cNjBeFrsntO8FhB+Jrsnuc7VhC+Jrvn7o4VhK/J7vm4YwXRa7K459iOFUSvyeKeNztWEL0myxK9Jot71utYQfSaLO6ZrGMF0WuyuGenDhW456GOFYSvye65pWMF4Wuye77oWEH4muyeAzpWEL4mu+d1jhWEr8nuuZpjBeFrsnv+5VhB+JrsnlM5VhC+JrvnSY4VhK/J7rmPYwXha7J7PuNYQfia7J6jOFYQvia75x2OFYSvye65hGMF4Wuye37gWEH4muye8zdWEL4mu+fxjRWEr8nuuXljBeFrsnu+3VhB+JrsnkM3VhC+JrvnxY0VhK/J7rluYwXha7J7/tpYQfia7J6TNlYQvia755mNFYSvye65Y2MF4Wuyez7YWEH4mhye4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5Xhqe46XhOV4anuOl4TleukSvyRqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XuOV415+WaSi7ps4Lby2tf8o+ra08fctsPtd7r97Zqvdf6bdV69wXbqvXuIbZV691vbKrWPc9sW7Xefcy2ap17nmdXfxfg3PKMBWh0Ac5NzFiAc18yFuDcaowFOHcPYwHODcFIQPHORxsLcF62xwJeXolTL9fNeLcyEFBqlx9Xl7bY9erU6g8BEl2ARhfw+kq8aL3M6qWnkXXtSa8f3lPV59Y1ZzG9fHrWJD+fFpU3kNTeLLjRBBtNcIcJfgMF7s2CE01wpgkWmmClCaY5rURzWonmtBLNaaVjOa2a0mV3WJPcys3H8llDucdyWUO5x/JYQ7nHclhDucqSeyx3NZR7LG81lHssZzWUeyxfNZTr3lW1ev35RO+abhSIc6OUF5HrV0mLVBs8MEvXH4BY7teLf3ztJM590sZqndukjdU6d0kbq1WUWuce6ctq67WsmJUbtc4t0sZqnTukjdU6N0gbq3Xuj7ZVq0fzUs/VHs1LPVd7NC/1XO3RvNRztYpSi/JSivJSivJSivJSivJSBeWlCspLFZSXKigv9QYc6zvVorxUQXmpgvJSBeWlCspLVZSXqigvVVFeqqK81Bswuu9Ui/JSFeWlKspLVZSXqigv1VBeqqG8VEN5qYbyUm/AH79TLcpLNZSXaigv1VBeqqG8lKG8lKG8lKG8lKG81Buw1e9Ui/JShvJShvJShvJShvJSHeWlOspLdZSX6igv9QYg9jvVorxUR3mpjvJSHeWlOslL1YXkpepC8lJ1IXmpupC8VF0UpZbkpap3+PnGakleqnrHnm+sFuWlvAPPN1aL8lLeUecbq0V5Ke+Q843VoryUd7z5xmpRXso72HxjtSgv5R1qvrFalJfyjjTfWK2g1CpKLcpLeceZb6wW5aW8w8w3VovyUofjnj9Xi/JSh+OeP1eL8lKH454/V4vyUijueUVxzyuKe15R3POK4p5XFPe8orjnFcU9ryjueUVxzyuKe15R3POK4p5XFPe8orjnFcU9ryjueUVxzyuKe16Pxj3vy/WvD/Z0q/ZgXmqg9mBeaqD2YF5qoPZgXuq52qNxzwdqD+alBmoP5qUGag/mpQZqFaUW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6gleal2NO75QC3JS7Wjcc8Hakleqi2KUkvyUu1o3POBWpKXakfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUijueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3HNDcc8NxT03FPfcUNxzWxSlluSlDMU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPe8o7jnHcU97yjueUdxz/uiKLUkL9VR3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yTueVlI3PNVLchLrWpBXmpVC/JSq1pFqQV5qVUtyEutakFealUL8lKrWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVS/JSCcU9TyjueUJxzxOKe54WRakleamE4p4nFPc8objnCcU9TyjueUJxzxOKe55Q3POE4p4nFPc8objnCcU9TyjueUJxzxOKe55Q3POE4p4nFPc8objnCcU9TyjueUJxzxOKe55Q3POE4p4nFPc8objnCcU9TyjueUJxzxOKe55Q3POE4p4nFPc8objnCcU9TyjueUJxzxOKe57ewD0XvaYvXQdqU+km11RS75/VfldQwytozhXUnJdrKrmkwYyzdJ1xlvvNjDOU2k5S+wY++TvVJpTajFIrKLV6MLVVrmrtxvMU755nW7Xe/dG2ao/mpZ6rPZqXeq72aF7qqdp6NC/1XO3RvNRztUfzUs/VHs1LPVerKLUoL1VRXqqivFRFeamK8lIN5aUayks1lJdqKC/1Bj75O9WivFRDeamG8lIN5aUayksZyksZyksZyksZyku9gU/+TrUoL2UoL2UoL2UoL2UoL9VRXqqjvFRHeamO8lJv4JO/Uy3KS3WUl+ooL9VRXqqTvFReSF4qLyQvlReSl8oLyUvlRVFqSV4qLyQvlReSl8oLyUvlBeWlEspLJZSXSigvlVBe6g188neqRXmphPJSCeWlEspLJZSXyigvlVFeKqO8VEZ5qTfwyd+pFuWlMspLZZSXyigvlVFeSlBeSlBeSlBeSlBe6g188neqRXkpQXkpQXkpQXkpQXkpRXkpRXkpPZiXesqwznowLzVQq87VNqmXy9d/9/JZ7XcF3v3RWIF3zzNW4N3HjBV49yZjBd79xlCBe973WIF3XzBW4L3WjxV4r99jBeFrsnsm9lhB+Jrsnl09VhC+JrtnTA8VuOdGjxWEr8nu+c5jBeFrsnsO81hB+Jrsnpc8VhC+JrvnGo8VhK/J7vnDYwXha7J7TvBYQfia7J7nO1YQvia75+6OFYSvye75uGMF4Wuye47tWEH4muyeNztWEL4mu+fCjhWEr8nu+a1jBeFrsnvO6lhB+Jrsnoc6VhC+Jrvnlo4VhK/J7vmiYwXha7J7DuhYQfia7J7XOVYQvSaLe67mWEH0mizu+ZdjBdFrsizRa7K4Z0+OFUSvyeKeETlWEL0mi3uW41CBez7jWEH4muyeozhWEL4mu+cdjhWEr8nuuYRjBeFrsnt+4FhB+JrsnvM3VhC+Jrvn8Y0VhK/J7rl5YwXha7J7vt1YQfia7J5DN1YQvia758WNFYSvye65bmMF4Wuye/7aWEH4muyekzZWEL4mu+eZjRWEr8nuuWNjBeFrsns+2FhB+JocnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleEp7jJeE5XhKe4yXhOV4SnuMl4TleGp7jpeE5Xhqe46XhOV66RK/JGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl4TleGp7jpeE5Xhqe46XhOV4anuOl7jleNeflmkou6bOC28trX/KPq2tPH3LbD7Xe6/e2ar3X+m3VevcF26r17iG2Vevdb2yq1j3PbFu13n3Mtmqde55nV38X4NzyjAVodAHOTcxYgHNfMhbg3GqMBTh3D2MBzg3BUIB3PtpYgPOyPRbw8kqcerluxruVgYBSu/y4urTFrlen9mPr/no42tYCNLqA11fiRetlVi89jaxrT3r98J6qPreuOYvp5dOzJrk5LXoDSe3NghtNsNEEd5jgN1Dg3iw40QRnmmChCVaaYJrT6jSn1WlOq9OcVj+W06opXXaHNcmN3LIcy2cN5R7LZQ3lHstjDeUey2EN5SpL7rHc1VDusbzVUO6xnNVQ7rF81VCue1fV6vXnE71rulGQnBulvIhcv0papNrggVm6/gDEcr9e3H6ode6TNlbr3CZtrNa5S9pYraLUOvdIX1Zbr2XFrNyodW6RNlbr3CFtrNa5QdpYrXN/tK3afDQv9Vzt0bzUc7VH81LP1R7NSz1Xqyi1KC+VUV4qo7xURnmpjPJSgvJSgvJSgvJSgvJSb8CxvlMtyksJyksJyksJyksJykspykspykspykspyku9AaP7TrUoL6UoL6UoL6UoL6UoL1VQXqqgvFRBeamC8lJvwB+/Uy3KSxWUlyooL1VQXqqgvFRFeamK8lIV5aUqyku9AVv9TrUoL1VRXqqivFRFeamK8lIN5aUayks1lJdqKC/1BiD2O9WivFRDeamG8lIN5aUayksZyksZyksZyksZyku9Hmn+VrUoL+Udfr6xWpSX8o4931gtykt5B55vrBblpbyjzjdWi/JS3iHnG6tFeSnvePON1aK8lHew+cZqSV6qeoeab6yW5KWqd6T5xmpJXqouilJL8lLVO858Y7UkL1W9w8w3VovyUofjnj9Xi/JSh+OeP1eL8lKH454/V4vyUijueUVxzyuKe15R3POK4p5XFPe8orjnFcU9ryjueUVxzyuKe15R3POK4p5XFPe8orjnFcU9ryjueUVxzyuKe16Pxj3vy/WvD/Z0q/ZgXmqg9mBeaqD2YF5qoPZgXuq52qNxzwdqD+alBmoP5qUGag/mpQZqFaUW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqUlzoa93ygFuWljsY9H6hFeamjcc8HalFe6mjc84FalJc6Gvd8oBblpY7GPR+oRXmpo3HPB2pRXupo3POBWpSXOhr3fKAW5aWOxj0fqEV5qaNxzwdqUV7qaNzzgVqSl2pH454P1JK8VDsa93ygluSl2qIotSQv1Y7GPR+oJXmpdjTu+UAtyksdjXs+UIvyUkfjng/UorzU0bjnA7UoL3U07vlALcpLHY17PlCL8lJH454P1KK81NG45wO1KC91NO75QC3KSx2Nez5Qi/JSR+OeD9SivNTRuOcDtSgvdTTu+UAtyksdjXs+UIvyUijueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9byjueUNxzxuKe95Q3POG4p43FPe8objnDcU9NxT33FDcc0Nxzw3FPbdFUWpJXspQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0Nxzw3FPTcU99xQ3HNDcc8NxT03FPfcUNxzQ3HPDcU9NxT33FDcc0NxzzuKe95R3POO4p53FPe8L4pSS/JSHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3POO4p53FPe8o7jnHcU97yjueUdxzzuKe95R3PNO4p7XhcQ9X9WCvNSqFuSlVrUgL7WqVZRakJda1YK81KoW5KVWtSAvtapFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UoL0Xinq9qUV6KxD1f1aK8FIl7vqpFeSkS93xVi/JSJO75qhblpUjc81UtykuRuOerWpSXInHPV7UkL5VQ3POE4p4nFPc8objnaVGUWpKXSijueUJxzxOKe55Q3POE4p4nFPc8objnCcU9TyjueXoD91z0mr50HahN3/609jWV1Ptntd8V1PAKmnMFNeflmkouaTDjLF1nnOV+M+MMpbaT1L6BT/5OtQmlNqPUCkqtHkxtlatau/E82bvn2Vatd3+0rdqjeannao/mpZ6rPZqXeqpWjualnqs9mpd6rvZoXuq52qN5qedqFaUW5aUE5aUE5aUE5aUE5aUU5aUU5aUU5aUU5aXewCd/p1qUl1KUl1KUl1KUl1KUlyooL1VQXqqgvFRBeak38MnfqRblpQrKSxWUlyooL1VQXqqivFRFeamK8lIV5aXewCd/p1qUl6ooL1VRXqqivFRFeamG8lIN5aUayks1lJd6A5/8nWpRXqqhvFRDeamG8lIN5aUM5aUM5aUM5aUM5aXewCd/p1qUlzKUlzKUlzKUlzKUl+ooL9VRXqqjvFRHeak38MnfqRblpTrKS3WUl+ooL9VJXiovJC+VF5KXygvJS+WF5KXyoii1JC+VF5KXygvJS+WF5KXygvJSCeWlEspLJe9eqkm9XL7+u5fPar8r8O6Pxgo0vALvPmaswLs3GSvw7jfGCrx7iLEC775gqMA9l3uswHv9HisIX5PdM7HHCsLXZPfs6rGC8DXZPWN6rCB8TXbPgh4qcM93HisIX5Pdc5jHCsLXZPe85LGC8DXZPdd4rCB8TXbPHx4rCF+T3XOCxwrC12T3PN+xgvA12T13d6wgfE12z8cdKwhfk91zbMcKwtdk97zZsYLwNdk9F3asIHxNds9vHSsIX5Pdc1bHCsLXZPc81LGC8DXZPbd0rCB8TXbPFx0rCF+T3XNAxwrC12T3vM6xgvA12T1Xc6wgfE12z78cKwhfk91zKscKwtdk9zzJsYLwNdk993GsIHxNds9nHCsIX5PdcxTHCsLXZPe8w7GC8DXZPZdwrCB8TXbPDxwrCF+T3XP+xgrC12T3PL6xgvA12T03b6wgfE12z7cbKwhfk91z6MYKwtdk97y4sYLoNVncc93GCqLXZHHPXxsriF6TZYlek8U9+2ysIHpNFveMsrGC6DVZ3LPEhgrc88HGCsLX5PAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/GS8BwvCc/xkvAcLwnP8ZLwHC8Jz/HS8BwvDc/x0vAcLw3P8dIlek3W8BwvDc/x0vAcLw3P8dLwHC8Nz/HS8BwvDc/x0vAcLw3P8dLwHC8Nz/HS8BwvDc/x0vAcLw3P8dLwHC8Nz/HS8BwvDc/x0vAcLw3P8dLwHC8Nz/HS8BwvDc/x0vAcL92E49XzcslpWdJAgZUkP662UpaPq1O6d3XW69W5p8HVUuqPi1fDd70213sD2fLl2tx0cHFqJtdntOTBxcv1k9PSyueLvw+5nEP+6iHXc8hfPeQb2LS8pHIdch0tjXV9LD+urjm1z0vdnY/OYnr57Lwett2ujDW6gBZdgEUX0IML2ILq9l4BKbqAHF2ARBeg0QVEr8QavRKHx7lpeJybxsa5rf/xr3/945/+9Mf/+Jc//eXffv+3P/7lz//1LXj59n/un0K09RuDH5/XVjd+/bjU7iZrl4vl096mpG+Dd/+MYMPPl50/X3f+/LLz59edP7/t/Pm28+f3fT//vgve8PN3fn915/dXd35/def3V3d+f3Xn91d3fn915/dXd35/y87vb9n5/S07v79l5/e37Pz+li+/v9+C6kxQmwmymaA+EVSXmaA0E5RngmQmSGeCZmZEnZkRdWZG1JkZUWdmRJuZEW1mRrSZGdFmZkSbmRFtZka0mRnRZmZEm5kRbWZG2MyMsJkZYTMzwmZmhM3MCHswI6678PWf/SaozgS1mSCbCeoTQX2ZCUozQXkmSGaCdCZoZkb0mRnRZ2ZEn5kR9ztcW10up6HrP+vPQel+V+kwKk1F5akomYrSqagyFVWnotpUlE1FTc2NNDU30tTcSFNzI03NjTQ1N9LU3EhTcyNNzY00NTfS1NzIU3MjT82NPDU38tTcyFNzI0/NjTw1N/LU3Lj/K9hW9PKlSLP291G/PL+6l9t79P3vcf+XpBvfI73gHvkF95AX3EP/8Xtoa5dfo6ktHz9d6+n7Lcr+t6j736Ltfwvb/xYbvOJq6XJ1SZ+mVL/3C8ii+XKt2scHp+/p6OIrneQrnfzidOTjp7DSP/2s9MfkUXGWjzrLpzjLpzrLpznLx5zl033lUxZn+SRn+Thbn4uz9bk4W5+Ls/W5OFufi7P1uThbn4uz9bk6W5/rvuvzr7fI+99C9r/FBgtjyenyC9eSc725Rdn/FnX/W7SNbyFycwvb/xZ991u0ZYtb2Mct+s2zaGn/W+T9b7HB210+2jqLfPoi78ctbItb1H5pVCgt3Txu0/1vUfa/xRYLSCvpeoumN7do+9/C9r9F3/gWln6+RV/2v0Xa/xZbLCCWrpPWij53ROUjnfrpg38c4HXxlY76Sqf4Sqf6Sqf5Ssd8pdM9pZOXxVc6yVc6rlblvLhalfPialXOi6tVOS+uVuW8uFqV87LJqnztiS49y/N01ip5bX3tn7Y+0u17Qt1ZQmnxllDyllD2lpB4S0hfnNDqJy5nGOs/7Tah4i2h6i2h5i0h85ZQd5ZQXrwllLwllL0lJN4S8rZSZ28rdfa2UmdvK3X2tlJnbyu1eFup5fUrtV5hncunj74mlL0lJN4SUm8JFW8JVW8JNW8JmbeEurOEdPGW0Mtf+3TlA67/zLcJvXxSp+sPOdajl3Sb0MsndapX3uLn3ypdE+rOEiqLt4SSt4Syt4TEW0LqLaHyxoTWpfo2oeotoeYtodev1OWjdNTbWla6s4Tq4i2h5C2h7C0h8ZaQekuoeEvo5Sv1uq+4LoxtuU2oeUvIvCXUnSXUFm8JJW8JZW8JibeE1FtCxVtCr1+H+sffO+i3xzH28rdM0uX3TOs/b7dB9vK3TEq/JmS3v/0w8ZaQekuoeEuoekuoeUvIvCXU35iQLrensH3xllDyltAbVuqP0lFua1kXbwmpt4SKt4Sqt4Sat4TMW0LdV0KyLN4SSt4ScrZSy+JspZbF2Uoti7OVWhZnK7Us+67Uv97C9r9F3/0WOzfA/HqLtP8t8v632GJV6nKFT/SSn0/xulxPi+pS9SYfdZZPcZZPdZZPc5aPOcun75rPt1ts0UKypt6uKqz8Q5K36CDZNJ/sLB9xlo86y6c4y6fums+vt2j738L2v0Xf/Ray7H+LtP8tNlmRnk5akf1vofvfoux/i7r/Ldr+t7D9b9F3v4Uu+98i7X+L/d9u3f/t1v3fbt3/7db9327d/+3W/d9u3f/tLvu/3WX/t7vs/3aX/d/usv/bXfZ/u8v+b3fZ/+0u+7/dZf+3u+7/dtf93+66/9td93+76/5vd93/7a77v911/7e77v921/3f7rb/2932f7vb/m932//tbvu/3W3/t7vt/3a3/d/utv/b3fZ/u23/t9v2f7tt/7fb9n+7bf+32/Z/u23/t9v2f7tt/7fb9n+7+/5vd9//7e77v919/7e77/929/3f7r7/2933f7v7/m933/3t1mXZ/xZp/1vk/W8h+99C979F2f8Wdf9btP1vYfvfYv+3O+3/dqf93+60/9ud9n+70/5vd9r/7U77v91p/1fvt/ysrv/dLb5F/ZZfyt2JSlNReSpKpqJ0KqpMRdWpqDYVZVNRU3NDpuaGTM0NmZobMjU3ZGpuyNTckKm5IVNzQ6bmhkzNDZ2aGzo1N3RqbujU3NCpuaFTc0On5oZOzQ2dmhs6NTfK1NwoU3OjTM2NMjU3ytTcKFNzo0zNjTI1N8rU3ChTc6NOzY06NTfq1NyoU3OjTs2NOjU36tTcqFNzo07NjTo1N9rU3GhTc6NNzY02NTfa1NxoU3OjTc2NNjU32tTcaFNzw6bmhk3NDZuaGzY1N2xqbtjU3LCpuWFTc8Om5oZNzY0+NTf61NzoU3OjT82NPjU3+tTc6FNzo0/NjT41N/rM3CjLMhWVpqLyVJRMRelUVJmKqlNRbSrKpqKm5kaamhtpam6kqbmRpuZGmpobaWpupKm5kabmRpqaG1PnomXqXLRMnYuWqXPRMnUuWqbORcvUuWiZOhctU+eiZepctEydi5apc9EydS5aps5Fy284F/30pwfuf92QTC6UjGT68be2Svp+C93/FmX/W9T9b9H2v4Xtf4u++y1+w5HyP3yLtP8t8v632P/t1v3fbt3/7db9327d/+3W/d9u3f/tLvu/3WX/t/v1f8jkObi7vP4PmUi+/jEckeU2oewtIfGWkHpL6PWQwWQfCaXbhKq3hJq3hMxbQt1ZQq//QyajhJK3hF6/Uj/9mw/l9X/IZJSQekuoeEuoekuoeUvIvCXUnSVki7eEnP0xnGLeVmrztlK//k+9PP9z0uX1f+olyXWEktxuFF//p15GCXVnCb3+T72MEnr9HynN+pFQu00oe0tIvCWk3hIq3hKq3hJq3hJ6/UqdPv6ubL7dKL7+T708T6i+/k+9jBJK3hLK3hISbwmpt4SKt4Sqt4Sat4ScrdR18bZS3/+pTFe7fCHRy/JzJ2u9/+sVzde/fq65feSV+j0RutSLCM36+eJf76C736Hsfoe6+x3a7new3e/Q977D/Z+tPLnDr0FpJijPBO0+TXT3aaK7TxPdfZqUZfc7pN3vkHe/g0xM8aIzQV9doP95/Y/07dL7P69Oy/WEMi3y6WcmdmcU2nIpsS3lz5eumd3/HfZ2H1//8Y8XuXy89p8/vm3w8fny8VV+/njb9+P7P/7xdvVavf308fd/VL7dx6d/+OMtX95O059nzv2fqX/x4y++zz79KccfHy//+Me3y6O128HRDT++//Rarf+Rf10a7peRdl3y0seMk3WAH86J5yHp6yH56yHy9RD9Ysj6X/Ltyvtfkq7fe10ezvrPjxHP7dvN7n+P+Tzm/leNg5g0EZMnYmQiRidiykRMnYhpEzET88Am5kGfmAd9Yh70iXnQJ+ZBn5gHfWIe3D+8//s/xth/jmkTMTYR078ek+6fJI+C0jCo6U3Qg6Gzy2+01kPkfBN0V1PN9RqU+03Q/bbGUVCaCcozQfc1FblYg9Wat5+D7lfJUVCaCcozQTITpPeDar0Gmd0ElZmgOhPUZoJsGNTl56D7PW61pmvQOo9ugmQmSGeCykxQnQm6P3rr5LkG1ZuFRWUm6P7Z/mLXvdHSb4Puv7m1X7YktS3Lz0H3zz1GQWkm6P40Mr0OuZWbCXv/wGEUpDNBZSaozgS1mSCbCeoTQfXBc0rXCWv5Zo140KOwXL9Kb0u9KTUP+ggGQW3i1Xjwe/xBUJ8IevC79kFQmgnKM0EyE6QzQWUmaGbdazMzos3MiDYzI2xmRtjMjLCZGWHjde/2JbQ6E9Rmgmwm6MG6d+3Vq325qe73N2m1X88ja9dyE1RmgupMUJsJuj96PdtHUL0J6l8Pyvd3aqOgNBOUZ4JkJkhngh48J/uYe1ZugmxYCVVvgvpE0AOoziAozQTlmSCZCdKZoDIT9KA+aXvsWPIDms5Tm5OTzQT1iaC8zASlmaA8EyQzQToTNOFh832TmDRf+w++/fvnYpPv28Rx2P0vYfSjg3j9t9wsL/cN3DiszIXVubA2F2ZzYX0qzJa5sDQXlh+EXY8pvoXdlCCTuTCdCytzYXUurH09bP0P/XZxffAFbJGPLxmL/vzS1TwVJVNROhVVpqLqVFSbirKpqD4T9WBpLb1finSqS/75eOr+FnwYlaeiZCrq/txYr+wfUXoTVaai7o98XYvSNWo98/kp6sHiWNed3zUqLz+bqgdr4ygqT0XJVNSDkc+qH1Hl56Xqwbo4iqpTUW0qyqai+kxUX6aiHsyNXOwjqt581ZinomQq6tHc+PR+5fZ379cdqtFqWK83yev3c4PLy8eGY/33zVdXvTjMqTrMqTnMyRzm1P3l9OCnAe9OKnlMKntMSt6SlNinpG6++lq2WsyXj6TazfnqUl5yl/qSu7SX3MVecpf+iruk5SV3SS+5y6OVJX0ydfk2TObCdC6szIXVubA2F2ZzYX0qLC9zYWkubG6W5LlZkh/Nkn49aqufETWXsDIXVufC2lyYTYXJg8ct/WMx0JsfkyZJc2EPhkQ/zjqryo0hkAdTubSP7Ve586OnZS4szYXluTCZC9O5sDIXVufC2lzYg6lcrx0u67/lxqFpfxT2MblqSc/r2oYdcQ9+P/fOhJK3hLK3hMRbQuotoeItobpvQv/88GeZG9/DXnCPry+R38LqMheW5sIeDXb7+IKhtpufmT74bqe2jzbBNeqmarRHS1D/KDZtuUmyyVyYzoWVubA6F9bmwmwurE+FPfpCaRT2YE62/HmW3DjQR18pjcJkLkznwh7MklY/dkXNbn58/+hrpVFYmwuzubA+Ffboq6VRWJoLezBLbPkIs3Szcj36dmkUpnNhZS7s0Szpn8NuvPyj71FGYTYX1mfC8qPvC0ZhaS4sz4U9miUf59bVtN2E6VxYmQurc2EPZonlz2F2E2ZzYX0q7NHp7CgszYXluTCZC3s0Sz55LrN0E1bmwupcWJsLezRL6uew3/iD2WHYo/PTUViaC8tzYTIXpnNhj3yJftgZ+/ve0jtfOEizq7OT1m9+EPnouPWLd7Hl+qKI5ZtV+NHp7MZ3sZfcpb/iLo9OmDe+S3rJXfJL7iIvuYtuc5fcPu5y+5tcKdtruXOX+pK7tJfcxV5yl43e/SuedP33zY8+sy4vuUt6yV3yS+4iL7mLvuQu5SV3qS+5y0bvfv30VrabfZDa9lru3KW/4i5lecld0kvustG7368/mZG+3KzJRV5yF33JXcpL7lJfcpf2krvYS+7SX3GXus2735ePt7Knm0OLmrbXcucu+SV3kZfcRV9ylzLzTVyudS6szYXZXFifCpv7cjK3NBeW58JkLkznwuZmSZubJW1ulrS5WdLmZonNzZJH3zI+/1Xdo57eqh+/m69al5uwMhdW58LaXJjNhfWpsEffMo7C0lxYnguTubC5WdLnZkmfmyV9bpb0uVnSp2aJPPgeYsB1kDRFkZD8iA/wFCsgWebCdC6szIXVubA2F2ZzYVMUCZFlLuwRReIpMkEkz4XJXJjOhZW5sAmKxPof5dvF+QFc+EpL+4QWtu9x9de4+9QquexjbPl4cv0J3v1phHw5Qr8cUb4cUb8c0b4cYV+O6F+NuP/+2bU36vOX598IyTeXSr28qOu5+8fk0vR9Nd/10/Ouny5f+vRvEfrliPLliPrliPblCPtyRP9qhC5fjkhfjshfjrj/zK/AOuv9N8+oz2D17zPq/tcQm3162fXT666f3nb9dNv10/uen37/a4XNPj1t9+m3K+j9rxE2+3TZ9dPvvqv92pLVPx0wfF877n8F8DSifjmifTnCvhzRvxpx//j7aUT6asT9M76nEfLliLvPfP1e90fEevb68zS5f6r3PKR+PaR9PcS+HtK/HHL/BO95yN1Hvx5YXkL6zbt4vxvheYh8PUS/HlK+HlK/HtK+GLL+V/t25f1T+N4up6vdPgqCLL+2TN0/gX8ekr8eIl8P0a+HlK+H1K+HtK+H2NdD+pdD7OtP377+9O3rT9++/vTt60/fvv707etP377+9O+f1ffrLzK6tZuQ/uWQvnw9JH09JH89RL4eol8MWf/Lvl35oDvg0/dLrX38fPvXg631v/6/3//1j7//1z/94b/WmG//43//+d/+9se//PnHf/7t///Py//yr3/945/+9Mf/+Jf//Otf/u0P//7ff/3Dv/zpL//27X/73fLj//xTLfZLbf2ff/3rgf9UU/6l5vzP3wg73/4zy/qf9u0/vw19tfU/rXz89dZv1+T2i+TrX22UH/+fdvkIsV9Urn+c8NcArb+sZfdyx/pLq5eLc7Zfssjlft+INlnzlQn76+ep/CJVf0SvI1z69VZL/kWWdomWamsey/UI8fsd5JdVz//+OB38LrL8sl71I2j9Ir3na336dotv42OXW/T6S1rSx+P79v9L5Ze83uV/12fz/wA=",
5309
+ "bytecode": "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",
5310
+ "debug_symbols": "7b3djuzIca59LzqeA2ZGZGaEb8UwDFnWNgQIkiHJH/DB2Pe+uWatru6Z+kk1h10VwYcnxhqLWcw3+RMPWRVP/+/v/vOP//E///Xvf/rL//nr33/3L//6v7/781//8Pt//Omvf1n/639/J/Lz/+/v//37v3z7z7//4/d/+8fv/qV0X3763R//8p/rP8ey/N+ffvd//vTnP/7uX3Sp//enq62rif3Yulp/37q0fmNracV/bC3N62Tr0rXI21S61n7Zvpre2l4un15E7H3rmx++1P628TLax43/7affiZ5Lc29p2rk095amn0tzb2nGuTT3lsbOpbm3NH4uzZ2l0eVcmntLU86lubc09Vyae0tz0vDdpdFzae4tzUnDd5fmpOG7S3PS8N2lOWn47tKcNHxvadpJw3eX5qThu0tz0vDdpTlp+O7S6Lk095bmpOG7S3PS8N2lOWn47tKcNHx3aU4avrc0/aThu0tz0vDdpTlp+O7SnDR8d2n0XJp7S3PS8N2lOWn47tKcNHx3aU4avrs0Jw3fW5px0vDdpTlp+O7SnDR8d2lOGr67NHouzb2lOWn47tLEp+G2vC9N19nSDLuspC31Ny1NfBp+2dLEp+GXLc0ONKxLaz+21sXLZWu3b3uw5cv3sAObFVn0/R7l7wdMbh0A91Z+bO3e7eN8bpw5Vezts2tdb52/nn7NPf2bjCPt7aTTujw+QWv1t2ulSpmdzTvVkuuNrV2KmrW2TC5Bq3rZun44I+9csL1fZt1tzA5ma5fLu/X3g/nzgb3euth427qO93mLLj8fHj0PT+TD087DE/nw9PPwRD484zw8kQ+PnYcn8uHx8/AEPjy+nIcn8uEp5+GJfHjqeXgiH57zrUHow6Pn4Yl8eM63BqEPz/nWIPThOd8ahD4851uD0IfnfGsQ+fCU5XxtEPv4nO8NYh+f88VB7ONzvjmIfXz0PD6hj8/57iD28TlfHsQ+Pufbg9jH53x9EPv4nO8PQh+f8pvfH4zLKtahk433+ik76PiU8/iEPj7n+4Pdj894Pz42Pz7j/fg0/XB8yvfjc74/iH189Dw+oY/P+f4g9vE53x/EPj7n+4PYx+d8fxD7+JzvD0Ifn3r+/iD28Tl/fxD7+JzvD2Ifn/P9Qezjo+fxCX18zvcHsY/P+f4g9vEZ5/c/oY+Pnccn9PHx8/jsfXyW960/zOTb8fm24nL+ouDZK37+RuDZK35H4vepffR+uXOND+B0+z5Xi79r+WqZfHZ1qz+2lqW8c9YYNzaWqm9+QFnPhMvGZbHvYYUUVklhGylsJ4UdpLBGCuugsLqQwhZSWBJBKYmgVElhSQSlJIJSEkEpiaCURFCNRFCNRFCNRFCNRFBNSWFJBNVIBNVIBNVIBNVIBNVJBNVJBNVJBNVJBNWVFJZEUJ1EUJ1EUJ1EUJ1EUINEUINEUINEUINEUINEUINEUINEUINEUINEUINEUEYiKCMRlJEIykgEZSSCMhJBGYmgjERQRiIoIxGUkwjKSQTlJIJyEkE5iaCcRFBOIignEZQfiqC0vU1b2tJ/EfbmtC+N8WMZ10tzKN763NKMD0vj9uulqcuh6KxpvyyNTZdmKe+GhA9KpFLaja11GcuPrbUs9cO05ebFKv39Yn1XqdTyfdUPhYlxVl30LeS6Cv1q1Q/Fq1+56uWytRa133iuHwqc46z65FzXc9X/yVXv9bLqrr/xXD/Uo0ScVZ+c64d6pvnKVa+Lva16/WCb2nauH+rhKs6qT871Qz3lfemqN72s+ofP3nauH+oBMs6qPz7Xy/ls+s+tuvjls1U+/GG9O6s+LksiVuT9s8f3VQc/m1Z5e9osVesvVv3npQE/QM6WBvyUN1saPSWhO0tCk54oetm6/OLN7c2b+npJXY56bfUXC/jzadXO0+o8rfY/rfp5Wp2n1bdpi11CtjImp9X6XevlqC8fXl5eTqvzrymcp9UXnFbHeh3il417HZOF9CFvW/vQ94c+v7VxrWLv09YPT33+/Xvgcqw3HK9byPr8lxYf/w5Q/eVn/zyj5z/Q6+WJqK5wcj2jGm5GEm5GGm5GLdyMergZjXAzsnAz8mgzkiXcjMLdsyXcPVvC3bMl3D1bwt2zJdw9W8LdsyXcPVvC3bM13D1bw92zNdw9W8PdszXcPVvD3bM13D1bw92zNdw9W8Pds1u4e3YLd89u4e7ZLdw9u4W7Z7dw9+wW7p7dwt2zW7h7dgt3z+7h7tk93D27h7tn93D37B7unt3D3bN7uHt2D3fP7uHu2T3cPXuEu2ePcPfsEe6ePcLds0e4e/YId88e4e7ZI9w9e4S7Z49w92wLd8+2cPdsC3fPtnD3bAt3z7Zw92wLd8+2cPdsC3fPtnD3bA93z/Zw92wPd8/2cPdsD3fP9nD3bA93z/Zw92wPd8/2aPdsWaLds2WJds+WJdo9W5Zo92xZot2zZYl2z5Yl2j1blmj3bFmi3bNlCXfPLuHu2SXcPbuEu2eXcPfsEu6eXcLds0u4e3YJd88u4e7ZJdw9u4a7Z4frg5RwfZASrg9SwvVBSrg+SAnXBynh+iAlXB+khOuDlHB9kBKuD1LC9UFKuD5ICdcHKeH6ICVcH6SE64OUcH2QEq4PUsL1QUq4PkgJ1wcp4fogJVwfpITrg5RwfZASrg9SwvVBSrg+SAnXBynh+iAlXB+khOuDlHB9kBKuD1LC9UFKuD5ICdcHKeH6ICVcH6SE64OUcH2QEq4PUsL1QUq4PkgJ1wcp4fogJVwfpITrg5RwfZASrg9SwvVBSrg+SAnXBynh+iAlXB+khOuDlHB9kBKuD1LC9UFKuD5ICdcHKeH6ICVcH6SE64OUcH2QEq4PUsL1QUq4PkgJ1wcp4fogJVwfpITrg5RwfZASrg9SwvVBSrg+SAnXBynh+iA1XB+khuuD1HB9kBquD1KXaPdsDdcHqeH6IDVcH6SG64PUcH2QGq4PUsP1QWq4PkgN1wep4fogNVwfpIbrg9RwfZAarg9Sw/VBarg+SA3XB6nh+iA1XB+khuuD1HB9kBquD1LD9UFquD5IDdcHqeH6IDVcH6SG64PUcH2QGq4PUsP1QWq4PkgN1wep4fogNVwfpIbrg9RwfZAarg9Sw/VBarg+SA3XB6nh+iA1XB+khuuD1HB9kBquD1LD9UFquD5IDdcHqeH6IDVcH6SG64PUcH2QGq4PUsP1QWq4PkgN1wep4fogNVwfpIbrg9RwfZAarg9Sw/VBarg+SA3XB6nh+iA1XB+khuuD1HB9kBquD1LD9UFquD5IDdcHqeH6IDVcH6SG64PUcH2QGq4PUsP1QWq4PkgN1wep4fogNVwfpIbrg9RwfZAarg9Sw/VBarg+SA3XB6nh+iA1XB+khuuD1HB9kBquD1LD9UG2cH2QLVwfZAvXB9nC9UG2Jdo9u4Xrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IFq4PsoXrg2zh+iBbuD7IHq4Psofrg+zh+iB7uD7IvkS7Z/dwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cH2cP1QfZwfZA9XB9kD9cHOcL1QY5wfZAjXB/kCNcHOZZo9+wRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IEe4PsgRrg9yhOuDHOH6IC1cH6SF64O0cH2QFq4P0pZo92wL1wdp4fogLVwfpIXrg7RwfZAWrg/SwvVBWrg+SAvXB2nh+iAtXB+kheuDtHB9kBauD9LC9UFauD5IC9cHaeH6IC1cH6SF64O0cH2QFq4P0sL1QVq4PkgL1wdp4fogLVwfpIXrg7RwfZAWrg/SwvVBWrg+SAvXB2nh+iAtXB+kheuDtHB9kBauD9LC9UFauD5IC9cHaeH6IC1cH6SF64O0cH2QFq4P0sL1QVq4PkgL1wdp4fogLVwfpIXrg7RwfZAWrg/SwvVBWrg+SHtBH2Qf9W1G3XXy2Vrb22drHXLZutz66KZL/7Fx06ofN/45awVlFVBWBWVtoKwdlHWAshooq3OyvqBj+HVZQdw0QNw0QNz0gs7s12UFcdMAcdMAcdMAcdMAcZOBuMlA3GQgbjIQN73AjvC6rCBuMhA3GYibDMRNBuImB3GTg7jJQdzkIG56gaHkdVmjc1Nf9C1rr8vV9KOj0GT60elmMv3owDKZfnQG6a1dpj9+PX1fomPFZPrRSWEy/ejFfzL96PV8Mv3oJfrhnceX1FXXl9RV15fUVdeX8FX38aWbu+qW3FW35K66JXfVLbmr7guUQrtOP3zVfTz98FX38fTDV93H00/9rOslfNV9OP0avuo+nn74qvt4+rmrbs1ddV8ghdp1+rmrbs1ddWvuqltzP+vW3M+6kvtZV3I/60r4qvsQGiR81X08/fBV9/H0c79hltxVV3JXXclddSV31dXcVVdzV13N/ayruZ91XyBm23X6uZ91Nff3upr7e13N/YZZc79hbrmrbstddVvuqttyV90XqPV2nX7uqttyP+u23M+6Lfezbsv9rNtzf68b3ko4mX7uN8zh3YGT6eeuuuENf5Pp56664T18k+nnrrrhbXmPpx9egDeZfu5n3fCausn0cz/rhpfJPYaG8H64yfRzv2EOb3GbTD931Q3vWns8/fD6tMn0c1fd8JKzyfRzV93wKrLJ9HM/64YXhk2mn/tZN7zW6zE0hDd1PZ5+ePnWZPq53zCHV2Q9vnTDW68m089ddeO7qR5PP3fVje+mejz93M+6ud1UZcktp1rnn/ppd51/6q921/mn/m53nX/40juZf+r3zOv8Uxffdf6pq+86/9Tld51/8vqbW1O1zj95/c0tqlrnn/rJd51/+Po7mX/qZ991/qm/6F3nn/qb3nX+qV86r/NP/da5LPGFVY+v3/jGqsn8k9ff3M6qdf7J629ua9U6/+TPv7m9Vev8kz//5jZXlSW+uuoxP8R3V03mn/z9c2571Tr/5PU3vr9qMv/k9Te3wWqdf/L6m9thVZbcEqt1/smff3NrrNb5J3/+jS+yeswP8U1Wk/knf/+c22W1zj95/Y1vs3o8/9w6q3X+yetvbqHVOv/k9Te30mqdf/Ln39xSq3X+yZ9/42utHvNDfK/V4/nnFlut80/+/jm+2urx9RvfbTWZf/L6m9tutc4/ef3N7bda55/8+Te34aosuRVX6/yTP//Gl1w95of4lqvJ/MPX38n8k79/ji+6mly/yetvbtXVOv/k9Te37Gqdf/L6m1t3tc4/+fNvbuHVOv/kz7/xlVeP+SG+82oy/+Tvn3Nbr8oSX3v1+PqN772azD95/c1tvlrnn7z+5nZfrfNP/vyb2361zj/5829y/1WJ7796yA8lvv9qMv/c759Lcv9VWXLX3xLffzWZf+76W5L7r0py/1VJ7r8qyf1XJbn/qiT3X5Xk/qsS33/1mB/i+68m88/9/rkk91+V+P6ryfWbvP4m91+V5P6rktx/VZL7r0py/1VJ7r8qyf1XJbn/qsT3Xz3mh/j+q8fzT+6/Ksn9VyW+/+rx9RvffzWZf/L6m9x/VZL7r0py/1VJ7r8qyf1XJbn/qiT3X5X4/qvH/BDffzWZf/j6O5l/8vfP8f1Xk+s3ef1N7r8qyf1XJbn/qiT3X5Xk/quS3H9VkvuvSnL/VYnvv3rMD/H9V5P5J3//nNx/VeL7rx5fv/H9V5P5J6+/yf1XJbn/qiT3X5Xk/quS3H9VkvuvSnL/VYnvv3rMD/H9V5P5J3//nNx/VeL7rybXb/L6m9x/VZL7r0py/1VJ7r8qyf1XJbn/qiT3X5Xk/qsS33/1mB/i+68m80/+/jm5/6rE919Nrt/k9Te5/6ok91+V5P6rktx/VZL7r0py/1VJ7r8qyf1XJb7/6jE/xPdfPZx/Te6/qsn9VzW+/+rh9Vvj+68m889df2ty/1VN7r+qyf1XNbn/qib3X9Xk/qua3H9V4/uvHvNDfP/VZP7h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oqi0JJYaR/OeT9KSWGoczXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUS6G85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8N5T03lPfcUN5zQ3nPbVFUWhJLGcp7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5o7znjvKeO8p77ijvuS+KSktiKUd5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nP/fne81rL8jb92vokbWlucplKcf+Y9nuCmj6BBE/Qa10uU6mtTM44K5czzqpfnXGKSttQaTsq7UClNVRaJ6V9vp/8i9N2uaS1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WhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoSS+nRvOeTtCSW0qN5zydpSSyli6LSklhKj+Y9n6QlsZQezXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJYCuU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPdcUd5zRXnPFeU9V5T3XFHec0V5zxXlPVeU91xR3nNFec8V5T1XlPe8obznDeU9byjveUN5z9uiqLQklmoo73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKG85w3lPW8o73lDec8bynveUN7zhvKeN5T3vKO85x3lPe8o73lHec/7oqi0JJbqKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847y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3nNBec8F5T0XlPdcUN5zQXnPBeU9F5T3XFDec0F5zwXlPReU91xQ3nNBec8V5T1XlPdcUd5zRXnPdVFUWhJLKcp7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO+5orznivKeK8p7rijvuaK854rynivKe64o77mivOeK8p4rynuuKO95Q3nPG8p73lDe84bynrdFUWlJLNVQ3vOG8p43lPe8obznDeU9byjveUN5zxvKe9728Z4PuaT1Nknbur9t3cbyPvva/ceUWrwp9XhTGvGmZPGm5OGmtI/Vet8plXhT2qPm2DLetjap07twe78L24cAumwKINkDaPYA7dkB6qL9Upm9TAIUL3r5cC9dHxfyWsXeoKJWLfJx8++BOy3woAU2WmCHBd7F05wqcKEFrrTAQgustMA00hIaaQmNtIRGWnIs0uqlvD0d9iLXcfVYnDWNeyzKmsY9FmNN4x6LsKZxlRX3WHQ1jXsstprGPRZZTeMei6umccNT1ejLJa5ruUrQgoPSZ78Ot3L5Otzq+zfzP74Ob8E5aee0wTFp57TBKWnntIpKG5yRPp22X8qK2dWPdlpwRNo5bXBC2jltcEDaOW1wPto3bT8aSz1OezSWepz2aCz1OO3RWOpxWkWlRbFUR7FUR7FUR7FUR7HUQLHUQLHUQLHUQLHULoLmPGlRLDVQLDVQLDVQLDVQLGUoljIUSxmKpQzFUrsImvOkRbGUoVjKUCxlKJYyFEs5iqUcxVKOYilHsdQuguY8aVEs5SiWchRLOYqlnMRSfSGxVF9ILNUXEkv1hcRSfVFUWhJL9YXEUn0hsVRfSCzVFxRLFRRLFRRLFRRLFRRL7SJozpMWxVIFxVIFxVIFxVIFxVIVxVIVxVIVxVIVxVLPV5q/NC2KpaLLz3dOi2Kp6NrzndOiWCq68HzntCiWiq463zktiqWiS853Totiqeh6853Tolgquth857QoloouNd85LYqloivNd06LYqnoQvOd06JYKrrOfOe0KJaKLjPfOS2KpQ7nPX+cFsVSh/OeP06LYqnDec8fp0WxFMp73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynneU97yjvOcd5T3vKO95R3nPO8p73lHe847ynvejec99ufz1QS/XaQ/GUpO0B2OpSdqDsdQk7cFY6nHao3nPJ2kPxlKTtAdjqUnag7HUJK2i0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySlsRS42je80laEkuNo3nPJ2lJLDUWRaUlsdQ4mvd8kpbEUuNo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2Kpo3nPJ2lRLHU07/kkLYqljuY9n6RFsdTRvOeTtCiWOpr3fJIWxVJH855P0qJY6mje80laFEsdzXs+SYtiqaN5zydpUSx1NO/5JC2KpY7mPZ+kRbHU0bznk7Qoljqa93ySFsVSR/OeT9KiWOpo3vNJWhRLHc17PkmLYqmjec8naVEsdTTv+SQtiqWO5j2fpEWx1NG855O0KJY6mvd8khbFUkfznk/SoljqaN7zSVoUSx3Nez5Ji2IplPd8oLznA+U9Hyjv+UB5zwfKez5Q3vOB8p4PlPd8oLznA+U9Hyjv+UB5zwfKez5Q3vOB8p4PlPd8oLznA+U9Hyjv+UB5zwfKez5Q3vOB8p4byntuKO+5obznhvKe26KotCSWMpT33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zR3nPHeU9d5T33FHec18UlZbEUo7ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8l7rgvJe76mBbHUmhbEUmtaEEutaRWVFsRSa1oQS61pQSy1pgWx1JoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+Tp7FEuRvOfr7FEsRfKer7NHsRTJe77OHsVSJO/5OnsUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhRLkbzna1oUS5G852taFEuRvOdrWhJLFZT3vKC85wXlPS8o73lZFJWWxFIF5T0vKO95QXnPC8p7XlDe84LynheU97ygvOcF5T0vKO95QXnPC8p7XlDe84LynheU97ygvOcF5T0vKO95QXnPC8p7XlDe84LynheU97ygvOcF5T0vKO95QXnPC8p7XlDe84Ly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N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9N5T33FDec0N5zw3lPTeU99xQ3nNDec8N5T03lPfcUN5zQ3nPDeU9d5T33FHec0d5zx3lPfdFUWlJLOUo77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuaO8547ynjvKe+4o77mjvOeO8p47ynvuKO+5o7znjvKeO8p77ijvuZO8520hec/XtCCWWtOCWGpNC2KpNa2i0oJYak0LYqk1LYil1rQgllrToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JYiuQ9X9OiWIrkPV/ToliK5D1f06JY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fKC85wPlPR8o7/lAec8Hyns+UN7zgfKeD5T3fKC85wPlPR8o7/lAec8N5T03lPfcUN5zQ3nPbVFUWhJLGcp7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5obznhvKeG8p7bijvuaG854bynhvKe24o77mhvOeG8p4byntuKO+5o7znjvKeO8p77ijvuS+KSktiKUd5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPHeU9d5T33FHec0d5zx3lPXeU99xR3nNHec8d5T13lPfcUd5zR3nPneQ97wvJe76mBbHUmhbEUmtaEEutaRWVFsRSa1oQS61pQSy1pgWx1JoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk7/maFsVSJO/5mhbFUiTv+ZoWxVIk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",
5189
5311
  "brillig_names": [
5190
5312
  "get_note_internal",
5191
5313
  "decompose_hint",
@@ -5200,8 +5322,8 @@
5200
5322
  "directive_integer_quotient",
5201
5323
  "directive_to_radix"
5202
5324
  ],
5203
- "verification_key": "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",
5204
- "artifact_hash": "ff6671ddb572df3d961df43ed4c3adf75a7d3763-62c0ff8660286d4a45bab1c5d8c7cd14-client-ivc-true"
5325
+ "verification_key": "AAAAAAAQAAAAAAAAAAAAFAAAAAAAAAAQAAAAAAADKLEBAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAAAAAAAAAACagc+eZU771zw4YCZyWgqmrku72IpL12eG49H6sooCrDExuV+1Ovq6XCGJUNPtjjHOfyasydOyJtCq0mgcXu5cgCFi1aGHHXSMiHTad2SeIHfvLO7CnAVQJak9W4U6asgH9b8I1rQOjqleaL14QbyIe64MvC90kdBpFx1ISkjYTKU3KwbBQmxpLKBK4+LaDGehoY8YVbHupt+62bsNDvrQTyo8r71fC3cuJ+ZPxqp8sptDLwajfq2UL3bjHje2Ymy3B1QP2l5iCMyZik0IbE9rwwClGOvv+fVY+B2ELLo6WFfY/q+NMDpqV2UR9T83QMx2/xqvhRB9MdB5TokF2sxAA4aiW6Xk+0SeF79LXsfPO9MPzp/2i56XiNG9p+6buwxRmxCva/n8DZr8HuYprm+61XvzR6eNPVZOqGm1pKcU0FY9IlF9KYTb8Z8M/x5lUJwc4tA7czgo6lf1or2IX+8UKcr+kOiN6UO4X6LxXqKjZMQZp6eC/GUjFeSFF5k7tDQRWu3AbWwtGO7zwxP5xkFUjk9CVM+GyAEvYTp+KU6iPA4D05rswR3a/1Psi4gmHdBVkgemj+PCR0w2xADptqrQqfuYOQrVZ86zVb3MMCBp8LFVIl4LrDNaQHptdsUE8MRikAI6hUiKylJrJohu5XOBY07sgMXDTdBUAU3100ZPHCzENKsHccoMnaDTwUI7WfDd3JOo1Vvao0t9NgY+sp8QXEtW79xnvCKGdgtVOy2duxMUzh1LtjWVkih8Z5QSTPgkvG4f+5i9umvMsBOb/WU4PUxkFdFDceWdUYiWiI8JuKRFpwKYJpmfJXjbhZpOu0QfAWaMEqeNU+OSNmRhsIhYO35haqA0uLy5U9uJwtU3WsesSVcJMP62KZN7eL6GQ3gtEyX4GJu/sOTcE2/QjFmz+zrxiLb/MTHrNvix7IWtWKZQYzh1sneS1SMsHa5k7Ea6v+fKlTlMcGoCMonJPgaUb6khITPPjmITp8i3bTQIR6zFI457TCht0JCFuXhT6sR+IdbZp6acFsWiFiEsupqdJwccch7UJ16FhTTrKJAViBty2GGkguhQ41jsCQRD2U4wmpSCLzji8W+WX4eR+vRYdrT9OeARL9hl8vT43b2eXKhxyUOWHIsuXUpyFOu2kbCQ63qqKYxzfe8JYYVDbotaKSUEvRdYe9PqKE0NyZ/neLFVlCpr5FlZOQZDiHCRlex43q/WLoNxHo8TlglJNLyIbYy6UCPTpZI2wRNeTIx5v8onO4JGW/x0ZKVVY6lYLFhhMkWtoTexoB8rvQG+HiFNjc8vnZv8cOEtA6p6PcCs4BfLuqms5K0ivWFXVC14+3t8eAUjz1eHwXEiwypn9geIkX+4nIlkYv3ng6DxWPlpoZuPQTPV92a5SwuPYqnPATxRmjRytNHBxxcXWeIY4iqOPCASi1PYLaBm4ntr4mZFrBwxH+vbHsE6Za0p9O22/E1m+GC364KbsmXRbEiULhUUDrB0IJlmiZexUQHyLYSU8zNEGL5Q8XXNbTIGtaSpkzw9k/xIsdeZCifgJ4SO0roefM3lu+KE9MmohjAGMoCusFL3IvzGHOTDlVqywj/9vHLV+wZteBWwH+VXpGDb3OmkaIMQ7h5ivbcDBMOeSA5lsrKeUsx41wSWP87DV1HAIMht8q9sU+uZvXtLb8iwJPIChHMj6UoApZ9352vS1j3zWGNulJhtEXgr2NWNeV7b1lJBCGuxC+9Gh3rf34iivD28lRRrjszR/XS1j0Yj64E2AxPvrQ2OI2DA7gt2cgg2gAxryMBG5gKEfEAAKivDoaNSycXADztGVwWq8fENysQMrGCowl8F66R3ssNq6WGQNfXINyV09Kg2CxT4SZil7iFEH++a8LAziQK6YhU8MsljA9oN//EAZ0+ZBnVxN1t6h0yRH2hJFI2u1MkKJiYdV6wErE2NzIVz85t6P//ygdtfdCvEXBt9+JLteGGFoLqbckzEO7vYUIrD7iPrfVsshfBIJjxM/J4pIweqEa8Vb4PvPCUacQDsYUg/Ca8uVssWwpC7mvAO5r6g7o+5YMiaza067Cy3FWi/kZmv/qKfobDvxGsozunuZx9FgT4DO+q4I1le2ASfomKIdNDSUFRz3v8wQlPuzufjpk+C5Yevz+63/tVkShqq4OcLMKotplECg5wPO/DGNFWplytfHBaP4ggRIH+pgJ+6MmHmmfsl0rX5jAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhx/Eay0wPb/F5PLwUGNHcUsh09kb0fwvLZ/siXcYrcgD84nVoPXdzRZKSZoiiYeCJguj6hbtGo1WPr2Xw/cd0wPy7+dPPQCuqPu2l8Knkm1werJWyZMMC3IVObyLXMw3yg+39qJyUgFl/CzRC6XUt751Y/Ckgg2GUJh97Fj/vuvHViqYcZK1SIEPXnEgCIZ5Vuhl1Gt/mw2Mk0/tsLaCYktfBipPD2uWICfqu7GqGp49LO8YfGdbnBpNZu/R+f5Bw==",
5326
+ "artifact_hash": "e7552d296af009c9ed2e2ca261de6124cad0b1c1-2d441d05102d6ffcfc00217739092179-client-ivc-true"
5205
5327
  }
5206
5328
  ],
5207
5329
  "outputs": {
@@ -5337,6 +5459,72 @@
5337
5459
  },
5338
5460
  "structs": {
5339
5461
  "functions": [
5462
+ {
5463
+ "fields": [
5464
+ {
5465
+ "name": "parameters",
5466
+ "type": {
5467
+ "fields": [
5468
+ {
5469
+ "name": "signing_pub_key_x",
5470
+ "type": {
5471
+ "kind": "array",
5472
+ "length": 32,
5473
+ "type": {
5474
+ "kind": "integer",
5475
+ "sign": "unsigned",
5476
+ "width": 8
5477
+ }
5478
+ }
5479
+ },
5480
+ {
5481
+ "name": "signing_pub_key_y",
5482
+ "type": {
5483
+ "kind": "array",
5484
+ "length": 32,
5485
+ "type": {
5486
+ "kind": "integer",
5487
+ "sign": "unsigned",
5488
+ "width": 8
5489
+ }
5490
+ }
5491
+ }
5492
+ ],
5493
+ "kind": "struct",
5494
+ "path": "EcdsaKAccount::constructor_parameters"
5495
+ }
5496
+ }
5497
+ ],
5498
+ "kind": "struct",
5499
+ "path": "EcdsaKAccount::constructor_abi"
5500
+ },
5501
+ {
5502
+ "fields": [
5503
+ {
5504
+ "name": "parameters",
5505
+ "type": {
5506
+ "fields": [
5507
+ {
5508
+ "name": "inner_hash",
5509
+ "type": {
5510
+ "kind": "field"
5511
+ }
5512
+ }
5513
+ ],
5514
+ "kind": "struct",
5515
+ "path": "EcdsaKAccount::verify_private_authwit_parameters"
5516
+ }
5517
+ },
5518
+ {
5519
+ "name": "return_type",
5520
+ "type": {
5521
+ "kind": "field"
5522
+ }
5523
+ }
5524
+ ],
5525
+ "kind": "struct",
5526
+ "path": "EcdsaKAccount::verify_private_authwit_abi"
5527
+ },
5340
5528
  {
5341
5529
  "fields": [
5342
5530
  {
@@ -5519,81 +5707,11 @@
5519
5707
  ],
5520
5708
  "kind": "struct",
5521
5709
  "path": "EcdsaKAccount::entrypoint_abi"
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
- },
5562
- {
5563
- "fields": [
5564
- {
5565
- "name": "parameters",
5566
- "type": {
5567
- "fields": [
5568
- {
5569
- "name": "inner_hash",
5570
- "type": {
5571
- "kind": "field"
5572
- }
5573
- }
5574
- ],
5575
- "kind": "struct",
5576
- "path": "EcdsaKAccount::verify_private_authwit_parameters"
5577
- }
5578
- },
5579
- {
5580
- "name": "return_type",
5581
- "type": {
5582
- "kind": "field"
5583
- }
5584
- }
5585
- ],
5586
- "kind": "struct",
5587
- "path": "EcdsaKAccount::verify_private_authwit_abi"
5588
5710
  }
5589
5711
  ]
5590
5712
  }
5591
5713
  },
5592
5714
  "file_map": {
5593
- "3": {
5594
- "path": "std/array/mod.nr",
5595
- "source": "use crate::cmp::{Eq, Ord};\nuse crate::convert::From;\nuse crate::runtime::is_unconstrained;\n\nmod check_shuffle;\nmod quicksort;\n\nimpl<T, let N: u32> [T; N] {\n /// Returns the length of this array.\n ///\n /// ```noir\n /// fn len(self) -> Field\n /// ```\n ///\n /// example\n ///\n /// ```noir\n /// fn main() {\n /// let array = [42, 42];\n /// assert(array.len() == 2);\n /// }\n /// ```\n #[builtin(array_len)]\n pub fn len(self) -> u32 {}\n\n /// Returns this array as a slice.\n ///\n /// ```noir\n /// let array = [1, 2];\n /// let slice = array.as_slice();\n /// assert_eq(slice, &[1, 2]);\n /// ```\n #[builtin(as_slice)]\n pub fn as_slice(self) -> [T] {}\n\n /// Applies a function to each element of this array, returning a new array containing the mapped elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// let a = [1, 2, 3];\n /// let b = a.map(|a| a * 2);\n /// assert_eq(b, [2, 4, 6]);\n /// ```\n pub fn map<U, Env>(self, f: fn[Env](T) -> U) -> [U; N] {\n let uninitialized = crate::mem::zeroed();\n let mut ret = [uninitialized; N];\n\n for i in 0..self.len() {\n ret[i] = f(self[i]);\n }\n\n ret\n }\n\n /// Applies a function to each element of the array, returning the final accumulated value. The first\n /// parameter is the initial value.\n ///\n /// This is a left fold, so the given function will be applied to the accumulator and first element of\n /// the array, then the second, and so on. For a given call the expected result would be equivalent to:\n ///\n /// ```rust\n /// let a1 = [1];\n /// let a2 = [1, 2];\n /// let a3 = [1, 2, 3];\n ///\n /// let f = |a, b| a - b;\n /// a1.fold(10, f); //=> f(10, 1)\n /// a2.fold(10, f); //=> f(f(10, 1), 2)\n /// a3.fold(10, f); //=> f(f(f(10, 1), 2), 3)\n ///\n /// assert_eq(a3.fold(10, f), 10 - 1 - 2 - 3);\n /// ```\n pub fn fold<U, Env>(self, mut accumulator: U, f: fn[Env](U, T) -> U) -> U {\n for elem in self {\n accumulator = f(accumulator, elem);\n }\n accumulator\n }\n\n /// Same as fold, but uses the first element as the starting element.\n ///\n /// Requires the input array to be non-empty.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [1, 2, 3, 4];\n /// let reduced = arr.reduce(|a, b| a + b);\n /// assert(reduced == 10);\n /// }\n /// ```\n pub fn reduce<Env>(self, f: fn[Env](T, T) -> T) -> T {\n let mut accumulator = self[0];\n for i in 1..self.len() {\n accumulator = f(accumulator, self[i]);\n }\n accumulator\n }\n\n /// Returns true if all the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 2];\n /// let all = arr.all(|a| a == 2);\n /// assert(all);\n /// }\n /// ```\n pub fn all<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = true;\n for elem in self {\n ret &= predicate(elem);\n }\n ret\n }\n\n /// Returns true if any of the elements in this array satisfy the given predicate.\n ///\n /// Example:\n ///\n /// ```noir\n /// fn main() {\n /// let arr = [2, 2, 2, 2, 5];\n /// let any = arr.any(|a| a == 5);\n /// assert(any);\n /// }\n /// ```\n pub fn any<Env>(self, predicate: fn[Env](T) -> bool) -> bool {\n let mut ret = false;\n for elem in self {\n ret |= predicate(elem);\n }\n ret\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Ord + Eq,\n{\n /// Returns a new sorted array. The original array remains untouched. Notice that this function will\n /// only work for arrays of fields or integers, not for any arbitrary type. This is because the sorting\n /// logic it uses internally is optimized specifically for these values. If you need a sort function to\n /// sort any type, you should use the `sort_via` function.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32];\n /// let sorted = arr.sort();\n /// assert(sorted == [32, 42]);\n /// }\n /// ```\n pub fn sort(self) -> Self {\n self.sort_via(|a: T, b: T| a <= b)\n }\n}\n\nimpl<T, let N: u32> [T; N]\nwhere\n T: Eq,\n{\n /// Returns a new sorted array by sorting it with a custom comparison function.\n /// The original array remains untouched.\n /// The ordering function must return true if the first argument should be sorted to be before the second argument or is equal to the second argument.\n ///\n /// Using this method with an operator like `<` that does not return `true` for equal values will result in an assertion failure for arrays with equal elements.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let arr = [42, 32]\n /// let sorted_ascending = arr.sort_via(|a, b| a <= b);\n /// assert(sorted_ascending == [32, 42]); // verifies\n ///\n /// let sorted_descending = arr.sort_via(|a, b| a >= b);\n /// assert(sorted_descending == [32, 42]); // does not verify\n /// }\n /// ```\n pub fn sort_via<Env>(self, ordering: fn[Env](T, T) -> bool) -> Self {\n unsafe {\n // Safety: `sorted` array is checked to be:\n // a. a permutation of `input`'s elements\n // b. satisfying the predicate `ordering`\n let sorted = quicksort::quicksort(self, ordering);\n\n if !is_unconstrained() {\n for i in 0..N - 1 {\n assert(\n ordering(sorted[i], sorted[i + 1]),\n \"Array has not been sorted correctly according to `ordering`.\",\n );\n }\n check_shuffle::check_shuffle(self, sorted);\n }\n sorted\n }\n }\n}\n\nimpl<let N: u32> [u8; N] {\n /// Converts a byte array of type `[u8; N]` to a string. Note that this performs no UTF-8 validation -\n /// the given array is interpreted as-is as a string.\n ///\n /// Example:\n ///\n /// ```rust\n /// fn main() {\n /// let hi = [104, 105].as_str_unchecked();\n /// assert_eq(hi, \"hi\");\n /// }\n /// ```\n #[builtin(array_as_str_unchecked)]\n pub fn as_str_unchecked(self) -> str<N> {}\n}\n\nimpl<let N: u32> From<str<N>> for [u8; N] {\n /// Returns an array of the string bytes.\n fn from(s: str<N>) -> Self {\n s.as_bytes()\n }\n}\n\nmod test {\n #[test]\n fn map_empty() {\n assert_eq([].map(|x| x + 1), []);\n }\n}\n"
5596
- },
5597
5715
  "6": {
5598
5716
  "path": "std/cmp.nr",
5599
5717
  "source": "use crate::meta::derive_via;\n\n#[derive_via(derive_eq)]\n// docs:start:eq-trait\npub trait Eq {\n fn eq(self, other: Self) -> bool;\n}\n// docs:end:eq-trait\n\n// docs:start:derive_eq\ncomptime fn derive_eq(s: StructDefinition) -> Quoted {\n let signature = quote { fn eq(_self: Self, _other: Self) -> bool };\n let for_each_field = |name| quote { (_self.$name == _other.$name) };\n let body = |fields| {\n if s.fields().len() == 0 {\n quote { true }\n } else {\n fields\n }\n };\n crate::meta::make_trait_impl(\n s,\n quote { Eq },\n signature,\n for_each_field,\n quote { & },\n body,\n )\n}\n// docs:end:derive_eq\n\nimpl Eq for Field {\n fn eq(self, other: Field) -> bool {\n self == other\n }\n}\n\nimpl Eq for u64 {\n fn eq(self, other: u64) -> bool {\n self == other\n }\n}\nimpl Eq for u32 {\n fn eq(self, other: u32) -> bool {\n self == other\n }\n}\nimpl Eq for u16 {\n fn eq(self, other: u16) -> bool {\n self == other\n }\n}\nimpl Eq for u8 {\n fn eq(self, other: u8) -> bool {\n self == other\n }\n}\nimpl Eq for u1 {\n fn eq(self, other: u1) -> bool {\n self == other\n }\n}\n\nimpl Eq for i8 {\n fn eq(self, other: i8) -> bool {\n self == other\n }\n}\nimpl Eq for i16 {\n fn eq(self, other: i16) -> bool {\n self == other\n }\n}\nimpl Eq for i32 {\n fn eq(self, other: i32) -> bool {\n self == other\n }\n}\nimpl Eq for i64 {\n fn eq(self, other: i64) -> bool {\n self == other\n }\n}\n\nimpl Eq for () {\n fn eq(_self: Self, _other: ()) -> bool {\n true\n }\n}\nimpl Eq for bool {\n fn eq(self, other: bool) -> bool {\n self == other\n }\n}\n\nimpl<T, let N: u32> Eq for [T; N]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T; N]) -> bool {\n let mut result = true;\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<T> Eq for [T]\nwhere\n T: Eq,\n{\n fn eq(self, other: [T]) -> bool {\n let mut result = self.len() == other.len();\n for i in 0..self.len() {\n result &= self[i].eq(other[i]);\n }\n result\n }\n}\n\nimpl<let N: u32> Eq for str<N> {\n fn eq(self, other: str<N>) -> bool {\n let self_bytes = self.as_bytes();\n let other_bytes = other.as_bytes();\n self_bytes == other_bytes\n }\n}\n\nimpl<A, B> Eq for (A, B)\nwhere\n A: Eq,\n B: Eq,\n{\n fn eq(self, other: (A, B)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1)\n }\n}\n\nimpl<A, B, C> Eq for (A, B, C)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n{\n fn eq(self, other: (A, B, C)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2)\n }\n}\n\nimpl<A, B, C, D> Eq for (A, B, C, D)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n{\n fn eq(self, other: (A, B, C, D)) -> bool {\n self.0.eq(other.0) & self.1.eq(other.1) & self.2.eq(other.2) & self.3.eq(other.3)\n }\n}\n\nimpl<A, B, C, D, E> Eq for (A, B, C, D, E)\nwhere\n A: Eq,\n B: Eq,\n C: Eq,\n D: Eq,\n E: Eq,\n{\n fn eq(self, other: (A, B, C, D, E)) -> bool {\n self.0.eq(other.0)\n & self.1.eq(other.1)\n & self.2.eq(other.2)\n & self.3.eq(other.3)\n & self.4.eq(other.4)\n }\n}\n\nimpl Eq for Ordering {\n fn eq(self, other: Ordering) -> bool {\n self.result == other.result\n }\n}\n\n// Noir doesn't have enums yet so we emulate (Lt | Eq | Gt) with a struct\n// that has 3 public functions for constructing the struct.\npub struct Ordering {\n result: Field,\n}\n\nimpl Ordering {\n // Implementation note: 0, 1, and 2 for Lt, Eq, and Gt are built\n // into the compiler, do not change these without also updating\n // the compiler itself!\n pub fn less() -> Ordering {\n Ordering { result: 0 }\n }\n\n pub fn equal() -> Ordering {\n Ordering { result: 1 }\n }\n\n pub fn greater() -> Ordering {\n Ordering { result: 2 }\n }\n}\n\n#[derive_via(derive_ord)]\n// docs:start:ord-trait\npub trait Ord {\n fn cmp(self, other: Self) -> Ordering;\n}\n// docs:end:ord-trait\n\n// docs:start:derive_ord\ncomptime fn derive_ord(s: StructDefinition) -> Quoted {\n let signature = quote { fn cmp(_self: Self, _other: Self) -> std::cmp::Ordering };\n let for_each_field = |name| quote {\n if result == std::cmp::Ordering::equal() {\n result = _self.$name.cmp(_other.$name);\n }\n };\n let body = |fields| quote {\n let mut result = std::cmp::Ordering::equal();\n $fields\n result\n };\n crate::meta::make_trait_impl(s, quote { Ord }, signature, for_each_field, quote {}, body)\n}\n// docs:end:derive_ord\n\n// Note: Field deliberately does not implement Ord\n\nimpl Ord for u64 {\n fn cmp(self, other: u64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u32 {\n fn cmp(self, other: u32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u16 {\n fn cmp(self, other: u16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for u8 {\n fn cmp(self, other: u8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i8 {\n fn cmp(self, other: i8) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i16 {\n fn cmp(self, other: i16) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i32 {\n fn cmp(self, other: i32) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for i64 {\n fn cmp(self, other: i64) -> Ordering {\n if self < other {\n Ordering::less()\n } else if self > other {\n Ordering::greater()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl Ord for () {\n fn cmp(_self: Self, _other: ()) -> Ordering {\n Ordering::equal()\n }\n}\n\nimpl Ord for bool {\n fn cmp(self, other: bool) -> Ordering {\n if self {\n if other {\n Ordering::equal()\n } else {\n Ordering::greater()\n }\n } else if other {\n Ordering::less()\n } else {\n Ordering::equal()\n }\n }\n}\n\nimpl<T, let N: u32> Ord for [T; N]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T; N]) -> Ordering {\n let mut result = Ordering::equal();\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<T> Ord for [T]\nwhere\n T: Ord,\n{\n // The first non-equal element of both arrays determines\n // the ordering for the whole array.\n fn cmp(self, other: [T]) -> Ordering {\n let mut result = self.len().cmp(other.len());\n for i in 0..self.len() {\n if result == Ordering::equal() {\n let result_i = self[i].cmp(other[i]);\n\n if result_i == Ordering::less() {\n result = result_i;\n } else if result_i == Ordering::greater() {\n result = result_i;\n }\n }\n }\n result\n }\n}\n\nimpl<A, B> Ord for (A, B)\nwhere\n A: Ord,\n B: Ord,\n{\n fn cmp(self, other: (A, B)) -> Ordering {\n let result = self.0.cmp(other.0);\n\n if result != Ordering::equal() {\n result\n } else {\n self.1.cmp(other.1)\n }\n }\n}\n\nimpl<A, B, C> Ord for (A, B, C)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n{\n fn cmp(self, other: (A, B, C)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D> Ord for (A, B, C, D)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n{\n fn cmp(self, other: (A, B, C, D)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n result\n }\n}\n\nimpl<A, B, C, D, E> Ord for (A, B, C, D, E)\nwhere\n A: Ord,\n B: Ord,\n C: Ord,\n D: Ord,\n E: Ord,\n{\n fn cmp(self, other: (A, B, C, D, E)) -> Ordering {\n let mut result = self.0.cmp(other.0);\n\n if result == Ordering::equal() {\n result = self.1.cmp(other.1);\n }\n\n if result == Ordering::equal() {\n result = self.2.cmp(other.2);\n }\n\n if result == Ordering::equal() {\n result = self.3.cmp(other.3);\n }\n\n if result == Ordering::equal() {\n result = self.4.cmp(other.4);\n }\n\n result\n }\n}\n\n// Compares and returns the maximum of two values.\n//\n// Returns the second argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::max(1, 2), 2);\n// assert_eq(cmp::max(2, 2), 2);\n// ```\npub fn max<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v1\n } else {\n v2\n }\n}\n\n// Compares and returns the minimum of two values.\n//\n// Returns the first argument if the comparison determines them to be equal.\n//\n// # Examples\n//\n// ```\n// use std::cmp;\n//\n// assert_eq(cmp::min(1, 2), 1);\n// assert_eq(cmp::min(2, 2), 2);\n// ```\npub fn min<T>(v1: T, v2: T) -> T\nwhere\n T: Ord,\n{\n if v1 > v2 {\n v2\n } else {\n v1\n }\n}\n\nmod cmp_tests {\n use crate::cmp::{max, min};\n\n #[test]\n fn sanity_check_min() {\n assert_eq(min(0 as u64, 1 as u64), 0);\n assert_eq(min(0 as u64, 0 as u64), 0);\n assert_eq(min(1 as u64, 1 as u64), 1);\n assert_eq(min(255 as u8, 0 as u8), 0);\n }\n\n #[test]\n fn sanity_check_max() {\n assert_eq(max(0 as u64, 1 as u64), 1);\n assert_eq(max(0 as u64, 0 as u64), 0);\n assert_eq(max(1 as u64, 1 as u64), 1);\n assert_eq(max(255 as u8, 0 as u8), 255);\n }\n}\n"
@@ -5635,178 +5753,178 @@
5635
5753
  "source": "pub fn panic<T, U, let N: u32>(message: fmtstr<N, T>) -> U {\n assert(false, message);\n crate::mem::zeroed()\n}\n"
5636
5754
  },
5637
5755
  "66": {
5756
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
5757
+ "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"
5758
+ },
5759
+ "71": {
5760
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/utils/point.nr",
5761
+ "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"
5762
+ },
5763
+ "77": {
5764
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr",
5765
+ "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"
5766
+ },
5767
+ "98": {
5638
5768
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/context/private_context.nr",
5639
5769
  "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"
5640
5770
  },
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"
5771
+ "100": {
5772
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr",
5773
+ "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"
5644
5774
  },
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"
5775
+ "103": {
5776
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr",
5777
+ "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(\"getIndexedTaggingSecretAsSender\").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"
5778
+ },
5779
+ "104": {
5780
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/encrypted_note_emission.nr",
5781
+ "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"
5782
+ },
5783
+ "105": {
5784
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/lifecycle.nr",
5785
+ "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"
5786
+ },
5787
+ "108": {
5788
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_getter/mod.nr",
5789
+ "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"
5790
+ },
5791
+ "112": {
5792
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/note_emission.nr",
5793
+ "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"
5794
+ },
5795
+ "115": {
5796
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/note/utils.nr",
5797
+ "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"
5798
+ },
5799
+ "134": {
5800
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/initializer.nr",
5801
+ "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"
5802
+ },
5803
+ "137": {
5804
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr",
5805
+ "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"
5648
5806
  },
5649
- "79": {
5807
+ "139": {
5650
5808
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/random.nr",
5651
5809
  "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"
5652
5810
  },
5653
- "85": {
5811
+ "140": {
5812
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/keys.nr",
5813
+ "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"
5814
+ },
5815
+ "142": {
5654
5816
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/key_validation_request.nr",
5655
5817
  "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
5818
  },
5657
- "87": {
5658
- "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/enqueue_public_function_call.nr",
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"
5660
- },
5661
- "88": {
5819
+ "145": {
5662
5820
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/returns.nr",
5663
5821
  "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"
5664
5822
  },
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"
5668
- },
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"
5672
- },
5673
- "93": {
5823
+ "148": {
5674
5824
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/get_contract_instance.nr",
5675
5825
  "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"
5676
5826
  },
5677
- "106": {
5678
- "path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/header.nr",
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"
5684
- },
5685
- "108": {
5686
- "path": "/usr/src/noir-projects/aztec-nr/aztec/src/encrypted_logs/payload.nr",
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"
5827
+ "150": {
5828
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/notes.nr",
5829
+ "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_indexed_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_indexed_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 ivsk_m of the sender.\n/// For the recipient's side, only the address is needed.\npub unconstrained fn get_indexed_tagging_secret_as_sender(\n sender: AztecAddress,\n recipient: AztecAddress,\n) -> IndexedTaggingSecret {\n let result = get_indexed_tagging_secret_as_sender_oracle(sender, recipient);\n IndexedTaggingSecret::deserialize(result)\n}\n\n#[oracle(getIndexedTaggingSecretAsSender)]\nunconstrained fn get_indexed_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"
5688
5830
  },
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"
5831
+ "151": {
5832
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/oracle/call_private_function.nr",
5833
+ "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"
5692
5834
  },
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"
5835
+ "156": {
5836
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/hash.nr",
5837
+ "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"
5696
5838
  },
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"
5839
+ "157": {
5840
+ "path": "/usr/src/noir-projects/aztec-nr/aztec/src/generators.nr",
5841
+ "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"
5700
5842
  },
5701
- "129": {
5843
+ "171": {
5702
5844
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/getters/mod.nr",
5703
5845
  "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"
5704
5846
  },
5705
- "131": {
5847
+ "173": {
5706
5848
  "path": "/usr/src/noir-projects/aztec-nr/aztec/src/keys/secret_derivation.nr",
5707
5849
  "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"
5708
5850
  },
5709
- "152": {
5710
- "path": "/usr/src/noir-projects/aztec-nr/aztec/src/state_vars/private_immutable.nr",
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"
5851
+ "176": {
5852
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
5853
+ "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"
5712
5854
  },
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"
5855
+ "178": {
5856
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/arrays.nr",
5857
+ "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\n// Helper fn to create a subarray from a given array\npub fn array_splice<T, let N: u32, let M: u32>(array: [T; N], offset: u32) -> [T; M]\nwhere\n T: Empty,\n{\n assert(M + offset <= N, \"Subarray length larger than array length\");\n let mut result: [T; M] = [T::empty(); M];\n for i in 0..M {\n result[i] = array[offset + i];\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"
5716
5858
  },
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"
5859
+ "196": {
5860
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
5861
+ "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"
5720
5862
  },
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"
5863
+ "206": {
5864
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr",
5865
+ "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"
5724
5866
  },
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"
5867
+ "265": {
5868
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/indexed_tagging_secret.nr",
5869
+ "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 app_tagging_secret: Field,\n index: u32,\n}\n\nimpl IndexedTaggingSecret {\n pub fn compute_tag(self, recipient: AztecAddress) -> Field {\n poseidon2_hash(\n [self.app_tagging_secret, recipient.to_field(), self.index as Field],\n )\n }\n}\n"
5728
5870
  },
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"
5871
+ "268": {
5872
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr",
5873
+ "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"
5732
5874
  },
5733
- "176": {
5875
+ "269": {
5734
5876
  "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
5735
5877
  "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"
5736
5878
  },
5737
- "177": {
5879
+ "272": {
5738
5880
  "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/salted_initialization_hash.nr",
5739
5881
  "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"
5740
5882
  },
5741
- "181": {
5742
- "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/address/partial_address.nr",
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"
5744
- },
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"
5748
- },
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"
5752
- },
5753
- "209": {
5754
- "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/abis/validation_requests/key_validation_request.nr",
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"
5756
- },
5757
- "241": {
5758
- "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
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"
5883
+ "284": {
5884
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
5885
+ "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\n// Performs a fixed length hash with a subarray of the given input.\n// Useful for SpongeBlob in which we aborb M things and want to check it vs a hash of M elts of an N-len array.\n// Using stdlib poseidon, this will always absorb an extra 1 as a 'variable' hash, and not match spongeblob.squeeze()\n// or any ts implementation. Also checks that any remaining elts not hashed are empty.\n#[no_predicates]\npub fn poseidon2_hash_subarray<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, false);\n sponge.squeeze()\n}\n\n// NB the below is the same as std::hash::poseidon2::Poseidon2::hash(), but replacing a range check with a bit check,\n// and absorbing in chunks of 3 below.\n#[no_predicates]\npub fn poseidon2_cheaper_variable_hash<let N: u32>(input: [Field; N], in_len: u32) -> Field {\n let mut sponge = poseidon2_absorb_chunks(input, in_len, true);\n // In the case where the hash preimage is variable-length, we append `1` to the end of the input, to distinguish\n // from fixed-length hashes. (the combination of this additional field element + the hash IV ensures\n // fixed-length and variable-length hashes do not collide)\n if in_len != N {\n sponge.absorb(1);\n }\n sponge.squeeze()\n}\n\n// The below fn reduces gates of a conditional poseidon2 hash by approx 3x (thank you ~* Giant Brain Dev @IlyasRidhuan *~ for the idea)\n// Why? Because when we call stdlib poseidon, we call absorb for each item. When absorbing is conditional, it seems the compiler does not know\n// what cache_size will be when calling absorb, so it assigns the permutation gates for /each i/ rather than /every 3rd i/, which is actually required.\n// The below code forces the compiler to:\n// - absorb normally up to 2 times to set cache_size to 1\n// - absorb in chunks of 3 to ensure perm. only happens every 3rd absorb\n// - absorb normally up to 2 times to add any remaining values to the hash\n// In fixed len hashes, the compiler is able to tell that it will only need to perform the permutation every 3 absorbs.\n// NB: it also replaces unnecessary range checks (i < thing) with a bit check (&= i != thing), which alone reduces the gates of a var. hash by half.\n\n#[no_predicates]\nfn poseidon2_absorb_chunks<let N: u32>(\n input: [Field; N],\n in_len: u32,\n variable: bool,\n) -> std::hash::poseidon2::Poseidon2 {\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 // Even though shift is always 1 here, if we input in_len = 0 we get an underflow\n // since we cannot isolate computation branches. The below is just to avoid that.\n let shift = if in_len == 0 { 0 } else { 1 };\n if in_len != 0 {\n // cache_size = 0, init absorb\n sponge.cache[0] = input[0];\n sponge.cache_size = 1;\n // shift = num elts already added to make cache_size 1 = 1 for a fresh sponge\n // M = max_chunks = (N - 1 - (N - 1) % 3) / 3: (must be written as a fn of N to compile)\n // max_remainder = (N - 1) % 3;\n // max_chunks = (N - 1 - max_remainder) / 3;\n sponge = poseidon2_absorb_chunks_loop::<N, (N - 1 - (N - 1) % 3) / 3>(\n sponge,\n input,\n in_len,\n variable,\n shift,\n );\n }\n sponge\n}\n\n// NB: If it's not required to check that the non-absorbed elts of 'input' are 0s, set skip_0_check=true\n#[no_predicates]\npub fn poseidon2_absorb_chunks_existing_sponge<let N: u32>(\n in_sponge: std::hash::poseidon2::Poseidon2,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> std::hash::poseidon2::Poseidon2 {\n let mut sponge = in_sponge;\n // 'shift' is to account for already added inputs\n let mut shift = 0;\n // 'stop' is to avoid an underflow when inputting in_len = 0\n let mut stop = false;\n for i in 0..3 {\n if shift == in_len {\n stop = true;\n }\n if (sponge.cache_size != 1) & (!stop) {\n sponge.absorb(input[i]);\n shift += 1;\n }\n }\n sponge = if stop {\n sponge\n } else {\n // max_chunks = (N - (N % 3)) / 3;\n poseidon2_absorb_chunks_loop::<N, (N - (N % 3)) / 3>(\n sponge,\n input,\n in_len,\n skip_0_check,\n shift,\n )\n };\n sponge\n}\n\n// The below is the loop to absorb elts into a poseidon sponge in chunks of 3\n// shift - the num of elts already absorbed to ensure the sponge's cache_size = 1\n// M - the max number of chunks required to absorb N things (must be comptime to compile)\n// NB: The 0 checks ('Found non-zero field...') are messy, but having a separate loop over N to check\n// for 0s costs 3N gates. Current approach is approx 2N gates.\n#[no_predicates]\nfn poseidon2_absorb_chunks_loop<let N: u32, let M: u32>(\n in_sponge: std::hash::poseidon2::Poseidon2,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> std::hash::poseidon2::Poseidon2 {\n assert(in_len <= N, \"Given in_len to absorb is larger than the input array len\");\n // When we have an existing sponge, we may have a shift of 0, and the final 'k+2' below = N\n // The below avoids an overflow\n let skip_last = 3 * M == N;\n // Writing in_sponge: &mut does not compile\n let mut sponge = in_sponge;\n let mut should_add = true;\n // The num of things left over after absorbing in 3s\n let remainder = (in_len - shift) % 3;\n // The num of chunks of 3 to absorb (maximum M)\n let chunks = (in_len - shift - remainder) / 3;\n for i in 0..M {\n // Now we loop through cache size = 1 -> 3\n should_add &= i != chunks;\n // This is the index at the start of the chunk (for readability)\n let k = 3 * i + shift;\n if should_add {\n // cache_size = 1, 2 => just assign\n sponge.cache[1] = input[k];\n sponge.cache[2] = input[k + 1];\n // cache_size = 3 => duplex + perm\n for j in 0..3 {\n sponge.state[j] += sponge.cache[j];\n }\n sponge.state = std::hash::poseidon2_permutation(sponge.state, 4);\n sponge.cache[0] = input[k + 2];\n // cache_size is now 1 again, repeat loop\n } else if (!variable) & (i != chunks) {\n // if we are hashing a fixed len array which is a subarray, we check the remaining elts are 0\n // NB: we don't check at i == chunks, because that chunk contains elts to be absorbed or checked below\n let last_0 = if (i == M - 1) & (skip_last) {\n 0\n } else {\n input[k + 2]\n };\n let all_0 = (input[k] == 0) & (input[k + 1] == 0) & (last_0 == 0);\n assert(all_0, \"Found non-zero field after breakpoint\");\n }\n }\n // we have 'remainder' num of items left to absorb\n should_add = true;\n // below is to avoid overflows (i.e. if inlen is close to N)\n let mut should_check = !variable;\n for i in 0..3 {\n should_add &= i != remainder;\n should_check &= in_len - remainder + i != N;\n if should_add {\n // we want to absorb the final 'remainder' items\n sponge.absorb(input[in_len - remainder + i]);\n } else if should_check {\n assert(input[in_len - remainder + i] == 0, \"Found non-zero field after breakpoint\");\n }\n }\n sponge\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 poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n let sub_chunk_hash = poseidon2_hash_subarray(input, in_len);\n let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(sub_chunk_hash == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_matches_variable() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n for i in 0..in_len {\n input[i] = 3;\n }\n let variable_chunk_hash = poseidon2_cheaper_variable_hash(input, in_len);\n let variable_len_hash = std::hash::poseidon2::Poseidon2::hash(input, in_len);\n assert(variable_chunk_hash == variable_len_hash);\n}\n\n#[test]\nfn existing_sponge_poseidon_chunks_matches_fixed() {\n let in_len = 501;\n let mut input: [Field; 4096] = [0; 4096];\n let mut fixed_input = [3; 501];\n assert(in_len == fixed_input.len()); // sanity check\n for i in 0..in_len {\n input[i] = 3;\n }\n // absorb 250 of the 501 things\n let two_pow_64 = 18446744073709551616;\n let empty_sponge = std::hash::poseidon2::Poseidon2::new((in_len as Field) * two_pow_64);\n let first_sponge = poseidon2_absorb_chunks_existing_sponge(empty_sponge, input, 250, true);\n // now absorb the final 251 (since they are all 3s, im being lazy and not making a new array)\n let mut final_sponge = poseidon2_absorb_chunks_existing_sponge(first_sponge, input, 251, true);\n let fixed_len_hash = std::hash::poseidon2::Poseidon2::hash(fixed_input, fixed_input.len());\n assert(final_sponge.squeeze() == fixed_len_hash);\n}\n\n#[test]\nfn poseidon_chunks_empty_inputs() {\n let in_len = 0;\n let mut input: [Field; 4096] = [0; 4096];\n let mut contructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(contructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == contructed_empty_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"
5760
5886
  },
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"
5887
+ "307": {
5888
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
5889
+ "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"
5764
5890
  },
5765
- "271": {
5891
+ "308": {
5766
5892
  "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/point.nr",
5767
5893
  "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
5894
  },
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
- },
5773
- "310": {
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
5895
  "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"
5896
+ "path": "/usr/src/noir-projects/noir-protocol-circuits/crates/types/src/contract_instance.nr",
5897
+ "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"
5780
5898
  },
5781
- "317": {
5899
+ "320": {
5782
5900
  "path": "/root/nargo/github.com/noir-lang/ec/v0.1.2/src/lib.nr",
5783
5901
  "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"
5784
5902
  },
5785
- "336": {
5786
- "path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr",
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"
5903
+ "339": {
5904
+ "path": "/usr/src/noir-projects/aztec-nr/authwit/src/account.nr",
5905
+ "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"
5788
5906
  },
5789
- "337": {
5907
+ "340": {
5790
5908
  "path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/app.nr",
5791
5909
  "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
5910
  },
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"
5911
+ "341": {
5912
+ "path": "/usr/src/noir-projects/aztec-nr/authwit/src/entrypoint/fee.nr",
5913
+ "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"
5796
5914
  },
5797
- "342": {
5915
+ "344": {
5798
5916
  "path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth_witness.nr",
5799
5917
  "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"
5800
5918
  },
5801
- "343": {
5919
+ "345": {
5802
5920
  "path": "/usr/src/noir-projects/aztec-nr/authwit/src/auth.nr",
5803
5921
  "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"
5804
5922
  },
5805
- "397": {
5923
+ "402": {
5806
5924
  "path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_k_account_contract/src/main.nr",
5807
5925
  "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"
5808
5926
  },
5809
- "398": {
5927
+ "403": {
5810
5928
  "path": "/usr/src/noir-projects/noir-contracts/contracts/ecdsa_public_key_note/src/lib.nr",
5811
5929
  "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"
5812
5930
  }