testudo/src/parameters.rs
src/parameters.rsRaw
1use std::str::FromStr;
2
3use ark_sponge::poseidon::PoseidonParameters;
4// Copyright: https://github.com/nikkolasg/ark-dkg/blob/main/src/parameters.rs
5use json::JsonValue;
6use lazy_static::lazy_static;
7
8use crate::group::Fq;
9
10lazy_static! {
11 /// bls12377_rate2_constraints:
12 pub static ref P1: JsonValue = object! {
13 "ark" => array![
14 array![
15 "123249878756453098914639601843199176451997132612914162343590671120179979107846114348064675842753496966502226470504",
16 "53905766173893895260794869709237214385817399454448711667759505042599362214601718682151848385057179500606557721647",
17 "69894258097921391480299485244196654800484322255007476002974737215216019155108287854575586445309048623300976500186"
18 ],
19 array![
20 "199269668121875174262570566455689951380204776091573924798659006690560053061129973379838694860592058095048653996886",
21 "238380155638054426865611280966399840311283670977656700124343990049337832223435242290330416091629395326468367200694",
22 "212599814638151740594239938840408336056840064513659388805072396583467200575230295920880684207605497942975271963482"
23 ],
24 array![
25 "168914555474650585865140636066457509664822869961119817085015902784107763611497575013588473080216753361935154707010",
26 "53776337623194839368137436133474167179306472987260969806083684345990583528478024243778418311781192352786333037262",
27 "248867522100291115924418017563087071912585010573958563496624003376931076896846052799391847772671448846373554213551"
28 ],
29 array![
30 "35631741058397496924366231156673935881565943972602937094522045989256363839293709188784238224940964750407897277330",
31 "7156811532468409927576845751990203959972794842929038664826572233020786824205198784067484739611297952558975673525",
32 "15979461281492123433122857594463244790261784547146673175073000444677214597242748768087325039007316516299176001509"
33 ],
34 array![
35 "49754305211992756860291736450940496115500536038609822532547985566439150683219315252172063528174877535028115611426",
36 "216949553183571701463265648286619401188451882876550757881148401346730830975776784112086074385527611896268776861443",
37 "154083689848809196835533626226861291475925228965341568449375421928198779718328545609801450631059855774468437183675"
38 ],
39 array![
40 "29502137502944860067241987089780210878930586459241857665873534227953181087265906053919742367508518196418106799806",
41 "132373035808136518827992049261301947450498154936614023679388954300081661784851944028690271115929087672833323628947",
42 "215747065685210104280208334912564361804699328020235674942496660758226155688200145092731052953352829033676863042630"
43 ],
44 array![
45 "199648585544625597282043439398719700409246757664428471828724582419530290323495031580337339234017647369916547108958",
46 "249575928844995465269738608819476286372884074177639142297081916221358214871660642843838074316560663218386973740173",
47 "74982114655706235696493453220768307411520767156884132118410225505977592728838652389837915751053304413004683265639"
48 ],
49 array![
50 "106210893563839260576304917669354671677368166928359922623554581531406088660838991706361575276657684361659801532597",
51 "11585440423875492387746565618452234080951922019833673083821688269701182965167436520603220148800340540649190539129",
52 "37259364694251003983990539546703073907090415386678577600390274977885009271501265285951467194762590248232970812844"
53 ],
54 array![
55 "55837576930986823158863800928077105077853280536700135646766922885911998320579725325719074294029609849816879406734",
56 "116196118812458208678900768001429737210506949071720002979523997962887466062064707950742955679705357069634209515723",
57 "24815444638034932833671809997597970940772642987124330190627003560135207315166813788012165972582101193880572012425"
58 ],
59 array![
60 "8273799170260651595038492091530332589844019793817674372861920239816475852471908767091347071442643736888815451573",
61 "136990111822759715389631392741048451444971543778803264358207793191138912342988121207664006283186301023235486962908",
62 "18927153358572748727167231887593945930709178220781358813059367890606662567925981344966823750216495960065937779382"
63 ],
64 array![
65 "14853717798346258618706074618305350695598054492875071420312670809589654546598863746625188519698040835608660556159",
66 "176244718044988586163620753193829773891006448729185890339575543133809251309372861124810944047181141986328457412271",
67 "110233743777966819273995158642051347290508079434162581354613179685804039325709118867348142870653771761630005888307"
68 ],
69 array![
70 "161450408187838611032909671423510614052593225149162808041124828019352169325631782682210492475825053268732766729188",
71 "98500573657597535150392453836987141880178711694344573271124963035313026654066107879785978599420939724454330812177",
72 "215876031358183401857867635719035351422270130594078940310356834104879903855422762837568172975859284057413791888463"
73 ],
74 array![
75 "204131296462104965227188513952192358580161695271034405933269755582850293970852406144296664401269366372941792250467",
76 "249055944105228847655227995674839790690527612872758434023675475202902983562708467495202781909125241976893640769485",
77 "229583286868130259500413761228235662329364304128164289006746728927752301094007770574061957905615623121952293733410"
78 ],
79 array![
80 "97517137752483519086795583001379387731583152856232248443468839338330057977841917349007821334306740790291136905974",
81 "123488479251161582154755930609622851433258511862463208593787895860046694339616550157942520077460765622263030118175",
82 "71432639825611523000280189495110508914555485498103026713477936527348359478511563831157563324853527351478004088468"
83 ],
84 array![
85 "91036072174315573792700064386146501824720160045153964050728880763049550271037560479809028105202996773568857740730",
86 "22543564450401763754262340909190687557385187274502421381039682479049063587284520644182139148382788770792136350730",
87 "142332951471076179551307567596387601171650552060403080229506160329597397458669457278907083453911143048367692807957"
88 ],
89 array![
90 "132220734042377172239294549962805515211262743615319266088172915692615455860531484953442975677793502323549653807013",
91 "93545141080589996877640088231346264823743396787843686206971590288437291906435217842171096954488932034021955982341",
92 "240853888813002049402641151657197764532471620278969626757294146309548064471722973918761650243980940919903584631021"
93 ],
94 array![
95 "213503951761453329038225269663723790274543267128942326856880800168236861547603473591480303861374397603917184363409",
96 "89903237953544441905563167047407202265037317870234905464628470820413104873403912116742106741939288646681955585592",
97 "227121824801807544842683518849178395477499272684097761652696447845872786929195257751449337349649535876783186356932"
98 ],
99 array![
100 "146971666607035715052553690155718843961663952406456998981945817009558492075030732771578449344145496025583596767529",
101 "134089029253068479750825302615074040106242441439845487647903191411265000857473209669062720892950980761449114307448",
102 "240876825504060088346683291079269022914405381209699533928214418428379986520457497863030431018122239809907227823545"
103 ],
104 array![
105 "198679995161578152944752940670334322637799809857648522826858388680172266023884005933440419287476164086770000386213",
106 "80453254513068178946616210391952329341738228131537630777936072121633132376974015675425930731821852982135052772824",
107 "51768068183070369841309308465744117994964313769378589398952388439182600629247824076033474616974680361718264496789"
108 ],
109 array![
110 "243786304512064454489442716415645262128218178912097043568997297339729319251009514316482045843945939785873311024862",
111 "132173037488875105639933852791191619959134471035456041997878656537714362390384670197604289467581846432000497395848",
112 "138604002173172705882182745730007697550901886293221788738303534900559003963900219115006541529324886578352274293799"
113 ],
114 array![
115 "81783919742603431816536303551235523053319325628680028340677898253811841771498386894771134375242031554657528159968",
116 "89996400559826291686063370272745776928773053585174906250124744120004601102635457051808673956966087024872962073778",
117 "12344123991576028812375373502965766640863831483294590816896451707123374600150201588149068234468387476695336142872"
118 ],
119 array![
120 "126658015711577921340966771989453650175842088716604137911295183366663485409400992312567694787591845600554914654115",
121 "164573749458837881364642242529191795392373682411872943164652677729048094673511958737424619008331062199862267652935",
122 "143664707544522749631081019060087611028964440272897357239195964754781588855456478370128855886667526444876450715220"
123 ],
124 array![
125 "190063502426458192727293662114673159337018305482738016082798402909947909388433256561924969169284825978832455579368",
126 "200570271046622734241692574928890759512247601848653772722076665026354776331148830989844078413438205377226077381532",
127 "138002415082423685424410551811447526297743243297262932785520614237184932570821640271043572260989269814779470761461"
128 ],
129 array![
130 "16788676705864143878780230479765282864054741033672656690224477402805235181341884274547412331727211099012342081859",
131 "204290600886783875333612666138119904239583082229871768433568000092203989815186589303588884701205693229512519768754",
132 "87038987841167673770859932175226012933997089943393502222169060963262863845214906568997443646438042896398425595517"
133 ],
134 array![
135 "36339730403510893807656584803012696279422432037251730189319369181711761371163710757212065138707754369092877655154",
136 "23719136079159372599286451744989936807954969964666516807332295420486880070514166596679589399139358707568583760908",
137 "56393335057571631799160728164218189604902690263179612889078150181027528679320914138536210530501845237163318197428"
138 ],
139 array![
140 "205825956035491267343111682188790766922328411605275469211275484195313659964988531094479492782154028581379936224444",
141 "14251323509232608512846002255486393977548730149242264667463070512925839406395836441387775340864744223546556498715",
142 "78428895560820169309169428677090706087502853851935641954584167534512067284012881590143110425966068532035695668777"
143 ],
144 array![
145 "75494383501361595510879099604200999089073272552094921752996800680267084650818676639185519371499429119407927521694",
146 "71654751419236499966546173490894599834311797714598165686807217633186393301928260640596079166780877531085221325785",
147 "200578082042519003217027186194032673613554519507662494009516442239977006673663941756393116663841297396793491871200"
148 ],
149 array![
150 "120280384146306862951854508424447098979618461682025441151850969362942271625861150381428890843919546149633622105768",
151 "227475425496153223669855864055613669014065977392917058770175352117179491094064142348157299350182313499504389083442",
152 "251127263423734302912203519333198755054413799582445749881827904612771493287021107263113755730642765378206506332728"
153 ],
154 array![
155 "83702595636895308967051271584382753663326775825724154674461807131791275318302215831042606082449545102374950849149",
156 "72457985217378059985209058682320070298806205003882947360107581077425648268857982638575115120572096951096305132848",
157 "12116600973201943572988978934130839409963908949941838392365368398743958008280031214900074753572240221871297157796"
158 ],
159 array![
160 "240872572144156225455781664515486127362275317595363215915293841253269790726868349873274949641462036923410553640448",
161 "145005621445512968320023394688234446061157047306027479183225589915851108312974841851900985683181027983777819469749",
162 "223934906758737028193582875327881601162900418521869327818828928797111524239009182764598636421899745113893918838102"
163 ],
164 array![
165 "16041135858962966773434394701665023495889307936385789447051685789622713476233465453520183391926457145978975456780",
166 "100995326650741809373350376300291093265611246694300366918949313510272548230989953212376186670081618363334860819266",
167 "198113061836041953087296741499457296947901762958345262407373960882722071735229745555760175641534017765920249851403"
168 ],
169 array![
170 "160310964282803191210156178260469498817686363777861893444880694842806130876775742977058740003184226096711472502332",
171 "188713129639597187156378905515616933770775761286091242780337441914651066308540192205692023798450603034519453279164",
172 "144177371846162732968346932904974285173557315948314203099016729242538001323624139665700501564547696462348047085475"
173 ],
174 array![
175 "79270873425284875854185620699109770597921524227459035513636651263949603822776268395349011178814936290604749327216",
176 "66634508562919326060253106867724866375414704994924403132729353386392729560099833340809999504328104294822126690206",
177 "153929451747036516277146884279088023240503545576502622475104547924498837499332163003522743849174380874173903478589"
178 ],
179 array![
180 "65951591639970943843478787167093376292485300299245482252716091066831460583153445126961516774641242644059740963631",
181 "218283324593072992330537678366612521138133713936527225314279366375484764183384762101590493464257294993736058798003",
182 "255801326343293104028075157882719596846119525365262151647658801094843254475907908556215545683201236013153654096091"
183 ],
184 array![
185 "226255389453600272835601278226928175590352392261397636954040403683064727971365284972741836048745971086673805312770",
186 "30094566584570359029617856208266980210102789615056943080637739339632299082666382408767896640283618386400863011377",
187 "171014403954507192635907791911496156579477488568451453501143540559952206171633891640382019016227963532953321760176"
188 ],
189 array![
190 "166057204219683871752892448206953243424627338207417177280506199576386068200127812837156087933305873775343563022702",
191 "189980739384556361714711372786771245267076300911771323385655044819119270337048535106665515768517077503660696853087",
192 "160509966668023670725615598656132311085788181242287915812481624013950278259314541983309947248633680202474798784113"
193 ],
194 array![
195 "121604680206118278311858973633579806987780447456690173958929756615242378735587345162043644789250322132552405934838",
196 "162490787868836358365957714904092588505217178719637049967797863955517541278871433068812149053958672871873339777657",
197 "186725839885149672835245872626306502017366920295670132626156737796246154714707858273955752031344539280320214023217"
198 ],
199 array![
200 "1595442381035683601009655514607864917155264882908420917897267779293136954609652688808389170558528873507396022657",
201 "136133658372771228168254201060050291177683595113705517331628662542619211285959494716428905546778127973286832435248",
202 "235707281471584662954139438770000959801075760015072690205031932435280838811659817426504701946918628382850116491607"
203 ],
204 array![
205 "218394064516331833020386245120198448098388776182164066507039096886784654454748249393443008924076322437744672962940",
206 "171630003249069743969583651512237853143542592922081517495872510118379411011409238640358871094120884164999614012",
207 "106352495811714591674517100311841383873861724084673517408579093193910563925812357978278276551276192431523493134802"
208 ]
209 ],
210 "mds" => array![
211 array![
212 "35463799792750972803746014831251318629433070651916394903137949221437209577677273605833717469941575569104741526451",
213 "18525374364661750307440824350340771293424609245159218207409253749617918442029080961367157063966182839254983576724",
214 "96313611821735511449591580163083975587347120205529218061849469348716252837177987500111192232021055962542059542412"
215 ],
216 array![
217 "184610826894298373826952030256215485452556494530798726246415694794196222735666067140505346074672032818873376193660",
218 "169170114062164939552104715979827042386033829996509029655899361104098442853225147615546393356393444238242438049980",
219 "24177241132903335121524689415818818107920151023402250200813429563196326173884815770339346817801446861279643703952"
220 ],
221 array![
222 "17228430949886884828033371768349883299641066192821547195081333400086665473981454169936377873256566147576607049992",
223 "35113533023170247280272066588387614578863541036869539331927201531038853371598133096624809442419922813566246641442",
224 "225762263795139846379155325981635321549752796953252150370574780810431415761301654496442331322761087421338650655933"
225 ]
226 ],
227 "rate" => 2,
228 "alpha"=> 17,
229 "full_rounds" => 8,
230 "partial_rounds" => 31
231 };
232}
233
234/// TODO
235pub fn poseidon_params() -> PoseidonParameters<Fq> {
236 let arks = P1["ark"]
237 .members()
238 .map(|ark| {
239 ark
240 .members()
241 .map(|v| Fq::from_str(v.as_str().unwrap()).unwrap())
242 .collect::<Vec<_>>()
243 })
244 .collect::<Vec<_>>();
245 let mds = P1["mds"]
246 .members()
247 .map(|m| {
248 m.members()
249 .map(|v| Fq::from_str(v.as_str().unwrap()).unwrap())
250 .collect::<Vec<_>>()
251 })
252 .collect::<Vec<_>>();
253 PoseidonParameters::new(
254 P1["full_rounds"].as_u32().unwrap(),
255 P1["partial_rounds"].as_u32().unwrap(),
256 P1["alpha"].as_u64().unwrap(),
257 mds,
258 arks,
259 )
260}