zkhash/poseidon2/
poseidon2_instance_vesta.rs

1use super::poseidon2_params::Poseidon2Params;
2use crate::fields::{utils::from_hex, vesta::FpVesta};
3
4use lazy_static::lazy_static;
5use std::sync::Arc;
6
7type Scalar = FpVesta;
8
9lazy_static! {
10    pub static ref MAT_DIAG3_M_1: Vec<Scalar> = vec![
11        from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
12        from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
13        from_hex("0x0000000000000000000000000000000000000000000000000000000000000002"),
14    ];
15    pub static ref MAT_INTERNAL3: Vec<Vec<Scalar>> = vec![
16        vec![
17            from_hex("0x0000000000000000000000000000000000000000000000000000000000000002"),
18            from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
19            from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
20        ],
21        vec![
22            from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
23            from_hex("0x0000000000000000000000000000000000000000000000000000000000000002"),
24            from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
25        ],
26        vec![
27            from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
28            from_hex("0x0000000000000000000000000000000000000000000000000000000000000001"),
29            from_hex("0x0000000000000000000000000000000000000000000000000000000000000003"),
30        ],
31    ];
32    pub static ref RC3: Vec<Vec<Scalar>> = vec![
33        vec![
34            from_hex("0x360d7470611e473d353f628f76d110f34e71162f31003b7057538c2596426303"),
35            from_hex("0x2bab94d7ae222d135dc3c6c5febfaa314908ac2f12ebe06fbdb74213bf63188b"),
36            from_hex("0x150c93fef652fb1c2bf03e1a29aa871fef77e7d736766c5d0939d92753cc5dc8"),
37        ],
38        vec![
39            from_hex("0x3270661e68928b3a955d55db56dc57c103cc0a60141e894e14259dce537782b2"),
40            from_hex("0x073f116f04122e25a0b7afe4e2057299b407c370f2b5a1ccce9fb9ffc345afb3"),
41            from_hex("0x2a32ec5c4ee5b1837affd09c1f53f5fd55c9cd2061ae93ca8ebad76fc71554d8"),
42        ],
43        vec![
44            from_hex("0x270326ee039df19e651e2cfc740628ca634d24fc6e2559f22d8ccbe292efeead"),
45            from_hex("0x27c6642ac633bc66dc100fe7fcfa54918af895bce012f182a068fc37c182e274"),
46            from_hex("0x1bdfd8b01401c70ad27f57396989129d710e1fb6ab976a459ca18682e26d7ff9"),
47        ],
48        vec![
49            from_hex("0x162a14c62f9a89b814b9d6a9c84dd678f4f6fb3f9054d373c832d824261a35ea"),
50            from_hex("0x2d193e0f76de586b2af6f79e3127feeaac0a1fc71e2cf0c0f79824667b5b6bec"),
51            from_hex("0x044ca3cc4a85d73b81696ef1104e674f4feff82984990ff85d0bf58dc8a4aa94"),
52        ],
53        vec![
54            from_hex("0x1cbaf2b371dac6a81d0453416d3e235cb8d9e2d4f314f46f6198785f0cd6b9af"),
55            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
56            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
57        ],
58        vec![
59            from_hex("0x1d5b2777692c205b0e6c49d061b6b5f4293c4ab038fdbbdc343e07610f3fede5"),
60            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
61            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
62        ],
63        vec![
64            from_hex("0x2e9bdbba3dd34bffaa30535bdd749a7e06a9adb0c1e6f962f60e971b8d73b04f"),
65            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
66            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
67        ],
68        vec![
69            from_hex("0x2de11886b18011ca8bd5bae36969299fde40fbe26d047b05035a13661f22418b"),
70            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
71            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
72        ],
73        vec![
74            from_hex("0x2e07de1780b8a70d0d5b4a3f1841dcd82ab9395c449be947bc998884ba96a721"),
75            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
76            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
77        ],
78        vec![
79            from_hex("0x0f69f1854d20ca0cbbdb63dbd52dad16250440a99d6b8af3825e4c2bb74925ca"),
80            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
81            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
82        ],
83        vec![
84            from_hex("0x2eb1b25417fe17670d135dc639fb09a46ce5113507f96de9816c059422dc705e"),
85            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
86            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
87        ],
88        vec![
89            from_hex("0x115cd0a0643cfb988c24cb44c3fab48aff36c661d26cc42db8b1bdf4953bd82c"),
90            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
91            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
92        ],
93        vec![
94            from_hex("0x26ca293f7b2c462d066d7378b999868bbb57ddf14e0f958ade801612311d04cd"),
95            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
96            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
97        ],
98        vec![
99            from_hex("0x17bf1b93c4c7e01a2a830aa162412cd90f160bf9f71e967ff5209d14b24820ca"),
100            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
101            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
102        ],
103        vec![
104            from_hex("0x35b41a7ac4f3c571a24f8456369c85dfe03c0354bd8cfd3805c86f2e7dc293c5"),
105            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
106            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
107        ],
108        vec![
109            from_hex("0x3b1480080523c439435927994849bea964e14d3beb2dddde72ac156af435d09e"),
110            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
111            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
112        ],
113        vec![
114            from_hex("0x2cc6810031dc1b0d4950856dc907d57508e286442a2d3eb2271618d874b14c6d"),
115            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
116            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
117        ],
118        vec![
119            from_hex("0x25bdbbeda1bde8c1059618e2afd2ef999e517aa93b78341d91f318c09f0cb566"),
120            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
121            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
122        ],
123        vec![
124            from_hex("0x392a4a8758e06ee8b95f33c25dde8ac02a5ed0a27b61926cc6313487073f7f7b"),
125            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
126            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
127        ],
128        vec![
129            from_hex("0x272a55878a08442b9aa6111f4de009485e6a6fd15db89365e7bbcef02eb5866c"),
130            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
131            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
132        ],
133        vec![
134            from_hex("0x2d5b308b0cf02cdfefa13c4e60e26239a6ebba011694dd129b925b3c5b21e0e2"),
135            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
136            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
137        ],
138        vec![
139            from_hex("0x16549fc6af2f3b72dd5d293d72e2e5f244dff42f18b46c56ef38c57c311673ac"),
140            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
141            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
142        ],
143        vec![
144            from_hex("0x1b10bb7a82afce39fa69c3a2ad52f76d76398265344203119b7126d9b46860df"),
145            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
146            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
147        ],
148        vec![
149            from_hex("0x0f1e7505ebd91d2fc79c2df7dc98a3bed1b36968ba0405c090d27f6a00b7dfc8"),
150            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
151            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
152        ],
153        vec![
154            from_hex("0x2f313faf0d3f6187537a7497a3b43f46797fd6e3f18eb1caff457756b819bb20"),
155            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
156            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
157        ],
158        vec![
159            from_hex("0x3a5cbb6de450b481fa3ca61c0ed15bc55cad11ebf0f7ceb8f0bc3e732ecb26f6"),
160            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
161            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
162        ],
163        vec![
164            from_hex("0x3dab54bc9bef688dd92086e253b439d651baa6e20f892b62865527cbca915982"),
165            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
166            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
167        ],
168        vec![
169            from_hex("0x06dbfb42b979884de280d31670123f744c24b33b410fefd4368045acf2b71ae3"),
170            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
171            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
172        ],
173        vec![
174            from_hex("0x068d6b4608aae810c6f039ea1973a63eb8d2de72e3d2c9eca7fc32d22f18b9d3"),
175            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
176            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
177        ],
178        vec![
179            from_hex("0x366ebfafa3ad381c0ee258c9b8fdfccdb868a7d7e1f1f69a2b5dfcc5572555df"),
180            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
181            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
182        ],
183        vec![
184            from_hex("0x39678f65512f1ee404db3024f41d3f567ef66d89d044d022e6bc229e95bc76b1"),
185            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
186            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
187        ],
188        vec![
189            from_hex("0x21668f016a8063c0d58b7750a3bc2fe1cf82c25f99dc01a4e534c88fe53d85fe"),
190            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
191            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
192        ],
193        vec![
194            from_hex("0x39d00994a8a5046a1bc749363e98a768e34dea56439fe1954bef429bc5331608"),
195            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
196            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
197        ],
198        vec![
199            from_hex("0x1f9dbdc3f84312636b203bbe12fb3425b163d41605d39f99770c956f60d881b3"),
200            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
201            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
202        ],
203        vec![
204            from_hex("0x027745a9cddfad95e5f17b9e0ee0cab6be0bc829fe5e66c69794a9f7c336eab2"),
205            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
206            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
207        ],
208        vec![
209            from_hex("0x1cec0803c504b635788d695c61e932122fa43fe20a45c78d52025657abd8aee0"),
210            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
211            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
212        ],
213        vec![
214            from_hex("0x123523d75e9fabc172077448ef87cc6eed5082c8dbf31365d3872a9559a03a73"),
215            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
216            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
217        ],
218        vec![
219            from_hex("0x1723d1452c9cf02df419b848e5d694bf27feba35975ee7e5001779e3a1d357f4"),
220            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
221            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
222        ],
223        vec![
224            from_hex("0x1739d180a16010bdfcc0573d7e61369421c3f776f572836d9dab1ee4dcf96622"),
225            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
226            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
227        ],
228        vec![
229            from_hex("0x2d4e6354da9cc554acce32391794b627fafa96fbeb0ab89370290452042d048d"),
230            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
231            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
232        ],
233        vec![
234            from_hex("0x153ee6142e535e334a869553c9d007f88f3bd43f99260621670bcf6f8b485dcd"),
235            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
236            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
237        ],
238        vec![
239            from_hex("0x0c45bfd3a69aaa65635ef7e7a430b486968ad4424af83700d258d2e2b7782172"),
240            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
241            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
242        ],
243        vec![
244            from_hex("0x0adfd53b256a6957f2d56aec831446006897ac0a8ffa5ff10e5633d251f73307"),
245            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
246            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
247        ],
248        vec![
249            from_hex("0x315d2ac8ebdbac3c8cd1726b7cbab8ee3f87b28f1c1be4bdac9d36a8b7516d63"),
250            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
251            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
252        ],
253        vec![
254            from_hex("0x1b8472712d02eef4cfaec23d2b16883fc9bb60d1f6959879299ce44ea423d8e1"),
255            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
256            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
257        ],
258        vec![
259            from_hex("0x3c1cd07efda6ff24bd0b70fa2255eb6f367d2c54e36928c9c4a5404198adf70c"),
260            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
261            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
262        ],
263        vec![
264            from_hex("0x136052d26bb3d373687f4e51b2e1dcd34a16073f738f7e0cbbe523aef9ab107a"),
265            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
266            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
267        ],
268        vec![
269            from_hex("0x16c96beef6a0a848c1bdd859a1232a1d7b3cfbb873032681676c36c24ef967dd"),
270            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
271            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
272        ],
273        vec![
274            from_hex("0x284b38c57ff65c262ab7fed8f499a9fb012387bab4f1662d067eec7f2d6340c4"),
275            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
276            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
277        ],
278        vec![
279            from_hex("0x0c5993d175e81f6639e242198897d17cfc06772c1c0411a6af1dff204c922f86"),
280            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
281            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
282        ],
283        vec![
284            from_hex("0x03bf7a3f7bd043dafcda655d1ba9c8f9f24887ad48e17759bbf53f67b1f87b15"),
285            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
286            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
287        ],
288        vec![
289            from_hex("0x3188fe4ee9f9fafbb0cf999567f00e734c8f9cbe69f0e8279b5cd09e36d8be62"),
290            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
291            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
292        ],
293        vec![
294            from_hex("0x171f528ccf6584375a39768c480d61e13af5bf77c1c42652afea99a2ec6c595a"),
295            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
296            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
297        ],
298        vec![
299            from_hex("0x12f4175c4ab45afc196e41859b35ef88812c3286ee7000675a0563b9b8e9f1d5"),
300            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
301            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
302        ],
303        vec![
304            from_hex("0x3a509e155cb7ebfd8f8fdcf800a9ac697e23e1aabe96cfab0e74d4d369118b79"),
305            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
306            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
307        ],
308        vec![
309            from_hex("0x10f2a685df4a27c81a89920e2504c3b3984bc8f2e4c1b69e98712c65678cfd30"),
310            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
311            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
312        ],
313        vec![
314            from_hex("0x09e5f49790c8a0e21d8d93d54ab91a0e54573c9333c56321e8a16728cc9d4918"),
315            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
316            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
317        ],
318        vec![
319            from_hex("0x352d69bed80ee3e52bf35705d9f84a3442d17ed6ee0fab7e609a740347cf5fea"),
320            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
321            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
322        ],
323        vec![
324            from_hex("0x058ee73ba9f3f293491562faf2b190d3c634debd281b76a63a758af6fa84e0e8"),
325            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
326            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
327        ],
328        vec![
329            from_hex("0x232f99cc911eddd9cd0f1fc55b1a3250092cb92119bc76be621a132510a43904"),
330            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
331            from_hex("0x0000000000000000000000000000000000000000000000000000000000000000"),
332        ],
333        vec![
334            from_hex("0x201beed7b8f3ab8186c22c6c5d4869f0f9efd52ca6bc2961c3b97c1e301bc213"),
335            from_hex("0x1376dce6580030c6a1c9291d58602f5129388842744a1210bf6b3431ba94e9bc"),
336            from_hex("0x1793199e6fd6ba342b3356c38238f761072ba8b02d92e7226454843c5486d7b3"),
337        ],
338        vec![
339            from_hex("0x22de7a7488dcc7359fee9c20c87a67df3c66160dc62aacac06a3f1d3b433311b"),
340            from_hex("0x3514d5e9066bb160df8ff37fe2d8edf8dbe0b77fae77e1d030d6e3fd516b47a8"),
341            from_hex("0x30cd3006931ad636f919a00dabbf5fa5ff453d6f900f144a19377427137a81c7"),
342        ],
343        vec![
344            from_hex("0x253d1a5c5293412741f81a5cf613c8df8f9e4b2cae2ebb515b6a74220692b506"),
345            from_hex("0x035b461c02d79d19a35e9613e7f5fe92851b3a59c990fafc73f666cb86a48e8e"),
346            from_hex("0x23a9928079d175bd5bc00eedd56b93e092b1283c2d5fccde7cfbf86a3aa04780"),
347        ],
348        vec![
349            from_hex("0x13a7785ae134ea92f1594a0763c611abb5e2ea3436eef957f1e4ccd73fa00a82"),
350            from_hex("0x39fce308b7d43c574962ae3c0da17e313889c57863446d88bbf04f5252de4279"),
351            from_hex("0x1aae18833f8e1d3ac0fdf01662f60d22bef00a08c6ed38d23b57e34489b53fad"),
352        ],
353    ];
354    pub static ref POSEIDON2_VESTA_PARAMS: Arc<Poseidon2Params<Scalar>> = Arc::new(
355        Poseidon2Params::new(3, 5, 8, 56, &MAT_DIAG3_M_1, &MAT_INTERNAL3, &RC3)
356    );
357}