diff --git a/poseidon/src/pasta/bn128.rs b/poseidon/src/pasta/bn128.rs new file mode 100644 index 0000000000..4ff712d22f --- /dev/null +++ b/poseidon/src/pasta/bn128.rs @@ -0,0 +1,1463 @@ +use crate::poseidon::ArithmeticSpongeParams; +use mina_curves::bn254::Fp; +use once_cell::sync::Lazy; + +use std::str::FromStr; + +pub fn params() -> ArithmeticSpongeParams { + ArithmeticSpongeParams { + mds: vec![ + vec![ + Fp::from_str( + "15913613074278028058360498857043999222867772811338037425231170199156889337604", + ) + .unwrap(), + Fp::from_str( + "65180538277771794992983614695816638391617290189527384182155063505825555179", + ) + .unwrap(), + Fp::from_str( + "5394145287608961087977235806233358974273334844303649346024304966582176196487", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "15414815283538893716009156559702084916211023875136356807248219032453798152465", + ) + .unwrap(), + Fp::from_str( + "3463018243616155786290732419705147785020336294529003837260493734746385539469", + ) + .unwrap(), + Fp::from_str( + "12716468877825667500219920861172138145894921271005565146996037137547785771411", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "1792045203208933407244693490495238027092197802128268175009298962707699842710", + ) + .unwrap(), + Fp::from_str( + "76356542649790718492035692281837451271781062546545119705441901238018861818", + ) + .unwrap(), + Fp::from_str( + "9520069514281255561624128661339565451189764370791651000392579220353790670830", + ) + .unwrap(), + ], + ], + + round_constants: vec![ + vec![ + Fp::from_str( + "12455131979215983316735047846658291859029812584241282581257197013302738138666", + ) + .unwrap(), + Fp::from_str( + "20029656970890966196099810168066995443524989185718089119520857141365451679654", + ) + .unwrap(), + Fp::from_str( + "8929913078653797661905726823410775654210481762974885244818731639242977419622", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "8662787891019924101534530927954444401015394189462080864609938870691307539536", + ) + .unwrap(), + Fp::from_str( + "20294115837600366998212029140165760858924828875933683067126492672917588261877", + ) + .unwrap(), + Fp::from_str( + "2682014173266320611146882768057075830238591616831154961603507352639750394592", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18907515456503482670621260399010811269866082079896285203284611749350771281411", + ) + .unwrap(), + Fp::from_str( + "1424609887444859910324043210736091906100438801135358613993092433663809225411", + ) + .unwrap(), + Fp::from_str( + "1531059541788158835714117823424146308635531997487162670061618032695665453831", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "19444238474448321066398700689084787616548516614414549514749853660756611792379", + ) + .unwrap(), + Fp::from_str( + "2236237945310446639621733106225706828551103453944652411264620402517164583264", + ) + .unwrap(), + Fp::from_str( + "12605646628049520919535266096828454658561884709869426105979276828733666269521", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "14653124040822125428573681427514890989900893513402451718822527259901516216058", + ) + .unwrap(), + Fp::from_str( + "1535968898232047429062068090527484451997796559364245278047376516596586180554", + ) + .unwrap(), + Fp::from_str( + "3307538294663905716144414865227035949873283327379581103741297483063276195183", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21111467054595055527346262240389751012262991994706430976179289552457483727796", + ) + .unwrap(), + Fp::from_str( + "17649294376560630922417546944777537620537408190408066211453084495108565929366", + ) + .unwrap(), + Fp::from_str( + "7683463515567855955851784553909126014159314191075450219244796328948411069744", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21262229851583325466767017312569047417622760705999088078958228786464449033067", + ) + .unwrap(), + Fp::from_str( + "11691182518884460508022694337582074624192039580202157360389815110719437213363", + ) + .unwrap(), + Fp::from_str( + "8690728446593494554377477996892461126663797704587025899930929227865493269824", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21622260498668079571860417097494779160364898191075577203239012897437375456411", + ) + .unwrap(), + Fp::from_str( + "21067767847052854366896470071519184914663018103241392453030719014890445499665", + ) + .unwrap(), + Fp::from_str( + "21348828409856354758094844442899573788047317201055667836817119877806560465334", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "2704440995725305992776846806711930876273040749514871232837487081811513368296", + ) + .unwrap(), + Fp::from_str( + "1142050494870706434296077676238780951797136607536187326800297147932619878418", + ) + .unwrap(), + Fp::from_str( + "3652944740784795248484484454916800802095288396765069024258114251561069674735", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "1747641587474624832364464288237802774971629275511085691789065855359044028198", + ) + .unwrap(), + Fp::from_str( + "14935834110027005954806028171080511939971704126366459140378790942754129686907", + ) + .unwrap(), + Fp::from_str( + "3215720726490672077485888789426411334496962379737529853320875594879037332594", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "2892159931078719741396670290810431382361178666606213506995456264415113913847", + ) + .unwrap(), + Fp::from_str( + "1938538891009879014088646889644828497511974353410971027478866497380422633484", + ) + .unwrap(), + Fp::from_str( + "13916214761542255527505866254811968868327635410573168146297241319868121689821", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "266821775768872344171470219200118028338254464492956024813242747554382748942", + ) + .unwrap(), + Fp::from_str( + "11055386921184594780372263378420826851562920740321950336882051897732501262543", + ) + .unwrap(), + Fp::from_str( + "2504617730099125455929793538006173214604536705392412461363354681040283013164", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "8077046888362371937918818344109572894796988781119069525502907016581642522710", + ) + .unwrap(), + Fp::from_str( + "7281012798633884984170366068851653834509460567285503188952416990462599509288", + ) + .unwrap(), + Fp::from_str( + "11914125581503780978633571238267986373793149282818856451291452464271781243920", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "5911373857383996424444312456230128887937254975139357544835683280828995545397", + ) + .unwrap(), + Fp::from_str( + "20728259298426389276714612941176977888429183727869747381529137474366072279101", + ) + .unwrap(), + Fp::from_str( + "8331123017723440628782766975941869108307759426898189357261715346312601104654", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "19978529403683797449165109778464832800224916941903951374610236813523844409526", + ) + .unwrap(), + Fp::from_str( + "17316158269457914256007584527534747738658973027567786054549020564540952112346", + ) + .unwrap(), + Fp::from_str( + "7848194400773744361171082305364633343688318123652518347170031226439829254882", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "17698087730709566968258013675219881840614043344609152682517330801348583470562", + ) + .unwrap(), + Fp::from_str( + "2484533502052370851335172153342694835144795809438965797062785488685902188726", + ) + .unwrap(), + Fp::from_str( + "13372068881052003992228272108672679285817785895634149926809187580418595890381", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "4450005426773734601782625050142815413017019480402129494014819930729323864775", + ) + .unwrap(), + Fp::from_str( + "15031465389782276133463098319911853017052619244999605688724393058338301291115", + ) + .unwrap(), + Fp::from_str( + "6028902109643218557806340932181364476799161079643636815411563224652423572198", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "2957732585137901025626087202113249345076588554941059487693780861098604986119", + ) + .unwrap(), + Fp::from_str( + "12565476532112137808460978474958060441970941349010371267577877299656634907765", + ) + .unwrap(), + Fp::from_str( + "10508327646678453674728048391759640526197954899878596680197847666563367632543", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "4493451765845812430310778141104432201437429164475176054680492630627878568332", + ) + .unwrap(), + Fp::from_str( + "15095408309586969968044201398966210357547906905122453139947200130015688526573", + ) + .unwrap(), + Fp::from_str( + "10819130048432875198797495465270179395954461390529553930221225323229387202234", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "15905267794015672354278595057670574122197927816429433548802165993220415414073", + ) + .unwrap(), + Fp::from_str( + "19290205907831398371768999387869637435049824367233327965730120884036212709842", + ) + .unwrap(), + Fp::from_str( + "15451920390057917627290027104082580122165965120355347782937661856388593985245", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "6425598873527092853966039409614693840647173123073098849086711894647944582332", + ) + .unwrap(), + Fp::from_str( + "17307716513182567320564075539526480893558355908652993731441220999922946005081", + ) + .unwrap(), + Fp::from_str( + "19372285427179952013203092658533484049593114439149219035606060254764845851391", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "14724939606645168531546334343600232253284320276481307778787768813885931648950", + ) + .unwrap(), + Fp::from_str( + "4684996260500305121238590806572541849891754312215139285622888510153705963000", + ) + .unwrap(), + Fp::from_str( + "19906278135333202031075665370853003279083131420237405129919260859757146418025", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "3999693912508849442569285360026642503093489903926874133118153062461080435481", + ) + .unwrap(), + Fp::from_str( + "20129375303694053217240183105192753906500831553949001131297105718176015558964", + ) + .unwrap(), + Fp::from_str( + "17281496576809338419011697046933296343189100335422897604615575811331627359485", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "15637748291684046440453413703705692658155214802161964102299272768648229342362", + ) + .unwrap(), + Fp::from_str( + "2094444825794502002152585986969571562449905861771519270554787618649438333195", + ) + .unwrap(), + Fp::from_str( + "1152889601932463959824817875107315518104722504910095364729880245759523916044", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "12114165850379066500859611262167642397834899331804245444372878412987365128590", + ) + .unwrap(), + Fp::from_str( + "20821227542001445006023346122554483849065713580779858784021328359824080462519", + ) + .unwrap(), + Fp::from_str( + "3440756720132945332811173288138999408441021502908547499697282473681525253805", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "20938628428302899368158656913047855118000040623605421135349389583331392728782", + ) + .unwrap(), + Fp::from_str( + "8850081254230234130482383430433176873344633494243110112848647064077741649744", + ) + .unwrap(), + Fp::from_str( + "1819639941546179668398979507053724449231350395599747300736218202072168364980", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21219092773772827667886204262476112905428217689703647484316763603169544906986", + ) + .unwrap(), + Fp::from_str( + "13148487544990345541730567143235754764404038697816450525897467218977412799129", + ) + .unwrap(), + Fp::from_str( + "13598807739063229961519663325640861142062394342851403440808670891533339780790", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18784327298376147342042823437947970462892869194728299228507919810276864843414", + ) + .unwrap(), + Fp::from_str( + "2764493745803317574883853704043825342340808631956690807684613803167040529511", + ) + .unwrap(), + Fp::from_str( + "21531775639025076953020023111055490895978901214310417059307899853240995381819", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "19964398501876039777029130298682737202257582985971095863290288610857831427638", + ) + .unwrap(), + Fp::from_str( + "15003442983970848114681480873546789629160262059108570865485071572172687676835", + ) + .unwrap(), + Fp::from_str( + "20614241966717622390914334053622572167995367802051836931454426877074875942253", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "19733168743390283576337440585736332292298547880804855952734808967278966077887", + ) + .unwrap(), + Fp::from_str( + "20530621481603446397085836296967350209890164029268319619481535419199429275412", + ) + .unwrap(), + Fp::from_str( + "12361620530467399202722610329149901344545851901477091854159960517963801528971", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "9497854724940806346676139162466690071592872530638144182764466319052293463165", + ) + .unwrap(), + Fp::from_str( + "7549205476288061047040852944548942878112823732145584918107208536541712726277", + ) + .unwrap(), + Fp::from_str( + "9010672859023729500640324904403960830965495099902505763591033382017769059028", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "809006882768062359480853341102632220777932068978149301935174282279746446958", + ) + .unwrap(), + Fp::from_str( + "7106371976957177712230305966566701811850820970657101896348127436646177656365", + ) + .unwrap(), + Fp::from_str( + "18845123379649840503129460949570724717923057602542920800815047452665097128575", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "14712923944932171466124439335703740452883296028663247289510978550197451911919", + ) + .unwrap(), + Fp::from_str( + "19555759172327736128240171000715903945570888389700763573790859521156095228287", + ) + .unwrap(), + Fp::from_str( + "17179695917466049633838471880559548490881310699092342418090873652775810295378", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18944876856792381816055068913314141690530834943354883079085532905267119397008", + ) + .unwrap(), + Fp::from_str( + "3257630700960849517603336097571474897923100547762764495987576852490355943460", + ) + .unwrap(), + Fp::from_str( + "3963500912949736174926372928446487843084987377580944585294277449817215093365", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21304716730402869084944080869903443431235336418077153507261240151959530377653", + ) + .unwrap(), + Fp::from_str( + "18998265936988640248585036755202701418246223100957416731998639191794797638003", + ) + .unwrap(), + Fp::from_str( + "16839625825914009701942141907800050396084195897386326382915730670235616618695", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "16907937154215020261110468963982390213438461071031811101554056252102505124726", + ) + .unwrap(), + Fp::from_str( + "1294898660752289889975651445755491766586322714088107994205473403531724749589", + ) + .unwrap(), + Fp::from_str( + "9172546393414544394143001120250095355087186863911844697260687867341704896778", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18891778779724165209072874482651171817270086247356116562427206569585293483055", + ) + .unwrap(), + Fp::from_str( + "13093554332096549605604948416229955030385793767090042194569924056338021838108", + ) + .unwrap(), + Fp::from_str( + "6540069282618873496342140872069384185118574828832026154295825270730722501809", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "11698805795265597745890922320669982345748592147825010914959366790903803563027", + ) + .unwrap(), + Fp::from_str( + "11128587690756409041400570351324823090287237584985813997261416805030246953137", + ) + .unwrap(), + Fp::from_str( + "574796972312053991589591668868339165343116554180562026519971681663627339366", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "8263653526367544279471418475309371793291954818747935714794248360166503487859", + ) + .unwrap(), + Fp::from_str( + "495546618036723566920914648951352373868059898268055487677897567226892784967", + ) + .unwrap(), + Fp::from_str( + "2528292188392170914010448139211586215817069915670005292953294092269979070980", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "14954597262610438728753406794870316034770442280143947719391702684620418262496", + ) + .unwrap(), + Fp::from_str( + "2873290581141877304970576969082349138229332018341156071844198415188999408160", + ) + .unwrap(), + Fp::from_str( + "7877226570858832633875209751493918650976179001613717862579011309181456152753", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "5290811263292128650829809831924435265520706616680110737471312421357061576251", + ) + .unwrap(), + Fp::from_str( + "5711353914598993184207904758686192904620948114158132435163135551043392236587", + ) + .unwrap(), + Fp::from_str( + "9671966951859991559346179676315084295317241890404128352532995814366687016784", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "20648234869018782942484412385329986060607455807332118750782252709151244400533", + ) + .unwrap(), + Fp::from_str( + "1521221467156754943933671253020851096017281629892920730907443291972734010497", + ) + .unwrap(), + Fp::from_str( + "6375300799036358132607612364454746219201386369274233783761503007631282551380", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18921242117750773300194037006101341214923275379274370683247849512779159129078", + ) + .unwrap(), + Fp::from_str( + "7813033521740037204631731835076108697814182206021466630450781049551634237483", + ) + .unwrap(), + Fp::from_str( + "7795208366125068859216483161820518701837348485078219412133643408967011329822", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21634048616875364065210304993971256601326650069082669576726378272437410251852", + ) + .unwrap(), + Fp::from_str( + "1440291557054822025042926468154900761163167753541613162663250995564641638121", + ) + .unwrap(), + Fp::from_str( + "8030862880899531201072645375229460968330384014296763956553993045932171788794", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18227143364048378671809657511264604955612895339528675264153781365139338073044", + ) + .unwrap(), + Fp::from_str( + "21758886539711282145698252967647695643837152466011063420158481037553923112829", + ) + .unwrap(), + Fp::from_str( + "2085588517087605436136379278738013214233743532079287631079316773925068862732", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "9513664655545306376987968929852776467090105742275395185801917554996684570014", + ) + .unwrap(), + Fp::from_str( + "3550496136894926428779047632731319031180547135184616875506154252232382772731", + ) + .unwrap(), + Fp::from_str( + "17611757480287922505786279147168077243913583114117625089682651438292645979006", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "9510531870810299962531161626148485102758508164021526746981465493469502973181", + ) + .unwrap(), + Fp::from_str( + "13147395489659079072941169740078305253501735721348147621757420460777184976765", + ) + .unwrap(), + Fp::from_str( + "20981004218820236011689230170078809973840534961691702543937445515733151438851", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "7510474971056266438887013036637998526887329893492694485779774584612719651459", + ) + .unwrap(), + Fp::from_str( + "1410506880075029891986606588556057112819357276074907152324471561666187504226", + ) + .unwrap(), + Fp::from_str( + "8531153700191448965915372279944017070557402838400132057846710117192547288312", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "9754021311900999917627020811752417367253388211990562024285328010011773088524", + ) + .unwrap(), + Fp::from_str( + "2596434275792412604724294796434266571220373976229139969740378299737237088707", + ) + .unwrap(), + Fp::from_str( + "12362606196840499695717697542757730593369897628148107607660372162713524022091", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "7436712609498458515091822640340398689078308761236724993140849063351217155692", + ) + .unwrap(), + Fp::from_str( + "13658397008139421803306375444518324400013880452735832208526361116879733324843", + ) + .unwrap(), + Fp::from_str( + "8172299227253932586074375157726142633344272790321861656172484971306271304428", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "8605586894544301092657394167906502995894014247978769840701086209902531650480", + ) + .unwrap(), + Fp::from_str( + "8900145888985471928279988821934068156350024482295663273746853580585203659117", + ) + .unwrap(), + Fp::from_str( + "10470367937616887936936637392485540045417066546520320064401889047735866701687", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "11506602210275354295255815678397482725225279643868372198705067756030230710066", + ) + .unwrap(), + Fp::from_str( + "17848856881287888035559207919717746181941756011012420474955535369227552058196", + ) + .unwrap(), + Fp::from_str( + "19621145748343950799654655801831590696734631175445290325293238308726746856381", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "12864577757979281303137787677967581089249504938390812240088160999517854207023", + ) + .unwrap(), + Fp::from_str( + "18146514933233558325125054842576736679593504913006946427595273862389774486334", + ) + .unwrap(), + Fp::from_str( + "17884323247493851213892188228998881081766487773962855826892871743190914823275", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "15402752720164650756401756498467037967910822997380610100998339390049962612988", + ) + .unwrap(), + Fp::from_str( + "7603833157231114748089157493970988832295123465399487746989788482408777456140", + ) + .unwrap(), + Fp::from_str( + "2397354421161661799662850246720819176952681967344524176801474312220041680576", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "4644616545339594419852483555455431260822330146405566037177120172304445909733", + ) + .unwrap(), + Fp::from_str( + "5263316028405817083848964416595634986103420395264546879434975622138579030157", + ) + .unwrap(), + Fp::from_str( + "17782273009863750298483603933610732253879825505411230932533407287574651036994", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "6757311365906043231713330034681410088312690560822302805339061832230418577842", + ) + .unwrap(), + Fp::from_str( + "1747290142831105666564148972092238090059848968766027623980111244846463775952", + ) + .unwrap(), + Fp::from_str( + "15626225602106279302483693031455114927351808163854564654776963760236790234423", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "4913834867494755682369542218157533479788980551925269537630059523083653281581", + ) + .unwrap(), + Fp::from_str( + "9877617390649361889067963484857474874019563445507538784053773745685676317984", + ) + .unwrap(), + Fp::from_str( + "8907943459697784281828563593274242625606699321626165523327303792165072591809", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "14664441047816797924985624056829230652985567659075289185564514710695287602702", + ) + .unwrap(), + Fp::from_str( + "7007559757050385070202651829819464617707337597545855825279581955097245183469", + ) + .unwrap(), + Fp::from_str( + "9907785227545441866241924986174555965766785257012652276622736289520175209842", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "7597089497072493253646609764279824048404496412283438400323292326749646956121", + ) + .unwrap(), + Fp::from_str( + "17909115638003629710512488646279326535029895707443505816458395075119245680309", + ) + .unwrap(), + Fp::from_str( + "19899288359840151413448648239934294957736422087766709732366801832575234898200", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "2776453255551777594442164922386336989357594907242688467733231910101268428455", + ) + .unwrap(), + Fp::from_str( + "8731512921802677638551206899688496704819923065834522157915668185471088199231", + ) + .unwrap(), + Fp::from_str( + "4270476107979642660344328132306502268479679050594759895042187137572326348178", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "372963191403207230700085823960930798511810380777302780932220121859190714585", + ) + .unwrap(), + Fp::from_str( + "1925392345596430848747460046135384348851089627416455489129305703977614383441", + ) + .unwrap(), + Fp::from_str( + "17789118105598492176513882528357022912279065134405326075480819364512109487507", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "20825008332751730091153821568987055752818061964131515789006779860691972036326", + ) + .unwrap(), + Fp::from_str( + "12268072226614207724192089529070006978828099093641075700056577974897967878044", + ) + .unwrap(), + Fp::from_str( + "8022939345678575485891537869705234790517539631432710130025799605516328239965", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "15920446357440463160102379501579737913732417583637399015449814673775945192536", + ) + .unwrap(), + Fp::from_str( + "4889967763577997404116252754960720158524059605911680924823220236886032161368", + ) + .unwrap(), + Fp::from_str( + "13012115310019421859484865413402512912208022868124085927375736053832542569552", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "11184812848348784840758139578916764774803469528077342079324383443440533140274", + ) + .unwrap(), + Fp::from_str( + "10919525644265283860710095821750480494008303946536963464168615308937735732928", + ) + .unwrap(), + Fp::from_str( + "16643027351354734329387947050668943310718100664075062130784371167893146427056", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "2547391079287933146721925003560805204947901674695385307171999864858240689647", + ) + .unwrap(), + Fp::from_str( + "5461671591847528192305502006203904211083239588855740323679605269651748982133", + ) + .unwrap(), + Fp::from_str( + "1475483405991676112203600016600397946486872901513454996978092595555024286449", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "5284066352388289958166453130467461920311116585098603685258698324490583696214", + ) + .unwrap(), + Fp::from_str( + "11079707743980425617427448803513138667107248696505015838485445487813501565055", + ) + .unwrap(), + Fp::from_str( + "18819466619498056228169794477791931948230648942982309978769076145394195937041", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "20108313126965297449432768889178575293551084908049301416432179490902972394331", + ) + .unwrap(), + Fp::from_str( + "18446218870769123862937242938812447270514023886221086573211479802027270358088", + ) + .unwrap(), + Fp::from_str( + "16636528128134911466622907961467317982179835733058354229921170933476186200761", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "21580255665898770000010464770058710398562069327783167608746916860519840032223", + ) + .unwrap(), + Fp::from_str( + "14719915601901504081829966027980062397831689039960210526441564682684152170817", + ) + .unwrap(), + Fp::from_str( + "797386830910520008361185815477523544664694040635544500916993469578452189812", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "9191954826842055432037975444679415772735351199913945274909680288228536535340", + ) + .unwrap(), + Fp::from_str( + "11513278700830950317038408125611466230422950302149566779135423862866530023329", + ) + .unwrap(), + Fp::from_str( + "13459513701495368402370574098477760729128222868352131109204646186188457791240", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "5838069727284828316721466034821618997221603062621589223178808662165373261546", + ) + .unwrap(), + Fp::from_str( + "6979902978975477924362644821755411140298300026935490428140425890908442375988", + ) + .unwrap(), + Fp::from_str( + "16599678038272927378481138839511139789855186087290435109798146115836043579679", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "12381797209422929428691015082010109537263140181969703876017444022025467803832", + ) + .unwrap(), + Fp::from_str( + "6196650026284414689888119006953515712490610535320673834463816720858366634575", + ) + .unwrap(), + Fp::from_str( + "18782265413128936113173411940279630009396595382244197409034789821410800698518", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18317002472599225949038448120242542829985613745531554876060436499109578301758", + ) + .unwrap(), + Fp::from_str( + "1113479082803535302111716504211921283895099225074844625686926178204705529642", + ) + .unwrap(), + Fp::from_str( + "5260759667255734667421232066934840926892602367345740699882163520384512718144", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "127322212868745470136356444796372247628159800282485305190839131621480537609", + ) + .unwrap(), + Fp::from_str( + "12956514709922286639520985225111137950302442378466870763868693820049405409474", + ) + .unwrap(), + Fp::from_str( + "16137538628380664965477096166491883462931577135505027115582810475234963977421", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "11057045636926688236651567778699977961671424092293844825634750356999128470728", + ) + .unwrap(), + Fp::from_str( + "20835936071817504066403719723663997794776505092359954695254304206506756731833", + ) + .unwrap(), + Fp::from_str( + "11961388648747677421997837882451601307689195235077835309786508479783430361445", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "1793573889039951715150662350698925328676543592757846244725079508391393408932", + ) + .unwrap(), + Fp::from_str( + "13402289137612357934827599869485046878369856459821775713222740005646790544884", + ) + .unwrap(), + Fp::from_str( + "6508055411788943934719705492602467864380077642763636443982129530687343724318", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "17607902685988307931266356493635411696470169831190714792315124728753478035177", + ) + .unwrap(), + Fp::from_str( + "8194273390415023152581060020119881338779571723515253104919314696738194355344", + ) + .unwrap(), + Fp::from_str( + "14994505851254731180804912001382376960436431877822495675906581329931114145032", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18381184948945816702338052755591260342844745389721883995323025098702517473904", + ) + .unwrap(), + Fp::from_str( + "9186573784864449816023279170257163602574499515262252135042448697937263179368", + ) + .unwrap(), + Fp::from_str( + "16881796086836744646703159464114164393240695449455598565494759189917589453976", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "20572234397819806324185746612386811237648846766146640064924937718650897781978", + ) + .unwrap(), + Fp::from_str( + "15398960110011455954857390264976694406010423055791889624651258877641756178391", + ) + .unwrap(), + Fp::from_str( + "7626627472565586612974136909394190701438927259101824156422280944508708088979", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "5225513048091970342186287982290643286434413678466132108172918521639972895801", + ) + .unwrap(), + Fp::from_str( + "20796219142718322272479527852102350372678035311367637066794738260059405761892", + ) + .unwrap(), + Fp::from_str( + "18867914789735779656943683552060466421616672953566565464125163675462552310225", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "1082743678015977585514191190870862236773423558498135453104771878687511906366", + ) + .unwrap(), + Fp::from_str( + "12623224059252254308457589993365174837697684756635908936641223908438823373531", + ) + .unwrap(), + Fp::from_str( + "12555890586414377546838955106772636059664719538696271061728900536297596172906", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "15264924047176739600757644598701762120134127746088692861582462406342309222440", + ) + .unwrap(), + Fp::from_str( + "13735945315945382005247895569035266667172550063549145646185577935658666385507", + ) + .unwrap(), + Fp::from_str( + "16846296242516834547231537358954027537902709068158411294345086281698311539718", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "5529559903327977764360588597603235134251022845353553657623467329197099735440", + ) + .unwrap(), + Fp::from_str( + "17896661983150937411004047429485556264820315976705642986609974816436222162633", + ) + .unwrap(), + Fp::from_str( + "6132147645856673317909222426799071493032959293586440635818225286067400272621", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "19910536448857177568998054979673460274356626268309923630750601690129744044143", + ) + .unwrap(), + Fp::from_str( + "21837022717353361125929262770547893899304355057483567328441690117551675150495", + ) + .unwrap(), + Fp::from_str( + "18222937567706439527101614170488289588444167715669706061945406480673991437911", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "1444795096087046870164826172194881116549489406599247123900277072374333222523", + ) + .unwrap(), + Fp::from_str( + "7789285740743619796571024808404378017415878533792118428790588967260363950606", + ) + .unwrap(), + Fp::from_str( + "2733591517253510124338232417535938539627593736745105875672348998709544742241", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "10797236245657229835704604790990749002913266164534811352882924972411330424481", + ) + .unwrap(), + Fp::from_str( + "8586865110658270624125510090452038681539626362312203247529227232785490000213", + ) + .unwrap(), + Fp::from_str( + "16990606351055720221300633612533434675038905235719867684891402550154692840579", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "13886834869596827027283068322204563244577723967928602405785473534631482228259", + ) + .unwrap(), + Fp::from_str( + "15370041030312982119820349355806306848945675230473045778175606920520020444465", + ) + .unwrap(), + Fp::from_str( + "4892392164144856036080673702415932177491638051096567008590655427718905654995", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "7156056361402750618478307158538015778512650133626207855710105646992193371811", + ) + .unwrap(), + Fp::from_str( + "18611994297623980580066352324654520696209128189173454279498506046357017146863", + ) + .unwrap(), + Fp::from_str( + "20685574625754044704454597610042653981655420607405749168756591785339765348017", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "19771798755427122057663307238031585225333077748195038834574552418532105026109", + ) + .unwrap(), + Fp::from_str( + "7198246770791404776745997973411401046335399072925979346193035999274650139809", + ) + .unwrap(), + Fp::from_str( + "4023053642231617394331377349850999955271972515156538475518460583299482183537", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "8600241056877374090996492763915201371612819917708477598778176717657922462947", + ) + .unwrap(), + Fp::from_str( + "13457797645730052033686724345687857978500724093559828625307818927699840833531", + ) + .unwrap(), + Fp::from_str( + "16026530057488171235747101959040626414628692240827947554707033614704824950299", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "17395049232451382970906883167116397657891664802601579276725674512534883408665", + ) + .unwrap(), + Fp::from_str( + "9339859050789350561021790367067195330588925099928812336960590308144433379361", + ) + .unwrap(), + Fp::from_str( + "2949098252117356570135518983407292742860689840833413663842097549831698684366", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "20556719902345568138970735755829852608784985449829745172855204153387982836579", + ) + .unwrap(), + Fp::from_str( + "17130405757403641097651484965062131526367059595476924144885570325828777794585", + ) + .unwrap(), + Fp::from_str( + "12098791849907955483840555979771849699037912527654257328360429401569823685788", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "17814517977679061356584950826520510701145481336316888282105225134451035883368", + ) + .unwrap(), + Fp::from_str( + "18340263833447961155645725374025776400999561225129160795675360757778486987388", + ) + .unwrap(), + Fp::from_str( + "2393071357700172397099185245759131983536576193657235776526704600015951290441", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "4212550607122984812935174903270756328485507924528581618288369631872316849833", + ) + .unwrap(), + Fp::from_str( + "4619648579309903974086199484827129282821840232468518761664883379486001128848", + ) + .unwrap(), + Fp::from_str( + "11830688953328429351984357834116389341476681935757757908813724623462162230171", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "9433820477150269924006815701757707228705128802452735931367255389078887381031", + ) + .unwrap(), + Fp::from_str( + "19125188968599512029274834491491595733696896208317777847233033576184416289376", + ) + .unwrap(), + Fp::from_str( + "5918385816682866756860679567405784562483373873565987668410277610868983146285", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "11679489428851609457960439894174478045625452323813143057634803520728058419797", + ) + .unwrap(), + Fp::from_str( + "5724733785096476011403606227853139854344547354731648536310363676109859979599", + ) + .unwrap(), + Fp::from_str( + "17573793517331212796808333696068548553394697853729636886331034644281465518715", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "282611654311082728776282944765587839903391931876410017096206359579538734085", + ) + .unwrap(), + Fp::from_str( + "742728073451137928865285752406697012428821295824901554854990717103000537584", + ) + .unwrap(), + Fp::from_str( + "20306380368695786945008272690438693745796297843799468268993907772341096948885", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "18100113160685180514467703718098463577197975190144073884222766672672318113538", + ) + .unwrap(), + Fp::from_str( + "3596350844916320672068639652188042917240676939829686824217717083735102849099", + ) + .unwrap(), + Fp::from_str( + "20838832950303269747058536033620845977209873531644245727210334971563271393066", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "6253957843395630813948692334683334608532810817769598722493240718085139817265", + ) + .unwrap(), + Fp::from_str( + "19309791485130397858271625213458465097936495981008767692231734090527713082114", + ) + .unwrap(), + Fp::from_str( + "5939164146353625472313254161303475736537743070584069770562424769865448756665", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "12298194698807155456066733319264594344499679328227389872285371269582859681345", + ) + .unwrap(), + Fp::from_str( + "10410720333027720675907856932360489614426170334449240317306371002856268450593", + ) + .unwrap(), + Fp::from_str( + "13207537521011022812319141236421268356825327806625537047299253455889808792527", + ) + .unwrap(), + ], + vec![ + Fp::from_str( + "2622643323130765702269424224791233611920515499144047449633123689743564676648", + ) + .unwrap(), + Fp::from_str( + "7934318163093606910388307192320021056510770283350564327826894301919432120323", + ) + .unwrap(), + Fp::from_str( + "7390981975273378581893427566935692330605702531948453130383999822487328794460", + ) + .unwrap(), + ], + ], + } +} + +/// the fp sponge params +pub fn static_params() -> &'static ArithmeticSpongeParams { + static PARAMS: Lazy> = Lazy::new(params); + &PARAMS +} diff --git a/poseidon/src/pasta/mod.rs b/poseidon/src/pasta/mod.rs index c310f5a7a8..21fcb0d2a4 100644 --- a/poseidon/src/pasta/mod.rs +++ b/poseidon/src/pasta/mod.rs @@ -1,3 +1,4 @@ +pub mod bn128; pub mod fp_kimchi; pub mod fp_legacy; pub mod fq_kimchi;