penumbra-zone / poseidon377

An instantiation of the Poseidon hash for use with decaf377
https://protocol.penumbra.zone/main/crypto/poseidon.html
Other
28 stars 10 forks source link

feat: generate Poseidon parameters at build time #16

Closed redshiftzero closed 2 years ago

redshiftzero commented 2 years ago

Closes #15

There's a build script in poseidon377 that given the input parameters: security level, the field to use, the rate instances we want, etc., will generate a parameters file params.rs.

The parameters are generated as PoseidonParameters<F> (~need to extend this to generate the ark-sponge Parameters struct that we actually use in poseidon377~ after discussion we decided not to do this) in a generated file that looks like this:

use ark_ff::PrimeField;
use poseidon_paramgen::{Alpha, ArcMatrix, RoundNumbers, MdsMatrix, PoseidonParameters};

/// Parameters for the rate-1 instance of Poseidon.
pub fn rate_1<F: PrimeField>() -> PoseidonParameters<F> {
    PoseidonParameters {
        M: 128,
        t: 2,
        arc: ArcMatrix::from_elements(2, 39, vec![F::from_str("6702160522233279910601598543545536221622205326054304952855112840255603184754").map_err(|_| ()).unwrap(), F::from_str("6993382525970204698376116069266931623547293709129571356782298081806415028753").map_err(|_| ()).unwrap(), F::from_str("3489809846924357187040862147429593468037305884258463585702901832385078297909").map_err(|_| ()).unwrap(), F::from_str("5865216449334210182931792997958364962720813854070311012249955581552395065328").map_err(|_| ()).unwrap(), F::from_str("1178110558862848294196583030398031438103523323785521862749744656952187510355").map_err(|_| ()).unwrap(), F::from_str("5055442624413189858787855003208316825169332047636114492972352070618656101726").map_err(|_| ()).unwrap(), F::from_str("5743281703907879283851767780562316847348232465006748510641790107559412816301").map_err(|_| ()).unwrap(), F::from_str("6001609515810566043737045807957275977648253909557977559241681790323541043905").map_err(|_| ()).unwrap(), F::from_str("5866176762218626463296114387696189792079987887913898243851507882981458650648").map_err(|_| ()).unwrap(), F::from_str("8193826470327773210462293966505318676351263004760197873467369968790936487239").map_err(|_| ()).unwrap(), F::from_str("6103171922136498173322143420105234596685771407100557728625825801107669182763").map_err(|_| ()).unwrap(), F::from_str("1362308855232049438514670770531178831508671476741229240583110703618414412738").map_err(|_| ()).unwrap(), F::from_str("1406121158728042753384367463802057047974203759450529743306315019520284504939").map_err(|_| ()).unwrap(), F::from_str("3907571492182485669463564340824852326670695525464586617481249191147537797107").map_err(|_| ()).unwrap(), F::from_str("6141781449938918259225039369039216386470277504249610193525942460375261305064").map_err(|_| ()).unwrap(), F::from_str("5738157713403630652760025145844928405682453856117133883646831960520806419584").map_err(|_| ()).unwrap(), F::from_str("1268479162020270858270590953391621760974457760064987447696219149967141043711").map_err(|_| ()).unwrap(), F::from_str("3524976858700782111026843296543334159464397796490655133668984508697451801442").map_err(|_| ()).unwrap(), F::from_str("3162501686110645182681364320655616595626347205297730382494596912868848766779").map_err(|_| ()).unwrap(), F::from_str("4234097961438176097810925971656649688160026816713042463799184896164594575281").map_err(|_| ()).unwrap(), F::from_str("8235053822735050012533506413680479130817189774694863675094115140292374607845").map_err(|_| ()).unwrap(), F::from_str("4239932910989436996148335658196512876992594396463390659172849153195571337303").map_err(|_| ()).unwrap(), F::from_str("3102212270258124491860312363298897981851535501382683971888769919857314895788").map_err(|_| ()).unwrap(), F::from_str("5254190811412301131624705964209270433844817200941217318177055094043593883708").map_err(|_| ()).unwrap(), F::from_str("1024061367562984449222809948773218513758771417199133373854171839363935815662").map_err(|_| ()).unwrap(), F::from_str("2520524111754093344519204506369259971022252522187114858958481187429496864969").map_err(|_| ()).unwrap(), F::from_str("5629346227320185298056512512980783863479276350250462926122710404466593366286").map_err(|_| ()).unwrap(), F::from_str("1981105715236538312347996203895334918973135686516256573574747195204705004777").map_err(|_| ()).unwrap(), F::from_str("7796694894257719218934882195754916126681129287015632225737487332961515133362").map_err(|_| ()).unwrap(), F::from_str("6813921642314067797826180777720745744403716078982857496430611100924734407336").map_err(|_| ()).unwrap(), F::from_str("4197246841423987601619810913265035314209751237280415586910477493819579915605").map_err(|_| ()).unwrap(), F::from_str("3399653711664259049579041984644251827511347346757487907703902584224021288766").map_err(|_| ()).unwrap(), F::from_str("4449067806069139120214122920189498626619654391687412678820643486684803187746").map_err(|_| ()).unwrap(), F::from_str("6027479828752297938461541107424832991602690341187534767996915957484785375503").map_err(|_| ()).unwrap(), F::from_str("3018779887827190777823526604044412257828495251449053569204758555229736214441").map_err(|_| ()).unwrap(), F::from_str("4257673850695179059995742979760464846247513044646258345859268098571026365998").map_err(|_| ()).unwrap(), F::from_str("8439036630624876723321105461397588259883035949641349712781065617656100540134").map_err(|_| ()).unwrap(), F::from_str("773724388904578784508786272118793808398218076490750491669456572623546899070").map_err(|_| ()).unwrap(), F::from_str("4867798943026722696778687234570259289202802046340028719893377149832893744944").map_err(|_| ()).unwrap(), F::from_str("1756384279697549089639530108320633681287609009327405884316519072052471831975").map_err(|_| ()).unwrap(), F::from_str("2849349104722877324083175381388925321875716278089676411557721932533054549439").map_err(|_| ()).unwrap(), F::from_str("1843539355820096946775348931635955893438312318577678674286396629361758304731").map_err(|_| ()).unwrap(), F::from_str("4962832170464849392898102404159203530553345777471626051312436414276430140425").map_err(|_| ()).unwrap(), F::from_str("6049483038876438683194705710945244871701827789799646780225618069965909017698").map_err(|_| ()).unwrap(), F::from_str("7193622638330529842731628942125017030343607895363113439359114877324795263760").map_err(|_| ()).unwrap(), F::from_str("2370437535818437117734208081925405168671341226483138180623583978006471300924").map_err(|_| ()).unwrap(), F::from_str("7446088445822264561922016302352571396424652322192246557529174898671316967267").map_err(|_| ()).unwrap(), F::from_str("4220289946128575583363022251730338127929512470951954056939984268910199893321").map_err(|_| ()).unwrap(), F::from_str("7602560035578962663354371020562646280958893214487971163996467586124158058366").map_err(|_| ()).unwrap(), F::from_str("8078647668070395385994879176532806141003886761918549555978387844380428096433").map_err(|_| ()).unwrap(), F::from_str("5321064174668564538191424273579787863453254445053023596547888875504807850336").map_err(|_| ()).unwrap(), F::from_str("1768647001344029558158746437759026829142135261222799163764015945465160404830").map_err(|_| ()).unwrap(), F::from_str("1802310382154477293893835621328429103702483539796786532819822499526720249421").map_err(|_| ()).unwrap(), F::from_str("1483627610913735980078556475740011336902538237738146848171396404142420876667").map_err(|_| ()).unwrap(), F::from_str("765462960397298161295328792299714306739867495174147204990914594042350422905").map_err(|_| ()).unwrap(), F::from_str("397523489367796244199492466737937373202151369204282831832493544662921171913").map_err(|_| ()).unwrap(), F::from_str("6029121864253280388909988214601483847716202063273183763809871223653619920725").map_err(|_| ()).unwrap(), F::from_str("2837255845663451076369043951742620603522009709850024899404615413468829330137").map_err(|_| ()).unwrap(), F::from_str("3069770812334862879313325362977802363216252690054132910971557556250646498936").map_err(|_| ()).unwrap(), F::from_str("2556683193408873037028071019637265987350972372291801653564957109196232720885").map_err(|_| ()).unwrap(), F::from_str("8012679929757049094021102819720746954013312781053024168119971297408564407695").map_err(|_| ()).unwrap(), F::from_str("7687195311708562099444737084390394335427712396440634753137381364621758910551").map_err(|_| ()).unwrap(), F::from_str("2681084128668137055016136634469859635317303824706138126880208097145107832437").map_err(|_| ()).unwrap(), F::from_str("2238268455824101575485762615683435797723344355931312706008543523656808584973").map_err(|_| ()).unwrap(), F::from_str("1584655326948779412054683096281251843930538934343554917790484540620120471315").map_err(|_| ()).unwrap(), F::from_str("2406230891949099680677503904083901780497182886939307994007995719170979051562").map_err(|_| ()).unwrap(), F::from_str("6101336846707963166881342398650605968859220027639386810019226985774345672862").map_err(|_| ()).unwrap(), F::from_str("1256146345676452534238617375373631076288377163951259654371530445980766970973").map_err(|_| ()).unwrap(), F::from_str("4132276193023199273877719942990460039000149357035537100939499564056489878025").map_err(|_| ()).unwrap(), F::from_str("3871412226728018504058280059332835009221224694788580593053190662846106175592").map_err(|_| ()).unwrap(), F::from_str("1600202252042884899759675015693759529753745809060374732972970525183429447464").map_err(|_| ()).unwrap(), F::from_str("6244197359972977626118100158901549944434493782599984432164449330983207619274").map_err(|_| ()).unwrap(), F::from_str("7697160241489247445302950906532122883682250220549634157758709800801283605524").map_err(|_| ()).unwrap(), F::from_str("5784660761793713998357132349586273307827089251678254182288476834503711860089").map_err(|_| ()).unwrap(), F::from_str("857208117556121671499367717769534499499786084272558966799621857129944147127").map_err(|_| ()).unwrap(), F::from_str("1085040928306505207052039315193346753606116024931889203844924317941366095049").map_err(|_| ()).unwrap(), F::from_str("5307329684769475404288026645326821009359985027661054883900236306420670391920").map_err(|_| ()).unwrap(), F::from_str("265181683346330416903298760323505851086450147526298480963547763423942021515").map_err(|_| ()).unwrap()]),
        mds: MdsMatrix::from_elements(vec![F::from_str("4222230874714185212124412469390773265687949667577031913967616727958704619521").map_err(|_| ()).unwrap(), F::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), F::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), F::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap()]),
        alpha: Alpha::Exponent(17),
        rounds: RoundNumbers {r_P: 31, r_F: 8},
    }
}
/// Parameters for the rate-2 instance of Poseidon.
pub fn rate_2<F: PrimeField>() -> PoseidonParameters<F> {
    PoseidonParameters {
        M: 128,
        t: 3,
        arc: ArcMatrix::from_elements(3, 39, vec![F::from_str("6988674540205220184161726804233283990758776299863834762040727861674579978543").map_err(|_| ()).unwrap(), F::from_str("7709355290596865338819285880138672457952222650642807855871317708209074795474").map_err(|_| ()).unwrap(), F::from_str("5201859429164217460310636175253377554540105593885866289756080180570368021951").map_err(|_| ()).unwrap(), F::from_str("3049272212137844517764629946141402720245409346788255860423236916151652752101").map_err(|_| ()).unwrap(), F::from_str("731916334316210902202615695074797267498900349008237468358490947620590797518").map_err(|_| ()).unwrap(), F::from_str("6948583625231201615547345467810234311420481469329722516969162382644726485729").map_err(|_| ()).unwrap(), F::from_str("4490233413574409524500190972213779994057100500913568615764229347275941966621").map_err(|_| ()).unwrap(), F::from_str("7396725314962185388189273989459617572911903025336675876756586397590970741108").map_err(|_| ()).unwrap(), F::from_str("2921080621736132447186011889175418237339394704314886136898495644039034276407").map_err(|_| ()).unwrap(), F::from_str("6913381781295218724328701128337217653607031228663005211451263519103715771612").map_err(|_| ()).unwrap(), F::from_str("6019749413834726725125133350812094485497924094481882289540053799149578344435").map_err(|_| ()).unwrap(), F::from_str("4995954379914570178339745532281620079808702064916164361475898096048200561372").map_err(|_| ()).unwrap(), F::from_str("2124186257537670932969443833628233916733000677872857619541493107812792994523").map_err(|_| ()).unwrap(), F::from_str("7291894998836603209561258041480148233381540517628859681460511619998064153371").map_err(|_| ()).unwrap(), F::from_str("5595990839755855325412866122463078686618808871960757703224904955947571683941").map_err(|_| ()).unwrap(), F::from_str("3537160744846065764853442834424373409651099344521970876522694695688635431066").map_err(|_| ()).unwrap(), F::from_str("2954454393932196948837847149102865937129021962377785175174024254914865842950").map_err(|_| ()).unwrap(), F::from_str("3419315454849124650955009016912883940563484976972042083416858065603689496832").map_err(|_| ()).unwrap(), F::from_str("3806428962945994811285946499090572627057499235956685241206402009333505759334").map_err(|_| ()).unwrap(), F::from_str("3655799702308860920150435964548684891924451400804361135118484032125032598324").map_err(|_| ()).unwrap(), F::from_str("57737751276368877857810935409958008964192913848302491350608849486103983184").map_err(|_| ()).unwrap(), F::from_str("1915352583171320491693476119325069346845301615295456446193205432443729561362").map_err(|_| ()).unwrap(), F::from_str("2439099701581451517688611628866569838452290241832250324455500902329843312702").map_err(|_| ()).unwrap(), F::from_str("3989571287747866024297797480724745501265526459123523685165003532225058737017").map_err(|_| ()).unwrap(), F::from_str("1274924313387817773523400448046659551605515353388015126322854352407485112178").map_err(|_| ()).unwrap(), F::from_str("3538669999602770503695742207889860045394526991617705488296801358914185373580").map_err(|_| ()).unwrap(), F::from_str("4401246357543850671767985325237453838498116603536497735906663351268804787461").map_err(|_| ()).unwrap(), F::from_str("2559931452913074589872846458947462311744881462782273449825347290996535688190").map_err(|_| ()).unwrap(), F::from_str("6709521882202160521710551267237866546258896928898102819308145878147110518998").map_err(|_| ()).unwrap(), F::from_str("5373659760438588578295511027961568043615652955303420550992405255631014932790").map_err(|_| ()).unwrap(), F::from_str("725358525431579200553169280129018217996979382272885300053580199941855247992").map_err(|_| ()).unwrap(), F::from_str("2711677001259335480652195803065886043768935709346683926524369693602617098735").map_err(|_| ()).unwrap(), F::from_str("2408404230388232206949522040212171032284939854972285633012212391817981607424").map_err(|_| ()).unwrap(), F::from_str("1186040856650308375741364762182204898851227330889696264228020657476066439165").map_err(|_| ()).unwrap(), F::from_str("404048178770844833884453808764026962014273331076560849830986302265017106597").map_err(|_| ()).unwrap(), F::from_str("2457980758089805065016437725693167787523563267321442504443061210915487649059").map_err(|_| ()).unwrap(), F::from_str("5514274238964078455104632169285419111957737803766043587115323546343949215185").map_err(|_| ()).unwrap(), F::from_str("3514161082841676985857208649335676975188369868905520521318398127572664738752").map_err(|_| ()).unwrap(), F::from_str("4108606834385867504687843217967114460156551001086842181166717914958770403973").map_err(|_| ()).unwrap(), F::from_str("5438721170688670872528545023231974923420840584558594500405263452933878597229").map_err(|_| ()).unwrap(), F::from_str("6906803554484917017200648665851986247523920135603718330373990427890960021429").map_err(|_| ()).unwrap(), F::from_str("6773035949923635323431262859887753205922948876714484737222475796787366079632").map_err(|_| ()).unwrap(), F::from_str("3454971734297107006829739591921250454837247155475050149046396338839813827731").map_err(|_| ()).unwrap(), F::from_str("7364032274856046959988795104383399903833800495311645692576575019328860184739").map_err(|_| ()).unwrap(), F::from_str("5090237262483125352320655316341291877320873702136810598778253319493729243907").map_err(|_| ()).unwrap(), F::from_str("7040120647987711630185190920784851183122824396905398949829112552524922679218").map_err(|_| ()).unwrap(), F::from_str("4241891765467070847114454202066467844546553548806051107324396246546372885021").map_err(|_| ()).unwrap(), F::from_str("6665724400861899002873469039341765913644184695826421778987889913774443050629").map_err(|_| ()).unwrap(), F::from_str("448984649713630578678620739597247393633758724695886660688385072842799016614").map_err(|_| ()).unwrap(), F::from_str("4434682947538329726016505926721387004929017738396457187963678107139068894056").map_err(|_| ()).unwrap(), F::from_str("2654258244823582020535836788585799851074201403680932834327618688807205649978").map_err(|_| ()).unwrap(), F::from_str("7484689857886884960106141392369393095782615310091894042146328394047426518295").map_err(|_| ()).unwrap(), F::from_str("1942808122528887865767961865820464537056521500030908110050474926722380974536").map_err(|_| ()).unwrap(), F::from_str("344500957117500326028440473175755048870611851993354332374666161841080990947").map_err(|_| ()).unwrap(), F::from_str("1348753541337083272549863328453752683182456212379425100821691332950288890545").map_err(|_| ()).unwrap(), F::from_str("2103120456984437560455082748913176416990508871567415467939358228479854873351").map_err(|_| ()).unwrap(), F::from_str("2292487208919231486153548864499042965890939794407917482440372775098861562679").map_err(|_| ()).unwrap(), F::from_str("1365699813546208177056843640862540504179044968814663626900897795677799625494").map_err(|_| ()).unwrap(), F::from_str("554977209842623516366328363486656166750217005493097317657821483311016867413").map_err(|_| ()).unwrap(), F::from_str("1012681193481555714661518733220331453247456054885234525983936184818341343897").map_err(|_| ()).unwrap(), F::from_str("3305231045599338776935501761324268246527607870853973257592166741567433374268").map_err(|_| ()).unwrap(), F::from_str("4333877142094417744543077252413871656342262693613730620256227581042655305040").map_err(|_| ()).unwrap(), F::from_str("7777205595073057350341784461834122331280415876029900939355522841662553176074").map_err(|_| ()).unwrap(), F::from_str("4840858193637471129175745899503372456399630245018875386440469738656870783875").map_err(|_| ()).unwrap(), F::from_str("2357676262748466822692807611262394405661835004883989150221401275910658221228").map_err(|_| ()).unwrap(), F::from_str("7138273365000097744458577312541388740679989009422469449074028991224530604110").map_err(|_| ()).unwrap(), F::from_str("485222390469261989303933907410224709686194360288659813320551592057697628336").map_err(|_| ()).unwrap(), F::from_str("7304958057900576070706128694370846314753153242043556416488585921869990369553").map_err(|_| ()).unwrap(), F::from_str("3054467536201050922565505407948114813542310872122046019653899354152048288587").map_err(|_| ()).unwrap(), F::from_str("7927675397895965640682713824032195188375176019096874428380360918067593464293").map_err(|_| ()).unwrap(), F::from_str("3309166302328489226253405730527865569800263915453313231389661384029388882973").map_err(|_| ()).unwrap(), F::from_str("5965181721075655108229190542103190613948317087222615157537864954626934864278").map_err(|_| ()).unwrap(), F::from_str("957462211078758382242413107792211135057848138559926337013021595366339577571").map_err(|_| ()).unwrap(), F::from_str("198394403445445094359605615633590149332163797064329315770623355539242216309").map_err(|_| ()).unwrap(), F::from_str("7463441484178016758773883131885464175931400841696025127277747424209731401404").map_err(|_| ()).unwrap(), F::from_str("1160008805772248955377018833258451135257551662316808536058738978750378488011").map_err(|_| ()).unwrap(), F::from_str("6518867743477019502219001069731966409833247292912334665417290659645667419955").map_err(|_| ()).unwrap(), F::from_str("4517402679218052541576445358797485968486830057222997594823371950017329219302").map_err(|_| ()).unwrap(), F::from_str("7354051301247770797842924589966697851909586702696257558683248998739487980604").map_err(|_| ()).unwrap(), F::from_str("2834375192758634622309272728723360761307832547975462365181375869489140229995").map_err(|_| ()).unwrap(), F::from_str("1994807436087186458521900248214366799099575848384138696628801997707644700762").map_err(|_| ()).unwrap(), F::from_str("950692684046029615900460675185564728767691772421333563597409970862081455788").map_err(|_| ()).unwrap(), F::from_str("215771305218329617432990321236383072164889337755200953331015221695765976106").map_err(|_| ()).unwrap(), F::from_str("1909082095837831920888969082647459710433093968000148124011736509696807856013").map_err(|_| ()).unwrap(), F::from_str("1598410195308242153466832582031632291180140534335578365097402262810462732055").map_err(|_| ()).unwrap(), F::from_str("2678636807928147586414144012517644559789125698464788308292276107901313107661").map_err(|_| ()).unwrap(), F::from_str("2917629436003252386224521387413944523909700127328145715767033623759922640382").map_err(|_| ()).unwrap(), F::from_str("7458105141931924735314567432007818081713439243280961865780616542121851581718").map_err(|_| ()).unwrap(), F::from_str("319795528388431346122583308065003312516920956910650811136638838518508986081").map_err(|_| ()).unwrap(), F::from_str("2517244350831517565417121786113573693537264283492623928559027525769451471491").map_err(|_| ()).unwrap(), F::from_str("223748040659454085763954561101046640414444944211485063723474905397991588694").map_err(|_| ()).unwrap(), F::from_str("1192354867122687562579528359864247611894736623206207907228980319561228918703").map_err(|_| ()).unwrap(), F::from_str("5871606971691538257906858052588972373505540906214016444548178191880980798796").map_err(|_| ()).unwrap(), F::from_str("1571273754249990281688882673201310460162825990479829590740008610709340403068").map_err(|_| ()).unwrap(), F::from_str("2553543928459081247552273773225408195006316644760016294757814926570104869").map_err(|_| ()).unwrap(), F::from_str("2693467272792735502580627823871051010043382942662978686835727944408814177655").map_err(|_| ()).unwrap(), F::from_str("6232251062757461771569898005064188756842484962202452339030167813201019698981").map_err(|_| ()).unwrap(), F::from_str("2844452341053596785360832413947111911561976463007641674282907958850438543223").map_err(|_| ()).unwrap(), F::from_str("4023368764458147563807714263192855312391442602065820814075304547101108205563").map_err(|_| ()).unwrap(), F::from_str("8351301538936731390668124977528070777737461810842984866782766995293383324685").map_err(|_| ()).unwrap(), F::from_str("5967036046303739940917424941967733943799255311341525764368533815862525175750").map_err(|_| ()).unwrap(), F::from_str("5821507194266555565027704367793767940447847023791990834401931238817427202054").map_err(|_| ()).unwrap(), F::from_str("2990863033217492956732717655690939068374085775072969350617575349863187663706").map_err(|_| ()).unwrap(), F::from_str("5692143526394876476290802203580121735276368976431591727856389066872799499270").map_err(|_| ()).unwrap(), F::from_str("1069795988224896959555747686619664343779988137540592094419890568097578384732").map_err(|_| ()).unwrap(), F::from_str("3224051331877783069937246154883192018725119865352760355089784651290920906906").map_err(|_| ()).unwrap(), F::from_str("6344299245364913590728081469479468396346568591287952250450228130036748752624").map_err(|_| ()).unwrap(), F::from_str("7163298144698758147180460135771716060107526826354172769438296931285647166270").map_err(|_| ()).unwrap(), F::from_str("5439669811527007432129035770771078324065108376477325977772842645864184474263").map_err(|_| ()).unwrap(), F::from_str("2388540132512935462910769151388489826759515381039083966425687579783397147680").map_err(|_| ()).unwrap(), F::from_str("5552242451981337643030834536688771349936013591654366196694153732254259211846").map_err(|_| ()).unwrap(), F::from_str("2293718155480151242211995443457360332861427853767599092412745658932866271280").map_err(|_| ()).unwrap(), F::from_str("1114026302922263706493655417918518257260056401972366120358912283469308695784").map_err(|_| ()).unwrap(), F::from_str("8382504281541902573191937024713512277106734793833129272685742500601751387802").map_err(|_| ()).unwrap(), F::from_str("7918246066354990409761145553536472732928632746154569124091286249273194443468").map_err(|_| ()).unwrap(), F::from_str("1937283435333591890382964471447412728772736446554658078729798048971164286629").map_err(|_| ()).unwrap(), F::from_str("2653607876727675876560671684767499894868406286850781422102673956317680932197").map_err(|_| ()).unwrap()]),
        mds: MdsMatrix::from_elements(vec![F::from_str("5629641166285580282832549959187697687583932890102709218623488970611606159361").map_err(|_| ()).unwrap(), F::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), F::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), F::from_str("6333346312071277818186618704086159898531924501365547870951425091938056929281").map_err(|_| ()).unwrap(), F::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), F::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), F::from_str("6755569399542696339399059951025237225100719468123251062348186764733927391233").map_err(|_| ()).unwrap(), F::from_str("7037051457856975353540687448984622109479916112628386523279361213264507699201").map_err(|_| ()).unwrap(), F::from_str("7238110070938603220784707090384182741179342287274911852515914390786350776321").map_err(|_| ()).unwrap()]),
        alpha: Alpha::Exponent(17),
        rounds: RoundNumbers {r_P: 31, r_F: 8},
    }
}
[..]
redshiftzero commented 2 years ago

This is the first address breaking change. Today the testnet is being released, pinned to oldparams: for future reference commit c8a1ca416a54e02326474379c76d54d87917328c on main is the last commit that can be applied to oldparams without breaking hashes.