@aztec/accounts 0.74.0 → 0.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,140 +1,8 @@
1
1
  {
2
2
  "transpiled": true,
3
- "noir_version": "1.0.0-beta.1+c4e38215cedb5afb",
3
+ "noir_version": "1.0.0-beta.1+4144a8dce4789d85",
4
4
  "name": "SchnorrSingleKeyAccount",
5
5
  "functions": [
6
- {
7
- "name": "process_log",
8
- "is_unconstrained": true,
9
- "custom_attributes": [],
10
- "abi": {
11
- "error_types": {
12
- "16541607464495309456": {
13
- "error_kind": "fmtstring",
14
- "item_types": [],
15
- "length": 16
16
- },
17
- "17843811134343075018": {
18
- "error_kind": "string",
19
- "string": "Stack too deep"
20
- }
21
- },
22
- "parameters": [
23
- {
24
- "name": "log_plaintext",
25
- "type": {
26
- "fields": [
27
- {
28
- "name": "storage",
29
- "type": {
30
- "kind": "array",
31
- "length": 18,
32
- "type": {
33
- "kind": "field"
34
- }
35
- }
36
- },
37
- {
38
- "name": "len",
39
- "type": {
40
- "kind": "integer",
41
- "sign": "unsigned",
42
- "width": 32
43
- }
44
- }
45
- ],
46
- "kind": "struct",
47
- "path": "std::collections::bounded_vec::BoundedVec"
48
- },
49
- "visibility": "private"
50
- },
51
- {
52
- "name": "tx_hash",
53
- "type": {
54
- "kind": "field"
55
- },
56
- "visibility": "private"
57
- },
58
- {
59
- "name": "unique_note_hashes_in_tx",
60
- "type": {
61
- "fields": [
62
- {
63
- "name": "storage",
64
- "type": {
65
- "kind": "array",
66
- "length": 64,
67
- "type": {
68
- "kind": "field"
69
- }
70
- }
71
- },
72
- {
73
- "name": "len",
74
- "type": {
75
- "kind": "integer",
76
- "sign": "unsigned",
77
- "width": 32
78
- }
79
- }
80
- ],
81
- "kind": "struct",
82
- "path": "std::collections::bounded_vec::BoundedVec"
83
- },
84
- "visibility": "private"
85
- },
86
- {
87
- "name": "first_nullifier_in_tx",
88
- "type": {
89
- "kind": "field"
90
- },
91
- "visibility": "private"
92
- },
93
- {
94
- "name": "recipient",
95
- "type": {
96
- "fields": [
97
- {
98
- "name": "inner",
99
- "type": {
100
- "kind": "field"
101
- }
102
- }
103
- ],
104
- "kind": "struct",
105
- "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
106
- },
107
- "visibility": "private"
108
- }
109
- ],
110
- "return_type": null
111
- },
112
- "bytecode": "H4sIAAAAAAAA/92c927bMBDG5URKIieOndG9927leHeme+/W/dsdfosWAtqHSPu09Zfw7DPDAilCovkqQJCto+9+PFHUiTy6EG1s3cFeMJ9jc5w2R5xfjMY3Kbtqjtn2tqpHXVkoxgIB4wQB4yQBY0zAmBAwThEwThMwzhAwpgSMRQLGWQLGOQLGEgHjPAFjmYCxQsC4EIAxBOciCeeSR04d24fiXY52fhvdRcC4m4BxDwHjXgLGfQSM+wkYDxAwHiRgPETAeJiA8QgB41ECxmMEjMcJGE8QMJ4kYDxFwHiagPEMAeNZAsZzBIznCRgvEDBeJGC8RMB4mYDxCgFjRsBYJWBcIWCsETDWCRgbBIxNAsYWAWObgLFDwHiVgPEaAeN1AsYbBIw3CRhvETCuEjDeJmC8Q8B4l4DxHgHjfQLGBwSMDwkYHxEwPiZgfELA+JSA8RkB43MCxhcEjC8JGF8RML4mYHxDwPg2AGMIzncknO9JOLuBOKMPFvTEYMfCLSyMwsIjLOzBwhksTMHCDyyswMIFLAxA4j0S25E4XhnsSHxGUjESdpEEiyRTJHEiSRJJiEjyQxIdktSQBIYkKyQxIUno6GA/NtiRRIIkDSRBIMkAk/iYJMckNCZ5MYmKSUpMAmKSDZNYmCRCrTDJgUkEDNJjEByDzBjExSApBiExyIdBNAxSYRAIgywYxJBBArzk4iUSL2l4CcJLBoJ4BMkIQhHkIYhCkIIgAA9ZPMTwkEAnjE4OnQhuUtwAaFzd6M+bNJIf5pia44SSe1xEV00tuz71t7POx9RRP4/8tdTonAmiv9ES/WkY/kwW2t7LR/p1XcTupDl285Evu/k4k5RZU2XWrDJSnzDXu14P66/qSsnyUaTqIraLYWzXCpY9fV20TOwXo5Btc2NRsrYnPLZ/pO8oSZl8xFOwZHG+uR4iS5RMri/snFfl7LY1Y8mEBZu035LyjWwfjEyuaax0+muvjXbY9lrP/l17rVf/x/YaW7I431yPv22vum3Z7TWJRpv0pSKbUrKflmxayX7lI9sNxdE0n8P2yRvPYH3v+X6GLTn4tS1s0/nIH9IGJ9W5RPlv3T+6vCVLlSzOx+0UzfdY2dG6hCOxytfN97I5TqnfyO8rDvtTlv0xbsc52y+po3zqKI+2dsl8njU72tA3+U20+d7Fvmq+Z9vamh1XP+lPf6vm6gs98n8R/bNB9NeH+ufC8A/jqlIY/w/1z4fh74v+chj9TdFfCaO/IfoXguhfGcYJ+s927DhhSZ33GNduOU4Q+0WLNVScsGTx2P7RcQJkyw7WikNm9wHLDjvLDjsuXfMedS141FXcoXUsedRV8agr9ajL53Wc86jLp7/KHnXNeNTls9379Jdcx7DjVVnmitOiAPqLYfQP+37po/W7ma6T2E+s8l8tP88F8fNoHEr6M+0LVyzl0/ZWn9div+TgEe6iQ7adP0D70mj3O+1GZxDSV5srnaxg6RdW+5x+L9L9iy7veva74j6Pvs5cYxBl5VdssZLNW7JEyYRRj0G44mKf/Fvxv7Zfccjs/nmr13IxGm9r+n6cjUb3c5z7r3urvfHHLuuMRn8SjY8xRpb9xCr/3Xy3+7rt3iP9Vq/ar/X6vUbv8+f6p96ipV/7EH76DXVGL3ipUwAA",
113
- "debug_symbols": "tZZBCoMwEEXvknUWzli17VVKKVGjBEKUqIUi3r2jSCvt+m9CJkzekMULf1a1Laf24ULTDep6m5XvKjO6Lkg1L1qV0Xnv2sfxWCXrQglvF4behLUeRhNHdc0TrWyoZXOW643zVrbpov8aC94bi+LTmPFy10JOYeQTjJzByDmMXMDIZxj5giJTAiMTjAxzkGAOEsxBgjlIMAcJ5iDBHCSYgwxzkGEOMsxBhjnIGAcXqZ4mOlN6uweIZgrVIU+Mr97+RIs+dpWtp2jXkPHNF+vbT6wz3n59KYhzTSnJEBn0Bg==",
114
- "brillig_names": [
115
- "process_log"
116
- ]
117
- },
118
- {
119
- "name": "sync_notes",
120
- "is_unconstrained": true,
121
- "custom_attributes": [],
122
- "abi": {
123
- "error_types": {
124
- "17843811134343075018": {
125
- "error_kind": "string",
126
- "string": "Stack too deep"
127
- }
128
- },
129
- "parameters": [],
130
- "return_type": null
131
- },
132
- "bytecode": "H4sIAAAAAAAA/7WTyw7CIBBFqcUo0sTEx39MU0y7dOHafyCtLHVRN+766dZkJkyI0QVwEzJMgMNcHoXwKjBKESGCHDEqjAs2Xs7tjDnEqVbBvin5HRijvvhLWH+jkFnk4QPxM50/rJBzmTyfe6F913PTrF8J/z5y+af7y+l//8OzRq9bzCvh/8P4uvfXx/M2ij/SbJGc0ptoOwAqvkT+EvmhJBvn8w+Yb4Svj6KMqNO1tnaNdfZkh8H0dhfwP+KH/QbzqHp4zgQAAA==",
133
- "debug_symbols": "bY/RCoMwDEX/Jc99SCqO6a/IkKpRCqWVWgdD/PfFIeI2X8K94eSSu0DHzTzU1vdhgrJawIXWJBu8uGVV0ETrnB3q8xpwG5R9+Gk0frNTMjFBeUMF7DsRd7nurWOR2ar+QEJCvbOidXHglOM1X9DBa8Iv/rGKfZpoTeN4f72ffXtqkl4j/5QaY2i5myNv9U7NZFaUK40SK9Fv",
134
- "brillig_names": [
135
- "sync_notes"
136
- ]
137
- },
138
6
  {
139
7
  "name": "entrypoint",
140
8
  "is_unconstrained": false,
@@ -1923,8 +1791,8 @@
1923
1791
  "visibility": "databus"
1924
1792
  }
1925
1793
  },
1926
- "bytecode": "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",
1927
- "debug_symbols": "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",
1794
+ "bytecode": "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",
1795
+ "debug_symbols": "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",
1928
1796
  "brillig_names": [
1929
1797
  "get_auth_witness",
1930
1798
  "decompose_hint",
@@ -3569,8 +3437,8 @@
3569
3437
  "visibility": "databus"
3570
3438
  }
3571
3439
  },
3572
- "bytecode": "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",
3573
- "debug_symbols": "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",
3440
+ "bytecode": "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",
3441
+ "debug_symbols": "7Z3fjtzG0cXfRde6YHdX//OrBEYg20ogQJAMWQ4QGHr3zEhLzuxw3IxwlpxS1fkuPmST3lbVjz3FOuTsqb9e/fb2lz///c93H/718Y9XP/3jr1fvP/765vO7jx9OP/31KsSv/90fv7/5cP7xj89vPn1+9VMoJb5+9fbDb+f/WOOX16/+9e7921c/lfTl9WpxjKU+LY6x9WVxr/cWd2lPi9MUw3hxKJLyEofIZe9Y+r3NQyxzJEHyZXUr93ZPJc2bS5ierf759auQSOZvyAjJ/A2ZTDJ/Q6bAZGTq82IJsS2LW/j6D9S9/4H2nf/A+Xf6vd/p08y1p7JxGnqMywU+X9V5cb63eKqlz1ds6tPV8ntXrJU+x9FqShunoclyGppU2Vid8rxY4tVZKHcP/EI9pimPF4cUFtwphY3FU5hxhKm068WnaxMnXhu11ybw2qi9NpHXZvPa1IVgfB7GPdy1zhuH2jN0bRKvjdprI7w2aq9NBq9NCnnu2lPoaXxtTr3lEngKctMzxqIolqoolqYolq4nljQpiiUoiiUqiiUpikUUxaKo7iZFdTcpqrtJUd1NiuquKKq7oqjuiqK6K4rqriiqu6Ko7oqiuiuK6q4oqruiqO5mRXU3K6q7WVHdzYrqblZUd7OiupsV1d2sqO5mRXU3K6q7RVHdLYrqblFUd4uiulsU1d2iqO4WRXW3KKq7RVHdLYrqblVUd6uiulsV1d2qqO5WRXW3Kqq7VVHdrYrqblVUd6uiutsU1d2mqO42RXW3Kaq7TVHdbYrqblNUd5uiutsU1d2mqO52RXW3K6q7XVHd7Yrqbj+27qZ4iaVs/S2HyNPaePWVsyJ3lpY+hae1pYfLt/XC3e/fXTZu8SqI0+IzkEwgz4EUAnkOpBLIcyCNQJ4D6QTyDEiYJhK5IRJI5IZIJJEbIolEbogIidwQYb96S4QN6y0Rdqy3RNiy3hJhz3pDJLBnvSXCnvWWCHvWWyLsWW+JCIncEGHPekuEPestEfast0TYs94SYc96QySyZ70lwp71lgh71lsi7FlviQiJ3BBhz3pLhD3rLRH2rLdETPSsNS5GsTUWWSVpog3dSDKZ6Cy3kjTRLNbYZ7e2ev2NvzlJE/3fVpImWrqtJMVDkiYar60kTfRSW9XVRHu0laSHjicZ6XiGn0kx0vGMk/TQ8YiHjkc8dDwH28A9KEkPHY946HjEQ8cjHjoe8fCMJ3t4xpM9dDzZQ8eTPXQ8BxswPihJDx1PNtLxjJM00vGMkzTS8YyT9PCMp3joeIqRjmecpJGOZ5ykkY5nnKR4SNJDx1M8dDzFQ8dTPHQ8xUPHUz281aoenvFUD894qodnPAebDj+m46lGOp5xkh7ealUPb7Wqh7da1UPH0zx0PM1Dx9M8dDzNQ8dzsN33g5L08IyneXjG0zw842keOp7m4Xs83cNbre7hrVb38Fare+h4bBjtbyXpoeOxYYi/laSHjseGcf1Wkg6e8UQb/vJbSTp4xhNtuMCPO55ow9h9K0nxkKSDt1rRhqP6VpIOOp5ow/d8K0kPHY8Nd/KtJD10PDY8xLeSdPCMJ9pw+t5K0sEznmjDj3uj47Fhsb2VpIO3WtGGEfZGkja8rbeS9NDx2HCg3krSQ8djwyd6K0kPHY8NN+etJD0847HiuTxO0sMzHg+ey9GK5/I4SQ9vtax4Lo+TFA9Jeuh4rHguj5P00PFY8VweJ+mh4/HguRw9eC5HD57L0YPncrTiuTzseKx4Lo+T9PBWy4PncvTguRyteC4Pq6sVz+Vxkh46Hg+ey9GD53L04LkcPXguRw+ey9GD53K04rk87HiseC4Pk/TguRw9eC5HD57L0Yrn8rC6WvFcHifpoePx4LkcPXguRw+ey9GD53L04LkcPXguRyuey8OOx4rn8jhJ8ZCkh7daHjyXoxXP5XF19dDxePBcjh48l6MHz+XowXM5evBcjh48l6MHz+VoxXN52PFY8VweJ+nhrZYHz+XowXM5WvFcHlZXK57L4yQ9dDwePJejB8/l6MFzOXrwXI4ePJejB8/lZMVzedTxJCuey+MkHbzVSh48l9MkHpJ00PEkK57L4yQddDzJg+dy8uC5nDx4LicPnsvJg+dy8uC5nKx4Lg87Hiuey+MkHbzVSh48l5MHz+VkxXN5WF2teC6Pk/TQ8XjwXE4ePJeTB8/l5MFzOXnwXE4ePJeTFc/lYcdjxXN5mKQHz+XkwXM5efBcTlY8l4fV1Yrn8jhJDx2PB8/l5MFzOXnwXE4ePJeTB8/l5MFzOVnxXB52PFY8l8dJiockPbzV8uC5nKx4Lo+rq4eOx4PncvLguZw8eC4nD57LyYPncvLguZw8eC4nK57Lw47HiufyOEkPb7U8eC4nD57LyYrn8rC6WvFcHifpoePx4LmcPHguJw+ey8mD53Ly4LmcPHguJyuey8OOx4rn8jhJD2+1PHguJw+ey8mK5/K4unroeDx4LicPnsvJg+dy8uC5nDx4LicPnsvJg+dysuK5POx4rHguj5P08FbLg+dy8uC5nKx4Lg+rqxXP5XGSHjoeD57LyYPncvLguZw8eC4nD57LyYPncrLiuTzseKx4Lo+SFA+ey+LBc1k8eC6LFc/lUXWVSTwk6aDjEQ+ey+LBc1k8eC6LB89l8eC5LB48l8WK5/Kw47HiuTxOUjwk6eCtlnjwXBYrnsvj6uqh4/HguSwePJfFg+eyePBcFg+ey+LBc1k8eC6LFc/lYcdjxXN5nKSDt1riwXNZPHguixXP5WF1teK5PE7SQ8fjwXNZPHguiwfPZfHguSwePJfFg+eyWPFcHnY8VjyXx0l6eKvlwXNZPHguixXP5XF19dDxePBcFg+ey+LBc1k8eC6LB89l8eC5LB48l8WK5/Kw47HiuTxO0sNbLQ+ey+LBc1mseC4Pq6sVz+Vxkh46Hg+ey+LBc1k8eC6LB89l8eC5LB48l8WK5/Kw47HiuTxM0oPnsnjwXBYPnstixXN5WF2teC6Pk/TQ8XjwXBYPnsviwXNZPHguiwfPZfHguSxWPJeHHY8Vz+VxkuIhSQ9vtTx4LosVz+VxdfXQ8XjwXBYPnsviwXNZPHguiwfPZfHguSwePJfFiufysOOx4rk8TtLDWy0PnsvZg+dytuK5PKqu2Yrn8jhJBx1PnsRDkg46nuzBczl78FzOHjyXswfP5WzFc3nY8VjxXB4n6eCtVvbguZw9eC5nK57L4+rqoePx4LmcPXguZw+ey9mD53L24LmcPXguZw+ey9mK5/Kw47HiuTxO0sFbrezBczl78FzOVjyXh9XVg+dytuK5PE7SwzMeK57L4yTFQ5IenvFY8VweX0kPHY8Vz+Vxkh6+x+PBczlb8VweVlcrnsvjJD0847HiuTxO0kbHIzHPSUqsqyT1djx5mjfOTcZJhtj6sm8Ky+Ik9VuWelue78oyt0uWZZ2l3p7ne7KUFOd9RfI6S71Nzwtmqdh3+SWz1Nv2vGSWevuel8xSb+PzklmKjSzztGRZ0jpLva3PS2Zpo/fZytJG77OVpZHeZyNLI73POEvFDszfdycJlyxlnaWR3qcuykt6XGdppPfZyNJI77ORpbjI0kjvs5Glkd5nI0sjvU+f14YcpnWWRnqfjSyN9D7jLBV7Mb9klkZ6n40sjfQ+G1la6X3aJcv1GwTFfszfk+Xp6fm8bwnPldedt0xTmxVMDDdvVe4kWMuSYLvaOzwBtNFWPRCgjY7tgQBtNIMPBGijz3wgQBst7J4AW59Xp74GqNi3+wcBaKPxfiBAGz39AwHakAsPBCgEiAGkEgEBUomAAD0qkRgXgLH0jdWnxzH58jjmsncMd69NWLaeUhsvTrHPO6f0fPHXS+NR42i5NDKlGZ3kvLo0HtXTj/GpUTxdwPunRvFMBPefGo9aMv4YnxqPKnXHS5Pi/HYtprr+IIhH2kttONGZNlaXPs3XpvTw7K+41ovb5c/DWrxK8OlPvhRP5LBI26NYfhxtl8r6YbRdiuWH0Xapfx9EuygeH2ORtkuV+jDaLoXnw2i71JIPoy2kfSBtaskjaVNLHkmbWvJI2tSSR9KmljyQtuLBXBZpU0seSZta8kja1JJH0hbSPpA2teSRtKklj6RNLXkkbWrJI2lTSx5IW/HIQ4u0qSWPpE0teSRtaskjaQtpH0ibWvJI2tSSR9KmljySNrXkxurxaKuieCzrjwFQ8cjXHwQgRdwmwNEkrKJ4VO0PApBSCwQoBIgBpCACAVLjgHdhyhYQIJUICJBKBKuBikcx/yAAqURAgFQiIEAqERCgECAGkEoEBEglgvWBRqaBPxAglQgIkEoEA2hkPPoDAVKJYHdhI0PdHwiQSgQEKASIAaQSAQFSiYAAqURAgFQiIEAqEQxgoRLBlEihEgEBUomAAKlEQIBCgBhAKhHwLkwlAgKkEgEBUomAAKlEMICVSgQESCUCAqQSAQFSiYAAhQAhJVKpRECAVCIgQCoRECCVCAiQSgS7CzcqERAglQgIkEoEBEglAgIUAsQAUomAAKlEQIBUIiBAKhFMiTQqEQxgpxIBAVKJgACpRECAVCLYXbgLAWIAqURAgFQiIEAqERAglQgIkEoEAlgnKhEQIJUICJBKBFIidaISAQEKAWIAqURAgFQiIEAqEfAuTCUCAqQSwQAGKhEQIJUICJBKBARIJQICFALEAFKJgACpRDAlEqhEQIBUIiBAKhEMIGfZowCpRLC7MCfOowCpRECAQoAYQCoRECCVCAiQSgQESCUCAqQSwQByxjqoRDhjHQVIJQICpBIBAQoBYgCpRMC7MJUICJBKBARIJQICpBLBAHLGOgqQSgQESCUCAqQSAQEKAUJKhDPWUYBUIiBAKhEQIJUICJBKBLsLc8Y6CpBKBARIJQICpBIBAQoBYgCpRECAVCIgQCoRECCVCKZEOGMdBMgZ6yhAKhEQIJUICJBKBLsLc8Y6CpBKBARIJQICpBIBAVKJgACpRDCAnLGOAqQSAQFSiWBKhDPWUYBCgBhAKhEQIJUICJBKBLwLU4mAAKlEMICcsY4CpBIBAVKJgACpRECAQoAYQCoRECCVCKZEOGMdBUglAgKkEsEAcsY6CpBKBLsLc8Y6CpBKBAQoBIgBpBIBAVKJgACpRECAVCIgQCoRCGDjjHVMiTTOWEcBUomAAKlEQIBCgBhAKhHwLkwlAgKkEgEBUomAAKlEMICcsY4CpBIBAVKJgACpRECAQoCQEuGMdRQglQgIkEoEBEglAgKkEsHuwpyxjgKkEgEBUomAAKlEQIBCgBhAKhEQIJUICJBKBARIJYIpEc5YBwFyxjoKkEoEBEglAgKkEsHuwpyxjgKkEgEBUomAAKlEQIBUIiBAKhEMIGesowCpRECAVCKYEuGMdRSgECAGkEoEBEglAgKkEgHvwlQiIEAqEQwgZ6yjAKlEQIBUIiBAKhEQoBAgBpBKBARIJYIpEc5YRwFSiYAAqUQwgJyxjgKkEsHuwpyxjgKkEgEBCgFiAKlEQIBUIiBAKhEQIJUICJBKBAPIGeugEuGMdRQglQgIkEoEBCgEiAGkEgHvwlQiIEAqERAglQgIkEoEA8gZ6yhAKhEQIJUICJBKBAQoBAgpEc5YRwFSiYAAqURAgFQiIEAqEewuzBnrKEAqERAglQgIkEoEBCgEiAGkEgEBUomAAKlEQIBUIpgS4Yx1DGDnjHUUIJUICJBKBARIJQLdhfskBIgBpBIBAVKJgACpRECAVCIgQCoRDCBnrKMAqURAgFQimBLhjHUUoBAgBpBKBARIJQICpBIB78JUIiBAKhEMIGesowCpRECAVCIgQCoREKAQIAaQSgQESCWCKRHOWEcBUomAAKlEMICcsY4CpBLB7sKcsY4CpBIBAQoBYgCpRECAVCIgQCoRECCVCAiQSgQDyBnroBLhjHUUIJUICJBKBAQoBIgBpBIB78JUIiBAKhEQIJUICJBKBAPIGesoQCoRECCVCAiQSgQEKAQIKRHOWEcBUomAAKlEQIBUIiBAKhHsLswZ6yhAKhEQIJUICJBKBAQoBIgBpBIBAVKJgACpRECAVCKYEuGMdRAgZ6yjAKlEQIBUIiBAKhHsLswZ6yhAKhEQIJUICJBKBARIJQICpBLBAHLGOgqQSgQESCWCKRHOWEcBCgFiAKlEQIBUIiBAKhHwLkwlAgKkEsEAcsY6CpBKBARIJQICpBIBAQoBYgCpRECAVCKYEuGMdRQglQgIkEoEAhgmDlmHCVKLQPfhE0GKEZQg1QhKUEgQJEg9ghKkIEEJUpGgBClJUILUJCBBjltHNQnnrcMEqUlQgtQkKEEhQZAgNQl6L6YmQQlSk6AEqUlQgtQkIEEOXocJUpOgBKlJUILUJChBIUFMk3D6OkyQmgQlSE2CEqQmQQlSk4D3Yo5gR88gZ7DDBKlJUILUJChBIUGQIDUJei+mJkHPIDUJSpCaBCVITQIS5DB2mCA1CXgv5jh2mCA1CUpQSBAkSE2yRVDivPr0H+uaoEdNctk55lierf4GxYbMKLEuUCTcSdOGFihtmvetYbqTpo2GfStNI4PFN9O00fpupmmjP91M00YTuZmm+EjTRju2maaNnmkzTSNd0FaaProgI+OSt9I0MtR4M00fXZCRAcGbafrogowM291M00cXZGRw7WaaProgI0NgN9P00QUZGai6maaPLsjIcNLNNH10QUYGfW6m6aMLMjI0czNNH12QkQGUm2n66II0D3Ps4WltyWGcZkpTmoM4RbEsPr26vrd6inEJWdpldb8Xcyt9jrnVdEkwln5vtSwZNqmysTrlebFcfUvh/Lp9tTTGPgcd05THi0MKceGcwsbiKSxfDDhpnOvF346I4g6SR0THEVHcffOI6DgiipULj4iOIyI8Ijwi4yOiWDHziOg4IoqfNvCI6Dgiip/U8IjoOCKKn3LxiOg4IoqfEPKIqDgimgdU84joOCJ8usojsnFE+HSVR2TjiPDpKo/IxhERHhEekfER4dPVH+SI1OVCxudh3ONc68K59gweET5d5RHZOCJGnq7m+ZtTKYewcUR40Y08L+VF/56LbuQJKC/6/3/Rw2TjmWYuy0Uvk2xc9CiLd1KUduUQddc6KYjMi0O5xBHaE0AbT/x2BBjD3J3FeAXjBPBOyHVem/ulkXuy7gqTjUdne7LOy+LYIsTaxjOoHVmnGhZh3+u6MAgBjgHmaXkykiWMD2vIbXb1C2VKa9o2Hnb8KLRtPDfQQrumsDR0WaCqbUOtG7wwNhS1mguzwD5JIKyntKF67V2YYESZSrxcmLxxYUSW9z9y+r/xhUm1LPm1KwvgUJ8AGlGm+wFsSxip3wNoRG4+DqARDfk4gEKAGEAjsvBxAI0ovccBNKLIHgfQiHJ6HEAjCudhAKNBJbL1LZnzzLI5iqmGMcAc+vyOLMcga4AGlcixAA0qkWMBGlQixwIUAhwDjFIWgKWsARpUIscCNKhEjgVoUIkcC9CgEnlZgGX5SkSuYaPrriXN+dXS7nTdBmWLXtqJGmeDdgsL7ZYjSJuC6EVp9xlGrSGsaVM9HUn7WKkV24X2VRE87fwtGlEVDV9HfNl4FCfLn3K1XNeHi68jQIAvKQLiFK4BfvsH7jbJoZTlD1tL3SBZU2pzhUlXd88W7sWzfAlCrnug1L/8fPrpl0/v3r9/9+9/vv/465vP7z5++OP8m9P5/90HUdv8L7d0FeXdy7L8FUa+emZcvnK+D+GlNu87bi7TnpuHPTePe25+96bWlnParm6xdzdPy+ap1uul581lz83znpuXPTeve27e9ty877j5/anXL7V52HPzuOfme35C856f0LznJzTv+QnNe35C856f0LznJ7Ts+Qkt6AWVaX7RI1O53RzFkmURkqWOl5Zp3rXE6y8KyzmQOmkJJGgJJGoJJGkJRLQEkrUEUrQEUrUE0rQEoqWyNi2VtWmprE1LZW1aKmvTUlmblsratFTWdmQdWZwvrp9oPgXSj/zULA8Py5WFyRwI/KkJywC+q93vN+a9p6V5vuqez95h51BETyhZTyjluFBkWv5i96RzZBVK1RNK0xNKPzKU2pdQerwN5W/8iB4US1AUS1QUS3pMLKfDsY5FFMWSFcVyZNGNYd5W4rVr7RxLVRRLUxTLkXU3XrnRlb6KJUyKYgmKYomKYjmy7qbLY+IU6joWURRLVhRLURRLfVAsMa9jaYpi6XpiiUfWXVm+GySSyzqWoCiWqCiWpCiWI+uutEU2Spd1LFlRLEVRLFVRLEfW3RwXTZJlrRtj1xNLmhTFEhTFEh8US15r2JQUxSKKYjmy7payaJJS15okFUWxVEWxNEWxHFl366XfraGtYpFJUSxBUSxRUSxH1t2al363lrWGFVEUS1YUS1EUS31QLHWtp6UpiqXriSXvVne/7h523T3uunvadXe0fpXFqrfkvto977p72XX3uufuh345dPQ9mXDot0MXR4DSyjqSoiaSqiaSpiaSriWSQ78iOo4kqIlEy9fdwqHfEh1HImoiyWoiKWoiqWoiaWoi6Voi6ZOaSIKaSNTU2K6mxnY1NRb+7uzoDw8D/HXYq/emJa927zvuHuHvrI53D7vujn7mJF2ePZfV7mnX3WXX3fOuu5ddd6+77t523b2/3O7XTjPfdoe/5zjePey6O/xZjct3Ba6GDM+7p113l113z7vuXnbdve66e9t1977n7vB348a7h1133/WzGnf9rMb9PqunH8J54f2DE6bFhzBMKV+1oHf+kctLzBri9dKvN5F9tw/49mluyqr02+3jC2w/t/K1pNvtE759mx+919Xk4/un5+W2z/D2bXH1a7K6tOUFtp9n57Zcbrev+PZ1vrRtDae94Pb95tyffoiDz25YxkSep53+f0f69Ep9+Z2yMS3yPNz2snrqV//EN6+/dF58/110XkbQ52t70/R11OT9V8bjX+nf/Sv3X8COfyV85698Of34nzef3r355f3bs9Ph+X/988Ovs/Hh6cfP//19/l9ma8TfP3389e1vf356ezZJvPgjnsONUl/H0n7+yvYfMZ5+SvXn818unX883Q+ipPOP5zhj6a9jDZcKf15zqkKnX1gOztf/anqd8nK5zvum8FrCvOvpLXZup0ROyfwP",
3574
3442
  "brillig_names": [
3575
3443
  "get_auth_witness",
3576
3444
  "decompose_hint",
@@ -3671,39 +3539,144 @@
3671
3539
  "brillig_names": [
3672
3540
  "compute_note_hash_and_optionally_a_nullifier"
3673
3541
  ]
3542
+ },
3543
+ {
3544
+ "name": "sync_notes",
3545
+ "is_unconstrained": true,
3546
+ "custom_attributes": [],
3547
+ "abi": {
3548
+ "error_types": {
3549
+ "17843811134343075018": {
3550
+ "error_kind": "string",
3551
+ "string": "Stack too deep"
3552
+ }
3553
+ },
3554
+ "parameters": [],
3555
+ "return_type": null
3556
+ },
3557
+ "bytecode": "H4sIAAAAAAAA/7WTyw7CIBBFqcUo0sTEx39MU0y7dOHafyCtLHVRN+766dZkJkyI0QVwEzJMgMNcHoXwKjBKESGCHDEqjAs2Xs7tjDnEqVbBvin5HRijvvhLWH+jkFnk4QPxM50/rJBzmTyfe6F913PTrF8J/z5y+af7y+l//8OzRq9bzCvh/8P4uvfXx/M2ij/SbJGc0ptoOwAqvkT+EvmhJBvn8w+Yb4Svj6KMqNO1tnaNdfZkh8H0dhfwP+KH/QbzqHp4zgQAAA==",
3558
+ "debug_symbols": "bY/RCoMwDEX/Jc99SCqO6a/IkKpRCqWVWgdD/PfFIeI2X8K94eSSu0DHzTzU1vdhgrJawIXWJBu8uGVV0ETrnB3q8xpwG5R9+Gk0frNTMjFBeUMF7DsRd7nurWOR2ar+QEJCvbOidXHglOM1X9DBa8Iv/rGKfZpoTeN4f72ffXtqkl4j/5QaY2i5myNv9U7NZFaUK40SK9Fv",
3559
+ "brillig_names": [
3560
+ "sync_notes"
3561
+ ]
3562
+ },
3563
+ {
3564
+ "name": "process_log",
3565
+ "is_unconstrained": true,
3566
+ "custom_attributes": [],
3567
+ "abi": {
3568
+ "error_types": {
3569
+ "16541607464495309456": {
3570
+ "error_kind": "fmtstring",
3571
+ "item_types": [],
3572
+ "length": 16
3573
+ },
3574
+ "17843811134343075018": {
3575
+ "error_kind": "string",
3576
+ "string": "Stack too deep"
3577
+ }
3578
+ },
3579
+ "parameters": [
3580
+ {
3581
+ "name": "log_plaintext",
3582
+ "type": {
3583
+ "fields": [
3584
+ {
3585
+ "name": "storage",
3586
+ "type": {
3587
+ "kind": "array",
3588
+ "length": 18,
3589
+ "type": {
3590
+ "kind": "field"
3591
+ }
3592
+ }
3593
+ },
3594
+ {
3595
+ "name": "len",
3596
+ "type": {
3597
+ "kind": "integer",
3598
+ "sign": "unsigned",
3599
+ "width": 32
3600
+ }
3601
+ }
3602
+ ],
3603
+ "kind": "struct",
3604
+ "path": "std::collections::bounded_vec::BoundedVec"
3605
+ },
3606
+ "visibility": "private"
3607
+ },
3608
+ {
3609
+ "name": "tx_hash",
3610
+ "type": {
3611
+ "kind": "field"
3612
+ },
3613
+ "visibility": "private"
3614
+ },
3615
+ {
3616
+ "name": "unique_note_hashes_in_tx",
3617
+ "type": {
3618
+ "fields": [
3619
+ {
3620
+ "name": "storage",
3621
+ "type": {
3622
+ "kind": "array",
3623
+ "length": 64,
3624
+ "type": {
3625
+ "kind": "field"
3626
+ }
3627
+ }
3628
+ },
3629
+ {
3630
+ "name": "len",
3631
+ "type": {
3632
+ "kind": "integer",
3633
+ "sign": "unsigned",
3634
+ "width": 32
3635
+ }
3636
+ }
3637
+ ],
3638
+ "kind": "struct",
3639
+ "path": "std::collections::bounded_vec::BoundedVec"
3640
+ },
3641
+ "visibility": "private"
3642
+ },
3643
+ {
3644
+ "name": "first_nullifier_in_tx",
3645
+ "type": {
3646
+ "kind": "field"
3647
+ },
3648
+ "visibility": "private"
3649
+ },
3650
+ {
3651
+ "name": "recipient",
3652
+ "type": {
3653
+ "fields": [
3654
+ {
3655
+ "name": "inner",
3656
+ "type": {
3657
+ "kind": "field"
3658
+ }
3659
+ }
3660
+ ],
3661
+ "kind": "struct",
3662
+ "path": "authwit::aztec::protocol_types::address::aztec_address::AztecAddress"
3663
+ },
3664
+ "visibility": "private"
3665
+ }
3666
+ ],
3667
+ "return_type": null
3668
+ },
3669
+ "bytecode": "H4sIAAAAAAAA/92c927bMBDG5URKIieOndG9927leHeme+/W/dsdfosWAtqHSPu09Zfw7DPDAilCovkqQJCto+9+PFHUiTy6EG1s3cFeMJ9jc5w2R5xfjMY3Kbtqjtn2tqpHXVkoxgIB4wQB4yQBY0zAmBAwThEwThMwzhAwpgSMRQLGWQLGOQLGEgHjPAFjmYCxQsC4EIAxBOciCeeSR04d24fiXY52fhvdRcC4m4BxDwHjXgLGfQSM+wkYDxAwHiRgPETAeJiA8QgB41ECxmMEjMcJGE8QMJ4kYDxFwHiagPEMAeNZAsZzBIznCRgvEDBeJGC8RMB4mYDxCgFjRsBYJWBcIWCsETDWCRgbBIxNAsYWAWObgLFDwHiVgPEaAeN1AsYbBIw3CRhvETCuEjDeJmC8Q8B4l4DxHgHjfQLGBwSMDwkYHxEwPiZgfELA+JSA8RkB43MCxhcEjC8JGF8RML4mYHxDwPg2AGMIzncknO9JOLuBOKMPFvTEYMfCLSyMwsIjLOzBwhksTMHCDyyswMIFLAxA4j0S25E4XhnsSHxGUjESdpEEiyRTJHEiSRJJiEjyQxIdktSQBIYkKyQxIUno6GA/NtiRRIIkDSRBIMkAk/iYJMckNCZ5MYmKSUpMAmKSDZNYmCRCrTDJgUkEDNJjEByDzBjExSApBiExyIdBNAxSYRAIgywYxJBBArzk4iUSL2l4CcJLBoJ4BMkIQhHkIYhCkIIgAA9ZPMTwkEAnjE4OnQhuUtwAaFzd6M+bNJIf5pia44SSe1xEV00tuz71t7POx9RRP4/8tdTonAmiv9ES/WkY/kwW2t7LR/p1XcTupDl285Evu/k4k5RZU2XWrDJSnzDXu14P66/qSsnyUaTqIraLYWzXCpY9fV20TOwXo5Btc2NRsrYnPLZ/pO8oSZl8xFOwZHG+uR4iS5RMri/snFfl7LY1Y8mEBZu035LyjWwfjEyuaax0+muvjXbY9lrP/l17rVf/x/YaW7I431yPv22vum3Z7TWJRpv0pSKbUrKflmxayX7lI9sNxdE0n8P2yRvPYH3v+X6GLTn4tS1s0/nIH9IGJ9W5RPlv3T+6vCVLlSzOx+0UzfdY2dG6hCOxytfN97I5TqnfyO8rDvtTlv0xbsc52y+po3zqKI+2dsl8njU72tA3+U20+d7Fvmq+Z9vamh1XP+lPf6vm6gs98n8R/bNB9NeH+ufC8A/jqlIY/w/1z4fh74v+chj9TdFfCaO/IfoXguhfGcYJ+s927DhhSZ33GNduOU4Q+0WLNVScsGTx2P7RcQJkyw7WikNm9wHLDjvLDjsuXfMedS141FXcoXUsedRV8agr9ajL53Wc86jLp7/KHnXNeNTls9379Jdcx7DjVVnmitOiAPqLYfQP+37po/W7ma6T2E+s8l8tP88F8fNoHEr6M+0LVyzl0/ZWn9div+TgEe6iQ7adP0D70mj3O+1GZxDSV5srnaxg6RdW+5x+L9L9iy7veva74j6Pvs5cYxBl5VdssZLNW7JEyYRRj0G44mKf/Fvxv7Zfccjs/nmr13IxGm9r+n6cjUb3c5z7r3urvfHHLuuMRn8SjY8xRpb9xCr/3Xy3+7rt3iP9Vq/ar/X6vUbv8+f6p96ipV/7EH76DXVGL3ipUwAA",
3670
+ "debug_symbols": "tZZBCoMwEEXvknUWzli17VVKKVGjBEKUqIUi3r2jSCvt+m9CJkzekMULf1a1Laf24ULTDep6m5XvKjO6Lkg1L1qV0Xnv2sfxWCXrQglvF4behLUeRhNHdc0TrWyoZXOW643zVrbpov8aC94bi+LTmPFy10JOYeQTjJzByDmMXMDIZxj5giJTAiMTjAxzkGAOEsxBgjlIMAcJ5iDBHCSYgwxzkGEOMsxBhjnIGAcXqZ4mOlN6uweIZgrVIU+Mr97+RIs+dpWtp2jXkPHNF+vbT6wz3n59KYhzTSnJEBn0Bg==",
3671
+ "brillig_names": [
3672
+ "process_log"
3673
+ ]
3674
3674
  }
3675
3675
  ],
3676
3676
  "outputs": {
3677
3677
  "globals": {},
3678
3678
  "structs": {
3679
3679
  "functions": [
3680
- {
3681
- "fields": [
3682
- {
3683
- "name": "parameters",
3684
- "type": {
3685
- "fields": [
3686
- {
3687
- "name": "inner_hash",
3688
- "type": {
3689
- "kind": "field"
3690
- }
3691
- }
3692
- ],
3693
- "kind": "struct",
3694
- "path": "SchnorrSingleKeyAccount::verify_private_authwit_parameters"
3695
- }
3696
- },
3697
- {
3698
- "name": "return_type",
3699
- "type": {
3700
- "kind": "field"
3701
- }
3702
- }
3703
- ],
3704
- "kind": "struct",
3705
- "path": "SchnorrSingleKeyAccount::verify_private_authwit_abi"
3706
- },
3707
3680
  {
3708
3681
  "fields": [
3709
3682
  {
@@ -3886,6 +3859,33 @@
3886
3859
  ],
3887
3860
  "kind": "struct",
3888
3861
  "path": "SchnorrSingleKeyAccount::entrypoint_abi"
3862
+ },
3863
+ {
3864
+ "fields": [
3865
+ {
3866
+ "name": "parameters",
3867
+ "type": {
3868
+ "fields": [
3869
+ {
3870
+ "name": "inner_hash",
3871
+ "type": {
3872
+ "kind": "field"
3873
+ }
3874
+ }
3875
+ ],
3876
+ "kind": "struct",
3877
+ "path": "SchnorrSingleKeyAccount::verify_private_authwit_parameters"
3878
+ }
3879
+ },
3880
+ {
3881
+ "name": "return_type",
3882
+ "type": {
3883
+ "kind": "field"
3884
+ }
3885
+ }
3886
+ ],
3887
+ "kind": "struct",
3888
+ "path": "SchnorrSingleKeyAccount::verify_private_authwit_abi"
3889
3889
  }
3890
3890
  ]
3891
3891
  }
@@ -3913,7 +3913,7 @@
3913
3913
  },
3914
3914
  "18": {
3915
3915
  "path": "std/field/bn254.nr",
3916
- "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n /// Safety: borrow is enforced to be boolean due to its type.\n /// if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n /// if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n /*@safety: borrow is enforced to be boolean due to its type.\n if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n */\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n /// Safety: decomposition is properly checked below\n unsafe {\n /*@safety: decomposition is properly checked below*/\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n /// Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n /// Safety: unsafe in unconstrained\n unsafe {\n //@safety: unsafe in unconstrained\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n /// Safety: Take a hint of the comparison and verify it\n unsafe {\n //@safety: Take a hint of the comparison and verify it\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"
3916
+ "source": "use crate::field::field_less_than;\nuse crate::runtime::is_unconstrained;\n\n// The low and high decomposition of the field modulus\nglobal PLO: Field = 53438638232309528389504892708671455233;\nglobal PHI: Field = 64323764613183177041862057485226039389;\n\npub(crate) global TWO_POW_128: Field = 0x100000000000000000000000000000000;\nglobal TWO_POW_64: Field = 0x10000000000000000;\n\n// Decomposes a single field into two 16 byte fields.\nfn compute_decomposition(mut x: Field) -> (Field, Field) {\n // Here's we're taking advantage of truncating 64 bit limbs from the input field\n // and then subtracting them from the input such the field division is equivalent to integer division.\n let low_lower_64 = (x as u64) as Field;\n x = (x - low_lower_64) / TWO_POW_64;\n let low_upper_64 = (x as u64) as Field;\n\n let high = (x - low_upper_64) / TWO_POW_64;\n let low = low_upper_64 * TWO_POW_64 + low_lower_64;\n\n (low, high)\n}\n\npub(crate) unconstrained fn decompose_hint(x: Field) -> (Field, Field) {\n compute_decomposition(x)\n}\n\nunconstrained fn lte_hint(x: Field, y: Field) -> bool {\n if x == y {\n true\n } else {\n field_less_than(x, y)\n }\n}\n\n// Assert that (alo > blo && ahi >= bhi) || (alo <= blo && ahi > bhi)\nfn assert_gt_limbs(a: (Field, Field), b: (Field, Field)) {\n let (alo, ahi) = a;\n let (blo, bhi) = b;\n /// Safety: borrow is enforced to be boolean due to its type.\n /// if borrow is 0, it asserts that (alo > blo && ahi >= bhi)\n /// if borrow is 1, it asserts that (alo <= blo && ahi > bhi)\n unsafe {\n let borrow = lte_hint(alo, blo);\n\n let rlo = alo - blo - 1 + (borrow as Field) * TWO_POW_128;\n let rhi = ahi - bhi - (borrow as Field);\n\n rlo.assert_max_bit_size::<128>();\n rhi.assert_max_bit_size::<128>();\n }\n}\n\n/// Decompose a single field into two 16 byte fields.\npub fn decompose(x: Field) -> (Field, Field) {\n if is_unconstrained() {\n compute_decomposition(x)\n } else {\n /// Safety: decomposition is properly checked below\n unsafe {\n // Take hints of the decomposition\n let (xlo, xhi) = decompose_hint(x);\n\n // Range check the limbs\n xlo.assert_max_bit_size::<128>();\n xhi.assert_max_bit_size::<128>();\n\n // Check that the decomposition is correct\n assert_eq(x, xlo + TWO_POW_128 * xhi);\n\n // Assert that the decomposition of P is greater than the decomposition of x\n assert_gt_limbs((PLO, PHI), (xlo, xhi));\n (xlo, xhi)\n }\n }\n}\n\npub fn assert_gt(a: Field, b: Field) {\n if is_unconstrained() {\n assert(\n /// Safety: already unconstrained\n unsafe { field_less_than(b, a) },\n );\n } else {\n // Decompose a and b\n let a_limbs = decompose(a);\n let b_limbs = decompose(b);\n\n // Assert that a_limbs is greater than b_limbs\n assert_gt_limbs(a_limbs, b_limbs)\n }\n}\n\npub fn assert_lt(a: Field, b: Field) {\n assert_gt(b, a);\n}\n\npub fn gt(a: Field, b: Field) -> bool {\n if is_unconstrained() {\n /// Safety: unsafe in unconstrained\n unsafe {\n field_less_than(b, a)\n }\n } else if a == b {\n false\n } else {\n /// Safety: Take a hint of the comparison and verify it\n unsafe {\n if field_less_than(a, b) {\n assert_gt(b, a);\n false\n } else {\n assert_gt(a, b);\n true\n }\n }\n }\n}\n\npub fn lt(a: Field, b: Field) -> bool {\n gt(b, a)\n}\n\nmod tests {\n // TODO: Allow imports from \"super\"\n use crate::field::bn254::{assert_gt, decompose, gt, lte_hint, PHI, PLO, TWO_POW_128};\n\n #[test]\n fn check_decompose() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_decompose_unconstrained() {\n assert_eq(decompose(TWO_POW_128), (0, 1));\n assert_eq(decompose(TWO_POW_128 + 0x1234567890), (0x1234567890, 1));\n assert_eq(decompose(0x1234567890), (0x1234567890, 0));\n }\n\n #[test]\n unconstrained fn check_lte_hint() {\n assert(lte_hint(0, 1));\n assert(lte_hint(0, 0x100));\n assert(lte_hint(0x100, TWO_POW_128 - 1));\n assert(!lte_hint(0 - 1, 0));\n\n assert(lte_hint(0, 0));\n assert(lte_hint(0x100, 0x100));\n assert(lte_hint(0 - 1, 0 - 1));\n }\n\n #[test]\n fn check_assert_gt() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n unconstrained fn check_assert_gt_unconstrained() {\n assert_gt(1, 0);\n assert_gt(0x100, 0);\n assert_gt((0 - 1), (0 - 2));\n assert_gt(TWO_POW_128, 0);\n assert_gt(0 - 1, 0);\n }\n\n #[test]\n fn check_gt() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n unconstrained fn check_gt_unconstrained() {\n assert(gt(1, 0));\n assert(gt(0x100, 0));\n assert(gt((0 - 1), (0 - 2)));\n assert(gt(TWO_POW_128, 0));\n assert(!gt(0, 0));\n assert(!gt(0, 0x100));\n assert(gt(0 - 1, 0 - 2));\n assert(!gt(0 - 2, 0 - 1));\n }\n\n #[test]\n fn check_plo_phi() {\n assert_eq(PLO + PHI * TWO_POW_128, 0);\n let p_bytes = crate::field::modulus_le_bytes();\n let mut p_low: Field = 0;\n let mut p_high: Field = 0;\n\n let mut offset = 1;\n for i in 0..16 {\n p_low += (p_bytes[i] as Field) * offset;\n p_high += (p_bytes[i + 16] as Field) * offset;\n offset *= 256;\n }\n assert_eq(p_low, PLO);\n assert_eq(p_high, PHI);\n }\n}\n"
3917
3917
  },
3918
3918
  "184": {
3919
3919
  "path": "/build-volume/noir-projects/aztec-nr/aztec/src/utils/array/subarray.nr",
@@ -3921,13 +3921,13 @@
3921
3921
  },
3922
3922
  "19": {
3923
3923
  "path": "std/field/mod.nr",
3924
- "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n fn _to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n fn _to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = self._to_le_bits();\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = self._to_be_bits();\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // `_radix` must be less than 256\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n /// Safety: unconstrained context\n unsafe {\n //@safety : unconstrained context\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n // #[test]\n // fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n // }\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n // #[test]\n // fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n // }\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n"
3924
+ "source": "pub mod bn254;\nuse crate::{runtime::is_unconstrained, static_assert};\nuse bn254::lt as bn254_lt;\n\nimpl Field {\n /// Asserts that `self` can be represented in `bit_size` bits.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^{bit_size}`.\n // docs:start:assert_max_bit_size\n pub fn assert_max_bit_size<let BIT_SIZE: u32>(self) {\n // docs:end:assert_max_bit_size\n static_assert(\n BIT_SIZE < modulus_num_bits() as u32,\n \"BIT_SIZE must be less than modulus_num_bits\",\n );\n self.__assert_max_bit_size(BIT_SIZE);\n }\n\n #[builtin(apply_range_constraint)]\n fn __assert_max_bit_size(self, bit_size: u32) {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_le_bits)]\n fn _to_le_bits<let N: u32>(self: Self) -> [u1; N] {}\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// Values of `N` equal to or greater than the number of bits necessary to represent the `Field` modulus\n /// (e.g. 254 for the BN254 field) allow for multiple bit decompositions. This is due to how the `Field` will\n /// wrap around due to overflow when verifying the decomposition.\n #[builtin(to_be_bits)]\n fn _to_be_bits<let N: u32>(self: Self) -> [u1; N] {}\n\n /// Decomposes `self` into its little endian bit decomposition as a `[u1; N]` array.\n /// This slice will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_le_bits\n pub fn to_le_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_le_bits\n let bits = self._to_le_bits();\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[N - 1 - i] != p[N - 1 - i]) {\n assert(p[N - 1 - i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its big endian bit decomposition as a `[u1; N]` array.\n /// This array will be zero padded should not all bits be necessary to represent `self`.\n ///\n /// # Failures\n /// Causes a constraint failure for `Field` values exceeding `2^N` as the resulting slice will not\n /// be able to represent the original `Field`.\n ///\n /// # Safety\n /// The bit decomposition returned is canonical and is guaranteed to not overflow the modulus.\n // docs:start:to_be_bits\n pub fn to_be_bits<let N: u32>(self: Self) -> [u1; N] {\n // docs:end:to_be_bits\n let bits = self._to_be_bits();\n\n if !is_unconstrained() {\n // Ensure that the decomposition does not overflow the modulus\n let p = modulus_be_bits();\n assert(bits.len() <= p.len());\n let mut ok = bits.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bits[i] != p[i]) {\n assert(p[i] == 1);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bits\n }\n\n /// Decomposes `self` into its little endian byte decomposition as a `[u8;N]` array\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_le_bytes\n pub fn to_le_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_le_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_le_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_le_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[N - 1 - i] != p[N - 1 - i]) {\n assert(bytes[N - 1 - i] < p[N - 1 - i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n /// Decomposes `self` into its big endian byte decomposition as a `[u8;N]` array of length required to represent the field modulus\n /// This array will be zero padded should not all bytes be necessary to represent `self`.\n ///\n /// # Failures\n /// The length N of the array must be big enough to contain all the bytes of the 'self',\n /// and no more than the number of bytes required to represent the field modulus\n ///\n /// # Safety\n /// The result is ensured to be the canonical decomposition of the field element\n // docs:start:to_be_bytes\n pub fn to_be_bytes<let N: u32>(self: Self) -> [u8; N] {\n // docs:end:to_be_bytes\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n // Compute the byte decomposition\n let bytes = self.to_be_radix(256);\n\n if !is_unconstrained() {\n // Ensure that the byte decomposition does not overflow the modulus\n let p = modulus_be_bytes();\n assert(bytes.len() <= p.len());\n let mut ok = bytes.len() != p.len();\n for i in 0..N {\n if !ok {\n if (bytes[i] != p[i]) {\n assert(bytes[i] < p[i]);\n ok = true;\n }\n }\n }\n assert(ok);\n }\n bytes\n }\n\n // docs:start:to_le_radix\n pub fn to_le_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n static_assert(1 < radix, \"radix must be greater than 1\");\n static_assert(radix <= 256, \"radix must be less than or equal to 256\");\n static_assert(radix & (radix - 1) == 0, \"radix must be a power of 2\");\n }\n self.__to_le_radix(radix)\n }\n // docs:end:to_le_radix\n\n // docs:start:to_be_radix\n pub fn to_be_radix<let N: u32>(self: Self, radix: u32) -> [u8; N] {\n // Brillig does not need an immediate radix\n if !crate::runtime::is_unconstrained() {\n crate::assert_constant(radix);\n }\n self.__to_be_radix(radix)\n }\n // docs:end:to_be_radix\n\n // `_radix` must be less than 256\n #[builtin(to_le_radix)]\n fn __to_le_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // `_radix` must be less than 256\n #[builtin(to_be_radix)]\n fn __to_be_radix<let N: u32>(self, radix: u32) -> [u8; N] {}\n\n // Returns self to the power of the given exponent value.\n // Caution: we assume the exponent fits into 32 bits\n // using a bigger bit size impacts negatively the performance and should be done only if the exponent does not fit in 32 bits\n pub fn pow_32(self, exponent: Field) -> Field {\n let mut r: Field = 1;\n let b: [u1; 32] = exponent.to_le_bits();\n\n for i in 1..33 {\n r *= r;\n r = (b[32 - i] as Field) * (r * self) + (1 - b[32 - i] as Field) * r;\n }\n r\n }\n\n // Parity of (prime) Field element, i.e. sgn0(x mod p) = 0 if x `elem` {0, ..., p-1} is even, otherwise sgn0(x mod p) = 1.\n pub fn sgn0(self) -> u1 {\n self as u1\n }\n\n pub fn lt(self, another: Field) -> bool {\n if crate::compat::is_bn254() {\n bn254_lt(self, another)\n } else {\n lt_fallback(self, another)\n }\n }\n\n /// Convert a little endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_le_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n static_assert(\n N <= modulus_le_bytes().len(),\n \"N must be less than or equal to modulus_le_bytes().len()\",\n );\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[i] as Field) * v;\n v = v * 256;\n }\n result\n }\n\n /// Convert a big endian byte array to a field element.\n /// If the provided byte array overflows the field modulus then the Field will silently wrap around.\n pub fn from_be_bytes<let N: u32>(bytes: [u8; N]) -> Field {\n let mut v = 1;\n let mut result = 0;\n\n for i in 0..N {\n result += (bytes[N - 1 - i] as Field) * v;\n v = v * 256;\n }\n result\n }\n}\n\n#[builtin(modulus_num_bits)]\npub comptime fn modulus_num_bits() -> u64 {}\n\n#[builtin(modulus_be_bits)]\npub comptime fn modulus_be_bits() -> [u1] {}\n\n#[builtin(modulus_le_bits)]\npub comptime fn modulus_le_bits() -> [u1] {}\n\n#[builtin(modulus_be_bytes)]\npub comptime fn modulus_be_bytes() -> [u8] {}\n\n#[builtin(modulus_le_bytes)]\npub comptime fn modulus_le_bytes() -> [u8] {}\n\n/// An unconstrained only built in to efficiently compare fields.\n#[builtin(field_less_than)]\nunconstrained fn __field_less_than(x: Field, y: Field) -> bool {}\n\npub(crate) unconstrained fn field_less_than(x: Field, y: Field) -> bool {\n __field_less_than(x, y)\n}\n\n// Convert a 32 byte array to a field element by modding\npub fn bytes32_to_field(bytes32: [u8; 32]) -> Field {\n // Convert it to a field element\n let mut v = 1;\n let mut high = 0 as Field;\n let mut low = 0 as Field;\n\n for i in 0..16 {\n high = high + (bytes32[15 - i] as Field) * v;\n low = low + (bytes32[16 + 15 - i] as Field) * v;\n v = v * 256;\n }\n // Abuse that a % p + b % p = (a + b) % p and that low < p\n low + high * v\n}\n\nfn lt_fallback(x: Field, y: Field) -> bool {\n if is_unconstrained() {\n /// Safety: unconstrained context\n unsafe {\n field_less_than(x, y)\n }\n } else {\n let x_bytes: [u8; 32] = x.to_le_bytes();\n let y_bytes: [u8; 32] = y.to_le_bytes();\n let mut x_is_lt = false;\n let mut done = false;\n for i in 0..32 {\n if (!done) {\n let x_byte = x_bytes[32 - 1 - i] as u8;\n let y_byte = y_bytes[32 - 1 - i] as u8;\n let bytes_match = x_byte == y_byte;\n if !bytes_match {\n x_is_lt = x_byte < y_byte;\n done = true;\n }\n }\n }\n x_is_lt\n }\n}\n\nmod tests {\n use crate::{panic::panic, runtime};\n use super::field_less_than;\n\n #[test]\n // docs:start:to_be_bits_example\n fn test_to_be_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_be_bits();\n assert_eq(bits, [0, 0, 0, 0, 0, 0, 1, 0]);\n }\n // docs:end:to_be_bits_example\n\n #[test]\n // docs:start:to_le_bits_example\n fn test_to_le_bits() {\n let field = 2;\n let bits: [u1; 8] = field.to_le_bits();\n assert_eq(bits, [0, 1, 0, 0, 0, 0, 0, 0]);\n }\n // docs:end:to_le_bits_example\n\n #[test]\n // docs:start:to_be_bytes_example\n fn test_to_be_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_be_bytes();\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 0, 2]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_bytes_example\n\n #[test]\n // docs:start:to_le_bytes_example\n fn test_to_le_bytes() {\n let field = 2;\n let bytes: [u8; 8] = field.to_le_bytes();\n assert_eq(bytes, [2, 0, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_bytes_example\n\n #[test]\n // docs:start:to_be_radix_example\n fn test_to_be_radix() {\n // 259, in base 256, big endian, is [1, 3].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_be_radix(256);\n assert_eq(bytes, [0, 0, 0, 0, 0, 0, 1, 3]);\n assert_eq(Field::from_be_bytes::<8>(bytes), field);\n }\n // docs:end:to_be_radix_example\n\n #[test]\n // docs:start:to_le_radix_example\n fn test_to_le_radix() {\n // 259, in base 256, little endian, is [3, 1].\n // i.e. 3 * 256^0 + 1 * 256^1\n let field = 259;\n\n // The radix (in this example, 256) must be a power of 2.\n // The length of the returned byte array can be specified to be\n // >= the amount of space needed.\n let bytes: [u8; 8] = field.to_le_radix(256);\n assert_eq(bytes, [3, 1, 0, 0, 0, 0, 0, 0]);\n assert_eq(Field::from_le_bytes::<8>(bytes), field);\n }\n // docs:end:to_le_radix_example\n\n #[test(should_fail_with = \"radix must be greater than 1\")]\n fn test_to_le_radix_1() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(1);\n } else {\n panic(f\"radix must be greater than 1\");\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be greater than 2\n //#[test]\n //fn test_to_le_radix_brillig_1() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(1);\n // crate::println(out);\n // let expected = [0; 8];\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test(should_fail_with = \"radix must be a power of 2\")]\n fn test_to_le_radix_3() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(3);\n } else {\n panic(f\"radix must be a power of 2\");\n }\n }\n\n #[test]\n fn test_to_le_radix_brillig_3() {\n // this test should only fail in constrained mode\n if runtime::is_unconstrained() {\n let field = 1;\n let out: [u8; 8] = field.to_le_radix(3);\n let mut expected = [0; 8];\n expected[0] = 1;\n assert(out == expected, \"unexpected result\");\n }\n }\n\n #[test(should_fail_with = \"radix must be less than or equal to 256\")]\n fn test_to_le_radix_512() {\n // this test should only fail in constrained mode\n if !runtime::is_unconstrained() {\n let field = 2;\n let _: [u8; 8] = field.to_le_radix(512);\n } else {\n panic(f\"radix must be less than or equal to 256\")\n }\n }\n\n // TODO: Update this test to account for the Brillig restriction that the radix must be less than 512\n //#[test]\n //fn test_to_le_radix_brillig_512() {\n // // this test should only fail in constrained mode\n // if runtime::is_unconstrained() {\n // let field = 1;\n // let out: [u8; 8] = field.to_le_radix(512);\n // let mut expected = [0; 8];\n // expected[0] = 1;\n // assert(out == expected, \"unexpected result\");\n // }\n //}\n\n #[test]\n unconstrained fn test_field_less_than() {\n assert(field_less_than(0, 1));\n assert(field_less_than(0, 0x100));\n assert(field_less_than(0x100, 0 - 1));\n assert(!field_less_than(0 - 1, 0));\n }\n}\n"
3925
3925
  },
3926
3926
  "21": {
3927
3927
  "path": "std/hash/mod.nr",
3928
3928
  "source": "pub mod poseidon;\npub mod poseidon2;\npub mod keccak;\npub mod sha256;\npub mod sha512;\n\nuse crate::default::Default;\nuse crate::embedded_curve_ops::{\n EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul, multi_scalar_mul_array_return,\n};\nuse crate::meta::derive_via;\nuse crate::uint128::U128;\n\n// Kept for backwards compatibility\npub use sha256::{digest, sha256, sha256_compression, sha256_var};\n\n#[foreign(blake2s)]\n// docs:start:blake2s\npub fn blake2s<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake2s\n{}\n\n#[foreign(blake3)]\n// docs:start:blake3\npub fn blake3<let N: u32>(input: [u8; N]) -> [u8; 32]\n// docs:end:blake3\n{}\n\n// docs:start:pedersen_commitment\npub fn pedersen_commitment<let N: u32>(input: [Field; N]) -> EmbeddedCurvePoint {\n // docs:end:pedersen_commitment\n pedersen_commitment_with_separator(input, 0)\n}\n\n#[inline_always]\npub fn pedersen_commitment_with_separator<let N: u32>(\n input: [Field; N],\n separator: u32,\n) -> EmbeddedCurvePoint {\n let mut points = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N];\n for i in 0..N {\n // we use the unsafe version because the multi_scalar_mul will constrain the scalars.\n points[i] = from_field_unsafe(input[i]);\n }\n let generators = derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n multi_scalar_mul(generators, points)\n}\n\n// docs:start:pedersen_hash\npub fn pedersen_hash<let N: u32>(input: [Field; N]) -> Field\n// docs:end:pedersen_hash\n{\n pedersen_hash_with_separator(input, 0)\n}\n\n#[no_predicates]\npub fn pedersen_hash_with_separator<let N: u32>(input: [Field; N], separator: u32) -> Field {\n let mut scalars: [EmbeddedCurveScalar; N + 1] = [EmbeddedCurveScalar { lo: 0, hi: 0 }; N + 1];\n let mut generators: [EmbeddedCurvePoint; N + 1] =\n [EmbeddedCurvePoint::point_at_infinity(); N + 1];\n let domain_generators: [EmbeddedCurvePoint; N] =\n derive_generators(\"DEFAULT_DOMAIN_SEPARATOR\".as_bytes(), separator);\n\n for i in 0..N {\n scalars[i] = from_field_unsafe(input[i]);\n generators[i] = domain_generators[i];\n }\n scalars[N] = EmbeddedCurveScalar { lo: N as Field, hi: 0 as Field };\n\n let length_generator: [EmbeddedCurvePoint; 1] =\n derive_generators(\"pedersen_hash_length\".as_bytes(), 0);\n generators[N] = length_generator[0];\n multi_scalar_mul_array_return(generators, scalars)[0]\n}\n\n#[field(bn254)]\n#[inline_always]\npub fn derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {\n crate::assert_constant(domain_separator_bytes);\n // TODO(https://github.com/noir-lang/noir/issues/5672): Add back assert_constant on starting_index\n __derive_generators(domain_separator_bytes, starting_index)\n}\n\n#[builtin(derive_pedersen_generators)]\n#[field(bn254)]\nfn __derive_generators<let N: u32, let M: u32>(\n domain_separator_bytes: [u8; M],\n starting_index: u32,\n) -> [EmbeddedCurvePoint; N] {}\n\n#[field(bn254)]\n// Same as from_field but:\n// does not assert the limbs are 128 bits\n// does not assert the decomposition does not overflow the EmbeddedCurveScalar\nfn from_field_unsafe(scalar: Field) -> EmbeddedCurveScalar {\n /// Safety: xlo and xhi decomposition is checked below\n let (xlo, xhi) = unsafe { crate::field::bn254::decompose_hint(scalar) };\n // Check that the decomposition is correct\n assert_eq(scalar, xlo + crate::field::bn254::TWO_POW_128 * xhi);\n EmbeddedCurveScalar { lo: xlo, hi: xhi }\n}\n\npub fn hash_to_field(inputs: [Field]) -> Field {\n let mut sum = 0;\n\n for input in inputs {\n let input_bytes: [u8; 32] = input.to_le_bytes();\n sum += crate::field::bytes32_to_field(blake2s(input_bytes));\n }\n\n sum\n}\n\n// docs:start:keccak256\npub fn keccak256<let N: u32>(input: [u8; N], message_size: u32) -> [u8; 32]\n// docs:end:keccak256\n{\n crate::hash::keccak::keccak256(input, message_size)\n}\n\n#[foreign(poseidon2_permutation)]\npub fn poseidon2_permutation<let N: u32>(_input: [Field; N], _state_length: u32) -> [Field; N] {}\n\n// Generic hashing support.\n// Partially ported and impacted by rust.\n\n// Hash trait shall be implemented per type.\n#[derive_via(derive_hash)]\npub trait Hash {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher;\n}\n\n// docs:start:derive_hash\ncomptime fn derive_hash(s: StructDefinition) -> Quoted {\n let name = quote { Hash };\n let signature = quote { fn hash<H>(_self: Self, _state: &mut H) where H: std::hash::Hasher };\n let for_each_field = |name| quote { _self.$name.hash(_state); };\n crate::meta::make_trait_impl(\n s,\n name,\n signature,\n for_each_field,\n quote {},\n |fields| fields,\n )\n}\n// docs:end:derive_hash\n\n// Hasher trait shall be implemented by algorithms to provide hash-agnostic means.\n// TODO: consider making the types generic here ([u8], [Field], etc.)\npub trait Hasher {\n fn finish(self) -> Field;\n\n fn write(&mut self, input: Field);\n}\n\n// BuildHasher is a factory trait, responsible for production of specific Hasher.\npub trait BuildHasher<H>\nwhere\n H: Hasher,\n{\n fn build_hasher(self) -> H;\n}\n\npub struct BuildHasherDefault<H>;\n\nimpl<H> BuildHasher<H> for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn build_hasher(_self: Self) -> H {\n H::default()\n }\n}\n\nimpl<H> Default for BuildHasherDefault<H>\nwhere\n H: Hasher + Default,\n{\n fn default() -> Self {\n BuildHasherDefault {}\n }\n}\n\nimpl Hash for Field {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self);\n }\n}\n\nimpl Hash for u1 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for u64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i8 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i16 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i32 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for i64 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for bool {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self as Field);\n }\n}\n\nimpl Hash for () {\n fn hash<H>(_self: Self, _state: &mut H)\n where\n H: Hasher,\n {}\n}\n\nimpl Hash for U128 {\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n H::write(state, self.lo as Field);\n H::write(state, self.hi as Field);\n }\n}\n\nimpl<T, let N: u32> Hash for [T; N]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<T> Hash for [T]\nwhere\n T: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.len().hash(state);\n for elem in self {\n elem.hash(state);\n }\n }\n}\n\nimpl<A, B> Hash for (A, B)\nwhere\n A: Hash,\n B: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n }\n}\n\nimpl<A, B, C> Hash for (A, B, C)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n }\n}\n\nimpl<A, B, C, D> Hash for (A, B, C, D)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n }\n}\n\nimpl<A, B, C, D, E> Hash for (A, B, C, D, E)\nwhere\n A: Hash,\n B: Hash,\n C: Hash,\n D: Hash,\n E: Hash,\n{\n fn hash<H>(self, state: &mut H)\n where\n H: Hasher,\n {\n self.0.hash(state);\n self.1.hash(state);\n self.2.hash(state);\n self.3.hash(state);\n self.4.hash(state);\n }\n}\n\n// Some test vectors for Pedersen hash and Pedersen Commitment.\n// They have been generated using the same functions so the tests are for now useless\n// but they will be useful when we switch to Noir implementation.\n#[test]\nfn assert_pedersen() {\n assert_eq(\n pedersen_hash_with_separator([1], 1),\n 0x1b3f4b1a83092a13d8d1a59f7acb62aba15e7002f4440f2275edb99ebbc2305f,\n );\n assert_eq(\n pedersen_commitment_with_separator([1], 1),\n EmbeddedCurvePoint {\n x: 0x054aa86a73cb8a34525e5bbed6e43ba1198e860f5f3950268f71df4591bde402,\n y: 0x209dcfbf2cfb57f9f6046f44d71ac6faf87254afc7407c04eb621a6287cac126,\n is_infinite: false,\n },\n );\n\n assert_eq(\n pedersen_hash_with_separator([1, 2], 2),\n 0x26691c129448e9ace0c66d11f0a16d9014a9e8498ee78f4d69f0083168188255,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2], 2),\n EmbeddedCurvePoint {\n x: 0x2e2b3b191e49541fe468ec6877721d445dcaffe41728df0a0eafeb15e87b0753,\n y: 0x2ff4482400ad3a6228be17a2af33e2bcdf41be04795f9782bd96efe7e24f8778,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3], 3),\n 0x0bc694b7a1f8d10d2d8987d07433f26bd616a2d351bc79a3c540d85b6206dbe4,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3], 3),\n EmbeddedCurvePoint {\n x: 0x1fee4e8cf8d2f527caa2684236b07c4b1bad7342c01b0f75e9a877a71827dc85,\n y: 0x2f9fedb9a090697ab69bf04c8bc15f7385b3e4b68c849c1536e5ae15ff138fd1,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4], 4),\n 0xdae10fb32a8408521803905981a2b300d6a35e40e798743e9322b223a5eddc,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4], 4),\n EmbeddedCurvePoint {\n x: 0x07ae3e202811e1fca39c2d81eabe6f79183978e6f12be0d3b8eda095b79bdbc9,\n y: 0x0afc6f892593db6fbba60f2da558517e279e0ae04f95758587760ba193145014,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5], 5),\n 0xfc375b062c4f4f0150f7100dfb8d9b72a6d28582dd9512390b0497cdad9c22,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5], 5),\n EmbeddedCurvePoint {\n x: 0x1754b12bd475a6984a1094b5109eeca9838f4f81ac89c5f0a41dbce53189bb29,\n y: 0x2da030e3cfcdc7ddad80eaf2599df6692cae0717d4e9f7bfbee8d073d5d278f7,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6], 6),\n 0x1696ed13dc2730062a98ac9d8f9de0661bb98829c7582f699d0273b18c86a572,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6], 6),\n EmbeddedCurvePoint {\n x: 0x190f6c0e97ad83e1e28da22a98aae156da083c5a4100e929b77e750d3106a697,\n y: 0x1f4b60f34ef91221a0b49756fa0705da93311a61af73d37a0c458877706616fb,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n 0x128c0ff144fc66b6cb60eeac8a38e23da52992fc427b92397a7dffd71c45ede3,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7], 7),\n EmbeddedCurvePoint {\n x: 0x015441e9d29491b06563fac16fc76abf7a9534c715421d0de85d20dbe2965939,\n y: 0x1d2575b0276f4e9087e6e07c2cb75aa1baafad127af4be5918ef8a2ef2fea8fc,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n 0x2f960e117482044dfc99d12fece2ef6862fba9242be4846c7c9a3e854325a55c,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8], 8),\n EmbeddedCurvePoint {\n x: 0x1657737676968887fceb6dd516382ea13b3a2c557f509811cd86d5d1199bc443,\n y: 0x1f39f0cb569040105fa1e2f156521e8b8e08261e635a2b210bdc94e8d6d65f77,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n 0x0c96db0790602dcb166cc4699e2d306c479a76926b81c2cb2aaa92d249ec7be7,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9], 9),\n EmbeddedCurvePoint {\n x: 0x0a3ceae42d14914a432aa60ec7fded4af7dad7dd4acdbf2908452675ec67e06d,\n y: 0xfc19761eaaf621ad4aec9a8b2e84a4eceffdba78f60f8b9391b0bd9345a2f2,\n is_infinite: false,\n },\n );\n assert_eq(\n pedersen_hash_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n 0x2cd37505871bc460a62ea1e63c7fe51149df5d0801302cf1cbc48beb8dff7e94,\n );\n assert_eq(\n pedersen_commitment_with_separator([1, 2, 3, 4, 5, 6, 7, 8, 9, 10], 10),\n EmbeddedCurvePoint {\n x: 0x2fb3f8b3d41ddde007c8c3c62550f9a9380ee546fcc639ffbb3fd30c8d8de30c,\n y: 0x300783be23c446b11a4c0fabf6c91af148937cea15fcf5fb054abf7f752ee245,\n is_infinite: false,\n },\n );\n}\n"
3929
3929
  },
3930
- "251": {
3930
+ "252": {
3931
3931
  "path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/address/aztec_address.nr",
3932
3932
  "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, ToPoint, TpkM},\n traits::{Deserialize, Empty, FromField, Packable, 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::{\n embedded_curve_ops::{EmbeddedCurveScalar, fixed_base_scalar_mul as derive_public_key},\n ops::Add,\n};\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\n/// We implement the Packable trait for AztecAddress because it can be stored in contract's storage (and there\n/// the implementation of Packable is required).\nimpl Packable<AZTEC_ADDRESS_LENGTH> for AztecAddress {\n fn pack(self) -> [Field; AZTEC_ADDRESS_LENGTH] {\n self.serialize()\n }\n\n fn unpack(fields: [Field; AZTEC_ADDRESS_LENGTH]) -> Self {\n Self::deserialize(fields)\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"
3933
3933
  },
@@ -3935,27 +3935,27 @@
3935
3935
  "path": "std/hash/poseidon2.nr",
3936
3936
  "source": "use crate::default::Default;\nuse crate::hash::Hasher;\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2 {\n cache: [Field; 3],\n state: [Field; 4],\n cache_size: u32,\n squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2 {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2::hash_internal(input, message_size, message_size != N)\n }\n\n pub fn new(iv: Field) -> Poseidon2 {\n let mut result =\n Poseidon2 { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = crate::hash::poseidon2_permutation(self.state, 4);\n }\n\n fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let two_pow_64 = 18446744073709551616;\n let iv: Field = (in_len as Field) * two_pow_64;\n let mut sponge = Poseidon2::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\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 is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n\npub struct Poseidon2Hasher {\n _state: [Field],\n}\n\nimpl Hasher for Poseidon2Hasher {\n fn finish(self) -> Field {\n let iv: Field = (self._state.len() as Field) * 18446744073709551616; // iv = (self._state.len() << 64)\n let mut sponge = Poseidon2::new(iv);\n for i in 0..self._state.len() {\n sponge.absorb(self._state[i]);\n }\n sponge.squeeze()\n }\n\n fn write(&mut self, input: Field) {\n self._state = self._state.push_back(input);\n }\n}\n\nimpl Default for Poseidon2Hasher {\n fn default() -> Self {\n Poseidon2Hasher { _state: &[] }\n }\n}\n"
3937
3937
  },
3938
- "267": {
3938
+ "268": {
3939
3939
  "path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/debug_log.nr",
3940
3940
  "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 /// Safety: This oracle call returns nothing: we only call it for its side effects. It is therefore always safe\n /// 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"
3941
3941
  },
3942
- "268": {
3942
+ "269": {
3943
3943
  "path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/hash.nr",
3944
3944
  "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::{OrderedValue, 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 poseidon2::Poseidon2Sponge,\n traits::{FromField, Hash, is_empty, ToField},\n utils::field::field_from_bytes_32_trunc,\n};\nuse super::{constants::TWO_POW_64, 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 = sha256::digest(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\npub fn compute_note_hash_nonce(first_nullifier_in_tx: Field, note_index_in_tx: u32) -> Field {\n // Hashing the first nullifier with note index in tx is guaranteed to be unique (because all nullifiers are also\n // unique).\n poseidon2_hash_with_separator(\n [first_nullifier_in_tx, 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 first_nullifier: 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(first_nullifier, 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_contract_class_log_hash(address: AztecAddress, log_hash: Field) -> Field {\n accumulate_sha256([address.to_field(), log_hash])\n}\n\npub fn silo_contract_class_log_hash(log_hash: ScopedLogHash) -> Field {\n if log_hash.contract_address.is_zero() {\n 0\n } else {\n compute_siloed_contract_class_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: [u8; 160] = std::mem::zeroed();\n\n let inputs =\n [contract_address.to_field(), rollup_version_id, recipient.to_field(), chain_id, content];\n for i in 0..5 {\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[32 * i + j] = item_bytes[j];\n }\n }\n\n sha256_to_field(bytes)\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) -> Poseidon2Sponge {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::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: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n skip_0_check: bool,\n) -> Poseidon2Sponge {\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: Poseidon2Sponge,\n input: [Field; N],\n in_len: u32,\n variable: bool,\n shift: u32,\n) -> Poseidon2Sponge {\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 iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::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 empty_sponge = Poseidon2Sponge::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 = Poseidon2Sponge::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 constructed_empty_sponge = poseidon2_absorb_chunks(input, in_len, true);\n let mut first_sponge =\n poseidon2_absorb_chunks_existing_sponge(constructed_empty_sponge, input, in_len, true);\n assert(first_sponge.squeeze() == constructed_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 = sha256::digest(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"
3945
3945
  },
3946
- "285": {
3946
+ "286": {
3947
3947
  "path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/poseidon2.nr",
3948
3948
  "source": "use crate::constants::TWO_POW_64;\n\n// NB: This is a clone of noir/noir-repo/noir_stdlib/src/hash/poseidon2.nr\n// It exists as we sometimes need to perform custom absorption, but the stdlib version\n// has a private absorb() method (it's also designed to just be a hasher)\n// Can be removed when standalone noir poseidon lib exists: See noir#6679\n\ncomptime global RATE: u32 = 3;\n\npub struct Poseidon2Sponge {\n pub cache: [Field; 3],\n pub state: [Field; 4],\n pub cache_size: u32,\n pub squeeze_mode: bool, // 0 => absorb, 1 => squeeze\n}\n\nimpl Poseidon2Sponge {\n #[no_predicates]\n pub fn hash<let N: u32>(input: [Field; N], message_size: u32) -> Field {\n Poseidon2Sponge::hash_internal(input, message_size, message_size != N)\n }\n\n pub(crate) fn new(iv: Field) -> Poseidon2Sponge {\n let mut result =\n Poseidon2Sponge { cache: [0; 3], state: [0; 4], cache_size: 0, squeeze_mode: false };\n result.state[RATE] = iv;\n result\n }\n\n fn perform_duplex(&mut self) {\n // add the cache into sponge state\n for i in 0..RATE {\n // We effectively zero-pad the cache by only adding to the state\n // cache that is less than the specified `cache_size`\n if i < self.cache_size {\n self.state[i] += self.cache[i];\n }\n }\n self.state = std::hash::poseidon2_permutation(self.state, 4);\n }\n\n pub fn absorb(&mut self, input: Field) {\n assert(!self.squeeze_mode);\n if self.cache_size == RATE {\n // If we're absorbing, and the cache is full, apply the sponge permutation to compress the cache\n self.perform_duplex();\n self.cache[0] = input;\n self.cache_size = 1;\n } else {\n // If we're absorbing, and the cache is not full, add the input into the cache\n self.cache[self.cache_size] = input;\n self.cache_size += 1;\n }\n }\n\n pub fn squeeze(&mut self) -> Field {\n assert(!self.squeeze_mode);\n // If we're in absorb mode, apply sponge permutation to compress the cache.\n self.perform_duplex();\n self.squeeze_mode = true;\n\n // Pop one item off the top of the permutation and return it.\n self.state[0]\n }\n\n fn hash_internal<let N: u32>(\n input: [Field; N],\n in_len: u32,\n is_variable_length: bool,\n ) -> Field {\n let iv: Field = (in_len as Field) * TWO_POW_64;\n let mut sponge = Poseidon2Sponge::new(iv);\n for i in 0..input.len() {\n if i < in_len {\n sponge.absorb(input[i]);\n }\n }\n\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 is_variable_length {\n sponge.absorb(1);\n }\n sponge.squeeze()\n }\n}\n"
3949
3949
  },
3950
- "294": {
3950
+ "295": {
3951
3951
  "path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/public_keys.nr",
3952
3952
  "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"
3953
3953
  },
3954
- "334": {
3954
+ "335": {
3955
3955
  "path": "/build-volume/noir-projects/noir-protocol-circuits/crates/types/src/utils/reader.nr",
3956
3956
  "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"
3957
3957
  },
3958
- "346": {
3958
+ "347": {
3959
3959
  "path": "/root/nargo/github.com/noir-lang/schnorr/v0.1.1/src/lib.nr",
3960
3960
  "source": "use std::embedded_curve_ops::{EmbeddedCurvePoint, EmbeddedCurveScalar, multi_scalar_mul};\nuse std::hash::{blake2s, pedersen_hash};\n\npub fn verify_signature<let N: u32>(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; N],\n) -> bool {\n //scalar lo/hi from bytes\n let sig_s = scalar_from_bytes(signature, 0);\n let sig_e = scalar_from_bytes(signature, 32);\n // pub_key is on Grumpkin curve\n let mut is_ok = (public_key.y * public_key.y == public_key.x * public_key.x * public_key.x - 17)\n & (!public_key.is_infinite);\n\n if ((sig_s.lo != 0) | (sig_s.hi != 0)) & ((sig_e.lo != 0) | (sig_e.hi != 0)) {\n let (r_is_infinite, result) =\n calculate_signature_challenge(public_key, sig_s, sig_e, message);\n\n is_ok &= !r_is_infinite;\n for i in 0..32 {\n is_ok &= result[i] == signature[32 + i];\n }\n } else {\n is_ok = false;\n }\n is_ok\n}\n\npub fn assert_valid_signature<let N: u32>(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; N],\n) {\n //scalar lo/hi from bytes\n let sig_s = scalar_from_bytes(signature, 0);\n let sig_e = scalar_from_bytes(signature, 32);\n\n // assert pub_key is on Grumpkin curve\n assert(public_key.y * public_key.y == public_key.x * public_key.x * public_key.x - 17);\n assert(public_key.is_infinite == false);\n // assert signature is not null\n assert((sig_s.lo != 0) | (sig_s.hi != 0));\n assert((sig_e.lo != 0) | (sig_e.hi != 0));\n\n let (r_is_infinite, result) = calculate_signature_challenge(public_key, sig_s, sig_e, message);\n\n assert(!r_is_infinite);\n for i in 0..32 {\n assert(result[i] == signature[32 + i]);\n }\n}\n\nfn calculate_signature_challenge<let N: u32>(\n public_key: EmbeddedCurvePoint,\n sig_s: EmbeddedCurveScalar,\n sig_e: EmbeddedCurveScalar,\n message: [u8; N],\n) -> (bool, [u8; 32]) {\n let g1 = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n let r = multi_scalar_mul([g1, public_key], [sig_s, sig_e]);\n // compare the _hashes_ rather than field elements modulo r\n let pedersen_hash = pedersen_hash([r.x, public_key.x, public_key.y]);\n let pde: [u8; 32] = pedersen_hash.to_be_bytes();\n\n let mut hash_input = [0; N + 32];\n for i in 0..32 {\n hash_input[i] = pde[i];\n }\n for i in 0..N {\n hash_input[32 + i] = message[i];\n }\n\n let result = blake2s(hash_input);\n (r.is_infinite, result)\n}\n\n//Bytes to scalar: take the first (after the specified offset) 16 bytes of the input as the lo value, and the next 16 bytes as the hi value\nfn scalar_from_bytes(bytes: [u8; 64], offset: u32) -> EmbeddedCurveScalar {\n let mut v: Field = 1;\n let mut lo: Field = 0;\n let mut hi: Field = 0;\n for i in 0..16 {\n lo = lo + (bytes[offset + 31 - i] as Field) * v;\n hi = hi + (bytes[offset + 15 - i] as Field) * v;\n v = v * 256;\n }\n let sig_s = EmbeddedCurveScalar::new(lo, hi);\n sig_s\n}\n\nmod test {\n use std::embedded_curve_ops::EmbeddedCurvePoint;\n\n use super::verify_signature;\n\n #[test]\n fn test_zero_signature() {\n let public_key: EmbeddedCurvePoint = EmbeddedCurvePoint {\n x: 1,\n y: 17631683881184975370165255887551781615748388533673675138860,\n is_infinite: false,\n };\n let signature: [u8; 64] = [0; 64];\n let message: [u8; _] = [2; 64]; // every message\n let verified = verify_signature(public_key, signature, message);\n assert(!verified);\n }\n\n #[test]\n fn smoke_test() {\n let message: [u8; 10] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n let pub_key_x: Field = 0x04b260954662e97f00cab9adb773a259097f7a274b83b113532bce27fa3fb96a;\n let pub_key_y: Field = 0x2fd51571db6c08666b0edfbfbc57d432068bccd0110a39b166ab243da0037197;\n let signature: [u8; 64] = [\n 1, 13, 119, 112, 212, 39, 233, 41, 84, 235, 255, 93, 245, 172, 186, 83, 157, 253, 76,\n 77, 33, 128, 178, 15, 214, 67, 105, 107, 177, 234, 77, 48, 27, 237, 155, 84, 39, 84,\n 247, 27, 22, 8, 176, 230, 24, 115, 145, 220, 254, 122, 135, 179, 171, 4, 214, 202, 64,\n 199, 19, 84, 239, 138, 124, 12,\n ];\n\n let pub_key = EmbeddedCurvePoint { x: pub_key_x, y: pub_key_y, is_infinite: false };\n let valid_signature = verify_signature(pub_key, signature, message);\n assert(valid_signature);\n super::assert_valid_signature(pub_key, signature, message);\n }\n\n}\n\nmod bench {\n use super::{assert_valid_signature, verify_signature};\n use std::embedded_curve_ops::EmbeddedCurvePoint;\n\n #[export]\n pub fn bench_verify_signature(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; 32],\n ) -> bool {\n verify_signature(public_key, signature, message)\n }\n\n #[export]\n pub fn bench_assert_valid_signature(\n public_key: EmbeddedCurvePoint,\n signature: [u8; 64],\n message: [u8; 32],\n ) {\n assert_valid_signature(public_key, signature, message)\n }\n}\n"
3961
3961
  },