From 44eae794cb88f4c54d48c49073513df94973efae Mon Sep 17 00:00:00 2001 From: mmagician Date: Sat, 13 Jul 2024 17:42:11 +0200 Subject: [PATCH] update safe circuit (circuit2) code fix safe circuit --- test-vectors/circuit2.circom | 6 +- test-vectors/circuit2.wasm | Bin 36949 -> 36312 bytes test-vectors/safe-circuit-witness.json | 135 ++++++++++++++++++++++++- test-vectors/safe-circuit.sh | 15 +++ 4 files changed, 153 insertions(+), 3 deletions(-) create mode 100755 test-vectors/safe-circuit.sh diff --git a/test-vectors/circuit2.circom b/test-vectors/circuit2.circom index 1cd0da2..db8dd2a 100644 --- a/test-vectors/circuit2.circom +++ b/test-vectors/circuit2.circom @@ -1,3 +1,5 @@ +pragma circom 2.0.0; + template CheckBits(n) { signal input in; signal bits[n]; @@ -15,8 +17,8 @@ template CheckBits(n) { } template Multiplier(n) { - signal private input a; - signal private input b; + signal input a; + signal input b; signal output c; signal inva; signal invb; diff --git a/test-vectors/circuit2.wasm b/test-vectors/circuit2.wasm index 3495132c252fea8ae1f7f29d71816c82b00657e5..706eee9253765034784789f4c2eb95bda2c43cb2 100644 GIT binary patch literal 36312 zcmeHw35*<9dR|?9Rv$Gzhk8y{w>V2u7l$)LQqt;}8j6%C@fdL=>K56YX%2hX$4qw* zIipDAtf^~l8Cb*X*oX~?8)2gaki4*AEaW&ym<^I_4kJon1VXa$a^tnVw%3V*>;|$e zEc5-Zj;`ve*E8Y@G`t|CS5@!*@BQ!pzyE))-qkfip-~Y9K@d-OpOh|M6i$jPh!-h_ zt9;S935Z+(Rl0aVIH@3=o-bSwFR-i^P71RPIos?GiNdaZuA*k}|Mih^p>GUw~1W^sDu^yy*%v2mt$ ze)deEUYtMn)Zt>KR$miTxl$HHNt9(-Q9^Iov~A%?n8=Knb~Hc-V~n6)Qg3AFGYB^ zn*r07`kYd#mYTu~sYbDRu)4I;oGmR>3uWPC2E1Jfv!$1cLP161vBLS8I?N-S(hxgP zDwgMutW*vas}tkGTnb4~m6}x;g_S5KT5P~zo>a8x!fDEEnQtFVB9vlLQ7{Bms?_2? z`1fM@HbED4VTUa2m93}fUO8%}X?tbOe9G>Xv+9VT3)3tgyG6~IX5O;u1jsw&?2Ix+ zcg?y-t-COj4jDpPZCxnFSc+72Aj^kMmbwVOk6U~xqFE8hxkHXx5r_{p9uKPK6&If; zlqu94VzM&E$B`hK3D6eIT{+AIR}QmAR}M45mBSR{cv@xuNXZ*t`?Idv{{SuOf-dZq zAQ&z$=VV>dOL>nbR6rhDm8wLKcTk0W7 zPaCC&C|ROp+bCJ03=w6hjWWbUeOG-;@@Vynsnzr~{7YZ*DEA7Lc*9c8$>7p4ID<>o z;0!K}gEP1k567+x7|! zPU&_LmRre3ksEoDZu)~m2TLU%(TSUzF6qhxa3XRaO80P!=HqR3JM@T76}iQ7NT?{9 zkFko}bmp>ACYMj_L_X0bmLqmVCmGxlJERzsA&>+a5_vUP*+j6iT0X_oD58^iZe<*0 zV@$k2lG+g>EuRdANDGFjC$I5vi0CAFAPzAmc_2yU1Dos!Y)?KN3~Wy@u-SZuhh9V{ zr2^55F{J`YD&HJQzB$qz&5_M_1)C!qY>uIP4-fN*PWlF79%K3jl2pDClYAql`9|#O zXvCp>cd!x7?%CZHM08R$&=N7GY9LAFn>NWeZJKY|F1~5IeWqodjqWpDjH$xGpKG-w z-)d>T)w=jr>-JfV^}<_y?MLN9pX5WI=0o4bhrZhfJp*yO55y!N#5CXayZ9h>`#@xH z+~I>G&4;6l4@b8T4yM?cPq8k(V%OXXHJr0w$ZSLqW^EQ(9J;7WG**()VA+5mLk6f9A6V~G;^7zYU59MgPOVLMBN!Nx`y zX>61gR4pXp3ERn4qO3a%WY}3)ZDV13@+u!b8mR?V8@(<)Itz=@#zx3y*|0KDqKMAb zBg%T`pi-Sck8xGpz-O}?>oJs1@{l!$ra{8$QND`is5PimClx!}0|SQ+_K4_Q6{76L z6C{itsf8dw8A4` zF{>?^)^!A|WVI#JYL0+qthQuY!x6BC)s{>vHv$&0+LDLVBNDC1>ojhYca!keJCB5? zQCm)ursOGInn{YfY$%I%KFOCaAz*>=A4{@wQ6i2KmPe&rC}dm_b0Jli5rxS@##J$= zsJfsl8h|k_i@1ffkg+b|vLzQrh)|87=#j-cAw|TH57be6#1PNsB2Gvu=ncp3s@ zgfJ~)(RCVYw(A2b6=y;#dYEwt8xh7KOdP_*0qalUMI&-{halwes?($ExP|q|SwlIS zi?hP9>2>^Dx-_H54dKW#1c*&X-$b^!Aui_Pj7yBxk`+=SzCS5Vi@BH~jNAr06j zLog{QEGp)bSPQ3oh^qqzi#uh_G^Yr$a+RfYyC^tQQD7_sECv1&M@x<6&{^luE#(q= z2#&p?QcdnQ7@u5R@gb){07qs9>xjqkL9-y{d>VW3@M-M9!>6$a51+;!JbW5^@bGEu!DB1ofsvkLVGkbLTX-aF zJhXN^-0j$dhfiY<9zKmdc=$B-;NjEQgNILJ4<0^^J$P&OTb`N!R;ZAk|U*n0Ul@(3^tzijz2f`wese43}UxeyVE2SkeIQ%vMQy14-r zL?Uf|pkVK;9W_U+mNwMOTie^_KA4+fAj*k+H?#>tQIG4SXdo%YmMa2DkT#LeaBZV^ z*y-VK=MV-zRPw!>u_)R_3xoC@#6XK``CIrFC3xH@Ism5_Jb|PPgC~##MYMchCqLls z1e)7Bfn0li8%wsBgxtqUzJD{`L+=2`d$MhM2YOFWevs!Pah*U7bdi+K^|=h+=lVMO zTu*+Wlh2VhfwFYikm}`cr}ZEz#}Xkdk1db`g#?%3x4^hgW({=R6fIF*JrMG*vi9KZRD z`kD_r8iC5&#odA?P0e0)cJ_%fu-Wg<6Hc|KC3KAoBLn2MXyGmcnTc(=6~KpP8z zI|r9?;;=pU4r7(V+!@%+fg%h*1sp==9`6aeX680O8nrqza|rF6ed@5Gsbi&pX6d{W zDV;Vv?Y`V~mc=~u zM^N*iv0H72l;Inumv5MCN5f#YKe!pg47d$5(1!Ach8fD!3^-7!xX!g%l5aEZx@@+Y zX3?&jgMONCvkV(F2ddZ0w^^2Nv%!uw!z_MeGd3G`+ibYa0G(_WXT!}veUf~0Xufm8=1!e`T8}Q}qB+L-k zK%0Pi#3v^c2K#!BFy<-YAw5Kk5IEI|^RDdpB0aL>i%uF&DLO}qvpBJ+cmjpvxwvIn)IO1zo)Q#FjZBUJ&IKC}_4$A#{LfM`95^Q~F+>yjwpFtc$viDSjGwndk63KK)2qrWhK zuF#2K=#S&hT0eAH7mva^bU&L5p&TQS-WL6eVA8J$!F1gu>%mmbq-w#`s7Z|mQx%hn z1Ia;hNhVbardmq1>7?vWitOz1e-lL+Flk|OOf3YP4do=`G7c0IZa_0);3Q;H%j5Y9 zJ+G&Uv7cGM;!CrUT6>sL%%k(jA9}aa5NnhEHhV*|;1g zRUketOh9!K8Q7OO*jGO2iG5&%rLhl;uqXP!h?!5{E9>h01Q=A+1$YtG?2PSYI6u<@ zErC27$<{|p6eGGwx#%V{ytkmrJB0|GY#E3PAZX$JBpx+h;bC4lRd;~)g zU3?`ccFF^qp!KQhQ@B%wR|Hf@pAvD`PUqTR-XoErql>0AgUG@nlaip}a8!$cXUeZ2 zKYFQMZoYo5t6r`{C~?p#VX5v2W%2cuXcvSkr%b9k>gA-}#>6z%(^|}d@)7k*_*~Bg zU2N&g9vKc+m83e=;&4WnY2(nxKn4h}U}h;zZ+Qb2muIkcFTOleXXatQPleIim@rw; zJ8p-{IlrLWr6^ee=0;l+RPqPy4mfWV_d5;1t=)B&GH7=(`g?Ml5>lW(EVW%VQya-q zsRygx+76fQz6>gIwCo~w&g@3c&k3wtcyCazo0Wl6w5IQoF%Tmc#JMkjg$v1wWL7V2*UDsWyu@bk_IJ!}p8DsQTW01~KTm7*Ze*=q8xhm)ovj6KEkAF! zRxg3OX=`~{1zU?Tbb0Egt<}yuz*?lXV=el)&UIVs%k*uhw&ujV3l)%an3dzX)jzbl zQa4_#lcXYA6fGGaY+_%NLK`+aCdSQ8@}e#BvXRM1j5fxOv0NRgB{s`1n60N}ZoFMw zjk@(1$Q_mP$aRPSd~uc48kqQ&kU%zJW$0%A%^byGxlQ;xZAy z#hcfxVRL!g`Fcg@%(pG?H$KO=U6z`U-Ez$a-RknQ@MTx0)FGqIg$UDRaOK>o!2jzF0)J|KPKr6z` zddp)1hktBf2SBLDwBv0?Gc+xu-k=KYVMj(?*rbNgh^E`*4H{9?^oNY=&I1Jd49v!EEt zLFyq0|MDWHGHG>MP%9zvBK<&^f&oE|@VT?(Iy6~>Mcru_~j=>!kY0aO~LTH-bM3Qpz5NlHddEe6=qu3QI+AY zYO1{|HVedOA$7L>N{3D#yo8A!1I}KbA+tK>P2jhrZ(w=BJGo%4YrU>v#(j8??sqve zwMq7(+C+14USolLBxB?;m}fKXt}`QZ6!re=KTQXq{)z}cadd)`t}ze9f9P|7z{^82 zbjv$wFd?1WgKx8<5=_Gcn&s1U3^Omxqa`-48pHigBWjEp9|_vsMihlC-yYL;Y7e8R z7Q(Nc@zc)s3@Er$J78wmG(#&tpP^NwiYA3M5c;|)TY-SbS#k5Lorpsu_O()?YlvgY z()uze;#u{Q;>F%E!{^fzx4n-Zb(xZ!`?GlTXL$i^SZ(V~;_|#3q%w1=8(%H#%)A|! zWjK1v&)fZob#Ba0Og}>0<41^l{0Q+I?MH|HcKpa+?Tz!JfVwyRGWaQ)j=x%$AJseh z(Q9q}5#k;{Lfqp=h~H>GI`X&UNB(MWoF4_$eIxwHU#-iJ8f|{G2Q>Cxo4&}Lh()3- zf-Z@@(O3jaaqM-*B3X4mif!`!#a<9>pgq&(0_rfhXxs4S-o}>K+h)owDqF#AqteJ% z+s3BG-f3wsrX=4*pSwt1Fb2nEdQcU?kmw@PC8CA|4+@6X#6S$&A~d*TyCc`G$yon9HzgPsX}u(*(dTMJbqX6>#>YDi zDrWp>XHH~$52EquPTG7B*+_`QT+Fd89^=D56pTOkLmD3$A53c10rfcB@_E;|CN7g0 z=68LJkJGwjXxPiZn4U%@!sC!b##Dh~____PX(5NW$jV_&To*|yq_RC2$VSqbD5?Ke z6vHGWX$pSW4KyT;#%b?Q>#ytL`>$#*=4p@65GfT$w6{wMY-1T=iXwu(W-%W!q_f%y zq{@^U!bXenl}YRrV#DxCTHBe!acd}r7>)UG!^|sW(rB3kpTF@@E%GRBW?qD*kWiN? z7n2YmX|+6-@boA_&Hi-(h?dNd65F%J37H053a z=`H)#d=^--)}o$aEg~l}Xe6q|AZSF^ zpa>fBVXy!kRG&zgAjS|PPE0NUYgQzg6}8A@6tki+YP)EVRu8}usUsi<2G>1Ol&E-2 zkO9%yKas^AtH&U}zf2Qk<14cEJnBa`Ltd6ceeg8;jMWdnPrf2rv9JCy#b|?)X#b4G zWH*h8jju{A8g?=KO#J-Bl>LZCB~BT;-dJ z$5pnIr+h4S@)USbf^3MlmGN!(^P*O!N?0m;&lw;0+Nq}CtpZlhZn_|ukGY06O2;M8 ze`8e$60%1a2`4Bj`5qWcG=@o2y$62e>k3ik%k@P-LW9Xa((>EKmOjn zUt0RzwMTw1vHgXozx1VV?w|Q!$K_q$s~?#k!&?g9{QH}0*NzTN{{8oM{Qk+ef92e# zd+s{0wpx3qdV1$~BmdxEo{!@_cNw|ft>k`l|DSv?_(#t?|3|-d?@wl5TmQY;`!5}Q z>+264x%gWj_Mur^L9Qv`U;NJZKKkm5AAIv~hW`0)JaXG#{-?LUHvez#`|``h|9J7S zXFf^LF{jPcxE{uO(MJDpYJ}zbx*PmRw_V!<;l7kQa(rxd&bLOA^`Ip20i2%EKNqzUxmP3d(X0>Q@v}hPrEdjZ)W52_b|C0xcQD5aI|bLINR)kU~f!Xb4>h z8H8?x9)wh`8!h;A?2nND5 z!ajtD5cVTHf^ZPwQG~}34j~*yID&8#VFuxGgkuP^2u~n9iEtd@DTJpHooo z5ne!e5#a>FNrVEzDTFzMd4wXuX@muYGYBPwMTD~mWrPYs6`_W(gs_ZIM`$245mpe+ zA)H58MOZ_43E}S{yo~S)!Ucqj2!Nw*UuiSe zSz1D2Y_7ml>>KuA)DiZV!SzyAZx$;{keRJ3C!!Hcr5T#;5-izr68hI=oVD zmX^w;V*LbcOuH%S>Xa$S)NlUe+Lrgf^-oSrp4@Tp=*;=Q5T3k8j{R8vM}Pk2OYa>k ze}#OF{!OuKhl{1&)P^gf-_ez7p;8pzN-PP!KZP#({{p%c@Q2UkjQ{VQE9!yz3HMA_l~(dF$w#G2jU&Z{LbG(PIAYgriM++G8|dm}1q~G?`G{ttzIdVZ#SujYSjfZ;SOd#N25E#$P85PqC)sn?uQzu zCdPMCwawbWYIBUpWH`FR5aV<&E+3nq`$F^BWQfIgQ?y!K-b2xa=3YiEF5gYja`PUF zmW#{x(j8X%BB@t`2i(UJYV-Hg9gsdiccec^_odqTDH7^*X|*^%d!}r-BK2u91TcWa zb7xknXZI1dh&RrZ%MUrv_40nQLt%b#rO})&RgV=L=o}6ZlxE(CoyYnkR40lbH1G9C zsXF93RjAIFA0vtB>5#?yRIOe zYxO5s0w_=RL6@VaPdAFqgGXmqPVK8zmf%&*<8h=PNBbz%s!yfye7IDt)vbi5DPg7n z46KA_h|BC5w9ENpPaQ5+YW20*W})7EHd8MafTEl5T=)5Usafs@Opzk35`~PH z!))oL;wcqr#|r0X>S!c$8X^Zu#q#`-mCB)Fbz*!z(JJy%v6w>asZz6AY&59wX~M;d zFZ5A2I5A$TdX+iTOX&yd@xG9|4|rlr;0nzXjNOIqENk=FKfORIZ(q_w@N6k}PJz)uE0B|JBF zqE?;{h39tBJq-RP@6~beo`{1Vc<)Yt4|wlQOJ;dZVG2WTXbZu+9Kq*gXr57R$>(IT zu1NKINSd1qOU0)nQt_Fn)BqNZ)woog>rPq7RZLDzMX46gH$!4QEG;ibq~&^)66!Iz zaegT-uBxF1oVJ;W(v5N^S;A_MY}Z)tZ9QUxlF+T+5)#BF?vhenniz+?ide~h!6^YG zOmrF9#9(bKDpkf}(()KE*rfvNgjCs;l$Lj;fO#62Yf@#rOIjY!0HBfdZp!w zK45kWY><^Ill{{2en>L_ zNd_Uw5F{Cf6eEygz=Cejx(`|RVG+`eSdlHv!}W*|Zm_qa7&Gr^^30)^6tNrWsvOA z8pbiF%eC`&G2%{k9Sb>Gq@`&R&B?ZlPa3D14KSXbaGoY*H>cg6*d9*|$9`?Gz~OFB z>>f|-UcLxl^klrx6T9C81|mMdXYin>$Q0~f5XDo5b)Po%5=;A{j<7I7r1n&;KHoqu zQ=@_Yu8@^59ySxkBVy^H&s<_ZGsS_HtYmJNB_3{xDpnt9MS$KxPwY{OF}tAeIrf-` zcF03J?4cd;(2ja&Gq#0~J?_AI%#&l*6MMqR^(1}d`!ViL8u6(C}( z%xP1+xdoE-3|&gN%q@lmu_B6PNh(%k=~M+A=R)$*uCcS|0xBX>C8WwoEz3fJy75A} z#)e8_*u2}qS9%32MGViGTB~M$MCwgBj4|w7Wl4#fcN(gP!lhcNdb$=?%I6C8NEoAY zs2o*j))`aqI2NbtE|sq1iO5`SrP?gkld(p#hEV`0Dd%xKtpnI@0B| z9Ycf?l#DCEN(-gDY2j9U&m{6hS~cyNjCOf5gC4UgLFPS^b%eOL);*JIe@Q*rZ7X=(OMEGEXan3;~puB7uwluW{jA{L5^LImT+My0S6bv^%oKV+P~ literal 36949 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�R` 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