1use lazy_static::lazy_static;
4use slop_algebra::{extension::BinomialExtensionField, AbstractField};
5use slop_bn254::BNGC;
6use slop_challenger::IopCtx;
7#[allow(clippy::disallowed_types)]
8use slop_koala_bear::KoalaBear;
9use slop_koala_bear::KoalaBearDegree4Duplex;
10use slop_poseidon2::{Poseidon2, Poseidon2ExternalMatrixGeneral};
11
12pub mod consts;
13pub mod io;
14pub mod polynomial;
15pub mod types;
16pub use types::Elf;
17pub mod fri_params;
18pub mod utils;
19
20pub const SP1_CRATE_VERSION: &str = env!("CARGO_PKG_VERSION");
22#[allow(clippy::disallowed_types)]
23pub type SP1Field = KoalaBear;
24
25pub type SP1ExtensionField = BinomialExtensionField<SP1Field, 4>;
27
28pub type SP1GlobalContext = KoalaBearDegree4Duplex;
30
31pub type SP1OuterGlobalContext =
33 BNGC<<SP1GlobalContext as IopCtx>::F, <SP1GlobalContext as IopCtx>::EF>;
34
35lazy_static! {
36 pub static ref RC_16_30: [[SP1Field; 16]; 30] = [
41 [
42 SP1Field::from_wrapped_u32(2110014213),
43 SP1Field::from_wrapped_u32(3964964605),
44 SP1Field::from_wrapped_u32(2190662774),
45 SP1Field::from_wrapped_u32(2732996483),
46 SP1Field::from_wrapped_u32(640767983),
47 SP1Field::from_wrapped_u32(3403899136),
48 SP1Field::from_wrapped_u32(1716033721),
49 SP1Field::from_wrapped_u32(1606702601),
50 SP1Field::from_wrapped_u32(3759873288),
51 SP1Field::from_wrapped_u32(1466015491),
52 SP1Field::from_wrapped_u32(1498308946),
53 SP1Field::from_wrapped_u32(2844375094),
54 SP1Field::from_wrapped_u32(3042463841),
55 SP1Field::from_wrapped_u32(1969905919),
56 SP1Field::from_wrapped_u32(4109944726),
57 SP1Field::from_wrapped_u32(3925048366),
58 ],
59 [
60 SP1Field::from_wrapped_u32(3706859504),
61 SP1Field::from_wrapped_u32(759122502),
62 SP1Field::from_wrapped_u32(3167665446),
63 SP1Field::from_wrapped_u32(1131812921),
64 SP1Field::from_wrapped_u32(1080754908),
65 SP1Field::from_wrapped_u32(4080114493),
66 SP1Field::from_wrapped_u32(893583089),
67 SP1Field::from_wrapped_u32(2019677373),
68 SP1Field::from_wrapped_u32(3128604556),
69 SP1Field::from_wrapped_u32(580640471),
70 SP1Field::from_wrapped_u32(3277620260),
71 SP1Field::from_wrapped_u32(842931656),
72 SP1Field::from_wrapped_u32(548879852),
73 SP1Field::from_wrapped_u32(3608554714),
74 SP1Field::from_wrapped_u32(3575647916),
75 SP1Field::from_wrapped_u32(81826002),
76 ],
77 [
78 SP1Field::from_wrapped_u32(4289086263),
79 SP1Field::from_wrapped_u32(1563933798),
80 SP1Field::from_wrapped_u32(1440025885),
81 SP1Field::from_wrapped_u32(184445025),
82 SP1Field::from_wrapped_u32(2598651360),
83 SP1Field::from_wrapped_u32(1396647410),
84 SP1Field::from_wrapped_u32(1575877922),
85 SP1Field::from_wrapped_u32(3303853401),
86 SP1Field::from_wrapped_u32(137125468),
87 SP1Field::from_wrapped_u32(765010148),
88 SP1Field::from_wrapped_u32(633675867),
89 SP1Field::from_wrapped_u32(2037803363),
90 SP1Field::from_wrapped_u32(2573389828),
91 SP1Field::from_wrapped_u32(1895729703),
92 SP1Field::from_wrapped_u32(541515871),
93 SP1Field::from_wrapped_u32(1783382863),
94 ],
95 [
96 SP1Field::from_wrapped_u32(2641856484),
97 SP1Field::from_wrapped_u32(3035743342),
98 SP1Field::from_wrapped_u32(3672796326),
99 SP1Field::from_wrapped_u32(245668751),
100 SP1Field::from_wrapped_u32(2025460432),
101 SP1Field::from_wrapped_u32(201609705),
102 SP1Field::from_wrapped_u32(286217151),
103 SP1Field::from_wrapped_u32(4093475563),
104 SP1Field::from_wrapped_u32(2519572182),
105 SP1Field::from_wrapped_u32(3080699870),
106 SP1Field::from_wrapped_u32(2762001832),
107 SP1Field::from_wrapped_u32(1244250808),
108 SP1Field::from_wrapped_u32(606038199),
109 SP1Field::from_wrapped_u32(3182740831),
110 SP1Field::from_wrapped_u32(73007766),
111 SP1Field::from_wrapped_u32(2572204153),
112 ],
113 [
114 SP1Field::from_wrapped_u32(1196780786),
115 SP1Field::from_wrapped_u32(3447394443),
116 SP1Field::from_wrapped_u32(747167305),
117 SP1Field::from_wrapped_u32(2968073607),
118 SP1Field::from_wrapped_u32(1053214930),
119 SP1Field::from_wrapped_u32(1074411832),
120 SP1Field::from_wrapped_u32(4016794508),
121 SP1Field::from_wrapped_u32(1570312929),
122 SP1Field::from_wrapped_u32(113576933),
123 SP1Field::from_wrapped_u32(4042581186),
124 SP1Field::from_wrapped_u32(3634515733),
125 SP1Field::from_wrapped_u32(1032701597),
126 SP1Field::from_wrapped_u32(2364839308),
127 SP1Field::from_wrapped_u32(3840286918),
128 SP1Field::from_wrapped_u32(888378655),
129 SP1Field::from_wrapped_u32(2520191583),
130 ],
131 [
132 SP1Field::from_wrapped_u32(36046858),
133 SP1Field::from_wrapped_u32(2927525953),
134 SP1Field::from_wrapped_u32(3912129105),
135 SP1Field::from_wrapped_u32(4004832531),
136 SP1Field::from_wrapped_u32(193772436),
137 SP1Field::from_wrapped_u32(1590247392),
138 SP1Field::from_wrapped_u32(4125818172),
139 SP1Field::from_wrapped_u32(2516251696),
140 SP1Field::from_wrapped_u32(4050945750),
141 SP1Field::from_wrapped_u32(269498914),
142 SP1Field::from_wrapped_u32(1973292656),
143 SP1Field::from_wrapped_u32(891403491),
144 SP1Field::from_wrapped_u32(1845429189),
145 SP1Field::from_wrapped_u32(2611996363),
146 SP1Field::from_wrapped_u32(2310542653),
147 SP1Field::from_wrapped_u32(4071195740),
148 ],
149 [
150 SP1Field::from_wrapped_u32(3505307391),
151 SP1Field::from_wrapped_u32(786445290),
152 SP1Field::from_wrapped_u32(3815313971),
153 SP1Field::from_wrapped_u32(1111591756),
154 SP1Field::from_wrapped_u32(4233279834),
155 SP1Field::from_wrapped_u32(2775453034),
156 SP1Field::from_wrapped_u32(1991257625),
157 SP1Field::from_wrapped_u32(2940505809),
158 SP1Field::from_wrapped_u32(2751316206),
159 SP1Field::from_wrapped_u32(1028870679),
160 SP1Field::from_wrapped_u32(1282466273),
161 SP1Field::from_wrapped_u32(1059053371),
162 SP1Field::from_wrapped_u32(834521354),
163 SP1Field::from_wrapped_u32(138721483),
164 SP1Field::from_wrapped_u32(3100410803),
165 SP1Field::from_wrapped_u32(3843128331),
166 ],
167 [
168 SP1Field::from_wrapped_u32(3878220780),
169 SP1Field::from_wrapped_u32(4058162439),
170 SP1Field::from_wrapped_u32(1478942487),
171 SP1Field::from_wrapped_u32(799012923),
172 SP1Field::from_wrapped_u32(496734827),
173 SP1Field::from_wrapped_u32(3521261236),
174 SP1Field::from_wrapped_u32(755421082),
175 SP1Field::from_wrapped_u32(1361409515),
176 SP1Field::from_wrapped_u32(392099473),
177 SP1Field::from_wrapped_u32(3178453393),
178 SP1Field::from_wrapped_u32(4068463721),
179 SP1Field::from_wrapped_u32(7935614),
180 SP1Field::from_wrapped_u32(4140885645),
181 SP1Field::from_wrapped_u32(2150748066),
182 SP1Field::from_wrapped_u32(1685210312),
183 SP1Field::from_wrapped_u32(3852983224),
184 ],
185 [
186 SP1Field::from_wrapped_u32(2896943075),
187 SP1Field::from_wrapped_u32(3087590927),
188 SP1Field::from_wrapped_u32(992175959),
189 SP1Field::from_wrapped_u32(970216228),
190 SP1Field::from_wrapped_u32(3473630090),
191 SP1Field::from_wrapped_u32(3899670400),
192 SP1Field::from_wrapped_u32(3603388822),
193 SP1Field::from_wrapped_u32(2633488197),
194 SP1Field::from_wrapped_u32(2479406964),
195 SP1Field::from_wrapped_u32(2420952999),
196 SP1Field::from_wrapped_u32(1852516800),
197 SP1Field::from_wrapped_u32(4253075697),
198 SP1Field::from_wrapped_u32(979699862),
199 SP1Field::from_wrapped_u32(1163403191),
200 SP1Field::from_wrapped_u32(1608599874),
201 SP1Field::from_wrapped_u32(3056104448),
202 ],
203 [
204 SP1Field::from_wrapped_u32(3779109343),
205 SP1Field::from_wrapped_u32(536205958),
206 SP1Field::from_wrapped_u32(4183458361),
207 SP1Field::from_wrapped_u32(1649720295),
208 SP1Field::from_wrapped_u32(1444912244),
209 SP1Field::from_wrapped_u32(3122230878),
210 SP1Field::from_wrapped_u32(384301396),
211 SP1Field::from_wrapped_u32(4228198516),
212 SP1Field::from_wrapped_u32(1662916865),
213 SP1Field::from_wrapped_u32(4082161114),
214 SP1Field::from_wrapped_u32(2121897314),
215 SP1Field::from_wrapped_u32(1706239958),
216 SP1Field::from_wrapped_u32(4166959388),
217 SP1Field::from_wrapped_u32(1626054781),
218 SP1Field::from_wrapped_u32(3005858978),
219 SP1Field::from_wrapped_u32(1431907253),
220 ],
221 [
222 SP1Field::from_wrapped_u32(1418914503),
223 SP1Field::from_wrapped_u32(1365856753),
224 SP1Field::from_wrapped_u32(3942715745),
225 SP1Field::from_wrapped_u32(1429155552),
226 SP1Field::from_wrapped_u32(3545642795),
227 SP1Field::from_wrapped_u32(3772474257),
228 SP1Field::from_wrapped_u32(1621094396),
229 SP1Field::from_wrapped_u32(2154399145),
230 SP1Field::from_wrapped_u32(826697382),
231 SP1Field::from_wrapped_u32(1700781391),
232 SP1Field::from_wrapped_u32(3539164324),
233 SP1Field::from_wrapped_u32(652815039),
234 SP1Field::from_wrapped_u32(442484755),
235 SP1Field::from_wrapped_u32(2055299391),
236 SP1Field::from_wrapped_u32(1064289978),
237 SP1Field::from_wrapped_u32(1152335780),
238 ],
239 [
240 SP1Field::from_wrapped_u32(3417648695),
241 SP1Field::from_wrapped_u32(186040114),
242 SP1Field::from_wrapped_u32(3475580573),
243 SP1Field::from_wrapped_u32(2113941250),
244 SP1Field::from_wrapped_u32(1779573826),
245 SP1Field::from_wrapped_u32(1573808590),
246 SP1Field::from_wrapped_u32(3235694804),
247 SP1Field::from_wrapped_u32(2922195281),
248 SP1Field::from_wrapped_u32(1119462702),
249 SP1Field::from_wrapped_u32(3688305521),
250 SP1Field::from_wrapped_u32(1849567013),
251 SP1Field::from_wrapped_u32(667446787),
252 SP1Field::from_wrapped_u32(753897224),
253 SP1Field::from_wrapped_u32(1896396780),
254 SP1Field::from_wrapped_u32(3143026334),
255 SP1Field::from_wrapped_u32(3829603876),
256 ],
257 [
258 SP1Field::from_wrapped_u32(859661334),
259 SP1Field::from_wrapped_u32(3898844357),
260 SP1Field::from_wrapped_u32(180258337),
261 SP1Field::from_wrapped_u32(2321867017),
262 SP1Field::from_wrapped_u32(3599002504),
263 SP1Field::from_wrapped_u32(2886782421),
264 SP1Field::from_wrapped_u32(3038299378),
265 SP1Field::from_wrapped_u32(1035366250),
266 SP1Field::from_wrapped_u32(2038912197),
267 SP1Field::from_wrapped_u32(2920174523),
268 SP1Field::from_wrapped_u32(1277696101),
269 SP1Field::from_wrapped_u32(2785700290),
270 SP1Field::from_wrapped_u32(3806504335),
271 SP1Field::from_wrapped_u32(3518858933),
272 SP1Field::from_wrapped_u32(654843672),
273 SP1Field::from_wrapped_u32(2127120275),
274 ],
275 [
276 SP1Field::from_wrapped_u32(1548195514),
277 SP1Field::from_wrapped_u32(2378056027),
278 SP1Field::from_wrapped_u32(390914568),
279 SP1Field::from_wrapped_u32(1472049779),
280 SP1Field::from_wrapped_u32(1552596765),
281 SP1Field::from_wrapped_u32(1905886441),
282 SP1Field::from_wrapped_u32(1611959354),
283 SP1Field::from_wrapped_u32(3653263304),
284 SP1Field::from_wrapped_u32(3423946386),
285 SP1Field::from_wrapped_u32(340857935),
286 SP1Field::from_wrapped_u32(2208879480),
287 SP1Field::from_wrapped_u32(139364268),
288 SP1Field::from_wrapped_u32(3447281773),
289 SP1Field::from_wrapped_u32(3777813707),
290 SP1Field::from_wrapped_u32(55640413),
291 SP1Field::from_wrapped_u32(4101901741),
292 ],
293 [
294 SP1Field::from_wrapped_u32(104929687),
295 SP1Field::from_wrapped_u32(1459980974),
296 SP1Field::from_wrapped_u32(1831234737),
297 SP1Field::from_wrapped_u32(457139004),
298 SP1Field::from_wrapped_u32(2581487628),
299 SP1Field::from_wrapped_u32(2112044563),
300 SP1Field::from_wrapped_u32(3567013861),
301 SP1Field::from_wrapped_u32(2792004347),
302 SP1Field::from_wrapped_u32(576325418),
303 SP1Field::from_wrapped_u32(41126132),
304 SP1Field::from_wrapped_u32(2713562324),
305 SP1Field::from_wrapped_u32(151213722),
306 SP1Field::from_wrapped_u32(2891185935),
307 SP1Field::from_wrapped_u32(546846420),
308 SP1Field::from_wrapped_u32(2939794919),
309 SP1Field::from_wrapped_u32(2543469905)
310 ],
311 [
312 SP1Field::from_wrapped_u32(2191909784),
313 SP1Field::from_wrapped_u32(3315138460),
314 SP1Field::from_wrapped_u32(530414574),
315 SP1Field::from_wrapped_u32(1242280418),
316 SP1Field::from_wrapped_u32(1211740715),
317 SP1Field::from_wrapped_u32(3993672165),
318 SP1Field::from_wrapped_u32(2505083323),
319 SP1Field::from_wrapped_u32(3845798801),
320 SP1Field::from_wrapped_u32(538768466),
321 SP1Field::from_wrapped_u32(2063567560),
322 SP1Field::from_wrapped_u32(3366148274),
323 SP1Field::from_wrapped_u32(1449831887),
324 SP1Field::from_wrapped_u32(2408012466),
325 SP1Field::from_wrapped_u32(294726285),
326 SP1Field::from_wrapped_u32(3943435493),
327 SP1Field::from_wrapped_u32(924016661),
328 ],
329 [
330 SP1Field::from_wrapped_u32(3633138367),
331 SP1Field::from_wrapped_u32(3222789372),
332 SP1Field::from_wrapped_u32(809116305),
333 SP1Field::from_wrapped_u32(30100013),
334 SP1Field::from_wrapped_u32(2655172876),
335 SP1Field::from_wrapped_u32(2564247117),
336 SP1Field::from_wrapped_u32(2478649732),
337 SP1Field::from_wrapped_u32(4113689151),
338 SP1Field::from_wrapped_u32(4120146082),
339 SP1Field::from_wrapped_u32(2512308515),
340 SP1Field::from_wrapped_u32(650406041),
341 SP1Field::from_wrapped_u32(4240012393),
342 SP1Field::from_wrapped_u32(2683508708),
343 SP1Field::from_wrapped_u32(951073977),
344 SP1Field::from_wrapped_u32(3460081988),
345 SP1Field::from_wrapped_u32(339124269),
346 ],
347 [
348 SP1Field::from_wrapped_u32(130182653),
349 SP1Field::from_wrapped_u32(2755946749),
350 SP1Field::from_wrapped_u32(542600513),
351 SP1Field::from_wrapped_u32(2816103022),
352 SP1Field::from_wrapped_u32(1931786340),
353 SP1Field::from_wrapped_u32(2044470840),
354 SP1Field::from_wrapped_u32(1709908013),
355 SP1Field::from_wrapped_u32(2938369043),
356 SP1Field::from_wrapped_u32(3640399693),
357 SP1Field::from_wrapped_u32(1374470239),
358 SP1Field::from_wrapped_u32(2191149676),
359 SP1Field::from_wrapped_u32(2637495682),
360 SP1Field::from_wrapped_u32(4236394040),
361 SP1Field::from_wrapped_u32(2289358846),
362 SP1Field::from_wrapped_u32(3833368530),
363 SP1Field::from_wrapped_u32(974546524),
364 ],
365 [
366 SP1Field::from_wrapped_u32(3306659113),
367 SP1Field::from_wrapped_u32(2234814261),
368 SP1Field::from_wrapped_u32(1188782305),
369 SP1Field::from_wrapped_u32(223782844),
370 SP1Field::from_wrapped_u32(2248980567),
371 SP1Field::from_wrapped_u32(2309786141),
372 SP1Field::from_wrapped_u32(2023401627),
373 SP1Field::from_wrapped_u32(3278877413),
374 SP1Field::from_wrapped_u32(2022138149),
375 SP1Field::from_wrapped_u32(575851471),
376 SP1Field::from_wrapped_u32(1612560780),
377 SP1Field::from_wrapped_u32(3926656936),
378 SP1Field::from_wrapped_u32(3318548977),
379 SP1Field::from_wrapped_u32(2591863678),
380 SP1Field::from_wrapped_u32(188109355),
381 SP1Field::from_wrapped_u32(4217723909),
382 ],
383 [
384 SP1Field::from_wrapped_u32(1564209905),
385 SP1Field::from_wrapped_u32(2154197895),
386 SP1Field::from_wrapped_u32(2459687029),
387 SP1Field::from_wrapped_u32(2870634489),
388 SP1Field::from_wrapped_u32(1375012945),
389 SP1Field::from_wrapped_u32(1529454825),
390 SP1Field::from_wrapped_u32(306140690),
391 SP1Field::from_wrapped_u32(2855578299),
392 SP1Field::from_wrapped_u32(1246997295),
393 SP1Field::from_wrapped_u32(3024298763),
394 SP1Field::from_wrapped_u32(1915270363),
395 SP1Field::from_wrapped_u32(1218245412),
396 SP1Field::from_wrapped_u32(2479314020),
397 SP1Field::from_wrapped_u32(2989827755),
398 SP1Field::from_wrapped_u32(814378556),
399 SP1Field::from_wrapped_u32(4039775921),
400 ],
401 [
402 SP1Field::from_wrapped_u32(1165280628),
403 SP1Field::from_wrapped_u32(1203983801),
404 SP1Field::from_wrapped_u32(3814740033),
405 SP1Field::from_wrapped_u32(1919627044),
406 SP1Field::from_wrapped_u32(600240215),
407 SP1Field::from_wrapped_u32(773269071),
408 SP1Field::from_wrapped_u32(486685186),
409 SP1Field::from_wrapped_u32(4254048810),
410 SP1Field::from_wrapped_u32(1415023565),
411 SP1Field::from_wrapped_u32(502840102),
412 SP1Field::from_wrapped_u32(4225648358),
413 SP1Field::from_wrapped_u32(510217063),
414 SP1Field::from_wrapped_u32(166444818),
415 SP1Field::from_wrapped_u32(1430745893),
416 SP1Field::from_wrapped_u32(1376516190),
417 SP1Field::from_wrapped_u32(1775891321),
418 ],
419 [
420 SP1Field::from_wrapped_u32(1170945922),
421 SP1Field::from_wrapped_u32(1105391877),
422 SP1Field::from_wrapped_u32(261536467),
423 SP1Field::from_wrapped_u32(1401687994),
424 SP1Field::from_wrapped_u32(1022529847),
425 SP1Field::from_wrapped_u32(2476446456),
426 SP1Field::from_wrapped_u32(2603844878),
427 SP1Field::from_wrapped_u32(3706336043),
428 SP1Field::from_wrapped_u32(3463053714),
429 SP1Field::from_wrapped_u32(1509644517),
430 SP1Field::from_wrapped_u32(588552318),
431 SP1Field::from_wrapped_u32(65252581),
432 SP1Field::from_wrapped_u32(3696502656),
433 SP1Field::from_wrapped_u32(2183330763),
434 SP1Field::from_wrapped_u32(3664021233),
435 SP1Field::from_wrapped_u32(1643809916),
436 ],
437 [
438 SP1Field::from_wrapped_u32(2922875898),
439 SP1Field::from_wrapped_u32(3740690643),
440 SP1Field::from_wrapped_u32(3932461140),
441 SP1Field::from_wrapped_u32(161156271),
442 SP1Field::from_wrapped_u32(2619943483),
443 SP1Field::from_wrapped_u32(4077039509),
444 SP1Field::from_wrapped_u32(2921201703),
445 SP1Field::from_wrapped_u32(2085619718),
446 SP1Field::from_wrapped_u32(2065264646),
447 SP1Field::from_wrapped_u32(2615693812),
448 SP1Field::from_wrapped_u32(3116555433),
449 SP1Field::from_wrapped_u32(246100007),
450 SP1Field::from_wrapped_u32(4281387154),
451 SP1Field::from_wrapped_u32(4046141001),
452 SP1Field::from_wrapped_u32(4027749321),
453 SP1Field::from_wrapped_u32(111611860),
454 ],
455 [
456 SP1Field::from_wrapped_u32(2066954820),
457 SP1Field::from_wrapped_u32(2502099969),
458 SP1Field::from_wrapped_u32(2915053115),
459 SP1Field::from_wrapped_u32(2362518586),
460 SP1Field::from_wrapped_u32(366091708),
461 SP1Field::from_wrapped_u32(2083204932),
462 SP1Field::from_wrapped_u32(4138385632),
463 SP1Field::from_wrapped_u32(3195157567),
464 SP1Field::from_wrapped_u32(1318086382),
465 SP1Field::from_wrapped_u32(521723799),
466 SP1Field::from_wrapped_u32(702443405),
467 SP1Field::from_wrapped_u32(2507670985),
468 SP1Field::from_wrapped_u32(1760347557),
469 SP1Field::from_wrapped_u32(2631999893),
470 SP1Field::from_wrapped_u32(1672737554),
471 SP1Field::from_wrapped_u32(1060867760),
472 ],
473 [
474 SP1Field::from_wrapped_u32(2359801781),
475 SP1Field::from_wrapped_u32(2800231467),
476 SP1Field::from_wrapped_u32(3010357035),
477 SP1Field::from_wrapped_u32(1035997899),
478 SP1Field::from_wrapped_u32(1210110952),
479 SP1Field::from_wrapped_u32(1018506770),
480 SP1Field::from_wrapped_u32(2799468177),
481 SP1Field::from_wrapped_u32(1479380761),
482 SP1Field::from_wrapped_u32(1536021911),
483 SP1Field::from_wrapped_u32(358993854),
484 SP1Field::from_wrapped_u32(579904113),
485 SP1Field::from_wrapped_u32(3432144800),
486 SP1Field::from_wrapped_u32(3625515809),
487 SP1Field::from_wrapped_u32(199241497),
488 SP1Field::from_wrapped_u32(4058304109),
489 SP1Field::from_wrapped_u32(2590164234),
490 ],
491 [
492 SP1Field::from_wrapped_u32(1688530738),
493 SP1Field::from_wrapped_u32(1580733335),
494 SP1Field::from_wrapped_u32(2443981517),
495 SP1Field::from_wrapped_u32(2206270565),
496 SP1Field::from_wrapped_u32(2780074229),
497 SP1Field::from_wrapped_u32(2628739677),
498 SP1Field::from_wrapped_u32(2940123659),
499 SP1Field::from_wrapped_u32(4145206827),
500 SP1Field::from_wrapped_u32(3572278009),
501 SP1Field::from_wrapped_u32(2779607509),
502 SP1Field::from_wrapped_u32(1098718697),
503 SP1Field::from_wrapped_u32(1424913749),
504 SP1Field::from_wrapped_u32(2224415875),
505 SP1Field::from_wrapped_u32(1108922178),
506 SP1Field::from_wrapped_u32(3646272562),
507 SP1Field::from_wrapped_u32(3935186184),
508 ],
509 [
510 SP1Field::from_wrapped_u32(820046587),
511 SP1Field::from_wrapped_u32(1393386250),
512 SP1Field::from_wrapped_u32(2665818575),
513 SP1Field::from_wrapped_u32(2231782019),
514 SP1Field::from_wrapped_u32(672377010),
515 SP1Field::from_wrapped_u32(1920315467),
516 SP1Field::from_wrapped_u32(1913164407),
517 SP1Field::from_wrapped_u32(2029526876),
518 SP1Field::from_wrapped_u32(2629271820),
519 SP1Field::from_wrapped_u32(384320012),
520 SP1Field::from_wrapped_u32(4112320585),
521 SP1Field::from_wrapped_u32(3131824773),
522 SP1Field::from_wrapped_u32(2347818197),
523 SP1Field::from_wrapped_u32(2220997386),
524 SP1Field::from_wrapped_u32(1772368609),
525 SP1Field::from_wrapped_u32(2579960095),
526 ],
527 [
528 SP1Field::from_wrapped_u32(3544930873),
529 SP1Field::from_wrapped_u32(225847443),
530 SP1Field::from_wrapped_u32(3070082278),
531 SP1Field::from_wrapped_u32(95643305),
532 SP1Field::from_wrapped_u32(3438572042),
533 SP1Field::from_wrapped_u32(3312856509),
534 SP1Field::from_wrapped_u32(615850007),
535 SP1Field::from_wrapped_u32(1863868773),
536 SP1Field::from_wrapped_u32(803582265),
537 SP1Field::from_wrapped_u32(3461976859),
538 SP1Field::from_wrapped_u32(2903025799),
539 SP1Field::from_wrapped_u32(1482092434),
540 SP1Field::from_wrapped_u32(3902972499),
541 SP1Field::from_wrapped_u32(3872341868),
542 SP1Field::from_wrapped_u32(1530411808),
543 SP1Field::from_wrapped_u32(2214923584),
544 ],
545 [
546 SP1Field::from_wrapped_u32(3118792481),
547 SP1Field::from_wrapped_u32(2241076515),
548 SP1Field::from_wrapped_u32(3983669831),
549 SP1Field::from_wrapped_u32(3180915147),
550 SP1Field::from_wrapped_u32(3838626501),
551 SP1Field::from_wrapped_u32(1921630011),
552 SP1Field::from_wrapped_u32(3415351771),
553 SP1Field::from_wrapped_u32(2249953859),
554 SP1Field::from_wrapped_u32(3755081630),
555 SP1Field::from_wrapped_u32(486327260),
556 SP1Field::from_wrapped_u32(1227575720),
557 SP1Field::from_wrapped_u32(3643869379),
558 SP1Field::from_wrapped_u32(2982026073),
559 SP1Field::from_wrapped_u32(2466043731),
560 SP1Field::from_wrapped_u32(1982634375),
561 SP1Field::from_wrapped_u32(3769609014),
562 ],
563 [
564 SP1Field::from_wrapped_u32(2195455495),
565 SP1Field::from_wrapped_u32(2596863283),
566 SP1Field::from_wrapped_u32(4244994973),
567 SP1Field::from_wrapped_u32(1983609348),
568 SP1Field::from_wrapped_u32(4019674395),
569 SP1Field::from_wrapped_u32(3469982031),
570 SP1Field::from_wrapped_u32(1458697570),
571 SP1Field::from_wrapped_u32(1593516217),
572 SP1Field::from_wrapped_u32(1963896497),
573 SP1Field::from_wrapped_u32(3115309118),
574 SP1Field::from_wrapped_u32(1659132465),
575 SP1Field::from_wrapped_u32(2536770756),
576 SP1Field::from_wrapped_u32(3059294171),
577 SP1Field::from_wrapped_u32(2618031334),
578 SP1Field::from_wrapped_u32(2040903247),
579 SP1Field::from_wrapped_u32(3799795076),
580 ]
581 ];
582
583
584 pub static ref RC_16_30_U32: [[u32; 16]; 30] = [
585 [
586 (2110014213),
587 (3964964605),
588 (2190662774),
589 (2732996483),
590 (640767983),
591 (3403899136),
592 (1716033721),
593 (1606702601),
594 (3759873288),
595 (1466015491),
596 (1498308946),
597 (2844375094),
598 (3042463841),
599 (1969905919),
600 (4109944726),
601 (3925048366),
602 ],
603 [
604 (3706859504),
605 (759122502),
606 (3167665446),
607 (1131812921),
608 (1080754908),
609 (4080114493),
610 (893583089),
611 (2019677373),
612 (3128604556),
613 (580640471),
614 (3277620260),
615 (842931656),
616 (548879852),
617 (3608554714),
618 (3575647916),
619 (81826002),
620 ],
621 [
622 (4289086263),
623 (1563933798),
624 (1440025885),
625 (184445025),
626 (2598651360),
627 (1396647410),
628 (1575877922),
629 (3303853401),
630 (137125468),
631 (765010148),
632 (633675867),
633 (2037803363),
634 (2573389828),
635 (1895729703),
636 (541515871),
637 (1783382863),
638 ],
639 [
640 (2641856484),
641 (3035743342),
642 (3672796326),
643 (245668751),
644 (2025460432),
645 (201609705),
646 (286217151),
647 (4093475563),
648 (2519572182),
649 (3080699870),
650 (2762001832),
651 (1244250808),
652 (606038199),
653 (3182740831),
654 (73007766),
655 (2572204153),
656 ],
657 [
658 (1196780786),
659 (3447394443),
660 (747167305),
661 (2968073607),
662 (1053214930),
663 (1074411832),
664 (4016794508),
665 (1570312929),
666 (113576933),
667 (4042581186),
668 (3634515733),
669 (1032701597),
670 (2364839308),
671 (3840286918),
672 (888378655),
673 (2520191583),
674 ],
675 [
676 (36046858),
677 (2927525953),
678 (3912129105),
679 (4004832531),
680 (193772436),
681 (1590247392),
682 (4125818172),
683 (2516251696),
684 (4050945750),
685 (269498914),
686 (1973292656),
687 (891403491),
688 (1845429189),
689 (2611996363),
690 (2310542653),
691 (4071195740),
692 ],
693 [
694 (3505307391),
695 (786445290),
696 (3815313971),
697 (1111591756),
698 (4233279834),
699 (2775453034),
700 (1991257625),
701 (2940505809),
702 (2751316206),
703 (1028870679),
704 (1282466273),
705 (1059053371),
706 (834521354),
707 (138721483),
708 (3100410803),
709 (3843128331),
710 ],
711 [
712 (3878220780),
713 (4058162439),
714 (1478942487),
715 (799012923),
716 (496734827),
717 (3521261236),
718 (755421082),
719 (1361409515),
720 (392099473),
721 (3178453393),
722 (4068463721),
723 (7935614),
724 (4140885645),
725 (2150748066),
726 (1685210312),
727 (3852983224),
728 ],
729 [
730 (2896943075),
731 (3087590927),
732 (992175959),
733 (970216228),
734 (3473630090),
735 (3899670400),
736 (3603388822),
737 (2633488197),
738 (2479406964),
739 (2420952999),
740 (1852516800),
741 (4253075697),
742 (979699862),
743 (1163403191),
744 (1608599874),
745 (3056104448),
746 ],
747 [
748 (3779109343),
749 (536205958),
750 (4183458361),
751 (1649720295),
752 (1444912244),
753 (3122230878),
754 (384301396),
755 (4228198516),
756 (1662916865),
757 (4082161114),
758 (2121897314),
759 (1706239958),
760 (4166959388),
761 (1626054781),
762 (3005858978),
763 (1431907253),
764 ],
765 [
766 (1418914503),
767 (1365856753),
768 (3942715745),
769 (1429155552),
770 (3545642795),
771 (3772474257),
772 (1621094396),
773 (2154399145),
774 (826697382),
775 (1700781391),
776 (3539164324),
777 (652815039),
778 (442484755),
779 (2055299391),
780 (1064289978),
781 (1152335780),
782 ],
783 [
784 (3417648695),
785 (186040114),
786 (3475580573),
787 (2113941250),
788 (1779573826),
789 (1573808590),
790 (3235694804),
791 (2922195281),
792 (1119462702),
793 (3688305521),
794 (1849567013),
795 (667446787),
796 (753897224),
797 (1896396780),
798 (3143026334),
799 (3829603876),
800 ],
801 [
802 (859661334),
803 (3898844357),
804 (180258337),
805 (2321867017),
806 (3599002504),
807 (2886782421),
808 (3038299378),
809 (1035366250),
810 (2038912197),
811 (2920174523),
812 (1277696101),
813 (2785700290),
814 (3806504335),
815 (3518858933),
816 (654843672),
817 (2127120275),
818 ],
819 [
820 (1548195514),
821 (2378056027),
822 (390914568),
823 (1472049779),
824 (1552596765),
825 (1905886441),
826 (1611959354),
827 (3653263304),
828 (3423946386),
829 (340857935),
830 (2208879480),
831 (139364268),
832 (3447281773),
833 (3777813707),
834 (55640413),
835 (4101901741),
836 ],
837 [
838 (104929687),
839 (1459980974),
840 (1831234737),
841 (457139004),
842 (2581487628),
843 (2112044563),
844 (3567013861),
845 (2792004347),
846 (576325418),
847 (41126132),
848 (2713562324),
849 (151213722),
850 (2891185935),
851 (546846420),
852 (2939794919),
853 (2543469905)
854 ],
855 [
856 (2191909784),
857 (3315138460),
858 (530414574),
859 (1242280418),
860 (1211740715),
861 (3993672165),
862 (2505083323),
863 (3845798801),
864 (538768466),
865 (2063567560),
866 (3366148274),
867 (1449831887),
868 (2408012466),
869 (294726285),
870 (3943435493),
871 (924016661),
872 ],
873 [
874 (3633138367),
875 (3222789372),
876 (809116305),
877 (30100013),
878 (2655172876),
879 (2564247117),
880 (2478649732),
881 (4113689151),
882 (4120146082),
883 (2512308515),
884 (650406041),
885 (4240012393),
886 (2683508708),
887 (951073977),
888 (3460081988),
889 (339124269),
890 ],
891 [
892 (130182653),
893 (2755946749),
894 (542600513),
895 (2816103022),
896 (1931786340),
897 (2044470840),
898 (1709908013),
899 (2938369043),
900 (3640399693),
901 (1374470239),
902 (2191149676),
903 (2637495682),
904 (4236394040),
905 (2289358846),
906 (3833368530),
907 (974546524),
908 ],
909 [
910 (3306659113),
911 (2234814261),
912 (1188782305),
913 (223782844),
914 (2248980567),
915 (2309786141),
916 (2023401627),
917 (3278877413),
918 (2022138149),
919 (575851471),
920 (1612560780),
921 (3926656936),
922 (3318548977),
923 (2591863678),
924 (188109355),
925 (4217723909),
926 ],
927 [
928 (1564209905),
929 (2154197895),
930 (2459687029),
931 (2870634489),
932 (1375012945),
933 (1529454825),
934 (306140690),
935 (2855578299),
936 (1246997295),
937 (3024298763),
938 (1915270363),
939 (1218245412),
940 (2479314020),
941 (2989827755),
942 (814378556),
943 (4039775921),
944 ],
945 [
946 (1165280628),
947 (1203983801),
948 (3814740033),
949 (1919627044),
950 (600240215),
951 (773269071),
952 (486685186),
953 (4254048810),
954 (1415023565),
955 (502840102),
956 (4225648358),
957 (510217063),
958 (166444818),
959 (1430745893),
960 (1376516190),
961 (1775891321),
962 ],
963 [
964 (1170945922),
965 (1105391877),
966 (261536467),
967 (1401687994),
968 (1022529847),
969 (2476446456),
970 (2603844878),
971 (3706336043),
972 (3463053714),
973 (1509644517),
974 (588552318),
975 (65252581),
976 (3696502656),
977 (2183330763),
978 (3664021233),
979 (1643809916),
980 ],
981 [
982 (2922875898),
983 (3740690643),
984 (3932461140),
985 (161156271),
986 (2619943483),
987 (4077039509),
988 (2921201703),
989 (2085619718),
990 (2065264646),
991 (2615693812),
992 (3116555433),
993 (246100007),
994 (4281387154),
995 (4046141001),
996 (4027749321),
997 (111611860),
998 ],
999 [
1000 (2066954820),
1001 (2502099969),
1002 (2915053115),
1003 (2362518586),
1004 (366091708),
1005 (2083204932),
1006 (4138385632),
1007 (3195157567),
1008 (1318086382),
1009 (521723799),
1010 (702443405),
1011 (2507670985),
1012 (1760347557),
1013 (2631999893),
1014 (1672737554),
1015 (1060867760),
1016 ],
1017 [
1018 (2359801781),
1019 (2800231467),
1020 (3010357035),
1021 (1035997899),
1022 (1210110952),
1023 (1018506770),
1024 (2799468177),
1025 (1479380761),
1026 (1536021911),
1027 (358993854),
1028 (579904113),
1029 (3432144800),
1030 (3625515809),
1031 (199241497),
1032 (4058304109),
1033 (2590164234),
1034 ],
1035 [
1036 (1688530738),
1037 (1580733335),
1038 (2443981517),
1039 (2206270565),
1040 (2780074229),
1041 (2628739677),
1042 (2940123659),
1043 (4145206827),
1044 (3572278009),
1045 (2779607509),
1046 (1098718697),
1047 (1424913749),
1048 (2224415875),
1049 (1108922178),
1050 (3646272562),
1051 (3935186184),
1052 ],
1053 [
1054 (820046587),
1055 (1393386250),
1056 (2665818575),
1057 (2231782019),
1058 (672377010),
1059 (1920315467),
1060 (1913164407),
1061 (2029526876),
1062 (2629271820),
1063 (384320012),
1064 (4112320585),
1065 (3131824773),
1066 (2347818197),
1067 (2220997386),
1068 (1772368609),
1069 (2579960095),
1070 ],
1071 [
1072 (3544930873),
1073 (225847443),
1074 (3070082278),
1075 (95643305),
1076 (3438572042),
1077 (3312856509),
1078 (615850007),
1079 (1863868773),
1080 (803582265),
1081 (3461976859),
1082 (2903025799),
1083 (1482092434),
1084 (3902972499),
1085 (3872341868),
1086 (1530411808),
1087 (2214923584),
1088 ],
1089 [
1090 (3118792481),
1091 (2241076515),
1092 (3983669831),
1093 (3180915147),
1094 (3838626501),
1095 (1921630011),
1096 (3415351771),
1097 (2249953859),
1098 (3755081630),
1099 (486327260),
1100 (1227575720),
1101 (3643869379),
1102 (2982026073),
1103 (2466043731),
1104 (1982634375),
1105 (3769609014),
1106 ],
1107 [
1108 (2195455495),
1109 (2596863283),
1110 (4244994973),
1111 (1983609348),
1112 (4019674395),
1113 (3469982031),
1114 (1458697570),
1115 (1593516217),
1116 (1963896497),
1117 (3115309118),
1118 (1659132465),
1119 (2536770756),
1120 (3059294171),
1121 (2618031334),
1122 (2040903247),
1123 (3799795076),
1124 ]
1125 ];
1126}
1127
1128pub fn poseidon2_init() -> SP1Perm {
1129 #[allow(clippy::disallowed_methods)]
1130 slop_koala_bear::my_kb_16_perm()
1131}
1132
1133#[allow(clippy::disallowed_types)]
1134use slop_koala_bear::DiffusionMatrixKoalaBear;
1135
1136#[allow(clippy::disallowed_types)]
1137pub type SP1DiffusionMatrix = DiffusionMatrixKoalaBear;
1138use slop_symmetric::{CryptographicHasher, PaddingFreeSponge};
1139
1140pub type SP1Perm = Poseidon2<SP1Field, Poseidon2ExternalMatrixGeneral, SP1DiffusionMatrix, 16, 3>;
1141
1142pub fn poseidon2_hash(input: Vec<SP1Field>) -> [SP1Field; 8] {
1143 POSEIDON2_HASHER.hash_iter(input)
1144}
1145
1146pub fn poseidon2_hasher() -> PaddingFreeSponge<SP1Perm, 16, 8, 8> {
1147 let hasher = poseidon2_init();
1148 PaddingFreeSponge::<SP1Perm, 16, 8, 8>::new(hasher)
1149}
1150
1151lazy_static! {
1152 pub static ref POSEIDON2_HASHER: PaddingFreeSponge::<SP1Perm, 16, 8, 8> = poseidon2_hasher();
1153}
1154
1155pub fn hash_deferred_proof(
1157 prev_digest: &[SP1Field; 8],
1158 vk_digest: &[SP1Field; 8],
1159 pv_digest: &[SP1Field; 32],
1160) -> [SP1Field; 8] {
1161 let mut inputs = Vec::with_capacity(48);
1162 inputs.extend_from_slice(prev_digest);
1163 inputs.extend_from_slice(vk_digest);
1164 inputs.extend_from_slice(pv_digest);
1165 poseidon2_hash(inputs.to_vec())
1166}