From b759ee1246ad979de5abfa06f3507a86a47f11fe Mon Sep 17 00:00:00 2001 From: manoranjith Date: Thu, 5 Dec 2024 16:52:29 +0100 Subject: [PATCH 01/14] chore: remove unused scripts and asc directory --- coprocessor/asc/asc.wasm | Bin 813629 -> 0 bytes coprocessor/asc/bootstrap_asc.sh | 153 --------------- coprocessor/asc/bootstrap_asc_new.sh | 176 ------------------ coprocessor/asc/bootstrap_asc_threshold.sh | 150 --------------- coprocessor/asc/ethereum_ipsc.wasm | Bin 386309 -> 0 bytes .../blockchain/scripts/run_developer_image.sh | 48 ----- coprocessor/scripts/copy_fhe_keys.sh | 110 ----------- .../scripts/copy_fhe_keys_threshold.sh | 102 ---------- coprocessor/scripts/download_from_minio.sh | 50 ----- .../scripts/fund_test_addresses_docker.sh | 23 --- coprocessor/scripts/get_kms_core_version.sh | 23 --- coprocessor/scripts/prepare_test.sh | 9 - .../scripts/prepare_volumes_from_kms_core.sh | 94 ---------- 13 files changed, 938 deletions(-) delete mode 100755 coprocessor/asc/asc.wasm delete mode 100755 coprocessor/asc/bootstrap_asc.sh delete mode 100755 coprocessor/asc/bootstrap_asc_new.sh delete mode 100755 coprocessor/asc/bootstrap_asc_threshold.sh delete mode 100755 coprocessor/asc/ethereum_ipsc.wasm delete mode 100644 coprocessor/blockchain/scripts/run_developer_image.sh delete mode 100755 coprocessor/scripts/copy_fhe_keys.sh delete mode 100755 coprocessor/scripts/copy_fhe_keys_threshold.sh delete mode 100755 coprocessor/scripts/download_from_minio.sh delete mode 100755 coprocessor/scripts/fund_test_addresses_docker.sh delete mode 100755 coprocessor/scripts/get_kms_core_version.sh delete mode 100755 coprocessor/scripts/prepare_test.sh delete mode 100755 coprocessor/scripts/prepare_volumes_from_kms_core.sh diff --git a/coprocessor/asc/asc.wasm b/coprocessor/asc/asc.wasm deleted file mode 100755 index 1ba8c3344d003ec451b15721e08c0fc43d207591..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 813629 zcmeFadz@X@Rp)u`Ip;pA?!8sFN+qePRFclQDoa(iWXrZJ$&VzujwCCIf(p; zv7K1mb~$lk*-4uok6$syKma$G=|E>_e`W%4hd6Q5X)sNoO?Lw6nE;^)LwM^mq#@8G zqz7g?-Gs?}e{1i39=EDwB{+X{f8wOH?|JOK*Is+AwbyI!6WxB_+Zs_6HU3dNye)qC z;Yj~99=^<*zT+<1uYA9{!j6;_RZX@NTvuFgYt{~=ZM;P9+lwkOzol}j5OuX8)4O`4+! zBYUVAfo{b=7EdQ$`4$>s@!;PJL@`#_mz!?f2aE7M}dW zGf_h|-Me?b^KG}^Q`{TecjhhcxZ+gN1>tw#XefG>-faL70?|A2% z?>_ULkqu?)%pF%;b=Bop*XqoLn{U4T{&;(n#&I0QJT3l%k~a8{$BjlBk3FHX{WleUY*04V|CdDWJvy#dppVdgqme{Y zji#WB<4$YP;=j1rYO07S!h0K)Nz!a4EqWEmR1YsZIGS{+u|{#D#gj&qL>|CqqPNvW zOFtss(0`py5~b>AveRicCuSxl;*RdC5jxPTjV6!dNvci&8f|D;s>pw;sWM5@Mm*bg zZK^*1Ma?Gf+ru`mHIkSHX(>v!sQ0K1XsSN9m69I$C$)MJpf+P5r+EXwHOC9FM%3uG zlV&TP0DqGclaq0?EiA;m$qT}a{!4%{-qwu3ab!qQUpA1qp^mxIYbpPWBmQM54w|+B z(@UeS&=*B5ZrFeJoR|5p-Pqo?|ES%yLD7V;0tv;9WL_Ag-F7?fH(GH5RyuawSXgW{ z`f1wRvDBxzw8eNqQKPrhdPsN0X*$_yG7-DMo&DEJ(`KCI5J$6_wj1wg{9^ozF>@Ks zv=)+w8>2@ac`@of9F3m(yO6mGY_13%RBk`U*auy-E;q$vw!dQx114=-FMg9@45A8^tq&S`&-}o z_P6Nm|By`Hai+NXlVouA%)Rft>+G5PZl%S$@4Dyj^Y%<}53zIh_WR#{mYb8e-ij2t z{nj)0+`;_adh4BMZhyzEZ@&G$Gf6!0bKq{&=>9_dBk|MmKaM|~9=`UP_r_P>tN+g4 z`w!poKR$f#z5mm__uc!Q_dRg${r5i7xbGj_`>uE1_t3rfKKMQHPo>}8{9xlJ8b8^1 zF8)aTEAfZY=hOeI@n0H$n*4e4V*E?-=aWB6{$uhN$rq9@CV!cHEdGV~U&sF{{`vUl zz~YyZ|CIdS$zLUO_ZN*nZ~SfJ6Y+m+{C|xvH2$pdUmJhZ_)6nX8y}8;D*om8+!#je>VQr_|q{}elz~__|NzsKfgP9ck*4yW69&mSK~*L?@1m_KG=9d z&3-Tc{L|#elaDk%ocwR;KTAH4{PW}|`S;o6{mIWH|1$YV@;ukiCO@5gF!@mOFOrWY zKc#BVB`?szFDAc`{A*plnEbqoUrHXKp2uNzNs| zm;7@2Z`0pRemD7p2w3ZcWU0rJqjzHaYx6 z`lIPb;-{KF)%F=b! zpZ;F@rS$NZ)BlqGRr=TIA16Q3d~fr6n?K+D(dLgepJ`71<9A>7tIbdRa2kKx!|6kN zqS2?LyNAomQMNpKq;XBuql^y6ooqRa563A*<8Z8pN7wSByq(=WylOcbJ^siek35ja z@iF}`TV9Df!-k4<*t)UL>nm}TCwi6~%Nkj-b|8v|?a{>D!{%t=b$#lM8d>xH(GNfJ zNP6#y^jOC28~SN>)u^+UEf1EntE|P*kEolI{YG{)yJ|J=9Z3egq$`+4jkO_wb!fbG zL%-2WyWPi9xZ3f2cq7n zarZD50^-qE8v<(dv|7pI9!UOhZhM7+aJ%*V^m#J-nwv%dm0~|3gzRqKz4%l?JK3^cXhP`bg zXzWn7En7YuAI!Fei8{*9`8EDIxHkB;hDK*2+_n+f9 ze3*#>pQrU^a!Nd@5$7W){@~riS9pRy?!*j5Iy8dkSClu6;G0J9EfIX;2tKJ2{PCK| z@B}})UPSsLe-L~efjltV8vULT{PFDgI-vl;`#O%`sRO9));UM;)=cKQlel<=IQg}V z<3%|4N?7?yaX>G-GCQuvS4!BL(l?O1iff zKxzUWhOxsAMLKLs9Plg3+ty4YYZv<8^SL<^SXVRc|#BvvCb)O(!I-zy2xE^qkEbJS+*C)3|73rmZ zQG4a}8lGR&9970y?CG~DdTZ7fwWiSEx)d1(5N+T!Fd2q_2xr%x^l5<`gS@GMti*FH zwESwSJqKY{!mRGpPX0QueJ;Lxcot22O_A7 zCJscMyrmbIJq>X_Yh4p{C>SY3H($<6V>DP>Hj0eFHyVoJBFSK#2D4R8*ZldW%fv&Y zK3xqrU1}8cdV<}~0Jl5Zx+>d#AR6Sw%2^c=oBz(Xiy$jF@vSk_)hCkp+eedY{Iexs zWqY>$vS{YoM#pz7VnivsdupoH?o3R^-ClnxNoQu^{Y|U#2&ysMZojP2DUh!U9{J$f zp&X*`tHsB3LM!Q;#(}I!9xo>6@bw&msphok zHBqcM9i(GY#pskEwI@Fsd-J{9grFd5F92cqRE zoD6Lg&?bUFO>~CSP66fjpcFmU>$KB9n`rjDKOYpsX4cf2kYuz1489TrZK4VA&r0>h zBs&t%xfM{W?E~Uefj9cwN72pN=w?~cZ}wQD-9QCVQb6PzSEVWSN@Gzr1u|;gh(!@$ zXwdnDilw|Gva=y3gG>Ca$_xJW!3j|qtaUhEqL`4H(-e8l^;!WQhj`U3kbTl9p&V=! z9YzR)m6hnC!_k6%f#_=@H8xFSTK#S8XI*i!58F(Lx(0t^mYaX9Q3euPa|{3#~@ul)!J*`88`YasoF+MuEf@|2PcmiThOwPffQ*QwUy7 zshV_639)Uh?j4E3Dq^`P5sM5pIaeT7a*lzOE5~{{C&U8z+K^SO!^f!Jw}*bUopeX7T_Kx|q^Y-md=i9@W@UC?T_n@XCp%7WPKrC{=U z&gcnEkm(0ILT$tNeM7ggd^${T)Cw!+p8(ykq@lYbbWc0xpAN`&YjM?`mKyWJ-3chp z-@s@c>Ci_9s^clRFuxqQ01>JS*uqLHdxM)31^}-nj==&(#fAj~*YwMNcf(=eNt|`V zNNgAtFJkJ3k(R^YO#`Lk6-0*3ev>-!hkTPdzcJJ~eZkbpn;TH)w5QICks{Av6YpT6 zc8uPOO`MIQd@Fwo{4Md<;cuG175)bN&GL6Cf7kMN34aIqyPUr(_?zSJ2!Dt8yPCi2 z_^zsG(@dGD*k6)}m9S>mzW_71_^8J2p7n$2d zo7;WN0Sj|J!IS5i^?ucwnsWG`EEdd0A_?x)w@uyoaW*AfP6?FBY|2?v`wT~=qpar6 z4?_9w;Q=jk2fQ`q>r|~Ncgwr;!|JE*)LCEF)O#CQU*^=)lu{b{qo*5dgMaS~s)u9! z4;sq);128BmJYP>(WACtwZDsRi%a=W0uj{XKU+(thUSYn^%9HO2 zcgEhx$6Dz5=b?w@7-RvG0NJi!@@Z7|KO5iJRsCLgb6uJB@!L#I5xGd4<~iy1B9w2B z$Q5upY&(NZ=<}=ujrI{3Ygyabkp0oKT=X&gyb|2c`W7vFhGm?3&%^=mC;NN!=>75V z4Idb89d+K7FJy1HK6~;5y?xzmuS0|^CC%gLnRjDEw&dX7D}dA?jTI2Z54*OD8O^Ni zXJVO=dn5x4t^g8NQvL?j7`PdNP}-P}x{>cy(UbK6aC&WT7nOVr#C)ch(5Sa!1DnqW zsyUZm+8cH=PXYz}KPmWU1^-1G!2dEpf3bspw}-wLpx=Ey=y#7I;nUM?0qhF`c0#}| z*MZG7{eM?r^BIHit>w)HB;F|Cg)cr=dX2Y*0rUY6=!)x z*0h7HnW-Br%rFeU>LV$6mU~ZhTe7C@WsR>>l{N0xxkurAACU3gN!AQegYzjjjyBR1 za~ZEc26(PD!YuRw?jVT``P8{Xyska?&&VMe5OW3d*m~AJ5X}!)M|}mCc{&(gq@p8F zQ(JC{cf&f|=z)%GRes=hc997^`UnkIn-$Ye$t*En0P;~lO-UTK3-jN47*3s#mqAVQ zmJDTjvYKYlOqt0RY7Q!ngO_Sux^*VwIN;md97Cq~1cRa+%_cU!Csyl#95WPhKE;C2X> zh;*q%Lr(~bc6n+8Fqx2#b5(vmuFBymxV-CRcfnP^B(55WtM-Vi=#I9LU^6h4wI2lI z4gDP>XG*oR8OIzH>9Biae@Qo@d}z!uH0HQS%(3d2W3^g;C>V zf4&O9d4;-#abHTPzduGpY#_fGQB}b2%Di0X{~n}; zQ3-MkDiP68&gV-i=JHE=yLg*s~i^|MN^_a)EJsxm(QR^nJH;({49h3x3b9OL;m*g zcM*T9q_7m~)9}@<&5zQiSD{>+FKpcAM>lH||64yha5#QH5M@M%pHaE{aQwbTq5TYR zaDBZtjW!w5jiSwM)ht``7Z0Ks(47I0+sN1vkO z-_V@42kLkw{&XYXs`67P-dwVX#V#b zPW%1r*a&)^QaTRzxCTB)171Rw4Se1=@VQC@F0vzy=YboBLs$7rRQ9sXq4KYN#V-{V z6@Uq{2z5k)e)JWpd3i*i4d@1-ABi2%U!f{KR+%_Kf}9-AsA6DIR2s~_cx~i))OGz{ zU;pVCe%d9a;0X0Ybf7v#E6bl96St0`U+BCN3nD`K1y-P;rI{*&fJ3( z*B*}dQye-RuTY??E>mnh96u#)Sa~kH`nl_~Cmuf%KgqRQKC&%A?3~2K{1q zgXgl{{`EO7FIA3KKiex^&B<b-T8 zT9bQq_flk|d)uo)VI>YrVJ{!_X1XZzU$k^kli@QmL`}7kEu3Giwg>qZiB2X>%20nY z+X4+=tq`D7@|^nve9nxXeF6cJ4E`5epi3VI&^Q@G%L8C(^C ztEGed5?->5lhNS*v(j{x<6_cz&U^?Uv7(G>XiQPS<|q=?t(*O>`A=(-9K5cw(w~6q zWQ;y=>Z~N&3YU(Mq!CY$rb5Iuo6Z{!P6Y*Pa*5hREvrk!GuBq0&j9pS3{o6vA}a;BpFM zo8MmcYCg%bnaU=WBt40(i>W1Uo28|K|85A&dac`ned*SFXijFYR<{S}XYPW!J)mw6 zShvRdb5*u~RnUfN-Ij8owi@iqwmx_LR~zrn7AU^@)%Lru?>zB%HsghA2VrKmZYdi@ zsL#hTs~7Q_D}Qxy^!`S0v@K?ftLQUFk|*&pFu=u?_`MA>gWQtL_!jX*@{jbhFGmuP zTp%+PS(e~k)Ow;~ag`=y6UQ<>C!80!QFwuy7@y=&nDMzuj;mtL6EZ$6Z-Jnn^8)WT zhe+WC&K8mLh~NEXkNeAYV1ETRaahZTnO)10c+?A$p69Od7anD}^4F;GE-xUw!Izxp zB_eQ{WBOO>a>IfFX~k>KPmr^-aAdBJ;b$eVnHF{g&`!+@{q6Acv!gOUJF*?M`Pnf( zKRYx(JF4@uqk@BMhnpWYQ=OlNkCGJg(_((eJSZb1ZKul@8DwWk;;x5)d_L{PWAn4a z&CkVUj~ACizPJLL<|irU2OY^A^3}xerwBMr>lx@wvS~x-lzc4{ zWm4WmFpuCaZYxiqK_?b)f~`n!3aSq|Q(2=La6DQBH}ULF$NbFKK%@{}y#H01+M zO`E1o0#2#inrS^Z&$3F(6qf*^4ZH>>!|)GrN!6Yx;KYp{4iyH%A}&3zDJ7M}HJ6uE z!Yp!7J9*-eor3(-;pK`fm9jRWVt~h-0w16tL1J;y8CLj|>v`5Yn;VO7ro&mKyl{UB z6@~jz-er2aetNcOdL|vUPll;+)IKeAqdj-B>1@_4SCOo^mQ2Qs(R3*AFybvKX${$w zjIl%q6itzQ;1<^jnGr0=cBxTs@l23pGupb4Nbw$Q(vS4^2u2iW^lv<5y_Gz&uD7V@ zP1!Q$pwu*#tYcJ$^A@_1G-;4C<99qLvykh7zgBmFB$?A<(EQYza2~N&eb<7anrs6F zZGH}&gkpfpi2`!*Q_F?8p;(K!Rt}#{ZPT%xrHOHWiM8FPwr2}X&p2zOTfZtsRk zXZAUSJ$)N&e=vnd=>RB4we1f(r955e_J^G%x9rsX*QE2#^GW9m*!~bew1L;agg*U4 zq;u_wq%$|P{egkNg`&xw(iccCFbL61iX~Jp!{qtpey&}rhqgb+#GB&om!N>j<*3B{ z7Ki(BCD05aHub@q8*OxoWwxvhw+M`ea~NVD*4Yj@gye6nORVl|9qaq>oUij3L$FvJ z-0NKxk&|e?B2%>~45^o-&(MvcOC=S)e~P9SsOQI&80i_+iiG z3kb_a$dl*i2;cWyzQE+@^IS|8>kV@@Y54-@m}Kgmi^KFNUw}uSvwVSpZ2CFx)95RR zU5U60fYHxBjw3`tY*jMbyjn+57zYP^6o3-jwk{p4&_lLWwa-}^0X`f73b@{2;)(JD zs9|XYHtZhW8{NovtFSZz{~Ce#9zGUQo~w`tg1{j`)&o`Mb1US}0>mW+>uAd8w*sg& zz8<5wqpR~{^m8%tyn#Q0-m2Kmb>s7Kj%&|ARPf)EqA+1deNjkNlxSn5qKP?Bjn&Ta zmQXQk(8`Zt?#rL$|f(1{zEM8{?pi8U2}RxWWn07@vO|C$Iog! zUQiX|c}BquCGBiXEkyaMGm^e6Gm-`d+~;Sc7iMJN`DSDvGXgz&!Cj2t4>Th)n~s3c zUv&f%FUtrf0!@XAU7Tai?-F>Lc2 z!e%1d!u%j?o)y;ccCEtJF9}j2V_oc8qT~K9-VQ~zwRgxCe>F9~` zb2CA`${N>492rmM z5cv12WZA(}3jWgpNdW6Qkn?DA^a$0wdQet-+*f;KgKCWb3aUE8E39%Shf9LVuPY~q zs}833)3{$-%Eq7djgxIxz~o?gFR%M$vV8r0{&f-`ir0Z*wS>X17$=9j1cR5+Cx@AX z;bSyf&B8FmzvvtN7>&BV2}qSW9<*<-ebm49yzkrh8D#Cr;a2q+J0NeVz5&O)7sklPyZahIg$`vQ_i)EPKhY5{9zAxWJsE{Hf*_C2zwtB*G#;1{7-e7i8{xcOR zAJz(Tyjb6ruK+~c%=jba&|Ix@tID0~U8|&J0LnqAVmI8weRCrnVcBvc44PrN2FqgR z^b3ir7XZe)L>w?5s{j-HD6|RtuEZ}0s12I)O6YEub{4o*pSEHPc3&Ed=?Rv5fgLQ< z-_lliV7759+k(&_y5*K%=ct29$S!{3MW3{yH^aipvK#^yX_btl4qAQoQ;(OEc zZgz>E;18I`T3%>*q=i1AQRtKhTRFl)u~5BLtEbUmk;Gzck1xj}7s2KRU?UFxM7tkg zc1H%V1hOzz@ChaM$XW+3?jRQl97>4Vh>)2g(l1#m!w#|X zutDhjlSS%>r53zM>c{iu-OflYfW7^Ku4&#uu!w(@VfwVmS}r)njo6{3epqTjj|>A+ z3!W$SV<30GPEn+&9^lnNx&Hc63ofsF{psG805qw~L#JtWc`;mmDhlbqlXzaAT|m9c z(!ndPi!#FIx=@Y*%N5})MNC`=!U%Dadi4+iVy9&Z#!i8;SR6c1S0V&g^!=t-xyL8#Gauj!o187+|etqAm@c zrrD(>hAtI`&O1@mt7F=AQBIWWLOWC3M6C;ZR;sf$SL2yKC|gh}#n=fEvS7ZM{^9o< ze>45VaxA`?{=o|U&GZjTi$I+H_niLmZZ8%k2CL!{QN8{Y9mJ>nJ0>o3g8w@Gf#5$1 z2N~{m>cbWkP}wHcv=3!1U(TOSc~F{%PJvJ=2!WJ*4}VG}7*7jP7Wt+8=`;u_=ix*M zOADcAodmJ9Nd0iCj42|iQ$*}IXKs|oIVV|ap1un>&UvdADy4pGm5EU~31T7JT21|^ zo&+&=oHL92Lb>uSSW=Nz#&DeTf~}pKB<7KkP#)pqC9^zU_$9(g5CKGUTGhZrVet=f zh}NDc^@AIOyn$B04@>=6kSC(U4NH3}VODo)C*SMmd5(FWvw4=mp_2hgbGTGn||KkzxN4bfti`q7hz6%(SaTL2BV?E2J?5>t3^e4WRj=#cv1ZjGgW zs5^DmRq6+)KY&+r=#Ue>#!b?42cI&EveXYwM98{TQxkjIRBci@9u@OoB)aPzzVyDb zb*Ugr{`tU{-iXN;{q;`aysK1?klx`{#^Q}oBeW1&^gh9&#{fZqsDRYcI*vKNV&&fp zI`tvzDvhIGN#lrm7#j|2D|p003Wu;&CLDm!GKHf%!v9E>;>ZW;TMEZh@CNmss-$r2 z(4(hG;kdr@Wd26XdhM>)>oOk zv0HsTWw{%>mAheZdW(lAimp(@ygxQxUUwT@;YjAqe~hECj|7dIZwBBKEk zPmTrfkI6TqZR?u=j~B1PW9N8HDCEpYp-?j_?64nF*x92vqM!(KirYpDOUP*AFhMds z+|F%9>$G>dmkk7#=Z*rbG81KEoD%5W0IWeBtSt_#ixfiK2&@gjnaJ3Jy09ruHF@j7YSzJ;c3`b& zAK`hx;-Cl*mZLuHm={0{Y1~SNz?Pj%aM8iWly3Pphj75O|5PR9j}gpY6vSTjxuC~#T^tv3cslV@NVN_Q!0 zEi@2t_z@`+H}u2)`2Rq1_xwV0#Qw(qX|Un9S4ln{K>H}HI=fgW4sgJ5?-$gXnE%cw~J|3zQ< zW4^My_CfRx6%7IZxI;%?{Fc3b%2y<8->YqJKjJEVhDv4R)Q|PEzS3t@$qp>G_5KDT z#@5q0D*5ahVkuzvbH2hk1FyEF{c>03FQ`%troLL$*adHsLL9vpwzPY8KIu+A2>d~W zlyfO-5mM?usemVwO4J$Wt>T>r5C?MSJEil>bXrD8sqhuw;g{(Ufu=3(`+clUK^69t zSdg=;VCREe5)*xZg6QV`6hutlLBT%ow^9&$ypw`h=N%N-8@EvqJbe=dvCdm4@KxSS zVL{HW;)|!bA{=^(f-vfFid6+UnM(yZ327+ENmNilPAEe`PNGE$a+2<;ASbk@AZN{& z4hP65O8TKo*Do{Iv0Rgq41?W0EeBGCSeqrCE|tw~ zH(up#tSU}tH?DOz4v0531eU%Sr?*qIw_l zu|N}pyQF%S3ifbD1CliOEpQiEn-|Jl)dq1K-A-O-K&Vxbw}IRE{~$?4?e-qt!r2ElS2?5$2yU1WKmfm zd3^XUeahy7-Y(I(4OiyYBRNtUdyxaU^-l`Jd)iSUansv^hm+=0+bvw*Ix-MLk!I(9F3Ajhdl} zZ$v05y^4^*U*WnaBQ&myF0VPn$phu^DN@Dn zRIeU9YH7_~CNQ?1CzMvYsc4b)1aI3`v97ry-9$}RCd&4SR3?f5dwrrNHBpn*iJGiV zl%?>H%tE;T8#Gb**hDF7fQ5jG%0s7V2)b*ca$)Ga6Ggo`rd=21M7b^$EOrw$7D_Aj zRlD_ssF@{G(z#Zn3-T1RNPRP~_RYZBy(hl8uiAY{?wk9ngZ>~ff^hrqIk5I!((E)& z#NY*qOH_ChmqS7;=lHnkfYod;x=tHEIWe7^e8Pxen@?(Q2KRj}|7Pi_xV|vWfo>N3p*6?BI-C* zjd(SDw6TbIC5h6W67$Y9<(*l7q6$i=3~97U7x5x;sEF5&x(eVTUg0yQL2pTYZA>!q3jYYh|F)N(%s?V5mXae@K8#Ae@Q(^Q+%b%zCNgQNKUpD<+7YsY* zC@$l$rSh~A&^|T#O0}~BIzl^uZ2qjXBj8z>3y%0>&=8iEgqEHhj%Mq|1>y9f2e>_53jquU}F?a z=7=lXmadwqQ#&6c<27{uYBz9bp@4zU%)S76i`+&w(0n)4!dWtVJh7N7ui;#IEfI^k z@~XsQVd?eX2Z=3Navibk-ss@!wm-OfSGLO^T+J8%IB>!fi?3597I*91qk(=Pe&uGm z@aP^LT)m%hd!1ZZHFF&Fk@r0p zaYjUtSE1yEp8o`>om|||@uGZ(S=h0Yi&JZcBV3BGJ*;+hd;q zb+6Pu0Xo(c&>4r9Kn>R)XTXszbpT#t9PU~#&a|q20#tx-vQOq-seJ;}M-a7=Fg*(j z4-oeI~idDmXRbu0)oUzcznLfYHaL^hVE1fhykfg3ebB=c`8Lmu_}GMjeg0TQV*(^ppf;NfMX( z^D#<9?UfYR>!pCNQ3YiZyx&ZVe|X8a>XD;#+?h%lN9fb zK3{y{8Yoxe+m0j=9RpifE>d3l3pL66e!0+_39{=BW-F2O_OLMwUi)0MHv0U#Sub>q zL3pEQqQ3x3J$Rs0>5%IhYCg0MDzvJc1Q!S^Kd6FlSjzLLaqQFex~IAs4LwLFIfR<) z<@`DoS-w}r5~=$X^Esy^%2k}J7+B1YFLUw9L!77~=u-^o|9yFfbU=M}@+(xN`Q=jg zDnlB3s+Xdn2T30>;CeZKm5MB1Rk6e-YKr;%hzh*lDh9c!kzsa*i9#i{3Ho9~v6P;6 zQY}-kKPsajDzQYt(YEsxxlUu^3@$nUSr^6LJ;g6N6fisVp~wSA06GHIM-^Nj9%Dps zdV_iE$GZawf<(N7>uH$i{9Ro<$px9=?&29Pc4|wMp5QthUZFUKE}+EWs({c1y3w#D zFm-|6GrUA2;6fn^wp{V48{2!<(|Nw^Ipag3c0hGc!4bA_+1T!|^vgJoMA%WEC45zTQf~oCpzM?G9sLqmdxP)L&)gk``W(5bhJ6kjP5Z zJRIFcD-uxGL~4(P%C#psr7QL2kxtmjo&{-Fa3JK)Zw7XG5j44!t2A$D1u(wgQr~{& zckxO?)<}aqdKQvPO^?t4q-l1bJi&C88`EVgX{8kes)cfVE9?m73lP@I5ruE2vm-?_ ztdc?0WQh(sy_j}7+;c7DTuqdn=uol%YEthcS0}l3(o!Wf(BiPwz1(P*t>}4ZCB&pW zsBG1{d$`wHxkRA0*|JqMQzK$e9Waz9F(Vu!v64~)7Ardf#OS5|y3POsQf*DJCvEQVB9c7W^GCt*oKZ4qx*Jkf1`_ML0kDPi5fnb5y$ zyL3a-HskSABXz7qJ4#rkV$do%&&<7|-tCYxf#Bwmpqf_?CEcWWRNu9;CxL)QMF$Jc zs?#phh`bG;2BWTFaQeU*Nphk-u&;na|DmS2o1zsy& zfD{&xuf;W#uz;yuTtf&8d^5SYE^*9`NH+8!U^%thRu7G`a?hos2sd_8wVxT=F{4o% zeG{n4IGfby`|hbYj%Z@P`vlJZ>}u;Ycc1d+eSKJv2nltVZj(huiY`!hh)>&@8D2R z8bk-cMaAb3_*d6j#vxA>43_Xw+8jlE4?&%y`K6;D`xk%Gd(DW%18ND%uQo)Ho&I$y zdZ_b!*IO8Y8??&1BPb2nc|xZ&FLA)i8S#kYWUn55%17%ISS3|>2^@nVh5PI?N$eEW z%Z4Gv_yY0GVJeHVf&p$z>>gl5e(wQxDJ_&e{nG)gJph~S(szuwQTdJ$L1MMP+b_Q< z+XY1c#axIPcV~M%H1=>$0fzSY+E6rEg!?@P?XY>#ihsOm<2o(Nj_90{q6=c={qPJ@ zI6CB7d7#gCv_$)!#&Cn+d%5LEa#WTrFPth_+4)}nT)vk?z8CY8Fn7Fl(7qI>U*4}H ziFU=MEiu|1KMP?UtH{q$Bb3!E@DST==zp&FxIyy6c(@)Iu8SVAbaqRQa z;FOiK<9#pfj4yOyGgZICt0{2)nyS_1Zqh>h<0jTIt}iVoWJ7qyWprqoVqDV0U|fCnL5#aF+W*#k5hm-wxBSbc*w(E}HMUKF zgGwLy>;HATu`QK6+a~nS^iy!wE+7s5pA;ibm$|;{wV=_@xDBs~QK^C4V*%L@6SKub z{LS}t^d3xaqKxBu85?3Dci_kSs^?$!_UE&4c}0s*b-bbNB}Qb6Y=H04?XQ9fHk6>SgsKU3%@Zdfyzw4 zOlVe-UtYjaVg`Um?dTT7Z3!4|R0K@RHP4B(HfRasbpnP{YrTN6hZCiML1;Sx!*FaQ zwL$o&o3>55Rgf?6@y7DyPA6aVeNdKFVaf!e379*NB&WpdE927T3z9C%ryfNZ)^h)f z%uK>8=&Uk4)nKJGFX}Rew*#8>-h=XsuW*b9Q3J}yIY>vs(+QY4Ct!ke7iFO{Y)WVF z0)}5Wf8aB|k8SE#vRNd6O}Y{=7K`BAZ>N6EZRFfdynsPR*+{_nI#mJVZq)>g>rMj3 zoV)sfF9HTZ$($fykUL^As73TKmrWD`Mh90ftqoU1Y6n0)PRLb?`8CY*6{a)4#Cv@w zbWdMxq}~1oPG1Q&rwDK|x3-N_c&9JFaGiOluREq!5tIvd`f6bZm(Zs65&5Xf%zCG9 zbIj@MUa2{K$C?UG-x8<|oxbC>Ofb0COCKFeV={^m=1N|7PG9#*&FSm66v1Yqy1tN# zNU$R*bjY$CjX8hXn?+QxQ}}lmP3{|NImlY5wND}&YR&g+t6s$>u~hxFu7GuY(teDBoH*zj zhDr)DePhvkc}rZ?Vm-djV|$7Br<-xE;L0`h){79}EjHYvyXaVoqTxfC2uKebQC+D3uyTZRFp` zz8&F>T&bgNq*lmt*ZQLE0#ph>=$H30>+St&&UB6a4u(Pr;Jy9I4@K*R_9zbJ7wJef z8&iW+Sa+-Pf`5I5?EeOD6R`%$20 zKwotpTT7B|SN&$CXctWmcG^Z7$7%G|WtdshgVJUE1(;n_2zo4BAl<;N?qwZ3XiVqH z>Whu8WC)r#v$#czfzq}in*_o!1f%a&xzvRN9G{pV3skt*QQ=M%`?0|(R-}!$H5noz zFfB@#r+`k(RJDdZB^vvSJgPF%TB%Sa-h#F?YU4WRM;0?h2M$MU9Wsd~ZL5$rS`Xc~ zi|v-4FgdB;l7P&Nx)$_Bpn9SU3C>K~1XAOg*F5cq*I<-D+uF;~&9)4r@<`gJ1)DC-RxlD@e<5x`piyN)Sdpb-@CM;=59sJ%M}%akk|oA zp)u1^c9B+82}SeS_bBXx1DIjrGM}d`r3>`*>dUU}rbwi&JAb2Q|cGA%akl>WwPajHyU&$-iL){2QdEoLoEXaN@#LK(g$Bu(3MHgMSN zU8g9kRe4uPK`HJyQ2TT_)TbqvgXFRgWiF8eq{Cb1s}yA4{9KW9c18o~mr`X$1L>EJ zRr_*xuqIVasX~0v+psNwD)&l9YPFV>ahc%KS!7hpzhdJJepJFG8v4cAiXks0eu5xa zDJ8Hhar;&sKgdagh?`PJ6bWgvO7XjxwkB1}XJ(#Op3PUDnGdq^Y=y5^A@=2lGAo3> z$mo;PR=x6MrS#bvK=zAUee_R0wXl)LmNVcaD_G8)$F`-Jk(w%xB%T8SpU}E!BOn-6TNqc^ zC_CUO)?78K#Rb{@mlhYx#48z<>Ttv}gMk^Ddt(3cc-U8SIE}<6QBBH+;$D~M!rU*x z20y=lx0#uLcVWGM*HWi&iWlw|r9v@)uu4n(%oYA!dsy-B&UyEXjE?N2R84Q;v+~evI+oI%?7S#duZnlF zJOEwdT9I-?e43-dZD-+>wgx^p3cj2&m2Y^h{OGl8KHJ1;$rSi%u2UCB^M-Ty1Shmh z8L0W8(Gg(znjeW^94#Na+tbI?=sk7=ODNnClpF?YP;z#NLHU$QeBVchZ#a@X;C`Pv zqQQi`O`{Z!74_S%PNF?dA#c&!rW7*_jYH<>Zc`RDRE#I$Hy%98at!aNBYksm-uj6j zJi_9^mpP@iOeqJ(?LPzsca}!cjv|$Dha{u~j_BJC_6v%meNu1=f$14#hlISGV(wZB zuQhY0B&H6`;~|TE(NrPz<#rn;iay}C#m-`~_#q|^ks`T3*xw@ep~)rphQyM0hMLQF zNr4+hs+v4+eM2c6k#_g6X%tS6^9C~x%s}T|Swmp-wEj5-Smp*CrDsRp=ZJYSB|Th2 zvK^MKawJnMM?wbDS4{>SD2pUyua;=^9!}C%6+&?{U>UgT8Fu$mYLJH7@Uv4fsk{>P z4@Zw0IpRXOCVE6aQEna-rH2aVidnPnZXsJ%+I8tuwM2y_u-+`OuJtL%m7rEggyATm0V%hDf!Gc7F2L)s4E4=VO}JT;k#rSv4h7l*tDmoD?~$`YgOZD zQA1e_75rNbf`Y{))DLO&1P(`uzzcfzv`(V2qje#Yz&|VGEK|!uG%KLoGrlZ4yBZ%m zk{onSjcgWqRMk~x@rO{M%w(BG!{G)=b)N5LrLzPb#hN>N`^1p5NMt`%`=l4o;utTknL15qagDImj632m9FHmS|Ba(hOk0Xc#)@o#F(wh~ zj)Y|4+4d1bC5H19Uy(pY*RuZWlc&06zfkUh7 zuGOl%YbvF7dB`T>;V2qKF3vb`{5+`e^B^14_<1nK&ja!Epu*1s@$;a<&x0yITXV+G z`sMf;mifl;^U!yZX2Wv$L#^BuejbkT^Ps}d47SeC8jIFA9yosHM~$Dk7C%$$cNR^# zfNYj9#*{fVmbvG*v`w$Hx&_45a|=lM%oY&VA$(o7fY9Ul`B}&q=jWmLc~J86P~q6kY44orX^o(#DKnQ{LA{QYyWRWuv z#DQ~FA+S0g!V1jlPVE$1<))dNX`7o#<^q=iF(OnH{a0U=jS z4u^%BLNjY|vl)5$IDfW9TPsY?(3lgVQ%1eNBBCAF(F|? zox4?wo0T}VusP-+pC`8b>u{Q6>HOs}1Z#&6PC&(LdFEgB=OGm_wNNEAQ8azN7+W@RAi8O);nMyq;cK{l%6)KQek4?s$S5(7s6 zNIMfIl_17LDik2-XC=axsV%dQm7GT1;5pHIH*snT#m!h46u0Dk1z+5l6k>DtDsTAr zPZJ1iIIfb|8TenF^bf!GN3d968eRtiL<*13z~ z6^LN-Z$JcII5j$3=EoTgJ|P;k$!4kXJsKTu)rK)O&&S36S#7ajOlEbQuCiGu(&644 z@w4(P%7-Srh9X8uwXBJ%y9CVZzTLqh^h z?l-~<>?Tadb6v;NrRTDpb_5sBH?8PdY{?@&HBSCJ?h6#{6b?y%6WX&}L?$OV zo`(Zxyhxd_O=2Y5n}C@ZDJsf_Mt3E_L-_Pfv}ZB)s@y}k-2^}kpKuSWylAt@s5(EyU!oi-wgyIC8ehwRL1`<&MKXcM>lhtuC>RGfC+a}8`JB^WLA9Z zjuy{E?EKjdZX*)1)0_j;C@1hY-@}oUttvEr$K-Xf2%j|5VZz~Di!*+-x`*U+VgVavmiEV&kIUm*MOHXwda8z>b|i+nda~lH5$=c z{I?`gA=`PzrlqGKHKxTqo|LDv>DBm6WN(@RI<1_ON*H(=uRE`o8)&AH9o#54&`cv( zxKVDPnN|p%aAUE7#^RXMl?^l&$efm&+VihVsI3BoJ9|L%a(XqvV^8!_#&}e-3z~&4 z+A?u|-jvR9=bBIH96Q`0n}&~}r5#1TZ9#yGQH&`dt;5QmQLP&uJho?FrXmzNWDd5X|)l9gVVs7F)m5C=wuQKrjp=%T0 z(ZqKu6W`IqcPbOFkT5sOiC3ta8|B0+R?Uqs7xS!OH8;wM?`TZHt7-t*#Os%vcv2U? z5fksu`7e_9vW}bhg`(f;QDzkwh354WPqoVAxwgxRr)|a0-NcWX>}c0!H~Z>X>Q71< zF=Tz7?Sd?C6j`&pr?91u5vRhGb{|MXkurh2K*?df&H#5WVF7v-scBqawejra0kiQ^ zJu}{N`!Vd~fn>Dsx_%s!jg}=rT|zu^`-Z;wRK_+!q+(-`b0rZY8$&Bf-6&jt@_^5z z(X69>LdD|9aPojVnds{`whg`@=t>wFfS#a8j)4xxDvYbZH$T{|#QtPaWXHosY~S=B zO_-fLzzj5P24qSn{H6R&lunU#=W)%TA8)Yp6qEW9N+%y+_Q4-GiyC6_{|gDJ$dqI2Eo-kd z=YE08gLxdxX4@dx8GRg!x<86Jo>PN+06&r|!)u{hXogJQ0)Wb|taBhbUbCYe3l|l!iFR(+TE(W;9oyRcB&Fp zG381FhH60dwDxDr$dn5WnFt@8^BwG{wKmYzFP7K}s?*$TgSVaPS%eX2om6xD}Ee@_Z6{qtB zEl+hcurvuz_QG*;{r#@XO;fuSE1$W6_gCf%67 zpkD`dm4&1gz(%VMAe2R_tmmUA1@3|9Jq=710DH0#goSp%nQCDA#){Mbg{SEI8!`Yo z*{rmG&uTh6pirhH1FAG0=#Pvm2`vcTQ=nPsd?#F^DcOL#Ud&`V;vY<464>`fWje@@ z4Pwv%=uz7KNY)M=26`Iy#Tr$TvTPRK2qZ9EEZ*=`5Z;&_#W)$LjEOq(=*Ef!K^*yR z2*UBV)5|G)5#6a{Mrj2>KUzl+X|o)sqk!rhAecdEG-A#Jv+kvn4LNmN3$7HlA;CQN z8|MK@`0h8(1519@J2(%vxIKTy{Lq$s0Z0Zp2sA5}wuvX&s%i%>?32M0%M>umehR4W z5CzD+_nPRsx_iJhMs^Jb>)sT`A?eTFTIeXB25|bt^*OHXiy7t(u(-o;R*@xlEqRJ} z;3i;~AGp*vfsonKV?_6H9v9vL$g%1jXzHC~a#%E_1}DDdrc~f?PFyLD`19U-}-rb>`-Uta1&f$T&k0^H!=- zczhn3lJknY^Wm;O*IL|N4tH0ocMpcUhr(UCIVPPWW75|)zXsU%mjf6e_0EfOwSj

EDxy*A+19w@aUcB}4GW$IJ}`5)M7 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%0D!)VQdJ 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%0D(%|3%%CFKSO;3@fZ^TG<$G1b9?ugWBh}D8J3dM~ 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 z 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

;0 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 z%0A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�D!!(+@(xOE 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 Fe*lS7f}j8Z diff --git a/coprocessor/asc/bootstrap_asc.sh b/coprocessor/asc/bootstrap_asc.sh deleted file mode 100755 index f0c6a1a..0000000 --- a/coprocessor/asc/bootstrap_asc.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/sh - -DEBUG=false - -# Function to upload a contract and return its code ID -upload_contract() { - local wasmfile=$1 - - sleep 1 - echo $PASSWORD | wasmd tx wasm upload $wasmfile --from validator --chain-id testing --node tcp://localhost:26657 --gas-prices 0.25ucosm --gas auto --gas-adjustment 1.3 -y --output json -} - - -# Function to deploy a contract and return its address -deploy_contract() { - local code_id=$1 - local label=$2 - local init_msg=$3 - - $DEBUG && echo "code_id: $code_id" - $DEBUG && echo "label: $label" - $DEBUG && echo "init_msg: $init_msg" - - $DEBUG && echo "instantiate..." - - # Deploy the contract and capture the output - TX_OUTPUT=$(echo "$PASSWORD" | wasmd tx wasm instantiate "$code_id" "$init_msg" \ - --label "$label" \ - --from validator \ - --output json \ - --chain-id testing \ - --node tcp://localhost:26657 \ - -y --no-admin) - - # Check if the transaction was successfully submitted - if [ $? -ne 0 ]; then - echo "Error submitting transaction for $label" - exit 1 - fi - - # Extract the transaction hash - $DEBUG && echo "Extract TX HASH" - TX_HASH=$(echo "$TX_OUTPUT" | jq -r '.txhash') - $DEBUG && echo "TX_HASH: $TX_HASH" - - # Wait for the transaction to be included in a block - sleep 6 - - $DEBUG && echo "Query the transaction result" - # Query the transaction result - TX_RESULT=$(wasmd query tx "$TX_HASH" --output json --node tcp://localhost:26657) - $DEBUG && echo "TX_RESULT: $TX_RESULT" - - - # Check if the transaction was successful - $DEBUG && echo "Check if tx is successful" - if [ "$(echo "$TX_RESULT" | jq -r '.code')" != "0" ]; then - echo "Transaction failed for $label: $(echo "$TX_RESULT" | jq -r '.raw_log')" - exit 1 - fi - - # Extract the contract address - CONTRACT_ADDRESS=$(echo "$TX_RESULT" | jq -r '.events[] | select(.type == "instantiate") | .attributes[] | select(.key == "_contract_address") | .value') - - $DEBUG && echo "Contract Address for $label: $CONTRACT_ADDRESS" - - # Return the contract address - echo "$CONTRACT_ADDRESS" -} - - -export PASSWORD="1234567890" -# Setup the genesis accounts -# echo $PASSWORD | /opt/setup_wasmd.sh cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6 wasm1z6rlvnjrm5nktcvt75x9yera4gu48jflhy2ysv wasm1flmuthp6yx0w6qt6078fucffrdkqlz4j5cw26n wasm1s50rdsxjuw8wnnk4qva5j20vfcrjuut0z2wxu4 wasm1k4c4wk2qjlf2vm303t936qaell4dcdmqx4umdf wasm1a9rs6gue7th8grjcudfkgzcphlx3fas7dtv5ka -echo $PASSWORD | /opt/setup_wasmd.sh wasm1z6rlvnjrm5nktcvt75x9yera4gu48jflhy2ysv wasm1a9rs6gue7th8grjcudfkgzcphlx3fas7dtv5ka - -# Configure the KMS full node -sed -i -re 's/^(enabled-unsafe-cors =.*)$.*/enabled-unsafe-cors = true/g' /root/.wasmd/config/app.toml -sed -i -re 's/^(address = "localhost:9090")$.*/address = "0.0.0.0:9090"/g' /root/.wasmd/config/app.toml -sed -i -re 's/^(minimum-gas-prices =.*)$.*/minimum-gas-prices = "0.01ucosm"/g' /root/.wasmd/config/config.toml -sed -i -re 's/^(cors_allowed_origins =.*)$.*/cors_allowed_origins = \[\"*\"\]/g' /root/.wasmd/config/config.toml -sed -i -re 's/^(timeout_commit =.*)$.*/timeout_commit = "500ms"/g' /root/.wasmd/config/config.toml - -# Start the KMS full node -# /opt/run_wasmd.sh -nohup /opt/run_wasmd.sh > /dev/null 2>&1 & -sleep 5 - -# Add Connector account -PUB_KEY_KMS_CONN='{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A/ZoCPf+L7Uxf3snWT+RU5+ivCmT8XR+NFpuhjm5cTP2"}' -echo $PASSWORD |wasmd keys add connector --pubkey "$PUB_KEY_KMS_CONN" -CONN_ADD=$(echo $PASSWORD |wasmd keys show connector --output json |jq -r '.address') -echo "PUB_KEY_KMS_CONN: $PUB_KEY_KMS_CONN" -echo "CONN_ADD: $CONN_ADD" - - -# Add Gateway account -PUB_KEY_KMS_GATEWAY='{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AqAodaWg+3JUxIz6CeH0hKN8rxUzuBgQ67SR0KemoDnp"}' -echo $PASSWORD |wasmd keys add gateway --pubkey "$PUB_KEY_KMS_GATEWAY" -GATEWAY_ADD=$(echo $PASSWORD |wasmd keys show gateway --output json |jq -r '.address') - -echo "PUB_KEY_KMS_GATEWAY: $PUB_KEY_KMS_GATEWAY" -echo "GATEWAY_ADD: $GATEWAY_ADD" - - - -# Send tokens to connector and gateway accounts -echo $PASSWORD |wasmd tx bank multi-send validator "$CONN_ADD" "$GATEWAY_ADD" "100000000ucosm" -y --chain-id testing - - -# Pre-assign code ids -code_id_ethereum_ipsc=1 -code_id_asc=2 - -# Upload smart contracts -echo "upload_contract ethereum_ipsc.wasm" -upload_contract /app/ethereum_ipsc.wasm -echo "upload_contract asc.wasm" -upload_contract /app/asc.wasm - - - - -# Instantiate smart contract - ethereum -echo "sleep..." -sleep 5 -ETHEREUM_IPSC_CONTRACT_ADDRESS=$(deploy_contract $code_id_ethereum_ipsc "ethereum_ipsc" '{}') -echo "ETHEREUM_IPSC_CONTRACT_ADDRESS:$ETHEREUM_IPSC_CONTRACT_ADDRESS" - -if [ -z "$ETHEREUM_IPSC_CONTRACT_ADDRESS" ]; then - echo "Failed to deploy ethereum-ipsc contract." - exit 1 -fi - - -# old-version -# INIT_MSG=$(printf '{"debug_proof": false, "verify_proof_contract_addr": "%s", "kms_core_conf": { "centralized": "default" }}' "$ETHEREUM_IPSC_CONTRACT_ADDRESS") - -# new version -INIT_MSG=$(printf '{"debug_proof": true, "verify_proof_contract_addr": "%s", "kms_core_conf": { "centralized": {"param_choice": "default"} }, "allow_list_conf":{"allow_list": ["'"${CONN_ADD}"'"]} }' "$ETHEREUM_IPSC_CONTRACT_ADDRESS") - -# INIT_MSG2=$(printf '{"debug_proof": false, "verify_proof_contract_addr": "%s", "kms_core_conf": { "threshold": {"parties":[{"party_id": "01", "address": ""}, {"party_id": "02", "address": ""}, {"party_id": "03", "address": ""}, {"party_id": "04", "address": ""}], "response_count_for_majority_vote": 3, "response_count_for_reconstruction": 3, "degree_for_reconstruction": 1, "param_choice": "default"}}, "allow_list_conf":{"allow_list": ["%s"]} }' "$ETHEREUM_IPSC_CONTRACT_ADDRESS" "$CONN_ADD") - -echo $INIT_MSG -sleep 5 -ETHEREUM_ASC_CONTRACT_ADDRESS=$(deploy_contract $code_id_asc "ethereum-asc" "$INIT_MSG") -echo "Ethereum ASC contract address: $ETHEREUM_ASC_CONTRACT_ADDRESS" - - -echo "Done bootstrapping. Now simply running the validator node ..." - -# keep the container running -tail -f /dev/null diff --git a/coprocessor/asc/bootstrap_asc_new.sh b/coprocessor/asc/bootstrap_asc_new.sh deleted file mode 100755 index b3efd65..0000000 --- a/coprocessor/asc/bootstrap_asc_new.sh +++ /dev/null @@ -1,176 +0,0 @@ -#!/bin/sh - -# TODO: fail script if some command fails - -ulimit unlimited - -export PASSWORD="1234567890" - -############################# -# Genesis # -############################# - -# Setup the genesis accounts -# echo $PASSWORD | /opt/setup_wasmd.sh cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6 wasm1z6rlvnjrm5nktcvt75x9yera4gu48jflhy2ysv wasm1flmuthp6yx0w6qt6078fucffrdkqlz4j5cw26n wasm1s50rdsxjuw8wnnk4qva5j20vfcrjuut0z2wxu4 wasm1k4c4wk2qjlf2vm303t936qaell4dcdmqx4umdf wasm1a9rs6gue7th8grjcudfkgzcphlx3fas7dtv5ka -echo "Setting up genesis accounts" -chmod +x /app/setup_wasmd.sh -echo $PASSWORD | /app/setup_wasmd.sh wasm1z6rlvnjrm5nktcvt75x9yera4gu48jflhy2ysv wasm1a9rs6gue7th8grjcudfkgzcphlx3fas7dtv5ka - -echo "DONE WITH SETUP-WASMD script" - -# Configure the KMS full node -sed -i -re 's/^(enabled-unsafe-cors =.*)$.*/enabled-unsafe-cors = true/g' /root/.wasmd/config/app.toml -sed -i -re 's/^(address = "localhost:9090")$.*/address = "0.0.0.0:9090"/g' /root/.wasmd/config/app.toml -sed -i -re 's/^(minimum-gas-prices =.*)$.*/minimum-gas-prices = "0.01ucosm"/g' /root/.wasmd/config/config.toml -sed -i -re 's/^(cors_allowed_origins =.*)$.*/cors_allowed_origins = \[\"*\"\]/g' /root/.wasmd/config/config.toml -sed -i -re 's/^(timeout_commit =.*)$.*/timeout_commit = "500ms"/g' /root/.wasmd/config/config.toml - -# Start the KMS full node -# /opt/run_wasmd.sh -nohup /opt/run_wasmd.sh > /dev/null 2>&1 & -sleep 6 - -############################# -# Wallets # -############################# - -# TODO: Create multiple accounts - -# Add Connector account -PUB_KEY_KMS_CONN='{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A/ZoCPf+L7Uxf3snWT+RU5+ivCmT8XR+NFpuhjm5cTP2"}' -PUB_KEY_KMS_GATEWAY='{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AqAodaWg+3JUxIz6CeH0hKN8rxUzuBgQ67SR0KemoDnp"}' - -# Add accounts -echo $PASSWORD |wasmd keys add connector --pubkey "$PUB_KEY_KMS_CONN" -echo $PASSWORD |wasmd keys add gateway --pubkey "$PUB_KEY_KMS_GATEWAY" - -sleep 6 - -# Get addresses -CONN_ADDRESS=$(echo $PASSWORD | wasmd keys show connector --output json |jq -r '.address') -GATEWAY_ADDRESS=$(echo $PASSWORD | wasmd keys show gateway --output json |jq -r '.address') -VALIDATOR_ADDRESS=$(echo $PASSWORD | wasmd keys show validator --output json |jq -r '.address') - -# TODO: Have one account per connector instead of a shared one -# TODO: Add to the faucet account too - -# Send tokens to connector and gateway accounts -echo "Sending tokens from validator to connector and gateway accounts" -# The validator has 1000000000ucosm (setup_wasmd.sh) -echo $PASSWORD | wasmd tx bank multi-send "$VALIDATOR_ADDRESS" "$CONN_ADDRESS" "$GATEWAY_ADDRESS" "450000000ucosm" -y --chain-id testing - -############################# -# Contracts # -############################# - -# Deploy and instantiate the ASC smart contract -# - -sleep 6 - -# Upload ASC -echo "Uploading ASC" -ASC_UPLOAD_TX=$(echo $PASSWORD | wasmd tx wasm store /app/asc.wasm --from validator --chain-id testing --node tcp://localhost:26657 --gas-prices 0.25ucosm --gas auto --gas-adjustment 1.3 -y --output json) -export ASC_UPLOAD_TX -echo "ASC_UPLOAD_TX: ${ASC_UPLOAD_TX}" - -sleep 6 - -echo "Uploading ISC" -TM_IPSC_UPLOAD_TX=$(echo $PASSWORD | wasmd tx wasm store /app/tendermint_ipsc.wasm --from validator --chain-id testing --node tcp://localhost:26657 --gas-prices 0.25ucosm --gas auto --gas-adjustment 1.3 -y --output json) -export TM_IPSC_UPLOAD_TX -echo "TM_IPSC_UPLOAD_TX: ${TM_IPSC_UPLOAD_TX}" - -sleep 6 - -# Extract the transaction hash -ASC_TX_HASH=$(echo "${ASC_UPLOAD_TX}" | jq -r '.txhash') -export ASC_TX_HASH -TM_IPSC_TX_HASH=$(echo "${TM_IPSC_UPLOAD_TX}" | jq -r '.txhash') -export TM_IPSC_TX_HASH - -echo "ASC_TX_HASH: ${ASC_TX_HASH}" -echo "TM_IPSC_TX_HASH: ${TM_IPSC_TX_HASH}" - -if [ -z "${ASC_TX_HASH}" ]; then - echo "Failed to upload ASC" - # exit 1 -fi - -if [ -z "${ASC_TX_HASH}" ]; then - echo "Failed to upload Tendermint IPSC" - # exit 1 -fi - -# Wait for the transaction to be included in a block -echo "Waiting for transaction to be mined..." -sleep 6 - -# Query the transaction to get the code ID -ASC_CODE_ID=$(wasmd query tx --output json "${ASC_TX_HASH}" | jq -r '.events[] | select(.type=="store_code") | .attributes[] | select(.key=="code_id") | .value') -export ASC_CODE_ID -TM_IPSC_CODE_ID=$(wasmd query tx --output json "${TM_IPSC_TX_HASH}" | jq -r '.events[] | select(.type=="store_code") | .attributes[] | select(.key=="code_id") | .value') -export TM_IPSC_CODE_ID - -if [ -z "${ASC_CODE_ID}" ]; then - echo "Failed to retrieve ASC code ID" - # exit 1 -fi -if [ -z "${TM_IPSC_CODE_ID}" ]; then - echo "Failed to retrieve Tendermint IPSC code ID" - # exit 1 -fi - -echo "Tendermint IPSC code ID: ${TM_IPSC_CODE_ID}" -echo "ASC code ID: ${ASC_CODE_ID}" - -# Instantiate the ASC smart contract -echo "Instantiating ASC" -if [ "$MODE" = "threshold" ]; then - echo "Instantiating threshold ASC" - # run in threshold mode - ASC_INST_TX_HASH=$(echo $PASSWORD | wasmd tx wasm instantiate "${ASC_CODE_ID}" '{"debug_proof": true, "verify_proof_contract_addr": "dummy", "kms_core_conf": { "threshold": {"parties":[{"party_id": "01", "address": ""}, {"party_id": "02", "address": ""}, {"party_id": "03", "address": ""}, {"party_id": "04", "address": ""}], "response_count_for_majority_vote": 3, "response_count_for_reconstruction": 3, "degree_for_reconstruction": 1, "param_choice": "test"}}, "allow_list_conf":{"allow_list": ["'"${CONN_ADDRESS}"'"]} }' --label "asc" --from validator --output json --chain-id testing --node tcp://localhost:26657 -y --no-admin | jq -r '.txhash') - - -elif [ "$MODE" = "centralized" ]; then - echo "Instantiating centralized ASC" - # run in centralized mode - ASC_INST_TX_HASH=$(echo $PASSWORD | wasmd tx wasm instantiate "${ASC_CODE_ID}" '{"debug_proof": true, "verify_proof_contract_addr": "dummy", "kms_core_conf": { "centralized": {"param_choice": "default"} }, "allow_list_conf":{"allow_list": ["'"${CONN_ADDRESS}"'"]} }' --label "asc" --from validator --output json --chain-id testing --node tcp://localhost:26657 -y --no-admin | jq -r '.txhash') -else - ASC_INST_TX_HASH="NONE" - echo "MODE is ${MODE} which is neither 'threshold' nor 'centralized', can't instantiate smart contract" -fi - -export ASC_INST_TX_HASH -echo "ASC_INST_TX_HASH: ${ASC_INST_TX_HASH}" - -sleep 6 - -# Instantiate the ISC smart contract -echo "Instantiating ISC" -TM_IPSC_INST_TX_HASH=$(echo $PASSWORD | wasmd tx wasm instantiate "${TM_IPSC_CODE_ID}" '{"validator_set": []}' --label "tendermint-ipsc" --from validator --output json --chain-id testing --node tcp://localhost:26657 -y --no-admin | jq -r '.txhash') -export TM_IPSC_INST_TX_HASH -echo "TM_IPSC_INST_TX_HASH: ${TM_IPSC_INST_TX_HASH}" - -# Wait for the transaction to be included in a block -echo "Waiting for transaction to be mined..." -sleep 6 - -# TODO: add a check -> raise an error if some upload failed - -echo "ASC instantiation result" -ASC_INST_RESULT=$(wasmd query tx "${ASC_INST_TX_HASH}" --output json) -export ASC_INST_RESULT -echo "${ASC_INST_RESULT}" | jq -r ".raw_log" -echo "${ASC_INST_RESULT}" - -echo "Tendermint IPSC instantiation result" -TM_IPSC_INST_RESULT=$(wasmd query tx "${TM_IPSC_INST_TX_HASH}" --output json) -export TM_IPSC_INST_RESULT -echo "${TM_IPSC_INST_RESULT}" | jq -r ".raw_log" -echo "${TM_IPSC_INST_RESULT}" - -echo "Done bootstrapping. Now simply running the validator node ..." - -# keep the container running -tail -f /dev/null diff --git a/coprocessor/asc/bootstrap_asc_threshold.sh b/coprocessor/asc/bootstrap_asc_threshold.sh deleted file mode 100755 index 0587873..0000000 --- a/coprocessor/asc/bootstrap_asc_threshold.sh +++ /dev/null @@ -1,150 +0,0 @@ -#!/bin/sh - -DEBUG=false - -# Function to upload a contract and return its code ID -upload_contract() { - local wasmfile=$1 - - sleep 1 - echo $PASSWORD | wasmd tx wasm upload $wasmfile --from validator --chain-id testing --node tcp://localhost:26657 --gas-prices 0.25ucosm --gas auto --gas-adjustment 1.3 -y --output json -} - - -# Function to deploy a contract and return its address -deploy_contract() { - local code_id=$1 - local label=$2 - local init_msg=$3 - - $DEBUG && echo "code_id: $code_id" - $DEBUG && echo "label: $label" - $DEBUG && echo "init_msg: $init_msg" - - $DEBUG && echo "instantiate..." - - # Deploy the contract and capture the output - TX_OUTPUT=$(echo "$PASSWORD" | wasmd tx wasm instantiate "$code_id" "$init_msg" \ - --label "$label" \ - --from validator \ - --output json \ - --chain-id testing \ - --node tcp://localhost:26657 \ - -y --no-admin) - - # Check if the transaction was successfully submitted - if [ $? -ne 0 ]; then - echo "Error submitting transaction for $label" - exit 1 - fi - - # Extract the transaction hash - $DEBUG && echo "Extract TX HASH" - TX_HASH=$(echo "$TX_OUTPUT" | jq -r '.txhash') - $DEBUG && echo "TX_HASH: $TX_HASH" - - # Wait for the transaction to be included in a block - sleep 6 - - $DEBUG && echo "Query the transaction result" - # Query the transaction result - TX_RESULT=$(wasmd query tx "$TX_HASH" --output json --node tcp://localhost:26657) - $DEBUG && echo "TX_RESULT: $TX_RESULT" - - - # Check if the transaction was successful - $DEBUG && echo "Check if tx is successful" - if [ "$(echo "$TX_RESULT" | jq -r '.code')" != "0" ]; then - echo "Transaction failed for $label: $(echo "$TX_RESULT" | jq -r '.raw_log')" - exit 1 - fi - - # Extract the contract address - CONTRACT_ADDRESS=$(echo "$TX_RESULT" | jq -r '.events[] | select(.type == "instantiate") | .attributes[] | select(.key == "_contract_address") | .value') - - $DEBUG && echo "Contract Address for $label: $CONTRACT_ADDRESS" - - # Return the contract address - echo "$CONTRACT_ADDRESS" -} - - -export PASSWORD="1234567890" -# Setup the genesis accounts -# echo $PASSWORD | /opt/setup_wasmd.sh cosmos1pkptre7fdkl6gfrzlesjjvhxhlc3r4gmmk8rs6 wasm1z6rlvnjrm5nktcvt75x9yera4gu48jflhy2ysv wasm1flmuthp6yx0w6qt6078fucffrdkqlz4j5cw26n wasm1s50rdsxjuw8wnnk4qva5j20vfcrjuut0z2wxu4 wasm1k4c4wk2qjlf2vm303t936qaell4dcdmqx4umdf wasm1a9rs6gue7th8grjcudfkgzcphlx3fas7dtv5ka -echo $PASSWORD | /opt/setup_wasmd.sh wasm1z6rlvnjrm5nktcvt75x9yera4gu48jflhy2ysv wasm1a9rs6gue7th8grjcudfkgzcphlx3fas7dtv5ka - -# Configure the KMS full node -sed -i -re 's/^(enabled-unsafe-cors =.*)$.*/enabled-unsafe-cors = true/g' /root/.wasmd/config/app.toml -sed -i -re 's/^(address = "localhost:9090")$.*/address = "0.0.0.0:9090"/g' /root/.wasmd/config/app.toml -sed -i -re 's/^(minimum-gas-prices =.*)$.*/minimum-gas-prices = "0.01ucosm"/g' /root/.wasmd/config/config.toml -sed -i -re 's/^(cors_allowed_origins =.*)$.*/cors_allowed_origins = \[\"*\"\]/g' /root/.wasmd/config/config.toml -sed -i -re 's/^(timeout_commit =.*)$.*/timeout_commit = "500ms"/g' /root/.wasmd/config/config.toml - -# Start the KMS full node -# /opt/run_wasmd.sh -nohup /opt/run_wasmd.sh > /dev/null 2>&1 & -sleep 5 - -# Add Connector account -PUB_KEY_KMS_CONN='{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"A/ZoCPf+L7Uxf3snWT+RU5+ivCmT8XR+NFpuhjm5cTP2"}' -echo $PASSWORD |wasmd keys add connector --pubkey "$PUB_KEY_KMS_CONN" -CONN_ADD=$(echo $PASSWORD |wasmd keys show connector --output json |jq -r '.address') -echo "PUB_KEY_KMS_CONN: $PUB_KEY_KMS_CONN" -echo "CONN_ADD: $CONN_ADD" - - -# Add Gateway account -PUB_KEY_KMS_GATEWAY='{"@type":"/cosmos.crypto.secp256k1.PubKey","key":"AqAodaWg+3JUxIz6CeH0hKN8rxUzuBgQ67SR0KemoDnp"}' -echo $PASSWORD |wasmd keys add gateway --pubkey "$PUB_KEY_KMS_GATEWAY" -GATEWAY_ADD=$(echo $PASSWORD |wasmd keys show gateway --output json |jq -r '.address') - -echo "PUB_KEY_KMS_GATEWAY: $PUB_KEY_KMS_GATEWAY" -echo "GATEWAY_ADD: $GATEWAY_ADD" - - - -# Send tokens to connector and gateway accounts -echo $PASSWORD |wasmd tx bank multi-send validator "$CONN_ADD" "$GATEWAY_ADD" "100000000ucosm" -y --chain-id testing - - -# Pre-assign code ids -code_id_ethereum_ipsc=1 -code_id_asc=2 - -# Upload smart contracts -echo "upload_contract ethereum_ipsc.wasm" -upload_contract /app/ethereum_ipsc.wasm -echo "upload_contract asc.wasm" -upload_contract /app/asc.wasm - - - - -# Instantiate smart contract - ethereum -echo "sleep..." -sleep 5 -ETHEREUM_IPSC_CONTRACT_ADDRESS=$(deploy_contract $code_id_ethereum_ipsc "ethereum_ipsc" '{}') -echo "ETHEREUM_IPSC_CONTRACT_ADDRESS:$ETHEREUM_IPSC_CONTRACT_ADDRESS" - -if [ -z "$ETHEREUM_IPSC_CONTRACT_ADDRESS" ]; then - echo "Failed to deploy ethereum-ipsc contract." - exit 1 -fi - - -INIT_MSG=$(printf '{"debug_proof": false, "verify_proof_contract_addr": "%s", "kms_core_conf": { "centralized": "default" }}' "$ETHEREUM_IPSC_CONTRACT_ADDRESS") -INIT_MSG2=$(printf '{"debug_proof": false, "verify_proof_contract_addr": "%s", "kms_core_conf": { "threshold": {"parties":[{"party_id": "01", "address": ""}, {"party_id": "02", "address": ""}, {"party_id": "03", "address": ""}, {"party_id": "04", "address": ""}], "response_count_for_majority_vote": 3, "response_count_for_reconstruction": 3, "degree_for_reconstruction": 1, "param_choice": "default"}}, "allow_list_conf":{"allow_list": ["%s"]} }' "$ETHEREUM_IPSC_CONTRACT_ADDRESS" "$CONN_ADD") - - -echo $INIT_MSG -echo $INIT_MSG2 -sleep 5 -ETHEREUM_ASC_CONTRACT_ADDRESS=$(deploy_contract $code_id_asc "ethereum-asc" "$INIT_MSG2") -echo "Ethereum ASC contract address: $ETHEREUM_ASC_CONTRACT_ADDRESS" - - -echo "Done bootstrapping. Now simply running the validator node ..." - -# keep the container running -tail -f /dev/null \ No newline at end of file diff --git a/coprocessor/asc/ethereum_ipsc.wasm b/coprocessor/asc/ethereum_ipsc.wasm deleted file mode 100755 index 8442dd5368963d62e67796141465e57b61585d74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386309 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 UprX<|W09q~$^!Bi0o9oQ0%M@HO#lD@ diff --git a/coprocessor/blockchain/scripts/run_developer_image.sh b/coprocessor/blockchain/scripts/run_developer_image.sh deleted file mode 100644 index c1fed76..0000000 --- a/coprocessor/blockchain/scripts/run_developer_image.sh +++ /dev/null @@ -1,48 +0,0 @@ -#!/bin/bash - -set -Eeuo pipefail - -# in /config folder - -ETHERMINT_NETWORK_KEYS_PATH=/root/.ethermintd/zama/keys/network-fhe-keys -KMS_NETWORK_KEY_PATH=/config/temp/ - -# passing nokeygen will disable key generation. In this case, keys should be manually put in ETHERMINT_NETWORK_KEYS_PATH -if [ $# -eq 0 ] || [ "$1" != "nokeygen" ]; then - # generate keys - ./kms-gen $KMS_NETWORK_KEY_PATH - cp $KMS_NETWORK_KEY_PATH/cks.bin $ETHERMINT_NETWORK_KEYS_PATH/cks - cp $KMS_NETWORK_KEY_PATH/sks.bin $ETHERMINT_NETWORK_KEYS_PATH/sks - cp $KMS_NETWORK_KEY_PATH/pks.bin $ETHERMINT_NETWORK_KEYS_PATH/pks -fi - - -# init node -./setup.sh - -# run kms-async -#./kms-server-async 0.0.0.0:50052 >> kms-server-async.log 2>> kms-server-async.err & - -# run aggregator -#./aggregator server >> aggregator.log 2>> aggregator.err & - -# run kms-sync -#./kms-server-sync >> kms-server-sync.log 2>> kms-server-sync.err & - -# run oracle service -#./oracle-service >> oracle-service.log 2>> oracle-service.err & - -# start the node -TRACE="" -LOGLEVEL="info" - -ETHERMINTD="ethermintd" - -# Start the node (remove the --pruning=nothing flag if historical queries are not needed) -$ETHERMINTD start --pruning=nothing $TRACE --log_level $LOGLEVEL \ - --minimum-gas-prices=0.0001aphoton \ - --json-rpc.gas-cap=50000000 \ - --json-rpc.api eth,txpool,personal,net,debug,web3,miner \ - --json-rpc.ws-address 0.0.0.0:8546 \ - --api.enable \ - --rpc.laddr tcp://0.0.0.0:26657 diff --git a/coprocessor/scripts/copy_fhe_keys.sh b/coprocessor/scripts/copy_fhe_keys.sh deleted file mode 100755 index 071cd0c..0000000 --- a/coprocessor/scripts/copy_fhe_keys.sh +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env bash - -# This bash script creates global fhe keys -# and copy them to the right folder in volumes directory. -# It accepts -# - the version of kms-dev as the first parameter -# - the LOCAL_BUILD_PUBLIC_KEY_PATH as the second optional parameter. -# - the LOCAL_BUILD_PRIVATE_KEY_PATH as the third optional parameter. - -# mkdir -p temp; docker run --rm -v $PWD/temp:/keys ghcr.io/zama-ai/kms-service-dev:v0.8.1-rc4 ./bin/kms-gen-keys centralized --write-privkey --pub-url file://./keys --priv-url file://./keys --overwrite - -set -Eeuo pipefail - -if [ "$#" -lt 1 ]; then - echo "Usage: $(basename "$0") [LOCAL_BUILD_PUBLIC_KEY_PATH] [LOCAL_BUILD_PRIVATE_KEY_PATH]" - echo "Example: $(basename "$0") c744ada $(PWD)/running_node/node1/.ethermintd/zama/keys/network-fhe-keys /PATH_TO_KMS_KEYS" - exit -fi - -KMS_DEV_VERSION=$1 -DOCKER_IMAGE=ghcr.io/zama-ai/kms-service-dev:"$KMS_DEV_VERSION" -echo "$DOCKER_IMAGE" -CURRENT_FOLDER=$PWD - -DOCKER_COMPOSE_KMS_VERSION= -DOCKER_COMPOSE_KMS_VERSION=$(./scripts/get_kms_core_version.sh ./docker-compose/docker-compose-full.yml kms-service-dev) - -if [ "$DOCKER_COMPOSE_KMS_VERSION" != "$KMS_DEV_VERSION" ]; then - echo "Versions do not match!" - echo "DOCKER_COMPOSE_KMS_VERSION in docker-compose-full.yml: $DOCKER_COMPOSE_KMS_VERSION" - echo "KMS_DEV_VERSION given to key copy/gen script: $KMS_DEV_VERSION" - exit 1 -fi - - -KEYS_FULL_PATH=$CURRENT_FOLDER/res/keys -mkdir -p $KEYS_FULL_PATH - -if [ "$#" -ge 3 ]; then - LOCAL_BUILD_PUBLIC_KEY_PATH=$2 - LOCAL_BUILD_PRIVATE_KEY_PATH=$3 - NETWORK_KEYS_PUBLIC_PATH="${LOCAL_BUILD_PUBLIC_KEY_PATH}" - NETWORK_KEYS_PRIVATE_PATH="${LOCAL_BUILD_PRIVATE_KEY_PATH}" -else - NETWORK_KEYS_PUBLIC_PATH="./volumes/network-public-fhe-keys" - NETWORK_KEYS_PRIVATE_PATH="./volumes/network-private-fhe-keys" -fi - -mkdir -p "$KEYS_FULL_PATH" -docker pull $DOCKER_IMAGE - -docker create --name temp-container $DOCKER_IMAGE -docker cp temp-container:/app/kms/core/service/keys res -docker rm temp-container - -echo "$KEYS_FULL_PATH" - - - -echo "###########################################################" -echo "Keys creation is done, they are stored in $KEYS_FULL_PATH" -echo "###########################################################" - -echo "$NETWORK_KEYS_PUBLIC_PATH" -echo "$NETWORK_KEYS_PRIVATE_PATH" - -MANDATORY_KEYS_LIST=('PUB/ServerKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088' 'PRIV/FhePrivateKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088' 'PUB/PublicKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088' 'PUB/CRS/d8d94eb3a23d22d3eb6b5e7b694e8afcd571d906' 'PUB/VerfAddress/e164d9de0bec6656928726433cc56bef6ee8417a') - -for key in "${MANDATORY_KEYS_LIST[@]}"; do - if [ ! -f "$KEYS_FULL_PATH/$key" ]; then - echo "#####ATTENTION######" - echo "$key does not exist in $KEYS_FULL_PATH!" - echo "####################" - exit - fi -done - - -echo "###########################################################" -echo "All the required keys exist in $KEYS_FULL_PATH" -echo "###########################################################" - -mkdir -p $NETWORK_KEYS_PUBLIC_PATH -mkdir -p $NETWORK_KEYS_PRIVATE_PATH - -key="PUB/ServerKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088" -echo "Copying $key to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PUBLIC_PATH/sks - -key="PUB/PublicKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088" -echo "Copying $key to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PUBLIC_PATH/pks - - -key="PUB/CRS/d8d94eb3a23d22d3eb6b5e7b694e8afcd571d906" -echo "Copying $key to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PUBLIC_PATH/pp - - -key="PUB/VerfAddress/e164d9de0bec6656928726433cc56bef6ee8417a" -echo "Copying $key to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PUBLIC_PATH/eth_address_signer - -key="PRIV/FhePrivateKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088" -echo "Copying $key to $NETWORK_KEYS_PRIVATE_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PRIVATE_PATH/cks -# TODO remove it after, for now npx hardhat test expects cks -# in $HOME/network-fhe-keys/cks -mkdir -p $HOME/network-fhe-keys -cp $KEYS_FULL_PATH/$key $HOME/network-fhe-keys/cks diff --git a/coprocessor/scripts/copy_fhe_keys_threshold.sh b/coprocessor/scripts/copy_fhe_keys_threshold.sh deleted file mode 100755 index c36bfd5..0000000 --- a/coprocessor/scripts/copy_fhe_keys_threshold.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env bash - -# This bash script creates global fhe keys -# and copy them to the the given folder -# It accepts -# - the kms-core from which we want to copy keys -# - the LOCAL_BUILD_PUBLIC_KEY_PATH as the second optional parameter. - -set -Eeuo pipefail - -if [ "$#" -lt 1 ]; then - echo "Usage: $(basename "$0") zama-kms-threshold-dev-kms-core-1-1 [LOCAL_BUILD_PUBLIC_KEY_PATH] " - echo "Example: $(basename "$0") zama-kms-threshold-dev-kms-core-1-1 $(PWD)/network-fhe-keys " - exit -fi - - -DOCKER_IMAGE=$1 -echo "$DOCKER_IMAGE" -CURRENT_FOLDER=$PWD - - -KEYS_FULL_PATH=$CURRENT_FOLDER/res/keys -mkdir -p $KEYS_FULL_PATH - -if [ "$#" -ge 2 ]; then - LOCAL_BUILD_PUBLIC_KEY_PATH=$2 - - NETWORK_KEYS_PUBLIC_PATH="${LOCAL_BUILD_PUBLIC_KEY_PATH}" -else - NETWORK_KEYS_PUBLIC_PATH="./volumes/network-public-fhe-keys" -fi - -mkdir -p "$KEYS_FULL_PATH" - -# Check if the Docker container is running -if ! docker ps --filter "name=$DOCKER_IMAGE" --format '{{.Names}}' | grep -q "$DOCKER_IMAGE"; then - echo "Error: Docker container $DOCKER_IMAGE is not running." - exit 1 -fi - -docker cp $DOCKER_IMAGE:/app/kms/core/service/keys res - - -echo "$KEYS_FULL_PATH" - - - -echo "###########################################################" -echo "Keys creation is done, they are stored in $KEYS_FULL_PATH" -echo "###########################################################" - -echo "$NETWORK_KEYS_PUBLIC_PATH" - -PKS="PUB-p1/PublicKey/d4d17a412a6533599b010c8ffc3d6ebdc6b1cfad" -SKS="PUB-p1/ServerKey/d4d17a412a6533599b010c8ffc3d6ebdc6b1cfad" -CRS="PUB-p1/CRS/d8d94eb3a23d22d3eb6b5e7b694e8afcd571d906" -SIGNER1="PUB-p1/VerfAddress/e164d9de0bec6656928726433cc56bef6ee8417a" -SIGNER2="PUB-p2/VerfAddress/e164d9de0bec6656928726433cc56bef6ee8417a" -SIGNER3="PUB-p3/VerfAddress/e164d9de0bec6656928726433cc56bef6ee8417a" -SIGNER4="PUB-p4/VerfAddress/e164d9de0bec6656928726433cc56bef6ee8417a" - -MANDATORY_KEYS_LIST=($PKS $SKS $SIGNER1 $SIGNER2 $SIGNER3 $SIGNER4 $CRS) - -for key in "${MANDATORY_KEYS_LIST[@]}"; do - if [ ! -f "$KEYS_FULL_PATH/$key" ]; then - echo "#####ATTENTION######" - echo "$key does not exist in $KEYS_FULL_PATH!" - echo "####################" - exit - fi - -done - - -echo "###########################################################" -echo "All the required keys exist in $KEYS_FULL_PATH" -echo "###########################################################" - -mkdir -p $NETWORK_KEYS_PUBLIC_PATH - - -echo "Copying $SKS to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$SKS $NETWORK_KEYS_PUBLIC_PATH/sks - -echo "Copying $PKS to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$PKS $NETWORK_KEYS_PUBLIC_PATH/pks - -echo "Copying $CRS to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$CRS $NETWORK_KEYS_PUBLIC_PATH/pp - -echo "Copying $SIGNER1 to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$SIGNER1 $NETWORK_KEYS_PUBLIC_PATH/signer1 - -echo "Copying $SIGNER2 to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$SIGNER2 $NETWORK_KEYS_PUBLIC_PATH/signer2 - -echo "Copying $SIGNER3 to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$SIGNER3 $NETWORK_KEYS_PUBLIC_PATH/signer3 - -echo "Copying $SIGNER4 to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$SIGNER4 $NETWORK_KEYS_PUBLIC_PATH/signer4 diff --git a/coprocessor/scripts/download_from_minio.sh b/coprocessor/scripts/download_from_minio.sh deleted file mode 100755 index 71d4e93..0000000 --- a/coprocessor/scripts/download_from_minio.sh +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env sh - -# Script to download a file from MinIO -# Usage: ./download_from_minio.sh -# Example: ./download_from_minio.sh "localhost:9000" $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD kms PUB-p1/CRS/7f0979b779f29c6e94921f5536e2434ac6bd1596 $PWD/CRS - -# Function to print an error message and exit -print_error_and_exit() { - echo "$1" - exit 1 -} - -# Check if all required arguments are provided -[ -z "$1" ] && print_error_and_exit "You have NOT specified a MINIO URL!" -[ -z "$2" ] && print_error_and_exit "You have NOT specified a USERNAME!" -[ -z "$3" ] && print_error_and_exit "You have NOT specified a PASSWORD!" -[ -z "$4" ] && print_error_and_exit "You have NOT specified a BUCKET!" -[ -z "$5" ] && print_error_and_exit "You have NOT specified a FILE PATH in MinIO!" -[ -z "$6" ] && print_error_and_exit "You have NOT specified a DESTINATION PATH!" - -# User MinIO Vars -URL=$1 -USERNAME=$2 -PASSWORD=$3 -BUCKET=$4 -FILE_PATH=$5 -DESTINATION_PATH=$6 - -# Static Vars -DATE=$(date -R --utc) -OBJ_PATH="/${BUCKET}/${FILE_PATH}" -CONTENT_TYPE="application/octet-stream" -SIG_STRING="GET\n\n\n${DATE}\n${OBJ_PATH}" -SIGNATURE=$(echo -en "${SIG_STRING}" | openssl sha1 -hmac "${PASSWORD}" -binary | base64) - -# Download the file using curl with better error handling -curl --silent --fail -X GET \ - -H "Host: $URL" \ - -H "Date: ${DATE}" \ - -H "Authorization: AWS ${USERNAME}:${SIGNATURE}" \ - http://$URL${OBJ_PATH} -o ${DESTINATION_PATH} - -# Check if the download was successful -if [ $? -eq 0 ]; then - FILE_SIZE=$(stat -c%s "$DESTINATION_PATH") - HUMAN_READABLE_SIZE=$(numfmt --to=iec --suffix=B "$FILE_SIZE") - echo "File downloaded successfully to ${DESTINATION_PATH} (Size: ${HUMAN_READABLE_SIZE})" -else - print_error_and_exit "File download failed! Please check your inputs and try again." -fi diff --git a/coprocessor/scripts/fund_test_addresses_docker.sh b/coprocessor/scripts/fund_test_addresses_docker.sh deleted file mode 100755 index ae4ae55..0000000 --- a/coprocessor/scripts/fund_test_addresses_docker.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -docker exec -i zama-dev-fhevm-validator-1 faucet a5e1defb98efe38ebb2d958cee052410247f4c80 -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet fCefe53c7012a075b8a711df391100d9c431c468 -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet a44366bAA26296c1409AD1e284264212029F02f1 -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet c1d91b49A1B3D1324E93F86778C44a03f1063f1b -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet 305F1F471e9baCFF2b3549F9601f9A4BEafc94e1 -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet 8B8f5091f8b9817EF69cFC1E8B2f721BafF60DF4 -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet 03734276e8f8ab253ff4295e66228DAC936FF5b8 -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet 9FE8958A2920985AC7ab8d320fDFaB310135a05B -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet 466f26442DD182C9A1b018Cd06671F9791DdE8Ef -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet c45994e4098271c3140117ebD5c74C70dd56D9cd -sleep 8 -docker exec -i zama-dev-fhevm-validator-1 faucet 97F272ccfef4026A1F3f0e0E879d514627B84E69 diff --git a/coprocessor/scripts/get_kms_core_version.sh b/coprocessor/scripts/get_kms_core_version.sh deleted file mode 100755 index 30043bb..0000000 --- a/coprocessor/scripts/get_kms_core_version.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env bash - -# Check if a file name is provided as an argument -if [ $# -eq 0 ]; then - echo "Usage: $0 " - exit 1 -fi - -# Assign the first argument to a variable -file="$1" -docker_image="$2" - -# Check if the file exists -if [ ! -f "$file" ]; then - echo "File does not exist: $file" - exit 1 -fi - - -# Extracting the version using grep and awk -version=$(grep 'ghcr.io/zama-ai/'$docker_image "$file" | awk -F':' '{print $3}' | tr -d '[:space:]') - -echo $version diff --git a/coprocessor/scripts/prepare_test.sh b/coprocessor/scripts/prepare_test.sh deleted file mode 100755 index c2f7d09..0000000 --- a/coprocessor/scripts/prepare_test.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/usr/bin/env bash - -make run-kms -sleep 4 -make init-db -# Deploy ACL, Gateway ..., please wait until the end before testing!!! -make prepare-e2e-test -# This test will fail (first event catch is buggy - we are on it) -make run-async-test diff --git a/coprocessor/scripts/prepare_volumes_from_kms_core.sh b/coprocessor/scripts/prepare_volumes_from_kms_core.sh deleted file mode 100755 index acd7bf8..0000000 --- a/coprocessor/scripts/prepare_volumes_from_kms_core.sh +++ /dev/null @@ -1,94 +0,0 @@ -#!/usr/bin/env bash - -# This bash script creates global fhe keys -# and copy them to the right folder in volumes directory. -# It accepts: -# - the version of kms-dev as the first parameter -# - the LOCAL_BUILD_PUBLIC_KEY_PATH as the second optional parameter. -# - the LOCAL_BUILD_PRIVATE_KEY_PATH as the third optional parameter. - -# mkdir -p res/keys; docker run -e RUST_BACKTRACE=1 -v "$PWD/res/keys:/app/kms/core/service/keys" "ghcr.io/zama-ai/kms-service-dev:v0.8.1-rc4" "./bin/kms-gen-keys" centralized --write-privkey --pub-url file://./keys --priv-url file://./keys --overwrite - -set -Eeuo pipefail - -if [ "$#" -lt 1 ]; then - echo "Usage: $(basename "$0") [LOCAL_BUILD_PUBLIC_KEY_PATH] [LOCAL_BUILD_PRIVATE_KEY_PATH]" - echo "Example: $(basename "$0") c744ada $(PWD)/running_node/node1/.ethermintd/zama/keys/network-fhe-keys /PATH_TO_KMS_KEYS" - exit -fi - -KMS_DEV_VERSION=$1 -BINARY_NAME="./bin/kms-gen-keys" -DOCKER_IMAGE=ghcr.io/zama-ai/kms-service-dev:"$KMS_DEV_VERSION" -CURRENT_FOLDER=$PWD - -DOCKER_COMPOSE_KMS_VERSION=$(./scripts/get_kms_core_version.sh ./docker-compose/docker-compose-full.yml kms-service-dev) - -if [ "$DOCKER_COMPOSE_KMS_VERSION" != "$KMS_DEV_VERSION" ]; then - echo "Versions do not match!" - echo "DOCKER_COMPOSE_KMS_VERSION in docker-compose-full.yml: $DOCKER_COMPOSE_KMS_VERSION" - echo "KMS_DEV_VERSION given to key copy/gen script: $KMS_DEV_VERSION" - exit 1 -fi - - -KEYS_FULL_PATH=$CURRENT_FOLDER/res/keys -mkdir -p $KEYS_FULL_PATH - -if [ "$#" -ge 3 ]; then - LOCAL_BUILD_PUBLIC_KEY_PATH=$2 - LOCAL_BUILD_PRIVATE_KEY_PATH=$3 - NETWORK_KEYS_PUBLIC_PATH="${LOCAL_BUILD_PUBLIC_KEY_PATH}" - NETWORK_KEYS_PRIVATE_PATH="${LOCAL_BUILD_PRIVATE_KEY_PATH}" -else - NETWORK_KEYS_PUBLIC_PATH="./volumes/network-public-fhe-keys" - NETWORK_KEYS_PRIVATE_PATH="./volumes/network-private-fhe-keys" -fi - -mkdir -p "$KEYS_FULL_PATH" - -docker run -e RUST_BACKTRACE=1 -v "$PWD/res/keys:/app/kms/core/service/keys" "$DOCKER_IMAGE" "$BINARY_NAME" centralized --write-privkey --pub-url file://./keys --priv-url file://./keys --overwrite - -echo "$KEYS_FULL_PATH" - -echo "###########################################################" -echo "Keys creation is done. They are stored in $KEYS_FULL_PATH" -echo "###########################################################" - -echo "$NETWORK_KEYS_PUBLIC_PATH" -echo "$NETWORK_KEYS_PRIVATE_PATH" - -MANDATORY_KEYS_LIST=('PUB/ServerKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088' 'PRIV/FhePrivateKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088' 'PUB/PublicKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088') - -for key in "${MANDATORY_KEYS_LIST[@]}"; do - if [ ! -f "$KEYS_FULL_PATH/$key" ]; then - echo "#####ATTENTION######" - echo "$key does not exist in $KEYS_FULL_PATH!" - echo "####################" - exit - fi -done - -echo "###########################################################" -echo "All the required keys exist in $KEYS_FULL_PATH" -echo "###########################################################" - -mkdir -p $NETWORK_KEYS_PUBLIC_PATH -mkdir -p $NETWORK_KEYS_PRIVATE_PATH - -key="PUB/ServerKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088" -echo "Copying $key to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PUBLIC_PATH/sks - -key="PUB/PublicKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088" -echo "Copying $key to $NETWORK_KEYS_PUBLIC_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PUBLIC_PATH/pks - - -key="PRIV/FhePrivateKey/408d8cbaa51dece7f782fe04ba0b1c1d017b1088" -echo "Copying $key to $NETWORK_KEYS_PRIVATE_PATH, please wait ..." -cp $KEYS_FULL_PATH/$key $NETWORK_KEYS_PRIVATE_PATH/cks -# TODO remove it after, for now npx hardhat test expects cks -# in $HOME/network-fhe-keys/cks -mkdir -p $HOME/network-fhe-keys -cp $KEYS_FULL_PATH/$key $HOME/network-fhe-keys/cks From 3a5fe7a4744c6891daa592ed9fe41fc441433618 Mon Sep 17 00:00:00 2001 From: manoranjith Date: Thu, 5 Dec 2024 16:53:33 +0100 Subject: [PATCH 02/14] chore: override project, network name for compose --- coprocessor/.env | 4 +++ coprocessor/Makefile | 32 +++++++++---------- .../docker-compose-db-migration.yml | 4 +-- .../docker-compose-fhevm-deploy.yml | 4 +-- 4 files changed, 23 insertions(+), 21 deletions(-) diff --git a/coprocessor/.env b/coprocessor/.env index ce6c0ab..9dff11f 100644 --- a/coprocessor/.env +++ b/coprocessor/.env @@ -1,6 +1,10 @@ KEY_GEN=false CENTRALIZED_KMS=true +export DOCKER_COMPOSE_PROJECT=zama +export DOCKER_COMPOSE_NETWORK=zama_default export MINIO_ROOT_USER=admin export MINIO_ROOT_PASSWORD=strongadminpassword export DOCKER_IMAGES_TAG=v0.9.0-rc37 + + diff --git a/coprocessor/Makefile b/coprocessor/Makefile index 1624d90..014e5ec 100644 --- a/coprocessor/Makefile +++ b/coprocessor/Makefile @@ -1,15 +1,14 @@ #!/usr/bin/make -f +# Load environment variables to makefile and export it to shell environment include .env - +export $(shell cat .env | sed 's/=.*//g') BINDIR ?= $(GOPATH)/bin ETHERMINT_BINARY = ethermintd ETHERMINT_DIR = ethermint BUILDDIR ?= $(CURDIR)/build - - WORKDIR ?= $(CURDIR)/work_dir SUDO := $(shell which sudo) @@ -34,7 +33,6 @@ check_os: # This version must the same as in docker-compose-full.yml # TODO add check KMS_DEV_VERSION ?= $(DOCKER_IMAGES_TAG) - FHEVM_SOLIDITY_REPO ?= fhevm FHEVM_SOLIDITY_PATH ?= $(WORKDIR)/$(FHEVM_SOLIDITY_REPO) FHEVM_SOLIDITY_PATH_EXISTS := $(shell test -d $(FHEVM_SOLIDITY_PATH)/.git && echo "true" || echo "false") @@ -93,7 +91,7 @@ else ifeq ($(CENTRALIZED_KMS),true) else @echo "CENTRALIZED_KMS is set to an unrecognized value: $(CENTRALIZED_KMS)" endif - @COMPOSE_PROJECT_NAME=zama-kms-gateway docker compose -vvv -f docker-compose/docker-compose-db-migration.yml up -d --wait || true + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-db-migration.yml up -d --wait || true @if [ "$$(docker inspect -f '{{.State.ExitCode}}' migration)" -eq 0 ]; then \ echo "Container exited with code 0, proceeding..."; \ else \ @@ -103,7 +101,7 @@ endif deploy-fhevm: - @COMPOSE_PROJECT_NAME=zama-kms-gateway docker compose -vvv -f docker-compose/docker-compose-fhevm-deploy.yml up -d --wait || true + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-fhevm-deploy.yml up -d --wait || true @if [ "$$(docker inspect -f '{{.State.ExitCode}}' fhevm-deploy)" -eq 0 ]; then \ echo "Container exited with code 0, proceeding..."; \ else \ @@ -149,13 +147,13 @@ trigger-crs-gen-threshold: insecure-crs-gen --max-num-bits 256 run-kms-threshold: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ up -d --wait run-kms-threshold-with-gateway: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ @@ -163,25 +161,25 @@ run-kms-threshold-with-gateway: up -d --wait stop-kms-threshold: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ down --volumes --remove-orphans run-kms-centralized: - docker compose -vvv \ + docker -p $(DOCKER_COMPOSE_PROJECT) compose -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-centralized.yml \ up -d --wait stop-kms-centralized: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-centralized.yml \ down run-kms-centralized-with-gateway: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-centralized.yml \ -f docker-compose/docker-compose-kms-gateway-centralized.yml \ @@ -189,7 +187,7 @@ run-kms-centralized-with-gateway: up -d --wait stop-kms-centralized-with-gateway: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-centralized.yml \ -f docker-compose/docker-compose-kms-gateway-centralized.yml \ @@ -197,7 +195,7 @@ stop-kms-centralized-with-gateway: down -v --remove-orphans stop-kms-threshold-with-gateway: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ @@ -320,7 +318,7 @@ run-gw: @docker compose -vvv -f docker-compose/docker-compose-kms-base.yml -f docker-compose/docker-compose-kms-centralized.yml -f docker-compose/docker-compose-kms-gateway-centralized.yml up dev-kms-gateway restart-kv: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ @@ -329,7 +327,7 @@ restart-kv: restart-coproc: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ @@ -338,7 +336,7 @@ restart-coproc: restart-gw: - docker compose -vvv \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ diff --git a/coprocessor/docker-compose/docker-compose-db-migration.yml b/coprocessor/docker-compose/docker-compose-db-migration.yml index 592cba8..9328f98 100644 --- a/coprocessor/docker-compose/docker-compose-db-migration.yml +++ b/coprocessor/docker-compose/docker-compose-db-migration.yml @@ -7,8 +7,8 @@ services: volumes: - ../network-fhe-keys/:/fhevm-keys/ networks: - - zama-kms-gateway_default + - zama_default networks: - zama-kms-gateway_default: + zama_default: external: true diff --git a/coprocessor/docker-compose/docker-compose-fhevm-deploy.yml b/coprocessor/docker-compose/docker-compose-fhevm-deploy.yml index 44710cf..a664782 100644 --- a/coprocessor/docker-compose/docker-compose-fhevm-deploy.yml +++ b/coprocessor/docker-compose/docker-compose-fhevm-deploy.yml @@ -8,9 +8,9 @@ services: - ../scripts/launch-fhevm-coprocessor.sh:/app/launch-fhevm-coprocessor.sh - ../scripts/deploy-smart-contracts.sh:/app/deploy-smart-contracts.sh networks: - - zama-kms-gateway_default + - zama_default entrypoint: "./deploy-smart-contracts.sh" networks: - zama-kms-gateway_default: + zama_default: external: true From dfec7259d8f3838e50b9bfda5c7bf155481ed447 Mon Sep 17 00:00:00 2001 From: manoranjith Date: Thu, 5 Dec 2024 19:01:00 +0100 Subject: [PATCH 03/14] chore: cleanup fhevm, copro related names - use "fhevm-" prefix consistently for all components. - use "setup-" for setup related components. --- coprocessor/.env | 3 ++ coprocessor/Makefile | 28 +++++++++---------- .../blockchain/gateway/config/connector.toml | 2 +- .../gateway/config/gateway_centralized.toml | 6 ++-- .../gateway/config/gateway_threshold.toml | 6 ++-- ...l => docker-compose-fhevm-coprocessor.yml} | 14 +++++----- ... docker-compose-setup-fhevm-contracts.yml} | 3 +- ...er-compose-setup-fhevm-coprocessor-db.yml} | 5 ++-- coprocessor/env/hardhat.config.ts | 2 +- ...ssor.sh => fund_tests_addresses_docker.sh} | 2 +- coprocessor/scripts/run_everything.sh | 12 ++++---- 11 files changed, 42 insertions(+), 41 deletions(-) rename coprocessor/docker-compose/{docker-compose-coprocesor.yml => docker-compose-fhevm-coprocessor.yml} (77%) rename coprocessor/docker-compose/{docker-compose-fhevm-deploy.yml => docker-compose-setup-fhevm-contracts.yml} (91%) rename coprocessor/docker-compose/{docker-compose-db-migration.yml => docker-compose-setup-fhevm-coprocessor-db.yml} (59%) rename coprocessor/scripts/{fund_tests_addresses_docker_coprocessor.sh => fund_tests_addresses_docker.sh} (97%) diff --git a/coprocessor/.env b/coprocessor/.env index 9dff11f..8ab5d33 100644 --- a/coprocessor/.env +++ b/coprocessor/.env @@ -7,4 +7,7 @@ export MINIO_ROOT_PASSWORD=strongadminpassword export DOCKER_IMAGES_TAG=v0.9.0-rc37 +export GETH_CONTAINER=zama-fhevm-geth-1 + + diff --git a/coprocessor/Makefile b/coprocessor/Makefile index 014e5ec..28dee66 100644 --- a/coprocessor/Makefile +++ b/coprocessor/Makefile @@ -91,8 +91,8 @@ else ifeq ($(CENTRALIZED_KMS),true) else @echo "CENTRALIZED_KMS is set to an unrecognized value: $(CENTRALIZED_KMS)" endif - docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-db-migration.yml up -d --wait || true - @if [ "$$(docker inspect -f '{{.State.ExitCode}}' migration)" -eq 0 ]; then \ + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml up -d --wait || true + @if [ "$$(docker inspect -f '{{.State.ExitCode}}' $(DOCKER_COMPOSE_PROJECT)-setup-fhevm-coprocessor-db-1)" -eq 0 ]; then \ echo "Container exited with code 0, proceeding..."; \ else \ echo "Container did not exit successfully, failing..."; \ @@ -100,9 +100,9 @@ endif fi -deploy-fhevm: - docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-fhevm-deploy.yml up -d --wait || true - @if [ "$$(docker inspect -f '{{.State.ExitCode}}' fhevm-deploy)" -eq 0 ]; then \ +setup-fhevm-contracts: + docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-setup-fhevm-contracts.yml up -d --wait || true + @if [ "$$(docker inspect -f '{{.State.ExitCode}}' zama-setup-fhevm-contracts-1)" -eq 0 ]; then \ echo "Container exited with code 0, proceeding..."; \ else \ echo "Container did not exit successfully, failing..."; \ @@ -157,7 +157,7 @@ run-kms-threshold-with-gateway: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ up -d --wait stop-kms-threshold: @@ -183,7 +183,7 @@ run-kms-centralized-with-gateway: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-centralized.yml \ -f docker-compose/docker-compose-kms-gateway-centralized.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ up -d --wait stop-kms-centralized-with-gateway: @@ -191,7 +191,7 @@ stop-kms-centralized-with-gateway: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-centralized.yml \ -f docker-compose/docker-compose-kms-gateway-centralized.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ down -v --remove-orphans stop-kms-threshold-with-gateway: @@ -199,7 +199,7 @@ stop-kms-threshold-with-gateway: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ down -v --remove-orphans @@ -247,8 +247,8 @@ install-packages: prepare-e2e-test: check-all-test-repo - @bash scripts/fund_tests_addresses_docker_coprocessor.sh - $(MAKE) deploy-fhevm + @bash scripts/fund_tests_addresses_docker.sh + $(MAKE) setup-fhevm-contracts @cp ./scripts/hardhat-compile.sh $(FHEVM_SOLIDITY_PATH) @cp ./env/.env.example.deployment $(FHEVM_SOLIDITY_PATH)/.env @cd $(FHEVM_SOLIDITY_PATH) && ./hardhat-compile.sh @@ -322,7 +322,7 @@ restart-kv: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ up -d --no-deps dev-kv-store @@ -331,7 +331,7 @@ restart-coproc: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ up -d --no-deps coproc @@ -340,6 +340,6 @@ restart-gw: -f docker-compose/docker-compose-kms-base.yml \ -f docker-compose/docker-compose-kms-threshold.yml \ -f docker-compose/docker-compose-kms-gateway-threshold.yml \ - -f docker-compose/docker-compose-coprocesor.yml \ + -f docker-compose/docker-compose-fhevm-coprocessor.yml \ up -d --no-deps dev-kms-gateway diff --git a/coprocessor/blockchain/gateway/config/connector.toml b/coprocessor/blockchain/gateway/config/connector.toml index 68dd3a0..83605cc 100644 --- a/coprocessor/blockchain/gateway/config/connector.toml +++ b/coprocessor/blockchain/gateway/config/connector.toml @@ -2,7 +2,7 @@ tick_interval_secs = 1 storage_path = "./temp/events.toml" [oracle] -addresses = ["http://geth:26657"] +addresses = ["http://fhevm-geth:26657"] [blockchain] addresses = ["http://dev-kms-blockchain-validator:9090"] diff --git a/coprocessor/blockchain/gateway/config/gateway_centralized.toml b/coprocessor/blockchain/gateway/config/gateway_centralized.toml index c525025..d77d7e2 100644 --- a/coprocessor/blockchain/gateway/config/gateway_centralized.toml +++ b/coprocessor/blockchain/gateway/config/gateway_centralized.toml @@ -30,10 +30,10 @@ listener_type = "COPROCESSOR" # URL of the Ethereum WebSocket server. # Used for establishing a WebSocket connection to an Ethereum node. -wss_url = "ws://geth:8546" +wss_url = "ws://fhevm-geth:8546" # Used for establishing an http connection to an Ethereum node. -http_url = "http://geth:8545" +http_url = "http://fhevm-geth:8545" # Address of the FHE library smart ontract on the Ethereum blockchain. # Used for interactions with the FHE library contract. @@ -69,7 +69,7 @@ reenc_domain_name = "Authorization token" acl_address = "339EcE85B9E11a3A3AA557582784a15d7F82AAf2" # Address of the coprocessor to query for ciphertexts (gRPC) -coprocessor_url = "http://coproc:50052" +coprocessor_url = "http://fhevm-coprocessor:50052" # optionally explicitly set the gas price # gas_price = 1_000_000_000 diff --git a/coprocessor/blockchain/gateway/config/gateway_threshold.toml b/coprocessor/blockchain/gateway/config/gateway_threshold.toml index 2356630..f44b101 100644 --- a/coprocessor/blockchain/gateway/config/gateway_threshold.toml +++ b/coprocessor/blockchain/gateway/config/gateway_threshold.toml @@ -30,10 +30,10 @@ listener_type = "COPROCESSOR" # URL of the Ethereum WebSocket server. # Used for establishing a WebSocket connection to an Ethereum node. -wss_url = "ws://geth:8546" +wss_url = "ws://fhevm-geth:8546" # Used for establishing an http connection to an Ethereum node. -http_url = "http://geth:8545" +http_url = "http://fhevm-geth:8545" # Address of the FHE library smart ontract on the Ethereum blockchain. # Used for interactions with the FHE library contract. @@ -69,7 +69,7 @@ reenc_domain_name = "Authorization token" acl_address = "339EcE85B9E11a3A3AA557582784a15d7F82AAf2" # Address of the coprocessor to query for ciphertexts (gRPC) -coprocessor_url = "http://coproc:50052" +coprocessor_url = "http://fhevm-coprocessor:50052" # optionally explicitly set the gas price # gas_price = 1_000_000_000 diff --git a/coprocessor/docker-compose/docker-compose-coprocesor.yml b/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml similarity index 77% rename from coprocessor/docker-compose/docker-compose-coprocesor.yml rename to coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml index d397038..78441b7 100644 --- a/coprocessor/docker-compose/docker-compose-coprocesor.yml +++ b/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml @@ -1,5 +1,5 @@ services: - db: + fhevm-coprocessor-db: image: postgres:15.7 restart: always environment: @@ -8,12 +8,12 @@ services: ports: - '5432:5432' volumes: - - db:/var/lib/postgresql/data + - fhevm_coprocessor_db:/var/lib/postgresql/data - coproc: + fhevm-coprocessor: image: ghcr.io/zama-ai/fhevm-coprocessor:v0.1.2 environment: - - DATABASE_URL=postgresql://postgres:postgres@db:5432/coprocessor + - DATABASE_URL=postgresql://postgres:postgres@fhevm-coprocessor-db:5432/coprocessor ports: - '50055:50052' volumes: @@ -23,18 +23,18 @@ services: - --run-server - --server-addr=0.0.0.0:50052 - --coprocessor-private-key=/usr/share/coprocessor.key - geth: + fhevm-geth: image: ghcr.io/zama-ai/go-ethereum-coprocessor-dev:v0.1.1 volumes: - ../blockchain/geth/entrypoint.sh:/entrypoint.sh environment: - FHEVM_COPROCESSOR_API_KEY=a1503fb6-d79b-4e9e-826d-44cf262f3e05 - - FHEVM_COPROCESSOR_URL=coproc:50052 + - FHEVM_COPROCESSOR_URL=fhevm-coprocessor:50052 - COPROCESSOR_CONTRACT_ADDRESS=0x596E6682c72946AF006B27C131793F2b62527A4b - ACL_CONTRACT_ADDRESS=0x339EcE85B9E11a3A3AA557582784a15d7F82AAf2 ports: - '8745:8545' - '8746:8546' volumes: - db: + fhevm_coprocessor_db: driver: local diff --git a/coprocessor/docker-compose/docker-compose-fhevm-deploy.yml b/coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml similarity index 91% rename from coprocessor/docker-compose/docker-compose-fhevm-deploy.yml rename to coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml index a664782..0f40298 100644 --- a/coprocessor/docker-compose/docker-compose-fhevm-deploy.yml +++ b/coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml @@ -1,6 +1,5 @@ services: - migration: - container_name: fhevm-deploy + setup-fhevm-contracts: image: ghcr.io/zama-ai/fhevm-smart-contracts-dev:v0.1.1-1 volumes: - ../env/.env.example.deployment:/app/.env.example.deployment diff --git a/coprocessor/docker-compose/docker-compose-db-migration.yml b/coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml similarity index 59% rename from coprocessor/docker-compose/docker-compose-db-migration.yml rename to coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml index 9328f98..6fb48c9 100644 --- a/coprocessor/docker-compose/docker-compose-db-migration.yml +++ b/coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml @@ -1,9 +1,8 @@ services: - migration: - container_name: migration + setup-fhevm-coprocessor-db: image: ghcr.io/zama-ai/fhevm-db-migration:v0.1.2 environment: - DATABASE_URL: postgresql://postgres:postgres@zama-kms-gateway-db-1:5432/coprocessor + DATABASE_URL: postgresql://postgres:postgres@${DOCKER_COMPOSE_PROJECT}-fhevm-coprocessor-db-1:5432/coprocessor volumes: - ../network-fhe-keys/:/fhevm-keys/ networks: diff --git a/coprocessor/env/hardhat.config.ts b/coprocessor/env/hardhat.config.ts index 331524a..1932d94 100644 --- a/coprocessor/env/hardhat.config.ts +++ b/coprocessor/env/hardhat.config.ts @@ -56,7 +56,7 @@ function getChainConfig(chain: keyof typeof chainIds): NetworkUserConfig { jsonRpcUrl = 'http://localhost:8545'; break; case 'localCoprocessor': - jsonRpcUrl = 'http://geth:8545'; + jsonRpcUrl = 'http://fhevm-geth:8545'; break; case 'localNetwork1': jsonRpcUrl = 'http://127.0.0.1:9650/ext/bc/fhevm/rpc'; diff --git a/coprocessor/scripts/fund_tests_addresses_docker_coprocessor.sh b/coprocessor/scripts/fund_tests_addresses_docker.sh similarity index 97% rename from coprocessor/scripts/fund_tests_addresses_docker_coprocessor.sh rename to coprocessor/scripts/fund_tests_addresses_docker.sh index 7ae5289..53c5ecc 100755 --- a/coprocessor/scripts/fund_tests_addresses_docker_coprocessor.sh +++ b/coprocessor/scripts/fund_tests_addresses_docker.sh @@ -8,7 +8,7 @@ fund_account() { account_name=$1 account_address=$2 echo "funding $account_name account with address $account_address" - docker exec -i zama-kms-gateway-geth-1 faucet $account_address +docker exec -i $GETH_CONTAINER faucet $account_address sleep 8 } diff --git a/coprocessor/scripts/run_everything.sh b/coprocessor/scripts/run_everything.sh index 7382aa4..856fc2f 100755 --- a/coprocessor/scripts/run_everything.sh +++ b/coprocessor/scripts/run_everything.sh @@ -28,17 +28,17 @@ log "Preparing for e2e tests. This may take some time..." make prepare-e2e-test # Check deployment logs -log "Deployment in progress. You can check the logs of fhevm-deploy if needed." -log "To monitor: docker logs fhevm-deploy" +log "Deployment in progress. You can check the logs of zama-setup-fhevm-contracts-1 if needed." +log "To monitor: docker logs zama-setup-fhevm-contracts-1" timeout=140 # Timeout after 60 seconds -while ! docker logs fhevm-deploy 2>&1 | grep -q "Deployment script completed successfully"; do +while ! docker logs zama-setup-fhevm-contracts-1 2>&1 | grep -q "Deployment script completed successfully"; do sleep 10 - log "Waiting for fhevm-deploy to complete deployment..." - log "To monitor: docker logs fhevm-deploy -f" + log "Waiting for fhevm contract deployment..." + log "To monitor: docker logs zama-setup-fhevm-contracts-1 -f" timeout=$((timeout - 10)) if [ "$timeout" -le 0 ]; then - log "Timeout reached waiting for fhevm-deploy to finish. Exiting." + log "Timeout reached waiting for zama-setup-fhevm-contracts-1 to finish. Exiting." exit 1 fi done From 4c835e32fc99bcb1b55edaf3b9ac8a25ab818cfc Mon Sep 17 00:00:00 2001 From: manoranjith Date: Mon, 9 Dec 2024 17:48:33 +0100 Subject: [PATCH 04/14] chore: cleanup kms related names - use no prefix for gateway as it connects fhevm and kms parts. - use "kms-" prefix consistently for all kms components. - use "setup-" for setup related components. --- coprocessor/Makefile | 15 --- coprocessor/README.md | 2 +- .../blockchain/gateway/config/connector.toml | 4 +- .../gateway/config/gateway_centralized.toml | 4 +- .../gateway/config/gateway_threshold.toml | 4 +- .../blockchain/scripts/pub_key_to_minio.sh | 2 +- .../local_centralized_from_compose.toml | 8 +- .../config/local_threshold_from_compose.toml | 8 +- .../core/service/config/compose_1.toml | 24 ++-- .../core/service/config/compose_2.toml | 24 ++-- .../core/service/config/compose_3.toml | 24 ++-- .../core/service/config/compose_4.toml | 24 ++-- .../service/config/compose_centralized.toml | 2 +- .../docker-compose-kms-base.yml | 28 ++-- .../docker-compose-kms-centralized.yml | 22 ++-- ...docker-compose-kms-gateway-centralized.yml | 14 +- .../docker-compose-kms-gateway-threshold.yml | 14 +- .../docker-compose-kms-threshold.yml | 120 +++++++++--------- 18 files changed, 164 insertions(+), 179 deletions(-) diff --git a/coprocessor/Makefile b/coprocessor/Makefile index 28dee66..6d9a7d5 100644 --- a/coprocessor/Makefile +++ b/coprocessor/Makefile @@ -112,21 +112,6 @@ setup-fhevm-contracts: check-all-test-repo: check-fhevm-solidity -generate-fhe-keys-registry-dev-image: -ifeq ($(KEY_GEN),false) - @echo "KEY_GEN is false, executing corresponding commands..." - @bash ./scripts/copy_fhe_keys.sh $(KMS_DEV_VERSION) $(PWD)/network-fhe-keys $(PWD)/kms-fhe-keys -else ifeq ($(KEY_GEN),true) - @echo "KEY_GEN is true, executing corresponding commands..." - @bash ./scripts/prepare_volumes_from_kms_core.sh $(KMS_DEV_VERSION) $(PWD)/network-fhe-keys $(PWD)/kms-fhe-keys -else - @echo "KEY_GEN is set to an unrecognized value: $(KEY_GEN)" -endif - -copy-keys-threshold: - @bash ./scripts/copy_fhe_keys_threshold.sh zama-kms-threshold-dev-kms-core-1-1 $(PWD)/network-fhe-keys - @bash ./scripts/update_signers.sh $(PWD)/work_dir/fhevm/.env.example.deployment $(PWD)/network-fhe-keys - copy-keys-threshold-key-gen: @bash ./scripts/copy_fhe_keys_threshold_key_gen.sh $(PWD)/network-fhe-keys @bash ./scripts/update_signers.sh $(PWD)/env/.env.example.deployment $(PWD)/network-fhe-keys 4 diff --git a/coprocessor/README.md b/coprocessor/README.md index e543bb7..7c2fe54 100644 --- a/coprocessor/README.md +++ b/coprocessor/README.md @@ -162,7 +162,7 @@ Then (2) we download keys (with identifiers) from minio (S3 bucket like storage) This docker container is starting only after the deployment step (above) ```bash -$docker logs zama-kms-gateway-dev-kms-simulator-keygen-1 -f +$docker logs zama-setup-kms-key-crs-1 -f Launching insecure key-gen [ { diff --git a/coprocessor/blockchain/gateway/config/connector.toml b/coprocessor/blockchain/gateway/config/connector.toml index 83605cc..926e4c2 100644 --- a/coprocessor/blockchain/gateway/config/connector.toml +++ b/coprocessor/blockchain/gateway/config/connector.toml @@ -5,7 +5,7 @@ storage_path = "./temp/events.toml" addresses = ["http://fhevm-geth:26657"] [blockchain] -addresses = ["http://dev-kms-blockchain-validator:9090"] +addresses = ["http://kms-blockchain-validator:9090"] contract = "wasm1cnuw3f076wgdyahssdkd0g3nr96ckq8cwa2mh029fn5mgf2fmcms9ax00l" [blockchain.signkey] @@ -68,4 +68,4 @@ service_name = "kms-asc-connector" endpoint = "http://localhost:4317" [store] -url = "http://dev-kv-store:8088" +url = "http://kms-kv-store:8088" diff --git a/coprocessor/blockchain/gateway/config/gateway_centralized.toml b/coprocessor/blockchain/gateway/config/gateway_centralized.toml index d77d7e2..afa431c 100644 --- a/coprocessor/blockchain/gateway/config/gateway_centralized.toml +++ b/coprocessor/blockchain/gateway/config/gateway_centralized.toml @@ -108,7 +108,7 @@ mnemonic = "bachelor similar spirit copper rely carbon web hobby conduct wrap co # Base URL of the KMS service. # Used for making HTTP requests to the KMS service. -address = "http://dev-kms-blockchain-validator:9090" +address = "http://kms-blockchain-validator:9090" # TODO stop-gap these will eventually be fetched from the ASC. This line can be removed if the key get setup with the simulator # Should be removed as part of https://github.com/zama-ai/fhevm/issues/548 @@ -124,7 +124,7 @@ crs_id = "cfac312251738b71ff7d12e57b7d6eb5f881b7d8" [storage] -url = "http://dev-kv-store:8088" +url = "http://kms-kv-store:8088" [tracing] service_name = "gateway" diff --git a/coprocessor/blockchain/gateway/config/gateway_threshold.toml b/coprocessor/blockchain/gateway/config/gateway_threshold.toml index f44b101..0330d0c 100644 --- a/coprocessor/blockchain/gateway/config/gateway_threshold.toml +++ b/coprocessor/blockchain/gateway/config/gateway_threshold.toml @@ -108,7 +108,7 @@ mnemonic = "bachelor similar spirit copper rely carbon web hobby conduct wrap co # Base URL of the KMS service. # Used for making HTTP requests to the KMS service. -address = "http://dev-kms-blockchain-validator:9090" +address = "http://kms-blockchain-validator:9090" # TODO stop-gap these will eventually be fetched from the ASC. This line can be removed if the key get setup with the simulator # Should be removed as part of https://github.com/zama-ai/fhevm/issues/548 @@ -129,7 +129,7 @@ crs_id = "9f58f0b3b8cabd4df89e38f27243b4c6b66f4162" [storage] -url = "http://dev-kv-store:8088" +url = "http://kms-kv-store:8088" [tracing] service_name = "gateway" diff --git a/coprocessor/blockchain/scripts/pub_key_to_minio.sh b/coprocessor/blockchain/scripts/pub_key_to_minio.sh index 828007d..45b5fb3 100644 --- a/coprocessor/blockchain/scripts/pub_key_to_minio.sh +++ b/coprocessor/blockchain/scripts/pub_key_to_minio.sh @@ -9,7 +9,7 @@ PATH_TO_SECRET_KEY="${PATH_TO_SECRET_KEY:-/minio_secrets/secret_key}" ACCESS_KEY=$(xargs echo -n < "${PATH_TO_ACCESS_KEY}") SECRET_KEY=$(xargs echo -n < "${PATH_TO_SECRET_KEY}") BUCKET_NAME="${BUCKET_NAME:-kms}" -ENDPOINT="${ENDPOINT:-http://dev-s3-mock:9000}" +ENDPOINT="${ENDPOINT:-http://s3-mock:9000}" echo "ACCESS KEY: '${ACCESS_KEY}'" echo "SECRET KEY: '${SECRET_KEY}'" diff --git a/coprocessor/blockchain/simulator/config/local_centralized_from_compose.toml b/coprocessor/blockchain/simulator/config/local_centralized_from_compose.toml index 68a40ad..c47f10a 100644 --- a/coprocessor/blockchain/simulator/config/local_centralized_from_compose.toml +++ b/coprocessor/blockchain/simulator/config/local_centralized_from_compose.toml @@ -1,9 +1,9 @@ -s3_endpoint = "http://dev-s3-mock:9000/kms" +s3_endpoint = "http://s3-mock:9000/kms" object_folder = ["PUB"] -validator_addresses = ["http://dev-kms-blockchain-validator:9090"] -http_validator_endpoints = ["http://dev-kms-blockchain-validator:26657"] -kv_store_address = "http://dev-kv-store:8088" +validator_addresses = ["http://kms-blockchain-validator:9090"] +http_validator_endpoints = ["http://kms-blockchain-validator:26657"] +kv_store_address = "http://kms-kv-store:8088" faucet_address = "http://localhost:8000" contract = "wasm1cnuw3f076wgdyahssdkd0g3nr96ckq8cwa2mh029fn5mgf2fmcms9ax00l" # DEBUG ASC diff --git a/coprocessor/blockchain/simulator/config/local_threshold_from_compose.toml b/coprocessor/blockchain/simulator/config/local_threshold_from_compose.toml index 9e11c75..3133c60 100644 --- a/coprocessor/blockchain/simulator/config/local_threshold_from_compose.toml +++ b/coprocessor/blockchain/simulator/config/local_threshold_from_compose.toml @@ -1,9 +1,9 @@ -s3_endpoint = "http://dev-s3-mock:9000/kms" +s3_endpoint = "http://s3-mock:9000/kms" object_folder = ["PUB-p1","PUB-p2","PUB-p3","PUB-p4"] -validator_addresses = ["http://dev-kms-blockchain-validator:9090"] -http_validator_endpoints = ["http://dev-kms-blockchain-validator:26657"] -kv_store_address = "http://dev-kv-store:8088" +validator_addresses = ["http://kms-blockchain-validator:9090"] +http_validator_endpoints = ["http://kms-blockchain-validator:26657"] +kv_store_address = "http://kms-kv-store:8088" faucet_address = "http://localhost:8000" # contract = "wasm1cnuw3f076wgdyahssdkd0g3nr96ckq8cwa2mh029fn5mgf2fmcms9ax00l" diff --git a/coprocessor/core/service/config/compose_1.toml b/coprocessor/core/service/config/compose_1.toml index e682acd..f576d5f 100644 --- a/coprocessor/core/service/config/compose_1.toml +++ b/coprocessor/core/service/config/compose_1.toml @@ -6,7 +6,7 @@ listen_port_client = 50100 # The address and port that tcp listener binds on to # communicate with the other cores. -listen_address_core = "dev-kms-core-1" +listen_address_core = "kms-core-1" listen_port_core = 50001 # maximum grpc message size in bytes @@ -26,12 +26,12 @@ num_sessions_preproc = 2 # different parties. public_storage_url = "s3://kms" private_storage_url = "file://./keys" -aws_s3_proxy = "http://dev-s3-mock:9000" +aws_s3_proxy = "http://s3-mock:9000" aws_region = "us-east-1" # The below is optional and used for TLS certificates -tls_cert_path = "certs/cert_dev-kms-core-1.pem" -tls_key_path = "certs/key_dev-kms-core-1.pem" +tls_cert_path = "certs/cert_kms-core-1.pem" +tls_key_path = "certs/key_kms-core-1.pem" # The number of peer_confs dictates the total number of parties. # This list should be the same for all parties. @@ -39,27 +39,27 @@ tls_key_path = "certs/key_dev-kms-core-1.pem" # to perform MPC tasks. [[peer_confs]] party_id = 1 -address = "dev-kms-core-1" +address = "kms-core-1" port = 50001 -tls_cert_path = "certs/cert_dev-kms-core-1.pem" +tls_cert_path = "certs/cert_kms-core-1.pem" [[peer_confs]] party_id = 2 -address = "dev-kms-core-2" +address = "kms-core-2" port = 50002 -tls_cert_path = "certs/cert_dev-kms-core-2.pem" +tls_cert_path = "certs/cert_kms-core-2.pem" [[peer_confs]] party_id = 3 -address = "dev-kms-core-3" +address = "kms-core-3" port = 50003 -tls_cert_path = "certs/cert_dev-kms-core-3.pem" +tls_cert_path = "certs/cert_kms-core-3.pem" [[peer_confs]] party_id = 4 -address = "dev-kms-core-4" +address = "kms-core-4" port = 50004 -tls_cert_path = "certs/cert_dev-kms-core-4.pem" +tls_cert_path = "certs/cert_kms-core-4.pem" # Specify the network configuration of the core-to-core communication # Values below are the same as the one in the constant file for the core network diff --git a/coprocessor/core/service/config/compose_2.toml b/coprocessor/core/service/config/compose_2.toml index ef9160c..5e11802 100644 --- a/coprocessor/core/service/config/compose_2.toml +++ b/coprocessor/core/service/config/compose_2.toml @@ -4,7 +4,7 @@ listen_port_client = 50200 # The address and port that tcp listener binds on to # communicate with the other cores. -listen_address_core = "dev-kms-core-2" +listen_address_core = "kms-core-2" listen_port_core = 50002 # maximum grpc message size in bytes @@ -24,38 +24,38 @@ num_sessions_preproc = 2 # different parties. public_storage_url = "s3://kms" private_storage_url = "file://./keys" -aws_s3_proxy = "http://dev-s3-mock:9000" +aws_s3_proxy = "http://s3-mock:9000" aws_region = "us-east-1" # The below is optional and used for TLS certificates -tls_cert_path = "certs/cert_dev-kms-core-2.pem" -tls_key_path = "certs/key_dev-kms-core-2.pem" +tls_cert_path = "certs/cert_kms-core-2.pem" +tls_key_path = "certs/key_kms-core-2.pem" # The number of peer_confs dictates the total number of parties. # This list should be the same for all parties. [[peer_confs]] party_id = 1 -address = "dev-kms-core-1" +address = "kms-core-1" port = 50001 -tls_cert_path = "certs/cert_dev-kms-core-1.pem" +tls_cert_path = "certs/cert_kms-core-1.pem" [[peer_confs]] party_id = 2 -address = "dev-kms-core-2" +address = "kms-core-2" port = 50002 -tls_cert_path = "certs/cert_dev-kms-core-2.pem" +tls_cert_path = "certs/cert_kms-core-2.pem" [[peer_confs]] party_id = 3 -address = "dev-kms-core-3" +address = "kms-core-3" port = 50003 -tls_cert_path = "certs/cert_dev-kms-core-3.pem" +tls_cert_path = "certs/cert_kms-core-3.pem" [[peer_confs]] party_id = 4 -address = "dev-kms-core-4" +address = "kms-core-4" port = 50004 -tls_cert_path = "certs/cert_dev-kms-core-4.pem" +tls_cert_path = "certs/cert_kms-core-4.pem" # Specify the network configuration of the core-to-core communication # Values below are the same as the one in the constant file for the core network diff --git a/coprocessor/core/service/config/compose_3.toml b/coprocessor/core/service/config/compose_3.toml index 5a28ad2..9b6327d 100644 --- a/coprocessor/core/service/config/compose_3.toml +++ b/coprocessor/core/service/config/compose_3.toml @@ -4,7 +4,7 @@ listen_port_client = 50300 # The address and port that tcp listener binds on to # communicate with the other cores. -listen_address_core = "dev-kms-core-3" +listen_address_core = "kms-core-3" listen_port_core = 50003 # maximum grpc message size in bytes @@ -24,38 +24,38 @@ num_sessions_preproc = 2 # different parties. public_storage_url = "s3://kms" private_storage_url = "file://./keys" -aws_s3_proxy = "http://dev-s3-mock:9000" +aws_s3_proxy = "http://s3-mock:9000" aws_region = "us-east-1" # The below is optional and used for TLS certificates -tls_cert_path = "certs/cert_dev-kms-core-3.pem" -tls_key_path = "certs/key_dev-kms-core-3.pem" +tls_cert_path = "certs/cert_kms-core-3.pem" +tls_key_path = "certs/key_kms-core-3.pem" # The number of peer_confs dictates the total number of parties. # This list should be the same for all parties. [[peer_confs]] party_id = 1 -address = "dev-kms-core-1" +address = "kms-core-1" port = 50001 -tls_cert_path = "certs/cert_dev-kms-core-1.pem" +tls_cert_path = "certs/cert_kms-core-1.pem" [[peer_confs]] party_id = 2 -address = "dev-kms-core-2" +address = "kms-core-2" port = 50002 -tls_cert_path = "certs/cert_dev-kms-core-2.pem" +tls_cert_path = "certs/cert_kms-core-2.pem" [[peer_confs]] party_id = 3 -address = "dev-kms-core-3" +address = "kms-core-3" port = 50003 -tls_cert_path = "certs/cert_dev-kms-core-3.pem" +tls_cert_path = "certs/cert_kms-core-3.pem" [[peer_confs]] party_id = 4 -address = "dev-kms-core-4" +address = "kms-core-4" port = 50004 -tls_cert_path = "certs/cert_dev-kms-core-4.pem" +tls_cert_path = "certs/cert_kms-core-4.pem" # Specify the network configuration of the core-to-core communication # Values below are the same as the one in the constant file for the core network diff --git a/coprocessor/core/service/config/compose_4.toml b/coprocessor/core/service/config/compose_4.toml index e1db0b8..2367c66 100644 --- a/coprocessor/core/service/config/compose_4.toml +++ b/coprocessor/core/service/config/compose_4.toml @@ -4,7 +4,7 @@ listen_port_client = 50400 # The address and port that tcp listener binds on to # communicate with the other cores. -listen_address_core = "dev-kms-core-4" +listen_address_core = "kms-core-4" listen_port_core = 50004 # maximum grpc message size in bytes @@ -24,38 +24,38 @@ num_sessions_preproc = 2 # different parties. public_storage_url = "s3://kms" private_storage_url = "file://./keys" -aws_s3_proxy = "http://dev-s3-mock:9000" +aws_s3_proxy = "http://s3-mock:9000" aws_region = "us-east-1" # The setting below is optional and used for TLS certificates -tls_cert_path = "certs/cert_dev-kms-core-4.pem" -tls_key_path = "certs/key_dev-kms-core-4.pem" +tls_cert_path = "certs/cert_kms-core-4.pem" +tls_key_path = "certs/key_kms-core-4.pem" # The number of peer_confs dictates the total number of parties. # This list should be the same for all parties. [[peer_confs]] party_id = 1 -address = "dev-kms-core-1" +address = "kms-core-1" port = 50001 -tls_cert_path = "certs/cert_dev-kms-core-1.pem" +tls_cert_path = "certs/cert_kms-core-1.pem" [[peer_confs]] party_id = 2 -address = "dev-kms-core-2" +address = "kms-core-2" port = 50002 -tls_cert_path = "certs/cert_dev-kms-core-2.pem" +tls_cert_path = "certs/cert_kms-core-2.pem" [[peer_confs]] party_id = 3 -address = "dev-kms-core-3" +address = "kms-core-3" port = 50003 -tls_cert_path = "certs/cert_dev-kms-core-3.pem" +tls_cert_path = "certs/cert_kms-core-3.pem" [[peer_confs]] party_id = 4 -address = "dev-kms-core-4" +address = "kms-core-4" port = 50004 -tls_cert_path = "certs/cert_dev-kms-core-4.pem" +tls_cert_path = "certs/cert_kms-core-4.pem" # Specify the network configuration of the core-to-core communication # Values below are the same as the one in the constant file for the core network diff --git a/coprocessor/core/service/config/compose_centralized.toml b/coprocessor/core/service/config/compose_centralized.toml index 7b15f49..e7c5fba 100644 --- a/coprocessor/core/service/config/compose_centralized.toml +++ b/coprocessor/core/service/config/compose_centralized.toml @@ -5,7 +5,7 @@ url = "http://0.0.0.0:50051" # different parties. public_storage_url = "s3://kms" private_storage_url = "file://./keys" -aws_s3_proxy = "http://dev-s3-mock:9000" +aws_s3_proxy = "http://s3-mock:9000" aws_region = "us-east-1" # maximum grpc message size in bytes diff --git a/coprocessor/docker-compose/docker-compose-kms-base.yml b/coprocessor/docker-compose/docker-compose-kms-base.yml index f70093f..b5d6ee6 100644 --- a/coprocessor/docker-compose/docker-compose-kms-base.yml +++ b/coprocessor/docker-compose/docker-compose-kms-base.yml @@ -12,7 +12,7 @@ name: zama-kms-base services: # KMS Blockchain - dev-kms-blockchain-validator: + kms-blockchain-validator: image: ghcr.io/zama-ai/kms-blockchain-asc:${DOCKER_IMAGES_TAG} healthcheck: test: "wget -Sq --spider http://localhost:26657/status" @@ -27,24 +27,24 @@ services: - "9090:9090" volumes: - ../blockchain/scripts:/app/scripts - - validator_secrets:/app/secrets + - kms_blockchain_validator_secrets:/app/secrets entrypoint: [ "/app/scripts/bootstrap_validator.sh" ] # Smart contract deployment - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: image: ghcr.io/zama-ai/kms-blockchain-asc:${DOCKER_IMAGES_TAG} restart: "no" depends_on: - dev-kms-blockchain-validator: + kms-blockchain-validator: condition: service_healthy environment: - VALIDATOR_NODE_ENDPOINT: http://dev-kms-blockchain-validator:26657 + VALIDATOR_NODE_ENDPOINT: http://kms-blockchain-validator:26657 build: context: . dockerfile: blockchain/contracts/operations/docker/ci.dockerfile volumes: - ../blockchain/scripts:/app/scripts - - validator_secrets:/app/secrets + - kms_blockchain_validator_secrets:/app/secrets entrypoint: > /bin/sh -c " chmod +x /app/scripts/setup_wallets.sh && chmod +x /app/scripts/deploy_contracts.sh && /app/scripts/setup_wallets.sh && sleep 10 && /app/scripts/deploy_contracts.sh && touch /tmp/done && sleep 65 && exit 0 " healthcheck: @@ -55,7 +55,7 @@ services: start_period: 60s # KV-Store - dev-kv-store: + kms-kv-store: image: ghcr.io/zama-ai/kms-blockchain-gateway:${DOCKER_IMAGES_TAG} build: context: . @@ -74,7 +74,7 @@ services: start_period: 5s # S3 mock - dev-s3-mock: + s3-mock: image: quay.io/minio/minio ports: - "9000:9000" @@ -91,23 +91,23 @@ services: retries: 10 # Minio client to create access keys - dev-s3-mock-setup: + s3-mock-setup: image: quay.io/minio/mc environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} - MINIO_ENDPOINT: "http://dev-s3-mock:9000" + MINIO_ENDPOINT: "http://s3-mock:9000" entrypoint: > /bin/sh -c " sleep 1 && /usr/bin/mc alias set myminio $$MINIO_ENDPOINT ${MINIO_ROOT_USER} ${MINIO_ROOT_PASSWORD} && ACCESS_KEY=$$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 20 | head -n 1) && SECRET_KEY=$$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 40 | head -n 1) && /usr/bin/mc admin user add myminio $$ACCESS_KEY $$SECRET_KEY && /usr/bin/mc admin policy attach myminio readwrite --user $$ACCESS_KEY && echo '$ACCESS_KEY' && echo '$SECRET_KEY' && echo $$ACCESS_KEY > /minio_secrets/access_key && echo $$SECRET_KEY > /minio_secrets/secret_key && cat /minio_secrets/access_key && cat /minio_secrets/secret_key && mc mb --with-lock --ignore-existing myminio/kms && mc anonymous set public myminio/kms " volumes: - - minio_secrets:/minio_secrets + - kms_minio_secrets:/minio_secrets depends_on: - dev-s3-mock: + s3-mock: condition: service_healthy volumes: - minio_secrets: - validator_secrets: + kms_minio_secrets: + kms_blockchain_validator_secrets: secrets: diff --git a/coprocessor/docker-compose/docker-compose-kms-centralized.yml b/coprocessor/docker-compose/docker-compose-kms-centralized.yml index 3ded9bb..9f033d4 100644 --- a/coprocessor/docker-compose/docker-compose-kms-centralized.yml +++ b/coprocessor/docker-compose/docker-compose-kms-centralized.yml @@ -1,14 +1,14 @@ name: zama-kms-centralized services: # KMS-Blockchain validator node - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: environment: - MODE=centralized # KMS-Core-centralized # TODO: move the upload of the pub-key from the validator to the core -> or maybe the connector? # anyway where the keys really are - dev-kms-core: + kms-core: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} build: context: . @@ -22,22 +22,22 @@ services: retries: 5 start_period: 1s volumes: - - minio_secrets:/minio_secrets + - kms_minio_secrets:/minio_secrets - ../core/service/config/:/app/kms/core/service/config depends_on: - dev-s3-mock-setup: + s3-mock-setup: condition: service_completed_successfully entrypoint: > /bin/sh -c " export AWS_ACCESS_KEY_ID=$$(cat /minio_secrets/access_key) && export AWS_SECRET_ACCESS_KEY=$$(cat /minio_secrets/secret_key) && echo 'Generating signing keys' && - kms-gen-keys centralized --pub-url s3://kms --aws-s3-endpoint http://dev-s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys && + kms-gen-keys centralized --pub-url s3://kms --aws-s3-endpoint http://s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys && echo 'Starting kms service' && kms-server centralized --config-file config/compose_centralized.toml " - dev-kms-connector: + kms-connector: build: context: . dockerfile: blockchain/connector/operations/docker/dev.dockerfile @@ -49,15 +49,15 @@ services: - "--conf-file" - "config/centralized.toml" environment: - - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://dev-kms-blockchain-validator:9090 - - ASC_CONN__CORE__ADDRESSES=http://dev-kms-core:50051 - - ASC_CONN__STORE__URL=http://dev-kv-store:8088 + - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://kms-blockchain-validator:9090 + - ASC_CONN__CORE__ADDRESSES=http://kms-core:50051 + - ASC_CONN__STORE__URL=http://kms-kv-store:8088 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__RETRY_INTERVAL=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__RETRY_INTERVAL=1 depends_on: - dev-kms-blockchain-validator: + kms-blockchain-validator: condition: service_healthy - dev-kms-core: + kms-core: condition: service_healthy diff --git a/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml b/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml index 4e17e69..f49b512 100644 --- a/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml +++ b/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml @@ -3,13 +3,13 @@ name: zama-kms-gateway services: # 5. Launch key-gen # TODO: store gateway config in volume and modify it with key-id - dev-kms-simulator-keygen: + setup-kms-key-crs: image: ghcr.io/zama-ai/kms-blockchain-simulator:${DOCKER_IMAGES_TAG} build: context: . dockerfile: blockchain/simulator/operations/docker/ci.dockerfile depends_on: - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: condition: service_completed_successfully environment: - RUST_LOG=info @@ -23,13 +23,13 @@ services: } 2>&1 | tee -a /app/logs/key_crs_gen.log " volumes: - ../blockchain/simulator/config:/app/config - - logs_volume:/app/logs + - setup_kms_key_crs_logs:/app/logs # 6. Start gateway with key-id from key-gen # TODO: - dev-kms-gateway: + gateway: depends_on: - dev-kms-simulator-keygen: + setup-kms-key-crs: condition: service_completed_successfully image: ghcr.io/zama-ai/kms-blockchain-gateway-dev:${DOCKER_IMAGES_TAG} @@ -44,7 +44,7 @@ services: - ../blockchain/gateway/config/connector.toml:/app/gateway/config/connector.toml - ../blockchain/gateway/config/gateway_centralized.toml:/app/gateway/config/gateway.toml - ../scripts/update_key_crs_id.sh:/app/gateway/update_key_crs_id.sh - - logs_volume:/app/logs_keygen:ro + - setup_kms_key_crs_logs:/app/logs_keygen:ro environment: - RUST_BACKTRACE=1 # TODO: Validate that we have a status endpoint on the gateway @@ -56,4 +56,4 @@ services: # start_period: 5s volumes: - logs_volume: + setup_kms_key_crs_logs: diff --git a/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml b/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml index 239bc18..07f17c5 100644 --- a/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml +++ b/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml @@ -3,13 +3,13 @@ name: zama-kms-gateway services: # 5. Launch key-gen # TODO: store gateway config in volume and modify it with key-id - dev-kms-simulator-keygen: + setup-kms-key-crs: image: ghcr.io/zama-ai/kms-blockchain-simulator:${DOCKER_IMAGES_TAG} build: context: . dockerfile: blockchain/simulator/operations/docker/ci.dockerfile depends_on: - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: condition: service_completed_successfully environment: - RUST_LOG=info @@ -23,13 +23,13 @@ services: } 2>&1 | tee -a /app/logs/key_crs_gen.log " volumes: - ../blockchain/simulator/config:/app/config - - logs_volume:/app/logs + - setup_kms_key_crs_logs:/app/logs # 6. Start gateway with key-id from key-gen # TODO: - dev-kms-gateway: + gateway: depends_on: - dev-kms-simulator-keygen: + setup-kms-key-crs: condition: service_completed_successfully image: ghcr.io/zama-ai/kms-blockchain-gateway-dev:${DOCKER_IMAGES_TAG} @@ -44,7 +44,7 @@ services: - ../blockchain/gateway/config/connector.toml:/app/gateway/config/connector.toml - ../blockchain/gateway/config/gateway_threshold.toml:/app/gateway/config/gateway.toml - ../scripts/update_key_crs_id.sh:/app/gateway/update_key_crs_id.sh - - logs_volume:/app/logs_keygen:ro + - setup_kms_key_crs_logs:/app/logs_keygen:ro environment: - RUST_BACKTRACE=1 # TODO: Validate that we have a status endpoint on the gateway @@ -56,4 +56,4 @@ services: # start_period: 5s volumes: - logs_volume: + setup_kms_key_crs_logs: diff --git a/coprocessor/docker-compose/docker-compose-kms-threshold.yml b/coprocessor/docker-compose/docker-compose-kms-threshold.yml index 7292bd5..188b00a 100644 --- a/coprocessor/docker-compose/docker-compose-kms-threshold.yml +++ b/coprocessor/docker-compose/docker-compose-kms-threshold.yml @@ -5,31 +5,31 @@ name: zama-kms-threshold services: # 1. Generate TLS certificates # NOTE: for now we do the key-generation here because kms-server requires one to start - dev-kms-core-certs: + setup-kms-core-certs: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} environment: - RUST_LOG=debug entrypoint: > /bin/sh -c " echo \"Starting tls certificates generation\" && - kms-gen-tls-certs --ca-names dev-kms-core-1 dev-kms-core-2 dev-kms-core-3 dev-kms-core-4 && + kms-gen-tls-certs --ca-names kms-core-1 kms-core-2 kms-core-3 kms-core-4 && echo \"TLS certificates generated\" && exit 0 " volumes: - - certs:/app/kms/core/service/certs + - kms_core_certs:/app/kms/core/service/certs # 3. Initialize the different cores - dev-kms-core-init: + setup-kms-core-init: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} depends_on: - dev-kms-core-1: + kms-core-1: condition: service_healthy - dev-kms-core-2: + kms-core-2: condition: service_healthy - dev-kms-core-3: + kms-core-3: condition: service_healthy - dev-kms-core-4: + kms-core-4: condition: service_healthy environment: - RUST_LOG=info @@ -37,17 +37,17 @@ services: entrypoint: > /bin/sh -c " echo \"Starting initialization procedure\" && - kms-init -a http://dev-kms-core-1:50100 http://dev-kms-core-2:50200 http://dev-kms-core-3:50300 http://dev-kms-core-4:50400 && + kms-init -a http://kms-core-1:50100 http://kms-core-2:50200 http://kms-core-3:50300 http://kms-core-4:50400 && echo \"Core services initialization done\" && exit 0 " # 4. Deploy smart contracts - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: environment: - MODE=threshold # 2. We start all cores - dev-kms-core-1: + kms-core-1: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50051:50051" @@ -60,12 +60,12 @@ services: start_period: 1s volumes: - ../core/service/config/:/app/kms/core/service/config - - certs:/app/kms/core/service/certs - - minio_secrets:/minio_secrets + - kms_core_certs:/app/kms/core/service/certs + - kms_minio_secrets:/minio_secrets depends_on: - dev-s3-mock-setup: + s3-mock-setup: condition: service_completed_successfully - dev-kms-core-certs: + setup-kms-core-certs: condition: service_completed_successfully environment: - RUST_LOG=info @@ -86,12 +86,12 @@ services: echo 'region=us-east-1' >> ~/.aws/config && cat ~/.aws/config && echo 'Generating signing keys' && - kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://dev-s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 1 && + kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 1 && echo 'Starting kms service' && kms-server threshold --config-file config/compose_1.toml " - dev-kms-connector-1: + kms-connector-1: build: context: . dockerfile: blockchain/connector/operations/docker/dev.dockerfile @@ -104,20 +104,20 @@ services: - "config/compose_1.toml" environment: - RUST_LOG=info - - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://dev-kms-blockchain-validator:9090 - - ASC_CONN__CORE__ADDRESSES=http://dev-kms-core-1:50100 - - ASC_CONN__STORE__URL=http://dev-kv-store:8088 + - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://kms-blockchain-validator:9090 + - ASC_CONN__CORE__ADDRESSES=http://kms-core-1:50100 + - ASC_CONN__STORE__URL=http://kms-kv-store:8088 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__RETRY_INTERVAL=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__RETRY_INTERVAL=1 depends_on: - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: condition: service_completed_successfully - dev-kms-core-init: + setup-kms-core-init: condition: service_completed_successfully - dev-kms-core-2: + kms-core-2: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50052:50052" @@ -130,12 +130,12 @@ services: start_period: 1s volumes: - ../core/service/config/:/app/kms/core/service/config - - certs:/app/kms/core/service/certs - - minio_secrets:/minio_secrets + - kms_core_certs:/app/kms/core/service/certs + - kms_minio_secrets:/minio_secrets depends_on: - dev-s3-mock-setup: + s3-mock-setup: condition: service_completed_successfully - dev-kms-core-certs: + setup-kms-core-certs: condition: service_completed_successfully environment: - RUST_LOG=info @@ -144,12 +144,12 @@ services: export AWS_ACCESS_KEY_ID=$$(cat /minio_secrets/access_key) && export AWS_SECRET_ACCESS_KEY=$$(cat /minio_secrets/secret_key) && echo 'Generating signing keys' && - kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://dev-s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 2 && + kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 2 && echo 'Starting kms service' && kms-server threshold --config-file config/compose_2.toml " - dev-kms-connector-2: + kms-connector-2: image: ghcr.io/zama-ai/kms-blockchain-connector-dev:${DOCKER_IMAGES_TAG} volumes: - ../blockchain/connector/config/:/app/kms-connector/config @@ -159,20 +159,20 @@ services: - "config/compose_2.toml" environment: - RUST_LOG=info - - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://dev-kms-blockchain-validator:9090 - - ASC_CONN__CORE__ADDRESSES=http://dev-kms-core-2:50200 - - ASC_CONN__STORE__URL=http://dev-kv-store:8088 + - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://kms-blockchain-validator:9090 + - ASC_CONN__CORE__ADDRESSES=http://kms-core-2:50200 + - ASC_CONN__STORE__URL=http://kms-kv-store:8088 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__RETRY_INTERVAL=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__RETRY_INTERVAL=1 depends_on: - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: condition: service_completed_successfully - dev-kms-core-init: + setup-kms-core-init: condition: service_completed_successfully - dev-kms-core-3: + kms-core-3: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50053:50053" @@ -184,13 +184,13 @@ services: retries: 5 start_period: 1s volumes: - - certs:/app/kms/core/service/certs - - minio_secrets:/minio_secrets + - kms_core_certs:/app/kms/core/service/certs + - kms_minio_secrets:/minio_secrets - ../core/service/config/:/app/kms/core/service/config depends_on: - dev-s3-mock-setup: + s3-mock-setup: condition: service_completed_successfully - dev-kms-core-certs: + setup-kms-core-certs: condition: service_completed_successfully environment: - RUST_LOG=info @@ -199,12 +199,12 @@ services: export AWS_ACCESS_KEY_ID=$$(cat /minio_secrets/access_key) && export AWS_SECRET_ACCESS_KEY=$$(cat /minio_secrets/secret_key) && echo 'Generating signing keys' && - kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://dev-s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 3 && + kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 3 && echo 'Starting kms service' && kms-server threshold --config-file config/compose_3.toml " - dev-kms-connector-3: + kms-connector-3: image: ghcr.io/zama-ai/kms-blockchain-connector-dev:${DOCKER_IMAGES_TAG} volumes: - ../blockchain/connector/config/:/app/kms-connector/config @@ -214,20 +214,20 @@ services: - "config/compose_3.toml" environment: - RUST_LOG=info - - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://dev-kms-blockchain-validator:9090 - - ASC_CONN__CORE__ADDRESSES=http://dev-kms-core-3:50300 - - ASC_CONN__STORE__URL=http://dev-kv-store:8088 + - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://kms-blockchain-validator:9090 + - ASC_CONN__CORE__ADDRESSES=http://kms-core-3:50300 + - ASC_CONN__STORE__URL=http://kms-kv-store:8088 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__RETRY_INTERVAL=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__RETRY_INTERVAL=1 depends_on: - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: condition: service_completed_successfully - dev-kms-core-init: + setup-kms-core-init: condition: service_completed_successfully - dev-kms-core-4: + kms-core-4: image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50054:50054" @@ -240,12 +240,12 @@ services: start_period: 1s volumes: - ../core/service/config/:/app/kms/core/service/config - - certs:/app/kms/core/service/certs - - minio_secrets:/minio_secrets + - kms_core_certs:/app/kms/core/service/certs + - kms_minio_secrets:/minio_secrets depends_on: - dev-s3-mock-setup: + s3-mock-setup: condition: service_completed_successfully - dev-kms-core-certs: + setup-kms-core-certs: condition: service_completed_successfully environment: - RUST_LOG=info @@ -254,12 +254,12 @@ services: export AWS_ACCESS_KEY_ID=$$(cat /minio_secrets/access_key) && export AWS_SECRET_ACCESS_KEY=$$(cat /minio_secrets/secret_key) && echo 'Generating signing keys' && - kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://dev-s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 4 && + kms-gen-keys threshold --pub-url s3://kms --aws-s3-endpoint http://s3-mock:9000 --aws-region us-east-1 --priv-url file://./keys --cmd signing-keys --signing-key-party-id 4 && echo 'Starting kms service' && kms-server threshold --config-file config/compose_4.toml " - dev-kms-connector-4: + kms-connector-4: image: ghcr.io/zama-ai/kms-blockchain-connector-dev:${DOCKER_IMAGES_TAG} volumes: - ../blockchain/connector/config/:/app/kms-connector/config @@ -269,17 +269,17 @@ services: - "config/compose_4.toml" environment: - RUST_LOG=info - - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://dev-kms-blockchain-validator:9090 - - ASC_CONN__CORE__ADDRESSES=http://dev-kms-core-4:50400 - - ASC_CONN__STORE__URL=http://dev-kv-store:8088 + - ASC_CONN__BLOCKCHAIN__ADDRESSES=http://kms-blockchain-validator:9090 + - ASC_CONN__CORE__ADDRESSES=http://kms-core-4:50400 + - ASC_CONN__STORE__URL=http://kms-kv-store:8088 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__DECRYPTION__RETRY_INTERVAL=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__INITIAL_WAIT_TIME=1 - ASC_CONN__CORE__TIMEOUT_CONFIG__REENCRYPTION__RETRY_INTERVAL=1 depends_on: - dev-kms-blockchain-asc-deploy: + setup-kms-blockchain-contracts: condition: service_completed_successfully - dev-kms-core-init: + setup-kms-core-init: condition: service_completed_successfully debug: @@ -291,5 +291,5 @@ services: tty: true volumes: - certs: - minio_secrets: + kms_core_certs: + kms_minio_secrets: From 51e91da8aa68f80f52afa5f0723c44f6c973f4a6 Mon Sep 17 00:00:00 2001 From: manoranjith Date: Tue, 10 Dec 2024 09:20:54 +0100 Subject: [PATCH 05/14] chore: explicit container names to avoid -1 suffix --- coprocessor/.env | 2 +- coprocessor/Makefile | 6 +++--- .../docker-compose-fhevm-coprocessor.yml | 3 +++ .../docker-compose/docker-compose-kms-base.yml | 5 +++++ .../docker-compose/docker-compose-kms-centralized.yml | 2 ++ .../docker-compose-kms-gateway-centralized.yml | 2 ++ .../docker-compose-kms-gateway-threshold.yml | 2 ++ .../docker-compose/docker-compose-kms-threshold.yml | 11 +++++++++++ .../docker-compose-setup-fhevm-contracts.yml | 1 + .../docker-compose-setup-fhevm-coprocessor-db.yml | 3 ++- 10 files changed, 32 insertions(+), 5 deletions(-) diff --git a/coprocessor/.env b/coprocessor/.env index 8ab5d33..cd05c1b 100644 --- a/coprocessor/.env +++ b/coprocessor/.env @@ -7,7 +7,7 @@ export MINIO_ROOT_PASSWORD=strongadminpassword export DOCKER_IMAGES_TAG=v0.9.0-rc37 -export GETH_CONTAINER=zama-fhevm-geth-1 +export GETH_CONTAINER=zama-fhevm-geth diff --git a/coprocessor/Makefile b/coprocessor/Makefile index 6d9a7d5..9cb5296 100644 --- a/coprocessor/Makefile +++ b/coprocessor/Makefile @@ -83,7 +83,7 @@ endif init-db: check-all-test-repo ifeq ($(CENTRALIZED_KMS),false) - @echo "CENTRALIZED_KMS is false, we are extracting keys from kms-core-1" + @echo "CENTRALIZED_KMS is false, we are extracting keys from kms-core" $(MAKE) copy-keys-threshold-key-gen else ifeq ($(CENTRALIZED_KMS),true) @echo "CENTRALIZED_KMS is true, copying fhe keys from dev image" @@ -92,7 +92,7 @@ else @echo "CENTRALIZED_KMS is set to an unrecognized value: $(CENTRALIZED_KMS)" endif docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml up -d --wait || true - @if [ "$$(docker inspect -f '{{.State.ExitCode}}' $(DOCKER_COMPOSE_PROJECT)-setup-fhevm-coprocessor-db-1)" -eq 0 ]; then \ + @if [ "$$(docker inspect -f '{{.State.ExitCode}}' $(DOCKER_COMPOSE_PROJECT)-setup-fhevm-coprocessor-db)" -eq 0 ]; then \ echo "Container exited with code 0, proceeding..."; \ else \ echo "Container did not exit successfully, failing..."; \ @@ -102,7 +102,7 @@ endif setup-fhevm-contracts: docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv -f docker-compose/docker-compose-setup-fhevm-contracts.yml up -d --wait || true - @if [ "$$(docker inspect -f '{{.State.ExitCode}}' zama-setup-fhevm-contracts-1)" -eq 0 ]; then \ + @if [ "$$(docker inspect -f '{{.State.ExitCode}}' zama-setup-fhevm-contracts)" -eq 0 ]; then \ echo "Container exited with code 0, proceeding..."; \ else \ echo "Container did not exit successfully, failing..."; \ diff --git a/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml b/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml index 78441b7..bec629d 100644 --- a/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml +++ b/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml @@ -1,5 +1,6 @@ services: fhevm-coprocessor-db: + container_name: ${DOCKER_COMPOSE_PROJECT}-fhevm-coprocessor-db image: postgres:15.7 restart: always environment: @@ -11,6 +12,7 @@ services: - fhevm_coprocessor_db:/var/lib/postgresql/data fhevm-coprocessor: + container_name: ${DOCKER_COMPOSE_PROJECT}-fhevm-coprocessor image: ghcr.io/zama-ai/fhevm-coprocessor:v0.1.2 environment: - DATABASE_URL=postgresql://postgres:postgres@fhevm-coprocessor-db:5432/coprocessor @@ -24,6 +26,7 @@ services: - --server-addr=0.0.0.0:50052 - --coprocessor-private-key=/usr/share/coprocessor.key fhevm-geth: + container_name: ${DOCKER_COMPOSE_PROJECT}-fhevm-geth image: ghcr.io/zama-ai/go-ethereum-coprocessor-dev:v0.1.1 volumes: - ../blockchain/geth/entrypoint.sh:/entrypoint.sh diff --git a/coprocessor/docker-compose/docker-compose-kms-base.yml b/coprocessor/docker-compose/docker-compose-kms-base.yml index b5d6ee6..3db9abd 100644 --- a/coprocessor/docker-compose/docker-compose-kms-base.yml +++ b/coprocessor/docker-compose/docker-compose-kms-base.yml @@ -13,6 +13,7 @@ name: zama-kms-base services: # KMS Blockchain kms-blockchain-validator: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-blockchain-validator image: ghcr.io/zama-ai/kms-blockchain-asc:${DOCKER_IMAGES_TAG} healthcheck: test: "wget -Sq --spider http://localhost:26657/status" @@ -32,6 +33,7 @@ services: # Smart contract deployment setup-kms-blockchain-contracts: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-blockchain-contracts image: ghcr.io/zama-ai/kms-blockchain-asc:${DOCKER_IMAGES_TAG} restart: "no" depends_on: @@ -56,6 +58,7 @@ services: # KV-Store kms-kv-store: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-kv-store image: ghcr.io/zama-ai/kms-blockchain-gateway:${DOCKER_IMAGES_TAG} build: context: . @@ -75,6 +78,7 @@ services: # S3 mock s3-mock: + container_name: ${DOCKER_COMPOSE_PROJECT}-s3-mock image: quay.io/minio/minio ports: - "9000:9000" @@ -92,6 +96,7 @@ services: # Minio client to create access keys s3-mock-setup: + container_name: ${DOCKER_COMPOSE_PROJECT}-s3-mock-setup image: quay.io/minio/mc environment: MINIO_ROOT_USER: ${MINIO_ROOT_USER} diff --git a/coprocessor/docker-compose/docker-compose-kms-centralized.yml b/coprocessor/docker-compose/docker-compose-kms-centralized.yml index 9f033d4..0b98511 100644 --- a/coprocessor/docker-compose/docker-compose-kms-centralized.yml +++ b/coprocessor/docker-compose/docker-compose-kms-centralized.yml @@ -9,6 +9,7 @@ services: # TODO: move the upload of the pub-key from the validator to the core -> or maybe the connector? # anyway where the keys really are kms-core: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-core image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} build: context: . @@ -38,6 +39,7 @@ services: " kms-connector: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-connector build: context: . dockerfile: blockchain/connector/operations/docker/dev.dockerfile diff --git a/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml b/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml index f49b512..c57c0c9 100644 --- a/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml +++ b/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml @@ -4,6 +4,7 @@ services: # 5. Launch key-gen # TODO: store gateway config in volume and modify it with key-id setup-kms-key-crs: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-key-crs image: ghcr.io/zama-ai/kms-blockchain-simulator:${DOCKER_IMAGES_TAG} build: context: . @@ -28,6 +29,7 @@ services: # 6. Start gateway with key-id from key-gen # TODO: gateway: + container_name: ${DOCKER_COMPOSE_PROJECT}-gateway depends_on: setup-kms-key-crs: condition: service_completed_successfully diff --git a/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml b/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml index 07f17c5..54e6834 100644 --- a/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml +++ b/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml @@ -4,6 +4,7 @@ services: # 5. Launch key-gen # TODO: store gateway config in volume and modify it with key-id setup-kms-key-crs: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-key-crs image: ghcr.io/zama-ai/kms-blockchain-simulator:${DOCKER_IMAGES_TAG} build: context: . @@ -28,6 +29,7 @@ services: # 6. Start gateway with key-id from key-gen # TODO: gateway: + container_name: ${DOCKER_COMPOSE_PROJECT}-gateway depends_on: setup-kms-key-crs: condition: service_completed_successfully diff --git a/coprocessor/docker-compose/docker-compose-kms-threshold.yml b/coprocessor/docker-compose/docker-compose-kms-threshold.yml index 188b00a..a6d3864 100644 --- a/coprocessor/docker-compose/docker-compose-kms-threshold.yml +++ b/coprocessor/docker-compose/docker-compose-kms-threshold.yml @@ -6,6 +6,7 @@ services: # 1. Generate TLS certificates # NOTE: for now we do the key-generation here because kms-server requires one to start setup-kms-core-certs: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-core-certs image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} environment: - RUST_LOG=debug @@ -21,6 +22,7 @@ services: # 3. Initialize the different cores setup-kms-core-init: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-core-init image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} depends_on: kms-core-1: @@ -43,11 +45,13 @@ services: " # 4. Deploy smart contracts setup-kms-blockchain-contracts: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-blockchain-contracts environment: - MODE=threshold # 2. We start all cores kms-core-1: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-core-1 image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50051:50051" @@ -92,6 +96,7 @@ services: " kms-connector-1: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-connector-1 build: context: . dockerfile: blockchain/connector/operations/docker/dev.dockerfile @@ -118,6 +123,7 @@ services: condition: service_completed_successfully kms-core-2: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-core-2 image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50052:50052" @@ -150,6 +156,7 @@ services: " kms-connector-2: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-connector-2 image: ghcr.io/zama-ai/kms-blockchain-connector-dev:${DOCKER_IMAGES_TAG} volumes: - ../blockchain/connector/config/:/app/kms-connector/config @@ -173,6 +180,7 @@ services: condition: service_completed_successfully kms-core-3: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-core-3 image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50053:50053" @@ -205,6 +213,7 @@ services: " kms-connector-3: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-connector-3 image: ghcr.io/zama-ai/kms-blockchain-connector-dev:${DOCKER_IMAGES_TAG} volumes: - ../blockchain/connector/config/:/app/kms-connector/config @@ -228,6 +237,7 @@ services: condition: service_completed_successfully kms-core-4: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-core-4 image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} ports: - "50054:50054" @@ -260,6 +270,7 @@ services: " kms-connector-4: + container_name: ${DOCKER_COMPOSE_PROJECT}-kms-connector-4 image: ghcr.io/zama-ai/kms-blockchain-connector-dev:${DOCKER_IMAGES_TAG} volumes: - ../blockchain/connector/config/:/app/kms-connector/config diff --git a/coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml b/coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml index 0f40298..79ec5e1 100644 --- a/coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml +++ b/coprocessor/docker-compose/docker-compose-setup-fhevm-contracts.yml @@ -1,5 +1,6 @@ services: setup-fhevm-contracts: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-fhevm-contracts image: ghcr.io/zama-ai/fhevm-smart-contracts-dev:v0.1.1-1 volumes: - ../env/.env.example.deployment:/app/.env.example.deployment diff --git a/coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml b/coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml index 6fb48c9..e3d6839 100644 --- a/coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml +++ b/coprocessor/docker-compose/docker-compose-setup-fhevm-coprocessor-db.yml @@ -1,8 +1,9 @@ services: setup-fhevm-coprocessor-db: + container_name: ${DOCKER_COMPOSE_PROJECT}-setup-fhevm-coprocessor-db image: ghcr.io/zama-ai/fhevm-db-migration:v0.1.2 environment: - DATABASE_URL: postgresql://postgres:postgres@${DOCKER_COMPOSE_PROJECT}-fhevm-coprocessor-db-1:5432/coprocessor + DATABASE_URL: postgresql://postgres:postgres@${DOCKER_COMPOSE_PROJECT}-fhevm-coprocessor-db:5432/coprocessor volumes: - ../network-fhe-keys/:/fhevm-keys/ networks: From d428cf173632558c57d19d40efd98939e5cf8060 Mon Sep 17 00:00:00 2001 From: manoranjith Date: Thu, 5 Dec 2024 16:53:02 +0100 Subject: [PATCH 06/14] chore: remove completed TODOs --- coprocessor/docker-compose/docker-compose-kms-base.yml | 8 -------- .../docker-compose/docker-compose-kms-centralized.yml | 2 -- .../docker-compose-kms-gateway-centralized.yml | 2 -- .../docker-compose-kms-gateway-threshold.yml | 2 -- .../docker-compose/docker-compose-kms-threshold.yml | 4 ---- 5 files changed, 18 deletions(-) diff --git a/coprocessor/docker-compose/docker-compose-kms-base.yml b/coprocessor/docker-compose/docker-compose-kms-base.yml index 3db9abd..9da957c 100644 --- a/coprocessor/docker-compose/docker-compose-kms-base.yml +++ b/coprocessor/docker-compose/docker-compose-kms-base.yml @@ -1,15 +1,7 @@ -name: zama-kms-base - # A docker compose file to be able to debug the kms # The images take a bit of time to build -# TODO: handle networking stuff -# TODO: figure out if we need the gateway here, if so, do we have a way to mimic the FHEVM? -# TODO: create a overload version of this docker compose to use only ghcr main images -# TODO: create a overload version of this docker compose to use only ghcr released images # TODO: add a faucet -# TODO: add minio to simulate s3 + some config file for the endpoint - services: # KMS Blockchain kms-blockchain-validator: diff --git a/coprocessor/docker-compose/docker-compose-kms-centralized.yml b/coprocessor/docker-compose/docker-compose-kms-centralized.yml index 0b98511..dec4a07 100644 --- a/coprocessor/docker-compose/docker-compose-kms-centralized.yml +++ b/coprocessor/docker-compose/docker-compose-kms-centralized.yml @@ -6,8 +6,6 @@ services: - MODE=centralized # KMS-Core-centralized - # TODO: move the upload of the pub-key from the validator to the core -> or maybe the connector? - # anyway where the keys really are kms-core: container_name: ${DOCKER_COMPOSE_PROJECT}-kms-core image: ghcr.io/zama-ai/kms-service:${DOCKER_IMAGES_TAG} diff --git a/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml b/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml index c57c0c9..50c1624 100644 --- a/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml +++ b/coprocessor/docker-compose/docker-compose-kms-gateway-centralized.yml @@ -2,7 +2,6 @@ name: zama-kms-gateway services: # 5. Launch key-gen - # TODO: store gateway config in volume and modify it with key-id setup-kms-key-crs: container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-key-crs image: ghcr.io/zama-ai/kms-blockchain-simulator:${DOCKER_IMAGES_TAG} @@ -27,7 +26,6 @@ services: - setup_kms_key_crs_logs:/app/logs # 6. Start gateway with key-id from key-gen - # TODO: gateway: container_name: ${DOCKER_COMPOSE_PROJECT}-gateway depends_on: diff --git a/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml b/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml index 54e6834..f241ab0 100644 --- a/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml +++ b/coprocessor/docker-compose/docker-compose-kms-gateway-threshold.yml @@ -2,7 +2,6 @@ name: zama-kms-gateway services: # 5. Launch key-gen - # TODO: store gateway config in volume and modify it with key-id setup-kms-key-crs: container_name: ${DOCKER_COMPOSE_PROJECT}-setup-kms-key-crs image: ghcr.io/zama-ai/kms-blockchain-simulator:${DOCKER_IMAGES_TAG} @@ -27,7 +26,6 @@ services: - setup_kms_key_crs_logs:/app/logs # 6. Start gateway with key-id from key-gen - # TODO: gateway: container_name: ${DOCKER_COMPOSE_PROJECT}-gateway depends_on: diff --git a/coprocessor/docker-compose/docker-compose-kms-threshold.yml b/coprocessor/docker-compose/docker-compose-kms-threshold.yml index a6d3864..a477f89 100644 --- a/coprocessor/docker-compose/docker-compose-kms-threshold.yml +++ b/coprocessor/docker-compose/docker-compose-kms-threshold.yml @@ -1,7 +1,3 @@ -name: zama-kms-threshold -# TODO: proper networking between nodes -# add keygen, tls and pushing keys to s3 mock - services: # 1. Generate TLS certificates # NOTE: for now we do the key-generation here because kms-server requires one to start From 139265fc2dfc7cd9bc4dc6ee694d1e148bcaefcc Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Fri, 13 Dec 2024 18:32:29 -0300 Subject: [PATCH 07/14] chore: clean a bit more some files, update docker images everywhere, improve README --- coprocessor/Makefile | 49 +---------- coprocessor/README.md | 116 ++++++++------------------ coprocessor/scripts/run_everything.sh | 10 +-- 3 files changed, 44 insertions(+), 131 deletions(-) diff --git a/coprocessor/Makefile b/coprocessor/Makefile index 9cb5296..47275fd 100644 --- a/coprocessor/Makefile +++ b/coprocessor/Makefile @@ -121,22 +121,6 @@ copy-keys-centralized-key-gen: @bash ./scripts/update_signers.sh $(PWD)/env/.env.example.deployment $(PWD)/network-fhe-keys 1 -trigger-key-gen-threshold: - cargo run --bin simulator -- \ - -f config/local_threshold.toml \ - insecure-key-gen - -trigger-crs-gen-threshold: - cargo run --bin simulator -- \ - -f config/local_threshold.toml \ - insecure-crs-gen --max-num-bits 256 - -run-kms-threshold: - docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ - -f docker-compose/docker-compose-kms-base.yml \ - -f docker-compose/docker-compose-kms-threshold.yml \ - up -d --wait - run-kms-threshold-with-gateway: docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ @@ -145,24 +129,6 @@ run-kms-threshold-with-gateway: -f docker-compose/docker-compose-fhevm-coprocessor.yml \ up -d --wait -stop-kms-threshold: - docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ - -f docker-compose/docker-compose-kms-base.yml \ - -f docker-compose/docker-compose-kms-threshold.yml \ - down --volumes --remove-orphans - -run-kms-centralized: - docker -p $(DOCKER_COMPOSE_PROJECT) compose -vvv \ - -f docker-compose/docker-compose-kms-base.yml \ - -f docker-compose/docker-compose-kms-centralized.yml \ - up -d --wait - -stop-kms-centralized: - docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ - -f docker-compose/docker-compose-kms-base.yml \ - -f docker-compose/docker-compose-kms-centralized.yml \ - down - run-kms-centralized-with-gateway: docker compose -p $(DOCKER_COMPOSE_PROJECT) -vvv \ -f docker-compose/docker-compose-kms-base.yml \ @@ -202,9 +168,7 @@ else @echo "CENTRALIZED_KMS is set to an unrecognized value: $(CENTRALIZED_KMS)" endif - - -stop-kms: +stop: ifeq ($(CENTRALIZED_KMS),true) @echo "CENTRALIZED_KMS is true, Stopping centralized KMS...." $(MAKE) stop-kms-centralized-with-gateway @@ -216,9 +180,6 @@ else @echo "CENTRALIZED_KMS is set to an unrecognized value: $(CENTRALIZED_KMS)" endif -TEST_FILE := run_tests.sh -TEST_IF_FROM_REGISTRY := - run-e2e-test: check-all-test-repo @cd $(FHEVM_SOLIDITY_PATH) && npx hardhat test @@ -229,8 +190,6 @@ install-packages: cd $(FHEVM_SOLIDITY_PATH) && npm i solidity-comments-linux-x64-gnu; \ fi - - prepare-e2e-test: check-all-test-repo @bash scripts/fund_tests_addresses_docker.sh $(MAKE) setup-fhevm-contracts @@ -278,14 +237,14 @@ e2e-test: clean-keys: - $(MAKE) stop-kms + $(MAKE) stop rm -rf network-fhe-keys rm -rf kms-fhe-keys rm -rf res clean: - $(MAKE) stop-kms + $(MAKE) stop rm -rf $(WORKDIR)/ rm -rf network-fhe-keys rm -rf kms-fhe-keys @@ -293,9 +252,7 @@ clean: print-info: - @echo 'KMS_DEV_VERSION: $(KMS_DEV_VERSION) for KEY_GEN---extracted from Makefile' @echo 'FHEVM_SOLIDITY_VERSION: $(FHEVM_SOLIDITY_VERSION) ---extracted from Makefile' - @bash scripts/get_repository_info.sh fhevm $(FHEVM_SOLIDITY_PATH) diff --git a/coprocessor/README.md b/coprocessor/README.md index 7c2fe54..caedb8f 100644 --- a/coprocessor/README.md +++ b/coprocessor/README.md @@ -36,31 +36,15 @@ across all the components for this test setup. - The docker compose folder contains all the files for KMS and coprocessor. -- Co-processor repository is cloned to work_dir and the Makefile is used for - bringing up co-processor network (will not be needed soon) - -- Solidity repository is cloned to work_dir and used from source to funding - test accounts, deploy contracts and run tests +- fhEVM solidity repository is cloned to work_dir and used to run tests - All the components are dockerized, a tutorial explains also how to run it from source (if necessary) -## Prerequisites - -- If there is an authentication error coming from docker. - It maybe be that you're pulling a private image without a token. - Go to github "Settings/Developer Settings" > "Personal Access Tokens" > "Tokens (classic)" > "Generate new token (classic)". - The token should have the "read:packages" permission. - Afterwards, do `docker login ghcr.io` and use your github ID and the token to login. - Note that this token is saved by docker locally in the clear, - so it's best to only give it the permissions you need and set the expiration time to 7 days. - ### Install Binaries Make sure you have these binaries installed in your environment: - [docker](https://docs.docker.com/engine/install) -- [rust](https://www.rust-lang.org/tools/install) -- [protobuf](https://grpc.io/docs/protoc-installation) - [nodejs v20](https://nodejs.org/en/download/package-manager) > **NB:** We will wrap all components in docker images to remove these prerequisites in the near future. @@ -76,7 +60,7 @@ If you only want to see a running setup and trigger some tests, follow the instr make clean ./scripts/run_everything.sh # To stop -make stop-kms-centralized-with-gateway +make stop ``` ### Threshold KMS @@ -86,27 +70,29 @@ make stop-kms-centralized-with-gateway make clean ./scripts/run_everything.sh # To stop -make stop-kms-threshold-with-gateway +make stop ``` - The different steps are: - Running the coprocessor + db + geth - - Running the KMS blockchain with KMS core + KMS connector - - Deploying the different smart contracts - - Triggering a key-gen and crs-gen - - RUnning the gateway (which need a working geth node) - - Retrieve the fhe keys + crs and give them to coprocessor + - Running the KMS blockchain with KMS core(s) + - Deploying the different KMS blockchain smart contracts via `zama-setup-kms-blockchain-contracts` docker image + - Running KMS connector(s) + - Triggering a key-gen and crs-gen via `zama-setup-kms-key-crs` docker image + - Updating the CRS and key ids in gateway config + running the gateway (which need a working geth node) + - Retrieving the fhe keys + crs and give them to coprocessor via `zama-setup-fhevm-coprocessor-db` docker image + - Deploying fhEVM smart contracts via `zama-setup-fhevm-contracts` docker image - Run a a trivial decryption test ## Steps setting up the environment (detailed) ### 0. Set the KMS mode -Verify the configuration in .env file, most important variable is CENTRALIZED_KMS, set it to false for threshold KMS. +Verify the configuration in .env file, most important variable is CENTRALIZED_KMS, set it to `false` for threshold KMS. | CENTRALIZED_KMS | Purpose | | --------------- | --------------------------------------------------------------------------------------------------------------------- | -| true | KMS is running in centralized mode, keys are generated by one KMS party and signer is automatically updated (default) | +| true (default) | KMS is running in centralized mode, keys are generated by one KMS party and signer is automatically updated | | false | KMS is running in threshold mode with 4 MPC nodes, keys are freshly generated and signers are automatically updated | Note: **Based on the mode the command will trigger different configurations transparently!** @@ -120,10 +106,11 @@ make run-kms The different steps are: - Running the coprocessor + db + geth -- Running the KMS blockchain with KMS core + KMS connector -- Deploying the different smart contracts -- Triggering a key-gen and crs-gen -- Running the gateway (which need a working geth node) +- Running the KMS blockchain with KMS core(s) +- Deploying the different KMS blockchain smart contracts via `zama-setup-kms-blockchain-contracts` docker image +- Running KMS connector(s) +- Triggering a key-gen and crs-gen via `zama-setup-kms-key-crs` docker image +- Updating the CRS and key ids in gateway config + running the gateway (which need a working geth node) 📝 At this step keys are not loaded in coprocessor DB. @@ -141,7 +128,7 @@ Then (2) we download keys (with identifiers) from minio (S3 bucket like storage) 💡 Follow KMS blockchain smart contracts deployment (__first step__)~ 2 mn ```bash - $docker logs zama-kms-gateway-dev-kms-blockchain-asc-deploy-1 -f + $docker logs zama-setup-kms-blockchain-contracts-1 -f Summary of all the addresses: IPSC_ETHERMINT_ADDRESS : wasm1wug8sewp6cedgkmrmvhl3lf3tulagm9hnvy8p0rppz9yjw0g4wtqhs9hr8 @@ -162,7 +149,7 @@ Then (2) we download keys (with identifiers) from minio (S3 bucket like storage) This docker container is starting only after the deployment step (above) ```bash -$docker logs zama-setup-kms-key-crs-1 -f +$docker logs zama-setup-kms-key-crs -f Launching insecure key-gen [ { @@ -189,8 +176,6 @@ Launching crs-gen } ] Success - - ``` @@ -199,9 +184,9 @@ Success ```bash # Threshold KMS -docker logs zama-kms-threshold-dev-kms-connector-1-1 > log_connector.txt 2>&1 && grep crsgen log_connector.txt -i +docker logs zama-kms-connector-1 > log_connector.txt 2>&1 && grep crsgen log_connector.txt -i # Centralized KMS -docker logs zama-kms-gateway-dev-kms-connector-1 > log_connector.txt 2>&1 && grep keygen log_connector.txt -i +docker logs zama-kms-connector-1 > log_connector.txt 2>&1 && grep keygen log_connector.txt -i ``` Typical output, highlights on: @@ -229,18 +214,15 @@ make init-db
💡 Details -This command will retrieve from -> [http://localhost:9001/browser/kms](http://localhost:9001/browser/kms): - -- fhe public key -- server key (evaluation key) -- CRS (for input proof) -- signers of MPC nodes (used to sign decryption results for example) -- update the .env.example.deployment script with the freshly retrieved signers addresses (`work_dir/fhevm/.env.example.deployment`) -- insert keys into coprocessor DB +This command performs the following actions: -```bash -test -``` +- Retrieves from [http://localhost:9001/browser/kms](http://localhost:9001/browser/kms): + - FHE Public Key + - FHE Server Key (Evaluation Key) + - CRS for input proofs + - MPC nodes signers (used to sign decryption results, for example) +- Inserts Keys into the coprocessor database. +- Updates Signers in the ./env/.env.example.deployment file.
@@ -302,7 +284,9 @@ To run more test, check this [section](#testing-part). ## Running gateway from source -In a separate terminal, checkout the branch set in the .env (for instance `v0.9.0-rc28`) in kms-core repository. +First run as usual with the dockerized version, stop the gateway and switch to running from source. + +In a separate terminal, checkout the branch set in the .env (for instance `v0.9.0-rc38`) in kms-core repository. ### Centralized KMS configuration @@ -404,18 +388,12 @@ Tests should be run from `work_dir/fhevm` npx hardhat test --grep 'test async decrypt uint64 non-trivial' ``` -4. PASSING TEST - Non trivial reencrypt with input mechanism and fhe computation. - - ```bash - npx hardhat test --grep 'test async decrypt addition uint64 non-trivial bigger value' - ``` - -5. FAILING TEST - on centralized +4. FAILING TEST - on centralized - decryption ebytes - reencryption ebytes -6. FAILING TEST - on threshold +5. FAILING TEST - on threshold - decryption ebytes, euint256 - reencryption ebytes, euint256 @@ -426,7 +404,7 @@ Tests should be run from `work_dir/fhevm` 💡 Unable to delete a docker network, example at `make clean` step ```bash -failed to remove network zama-kms-threshold_default: Error response from daemon: error while removing network: network zama-kms-threshold_default id 7f9cb8a4b1107a6c53663c4f5e513f6008bc227122ff64693576c8a686aaeae8 has active endpoints +failed to remove network zama_default: Error response from daemon: error while removing network: network zama_default id 7f9cb8a4b1107a6c53663c4f5e513f6008bc227122ff64693576c8a686aaeae8 has active endpoints ``` First try to docker prune the networks @@ -436,7 +414,7 @@ docker network prune # Check networks docker network ls | grep zama -4f43b8c0143b zama-kms-threshold_default bridge local +4f43b8c0143b zama_default bridge local ``` If the network is still here, just restart the docker deamon: @@ -448,25 +426,3 @@ docker network prune ``` - -
💡 Failing at key or crs gen - -```bash -✔ Container zama-kms-gateway-dev-kms-core-1 H... 10.4s ✘ Container zama-kms-gateway-dev-kms-simulator-keygen-1 service "dev-kms-simulator-keygen" didn't complete successfully: exit 1361.8s teway-dev-kms-connector-1 Started 10.7s ✔ Container zama-kms-gateway-dev-kms-connector-1 Started 10.7s -``` - -Stop everything and retry - -```bash -make stop-kms -make run-kms - -``` - -
- -## TODO - -- Fill the coprocessor DB from script and not cargo test (`make init-db` step) -- Use fhevm-smart contract docker image to deploy ACL.sol, GatewayContract.sol -- Merge this branch into main (decide how to handle the current main (create main-native temporarly?)) diff --git a/coprocessor/scripts/run_everything.sh b/coprocessor/scripts/run_everything.sh index 856fc2f..713d621 100755 --- a/coprocessor/scripts/run_everything.sh +++ b/coprocessor/scripts/run_everything.sh @@ -28,17 +28,17 @@ log "Preparing for e2e tests. This may take some time..." make prepare-e2e-test # Check deployment logs -log "Deployment in progress. You can check the logs of zama-setup-fhevm-contracts-1 if needed." -log "To monitor: docker logs zama-setup-fhevm-contracts-1" +log "Deployment in progress. You can check the logs of zama-setup-fhevm-contracts if needed." +log "To monitor: docker logs zama-setup-fhevm-contracts" timeout=140 # Timeout after 60 seconds -while ! docker logs zama-setup-fhevm-contracts-1 2>&1 | grep -q "Deployment script completed successfully"; do +while ! docker logs zama-setup-fhevm-contracts 2>&1 | grep -q "Deployment script completed successfully"; do sleep 10 log "Waiting for fhevm contract deployment..." - log "To monitor: docker logs zama-setup-fhevm-contracts-1 -f" + log "To monitor: docker logs zama-setup-fhevm-contracts -f" timeout=$((timeout - 10)) if [ "$timeout" -le 0 ]; then - log "Timeout reached waiting for zama-setup-fhevm-contracts-1 to finish. Exiting." + log "Timeout reached waiting for zama-setup-fhevm-contracts to finish. Exiting." exit 1 fi done From e9ee1c1619f44e7b9c1e2e6247f61f16873abaad Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Sat, 14 Dec 2024 12:07:30 -0300 Subject: [PATCH 08/14] chore: add localCoprocessor network --- e2e/hardhat.config.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/e2e/hardhat.config.ts b/e2e/hardhat.config.ts index f92cd11..f525745 100644 --- a/e2e/hardhat.config.ts +++ b/e2e/hardhat.config.ts @@ -23,6 +23,7 @@ if (!mnemonic) { const chainIds = { zama: 9000, + localCoprocessor: 12345, local: 9000, ethereum: 1, sepolia: 11155111, @@ -34,6 +35,9 @@ function getChainConfig(chain: keyof typeof chainIds): NetworkUserConfig { case "local": jsonRpcUrl = "http://localhost:8545"; break; + case 'localCoprocessor': + jsonRpcUrl = 'http://localhost:8745'; + break; case "zama": jsonRpcUrl = "https://devnet.zama.ai"; break; @@ -85,6 +89,7 @@ const config: HardhatUserConfig = { }, zama: getChainConfig("zama"), local: getChainConfig("local"), + localCoprocessor: getChainConfig('localCoprocessor'), sepolia: getChainConfig("sepolia"), ethereum: getChainConfig("ethereum"), }, From 418246c5ca643bcc4f5d7f98dc646cdb6c96b762 Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Sat, 14 Dec 2024 12:16:45 -0300 Subject: [PATCH 09/14] feat: add files to enable run e2e tests against the local coprocessor setup --- e2e/.env.local | 9 ++++++ e2e/Makefile | 16 ++++++++++ e2e/contracts/E2EFHEVMConfigLocal.sol | 40 +++++++++++++++++++++++++ e2e/contracts/E2EFHEVMConfigSepolia.sol | 40 +++++++++++++++++++++++++ 4 files changed, 105 insertions(+) create mode 100644 e2e/.env.local create mode 100644 e2e/Makefile create mode 100644 e2e/contracts/E2EFHEVMConfigLocal.sol create mode 100644 e2e/contracts/E2EFHEVMConfigSepolia.sol diff --git a/e2e/.env.local b/e2e/.env.local new file mode 100644 index 0000000..d1d3451 --- /dev/null +++ b/e2e/.env.local @@ -0,0 +1,9 @@ +export MNEMONIC="adapt mosquito move limb mobile illegal tree voyage juice mosquito burger raise father hope layer" + +export TFHE_EXECUTOR_CONTRACT_ADDRESS=0x596E6682c72946AF006B27C131793F2b62527A4b +export ACL_CONTRACT_ADDRESS=0x339EcE85B9E11a3A3AA557582784a15d7F82AAf2 +export PAYMENT_CONTRACT_ADDRESS=0x6d5A11aC509C707c00bc3A0a113ACcC26c532547 +export KMS_VERIFIER_CONTRACT_ADDRESS=0x208De73316E44722e16f6dDFF40881A3e4F86104 +export GATEWAY_CONTRACT_ADDRESS=0x096b4679d45fB675d4e2c1E4565009Cec99A12B1 + +export GATEWAY_URL="http://localhost:7077" diff --git a/e2e/Makefile b/e2e/Makefile new file mode 100644 index 0000000..5e0a11f --- /dev/null +++ b/e2e/Makefile @@ -0,0 +1,16 @@ +#!/usr/bin/make -f + + + + + +# Default target executed when no arguments are given to make. +default_target: prepare-test-local-coprocessor + + +.PHONY: default_target + + +prepare-test-local-coprocessor: + @cp -v .env.local .env + @cp -v contracts/E2EFHEVMConfigLocal.sol contracts/E2EFHEVMConfig.sol \ No newline at end of file diff --git a/e2e/contracts/E2EFHEVMConfigLocal.sol b/e2e/contracts/E2EFHEVMConfigLocal.sol new file mode 100644 index 0000000..2b308bb --- /dev/null +++ b/e2e/contracts/E2EFHEVMConfigLocal.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import {FHEVMConfig, TFHE} from "fhevm/lib/TFHE.sol"; +import { Gateway } from "fhevm/gateway/GatewayCaller.sol"; + +address constant gatewayAddress = 0x096b4679d45fB675d4e2c1E4565009Cec99A12B1; + +/** + * @title ZamaFHEVMConfig. + * @notice This library returns the TFHE config for different networks + * with the contract addresses for + * (1) ACL, (2) TFHEExecutor, (3) FHEPayment, (4) KMSVerifier, + * which are deployed & maintained by Zama. + */ +library DefaultFHEVMConfig { + function getConfig() internal pure returns (FHEVMConfig.FHEVMConfigStruct memory) { + return + FHEVMConfig.FHEVMConfigStruct({ + ACLAddress: 0x339EcE85B9E11a3A3AA557582784a15d7F82AAf2, + TFHEExecutorAddress: 0x596E6682c72946AF006B27C131793F2b62527A4b, + FHEPaymentAddress: 0x6d5A11aC509C707c00bc3A0a113ACcC26c532547, + KMSVerifierAddress: 0x208De73316E44722e16f6dDFF40881A3e4F86104 + }); + } +} + +/** + * @title MockZamaFHEVMConfig. + * @dev This contract can be inherited by a contract wishing to use these contracts on the mock + * environment provided by Zama. + * Other providers may offer similar contracts deployed at different addresses. + * If you wish to use them, you should rely on the instructions from these providers. + */ +contract E2EFHEVMConfig { + constructor() { + TFHE.setFHEVM(DefaultFHEVMConfig.getConfig()); + Gateway.setGateway(gatewayAddress); + } +} diff --git a/e2e/contracts/E2EFHEVMConfigSepolia.sol b/e2e/contracts/E2EFHEVMConfigSepolia.sol new file mode 100644 index 0000000..9f5601f --- /dev/null +++ b/e2e/contracts/E2EFHEVMConfigSepolia.sol @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: BSD-3-Clause-Clear +pragma solidity ^0.8.24; + +import {FHEVMConfig, TFHE} from "fhevm/lib/TFHE.sol"; +import { Gateway } from "fhevm/gateway/GatewayCaller.sol"; + +address constant gatewayAddress = 0x33347831500F1e73f0ccCBb95c9f86B94d7b1123; + +/** + * @title ZamaFHEVMConfig. + * @notice This library returns the TFHE config for different networks + * with the contract addresses for + * (1) ACL, (2) TFHEExecutor, (3) FHEPayment, (4) KMSVerifier, + * which are deployed & maintained by Zama. + */ +library DefaultFHEVMConfig { + function getConfig() internal pure returns (FHEVMConfig.FHEVMConfigStruct memory) { + return + FHEVMConfig.FHEVMConfigStruct({ + ACLAddress: 0xFee8407e2f5e3Ee68ad77cAE98c434e637f516e5, + TFHEExecutorAddress: 0x687408aB54661ba0b4aeF3a44156c616c6955E07, + FHEPaymentAddress: 0xFb03BE574d14C256D56F09a198B586bdfc0A9de2, + KMSVerifierAddress: 0x9D6891A6240D6130c54ae243d8005063D05fE14b + }); + } +} + +/** + * @title MockZamaFHEVMConfig. + * @dev This contract can be inherited by a contract wishing to use these contracts on the mock + * environment provided by Zama. + * Other providers may offer similar contracts deployed at different addresses. + * If you wish to use them, you should rely on the instructions from these providers. + */ +contract E2EFHEVMConfig { + constructor() { + TFHE.setFHEVM(DefaultFHEVMConfig.getConfig()); + Gateway.setGateway(gatewayAddress); + } +} From 4a3135b4a4558447b97d2f95aa1729e27a3292b2 Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Sat, 14 Dec 2024 13:24:17 -0300 Subject: [PATCH 10/14] chore: update README, Makedile and allow to prepare both setup for Sepolia and localCoprocessor --- e2e/Makefile | 49 +++++++++++++++++++++----- e2e/README.md | 60 ++++++++++++++++++++++++++------ e2e/contracts/E2EFHEVMConfig.sol | 40 --------------------- 3 files changed, 89 insertions(+), 60 deletions(-) delete mode 100644 e2e/contracts/E2EFHEVMConfig.sol diff --git a/e2e/Makefile b/e2e/Makefile index 5e0a11f..beea36a 100644 --- a/e2e/Makefile +++ b/e2e/Makefile @@ -1,16 +1,47 @@ #!/usr/bin/make -f +# Variables for paths and commands +ENV_FILE=.env +CONFIG_FILE=contracts/E2EFHEVMConfig.sol +HARDHAT_CONFIG=hardhat.config.ts +NPM_CMD=npm run task:accounts +.PHONY: all print-accounts prepare-test-local-coprocessor prepare-test-sepolia clean +# Default target +all: print-accounts +# Prints accounts with a reminder to ensure they are funded +print-accounts: + @echo "Checking accounts. Ensure the first account has sufficient funds." + @$(NPM_CMD) -# Default target executed when no arguments are given to make. -default_target: prepare-test-local-coprocessor - - -.PHONY: default_target - - +# Prepares the environment for local coprocessor testing prepare-test-local-coprocessor: - @cp -v .env.local .env - @cp -v contracts/E2EFHEVMConfigLocal.sol contracts/E2EFHEVMConfig.sol \ No newline at end of file + @echo "Preparing environment for local coprocessor testing..." + @cp -v .env.local $(ENV_FILE) + @cp -v contracts/E2EFHEVMConfigLocal.sol $(CONFIG_FILE) + @$(MAKE) set-local-network + $(MAKE) print-accounts + +# Prepares the environment for Sepolia network testing +prepare-test-sepolia: + @echo "Preparing environment for Sepolia network testing..." + @cp -v .env.example $(ENV_FILE) + @cp -v contracts/E2EFHEVMConfigSepolia.sol $(CONFIG_FILE) + $(MAKE) print-accounts + +# Sets the default network to "localCoprocessor" in hardhat.config.ts +set-local-network: + @echo "Setting default network to 'localCoprocessor' in $(HARDHAT_CONFIG)..." + @if [ "$(shell uname)" = "Darwin" ]; then \ + sed -i '' 's/defaultNetwork: ".*"/defaultNetwork: "localCoprocessor"/' $(HARDHAT_CONFIG); \ + else \ + sed -i 's/defaultNetwork: ".*"/defaultNetwork: "localCoprocessor"/' $(HARDHAT_CONFIG); \ + fi + +# Cleans up generated or temporary files +clean: + @echo "Cleaning up temporary files..." + @rm -fv $(ENV_FILE) + @rm -fv $(CONFIG_FILE) diff --git a/e2e/README.md b/e2e/README.md index 53eff73..3ae8c6e 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -1,6 +1,10 @@ -# e2e tests +# End-to-End (E2E) Tests -## Install +This repository contains end-to-end (E2E) tests to ensure that all components work together as intended. + +## Installation + +Before you begin, ensure that you have [Node.js](https://nodejs.org/) and [npm](https://www.npmjs.com/) installed on your machine. ```bash npm install @@ -8,22 +12,56 @@ npm install ## Configuration -1. Copy `.env.example` to `.env` and edit addresses with the correct one. -2. Edit your `.env` file with correct values. -3. Edit `contracts/E2EFHEVMConfig.sol` and set correct addresses of your fhEVM. -4. Edit `hardhat.config.ts` to set the `defaultNetwork`. By default, it is set to Sepolia, but you can use a different one - or add your own L1 address. -5. Fund the primary wallet derived from your mnemomic. If you don't know what is the public address, run - `npm run task:accounts` +### Default Configuration: Sepolia + +The default configuration is set up for the Sepolia network. To prepare the environment for testing on Sepolia, run the following command: + +```bash +make prepare-test-sepolia +``` + +This will: + +1. Copy `.env.example` to `.env`. +2. Update the `contracts/E2EFHEVMConfig.sol` file with the Sepolia-specific configuration. +3. Print the list of accounts and remind you to ensure the first account is funded. + +### Local Testing Configuration -## Run +To prepare the environment for testing with a local coprocessor setup, use the following command: + +```bash +make prepare-test-local-coprocessor +``` + +This will: + +1. Copy `.env.local` to `.env`. +2. Update the `contracts/E2EFHEVMConfig.sol` file with the local configuration. +3. Print the list of accounts and remind you to ensure the first account is funded. + +## Running the Tests + +To run the entire test suite: ```bash npm run test ``` -or if you want to run only one test +If you want to focus on a specific test: ```bash npm run test test/encryptedERC20/EncryptedERC20.ts ``` + +## Cleaning Up + +To clean up temporary files and reset the environment, run: + +```bash +make clean +``` + +--- + +**Note:** Always double-check your `.env` file and address configurations before running tests to avoid unexpected errors. diff --git a/e2e/contracts/E2EFHEVMConfig.sol b/e2e/contracts/E2EFHEVMConfig.sol deleted file mode 100644 index 9f5601f..0000000 --- a/e2e/contracts/E2EFHEVMConfig.sol +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-License-Identifier: BSD-3-Clause-Clear -pragma solidity ^0.8.24; - -import {FHEVMConfig, TFHE} from "fhevm/lib/TFHE.sol"; -import { Gateway } from "fhevm/gateway/GatewayCaller.sol"; - -address constant gatewayAddress = 0x33347831500F1e73f0ccCBb95c9f86B94d7b1123; - -/** - * @title ZamaFHEVMConfig. - * @notice This library returns the TFHE config for different networks - * with the contract addresses for - * (1) ACL, (2) TFHEExecutor, (3) FHEPayment, (4) KMSVerifier, - * which are deployed & maintained by Zama. - */ -library DefaultFHEVMConfig { - function getConfig() internal pure returns (FHEVMConfig.FHEVMConfigStruct memory) { - return - FHEVMConfig.FHEVMConfigStruct({ - ACLAddress: 0xFee8407e2f5e3Ee68ad77cAE98c434e637f516e5, - TFHEExecutorAddress: 0x687408aB54661ba0b4aeF3a44156c616c6955E07, - FHEPaymentAddress: 0xFb03BE574d14C256D56F09a198B586bdfc0A9de2, - KMSVerifierAddress: 0x9D6891A6240D6130c54ae243d8005063D05fE14b - }); - } -} - -/** - * @title MockZamaFHEVMConfig. - * @dev This contract can be inherited by a contract wishing to use these contracts on the mock - * environment provided by Zama. - * Other providers may offer similar contracts deployed at different addresses. - * If you wish to use them, you should rely on the instructions from these providers. - */ -contract E2EFHEVMConfig { - constructor() { - TFHE.setFHEVM(DefaultFHEVMConfig.getConfig()); - Gateway.setGateway(gatewayAddress); - } -} From eec2ee1c2197071c06eed6638689eff69bdf844e Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Sat, 14 Dec 2024 13:34:03 -0300 Subject: [PATCH 11/14] doc: update README --- e2e/.gitignore | 1 + e2e/README.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/e2e/.gitignore b/e2e/.gitignore index 381d33b..1e5e2ba 100644 --- a/e2e/.gitignore +++ b/e2e/.gitignore @@ -24,3 +24,4 @@ abi/ coverage.json pnpm-lock.yaml yarn.lock +contracts/E2EFHEVMConfig.sol diff --git a/e2e/README.md b/e2e/README.md index 3ae8c6e..b1a0572 100644 --- a/e2e/README.md +++ b/e2e/README.md @@ -25,6 +25,7 @@ This will: 1. Copy `.env.example` to `.env`. 2. Update the `contracts/E2EFHEVMConfig.sol` file with the Sepolia-specific configuration. 3. Print the list of accounts and remind you to ensure the first account is funded. +4. Info: In hardhat.config.ts Seploia is already set as default network ### Local Testing Configuration @@ -39,6 +40,7 @@ This will: 1. Copy `.env.local` to `.env`. 2. Update the `contracts/E2EFHEVMConfig.sol` file with the local configuration. 3. Print the list of accounts and remind you to ensure the first account is funded. +4. Update hardhat.config.ts to make localCorpocessor as default network ## Running the Tests From c576df746d93dc0d3f2317e02620eb49a22f7178 Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Thu, 19 Dec 2024 15:27:25 +0100 Subject: [PATCH 12/14] chore: increase timout for connector because of slow verification fast proving choice in fhevmjs for e2e folder --- coprocessor/blockchain/connector/config/centralized.toml | 4 ++-- coprocessor/blockchain/connector/config/compose_1.toml | 6 +++--- coprocessor/blockchain/connector/config/compose_2.toml | 6 +++--- coprocessor/blockchain/connector/config/compose_3.toml | 6 +++--- coprocessor/blockchain/connector/config/compose_4.toml | 6 +++--- coprocessor/blockchain/gateway/config/connector.toml | 4 ++-- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/coprocessor/blockchain/connector/config/centralized.toml b/coprocessor/blockchain/connector/config/centralized.toml index 73a8187..833af7b 100644 --- a/coprocessor/blockchain/connector/config/centralized.toml +++ b/coprocessor/blockchain/connector/config/centralized.toml @@ -61,8 +61,8 @@ max_poll_count = 24 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 -retry_interval = 1 -max_poll_count = 24 +retry_interval = 2 +max_poll_count = 48 [tracing] service_name = "kms-asc-connector" diff --git a/coprocessor/blockchain/connector/config/compose_1.toml b/coprocessor/blockchain/connector/config/compose_1.toml index d009891..967171c 100644 --- a/coprocessor/blockchain/connector/config/compose_1.toml +++ b/coprocessor/blockchain/connector/config/compose_1.toml @@ -26,7 +26,7 @@ channel_timeout = 60 [core.timeout_config.insecure_crs] initial_wait_time = 1 retry_interval = 3 -max_poll_count = 24 +max_poll_count = 48 [core.timeout_config.crs] initial_wait_time = 60 @@ -46,7 +46,7 @@ max_poll_count = 1150 [core.timeout_config.decryption] initial_wait_time = 3 retry_interval = 2 -max_poll_count = 36 +max_poll_count = 48 [core.timeout_config.insecure_key_gen] initial_wait_time = 10 @@ -61,7 +61,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 24 +max_poll_count = 48 [tracing] service_name = "kms-connector-1" diff --git a/coprocessor/blockchain/connector/config/compose_2.toml b/coprocessor/blockchain/connector/config/compose_2.toml index babbf12..99ba752 100644 --- a/coprocessor/blockchain/connector/config/compose_2.toml +++ b/coprocessor/blockchain/connector/config/compose_2.toml @@ -27,7 +27,7 @@ channel_timeout = 60 [core.timeout_config.insecure_crs] initial_wait_time = 1 retry_interval = 3 -max_poll_count = 24 +max_poll_count = 48 [core.timeout_config.crs] initial_wait_time = 60 @@ -47,7 +47,7 @@ max_poll_count = 1150 [core.timeout_config.decryption] initial_wait_time = 3 retry_interval = 2 -max_poll_count = 36 +max_poll_count = 48 [core.timeout_config.insecure_key_gen] initial_wait_time = 10 @@ -62,7 +62,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 24 +max_poll_count = 48 [tracing] service_name = "kms-connector-2" diff --git a/coprocessor/blockchain/connector/config/compose_3.toml b/coprocessor/blockchain/connector/config/compose_3.toml index b3edbf8..76acf15 100644 --- a/coprocessor/blockchain/connector/config/compose_3.toml +++ b/coprocessor/blockchain/connector/config/compose_3.toml @@ -32,7 +32,7 @@ max_poll_count = 120 [core.timeout_config.insecure_crs] initial_wait_time = 1 retry_interval = 3 -max_poll_count = 24 +max_poll_count = 48 [core.timeout_config.keygen] initial_wait_time = 18000 @@ -47,7 +47,7 @@ max_poll_count = 1150 [core.timeout_config.decryption] initial_wait_time = 3 retry_interval = 2 -max_poll_count = 36 +max_poll_count = 48 [core.timeout_config.insecure_key_gen] initial_wait_time = 10 @@ -62,7 +62,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 24 +max_poll_count = 48 [tracing] service_name = "kms-connector-3" diff --git a/coprocessor/blockchain/connector/config/compose_4.toml b/coprocessor/blockchain/connector/config/compose_4.toml index 64643b2..0c582c9 100644 --- a/coprocessor/blockchain/connector/config/compose_4.toml +++ b/coprocessor/blockchain/connector/config/compose_4.toml @@ -31,7 +31,7 @@ max_poll_count = 120 [core.timeout_config.insecure_crs] initial_wait_time = 1 retry_interval = 3 -max_poll_count = 24 +max_poll_count = 48 [core.timeout_config.keygen] @@ -47,7 +47,7 @@ max_poll_count = 1150 [core.timeout_config.decryption] initial_wait_time = 3 retry_interval = 2 -max_poll_count = 36 +max_poll_count = 48 [core.timeout_config.insecure_key_gen] initial_wait_time = 10 @@ -62,7 +62,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 24 +max_poll_count = 48 [tracing] service_name = "kms-connector-4" diff --git a/coprocessor/blockchain/gateway/config/connector.toml b/coprocessor/blockchain/gateway/config/connector.toml index 926e4c2..15d1e96 100644 --- a/coprocessor/blockchain/gateway/config/connector.toml +++ b/coprocessor/blockchain/gateway/config/connector.toml @@ -26,7 +26,7 @@ channel_timeout = 60 [core.timeout_config.insecure_crs] initial_wait_time = 1 retry_interval = 3 -max_poll_count = 24 +max_poll_count = 48 [core.timeout_config.crs] initial_wait_time = 60 @@ -61,7 +61,7 @@ max_poll_count = 1 [core.timeout_config.insecure_key_gen] initial_wait_time = 1 retry_interval = 3 -max_poll_count = 24 +max_poll_count = 48 [tracing] service_name = "kms-asc-connector" From c982d1aae6164a2bca2079419aa582027a58f6bc Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Thu, 19 Dec 2024 15:32:35 +0100 Subject: [PATCH 13/14] chore: upgrade coprocessor with server_key error fix --- coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml b/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml index bec629d..1966694 100644 --- a/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml +++ b/coprocessor/docker-compose/docker-compose-fhevm-coprocessor.yml @@ -13,7 +13,7 @@ services: fhevm-coprocessor: container_name: ${DOCKER_COMPOSE_PROJECT}-fhevm-coprocessor - image: ghcr.io/zama-ai/fhevm-coprocessor:v0.1.2 + image: ghcr.io/zama-ai/fhevm-coprocessor:v0.6.0-6 environment: - DATABASE_URL=postgresql://postgres:postgres@fhevm-coprocessor-db:5432/coprocessor ports: From c5f3a964bcc981235160ac17af990b1b1440ab70 Mon Sep 17 00:00:00 2001 From: Levent DEMIR Date: Thu, 19 Dec 2024 17:37:43 +0100 Subject: [PATCH 14/14] chore: increase timeout for connector for veriy_proven_input (again) --- coprocessor/blockchain/connector/config/centralized.toml | 2 +- coprocessor/blockchain/connector/config/compose_1.toml | 2 +- coprocessor/blockchain/connector/config/compose_2.toml | 2 +- coprocessor/blockchain/connector/config/compose_3.toml | 2 +- coprocessor/blockchain/connector/config/compose_4.toml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/coprocessor/blockchain/connector/config/centralized.toml b/coprocessor/blockchain/connector/config/centralized.toml index 833af7b..65b9e55 100644 --- a/coprocessor/blockchain/connector/config/centralized.toml +++ b/coprocessor/blockchain/connector/config/centralized.toml @@ -62,7 +62,7 @@ max_poll_count = 24 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 2 -max_poll_count = 48 +max_poll_count = 60 [tracing] service_name = "kms-asc-connector" diff --git a/coprocessor/blockchain/connector/config/compose_1.toml b/coprocessor/blockchain/connector/config/compose_1.toml index 967171c..2f9b5f2 100644 --- a/coprocessor/blockchain/connector/config/compose_1.toml +++ b/coprocessor/blockchain/connector/config/compose_1.toml @@ -61,7 +61,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 48 +max_poll_count = 60 [tracing] service_name = "kms-connector-1" diff --git a/coprocessor/blockchain/connector/config/compose_2.toml b/coprocessor/blockchain/connector/config/compose_2.toml index 99ba752..f88cbaf 100644 --- a/coprocessor/blockchain/connector/config/compose_2.toml +++ b/coprocessor/blockchain/connector/config/compose_2.toml @@ -62,7 +62,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 48 +max_poll_count = 60 [tracing] service_name = "kms-connector-2" diff --git a/coprocessor/blockchain/connector/config/compose_3.toml b/coprocessor/blockchain/connector/config/compose_3.toml index 76acf15..bb85d17 100644 --- a/coprocessor/blockchain/connector/config/compose_3.toml +++ b/coprocessor/blockchain/connector/config/compose_3.toml @@ -62,7 +62,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 48 +max_poll_count = 60 [tracing] service_name = "kms-connector-3" diff --git a/coprocessor/blockchain/connector/config/compose_4.toml b/coprocessor/blockchain/connector/config/compose_4.toml index 0c582c9..4b83808 100644 --- a/coprocessor/blockchain/connector/config/compose_4.toml +++ b/coprocessor/blockchain/connector/config/compose_4.toml @@ -62,7 +62,7 @@ max_poll_count = 36 [core.timeout_config.verify_proven_ct] initial_wait_time = 1 retry_interval = 1 -max_poll_count = 48 +max_poll_count = 60 [tracing] service_name = "kms-connector-4"