sonobe/folding-schemes/src/transcript/poseidon/grumpkin.rs
folding-schemes/src/transcript/poseidon/grumpkin.rsRaw
1use crate::utils::vec::mat_from_str_mat;
2use ark_crypto_primitives::sponge::poseidon::PoseidonConfig;
3use ark_ff::{BigInteger, PrimeField};
4use ark_grumpkin::Fr;
5
6// Poseidon constants for Grumpkin curve as generated by
7// https://extgit.iaik.tugraz.at/krypto/hadeshash/-/blob/master/code/generate_params_poseidon.sage
8// generated with `sage generate_params_poseidon.sage 1 0 254 5 5 128 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47`
9pub(crate) fn constants<F: PrimeField>() -> (Vec<Vec<F>>, Vec<Vec<F>>) {
10 assert_eq!(
11 F::MODULUS.to_bytes_be(),
12 Fr::MODULUS.to_bytes_be(),
13 "The prime field must be isomorphic to Grumpkin's scalar field."
14 );
15
16 let ark_string: Vec<Vec<&'static str>> = vec![
17 vec![
18 "1302239555262414373374689806120238567451910671048356388761256768881091977026",
19 "20142103518641694351566464807000085009490728625878244431319536321251441942827",
20 "1848725460637284900919684211664029868073589532499995561090226899069857587691",
21 "5361307675224911135631066913685411082885932664964555034697699114860673882233",
22 "4473122481411436076578491888827463154326954640259385462117207234024651916467",
23 ],
24 vec![
25 "4533665742580623759631463707292502457303336027513946514723234383907861855246",
26 "18472882194054405184784552208176156100293313194921931757669044776860165723544",
27 "13757170890682053314816924771913668733053950646218560510866549037895645369564",
28 "15806422895261109419898318282501524707572435539997217203708101166323921748108",
29 "4766645625917486367271392557885239315740765821810232842247605581184299843494",
30 ],
31 vec![
32 "20755837067826525663784916442484716524757386712340218661351088127992212106824",
33 "6931011592102208154123444754548015589930397906195731845090389578241299211369",
34 "12872548123049027593925484150531538114342387406107964171770931024714006292181",
35 "19021338859263582291104968524901108269784177222899573306303774240117233382398",
36 "17624901113592432267211565106957770530605134617091943075252981153737028641716",
37 ],
38 vec![
39 "11897559166778002356641650092926138527561825100763949484362978917091516510740",
40 "16531220301863555769676315206097401335513858226194647800882375473715925042232",
41 "17424778277809172963111651706245659891848752348049503063931347914108000943672",
42 "8755320631024432262855370560922521571750691690410643309032862198109856402583",
43 "13001374422759326741836935513643753155827889666543672420219715996498314514388",
44 ],
45 vec![
46 "1216381760598407582699518975893828293652170521927520199708385998164690424621",
47 "12904452162183097363015957196342633654786993893983128901759408322407067297371",
48 "12561546531549776115730200560156766849625548211823920139512193600272045292214",
49 "6930331115111210258738101597156664444782725205072006650173982958818687844256",
50 "20343201589001547428520895531352840937278491384202851733146323236738523363974",
51 ],
52 vec![
53 "21276658617773026322558061138281506464246599637634454717771400932019299351058",
54 "10097707957242243649644020228037307057787037645761780570978695646445962985259",
55 "20884899049383530051119245117264409449924070600456004919419167743735821727525",
56 "13397377812553675887463913728139069073663372700997375397306322061704817036699",
57 "18616452404841674533221000354835108216941859123618809264334834815478741347616",
58 ],
59 vec![
60 "14095582055409818879058497145465115091368953664985761666416195570775862375876",
61 "989852126716121482840752331182237457108026053334039713051379901905011698070",
62 "17340662943780963387950947862140795796989106523426385169679957973719353360741",
63 "21755563706267022930627043190481285340144355046068185172121349807216561640069",
64 "15325642321391280884601090785518744373251074806018161393832307224918948529190",
65 ],
66 vec![
67 "10947071261274459198985325724422809398466752666178363754986952007564051091991",
68 "19953459756557134691582789660250080388719207918492892241424355079847437897323",
69 "13017630646666130918684255548141038078663596336503425492693574842865036949889",
70 "4905735010145524529321574488779565535942265382177114282705789859908899904195",
71 "10994310769595981723441482938782205505832502558966986540479894047164733348048",
72 ],
73 vec![
74 "4558883426533135507911287152839063026974356902037934918621088392204919960394",
75 "11389411190803682369640964183611054693569262790844534007467939610145999369106",
76 "18427429659657004292641659748828676044508307931530940913274422128932825189144",
77 "4747632600112900813091981406884834870751420906815558480423623116525080457937",
78 "5490841575344500401467379479524085742106499725818479519577052331586947120981",
79 ],
80 vec![
81 "2347382691271463868967750760346366670376966725559856646130273282076458003368",
82 "16502441246700317204003385838804213772286717383737310147868712728226242159711",
83 "14646651083202779369271496867484659085917125847409070439596464462441721106180",
84 "13041468713723203915781425513068453721571105549428616212880344099041922281475",
85 "3565173238238447220537445892325048229194756045427371806218935305698716190995",
86 ],
87 vec![
88 "17943632701836793558610248175530473966863264931644843118326991954984458357290",
89 "8629262964952314380681928360755010594313865847541533524671645031866347944808",
90 "7572585832263212060188863708270352053805259115073057646408375965480399606343",
91 "83274726636107851152653695232725466625000275473180660596342055855019190940",
92 "18419438698221392832302278310087737661219932827207397795877863686561542628223",
93 ],
94 vec![
95 "16874449584406008639769137537482670173495631460698323839993762270762442482009",
96 "8749161354809478532131350694773024129109208098976978805205338319260439258799",
97 "20095113607838931495450163196664901744414657849787917039337877115367663583621",
98 "21496402233796304778674847416310373229074196587894223152969939251561124632593",
99 "7306593543990928826856646724176363830912005405046339703530820920160807073796",
100 ],
101 vec![
102 "16574885752032489191936718275612881782825833553621719044993535519938387127400",
103 "17893846554920802635748353716139419828283296002539047685567560104482290794073",
104 "8217710934970159387824787503447453277040037054856124483775233206267781444657",
105 "11736757443656203051940992851618854589883051155619796589606327570587773463597",
106 "7357108854635356516029972411581451513334735628108242015429096369590782972006",
107 ],
108 vec![
109 "8147957389683128377316520163944526066526593720865319955477800843043644615989",
110 "8578207148496795372472985004149219327836996063338727427201924899856749727241",
111 "878253637253843051899747206938918363442655844121997039811453253482370007284",
112 "20781125944276624211500376146292543892734001454479669416166826579753807566548",
113 "20773295400756975680254195587466646104772947626518629881700760847706165190894",
114 ],
115 vec![
116 "8895732064456860615031330861811147768090897020733265327161274654936972538582",
117 "13954796436586071032237593323904206118434100817076378166833933826515717194615",
118 "6355545976680142042668472818246836867663718105500649088196115931833309333103",
119 "4499982511725783916459995397890272599887600061913175041084892456480149140119",
120 "15967465264568599312952212489705525749991909148648023268083881356822830788370",
121 ],
122 vec![
123 "7045959712343242541933282090760122650714071751280111869924239373404367611226",
124 "2758736619576784375230833756818006811754042435434827244702302161302877039098",
125 "19397434025124552842587969987983638711272147892938019758837488416168452483405",
126 "10440333186925843771206432302032975829293919982173553632337605164736343289924",
127 "20794828600186593697605470276342298530768058055061372707773720672699288893913",
128 ],
129 vec![
130 "709447844943698498852757143805467220589543729112138798025120783273302752965",
131 "17630037546285330880196515002704642932154600033057727390686078225861835742326",
132 "11964069260068059126618472914968597496192458090458011601036083658775820131292",
133 "19972222798144604337869256501706490565052674557941336457278259071687666383574",
134 "20844290750559969884082493778608981257417176059035561389829575829623760080290",
135 ],
136 vec![
137 "14878046182581709281495871580054466314356460127105044683621574875682589989779",
138 "17065124944399078846233335855360993858196260091317227579344094536004687852415",
139 "1360185877806851401242557944439065061377489353855369475692187665353692978482",
140 "12049768792718449936655304983585280196700538370638579473561453856246399176898",
141 "15709845344656905001433765150369354864137327645236573224421289508062355021142",
142 ],
143 vec![
144 "12621360382058090679255394201724646640587139016796614995047968862337201466266",
145 "18274600673536226005784163227137914855155135034599653130567948750716142598090",
146 "21787884937926839264206539030201705373748985208764895579805499705238531820296",
147 "5518911123238579609231332432611943975352402278711652122694671920605456058290",
148 "21761949116188843619537619306753312531716136775725591544674153934240863529357",
149 ],
150 vec![
151 "17796869701357527201664204976604962048892070624767673384550605654779596007581",
152 "2647864604326554986833555225919077882119773589724990209783919042763253098108",
153 "19617892249447454311609020630034101548030577828642557996979504904433175197191",
154 "16539302958461539414481327333293722887554229697833863735141593451081482424120",
155 "4643606366993265766773586170443164470758797322755782618742651473789684357708",
156 ],
157 vec![
158 "4071581142654619843147341131359139210505553973938073256620554556892698535665",
159 "8438506585452949563345440953823822856687668373103117920012160878623100635715",
160 "5752648847295773759323596722843573010957235282128774345262290688283958122187",
161 "4895183974327552378943157516835940807537265497873725882428018890508283672707",
162 "99879445459850652926996475631572406748626601406767594664854914412536794882",
163 ],
164 vec![
165 "1923718358753835151721387946715785538388643977826645864293502204191986917822",
166 "20477927320500904716666257724334897086463565247896774882102460405414651843209",
167 "4006849405528300180014054829493834535617772179184109802880071219554470452886",
168 "10107976939430331960441747215493937401372845315504512470617212987469116885943",
169 "7119571668689414144607710005511178646031929995895119888457483830175098096498",
170 ],
171 vec![
172 "9872390410521458646121186788124410025628155737484619433357017546855004223978",
173 "21606915995435014503540652557971419337975068893666154677779514355357198577484",
174 "18001171795801887563745450369173596829659495012571495799316565738291413999685",
175 "20937233136022841286771273476220803640966790989321822224992915812050072125029",
176 "13853572901603423386283135192760416047463779350471925431886912539052870854516",
177 ],
178 vec![
179 "7070600116437505566301516576517233788065772494741576728836386496081684767923",
180 "11184373642166206206995287089301456597658294766117413157771494639288064885056",
181 "12841477105033880138152882352270850924315792748224498738103381953046184795144",
182 "1755167770148415657695387316779398514494819098407216925610122012803274394347",
183 "17004098977713219442909011456539313463808204294677194009536257955735490204316",
184 ],
185 vec![
186 "13918334833224327546297267827647471092666708610949564904320302281568358386219",
187 "11114170313788260091002151042271544880186588359420682000730043368717205266601",
188 "18439850522357402898303132218070821687887062629580147710920704074847733864016",
189 "10530436785876228149266150677701972714943238262920190774882843981609997621353",
190 "21072114166085741592816517938297707270436788587579436145325231685649812963629",
191 ],
192 vec![
193 "2094411010794090876717462570342717890672062958788201315289761804428904533721",
194 "8915878887328839142983427035164815337561276204353902884382943661261415445046",
195 "7616342698079827765791968427743036240203047763116805302331458419499028658482",
196 "8200710106989617402554959919916002247984642580296370147402494036734414480292",
197 "20744924048241957058281161545923736050414168021353274950816510886479212477941",
198 ],
199 vec![
200 "21382304571836070549931341837111711288815078485385836691041098667712848959513",
201 "5363454082341013317554893533404052402561614424686599343270520107449141324251",
202 "19271380433074332255461750206392593155229797371298469126288176518859012402488",
203 "19284858754791044234619190072916658819128950416929669576669828359721253583476",
204 "4347052022768834992831956681958567468275115041393166850705568538274021535653",
205 ],
206 vec![
207 "5347579665803543154579370003793541492663176864561245170012842054646916411756",
208 "15154015709945488235461044557840341690070793639780701389600826304410652635126",
209 "14284408872658800251723507539653877329628932861134484971720825469778534181682",
210 "9711589473384623153441082777119419277451857932364007911882413378746629857300",
211 "12386040029204472714497332338926304138183035061201374723092754304685826751973",
212 ],
213 vec![
214 "2982316836932298422050557525101873891357503977663776438631253526538497978038",
215 "9441977932804102579353475137962384655847637389761448611532778568891212385341",
216 "8539525209965113683210134921270851023819533178131265377811744281414999344105",
217 "15410066578620981498634743331974323624474573834322740404100062731142779729944",
218 "12392063012290922514331017726588085071539844101072814893654199668124656370438",
219 ],
220 vec![
221 "17065187639764462859853096495755804816599495563961724364982614144577063825801",
222 "2008764007761084581130273411301054447855384981112680350916101365339816942167",
223 "12033786842942478889587047472531970811285454161836192807274525954252993062530",
224 "3984393467579617759108600545867686724263281569823213622742775912250034844523",
225 "18618339702539879228841658632418255862053759038071892766106358111976063460190",
226 ],
227 vec![
228 "18156898408367441617119711804274259507528069577887238632062644667202857018593",
229 "21080042863306662936950095604614158871112079027267728361334324632449882247493",
230 "16240965012479307524071605734375101960274551356571955298617984622775658350016",
231 "14221844007451140205992483251522807080442254924228164870716910231527342559914",
232 "7292289663573284912177572483254539576411910175285178060564787819667108102326",
233 ],
234 vec![
235 "8103273422142674255776372834488704655604711673426196023800875386912884557457",
236 "18054187581485462987355985044629428571768458762730021689491495998294234577693",
237 "20453295504331160733306660954772311473025215927027991341100710420100047539002",
238 "3554118714213142358752758480123600824792611607375962381969520157236774923426",
239 "16830192789363703470207646307443660978790147868390422240433276093601295592554",
240 ],
241 vec![
242 "15107140136797957315748929296388826049467241369326022314386608202530282365423",
243 "21285265735865763357384027044858771755072817264141123441908045614213326425978",
244 "2777078076018600443384138666065892999827937343665706320976121985854040040062",
245 "10306526793348313220313360232622366773192621454610895150539556890481223908878",
246 "3986094169820581741224158158414757002901140745319315875507610903859141202594",
247 ],
248 vec![
249 "21395437918063083580979333150773034354616142666169453508234137643490987983673",
250 "13129544875124812052819482497670660745332583868001421786918912932537916025567",
251 "21689372610185905991917284292707031919082550146838541051789173093404095075260",
252 "5305829976126283652922397651017903920529015051010018920756189140868470197981",
253 "2553681848662163005833529966579252450790058534306544039492996212114422395433",
254 ],
255 vec![
256 "17713528016716160377032633031860382085838469031075655507795128756976791355435",
257 "9491820604894314039555713267327419914973891054344379708675409342186583881613",
258 "6888439906763505303063673789064050442951420414130075443251542450847862464460",
259 "14770568168929423572115974934221902453911829356761238549785497088819971653517",
260 "15835128816772321432767426850947174577707938773126912973158661902028150167517",
261 ],
262 vec![
263 "2764734647777982876147187592277418709626222378470508712045781515019904687169",
264 "14699561850422431548490916788128110229469336625799148789554766764560249484208",
265 "16202237139602136968728272054154053690700101264849231363184732378737631713776",
266 "21010382217320933047328167881513834327367306210350848830624615290126734674978",
267 "21878796003151751780103238716473704388589102790973207193769075594800938087472",
268 ],
269 vec![
270 "16438931517546594489433313976198411445658491191751450877756574263898742742630",
271 "15455021954879694880064386371706730890497994176717928888903890601866739219035",
272 "277392098767674408206679066669309082190128728677980290645097736422198920211",
273 "5385642205466209548834686561634430250955636094674076888166796942411558088911",
274 "17152161762746123707923926605859839391687842796333435151544669011943325907368",
275 ],
276 vec![
277 "3539586941998825906572765166881959268581870110160554530811172791559432510434",
278 "21291265123168208642370952811729162800582110383948835797311786248565114295223",
279 "2475340677262844094762960246163985089881056535034632621616818968620298251230",
280 "7798235620200455154874326974510730344303802310964712096010822362290605624218",
281 "14364505836915122239803412656452014006778204615405446331730923361702473284265",
282 ],
283 vec![
284 "3872806894327146131397743191674114521881565862842516477386664477274530674192",
285 "16164023672176103844702158338588552984086839649602006663630596524214840215227",
286 "7439761190815555063979460097977546697596706515018808044867072104367234295151",
287 "21364402501789153204603544261572251710651046144649289908173963362038696965375",
288 "8541399769584536552281910909458898334230834359986988903753611163373264370868",
289 ],
290 vec![
291 "17647063943033783343020879048153964677277647702692500560761944649467500611781",
292 "15431008881896942001008226179572746419787757159745657256720934853277152574653",
293 "20852931786641660679003694154889935566769395955557209711272839603920934953150",
294 "229293965011229721775346264940129463558498351348196659393871004320274382782",
295 "7102765778493273901641218835005965594441081283488593995494571562113400044023",
296 ],
297 vec![
298 "4301428317229312828848967074495057161390882846626923162898001307573720630811",
299 "6989871140410537543374674628221533758557593095781620131775473860353033620371",
300 "14067861690966768379045513737638214939361046173691580428921121219527106167265",
301 "10989355720245531664247415871120996675597011727515839530375673271732849482030",
302 "10636028492234020984772246771393454781159159764299311356516055847130840656251",
303 ],
304 vec![
305 "1509516411118548818479457061390140842030611053766198534277289864733053431984",
306 "6016527014717414985715406835438830385705629018768225890341272217512754139075",
307 "18009870630854269740667553351515356750620208866286443996079385817462687994328",
308 "12941208659965353535945982278425167790646108682089354539893990334776263126582",
309 "6408630755002382624736766372813746743394479801231860327307412987646876771160",
310 ],
311 vec![
312 "6473275960778512513582331085185673196248957133908028732835704730551444739301",
313 "4671308961157574927916195230344644717882965779035591214536796362854427778381",
314 "19414951835068462134134049195061882403344971565248849237922973692054730376754",
315 "14719038943075760086280025662026793548388999166109750623206284980568171488172",
316 "12271960755926571759397203838320016671890894112192008081391935132421981211443",
317 ],
318 vec![
319 "21409190531342114688424168613381967368449891418465485126773696301325070397882",
320 "107881145622341766195797697180398630966146686121294922902505492300376581701",
321 "17382945389561659460319815947516238642247658799110915338488621060102080047539",
322 "6328410082901692275666073849891663711371196642536900744578688459148095541551",
323 "5499749772383208465048180320867175193567502820575626739181055378423718868039",
324 ],
325 vec![
326 "3204525958061714990518441380431615353302696462736414225170035013526539981058",
327 "9376764803231999304238028037321448743861331501170058694965687575771463991453",
328 "5237849715714294820293831443727094658731366644369324164620835602118042346870",
329 "9239495575265257427822371973110544704770778444170109638878775549832354515494",
330 "7880425335496839386103630104455216237845620064265863480289309995594489485862",
331 ],
332 vec![
333 "10207842905317613746951982575056147000309206576502209186044867806033750144086",
334 "18745940987111747211061984736915990760500362627666000109808520301610434121504",
335 "13079189067909178317435686398656108053236860538441664302331350911412055820915",
336 "17067019205640552338021677449560599552840430767893036009592844143843557994424",
337 "13016918696846808514331427814150121751322377780531194517695510258675820732909",
338 ],
339 vec![
340 "21489797151464601775632825035710818267963200552334448174801229855857128663775",
341 "4934888620039211187671244780535801635284292253603825321579664975935835597948",
342 "16602483151127971722313642909560175097035441303962316845857049824454750801486",
343 "18641807385681192758876550180654220921365911502760326609634613337194020209523",
344 "16925927598302001873588652395266396371351036692514405706361568743594010741532",
345 ],
346 vec![
347 "14486092351755954790229242015868583215610453135748933043922672728536022197704",
348 "20778174490546328244258656158430202863648695790985677923372400582930757310418",
349 "16631748808740506031147919524411887259543162754298984304792262445311999057100",
350 "8786033961094907554640397512269007851362576125025617120625202376510922518234",
351 "17544380304193526481389764226846912653688724640722680092503328991834898226758",
352 ],
353 vec![
354 "2040898632628667450504825873427940388725164943108463598147204658638706060670",
355 "11266666625440259700781586210036861414729690333809733995405037631962446956155",
356 "13460535253234440686890388506029233180141711540662215480601224102735227984512",
357 "12636160103920207730958920610195885429915333096038982786347009836030899638483",
358 "6383739819588725781339075155063162102005724252294667119009147433389509274581",
359 ],
360 vec![
361 "3615415542286145222801248937923769406863619912085574834683457411852358326065",
362 "21484290530292488749479723708756361451822492014684193820961010478972790190053",
363 "9248035906677166766115225191221800851151572573012446205259169609929901480989",
364 "8431379073917134790658087470500967107593432305778554481716806377637231835193",
365 "18827891457467202141300330875540352074826671738513349870408037755815876855513",
366 ],
367 vec![
368 "12257405118592396506493659207395476994164449510609233957374912486666332869265",
369 "21226225959854014471324834236076174784480392729934587257035277409456041350054",
370 "20286225677735463160252689903334639277764329300633051406303811016606383879277",
371 "10279964694039468933161973601611338291797534036555810740994417216892754405764",
372 "19505712206874315617549350996181917781225952142243549491268122179248885644216",
373 ],
374 vec![
375 "20038967257440016050053835036217347375509692369869123828333050890335921590418",
376 "8523701096675837950983704311311321332315273369885750549632214593466999278559",
377 "3555295004833619124925912036253452620323771244275346931178469823606125124449",
378 "13784324444186967604165178202741636059533026352459109519158961779055205702963",
379 "1990731083029044014598831932498759644447254974253506030415271492596479699841",
380 ],
381 vec![
382 "17578439096922405381448775550808806383371194977564690298325676455726616889023",
383 "8482864734928111222662141206829539770993499916626142030432142812087814950739",
384 "14427490653680209977995871526275577094021456563142468863069496015597239256954",
385 "2886468118550034063520843296160011102344999339741412744323416088047748803031",
386 "14572134157746751340989844304520965763735898987561573587755290732664963516241",
387 ],
388 vec![
389 "2012188439304315533653966624269826479632693436228005577812006502639655900430",
390 "15532739752336769387812617799347097353090822643182498581522593843370142001319",
391 "17529534703270713594321571895249323223685495976329442080636746684463806784661",
392 "21031534080894610876355523771107722102837183493228844664680261397823519630070",
393 "19436577385855087170357474710455765498240805774464631546842557209664504220669",
394 ],
395 vec![
396 "12949787909663269259076764555571843769659200695381876462828212199650601988661",
397 "19840887115057106171541062849618907727997426564328068613363838385495062694080",
398 "11070881582551838082405230404504983313196662759570037918719480824477325348619",
399 "21121613659252535934567682773727354352249754361426783252117493686550694641841",
400 "13853384193563682327636191280511053847941124197231804085111291238364825228055",
401 ],
402 vec![
403 "16534768562387351990889034654990847617621658362728970493903460833326016536279",
404 "16737626808770332056817306496249435585235512996421417871213979019489327200794",
405 "4955268430584609526967650698915505429623726703834197733312701363048061722841",
406 "9263608332778781442606069584033040773652544643298512410910187831068155040930",
407 "14054336891450573864216276098381163567665599861126245131928674022194523625593",
408 ],
409 vec![
410 "21801176434550838737352604795544877125500872320940890751193577820117534718405",
411 "9079447684660962172190409320608785803288621417039371710407887510606175315445",
412 "8133910245538672265863502046036258662943074913843998565031782462595186859432",
413 "9027563286570496827301683766505646642464515894808680909417176262524667994607",
414 "17813887182413861707818763379048369988110623133775484154852873751145361117513",
415 ],
416 vec![
417 "8273529887305322812400486795371424723512754022502284544817751808933420020056",
418 "6193911737909565720690901657318625169120108300025594301424772109607790217525",
419 "373596750078768704743702896865778923677151831044315726342014805308595338731",
420 "15663337206542612442532133239045611552243679621992911236973616735274383423741",
421 "17476521689840597137182775014002918999849301054751890629300658136899537687697",
422 ],
423 vec![
424 "10121895709985849082387712269452727249466555335022614339144618832725920412034",
425 "11353776892399275074635875354785293934117783200085751402421982281545221342465",
426 "15469593317594462447141531241838454642357125438273561690975191399478697119085",
427 "17865888279934933809429394512960214291450883690852180796520429879983293128990",
428 "6274350675415573512803325527372997466731705110595230630336129852455603760381",
429 ],
430 vec![
431 "9515352341824235667448011992857822921915261676679964918079021159851642025303",
432 "477707918786271386693553202815432152082461724031549221576128656997166664476",
433 "11386216724751845172421028486683728466296560704582636027450491190849829017239",
434 "4868197961579949504657937771026878598470017307487284109130104378522476324759",
435 "7991796353928888821416988025327754752177012963861843782973600632603733430518",
436 ],
437 vec![
438 "11333649983259548605035153795104287405127917441832737799837601790907346338950",
439 "3253711061374706142428324171829325260316225494115007268262947478002641026402",
440 "5496514984404605000691982099037699217882902140738102410212416632722084066284",
441 "6974913403648934971601590531570930173199234097058361874070921020086428415758",
442 "5883566280233036595341911997921541009923447375421011739277658309528500897712",
443 ],
444 vec![
445 "21445567565181758135550457460741698101787978571665239784748669483459739751994",
446 "243826411958605269263143447048452095693190359309032214693902308098516987479",
447 "21154333990044972665175047861269029145893456380868567541001936195732856016776",
448 "3319183817985491659546270466674828377723765699200573232068916648375974981613",
449 "3073970873570833352097605152458525154296900481368706411115318768432378669842",
450 ],
451 vec![
452 "20483576083983106606340357456603738075578078878737741433492057427336395394207",
453 "18720024904290757089439759576658550350669656533688125048290648882155502317676",
454 "1642499300715381739293473205810772993318440465411115612594671091056540126965",
455 "19304118143010791587684818902506948075645331242883697200070316546112584129578",
456 "17514394941065568574615190205049601810984856925614240654769418757202361926933",
457 ],
458 vec![
459 "11556753834792658188438232905095955072130370253803724342392908382453645967403",
460 "6129219138206469959108774259486604720996391435645088561379200297574544675692",
461 "18072280082137011908300861638959080543066161505384020771128066003845703716201",
462 "17698719397344644673462975571660619385706341688261285732100232300374907025408",
463 "19711276008373408462398739099936823239389914489313560182281159321304186912571",
464 ],
465 ];
466
467 let mds_string: Vec<Vec<&'static str>> = vec![
468 vec![
469 "11040268765618966485743930331384449252540178255721603113765764162439951530662",
470 "14619397736929193730245228786408558236521630763386146399322813942010841864899",
471 "10667900877576512207318813047240865767100252874399171146942316173885571898103",
472 "12165316291228285262842448955655563528504835782461286041201951512387113326195",
473 "10396208898093391600689903392326434668878305652248452965403131377623408094066",
474 ],
475 vec![
476 "19503909329721711777979879761659766779862832905278244618068517524827486499103",
477 "4959388492818549747321625860510175535335795548729907524166782031582541039280",
478 "16115979899849295727011176917576445189620726075595230031659429359211848784926",
479 "505854154613852852989462660917429865956711080615787601025929677126127137972",
480 "3809388125781819260420235233525803721174258720871002958819149356974147520791",
481 ],
482 vec![
483 "16684302548808282795274602108101884787806448235075553242259501124382211853639",
484 "15761534168109871534581041602143280815389334970289855273694992235420618466756",
485 "11194351297025208548187494208359225900929561831849862863133416814929915734783",
486 "1892277486669848856135789846900228616904357145126282105455443798229090074187",
487 "2781765068911985355639433624785498046913019524724151023603546614690160030185",
488 ],
489 vec![
490 "12037519845045404407540321574767620698649052766728735733715255850418456502517",
491 "2732503219087414496659560236942305660362604072017478968909949641450059765139",
492 "6751856993585408160559297753599536526938230756668214257332833164872580357525",
493 "21154610483210081693552160119046341221136362570739966307225431519652159656367",
494 "6208150041573103146633376259286490046406285001830507663903329995399090412043",
495 ],
496 vec![
497 "18063113951004757412844021744032560391991074710825639164600470602537681012962",
498 "4309850927493714562265638576973404086579410809307210903617085917528289705963",
499 "17965146435760138739568881121411723561477417980023835001880054802493337747241",
500 "4834762967413709351083800837287853102040090485798752777075791579043757218092",
501 "18099176386979510370196738775718135350042677134310008561670476620955846754392",
502 ],
503 ];
504
505 (
506 mat_from_str_mat(ark_string).unwrap(),
507 mat_from_str_mat(mds_string).unwrap(),
508 )
509}
510
511pub fn poseidon_config<F: PrimeField>() -> PoseidonConfig<F> {
512 let full_rounds: usize = 8;
513 let partial_rounds: usize = 56;
514 let alpha = 5;
515 let rate = 4;
516 let (ark, mds) = constants::<F>();
517
518 PoseidonConfig::new(full_rounds, partial_rounds, alpha, mds, ark, rate, 1)
519}