added commitment and privacy to the circuit 🔒

This commit is contained in:
0xturboblitz
2023-07-22 19:49:30 +02:00
parent 5e83b88a24
commit d7d2bad937
12 changed files with 3195 additions and 3739 deletions

View File

@@ -36,7 +36,7 @@ contract ProofOfBaguette is ERC721Enumerable, Ownable {
uint256[2] memory a,
uint256[2][2] memory b,
uint256[2] memory c,
uint256[100] memory inputs
uint256[97] memory inputs
) public {
// Check eth address committed to in proof matches msg.sender, to avoid replayability
// require(address(uint160(inputs[addressIndexInSignals])) == msg.sender, "Invalid address");

View File

@@ -75,7 +75,7 @@ library Pairing {
// solium-disable-next-line security/no-inline-assembly
assembly {
success := staticcall(sub(gas(), 2000), 6, input, 0xc0, r, 0x60)
// Use "invalid" to make gas estimation work
// Use "invalid" to make gas() estimation work
switch success
case 0 {
invalid()
@@ -98,7 +98,7 @@ library Pairing {
// solium-disable-next-line security/no-inline-assembly
assembly {
success := staticcall(sub(gas(), 2000), 7, input, 0x80, r, 0x60)
// Use "invalid" to make gas estimation work
// Use "invalid" to make gas() estimation work
switch success
case 0 {
invalid()
@@ -139,7 +139,7 @@ library Pairing {
out,
0x20
)
// Use "invalid" to make gas estimation work
// Use "invalid" to make gas() estimation work
switch success
case 0 {
invalid()
@@ -227,443 +227,431 @@ contract Verifier {
function verifyingKey() internal pure returns (VerifyingKey memory vk) {
vk.alfa1 = Pairing.G1Point(
3729759902613158737584667451763372650786205291355292152976183853465281741568,
12141818571021242890877607823917100116000365301195201631232395613768357031550
10315822838385842923250715267205960664501004234546269981482666228112421301117,
15862104134162712938961972115840401024611162066277059180121297134493484755175
);
vk.beta2 = Pairing.G2Point(
[
13136239927450321420640914360716128650905558296901801053963909067006351325961,
15158152606360031483103218567077180987695153184296747211468761930524229437793
16075180890105261855785821136620370206478347851900063884177434889569117892728,
8999056094627160946941478319055654711627346279360998804980685260524215980818
],
[
5915853304591152121704470374932450228803136872189869158933925105543608134284,
15730504375151781974211308982636760944102253372011186196057356583318925951174
19289495299100654012777091634160205804317123853627581171870946780589078726579,
7456059757481809576237403196787593289176357510985305159986791878645463459018
]
);
vk.gamma2 = Pairing.G2Point(
[
12797338069690577808446516054250140565574683028551313720352971263472998915296,
20208022052319197615373299594326862684574957199303386410392870171291317902333
13277046752313471688255968585488007150536152283305619319249966594057859924122,
1540853480038841992778609939618416755409643379500817690706199269912373494426
],
[
9510633293756122824931415204113148296568119183289757074341033791433603022461,
13848313324479398811493408106201633294081396281714935002300111704965563936458
16195521367762890658515156444872542211791369361419964244676840991686196711549,
1050887057282964430320854978389799561269435789211688186694933498698817462348
]
);
vk.delta2 = Pairing.G2Point(
[
11266660693726079180142591384137499556300910320758103405829939699434501821711,
159594287871630790884118904172491478917812927426735012058598943236280092311
1662324983131052880488960499832632400354165691268048997945168703365805496815,
13662480426324514348188284803730524793155591206442565309405901461008907655891
],
[
707654447428566954854247517328264835096719281326792298268083684720121778002,
8298750859219747276182424982921391214869766140065874201121654684399272269872
15309139646391078466810181691750047695011680065613748420932752259577867509989,
11930459767156654479077330634914217815349186680049037714663239653430389142355
]
);
vk.IC = new Pairing.G1Point[](101);
vk.IC = new Pairing.G1Point[](98);
vk.IC[0] = Pairing.G1Point(
12559857560137645122326787789388304194293993587871847134890494756734887730889,
10540836150835001110742597252815405926154507219744289543571939471050967928634
1386156676430625766660721327519749365352708612284380407007672518761930314522,
5895979564403280714499324620374725835931311522554339174840912272198002116986
);
vk.IC[1] = Pairing.G1Point(
12658759479213995965001162601252332272297201132548324564145207426693527565148,
15926932667955163852247956764952692134227328819400283042400340320607443890254
174429888906575054944644195492533447677698808764744275768027474986091262795,
19449982332092198717836917024306177058078885300180691030479512833448493420426
);
vk.IC[2] = Pairing.G1Point(
9233280406365537882472347091592984624804190391541341875802125235730278068104,
15752275523345009693961145001656538975922631355936481038733513488525164988505
4940702259943724495655268600320625166138928124318746483111841772203931372898,
21300085871907717167823229271273029592921718070696716598133485043371262113949
);
vk.IC[3] = Pairing.G1Point(
21808090471321077445113540295542855177220849182527518892630816833213211110034,
20291869163317933772360342832189914678441059039982932543926622212723342658188
3970523900986966741454839663423325691036075995128843350657752858925317431017,
539367542421702393681320993411652316058906805217114528699814649881160035531
);
vk.IC[4] = Pairing.G1Point(
1681702107650924242939590994184892198098972482270962181163847232267596328979,
8557342808420608015163852437969816624820953791079871399330708760568396310181
14541643345260800436706406996787362480110194544530475630171161698573516679920,
4783331606526584048777066954770982727121131692786538183643102121348439890988
);
vk.IC[5] = Pairing.G1Point(
15827623790091259354160909641747466114900068219744403763028569679077212891836,
16047900434997519505683285569042075748171171960928956378651963933769052004008
1075474176916105569002317826203973479107209650628777996236377287648466962810,
3232058447014508876051800237288950058552252367302714558767792524271099812787
);
vk.IC[6] = Pairing.G1Point(
3871649391107353865241916568957195781306573935564276180600325739625953633118,
12287152472530723322413958924122061475582275721639684996612866595376739186461
2175834186336017845410894889748902248994354180137067840445873611529706706903,
3085466328487208450052471722737790746659231597949473931302689657743879290415
);
vk.IC[7] = Pairing.G1Point(
8377106463810514100685825845356383395677386067510355919238576094169118852098,
16519583242327369166921875830238594086615876675834667310581495770465471479636
8148131669390700325085948796744014848738121345402965689215540127469598163871,
1459937161639492891103296404430347140474089613091612181507607941234824828188
);
vk.IC[8] = Pairing.G1Point(
17256315274839085951460383359477120338705730100085167250100861170794470772637,
3419545622500035714248118081256268218279679027326858006315366263619362796192
19724824811793942534870544715526571102183990820436521365546859310276823467490,
9742652052240076179420483064624381054258687108701843582619502567192627148901
);
vk.IC[9] = Pairing.G1Point(
2593537711230008662417588173639335118988856157197429149412196836978036476028,
8538157445492015981727851706347554419011993838886631881562298143422560139294
7516612085018412567965384915697804249943140639755254403509406043424863699565,
13609389560576142128414010599204241098833066563137827296644138017315963061370
);
vk.IC[10] = Pairing.G1Point(
14477989853705726354071915375794761972851384384757175470793846199714539784558,
14079929937676588910688882040816627480763684460772620450631541411202100526288
5396430636568898715071511450196374579073195772247524680870475881840606697294,
14213494996959147888574066917872324178671816323712570898472101313990748811357
);
vk.IC[11] = Pairing.G1Point(
4908367875710967666263674799257760084919139359752249693676456246609727636200,
5893464791638555403716448258880869242115708620115670515122632157362553235348
19580033029544330967448763121940485539766629034681462072482784578056476122075,
4714739906270684478426827011422485533664415859906533725309733675967596336877
);
vk.IC[12] = Pairing.G1Point(
13892778185221937690942368826832812063265428592570499824044925689738310219507,
11461753429365510455202142741940060316305242731650721498478106876233632658526
6962906881391363529838287799824200955017681097924230628024324423216037180574,
2533319035586796547972968495763128583304226889898155603872302902791149215692
);
vk.IC[13] = Pairing.G1Point(
10682134970087788592471914065872857208315069548941037969986310598376249004732,
14820627352105689049749766052640486401273173176923086067015878857939901878602
17536765943492961589593406025711160790038974470090381500798551989642376205429,
9210978437865389852687238356987463161070296894056858501516143895498895127801
);
vk.IC[14] = Pairing.G1Point(
2119772198982403375642033192857705104561760415182630621394416503820521967779,
16584064631567314702849101035907475762114845357796927805769715977242748798669
12879519606836370836828899572118098335153146603118228135363495427283082247364,
5758811831466689143387239476857856589657131463745229429624027029582131264569
);
vk.IC[15] = Pairing.G1Point(
468001957379087412141235349803020719399535626031098531020103076502018103392,
9731847692529878033421967337165792006328738092348010242836175102062482640062
15735427660464208356818266871402603071222212568728528929189278663470048519151,
18580418584929980580683876981646262205040063567947776691626290499751484842387
);
vk.IC[16] = Pairing.G1Point(
5976854251484892985782710636217625469859800520275598568134507262077496024875,
20318938400718660685673332319353492933668237552172622506369401471105652570305
16672772973559614591916036849008777420093824711538705835090610899870382314653,
8188923103596302037595788157162335200890030912840313545299503026362065475579
);
vk.IC[17] = Pairing.G1Point(
2270094903612716086771825446969605944149896602655214340134275658651750853226,
18941736206768559100014313431303112513260697052358590666556859967328261755214
3482245003117717783432002198738459699873717589098511868698895399302488358634,
19652796079067654964753702546413435895310867146965033514795952134870224747298
);
vk.IC[18] = Pairing.G1Point(
12403449502829396741529042798889605750120840857422439904793273456469011902972,
9789585080677337609512672344440040203261250373286666180411916849321683055718
9382323532935595934689116629634156851330374962350295158341742092304036335698,
291925329935370804008844005614341459550809875961285224043109628983162794811
);
vk.IC[19] = Pairing.G1Point(
5555650403718658868411141337590093679981609731619594603339902419923925020353,
20995211797979700202498069667261619609850065140932834745505873830679692372592
6912981219684193325373956580555507527124688523637412271688548642710145407324,
17719276416320101991178800934805150313358144003174217318902641925424693400899
);
vk.IC[20] = Pairing.G1Point(
17021767833623025872249331730705710377933197645216218331094616026361430597609,
21329825675699865933034689118999077871032105338144922154354087349843672509618
19266481578774074906374076433526482559085483237651754027979037618702501848415,
4864429104782323549403921207719837137283226783050574715140728078210440815125
);
vk.IC[21] = Pairing.G1Point(
13558385097045770902864137581806672992871490316835972998797790572516541506114,
5871014328309830011352420589638285888179320152051847574807457074880403066141
14887253562463317132282666699497653091722231007983834420246533880775604202046,
20039483939999528919395933890813583839636534363798896837987674667077445002909
);
vk.IC[22] = Pairing.G1Point(
16424514168975252965671923544446270352171954723319017563341096325380655713361,
10859685700990652881520664344470801502388465114367176442614087797358727366623
12508816416091085449368756125649842984927777064057218811145926432353321314907,
1029754988093911081347891722709482405445904745087304835816390911520486811458
);
vk.IC[23] = Pairing.G1Point(
5959902219511275843292344410423896996238815584716983284173265190637438847590,
9866932316233122640717186062840841537434267117425416230387060170619909871391
2005084167017357346303758528212973722634282057561071593677784384715301762428,
5542975189718331938312935936918047907052872873683385011086540332580563138005
);
vk.IC[24] = Pairing.G1Point(
1603092778495767604469588986389709237236493500171281056848466995620519963878,
10011230165505730565598760395108917820136844145671763984779303282793398036278
574144171155849827838725501058774562989672318997217369030672907489094325392,
19011911734470524036198981595964567011458551418797935766148211921982472474741
);
vk.IC[25] = Pairing.G1Point(
19445203104268502694085960460918715911378008052266742102134951305696244481932,
18844398769848149633147971476338348359312024666594833610275881857280050865385
3608292935417210943680485162182048774922203693936402328868647729908340527540,
19717618713526912033181757546212053048433914196349054761157402425200075671138
);
vk.IC[26] = Pairing.G1Point(
1911019365654561636810416312706988526422489945391846257575313065585724936388,
4328460448192713619136628242809821670510740784986141355766087498495263044440
16163461701324146513568429102887561273066181667891291346998415488778690716805,
18662884437485380367184050862289985597601843562942757559581184607687570812550
);
vk.IC[27] = Pairing.G1Point(
7308114787300765260833382420461011775799539650740129702114708263446235846501,
14889543655495891179002456830623939070826438837228365469197541904090781285175
14994566112480375832970198317517069193388049320082571292718031142344097962255,
19889898631674322802597671404075063684983733435916365516196892134719573840178
);
vk.IC[28] = Pairing.G1Point(
21639806011468686866574898817328015655531783301049300937998792525082477069075,
275600735308784979838399243296684752583895839757668037687219635002720004115
736585196548664503732509698047552122038996165424116313982190787863322931826,
21019115756986596749277994511714050838771464310078186895547975840389783871138
);
vk.IC[29] = Pairing.G1Point(
20376116057487924525276918026031289707778502172020349017437375506132045737517,
19626268801008909613613890378709127489942986964980481543791425928839613527266
10974717193636000167380652442472909714934064969981711063607439335825119243469,
8613997549030193852101564196304783271636045228187714896154399752466639047526
);
vk.IC[30] = Pairing.G1Point(
13592009692949030004574896973195032080900164083505630280697715821763123369164,
5790907420455211091536725334579794280394459354328483860650869413952658359343
15515808334102622843044245600125992020384745623672581785591253976335954691668,
7056069273753880907078615715739794771659566915279338309055469505277556660014
);
vk.IC[31] = Pairing.G1Point(
1628493535906882612797992608275773632370164503966508208193089026140677105123,
13482183750711332376169797918240691246931490543951556091861566531310767503698
2026995926214775331423673216302815034683334238220808093286826947311593039794,
14548613909100523536915943149130374917224265797462738040649328509010392696205
);
vk.IC[32] = Pairing.G1Point(
18259742122100526632130511216014839454173201065604812935967390249533409095042,
5280386665815101163919341992262974722171658412973558382680082465740734248990
7347999393948250440988207859344770709243120088530457172274758503515633459971,
20430173716253509790919340588694849367500686486837868170440361371544940846857
);
vk.IC[33] = Pairing.G1Point(
6443894117860652890119529010273675480419927094850244013306680814669496732337,
11867190429733051312323586554625563629455203502247421507932910643975163792166
8726020462171177960911520449113858654607194259478482096783149613868723406121,
21109992085518709586188037780336334901483462217597999928530659225385204929051
);
vk.IC[34] = Pairing.G1Point(
14881820047534513998342158226070155246972777382419986458007544494090526092189,
21439288798623183508506732895142794473218295271986600930799453199416275082474
18759571018089650279499799472273628763502429845355459478077716291216286451672,
3061120585842126900115563926687483611216432798358081316062265175950975462706
);
vk.IC[35] = Pairing.G1Point(
6637337966321834484004997695297890794429484223988098988196214552643297179527,
4140984639167223308355869685451740772856320877650177711101971172889089529744
10081168513618588217797803738246975722763428651743613956930591217530005755308,
5223516720621635076713966633725260161024836955550260381664330387742167168437
);
vk.IC[36] = Pairing.G1Point(
14320962606625310252457563082348347637781609365245721306020447239610881132573,
4355428558647072618942274565841030436504076288251109685532050786296048117047
18623257401997776504806348144872345347118220689716572995578481344526381397027,
12738216514382521354381755763633144591976312475306345247101617502260715984300
);
vk.IC[37] = Pairing.G1Point(
15366769631851752354143870656040697905161609081800490314563812863474624292450,
4662453582922910336824127766333371939884681188295201896157157328891342699708
12613017704259258984783441890484052267798710998400588809375095368441312203177,
13154863759245282454936298393415245536123605264867594333724866438497549024170
);
vk.IC[38] = Pairing.G1Point(
17721891774056849019223190636020057314863547956224207111926175144984438341674,
6175192763929100699638150965668647330732349761476747365579610301167554102544
12709290832361335753305864258009255307237010774441288781285781702671213114765,
18349056269309660723886180747727132860619888970885172282384405779461541989577
);
vk.IC[39] = Pairing.G1Point(
12108556731527282476656416278846047917916614928311966513552277657271130491935,
12482533820340806038841922711984697523097157464283617092458735682492807434689
17447538751610051385783414732492525667137731039071585637687353043409911312358,
8705755619226884560464931039313987689788884448049673193589169040745836183092
);
vk.IC[40] = Pairing.G1Point(
18886092892941247857051157848944267364349578158082972696311532364504024371981,
19812052634637182218047217965035478162772751733537338114674670792578859230909
19903040530418130172724072033663794977209466570949249258688233439835382961705,
6538405654339479654547899704613913798731714798978111499534963418797636778536
);
vk.IC[41] = Pairing.G1Point(
3723725291911652431008916713263794352220829189736925775917633975310219729453,
20463189283374303708989740698253633548346610467325597828389662987611493042372
20190111036656612665976758535510402352901099971723589132364459219237140650804,
11657276287181136248459738132957662348970456139200020118947243073509600583324
);
vk.IC[42] = Pairing.G1Point(
13275998810754415624632619359378959965142615339099289942518847164921612336349,
955114550629205825342327224716527590631889353685073541925190495009566832234
5496409758069382276348459990808117794030958339567169207650726751174822075842,
15398624126895562271141819515160389374772951137601086902126706157329463089406
);
vk.IC[43] = Pairing.G1Point(
8127814461915026185786513617437682859742298705009503581737619364170030447116,
21815819203989494603085212132332810378548897564403488275705674583099354027961
8151283523500801176883094078648061648579761104703136856876223887187491028764,
19699576961944733283219819902822060278574556991476755360120251735226112577042
);
vk.IC[44] = Pairing.G1Point(
7487475274169718977265746701319573156726267921915085570273189839189674445754,
5201014436553051239372574945567405202353368683371168424706141117865315558571
8533704954946914002953946046744749163319734782733169970628585647060058140849,
5141897905579649570194799195601184296177984332792452257361194331009931371352
);
vk.IC[45] = Pairing.G1Point(
5924521840605251028718217723025645499739101773307750914599024520374451885719,
19428818752090942780423549177176836985207944484638996290285447987180802804701
17671515716110934550447360224709626247970759130056552979213535489731669688446,
1690274318568461080087753254251786392263489028973782647985819430312525336960
);
vk.IC[46] = Pairing.G1Point(
19236678798478568184257218598238736474256699019074034203560137661980839276026,
3139750861809295800845306937286058569462063739980203065998438406055759875643
8478603008571616038378551513375406458692917186348304648150064228029895779958,
20116202548019188938994896483571557179861045004954664127312673627929525959276
);
vk.IC[47] = Pairing.G1Point(
2418570367199724236587628998150956846382594750061617948621490926643435241166,
3127319167851697820463127295938241108917118724647062263004343701785256270853
6432981094696267073379852248786055231176785645227335199813013566498759785384,
14983269753830770996227222283167931949083546323507335724535651513681318189079
);
vk.IC[48] = Pairing.G1Point(
10909492437751379338188199652628936747937724199500813788942572863509477583010,
4833308865394489067757406533756587852982195128697164261612054340912519530021
9455507927501800915564496121759986854117031410770932562840240404182614698028,
5285955876415145827392451089524707681594893418176652281578834051447348307955
);
vk.IC[49] = Pairing.G1Point(
4625826633705154901376833829227093358179171397356950311175901450119871326092,
117381311528237548316177716726652775298685292414608571831406223150392712462
20714130644236382051591460208572376019763347755510239498689871430769906890685,
18654357373482716030683276562311098400463035289899424564068036000769595694407
);
vk.IC[50] = Pairing.G1Point(
11341370844202293686695076488062249710145992973415434244350913310878091873666,
2679592152865543054483479749342604715904461512197943637959128980231382841200
16832181157818881181838165095351716004273729658170734148090869509398951353661,
13189116767733698206617444976497238961678787103102046696228609244708542732492
);
vk.IC[51] = Pairing.G1Point(
17609783486458107655758975986039577766535204121270405693756192976423973524335,
10170503815852453711175195241826129330807849924579505856085876739462624724479
8076452889145567190300790005312690920477320514039067078236315139521658556063,
890666235559929062329759673773557091924363971646065907430303231638612724999
);
vk.IC[52] = Pairing.G1Point(
13618393604972347384993673349559696624891668790999087327294997970318668323093,
8597452137927565226995995089969355848121140362662198798261258182931073349319
8358804823290743257390543678494170562797974621132658774911399394185092545208,
20752753364958656771514688460585465011660082299985374260145811301437669043257
);
vk.IC[53] = Pairing.G1Point(
1369052766836407521905711845908024536009180793492574158258994707081494629126,
5291609899883605798795618997799719454716671977081560623022622321418203167294
431866034143667612182321520413242716471591638473939166320447500693829929824,
13272258147627911088702851414812922302256821216107539459911504860535837022135
);
vk.IC[54] = Pairing.G1Point(
17476288512285277772225244608787933636200743838838180917949789071831401016014,
6832015928227769155216978404915572773960282476794917046601166303693051471745
9173989288857204293038005754886211674464077439638776033201321349164196474616,
9129103250645493108241162941947967350521408326116971248120638209361233930192
);
vk.IC[55] = Pairing.G1Point(
21058356558830289350565492498601960315583764018539526572244572347296204478038,
17800635316802079857985933967175756927585005558861771454945139618335207360711
14370826205941952851735365552127894021162133888463493633318496244143095511040,
1651163962095785808536509256199563475789494126010520314335456260358111804976
);
vk.IC[56] = Pairing.G1Point(
18887475735208246902422084857021154587515200986100034744871684624373946415913,
3650665502072512890897429420208767872268785767071942030996307571559141487708
12951186966437270849914379924115857496875963456775592910919046812882705115830,
16465255691963080311345885861560112122320977883916615486276340659371056324863
);
vk.IC[57] = Pairing.G1Point(
15304064583441452978954055182325447214811873398750472936801929759372769521146,
17092533988014354887696753785030909830699886830432410934834150980380514405170
3283421748134600628821861152296048618970465417807515877620876335991742901315,
321535500846302427006164553338203893489982138176792264731766129421299212286
);
vk.IC[58] = Pairing.G1Point(
16354407224230673074519339586655638610503081836647667623814986520923128018304,
14634681859267375125892101837735696597319439744437447535401719559097971351455
16855387142616687237143755251732902794908605199755471474196892846417162793353,
6761300099779160392813801467707189572028647758855510242027256178070516219805
);
vk.IC[59] = Pairing.G1Point(
12585902321015589710750473831345538579594885660392175544266943980185107256475,
16846205462256028916608587497640916256009966086610491220765532912482788390078
15257833521992801874267530841829063197963470852447328292085028034633128521860,
2677084778946138423753273144604322607349537157189860183844829718089957601689
);
vk.IC[60] = Pairing.G1Point(
2836547022425044839446597422595984953559741793057146651032784897916670862069,
14680012359072743282778864393068598563840082316045178716989359524680577165475
12162232048810887816633786290513237732818779568650791939302917523152130208608,
21333612874220018324963566977200031875031579203366186578790260941880595484190
);
vk.IC[61] = Pairing.G1Point(
18393769942279282096214366696214413150699038871158688647211565624514527849392,
7981636551400248764661025095601068852514128948613622986065038662691862387376
3391460336279928586355347127909680776960941614168264915045172621785079485704,
12982837279076354859831048030572798151280294385261501888099056857982051493723
);
vk.IC[62] = Pairing.G1Point(
10161078628644772598592962445722855578830661774777967820495819026431002518978,
4370368967094023783400667941476469380409134561441586711173238550029390078353
15657943681489382687201670166559198773174544761807418817146753024083872167923,
18015415673040996199684319960118318566240959606331772073882264856214095914848
);
vk.IC[63] = Pairing.G1Point(
15991382879423061578448912025088146061472641152821240476698212938417185043590,
18528810281409510059333307827296819647613027561293767272468138362600263910549
8764939161163047254075099233130913745881634109004943576089798043960197509190,
8107199767148537717254346850921330983657137386989043360271851202867981408937
);
vk.IC[64] = Pairing.G1Point(
13488558318757673080630118417722258367210955494845688715526714694383764632691,
10768365596290933051792097181200388080820860152849956405537111876553748533095
10021072243678930222406582984936927324952592680308844821701808488346598011536,
18628636656506555862260913227929463140408813957986050071538961255104712647438
);
vk.IC[65] = Pairing.G1Point(
6294570834404379157120404560626050945001702167718369151449240697461399207765,
15262692464738031660590757261876215632944396848801632595263420988013425649164
17321445808461122141320330203945732558478795973243070098294285860455518065400,
16836801211792107863813977849708073042443024384474661086287213089562566255496
);
vk.IC[66] = Pairing.G1Point(
5254670366770595355569466561966025019365199127587454188257730813806778861067,
5639616150685136047185423867058269716038127649009044566452559645581371798232
6861883922532910695796926319034380512803020100037212756359821156112905138580,
4119726663248857193393003082612555725457402139141352624262468551517744622172
);
vk.IC[67] = Pairing.G1Point(
2400100796099387260745572593392152325140535099144522997314085534858057202680,
10533470923933987502111425539154459595857278505795487806706476804277800520038
20779722207278452530034931086404649516930804730094114642064752236829364601447,
923216039876130666302755287286364480134410103154729240965964497426983067027
);
vk.IC[68] = Pairing.G1Point(
12935282714460277342114665201409752315488661294431207384670060552874438335158,
828501777107482430943914474918568920393042113401745586134081630861783455815
18223166030017443686801675867411730766342079179157572962560303448024540378873,
19137631582171918191178945920059761447327783213698872810575523895658550121438
);
vk.IC[69] = Pairing.G1Point(
3618107037133662130747042116616178538201174837185816495502426503643421771480,
9810304793163420473046485569772617330611338546359940735484483613688208767100
19280775121328851013552281475852868120438320598442383749752027288009797861226,
12490038968016646741084557672265847583317098207883228839969661867319900663938
);
vk.IC[70] = Pairing.G1Point(
11847365271961743112246538565264415572626267982126675499909493380730378601211,
14443215701231430129607739720838768432913949491784252387386453049974072161304
15266937199766366472290794995102829438088329284982774063851360931479775159611,
13689004097893574081491974026588805143385995491553380346109157632864045768875
);
vk.IC[71] = Pairing.G1Point(
19379915436956259538203796966944433337314602904685604687960094736042649548850,
21731282089782595946507974582620161483135781361201699367390693612118206763166
17127411247775554441458092526202757327238548637076996720303283409273103437241,
10596065368731694429534822719625874694561881193931687112659878038042780625711
);
vk.IC[72] = Pairing.G1Point(
8670582306602957602139524430520615232224626571924879767989932788601657839705,
20240028149930178111462288386187661110065256257878495499833413530580948192186
20787730078931630052831457097859925558304786674420765003148675017286328663454,
4766261406083257091458978020157041851129907303478874471741979469684861357286
);
vk.IC[73] = Pairing.G1Point(
19262157674978253529639757124209766280653698409733333105849034575557766075911,
18725662471334144719357179778861522927362841480715456595808944062597734164275
7658787061468359549149413908281153599600426600224344615749437495818897340061,
19492153087231292728213440771478900053083907495283660596623580137450879415100
);
vk.IC[74] = Pairing.G1Point(
11937351694275207805677793096189119640182395483145378829494130992045932932402,
5149272607548704818551955758867493163087655822305808745009971890956465302791
2659875083118001544715497837457590514140432874048404892210543537504037071661,
15950956910927529441229027517507989615611330940703370326686704858035089993977
);
vk.IC[75] = Pairing.G1Point(
11285338166073136340379912263641508759210185975865523694926277700656594983644,
5262459907463066682994761139940562703101782582158732741180946102279509050491
894399989010319765961292956333169984328533949797732202422998120207741013782,
20592958484709720804789976380652330981257235977335874841811437076585969381001
);
vk.IC[76] = Pairing.G1Point(
14994531650932758871093989350546205547229807289967028407117565052239974368698,
14979877544220660228096614568276545551309086537594372178701202957917993083782
20463015942337846506404366208676722951112664440577043884221657224419349265426,
6421219926717668723328940652796576549618654759959257419184397188890959888254
);
vk.IC[77] = Pairing.G1Point(
18931373465063016006121147683817814466552635911668031136571217299991600857607,
20616092188597992274873866725265078081992714549906685698186638821742655966006
9120006372090123874675982389686869282084694298376106330824231921836495845409,
15465095824110179992312247621712212010265469017852248921480310833628600196157
);
vk.IC[78] = Pairing.G1Point(
16223759085688278400243737214298940025086302967245013976512729188869096169439,
8000347989417858696194529542521801256538999085466241451994717760398357025237
20878479603359665116911215284012493370991345348316318380338256326707347229536,
4023483592190020939497447440294056485175982685635791231809180749028140340638
);
vk.IC[79] = Pairing.G1Point(
623443864713442841981849089448604141181773933775966914579776605230250032497,
2379999033595175627263823931205226554474139461391422077483569058966826408345
8597284910335812117769054177782693879835500749625261064784252225098566359260,
1994440743925322001344248550218761689604854304576917328729121903199340521566
);
vk.IC[80] = Pairing.G1Point(
21226775635762391344854052525875686072078791247455126973907668311431835458639,
17027178338091034635381390209421024984033427567419893813056709396110422687589
7226426264671955929078859416556503158659896696978967948922009868308681953328,
5002887692172752997421567561731103949750630834248867239253107045744551201397
);
vk.IC[81] = Pairing.G1Point(
4406531262486869929739147572658540207438262627402337401159835776875728663789,
220385918634829015545468867180066353049242465866175752563162610148191013434
8163659204347449052568944424719246353276866468717985570811227109999390783526,
2423554439374965365549822958553913623548960716554949332971802593317970068208
);
vk.IC[82] = Pairing.G1Point(
9797207478561423315143138309744701334893639486137377802308890232992477513720,
2586950816627416917451641234260253308949163330009005231120465814213477098084
1452926204022804055491637328319845396827870792644285034170433031762060878731,
4515541462700718639411085202358475754243785926272495802232114060028112391704
);
vk.IC[83] = Pairing.G1Point(
15309200365081882408231201087428425254163549204077840425964328690772346033670,
1420653871088013895417137322639493713879329388707684458719358558188436055909
10425052225329871422199244352265298427973414162141911718953442959319724848059,
6000980400205901551254828664011101250210525131160335488511361553516655902490
);
vk.IC[84] = Pairing.G1Point(
5395748123924977912477727326786701019012034070214199738229322577914878760547,
7628200684351438536743882074776075848369438315729954233891518806298773543307
3443318109975964447008176890335731705529322253119216155023763429975158085456,
21667811197670469631232954863890416289566410095141706262390806877014912268732
);
vk.IC[85] = Pairing.G1Point(
352873088429432859429827976930730144447342272143569996853788758955913360951,
13557940319268929136671986360637249073021349865497838232871747533161773674948
11012015869641066138899933574589113596936265876486762743315648962963495824732,
17255543862480532041551281296396472142322479563450509347024960074045362179060
);
vk.IC[86] = Pairing.G1Point(
20390847446322870632012348429141050569716681622655209013227534192933040047286,
16601725957725371315244958994186136321295718657589978469349981368781290668594
15356674987302087761214804729834932350868870076692636651461027280636953611115,
106117314594064361971425646139042972248859283384292253606696261962696377665
);
vk.IC[87] = Pairing.G1Point(
10171244392133486272864208287484656347521017906039416227854049812946279320105,
2630827206962916085171272711240866826225252545527472551573751508980174876091
19394337841622616135946277478438753742631263129950419370472461951284656870437,
18658921822284494457486069764820562705515256999764362724356266226041497733846
);
vk.IC[88] = Pairing.G1Point(
16352531007904215608094300232648495143595817948682623907427871458784950883796,
16993693916466767903607317444132484836266649207098497892404903026424443571716
19875109758700507740317077711867102397002017483813266849042947928472067707358,
19410883671720154448415997196283075716793971043467577411686702678513758313202
);
vk.IC[89] = Pairing.G1Point(
603223061726511291440476385657363196101553796742553306946625645081493057269,
13685063534092212994103810927659411074476571548106779360960364193910339420723
7249713751934247391364446379816208988062392543310362185047382861082689029853,
15650473527588496827417556647724864391410175426412916274036894124836771437372
);
vk.IC[90] = Pairing.G1Point(
20482788618592301804362137780552543066760313879343668976341131329158666578335,
10119970067501433949931252516195299415177432098847426604939527819895209325599
10681784480850187071361190982043613309470613382346001095644109815254178261562,
21463186786189007954888872290310300639849300805770275708108444072996981167758
);
vk.IC[91] = Pairing.G1Point(
2286917222416974411137929857213038335498658734765087792683880526591855212682,
8386238751216926859196104203141517321604366389861372745269174839337885898975
2236471884703014171599710044819634924237606371553705429021763383635629939512,
8591793843410995494533247352157879065992731222902203603345134905701260856709
);
vk.IC[92] = Pairing.G1Point(
15324926480317494716032023374514633735806847765119736427811010194963001692421,
10189091463447429155875471067647784384205623678977633060470897435180531628153
19527584213761472463971374073739673431341601035403206019474791549273088278339,
17023146508154304148121691671727331328909786836109367376841186597185724956581
);
vk.IC[93] = Pairing.G1Point(
19735006490529947214832901256389474816550406461720124117769379813998530963613,
19195008944688234958527214663405723410047176990567036258258453159107662227963
13014073780365318482787844435657644319669081253207330065868995816477880130774,
7445666461778273821119755595191049214876947852015119252135282618289816306885
);
vk.IC[94] = Pairing.G1Point(
3773047036482552425932436266063563132694524670151434200639461194180781141756,
1123197365687992723762170002716778183937672523336845843814102502661718722217
12572056578214122696110853014461970380570794921497586679104888016792687653897,
4719197114816095442488216520733780832840070057650826491567278989945747530502
);
vk.IC[95] = Pairing.G1Point(
14790301436962306445742567184681328955778087717603783082398421514413106175959,
3664262733113936439151537901275565274617302021345114406122049344244233132731
16403748676169345391285149130393817667502440052483475786225216623710841245155,
662053335174191665497628974718863306486637341349159158533932987069502165029
);
vk.IC[96] = Pairing.G1Point(
7495743442452609231032661340728478229362466212014591137686159112363208668777,
10251074652941314300740989711880914433717637456150656228254458047351225953486
17138980304892429856246490017005560669710783569541041650327401681838238378449,
9291405839197739071712757020744264998332332192064696611245414441329433805436
);
vk.IC[97] = Pairing.G1Point(
12991196094489557947450463221167441136828652071786536768418099339232436003142,
2681647771395556588691524032966418546665225547190996070629047477265207346855
);
vk.IC[98] = Pairing.G1Point(
17954690883096938828060234193965975290699093120389901540291552765387478654653,
13949701574189136535120046399140852023755864585250094436654725028812386703504
);
vk.IC[99] = Pairing.G1Point(
6026273861623455551050623210276804173703022085693153508904372896159829096394,
1781686254775648768045384902355242197382883159277642260121721641318534031512
);
vk.IC[100] = Pairing.G1Point(
2883336496924528435374250979286473163150430963168096134363354458270160268956,
6830892926711966851101701577055790982801152188763943324837126760195364273175
6594423345144626172531684508535057814902607027465847698107011859735578724064,
1609167828729266896521507304269994081996148238161423140896831053169366858561
);
}
@@ -706,7 +694,7 @@ contract Verifier {
uint[2] memory a,
uint[2][2] memory b,
uint[2] memory c,
uint[100] memory input
uint[97] memory input
) public view returns (bool r) {
Proof memory proof;
proof.A = Pairing.G1Point(a[0], a[1]);

View File

@@ -5,22 +5,22 @@ import { ethers } from "hardhat";
const exampleCorrectProof = {
a: [
"0x15f4ea8cf806ff321c79c770d70165ef130fccb7231ca7d8396cc2c9acfbfef3",
"0x1cdbaf59a0439d55f19162ee0be5a501f5b55c669a6e1f8d27b75d95ff31ff7a",
"0x0c7141194fa7a5a26dd3834bd9490908286e3c772dcaecca314b74a58a222642",
"0x0494611f581503a05ebd4e8fe17e9c7ec05a0c022081bbe6115a6bf8afcd8c19",
],
b: [
[
"0x2fa5945db4fe42630e540aca0b52fa91550225661ec14b30e9290e8cc4c006ce",
"0x08502cfa4e977b397de55d148efecc366b8f701ae0455c5d158e7224d4b620f5",
"0x01b8ab498c66a313e3320b0a65d94ab35e4be73616a56b33685415e5b312cb57",
"0x071417e130b6f8c45cee4644adbb90ae62c542ec26fa83377b86fadfe737cddc",
],
[
"0x2c2fdaf638978c81b62e186a277ebfd63320ad51237189b6f1127815c9bd69ea",
"0x0199e25994718805934b95572c445cfee0434a3cca864af5268cf45b13923da3",
"0x2d991227175693d047f1e976af6986a58aa313d75677a0e70939b3ddb1912df2",
"0x1326e7a60a10320b5477d3bbc824121d1cbf2381293a09bf82ff5418897d7706",
],
],
c: [
"0x0e69337d51746e684f43cee76467cad16b533e86f3f1f2ce34f356f2948af1cd",
"0x12087004e49b03d21e7dff8a9e500e265b611ad7a4d41b30c738bea0a9604d02",
"0x19912bf5bfee2e72d3cc357fa6b94741ba70bb9e25ca72922cc23cef79adab68",
"0x1dc4caae04391e8d72f288970e195f1d317476a1890977083d8db832c5a6552a",
],
input: [
"0x0000000000000000000000000000000000000000000000000000000000010001",
@@ -119,10 +119,7 @@ const exampleCorrectProof = {
"0x000000000000000000000000000000000000000000000000094a9b9ecf98e97e",
"0x0000000000000000000000000000000000000000000000009e8ce7916ab0fb0b",
"0x000000000000000000000000000000000000000000000000df11ba06d7937a05",
"0x0000000000000000000000000000000000000000000000009e0f750e8490c6e7",
"0x0000000000000000000000000000000000000000000000006fe837ecd0edeee6",
"0x0000000000000000000000000000000000000000000000001b394beb60bbc302",
"0x0000000000000000000000000000000000000000000000009671c5d47b0eeac9",
"0x00000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8",
],
};
@@ -137,6 +134,8 @@ describe("ProofOfBaguette", function () {
const Verifier = await ethers.getContractFactory("Verifier");
const verifier = await Verifier.deploy();
console.log("otherAccount", otherAccount.address);
console.log("owner", owner.address);
await verifier.deployed();
console.log(`RsaSha256Verifier deployed to ${verifier.address}`);

View File

@@ -1,4 +0,0 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"
cd frontend && yarn test && yarn pretty-quick --staged

View File

@@ -4,15 +4,18 @@ include "../circom-bigint/circomlib/circuits/bitify.circom";
// Pkcs1v15 + Sha256
// exp 65537
template RsaVerifyPkcs1v15(w, nb, e_bits, hashLen) {
signal private input hashed[hashLen];
signal input exp[nb];
signal input sign[nb];
signal input modulus[nb];
signal input hashed[hashLen];
// signal input hashed[hashLen];
signal input address;
// sign ** exp mod modulus
component pm = PowerModv2(w, nb, e_bits);
for (var i = 0; i < nb; i++) {
for (var i = 0; i < nb; i++) {
pm.base[i] <== sign[i];
pm.exp[i] <== exp[i];
pm.modulus[i] <== modulus[i];

View File

@@ -174,112 +174,109 @@ contract Verifier {
Pairing.G1Point C;
}
function verifyingKey() internal pure returns (VerifyingKey memory vk) {
vk.alfa1 = Pairing.G1Point(3729759902613158737584667451763372650786205291355292152976183853465281741568,12141818571021242890877607823917100116000365301195201631232395613768357031550);
vk.beta2 = Pairing.G2Point([13136239927450321420640914360716128650905558296901801053963909067006351325961,15158152606360031483103218567077180987695153184296747211468761930524229437793], [5915853304591152121704470374932450228803136872189869158933925105543608134284,15730504375151781974211308982636760944102253372011186196057356583318925951174]);
vk.gamma2 = Pairing.G2Point([12797338069690577808446516054250140565574683028551313720352971263472998915296,20208022052319197615373299594326862684574957199303386410392870171291317902333], [9510633293756122824931415204113148296568119183289757074341033791433603022461,13848313324479398811493408106201633294081396281714935002300111704965563936458]);
vk.delta2 = Pairing.G2Point([11266660693726079180142591384137499556300910320758103405829939699434501821711,159594287871630790884118904172491478917812927426735012058598943236280092311], [707654447428566954854247517328264835096719281326792298268083684720121778002,8298750859219747276182424982921391214869766140065874201121654684399272269872]);
vk.IC = new Pairing.G1Point[](101);
vk.IC[0] = Pairing.G1Point(12559857560137645122326787789388304194293993587871847134890494756734887730889,10540836150835001110742597252815405926154507219744289543571939471050967928634);
vk.IC[1] = Pairing.G1Point(12658759479213995965001162601252332272297201132548324564145207426693527565148,15926932667955163852247956764952692134227328819400283042400340320607443890254);
vk.IC[2] = Pairing.G1Point(9233280406365537882472347091592984624804190391541341875802125235730278068104,15752275523345009693961145001656538975922631355936481038733513488525164988505);
vk.IC[3] = Pairing.G1Point(21808090471321077445113540295542855177220849182527518892630816833213211110034,20291869163317933772360342832189914678441059039982932543926622212723342658188);
vk.IC[4] = Pairing.G1Point(1681702107650924242939590994184892198098972482270962181163847232267596328979,8557342808420608015163852437969816624820953791079871399330708760568396310181);
vk.IC[5] = Pairing.G1Point(15827623790091259354160909641747466114900068219744403763028569679077212891836,16047900434997519505683285569042075748171171960928956378651963933769052004008);
vk.IC[6] = Pairing.G1Point(3871649391107353865241916568957195781306573935564276180600325739625953633118,12287152472530723322413958924122061475582275721639684996612866595376739186461);
vk.IC[7] = Pairing.G1Point(8377106463810514100685825845356383395677386067510355919238576094169118852098,16519583242327369166921875830238594086615876675834667310581495770465471479636);
vk.IC[8] = Pairing.G1Point(17256315274839085951460383359477120338705730100085167250100861170794470772637,3419545622500035714248118081256268218279679027326858006315366263619362796192);
vk.IC[9] = Pairing.G1Point(2593537711230008662417588173639335118988856157197429149412196836978036476028,8538157445492015981727851706347554419011993838886631881562298143422560139294);
vk.IC[10] = Pairing.G1Point(14477989853705726354071915375794761972851384384757175470793846199714539784558,14079929937676588910688882040816627480763684460772620450631541411202100526288);
vk.IC[11] = Pairing.G1Point(4908367875710967666263674799257760084919139359752249693676456246609727636200,5893464791638555403716448258880869242115708620115670515122632157362553235348);
vk.IC[12] = Pairing.G1Point(13892778185221937690942368826832812063265428592570499824044925689738310219507,11461753429365510455202142741940060316305242731650721498478106876233632658526);
vk.IC[13] = Pairing.G1Point(10682134970087788592471914065872857208315069548941037969986310598376249004732,14820627352105689049749766052640486401273173176923086067015878857939901878602);
vk.IC[14] = Pairing.G1Point(2119772198982403375642033192857705104561760415182630621394416503820521967779,16584064631567314702849101035907475762114845357796927805769715977242748798669);
vk.IC[15] = Pairing.G1Point(468001957379087412141235349803020719399535626031098531020103076502018103392,9731847692529878033421967337165792006328738092348010242836175102062482640062);
vk.IC[16] = Pairing.G1Point(5976854251484892985782710636217625469859800520275598568134507262077496024875,20318938400718660685673332319353492933668237552172622506369401471105652570305);
vk.IC[17] = Pairing.G1Point(2270094903612716086771825446969605944149896602655214340134275658651750853226,18941736206768559100014313431303112513260697052358590666556859967328261755214);
vk.IC[18] = Pairing.G1Point(12403449502829396741529042798889605750120840857422439904793273456469011902972,9789585080677337609512672344440040203261250373286666180411916849321683055718);
vk.IC[19] = Pairing.G1Point(5555650403718658868411141337590093679981609731619594603339902419923925020353,20995211797979700202498069667261619609850065140932834745505873830679692372592);
vk.IC[20] = Pairing.G1Point(17021767833623025872249331730705710377933197645216218331094616026361430597609,21329825675699865933034689118999077871032105338144922154354087349843672509618);
vk.IC[21] = Pairing.G1Point(13558385097045770902864137581806672992871490316835972998797790572516541506114,5871014328309830011352420589638285888179320152051847574807457074880403066141);
vk.IC[22] = Pairing.G1Point(16424514168975252965671923544446270352171954723319017563341096325380655713361,10859685700990652881520664344470801502388465114367176442614087797358727366623);
vk.IC[23] = Pairing.G1Point(5959902219511275843292344410423896996238815584716983284173265190637438847590,9866932316233122640717186062840841537434267117425416230387060170619909871391);
vk.IC[24] = Pairing.G1Point(1603092778495767604469588986389709237236493500171281056848466995620519963878,10011230165505730565598760395108917820136844145671763984779303282793398036278);
vk.IC[25] = Pairing.G1Point(19445203104268502694085960460918715911378008052266742102134951305696244481932,18844398769848149633147971476338348359312024666594833610275881857280050865385);
vk.IC[26] = Pairing.G1Point(1911019365654561636810416312706988526422489945391846257575313065585724936388,4328460448192713619136628242809821670510740784986141355766087498495263044440);
vk.IC[27] = Pairing.G1Point(7308114787300765260833382420461011775799539650740129702114708263446235846501,14889543655495891179002456830623939070826438837228365469197541904090781285175);
vk.IC[28] = Pairing.G1Point(21639806011468686866574898817328015655531783301049300937998792525082477069075,275600735308784979838399243296684752583895839757668037687219635002720004115);
vk.IC[29] = Pairing.G1Point(20376116057487924525276918026031289707778502172020349017437375506132045737517,19626268801008909613613890378709127489942986964980481543791425928839613527266);
vk.IC[30] = Pairing.G1Point(13592009692949030004574896973195032080900164083505630280697715821763123369164,5790907420455211091536725334579794280394459354328483860650869413952658359343);
vk.IC[31] = Pairing.G1Point(1628493535906882612797992608275773632370164503966508208193089026140677105123,13482183750711332376169797918240691246931490543951556091861566531310767503698);
vk.IC[32] = Pairing.G1Point(18259742122100526632130511216014839454173201065604812935967390249533409095042,5280386665815101163919341992262974722171658412973558382680082465740734248990);
vk.IC[33] = Pairing.G1Point(6443894117860652890119529010273675480419927094850244013306680814669496732337,11867190429733051312323586554625563629455203502247421507932910643975163792166);
vk.IC[34] = Pairing.G1Point(14881820047534513998342158226070155246972777382419986458007544494090526092189,21439288798623183508506732895142794473218295271986600930799453199416275082474);
vk.IC[35] = Pairing.G1Point(6637337966321834484004997695297890794429484223988098988196214552643297179527,4140984639167223308355869685451740772856320877650177711101971172889089529744);
vk.IC[36] = Pairing.G1Point(14320962606625310252457563082348347637781609365245721306020447239610881132573,4355428558647072618942274565841030436504076288251109685532050786296048117047);
vk.IC[37] = Pairing.G1Point(15366769631851752354143870656040697905161609081800490314563812863474624292450,4662453582922910336824127766333371939884681188295201896157157328891342699708);
vk.IC[38] = Pairing.G1Point(17721891774056849019223190636020057314863547956224207111926175144984438341674,6175192763929100699638150965668647330732349761476747365579610301167554102544);
vk.IC[39] = Pairing.G1Point(12108556731527282476656416278846047917916614928311966513552277657271130491935,12482533820340806038841922711984697523097157464283617092458735682492807434689);
vk.IC[40] = Pairing.G1Point(18886092892941247857051157848944267364349578158082972696311532364504024371981,19812052634637182218047217965035478162772751733537338114674670792578859230909);
vk.IC[41] = Pairing.G1Point(3723725291911652431008916713263794352220829189736925775917633975310219729453,20463189283374303708989740698253633548346610467325597828389662987611493042372);
vk.IC[42] = Pairing.G1Point(13275998810754415624632619359378959965142615339099289942518847164921612336349,955114550629205825342327224716527590631889353685073541925190495009566832234);
vk.IC[43] = Pairing.G1Point(8127814461915026185786513617437682859742298705009503581737619364170030447116,21815819203989494603085212132332810378548897564403488275705674583099354027961);
vk.IC[44] = Pairing.G1Point(7487475274169718977265746701319573156726267921915085570273189839189674445754,5201014436553051239372574945567405202353368683371168424706141117865315558571);
vk.IC[45] = Pairing.G1Point(5924521840605251028718217723025645499739101773307750914599024520374451885719,19428818752090942780423549177176836985207944484638996290285447987180802804701);
vk.IC[46] = Pairing.G1Point(19236678798478568184257218598238736474256699019074034203560137661980839276026,3139750861809295800845306937286058569462063739980203065998438406055759875643);
vk.IC[47] = Pairing.G1Point(2418570367199724236587628998150956846382594750061617948621490926643435241166,3127319167851697820463127295938241108917118724647062263004343701785256270853);
vk.IC[48] = Pairing.G1Point(10909492437751379338188199652628936747937724199500813788942572863509477583010,4833308865394489067757406533756587852982195128697164261612054340912519530021);
vk.IC[49] = Pairing.G1Point(4625826633705154901376833829227093358179171397356950311175901450119871326092,117381311528237548316177716726652775298685292414608571831406223150392712462);
vk.IC[50] = Pairing.G1Point(11341370844202293686695076488062249710145992973415434244350913310878091873666,2679592152865543054483479749342604715904461512197943637959128980231382841200);
vk.IC[51] = Pairing.G1Point(17609783486458107655758975986039577766535204121270405693756192976423973524335,10170503815852453711175195241826129330807849924579505856085876739462624724479);
vk.IC[52] = Pairing.G1Point(13618393604972347384993673349559696624891668790999087327294997970318668323093,8597452137927565226995995089969355848121140362662198798261258182931073349319);
vk.IC[53] = Pairing.G1Point(1369052766836407521905711845908024536009180793492574158258994707081494629126,5291609899883605798795618997799719454716671977081560623022622321418203167294);
vk.IC[54] = Pairing.G1Point(17476288512285277772225244608787933636200743838838180917949789071831401016014,6832015928227769155216978404915572773960282476794917046601166303693051471745);
vk.IC[55] = Pairing.G1Point(21058356558830289350565492498601960315583764018539526572244572347296204478038,17800635316802079857985933967175756927585005558861771454945139618335207360711);
vk.IC[56] = Pairing.G1Point(18887475735208246902422084857021154587515200986100034744871684624373946415913,3650665502072512890897429420208767872268785767071942030996307571559141487708);
vk.IC[57] = Pairing.G1Point(15304064583441452978954055182325447214811873398750472936801929759372769521146,17092533988014354887696753785030909830699886830432410934834150980380514405170);
vk.IC[58] = Pairing.G1Point(16354407224230673074519339586655638610503081836647667623814986520923128018304,14634681859267375125892101837735696597319439744437447535401719559097971351455);
vk.IC[59] = Pairing.G1Point(12585902321015589710750473831345538579594885660392175544266943980185107256475,16846205462256028916608587497640916256009966086610491220765532912482788390078);
vk.IC[60] = Pairing.G1Point(2836547022425044839446597422595984953559741793057146651032784897916670862069,14680012359072743282778864393068598563840082316045178716989359524680577165475);
vk.IC[61] = Pairing.G1Point(18393769942279282096214366696214413150699038871158688647211565624514527849392,7981636551400248764661025095601068852514128948613622986065038662691862387376);
vk.IC[62] = Pairing.G1Point(10161078628644772598592962445722855578830661774777967820495819026431002518978,4370368967094023783400667941476469380409134561441586711173238550029390078353);
vk.IC[63] = Pairing.G1Point(15991382879423061578448912025088146061472641152821240476698212938417185043590,18528810281409510059333307827296819647613027561293767272468138362600263910549);
vk.IC[64] = Pairing.G1Point(13488558318757673080630118417722258367210955494845688715526714694383764632691,10768365596290933051792097181200388080820860152849956405537111876553748533095);
vk.IC[65] = Pairing.G1Point(6294570834404379157120404560626050945001702167718369151449240697461399207765,15262692464738031660590757261876215632944396848801632595263420988013425649164);
vk.IC[66] = Pairing.G1Point(5254670366770595355569466561966025019365199127587454188257730813806778861067,5639616150685136047185423867058269716038127649009044566452559645581371798232);
vk.IC[67] = Pairing.G1Point(2400100796099387260745572593392152325140535099144522997314085534858057202680,10533470923933987502111425539154459595857278505795487806706476804277800520038);
vk.IC[68] = Pairing.G1Point(12935282714460277342114665201409752315488661294431207384670060552874438335158,828501777107482430943914474918568920393042113401745586134081630861783455815);
vk.IC[69] = Pairing.G1Point(3618107037133662130747042116616178538201174837185816495502426503643421771480,9810304793163420473046485569772617330611338546359940735484483613688208767100);
vk.IC[70] = Pairing.G1Point(11847365271961743112246538565264415572626267982126675499909493380730378601211,14443215701231430129607739720838768432913949491784252387386453049974072161304);
vk.IC[71] = Pairing.G1Point(19379915436956259538203796966944433337314602904685604687960094736042649548850,21731282089782595946507974582620161483135781361201699367390693612118206763166);
vk.IC[72] = Pairing.G1Point(8670582306602957602139524430520615232224626571924879767989932788601657839705,20240028149930178111462288386187661110065256257878495499833413530580948192186);
vk.IC[73] = Pairing.G1Point(19262157674978253529639757124209766280653698409733333105849034575557766075911,18725662471334144719357179778861522927362841480715456595808944062597734164275);
vk.IC[74] = Pairing.G1Point(11937351694275207805677793096189119640182395483145378829494130992045932932402,5149272607548704818551955758867493163087655822305808745009971890956465302791);
vk.IC[75] = Pairing.G1Point(11285338166073136340379912263641508759210185975865523694926277700656594983644,5262459907463066682994761139940562703101782582158732741180946102279509050491);
vk.IC[76] = Pairing.G1Point(14994531650932758871093989350546205547229807289967028407117565052239974368698,14979877544220660228096614568276545551309086537594372178701202957917993083782);
vk.IC[77] = Pairing.G1Point(18931373465063016006121147683817814466552635911668031136571217299991600857607,20616092188597992274873866725265078081992714549906685698186638821742655966006);
vk.IC[78] = Pairing.G1Point(16223759085688278400243737214298940025086302967245013976512729188869096169439,8000347989417858696194529542521801256538999085466241451994717760398357025237);
vk.IC[79] = Pairing.G1Point(623443864713442841981849089448604141181773933775966914579776605230250032497,2379999033595175627263823931205226554474139461391422077483569058966826408345);
vk.IC[80] = Pairing.G1Point(21226775635762391344854052525875686072078791247455126973907668311431835458639,17027178338091034635381390209421024984033427567419893813056709396110422687589);
vk.IC[81] = Pairing.G1Point(4406531262486869929739147572658540207438262627402337401159835776875728663789,220385918634829015545468867180066353049242465866175752563162610148191013434);
vk.IC[82] = Pairing.G1Point(9797207478561423315143138309744701334893639486137377802308890232992477513720,2586950816627416917451641234260253308949163330009005231120465814213477098084);
vk.IC[83] = Pairing.G1Point(15309200365081882408231201087428425254163549204077840425964328690772346033670,1420653871088013895417137322639493713879329388707684458719358558188436055909);
vk.IC[84] = Pairing.G1Point(5395748123924977912477727326786701019012034070214199738229322577914878760547,7628200684351438536743882074776075848369438315729954233891518806298773543307);
vk.IC[85] = Pairing.G1Point(352873088429432859429827976930730144447342272143569996853788758955913360951,13557940319268929136671986360637249073021349865497838232871747533161773674948);
vk.IC[86] = Pairing.G1Point(20390847446322870632012348429141050569716681622655209013227534192933040047286,16601725957725371315244958994186136321295718657589978469349981368781290668594);
vk.IC[87] = Pairing.G1Point(10171244392133486272864208287484656347521017906039416227854049812946279320105,2630827206962916085171272711240866826225252545527472551573751508980174876091);
vk.IC[88] = Pairing.G1Point(16352531007904215608094300232648495143595817948682623907427871458784950883796,16993693916466767903607317444132484836266649207098497892404903026424443571716);
vk.IC[89] = Pairing.G1Point(603223061726511291440476385657363196101553796742553306946625645081493057269,13685063534092212994103810927659411074476571548106779360960364193910339420723);
vk.IC[90] = Pairing.G1Point(20482788618592301804362137780552543066760313879343668976341131329158666578335,10119970067501433949931252516195299415177432098847426604939527819895209325599);
vk.IC[91] = Pairing.G1Point(2286917222416974411137929857213038335498658734765087792683880526591855212682,8386238751216926859196104203141517321604366389861372745269174839337885898975);
vk.IC[92] = Pairing.G1Point(15324926480317494716032023374514633735806847765119736427811010194963001692421,10189091463447429155875471067647784384205623678977633060470897435180531628153);
vk.IC[93] = Pairing.G1Point(19735006490529947214832901256389474816550406461720124117769379813998530963613,19195008944688234958527214663405723410047176990567036258258453159107662227963);
vk.IC[94] = Pairing.G1Point(3773047036482552425932436266063563132694524670151434200639461194180781141756,1123197365687992723762170002716778183937672523336845843814102502661718722217);
vk.IC[95] = Pairing.G1Point(14790301436962306445742567184681328955778087717603783082398421514413106175959,3664262733113936439151537901275565274617302021345114406122049344244233132731);
vk.IC[96] = Pairing.G1Point(7495743442452609231032661340728478229362466212014591137686159112363208668777,10251074652941314300740989711880914433717637456150656228254458047351225953486);
vk.IC[97] = Pairing.G1Point(12991196094489557947450463221167441136828652071786536768418099339232436003142,2681647771395556588691524032966418546665225547190996070629047477265207346855);
vk.IC[98] = Pairing.G1Point(17954690883096938828060234193965975290699093120389901540291552765387478654653,13949701574189136535120046399140852023755864585250094436654725028812386703504);
vk.IC[99] = Pairing.G1Point(6026273861623455551050623210276804173703022085693153508904372896159829096394,1781686254775648768045384902355242197382883159277642260121721641318534031512);
vk.IC[100] = Pairing.G1Point(2883336496924528435374250979286473163150430963168096134363354458270160268956,6830892926711966851101701577055790982801152188763943324837126760195364273175);
vk.alfa1 = Pairing.G1Point(10315822838385842923250715267205960664501004234546269981482666228112421301117,15862104134162712938961972115840401024611162066277059180121297134493484755175);
vk.beta2 = Pairing.G2Point([16075180890105261855785821136620370206478347851900063884177434889569117892728,8999056094627160946941478319055654711627346279360998804980685260524215980818], [19289495299100654012777091634160205804317123853627581171870946780589078726579,7456059757481809576237403196787593289176357510985305159986791878645463459018]);
vk.gamma2 = Pairing.G2Point([13277046752313471688255968585488007150536152283305619319249966594057859924122,1540853480038841992778609939618416755409643379500817690706199269912373494426], [16195521367762890658515156444872542211791369361419964244676840991686196711549,1050887057282964430320854978389799561269435789211688186694933498698817462348]);
vk.delta2 = Pairing.G2Point([1662324983131052880488960499832632400354165691268048997945168703365805496815,13662480426324514348188284803730524793155591206442565309405901461008907655891], [15309139646391078466810181691750047695011680065613748420932752259577867509989,11930459767156654479077330634914217815349186680049037714663239653430389142355]);
vk.IC = new Pairing.G1Point[](98);
vk.IC[0] = Pairing.G1Point(1386156676430625766660721327519749365352708612284380407007672518761930314522,5895979564403280714499324620374725835931311522554339174840912272198002116986);
vk.IC[1] = Pairing.G1Point(174429888906575054944644195492533447677698808764744275768027474986091262795,19449982332092198717836917024306177058078885300180691030479512833448493420426);
vk.IC[2] = Pairing.G1Point(4940702259943724495655268600320625166138928124318746483111841772203931372898,21300085871907717167823229271273029592921718070696716598133485043371262113949);
vk.IC[3] = Pairing.G1Point(3970523900986966741454839663423325691036075995128843350657752858925317431017,539367542421702393681320993411652316058906805217114528699814649881160035531);
vk.IC[4] = Pairing.G1Point(14541643345260800436706406996787362480110194544530475630171161698573516679920,4783331606526584048777066954770982727121131692786538183643102121348439890988);
vk.IC[5] = Pairing.G1Point(1075474176916105569002317826203973479107209650628777996236377287648466962810,3232058447014508876051800237288950058552252367302714558767792524271099812787);
vk.IC[6] = Pairing.G1Point(2175834186336017845410894889748902248994354180137067840445873611529706706903,3085466328487208450052471722737790746659231597949473931302689657743879290415);
vk.IC[7] = Pairing.G1Point(8148131669390700325085948796744014848738121345402965689215540127469598163871,1459937161639492891103296404430347140474089613091612181507607941234824828188);
vk.IC[8] = Pairing.G1Point(19724824811793942534870544715526571102183990820436521365546859310276823467490,9742652052240076179420483064624381054258687108701843582619502567192627148901);
vk.IC[9] = Pairing.G1Point(7516612085018412567965384915697804249943140639755254403509406043424863699565,13609389560576142128414010599204241098833066563137827296644138017315963061370);
vk.IC[10] = Pairing.G1Point(5396430636568898715071511450196374579073195772247524680870475881840606697294,14213494996959147888574066917872324178671816323712570898472101313990748811357);
vk.IC[11] = Pairing.G1Point(19580033029544330967448763121940485539766629034681462072482784578056476122075,4714739906270684478426827011422485533664415859906533725309733675967596336877);
vk.IC[12] = Pairing.G1Point(6962906881391363529838287799824200955017681097924230628024324423216037180574,2533319035586796547972968495763128583304226889898155603872302902791149215692);
vk.IC[13] = Pairing.G1Point(17536765943492961589593406025711160790038974470090381500798551989642376205429,9210978437865389852687238356987463161070296894056858501516143895498895127801);
vk.IC[14] = Pairing.G1Point(12879519606836370836828899572118098335153146603118228135363495427283082247364,5758811831466689143387239476857856589657131463745229429624027029582131264569);
vk.IC[15] = Pairing.G1Point(15735427660464208356818266871402603071222212568728528929189278663470048519151,18580418584929980580683876981646262205040063567947776691626290499751484842387);
vk.IC[16] = Pairing.G1Point(16672772973559614591916036849008777420093824711538705835090610899870382314653,8188923103596302037595788157162335200890030912840313545299503026362065475579);
vk.IC[17] = Pairing.G1Point(3482245003117717783432002198738459699873717589098511868698895399302488358634,19652796079067654964753702546413435895310867146965033514795952134870224747298);
vk.IC[18] = Pairing.G1Point(9382323532935595934689116629634156851330374962350295158341742092304036335698,291925329935370804008844005614341459550809875961285224043109628983162794811);
vk.IC[19] = Pairing.G1Point(6912981219684193325373956580555507527124688523637412271688548642710145407324,17719276416320101991178800934805150313358144003174217318902641925424693400899);
vk.IC[20] = Pairing.G1Point(19266481578774074906374076433526482559085483237651754027979037618702501848415,4864429104782323549403921207719837137283226783050574715140728078210440815125);
vk.IC[21] = Pairing.G1Point(14887253562463317132282666699497653091722231007983834420246533880775604202046,20039483939999528919395933890813583839636534363798896837987674667077445002909);
vk.IC[22] = Pairing.G1Point(12508816416091085449368756125649842984927777064057218811145926432353321314907,1029754988093911081347891722709482405445904745087304835816390911520486811458);
vk.IC[23] = Pairing.G1Point(2005084167017357346303758528212973722634282057561071593677784384715301762428,5542975189718331938312935936918047907052872873683385011086540332580563138005);
vk.IC[24] = Pairing.G1Point(574144171155849827838725501058774562989672318997217369030672907489094325392,19011911734470524036198981595964567011458551418797935766148211921982472474741);
vk.IC[25] = Pairing.G1Point(3608292935417210943680485162182048774922203693936402328868647729908340527540,19717618713526912033181757546212053048433914196349054761157402425200075671138);
vk.IC[26] = Pairing.G1Point(16163461701324146513568429102887561273066181667891291346998415488778690716805,18662884437485380367184050862289985597601843562942757559581184607687570812550);
vk.IC[27] = Pairing.G1Point(14994566112480375832970198317517069193388049320082571292718031142344097962255,19889898631674322802597671404075063684983733435916365516196892134719573840178);
vk.IC[28] = Pairing.G1Point(736585196548664503732509698047552122038996165424116313982190787863322931826,21019115756986596749277994511714050838771464310078186895547975840389783871138);
vk.IC[29] = Pairing.G1Point(10974717193636000167380652442472909714934064969981711063607439335825119243469,8613997549030193852101564196304783271636045228187714896154399752466639047526);
vk.IC[30] = Pairing.G1Point(15515808334102622843044245600125992020384745623672581785591253976335954691668,7056069273753880907078615715739794771659566915279338309055469505277556660014);
vk.IC[31] = Pairing.G1Point(2026995926214775331423673216302815034683334238220808093286826947311593039794,14548613909100523536915943149130374917224265797462738040649328509010392696205);
vk.IC[32] = Pairing.G1Point(7347999393948250440988207859344770709243120088530457172274758503515633459971,20430173716253509790919340588694849367500686486837868170440361371544940846857);
vk.IC[33] = Pairing.G1Point(8726020462171177960911520449113858654607194259478482096783149613868723406121,21109992085518709586188037780336334901483462217597999928530659225385204929051);
vk.IC[34] = Pairing.G1Point(18759571018089650279499799472273628763502429845355459478077716291216286451672,3061120585842126900115563926687483611216432798358081316062265175950975462706);
vk.IC[35] = Pairing.G1Point(10081168513618588217797803738246975722763428651743613956930591217530005755308,5223516720621635076713966633725260161024836955550260381664330387742167168437);
vk.IC[36] = Pairing.G1Point(18623257401997776504806348144872345347118220689716572995578481344526381397027,12738216514382521354381755763633144591976312475306345247101617502260715984300);
vk.IC[37] = Pairing.G1Point(12613017704259258984783441890484052267798710998400588809375095368441312203177,13154863759245282454936298393415245536123605264867594333724866438497549024170);
vk.IC[38] = Pairing.G1Point(12709290832361335753305864258009255307237010774441288781285781702671213114765,18349056269309660723886180747727132860619888970885172282384405779461541989577);
vk.IC[39] = Pairing.G1Point(17447538751610051385783414732492525667137731039071585637687353043409911312358,8705755619226884560464931039313987689788884448049673193589169040745836183092);
vk.IC[40] = Pairing.G1Point(19903040530418130172724072033663794977209466570949249258688233439835382961705,6538405654339479654547899704613913798731714798978111499534963418797636778536);
vk.IC[41] = Pairing.G1Point(20190111036656612665976758535510402352901099971723589132364459219237140650804,11657276287181136248459738132957662348970456139200020118947243073509600583324);
vk.IC[42] = Pairing.G1Point(5496409758069382276348459990808117794030958339567169207650726751174822075842,15398624126895562271141819515160389374772951137601086902126706157329463089406);
vk.IC[43] = Pairing.G1Point(8151283523500801176883094078648061648579761104703136856876223887187491028764,19699576961944733283219819902822060278574556991476755360120251735226112577042);
vk.IC[44] = Pairing.G1Point(8533704954946914002953946046744749163319734782733169970628585647060058140849,5141897905579649570194799195601184296177984332792452257361194331009931371352);
vk.IC[45] = Pairing.G1Point(17671515716110934550447360224709626247970759130056552979213535489731669688446,1690274318568461080087753254251786392263489028973782647985819430312525336960);
vk.IC[46] = Pairing.G1Point(8478603008571616038378551513375406458692917186348304648150064228029895779958,20116202548019188938994896483571557179861045004954664127312673627929525959276);
vk.IC[47] = Pairing.G1Point(6432981094696267073379852248786055231176785645227335199813013566498759785384,14983269753830770996227222283167931949083546323507335724535651513681318189079);
vk.IC[48] = Pairing.G1Point(9455507927501800915564496121759986854117031410770932562840240404182614698028,5285955876415145827392451089524707681594893418176652281578834051447348307955);
vk.IC[49] = Pairing.G1Point(20714130644236382051591460208572376019763347755510239498689871430769906890685,18654357373482716030683276562311098400463035289899424564068036000769595694407);
vk.IC[50] = Pairing.G1Point(16832181157818881181838165095351716004273729658170734148090869509398951353661,13189116767733698206617444976497238961678787103102046696228609244708542732492);
vk.IC[51] = Pairing.G1Point(8076452889145567190300790005312690920477320514039067078236315139521658556063,890666235559929062329759673773557091924363971646065907430303231638612724999);
vk.IC[52] = Pairing.G1Point(8358804823290743257390543678494170562797974621132658774911399394185092545208,20752753364958656771514688460585465011660082299985374260145811301437669043257);
vk.IC[53] = Pairing.G1Point(431866034143667612182321520413242716471591638473939166320447500693829929824,13272258147627911088702851414812922302256821216107539459911504860535837022135);
vk.IC[54] = Pairing.G1Point(9173989288857204293038005754886211674464077439638776033201321349164196474616,9129103250645493108241162941947967350521408326116971248120638209361233930192);
vk.IC[55] = Pairing.G1Point(14370826205941952851735365552127894021162133888463493633318496244143095511040,1651163962095785808536509256199563475789494126010520314335456260358111804976);
vk.IC[56] = Pairing.G1Point(12951186966437270849914379924115857496875963456775592910919046812882705115830,16465255691963080311345885861560112122320977883916615486276340659371056324863);
vk.IC[57] = Pairing.G1Point(3283421748134600628821861152296048618970465417807515877620876335991742901315,321535500846302427006164553338203893489982138176792264731766129421299212286);
vk.IC[58] = Pairing.G1Point(16855387142616687237143755251732902794908605199755471474196892846417162793353,6761300099779160392813801467707189572028647758855510242027256178070516219805);
vk.IC[59] = Pairing.G1Point(15257833521992801874267530841829063197963470852447328292085028034633128521860,2677084778946138423753273144604322607349537157189860183844829718089957601689);
vk.IC[60] = Pairing.G1Point(12162232048810887816633786290513237732818779568650791939302917523152130208608,21333612874220018324963566977200031875031579203366186578790260941880595484190);
vk.IC[61] = Pairing.G1Point(3391460336279928586355347127909680776960941614168264915045172621785079485704,12982837279076354859831048030572798151280294385261501888099056857982051493723);
vk.IC[62] = Pairing.G1Point(15657943681489382687201670166559198773174544761807418817146753024083872167923,18015415673040996199684319960118318566240959606331772073882264856214095914848);
vk.IC[63] = Pairing.G1Point(8764939161163047254075099233130913745881634109004943576089798043960197509190,8107199767148537717254346850921330983657137386989043360271851202867981408937);
vk.IC[64] = Pairing.G1Point(10021072243678930222406582984936927324952592680308844821701808488346598011536,18628636656506555862260913227929463140408813957986050071538961255104712647438);
vk.IC[65] = Pairing.G1Point(17321445808461122141320330203945732558478795973243070098294285860455518065400,16836801211792107863813977849708073042443024384474661086287213089562566255496);
vk.IC[66] = Pairing.G1Point(6861883922532910695796926319034380512803020100037212756359821156112905138580,4119726663248857193393003082612555725457402139141352624262468551517744622172);
vk.IC[67] = Pairing.G1Point(20779722207278452530034931086404649516930804730094114642064752236829364601447,923216039876130666302755287286364480134410103154729240965964497426983067027);
vk.IC[68] = Pairing.G1Point(18223166030017443686801675867411730766342079179157572962560303448024540378873,19137631582171918191178945920059761447327783213698872810575523895658550121438);
vk.IC[69] = Pairing.G1Point(19280775121328851013552281475852868120438320598442383749752027288009797861226,12490038968016646741084557672265847583317098207883228839969661867319900663938);
vk.IC[70] = Pairing.G1Point(15266937199766366472290794995102829438088329284982774063851360931479775159611,13689004097893574081491974026588805143385995491553380346109157632864045768875);
vk.IC[71] = Pairing.G1Point(17127411247775554441458092526202757327238548637076996720303283409273103437241,10596065368731694429534822719625874694561881193931687112659878038042780625711);
vk.IC[72] = Pairing.G1Point(20787730078931630052831457097859925558304786674420765003148675017286328663454,4766261406083257091458978020157041851129907303478874471741979469684861357286);
vk.IC[73] = Pairing.G1Point(7658787061468359549149413908281153599600426600224344615749437495818897340061,19492153087231292728213440771478900053083907495283660596623580137450879415100);
vk.IC[74] = Pairing.G1Point(2659875083118001544715497837457590514140432874048404892210543537504037071661,15950956910927529441229027517507989615611330940703370326686704858035089993977);
vk.IC[75] = Pairing.G1Point(894399989010319765961292956333169984328533949797732202422998120207741013782,20592958484709720804789976380652330981257235977335874841811437076585969381001);
vk.IC[76] = Pairing.G1Point(20463015942337846506404366208676722951112664440577043884221657224419349265426,6421219926717668723328940652796576549618654759959257419184397188890959888254);
vk.IC[77] = Pairing.G1Point(9120006372090123874675982389686869282084694298376106330824231921836495845409,15465095824110179992312247621712212010265469017852248921480310833628600196157);
vk.IC[78] = Pairing.G1Point(20878479603359665116911215284012493370991345348316318380338256326707347229536,4023483592190020939497447440294056485175982685635791231809180749028140340638);
vk.IC[79] = Pairing.G1Point(8597284910335812117769054177782693879835500749625261064784252225098566359260,1994440743925322001344248550218761689604854304576917328729121903199340521566);
vk.IC[80] = Pairing.G1Point(7226426264671955929078859416556503158659896696978967948922009868308681953328,5002887692172752997421567561731103949750630834248867239253107045744551201397);
vk.IC[81] = Pairing.G1Point(8163659204347449052568944424719246353276866468717985570811227109999390783526,2423554439374965365549822958553913623548960716554949332971802593317970068208);
vk.IC[82] = Pairing.G1Point(1452926204022804055491637328319845396827870792644285034170433031762060878731,4515541462700718639411085202358475754243785926272495802232114060028112391704);
vk.IC[83] = Pairing.G1Point(10425052225329871422199244352265298427973414162141911718953442959319724848059,6000980400205901551254828664011101250210525131160335488511361553516655902490);
vk.IC[84] = Pairing.G1Point(3443318109975964447008176890335731705529322253119216155023763429975158085456,21667811197670469631232954863890416289566410095141706262390806877014912268732);
vk.IC[85] = Pairing.G1Point(11012015869641066138899933574589113596936265876486762743315648962963495824732,17255543862480532041551281296396472142322479563450509347024960074045362179060);
vk.IC[86] = Pairing.G1Point(15356674987302087761214804729834932350868870076692636651461027280636953611115,106117314594064361971425646139042972248859283384292253606696261962696377665);
vk.IC[87] = Pairing.G1Point(19394337841622616135946277478438753742631263129950419370472461951284656870437,18658921822284494457486069764820562705515256999764362724356266226041497733846);
vk.IC[88] = Pairing.G1Point(19875109758700507740317077711867102397002017483813266849042947928472067707358,19410883671720154448415997196283075716793971043467577411686702678513758313202);
vk.IC[89] = Pairing.G1Point(7249713751934247391364446379816208988062392543310362185047382861082689029853,15650473527588496827417556647724864391410175426412916274036894124836771437372);
vk.IC[90] = Pairing.G1Point(10681784480850187071361190982043613309470613382346001095644109815254178261562,21463186786189007954888872290310300639849300805770275708108444072996981167758);
vk.IC[91] = Pairing.G1Point(2236471884703014171599710044819634924237606371553705429021763383635629939512,8591793843410995494533247352157879065992731222902203603345134905701260856709);
vk.IC[92] = Pairing.G1Point(19527584213761472463971374073739673431341601035403206019474791549273088278339,17023146508154304148121691671727331328909786836109367376841186597185724956581);
vk.IC[93] = Pairing.G1Point(13014073780365318482787844435657644319669081253207330065868995816477880130774,7445666461778273821119755595191049214876947852015119252135282618289816306885);
vk.IC[94] = Pairing.G1Point(12572056578214122696110853014461970380570794921497586679104888016792687653897,4719197114816095442488216520733780832840070057650826491567278989945747530502);
vk.IC[95] = Pairing.G1Point(16403748676169345391285149130393817667502440052483475786225216623710841245155,662053335174191665497628974718863306486637341349159158533932987069502165029);
vk.IC[96] = Pairing.G1Point(17138980304892429856246490017005560669710783569541041650327401681838238378449,9291405839197739071712757020744264998332332192064696611245414441329433805436);
vk.IC[97] = Pairing.G1Point(6594423345144626172531684508535057814902607027465847698107011859735578724064,1609167828729266896521507304269994081996148238161423140896831053169366858561);
}
function verify(uint[] memory input, Proof memory proof) internal view returns (uint) {
@@ -305,7 +302,7 @@ contract Verifier {
uint[2] memory a,
uint[2][2] memory b,
uint[2] memory c,
uint[100] memory input
uint[97] memory input
) public view returns (bool r) {
Proof memory proof;
proof.A = Pairing.G1Point(a[0], a[1]);

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@
},
"scripts": {
"test": "mocha --max-old-space-size=16000 -t 10000s",
"test:sha1": "npx ts-mocha --max-old-space-size=16000 -t 10000s test/rsaSha1Verify.ts",
"test:sha1": "npx ts-mocha --max-old-space-size=16000 -t 10000s test/rsaSha1Verify.ts",
"circuit:compile": "npx circom test/circuits/rsa_verify.circom -o bin/rsa_verify.json",
"circuit:setup": "npx snarkjs setup -c bin/rsa_verify.json --pk groth16_zkey_prove.json --vk groth16_zkey_verify.json --protocol groth",
"circuit:witness": "npx snarkjs calculatewitness -c bin/rsa_verify.json -i inputs/input.json -w witness/witness.json",

View File

@@ -31,19 +31,29 @@ const main = () => {
const hashed = bigInt(
"68047946378308475289293787357717828552636626916964367437434418622917273241319"
);
const address = bigInt("70997970C51812dc3A010C7d01b50e0d17dc79C8", 16);
console.log("address", address.toString(10));
// hardhat otherAccount: 0x70997970C51812dc3A010C7d01b50e0d17dc79C8
// hardhat owner: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266
const input = Object.assign(
{},
splitToWords(sign, 64, 32, "sign"),
splitToWords(exp, 64, 32, "exp"),
splitToWords(modulus, 64, 32, "modulus"),
splitToWords(hashed, 64, 4, "hashed")
// splitToWords(address, 64, 4, "address")
);
// input["address[0]"] = address.toString(10).padStart(64, "0");
input["address"] = address.toString(10);
console.log("input:", input);
console.log("Calculating witness...");
const witness = circuit.calculateWitness(input);
// CAUTION: this is loading old hardcoded ones
console.log("Loading vk proof...");
const vkProof = JSON.parse(
fs.readFileSync(`./vkeys/${circuitName}.vk_proof`, "utf8")

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,6 @@
"license": "MIT",
"scripts": {
"sign": "yarn ts-node scripts/generateSignature $@",
"prepare": "husky install",
"test:circuit": "yarn tsc --outDir testCircuit"
},
"devDependencies": {
@@ -17,7 +16,6 @@
"big-integer": "^1.6.51",
"circom_tester": "^0.0.19",
"circomlib": "^2.0.5",
"husky": "^8.0.0",
"mocha": "^10.2.0",
"node-forge": "^1.3.1",
"node-signpdf": "^1.5.0",

View File

@@ -552,11 +552,6 @@ hoopy@^0.1.4:
resolved "https://registry.yarnpkg.com/hoopy/-/hoopy-0.1.4.tgz#609207d661100033a9a9402ad3dea677381c1b1d"
integrity sha512-HRcs+2mr52W0K+x8RzcLzuPPmVIKMSv97RGHy0Ea9y/mpcaK+xTrjICA04KAHi4GRzxliNqNJEFYWHghy3rSfQ==
husky@^8.0.0:
version "8.0.2"
resolved "https://registry.yarnpkg.com/husky/-/husky-8.0.2.tgz#5816a60db02650f1f22c8b69b928fd6bcd77a236"
integrity sha512-Tkv80jtvbnkK3mYWxPZePGFpQ/tT3HNSs/sasF9P2YfkMezDl3ON37YN6jUUI4eTg5LcyVynlb6r4eyvOmspvg==
inflight@^1.0.4:
version "1.0.6"
resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"