diff --git a/circuits/poseidon.circom b/circuits/poseidon.circom index b90f886..dad6806 100644 --- a/circuits/poseidon.circom +++ b/circuits/poseidon.circom @@ -41,119 +41,120 @@ template Mix(t, M) { template Poseidon(nInputs, t, nRoundsF, nRoundsP) { var C = [ - 1354025385229961744769229343273868518314335569873439558835166239576773343708, - 14378844218625331047742339561309620904043097700980163591187076404481144585564, - 19370813333785034372560258124535206525278124675105547990205946542330734467847, - 19339919977375282793227987561727366424934767905100680591050582380667086628202, - 8422275364316831706903446151602338206948363474119622730702497535467809432414, - 7433947928146794739292515659214608949964639549664630885486968546133071892830, - 20753350951496713264979200428833003140825588922450200809553577914404143341040, - 21437018888080559864996889038552602698883513894753499324572098534369350747880, - 6815447461573214810645016226370803316854141900901895816072622961504507953749, - 11746901014017411226283657362310634990885933032228701131899561585228216986615, - 13428722985713722660261823704226749286675766756093697029778643398137361221114, - 10894749142018158588533110743373157663019829222177356873395009880383491602356, - 13720066349319517776784660327982201297420012713976744204318378121767771862484, - 4665971664531891307640113589671067488692829783046247264698659233443166028412, - 5364541878673041196937884015923978656299860601766012213141306792903990539664, - 1747411112078838632103476037026417344408680910500491241306123941341644055714, - 1835035066071759522152578007305026433897204459772540871869487151042238374039, - 21055637025200882290106914253232617255445210101773537879323245961051751183138, - 19215142378199333594641095299020637309879189505235993967243075316794127016728, - 5264915734761449905856538116909638235466879053604660991987579054616980096262, - 10045917614023673044141331581538797960977704806582630277050701175565262856382, - 7789533631025313780520004400945166898631872921910178131342071973345076732672, - 19972498130123740615813398456152565371201412297339860820234719562997192378694, - 14216077977931104808041453382683965630500368477063603536695472115075869912121, - 2555981910568472028679439033700033287358333564454149464965229699417319912931, - 11735111941739477522347883122573591136355121750109794306409399099068977659499, - 16957890207070910233505303498878270130436461648242792271152604513138986611609, - 358520143235124107055243451716507147499373646513864848163778795927281509793, - 6389190271835493841487214043252929516390267871881261173336690351147926750010, - 12939611907106878137030264379019786496625916664142697309441198804098015086205, - 456696638239570875759108333278090964360604015255503302016190396687826618227, - 20569764931577491771523222445135914903999292206008007769649255123342890660989, - 3341317247281280728261320226215152668194921091152837358683334635401182164637, - 11821224368797169892747612081573458772211068320533296007836648033607696236615, - 2185176387193659864764608304330502180888068591409305411859725028056771843945, - 17161758741114551704796078639849789476380746803787101178795737276111464575519, - 11889888355183092530573415929875444766831739308191993115663429638848547668798, - 19503084309842095729857399025417533485089330284851492085544757107759925099089, - 20280152151768521735424910115623976684589382048161526796204268413029416266256, - 17607351334578006856860845064970248988416315904757246948622629528628773644114, - 20769468546336672951384440602623018830493119282829911435465737079851020547355, - 1546429204704408801701093430086546742691081844046642451323347737810191940866, - 11200569249561318620053458114013886527484999499632128671282997438827107108229, - 20198213289062010915914579158889968647687156198219713083074315178786791524034, - 12911209060630719799682705729835581341676468319742562559036843993017369855977, - 18925188847138989248835676768641716482476141553833902070405850166412140133887, - 20376466983584239909415025821007315251422803039634139484663713769887712746966, - 5250536177612235431141386983455571232984126980327432803966957255414592397060, - 344847263093423485167610155050688875010578621416939967999896518937961396680, - 19870333728541576497318505013425518731999037041271340888970559590767369935385, - 20604512495859902382577228682521142736989261702707317046150335692410020156250, - 18293964088694556689667514948280720605277532123251572448395882397578643211622, - 21211253784206079547762943120791531326787601501123474236198383850531142559075, - 17247914781304154940895909185506123510423535554247372833321968000513811053190, - 16432189025237084563810000088202867449333673799705533820685782829379758927490, - 7204783063529242442830743239980168374343946353418800547956909848044774363774, - 2108268032972510691814120801033692084861951866306906253604497017452204030001, - 13483247063999686990721729188827693318708500027762095503921527692630827328070, - 18194665574704709729868916970580318177272365766028499528691737819467051567534, - 9275639092314761435364537152118796424056864859607619908791935597976913759411, - 12700165678727983685032332532042155014245610964583614362270316386368455898604, - 19127554193875137546212792134421555344854604853165878912238751527694270097310, - 16817455471920423226570476063669349525676437756352144502692679769377074040335, - 17331185397945904160678487303485263376032543419657328137924881433628614769955, - 11605569208043267134285833752214422326246425655661043119023566733685555142420 + 14397397413755236225575615486459253198602422701513067526754101844196324375522, + 10405129301473404666785234951972711717481302463898292859783056520670200613128, + 5179144822360023508491245509308555580251733042407187134628755730783052214509, + 9132640374240188374542843306219594180154739721841249568925550236430986592615, + 20360807315276763881209958738450444293273549928693737723235350358403012458514, + 17933600965499023212689924809448543050840131883187652471064418452962948061619, + 3636213416533737411392076250708419981662897009810345015164671602334517041153, + 2008540005368330234524962342006691994500273283000229509835662097352946198608, + 16018407964853379535338740313053768402596521780991140819786560130595652651567, + 20653139667070586705378398435856186172195806027708437373983929336015162186471, + 17887713874711369695406927657694993484804203950786446055999405564652412116765, + 4852706232225925756777361208698488277369799648067343227630786518486608711772, + 8969172011633935669771678412400911310465619639756845342775631896478908389850, + 20570199545627577691240476121888846460936245025392381957866134167601058684375, + 16442329894745639881165035015179028112772410105963688121820543219662832524136, + 20060625627350485876280451423010593928172611031611836167979515653463693899374, + 16637282689940520290130302519163090147511023430395200895953984829546679599107, + 15599196921909732993082127725908821049411366914683565306060493533569088698214, + 16894591341213863947423904025624185991098788054337051624251730868231322135455, + 1197934381747032348421303489683932612752526046745577259575778515005162320212, + 6172482022646932735745595886795230725225293469762393889050804649558459236626, + 21004037394166516054140386756510609698837211370585899203851827276330669555417, + 15262034989144652068456967541137853724140836132717012646544737680069032573006, + 15017690682054366744270630371095785995296470601172793770224691982518041139766, + 15159744167842240513848638419303545693472533086570469712794583342699782519832, + 11178069035565459212220861899558526502477231302924961773582350246646450941231, + 21154888769130549957415912997229564077486639529994598560737238811887296922114, + 20162517328110570500010831422938033120419484532231241180224283481905744633719, + 2777362604871784250419758188173029886707024739806641263170345377816177052018, + 15732290486829619144634131656503993123618032247178179298922551820261215487562, + 6024433414579583476444635447152826813568595303270846875177844482142230009826, + 17677827682004946431939402157761289497221048154630238117709539216286149983245, + 10716307389353583413755237303156291454109852751296156900963208377067748518748, + 14925386988604173087143546225719076187055229908444910452781922028996524347508, + 8940878636401797005293482068100797531020505636124892198091491586778667442523, + 18911747154199663060505302806894425160044925686870165583944475880789706164410, + 8821532432394939099312235292271438180996556457308429936910969094255825456935, + 20632576502437623790366878538516326728436616723089049415538037018093616927643, + 71447649211767888770311304010816315780740050029903404046389165015534756512, + 2781996465394730190470582631099299305677291329609718650018200531245670229393, + 12441376330954323535872906380510501637773629931719508864016287320488688345525, + 2558302139544901035700544058046419714227464650146159803703499681139469546006, + 10087036781939179132584550273563255199577525914374285705149349445480649057058, + 4267692623754666261749551533667592242661271409704769363166965280715887854739, + 4945579503584457514844595640661884835097077318604083061152997449742124905548, + 17742335354489274412669987990603079185096280484072783973732137326144230832311, + 6266270088302506215402996795500854910256503071464802875821837403486057988208, + 2716062168542520412498610856550519519760063668165561277991771577403400784706, + 19118392018538203167410421493487769944462015419023083813301166096764262134232, + 9386595745626044000666050847309903206827901310677406022353307960932745699524, + 9121640807890366356465620448383131419933298563527245687958865317869840082266, + 3078975275808111706229899605611544294904276390490742680006005661017864583210, + 7157404299437167354719786626667769956233708887934477609633504801472827442743, + 14056248655941725362944552761799461694550787028230120190862133165195793034373, + 14124396743304355958915937804966111851843703158171757752158388556919187839849, + 11851254356749068692552943732920045260402277343008629727465773766468466181076, + 9799099446406796696742256539758943483211846559715874347178722060519817626047, + 10156146186214948683880719664738535455146137901666656566575307300522957959544, + 19908645952733301583346063785055921934459499091029406575311417879963332475861, + 11766105336238068471342414351862472329437473380853789942065610694000443387471, + 11002137593249972174092192767251572171769044073555430468487809799220351297047, + 284136377911685911941431040940403846843630064858778505937392780738953624163, + 19448733709802908339787967270452055364068697565906862913410983275341804035680, + 14423660424692802524250720264041003098290275890428483723270346403986712981505, + 10635360132728137321700090133109897687122647659471659996419791842933639708516 ]; var M = [ [ - 12037235000515189726428793905458162231976011685774991261061889278958802340039, - 15885254491685089152627111704751054604879027605518712546805347341940526552948, - 12220682901774309471330657931458552366575439534877271150866614914170639536810, - 11195096069395318710866553226959674457987772316145705151894647995087349332576, - 598000700605575401177173118514166571064818339748567530524299773749024042768, - 1430722853270801285936618367966028727146977818314178365893636191280860605092 + 19167410339349846567561662441069598364702008768579734801591448511131028229281, + 14183033936038168803360723133013092560869148726790180682363054735190196956789, + 9067734253445064890734144122526450279189023719890032859456830213166173619761, + 16378664841697311562845443097199265623838619398287411428110917414833007677155, + 12968540216479938138647596899147650021419273189336843725176422194136033835172, + 3636162562566338420490575570584278737093584021456168183289112789616069756675 ],[ - 2478807512283787086755520696277192042388812450777005645736937700857950416751, - 2233078558675693495109307103888903813217767160310116996267068037131890781382, - 18876120310576321787684235034151243856925703159922712959767164734820803570163, - 16850806847813838898693870637445284830832219430572133120914449039176718036761, - 1333036876405396107763619427367607232034082504897380383847654332653606615427, - 8024813862822108072341428765418554797098705487914663416123759888639403831315 + 17034139127218860091985397764514160131253018178110701196935786874261236172431, + 2799255644797227968811798608332314218966179365168250111693473252876996230317, + 2482058150180648511543788012634934806465808146786082148795902594096349483974, + 16563522740626180338295201738437974404892092704059676533096069531044355099628, + 10468644849657689537028565510142839489302836569811003546969773105463051947124, + 3328913364598498171733622353010907641674136720305714432354138807013088636408 ],[ - 6500095533434910955474026763873910167129305339747639394388586826716085593160, - 8370208895752773828195461153114215021863221486187756770286440396339432061839, - 9303960191058819387902927958335344077259478983903385066838134730814638010892, - 12233235273183315334651707749232602313616943260130930740801007863528547113209, - 9140649423847813564210562288927015604065254723368331178903734405333716165919, - 1715897011776785698388835993891828784112980527691698420841641796168725014542 + 18985203040268814769637347880759846911264240088034262814847924884273017355969, + 8652975463545710606098548415650457376967119951977109072274595329619335974180, + 970943815872417895015626519859542525373809485973005165410533315057253476903, + 19406667490568134101658669326517700199745817783746545889094238643063688871948, + 17049854690034965250221386317058877242629221002521630573756355118745574274967, + 4964394613021008685803675656098849539153699842663541444414978877928878266244 ],[ - 19092640119254952117901733765506685707486610088248205883870061221436629780176, - 3099417239661426161523333446616746096617346084970490427773391639810420659748, - 4498351799178816410443394768364090919370619407529999860500200773846156676605, - 17766546613911504681964882079687098358108049762069064124348111606619240189874, - 19735199036142202254810745273503942799136628866093225336283966579447096889407, - 18618071352177331467649099054615438672487187348128402045695624605978242597928 + 19025623051770008118343718096455821045904242602531062247152770448380880817517, + 9077319817220936628089890431129759976815127354480867310384708941479362824016, + 4770370314098695913091200576539533727214143013236894216582648993741910829490, + 4298564056297802123194408918029088169104276109138370115401819933600955259473, + 6905514380186323693285869145872115273350947784558995755916362330070690839131, + 4783343257810358393326889022942241108539824540285247795235499223017138301952 ],[ - 13282641901514824677915134398195165361567825236648422290753355584311135817423, - 842963276112770184096507757019973399127531993386626262873928307889423235104, - 5724939764407712239242783736588389538981693110806985476155198757555171230777, - 3015568820237516884743892014063659856564948150197038824747891972506031149123, - 8926202997251578932273751544826990276848999132609774201265891812369804099098, - 13523975980414815337318802343464374889255493007711857898760066111901192774093 + 16205238342129310687768799056463408647672389183328001070715567975181364448609, + 8303849270045876854140023508764676765932043944545416856530551331270859502246, + 20218246699596954048529384569730026273241102596326201163062133863539137060414, + 1712845821388089905746651754894206522004527237615042226559791118162382909269, + 13001155522144542028910638547179410124467185319212645031214919884423841839406, + 16037892369576300958623292723740289861626299352695838577330319504984091062115 ],[ - 13163705634211158833717167498904899472888572514300041636511944020589976373689, - 6705743158328622712684686369234272301477431173971663001146157949982901448493, - 5341285785102635724684809992160578025785996331334612975598752577556138916495, - 2365134732811643517126128253974711531515283135672252986518431351700239265326, - 11812366860142870031000585328436207067560705932658624313008187741187899702321, - 11192751017231920972897699839932659451476356148115786649719660565307185769796 + 15162889384227198851506890526431746552868519326873025085114621698588781611738, + 13272957914179340594010910867091459756043436017766464331915862093201960540910, + 9416416589114508529880440146952102328470363729880726115521103179442988482948, + 8035240799672199706102747147502951589635001418759394863664434079699838251138, + 21642389080762222565487157652540372010968704000567605990102641816691459811717, + 20261355950827657195644012399234591122288573679402601053407151083849785332516 ] ]; + signal input inputs[nInputs]; signal output out; diff --git a/package-lock.json b/package-lock.json index d7adc62..418ddf7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,9 +13,9 @@ } }, "@babel/highlight": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", - "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", + "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", @@ -44,9 +44,9 @@ "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg==" }, "acorn": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", - "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==" + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.2.0.tgz", + "integrity": "sha512-8oe72N3WPMjA+2zVG71Ia0nXZ8DpQH+QyyHO+p06jT8eg8FGG3FbcUIi8KziHlAfheJQZeoqbvq1mQSQHXKYLw==" }, "acorn-jsx": { "version": "5.0.1", @@ -58,6 +58,17 @@ "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" }, + "ajv": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.1.tgz", + "integrity": "sha512-w1YQaVGNC6t2UCPjEawK/vo/dG8OOrVtUmhBT1uJJYxbl5kU2Tj3v6LGqBcsysN1yhuCStJCCA3GqdvKY8sqXQ==", + "requires": { + "fast-deep-equal": "^2.0.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, "ansi-colors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", @@ -337,9 +348,9 @@ } }, "big-integer": { - "version": "1.6.43", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.43.tgz", - "integrity": "sha512-9dULc9jsKmXl0Aeunug8wbF+58n+hQoFjqClN7WeZwGLh0XJUWyJJ9Ee+Ep+Ql/J9fRsTVaeThp8MhiCCrY0Jg==" + "version": "1.6.44", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.44.tgz", + "integrity": "sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ==" }, "binary-extensions": { "version": "1.13.1", @@ -347,9 +358,12 @@ "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" }, "bindings": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.3.0.tgz", - "integrity": "sha512-DpLh5EzMR2kzvX1KIlVC0VkC3iZtHKTgdtZ0a3pglBZdaQFjt5S9g9xd1lE+YvXyfd6mtCeRnrUfOLYiTMlNSw==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } }, "bip66": { "version": "1.1.5", @@ -369,6 +383,23 @@ "nan": "^2.2.1" } }, + "blake2b": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/blake2b/-/blake2b-2.1.3.tgz", + "integrity": "sha512-pkDss4xFVbMb4270aCyGD3qLv92314Et+FsKzilCLxDz5DuZ2/1g3w4nmBbu6nKApPspnjG7JcwTjGZnduB1yg==", + "requires": { + "blake2b-wasm": "^1.1.0", + "nanoassert": "^1.0.0" + } + }, + "blake2b-wasm": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/blake2b-wasm/-/blake2b-wasm-1.1.7.tgz", + "integrity": "sha512-oFIHvXhlz/DUgF0kq5B1CqxIDjIJwh9iDeUUGQUcvgiGz7Wdw03McEO7CfLBy7QKGdsydcMCgO9jFNBAFCtFcA==", + "requires": { + "nanoassert": "^1.0.0" + } + }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", @@ -693,7 +724,7 @@ }, "commander": { "version": "2.15.1", - "resolved": "http://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "dev": true }, @@ -1114,28 +1145,15 @@ "strip-json-comments": "^2.0.1", "table": "^5.2.3", "text-table": "^0.2.0" - }, - "dependencies": { - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - } } }, "eslint-plugin-mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.2.0.tgz", - "integrity": "sha512-4VTX/qIoxUFRnXLNm6bEhEJyfGnGagmQzV4TWXKzkZgIYyP2FSubEdCjEFTyS/dGwSVRWCWGX7jO7BK8R0kppg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz", + "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==", "dev": true, "requires": { - "ramda": "^0.25.0" + "ramda": "^0.26.1" } }, "eslint-scope": { @@ -1335,16 +1353,6 @@ "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" - }, - "dependencies": { - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - } } }, "expand-brackets": { @@ -1605,22 +1613,12 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "requires": { - "glob": "^7.1.3" - } - } } }, "flatted": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", - "integrity": "sha512-R+H8IZclI8AAkSBRQJLVOsxwAoHd6WC40b4QTNWIjzAa6BXOBfQcM587MXDTVPeYaopFNWHUFLx7eNmHDSxMWg==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", + "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" }, "flush-write-stream": { "version": "1.1.1", @@ -1907,12 +1905,6 @@ "bundled": true, "optional": true }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "optional": true - }, "needle": { "version": "2.3.0", "bundled": true, @@ -2560,15 +2552,23 @@ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" }, "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", + "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2956,9 +2956,9 @@ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "import-fresh": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.0.0.tgz", - "integrity": "sha512-pOnA9tfM3Uwics+SaBLCNyZZZbK+4PTu0OPZtLlMIrv17EdBoC15S9Kn8ckJ9TZTyKb3ywNE5y1yeDxxGA7nTQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", + "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -2979,9 +2979,9 @@ } }, "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { "version": "1.3.5", @@ -2989,9 +2989,9 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" }, "inquirer": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.3.1.tgz", - "integrity": "sha512-MmL624rfkFt4TG9y/Jvmt8vdmOo836U7Y0Hxr2aFk3RelZEGX4Igk0KabWrcaaZaTv9uzglOqWh1Vly+FAWAXA==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.4.1.tgz", + "integrity": "sha512-/Jw+qPZx4EDYsaT6uz7F4GJRNFMRdKNeUZw3ZnKV8lyuUgz/YWRCSUAJMZSVhSq4Ec0R2oYnyi6b3d4JXcL5Nw==", "requires": { "ansi-escapes": "^3.2.0", "chalk": "^2.4.2", @@ -3542,10 +3542,9 @@ } }, "minimist": { - "version": "0.0.10", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", - "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", - "dev": true + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" }, "mixin-deep": { "version": "1.3.2", @@ -3568,17 +3567,10 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "http://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "requires": { "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "http://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - } } }, "mocha": { @@ -3641,9 +3633,9 @@ } }, "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "mute-stdout": { "version": "1.0.1", @@ -3656,9 +3648,14 @@ "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=" }, "nan": { - "version": "2.11.1", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.11.1.tgz", - "integrity": "sha512-iji6k87OSXa0CcrLl9z+ZiYSuR2o+c0bGuNmXdrhTQTakxytAFsC56SArGYoiHlJlFoHSnvmhpceZJaXkVuOtA==" + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" + }, + "nanoassert": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", + "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" }, "nanomatch": { "version": "1.2.13", @@ -3867,6 +3864,14 @@ "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + } } }, "optionator": { @@ -3880,13 +3885,6 @@ "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "wordwrap": "~1.0.0" - }, - "dependencies": { - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - } } }, "ordered-read-streams": { @@ -4167,9 +4165,9 @@ "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" }, "ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", + "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", "dev": true }, "randombytes": { @@ -4389,6 +4387,14 @@ "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -4485,21 +4491,6 @@ "elliptic": "^6.4.1", "nan": "^2.14.0", "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { - "file-uri-to-path": "1.0.0" - } - }, - "nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" - } } }, "semver": { @@ -4879,7 +4870,7 @@ }, "strip-eof": { "version": "1.0.0", - "resolved": "http://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=" }, "strip-hex-prefix": { @@ -4913,9 +4904,9 @@ } }, "table": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/table/-/table-5.4.0.tgz", - "integrity": "sha512-nHFDrxmbrkU7JAFKqKbDJXfzrX2UBsWmrieXFTGxiI5e4ncg3VqsZeI4EzNmX0ncp4XNGVeoxIWJXfCIXwrsvw==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.1.tgz", + "integrity": "sha512-E6CK1/pZe2N75rGZQotFOdmzWQ1AILtgYbMAbAjvms0S1l5IDB47zG3nCnFGB/w+7nB3vKofbLXCH7HPBo864w==", "requires": { "ajv": "^6.9.1", "lodash": "^4.17.11", @@ -4923,17 +4914,6 @@ "string-width": "^3.0.0" }, "dependencies": { - "ajv": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", - "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", - "requires": { - "fast-deep-equal": "^2.0.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", @@ -4966,7 +4946,7 @@ }, "through": { "version": "2.3.8", - "resolved": "http://registry.npmjs.org/through/-/through-2.3.8.tgz", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, "through2": { @@ -5061,9 +5041,9 @@ } }, "tslib": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", + "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" }, "type": { "version": "1.0.1", @@ -5598,14 +5578,13 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "dev": true + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" }, "wrap-ansi": { "version": "2.1.0", - "resolved": "http://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "requires": { "string-width": "^1.0.1", @@ -5627,7 +5606,7 @@ }, "string-width": { "version": "1.0.2", - "resolved": "http://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "requires": { "code-point-at": "^1.0.0", @@ -5637,7 +5616,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "requires": { "ansi-regex": "^2.0.0" @@ -5705,9 +5684,9 @@ "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=" }, "xtend": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", - "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { "version": "4.0.0", diff --git a/package.json b/package.json index dcebff4..68d5fd7 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "license": "GPL-3.0", "dependencies": { "blake-hash": "^1.1.0", + "blake2b": "^2.1.3", "snarkjs": "0.1.11", "typedarray-to-buffer": "^3.1.5", "web3": "^1.0.0-beta.55" diff --git a/src/poseidon.js b/src/poseidon.js index 8043c95..0533154 100644 --- a/src/poseidon.js +++ b/src/poseidon.js @@ -1,6 +1,6 @@ const bn128 = require("snarkjs").bn128; const bigInt = require("snarkjs").bigInt; -const createBlakeHash = require("blake-hash"); +const blake2b = require('blake2b'); const assert = require("assert"); const F = bn128.Fr; @@ -11,11 +11,12 @@ const T = 6; function getPseudoRandom(seed, n) { const res = []; - let h = createBlakeHash("blake256").update(seed).digest(); + let input = Buffer.from(seed); + let h = blake2b(32).update(input).digest() while (res.length { + var output = new Uint8Array(32); + var input = Buffer.from('poseidon_constants'); + h = blake2b(output.length).update(input).digest('hex') + assert.equal('e57ba154fb2c47811dc1a2369b27e25a44915b4e4ece4eb8ec74850cb78e01b1', h); + }); +}); + describe("Poseidon Circuit test", function () { let circuit; @@ -20,7 +30,7 @@ describe("Poseidon Circuit test", function () { console.log("Poseidon constraints: " + circuit.nConstraints); }); - it("Should check constrain", async () => { + it("Should check constrain of hash([1, 2])", async () => { const w = circuit.calculateWitness({inputs: [1, 2]}); const res = w[circuit.getSignalIdx("main.out")]; @@ -28,12 +38,23 @@ describe("Poseidon Circuit test", function () { const hash = poseidon.createHash(6, 8, 57); const res2 = hash([1,2]); + assert.equal('12242166908188651009877250812424843524687801523336557272219921456462821518061', res2.toString()); + assert.equal(res.toString(), res2.toString()); + assert(circuit.checkWitness(w)); + }); - console.log(res.toString()); + it("Should check constrain of hash([3, 4])", async () => { + const w = circuit.calculateWitness({inputs: [3, 4]}); + + const res = w[circuit.getSignalIdx("main.out")]; + + const hash = poseidon.createHash(6, 8, 57); + + const res2 = hash([3, 4]); + assert.equal('17185195740979599334254027721507328033796809509313949281114643312710535000993', res2.toString()); assert.equal(res.toString(), res2.toString()); assert(circuit.checkWitness(w)); - }); });