From 6824fd1a0964618bccb976f646559bcc39b015de Mon Sep 17 00:00:00 2001 From: Ron Chan <1807913+sudo-ron@users.noreply.github.com> Date: Thu, 16 May 2024 12:25:01 -0400 Subject: [PATCH 1/3] Minor typo corrections --- zklayer-whitepaper.pdf | Bin 191879 -> 191883 bytes zklayer-whitepaper.tex | 18 +++++++++--------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/zklayer-whitepaper.pdf b/zklayer-whitepaper.pdf index a6c2bd45c8155f7b13726c7d9507efae0311becb..09f2cb8e3e50356609a9f7d6760b353c4d320012 100644 GIT binary patch delta 23564 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 X0gEdIb(dc40w4)CGYTaoMNdWww_UPE delta 23613 zcmV((K;XZN+Y5)=3y@)dfN!nk$!{#l3Qv0!;n5t5V39;TEHswaqJRD5mzf2EY;??p ztjbE%l9hW_@N{|#o__o$c=-SJ^_xF^%Cn~^_KPrxpI(no^ye38@wAHqf0yM?uZO4q z@&5VOpUl33aSwbK02oT~EtESdP*ZdjpCzXxgX zHS|OJ4>94p>!THlr<@3xC0Jk^1%V&zvZrkt_<54b5-`gh!mWp8UK}?$qQ<{nq ze~+TwXQFkQi)&em+A z)cYz_-X^rMUH-Ji?Z>igzX@~C)|FvGr%~i}*hCb1rNt&{ot*}#UyYR=WcY}QyIzJ4 zW;6mG#;!LfoyxQafnIo-uC&9j<*fv=3FWt{J<*|(bUtH@-p(7UQ_GxPns%(Of+9OU zOeJ;#tb-+gwmS%?009R8ylRO!jXhMRr(HiU*VV(1XDhRTaB&uS4IS`gM%s_``)c?y zNYe~MS5{_ZA*23VHJ+t)M<@V<8vH%ae(CN{t*ci=D%u$Fa+YM?>se?toz4QF%}E32 zIQ6tE91MW&i2u|p`|D-wXy|gTN*N+XZp-RY6K&pqlUc4KjJ$o_m0yT|AloVFkI|Or zwyV3-b(5yvvmo8B0zI0Tc01A`2Lb4n)7L`>?eY~rN=~}A@w#$i-ar-<#7bu{+<;z= zx#t;7dEM*+&lkMcbEP;3dq-vr9(&W+S+g;gFy%n^KCCWJSTXIgg*N(H3BlWjCYFIW z#}DX#hTfhO77=}rL8f{PZF7+AR)@*dIw&WjMq|oz)vl7iG)!)}P}T|5+qqlGNa|}+ zU?e`H6#!VQn?~s{I{<%4Z4!{Pj$?Z~i;!vU_!CXnvj{^g7ZIrk!aNAKQ`g8}OGM=c zjY#Nf@ht z=F;_}YG>-#qJXK@cB3@97OF8#!C3l{``Qo-SL0PWY)1f`#;y@21JpppeV{CoAo04( zST!Vd=*3G-&ia=S_M0g1z^3SsM0A3Q%>criL4&AcO5P26qoOGh$rX^xsV6WK)?3k- z?O`HwDh!+!nRi%d4lAIlZEq67jH$SPB4-6zm9AcXK>h;h%Ri)}$J^Jo8T7MpWg~Rc zP_f%6i}VvYLDfwIE(7qXts3%~T0@ih0L9)XnZ3~uNq*r+iADni#;PRkAw6t(@OGsoyE(mt%M)(PkS%!B4R)w#fqX;$$vNJfqB~};uEH?vu(*4yy7rEv-H0FzX z51DG=BqjSoQiBQJ;EZDAoze!Dpl1OKeBhl7u^n^FAYk4+;f<#JQm^sjsqXeTX}n9} zj@7koPcY~os5rQHai~fp4uge%i3NDYEIkVz2o8+lN~WzD6k1nblt>smPmRIG(dL82 ztm2y|eEAk1hR`FpU&0Nq(*Utq6iyK-fE%MINr zTOR0$rHd1jR$z-m1AKDoLwB$)V>ZT!+ZEbEP(r)k*ZT{5a2e7}R!XyfWa;h@R4n5l zLt=UfdQX$)04MPx5~KvteBr=#GoxPF@0GIe@1YE}FomRwcExODD#7;`u_lLMtYQ%+H*+si;mh#1SNUJA-$T)zee>1I1iJ^Qbz8lh4ZM?{#un>GkOjObf|9ja3`GG*~$*@^h9 z5aJfgklG~w!uC!LEcGc}EfhIGe^KqSpumQ#`?Daj8zW8d??UOuOEx30B@tYqhTiwU zj%ge*2UZBHX`6>?p!lTJft%KOeuqg>Br6o>m>bK}7p3VBHdNjXB!WWcq{7C~o$e;{n&x zmg6Mqes&Z{PpV3PqBF7d(HJYO-A!@EIxjaKR44FOSu?(oBFobS-(O6-t`Lej z9F$C=Sb^9~^;jKEX<2Omi?{+Q8e&`yYzSwV%CpX}<_I25CFnG->{rYSH9$Iw%&jAU z95$u6;OeXw^`?PSLV!O6dZHBWrgYN&p%ImkFpB94NK^EGXmY48_n~P440G1(PBwvQ zWbn~|(MY>UlQ9mFt*W;lSx?d|nkPt90^%fFvNaDdOC-t?)K?2GKsI&>8&z}{-arCc z9+3j-r_$LRf8}!6r63W0e^@}@SlDB7&a0X|cvczrSp!xYE=mzrCW!C^zBLN@w+K?V zmdW@c*5<8$wg;qsVv2)RKDr}+UT~=P&%gePSnXLbj#CX+8O<~KvyC`mx+#v*d8gtM z=nS9!@`KFqL2e-?_nujPi_jFatAjs{bBwyTbv=cM9Ur&u}vEvK{Hn}JnJ zPM8wPo~zN8w}2HR7AjoSg#bioNllLWDJlG3vozdq*F36aN+8Y2#M~!?NNs5BnuoJK z1fKX*)DVgA1>-lhoPd+Hl@@H=n(Hri4++MM94pRqx(J3Kduv;1E%c&2fPxVjh^d#s z(V9koT7uIM0d-E|o2D8^Nq;hvteHr1-r7mSzL;j1E(fO=sJE0$258!lT9Rg=#)I^Q zlJVvLj{*_IC@M&)gQAUo=4;Ew)5@Kk$np zp+@E>fmTCaupjbuzcnQi4_{9G28woSwI1OL7OZkp4GN_Oft(iU*Y}5ab|&@nEWEQb zNB~Xyfux7k2l|)3lVJZ~6$3`4h~ZP&qd+>9XHw|>*UEx9-*iMVu)WA-gwXhHL%dFZ z+w)f_5pdli%Jp7CO?eR&?$cyRd`put*GbGx#_X0V`}4~A!>I6gVeBsQ<4M;h6bl)~ zg`c7N5r%$|W|}9_gdB&CBmOm-;)t>9?XmCLQDe@dj5poE_8M;9L_-`$Omp}OYC@~P z%-#|dyslPVdMoN6S|pTIRFXv&N&4!4d&KnBoa+NzT{beKtkSRAv2GSk;;xm3o}w%z zF?vd4k`;GrBKpZv;;%6I99QkMMCMQ=Ylif&OW`G|7yxXl1_~D-j{BuqcBhsiWYvVk zdTXRPPA&7YHs>GIhe~hf3jSETiKy? zf)JDRS1nm(-i7A67)rK}_@WW0D(&?i0)S`SG%g7g-Kz_thVAOLf2+{!W%Ef)8Ax-`%mkv!eAph$2?sFzDk3_gdP z1$NO`P0`|0Fno{X;@XO4xR82(8pM-u4u=>xxE7}3^e{E+1#1k?vx7n~ijtV^H9b1H zt-uND1W|%PeEY}RCP*o2()3Q}N*+T*in=!jpw6YEKxL8CA<(hwof2w+W7e=O;_B=xv~qbvZXAyCoUv#UF>4W zmFrpUrMx+C^61KNaG1E5CgZMJ5K2~hVa?}aT-C3Nfv7K|d6xXn5fI2&H99ue_t4o} zC5P4${(w%XxatiUZGu8J(nAM-ZC&wJP|uk&rLHEVaFj}LGa~1c#tjjF!x*LG!y4T9W?s)7U#d#q{N$RL%9Y#)` z(|jkbwdPuEK;vK$iwUNGAq!!oq=zAPU5nr@6|rVwdc#_qT{NDa1hpY)?RW>&lf1tS zIOD?On{DU~)beGJ$V{H+e;^Sv2t-+RFd!p>!K+Rq+Yddf2BTaxvP<#5C5&7!LU(Ye z=a6M7?c`87Z>_mcr={*W1(HLva^qP?%^hiSsk-@m|tv#2}q+X_0y6n4Qa0b^o#cT1$irI~BF^CJS)*_1}@q-|9 zfrX24q*~EivQLA5=pIxp=AuZe+F8&pXR-n^z&ExmpCB&jNnFG@r!lQtJaDA5TuJ0E z4sV$n%*urdee#6=MOM&Nj`^$Jw8O>ViP@c!i0*2%%S9#SnUJT*l}KD1Ji2!D1^SQn zR=i8%LcM*spJcEt%q1CW>OKop$rfq%jl9USG^D2v`}LDIzGMTH;imy>+#8 z_6GGYjLTH1)Nt8^9V87;W0F@}Q$+K%r{UdurzCxNm63+7ZX71!Ggh{#w4vr~b=QxBKFmyVFACG>N3kuN^rwHwtacz$p< z(py0&O`IZ4UC0ZNE0HmDaNZVmj*`cOC!vqt2*~f`Qpq8&>;GF~IpHku{2Yz?j?grq zZxhgz$Bq=h_<|#@3?rSZ<0!yU-DK>kKddtSqwqq1KzH&=CV?Z?)@07E(&^{-gM`x0 z&mYl~5A%oDgKKA<-@Qa}tnXgXI_mo~?u`93Fox0`u-WtB-d_I?7Ox$jb+-9)(mZB% z;4w>Y*ApIP*B|(rlARV7GAS(V7W!*cc&mt2(@a`T1)THuJ-h*5#$SfJiAY;d^|+dG zS@L~AiGoR0Bdvlztw5;e9o(=`ejI2PwZW-8@9W5s=MIkd%A8Kd~ZKh z8U_N?k|8`!?MaH1fQ+3eI*xkTe@%m5KD`ci)rNNgS3(RhZ-BTwS!uAA>MWVGV*UVRn=}s8k(geamll zc)ut1;Q?1>)b5AsXz_{>o&^aWh36lK?_F>2w3e8?I7t>fg`U1PLQ~6acdv~Y-pT*% z;ez6kiw|e?T?D_#*|0dY9K30zD9LYvLY&`CeJS2N^%rJci-5ZoVqymIu~sdV`muO_ zMWjvM2p3S@!%D3hI}dvP=%%=(fK1GGRk!(u%8DORzZjD>K7x{yVpGH~JMdpG5*qGh zM_RnIjw!ztogBKgUF=raGzrShUk`KdqIO)VGP;r#IW&Hn+q z2n%eJAQLJ9GMBN>0w}X{6WR`c#McSI@!0Eiw6i9o?R7Nk$dgq9Kk=3sZVVEkFf$41 zl6BbbqBVT6aeX#MI?2}+V|CW#stz)01FO2yL1gp)5usjQ8fHRxe#tT&rZ8nzVvT8I zK6F5FE3dceZ8~)6XcB|jVlC%CW|(dY`fh&Zbz)Umyd>~^l>RnuRxw` z?#Bs;ma1bfUnHR^YL{1IVZL1@PM?xv62We`h?X66{y%0wZ6!Gi)xbtSl+c=pEL7GD(>Vo*0|rD!mbZ-R=e^n zOT7B&;Q!i|e~{Pl`Ia=yiZjtZ!vQHG)?(^=v}5Pw=*>H}fE7Qq=k?Jd^py@dj;AOH zcw!@OdC?lCSMGv;4?QFZO(T2a5v^|rrS=+x^tj^56b!9v$LmcGNg9sVI7o3u0@D?v z>70R9XAbBPU-`-&(DMhERqVq~o3uFcwS88V4*#!x{$;)nL4o#9CZm0lO?GYSDLKaH z*$fGhx_fKcX(()&mYvQj{sM1JqD{Ge|h=lzhQ8W#tLO_WOHdp)sT z5fkHfA1D%4Vl+i+`EYId*KdCLB`8Ww_4rT)AQJ$AM7{w9cQ1Fr-H+b{R(|*N&0l`l zrgyvbE)CPWr{}wPE7kZei=uU~yL&3{KCbq4TYN4KdDYxMhP!Z8^(doNHS`1wU4P#6 zr@V7balc7cZ}(}kdLSydzIk2G`sT$@wT+FIaqQE%qU}mo-hX=fFInB=X0zTUDc8{A z+v#qVvp9|Wx+#F93 z(+%C&4;M>FxP-hZ?;oQiz(?A#8GrJ9Rab*r_e|^KDsH*s6TrQzhDM zE+`ra3EJoTFj+mjt|#6#hrB6VNo?X{x3C0v zJheExSI3cWy>m}Lv<#){DWZku~^o7Ji48Q2`Hcu>|5^f^upH*?N`NmvYk&oy(7P z)wo6acP+$?Y!wSDHHCEV9a}fF0#LduR7!Vji!L98;D%8FMm@wL7Jok4yYBa@&~JuO zfE{#h|Hg)B63`ty)7B$+p!$Qy5(#&VM<=4wv#SWz(00}!m8DPF*~!VEg>P3)(_$|? zB+Rb|@|PcW;Y@{kp^VqbCgZ^Hw;C4aoMa~7xSy!`=33E-D&Hr0`cn#!)YxyeO!3M~?$1&FHUjG54$ zF%wS|Kvm+X^sat>BwH(27IF+Yfg}pC>_s`|USzour4_Z1ya|wK=c8doQ4&O)7>}3E zxua7}CGfL!>0BbX!q#k5%@seH^b~FB)?D8&qR4W;+(>N>z<;H?PzyjcZg_>pYP-)p zJJr=^037k(D_f4oMV-;xK?-@MgG4iiwrP)||A?fN2-r2EpbCR>>wsPo8LI_eNyMpd z6MF=Aq}v(&dbBrZWeKEy3KeQf)KpWVBIJ}~ab=Zvw{+tqnz3+R=gP65(FtQ|)fFrp zak_LVWoh1AvVU8xdwjWvMr4;s<**47Eoo)7pR`FqwsLA-e+z=JsOH)T)+tC=PX`B` zg`P6KSkB`yR}TWn*$JUTkvBHynfi-lmLq{`70x)x)*U|HIMp)I**pPlXI>TRBPjm$ z0Hy`9Ke?jPg%cyIA%*%SR#qX5w(08V2H4qca%opd5P!kvEMBY926Qw)7@>y_*wB)r zMTb&tC=~3aQ>Z;!Joo=_KU7dm+ica3r;|#fj4%}f@G)=l7iBx^M^?wm#YI>X_T3xH z+LStN+{+EseC_t6(adj()6hO4;F&n{%^8V{}+XLVkh&Bgk^CifL>^7X`5%9D5nGPbb#-k z1_75L!VJ#458-yGMp}Jr($n1t?)Bx1_wq>BPhu2>6IV z)tMc+0@SUQl18_y)a@Xm6qbR?yqd!Nkw58AL}!2EJ2`aF__OLY9)7ynQ9<8F8MwJ| z%5Y0Q#wNu9Q3&E9 z1d$GxHeH8yEKhYlKvur804NO+{6_XV=t4~40HZ_{kteu^LoFt(o=lK*pAld(sb?kR zDJuw%xhs zxFVn6au98bLX6E=57nu*R(=wNnHOU6ZyjceXsb9>Zi)mHG~ZULQQjmP#{PsB^?z8} zpv<4`Xp)?P|9M1kZ}ke;s!$v8;-^Xx6a-9V=+s7eXe77TTe9 zWTOkK0wmqq=!&~yZ=M!+eGXCLEPrEgL&nRpOYX5Ay(p?H%bj`OL@HkuO`jyv6Q@eI zEC3xB^)Ll^p>?EvrFG^eVNyGP(kR4dqwwp`e_vAe(QciEp;z|5%5EM%H`EX6DRf{R5zh=LH zZCXS$Y}g8b_aV~)*LO45HLuP6zzH)1k%myPJjXmhR*ku3n(`FDUfr6vmU?evIh#1R z+6Yk9fbe_0L=jq;IDlYT!hh;{tO*ghF5GEgL&6Ytun9kJ$bZf=RVOE}kAz`$ zD8-FM)b>c>Ox2;93y%t1D$~jbE(Oke?HZgvCSr?J+<(3lcfjAn*frL8=kkuUM~mYB z{+(`ZG5aabJJ#hS`P3I>*&*psE@xRxwSsL$SKn_o z8(v6Ew>-YQ3$tXM1ks(iChH`MEqzRqh~o$!oI>5$?x$^@X@9APD>Z);mG@_|rZfHl z74!b)H3c|C{FM*P=CT2Hd;c!aKbXA{ki|=HY>DlKZs^%k&pYz2zjhv&FtXc{$h?0= zJzKoI9MdzQ97!zlN*5Bn($(~l%9#nM;XEvT zpZR#{{o(B_MPc1n2@-8tOpOmO=uFsihzZ`JwUy#!yqTQm1pC{-)G>?9jozZFy5Ojx`$m0%_qj=my>HCM5wDb zF6B5>wdM}c_?wXX$G<%(!2BA6$OoG}(D=z(mV82y$L|sY#(|mLY}Pk%K=OaKuXUUh~3IosxrGJ%3qzH31R{dekDLz!ks?NLVb`;~8{sh(*aS}UBcP!Anb}tc~EjPEGdU%2@ zTclAILrLZCELq8c)i4RDBR5+y%mt_G>5E`@nw-rvUw{+W>R$8Ws8Rp{8>QOdLRmeq zOattt92zxLydcnks^G3!|DLqg2rF7u&xB4BV1J(|ZJ%1V?6lO()=BLkzH&d@PGfPx zc(;-bex7+m0%5#P*u+|TZyTSrW2_k-bTO4hm{)uPhY&7i4uA&RNqEC6?qphcLeD_} zr?%?bhUkQjKfvlcBuH}=3~4)6+d80UPR*uBa8anqo@JZq@&QTFWUGD{%006t$yS9l zH-D3W_JvOh0CO$L7ZwK~O|e*?rBvpbLZTbZm?eRyCK4$})sjYkY(c+;Nx+4!!z{jgoMD1+<9%Yx&|4Z8t(d7> z^HubE?VceCvc2eW=yNwsPRy925f{rKaq&`3a$dd)< z2gK{a49RTGDfL%FL^n1QXi0$msimS3Tf3=2LtT(Go-PGY*Jm+WxnK@U_6hty&B2{z z2Q1a8Q!*6@@5xeCi*^JdaVn<@KNXb|GK|c$CTX}THIzD@k@j9oWdJ{i%Gymx?8@aM;TN*qzd;$B1fNeAd~@;2OR#$(6L?Is?*LQ-%f{&|HvbYTO(vFGiln^Od`yCj zLL3foU!_%ng!S z<9Nz9GRd`Gx!U!Y2&{M&N4*)_t=>6Dup0m2;Jrdx6Y*i(Un!5JW2dl1nSTcC4)S6wi(rUum1VE9 zWVS1`au#@6!`kJ0C}sEb&u&`dkJe(A>A)D2_&YAU(Ygp>tk=i*lRcjJm`t_wlbP30 z-=05icIzzJT9zEP=iYJhSu3_HXawX!TD#YFK?Q z|HIY)Ead0KuzyGEa4Ti9-X`(vmh38R9&NJ~pD1XRX>tWv=5m`|TKjFrH&@y0;my4; z`TXADW~S7K0TL3~13XkT(=4T4NZM1@ZK!EVx>H+nqL%omnV^tQcPg94mU;UM-hap2 zSRK@G=F98YP+tnpuQLI$yB%Fy{!HaI=3QxvT(auvbbpB_%EJx0rhnt)DoZZ_do~fr zcx`?(J;ATD!}qq!mmy}aS&MKTcQt7f#i z{8W{!mhM!ySmB%AFMj0$IYc&P_HyCsQ8!%FqP3?LYj*f)Ua!s0s_5f8%P059^-JgfaY>wtOyXhsECIZvBhZN8; zszqqd9vUBPo*b`YWx$kCL4!1?^gVN|F7f$?6N}lfEMyE9WekP^_+#mgT;Q{7xck{_ zQW=S7i|FC6peu4ZKskH#Zt)(gpi3gLxm{>x3xA3luaR;xkM>f1rR4ybl(Xo-f|0o*(3+d77uO{q-gg(_243%W}LL zXVGNxr4hnABvctI)8AyYO?%XbTC!Uwgxc&=F0r*Xu7&W{f1|E{WPOL<%PSv zNg9&@!Fsn#?u4V(vO9Ztana}dr*HlreUR;|lTpkQvq)2YWdSpnvCjf1f0bL?lG{jf zeV?!Bw?#*Eb8)}e502RhX-8gZt?#E`PG&PTb*LQ1g{JWp{KfeF|ojilh<8vAX9-5^1 zrKhsnj%3If`qX)XsLE6M(zMOg)UL~p&v}rS*R}VSZQEnPzc$_e@i~&Ip2~rvM0x5> zJ(=8(q1nB%tuIE0f3m91Ls>y=BD@&Ssz092Q#mz#XM@ZsejJVF<7>06jWG=6D}N$uwB`{O%KAh{Ig0D)f4KPKKzBobG(P58lNNg%`}0s) zx4`yDh)*BO@`p9GSLc%WuwYrYp=_Jq)YgTC{p@H+Xj1cqc+o|8?Yk}Y7~w0rp8xms zXNxd0Jj$$}pmbuj>it8m=+NxXroCdU+qyJrvE{X#xZW1d*kF(9J2#2)3tz%N>a1&A`=L_0~@p;A?R)7H$Tp-QAR)3 z*eNzpVPR zzbnEkRO{7wu>o(bL_ij>UF=QRc`5wWM6Eh!X)=@zT0%V z(>H&`YUPXB!$5mJMbEm4fwaJ8Ixj8_I*^9Dlk4~P5c5OkUD9{kCN*~)nIG0IY$i7s ze-Y)mcRq=Wsmc7?Up_LVX^*PvhpkvbtFC3k?o5;*KVz3h>BF?(u7=5k`(ZM(^;1SA zKNF>vu*d|%hY2DpR5|tn9k%t@>^m|~;=5}6b-io$u@q-Ddtiw4&DlnN%x`rOf$kD) zS=zw6%6Np?OnmAN$sjK^+hVpyXbyhzf4Ue}os={*l&yKtc~3=YFA4!acB4seotUZ7 z2V~h9;GRF3%AECN^1@ovZ}3!MGCFOD zsG}JI_uxWKLOT-X7fSP`R0Uj*h#S|j&uvk2uQ-YP!u$3EpRA>nqzV_Pe(Hh7E-lS? zo=7wQ(!OpS_?+R=wSvk^%7|#&f2^k}%d|_aL88%lq(NC=!pEnx6A`B56+>TE2e#BD z)Fv{IAXHb&^mKhz;#lfZ_7igdFq5bOa}P6@r)HXl%u>xgv%m>MT`(|g!9Z%P7tv6c zTb6R*zP#T25|!g@{meBS;6233?m1p<7@$DwXvc0ry-SfG&LeniuS@1x<^c z7J*QM(?n}^S{f7 z!nrHVHx!pF8s4AVEt_<8f4jQ6O<5o;x7$Ij0uB4(aII3Iz<`puzi9VbKE}k#rA4Q< z+@CG&QOid9b8)aTz#rci;R3K(2^$fL6-n+THT(4WyMN-3u2G(FBiX7cWH*neMmUc5opW?f;Y!WQZQEP!lO|gCY+}{TznC z3_#L%fikQMrLFBqIlOWNhY$tpiZ8Y#b=hD^gH)d{29vmX`~i`|0FqDA8)J(%9{<2@ zpNC$&((#F{x`U4ze+`472J@%KJDJfup3F92K*h5hMM0-hKR-YKZD2}}9Qt-^ol8FU z;u|OUWHhMkEff_^hs3OfP#VX%H8dfO=h&OVUZykhT(G~^Wvie-8e1JCU#gJ;oL&P0 z!ztQGjdTPyUnHn(Ya3M@)mT5R1r1RnnK8<7)u0NAVW}uZef%X(Jk;?H0ZT$o z2+XQ)+qcdEJ*c-e8|7+JbM7n^3ngh^r1S$hb52r-LfX1DTdq%0T>F`+b{*xVBk2ns zrZw4Ric(VFg&QteYJ|}Mz&X1YM)|@46;kcB9E&b51+A%uJp0asWw+ca{PHbOx-t*? zpwF0$`602gfA6mRQ0NmMHD3UZ14Spx%0h#FL0p5O=(~<|s7@e&zP!$%SkvY?P9N(^ z%JF7AjuvTqKCi-4?h@}DrKC8-YU&UyRHb}qPK&vR9HA?$NvZ13a(MZu{ ztMf?v4gImP%qx%oAD9{gjJ`2(Ylj-!?Xb{4hmj(we@e!`+(le8!Ho-@&x>Ry&Vxrx zWaP<}7J>mDoR4!44ZFk0Hm5k?Q~`{TaMXQhn;{b^gM8$$!L`^qN&2)Z?yLD8fEbv zpMqbMe_8{xSKDjO1ny-mZgUAK1rag;%2W~&8w(D@bZ9!}^GiRW-L8}e9C*(w#Ktl1lxw*Jn~yT@9aH=$U#=EKjQ*PMh1Yue5|GK zv9E^}<*}CNq);Vla&9g;mtdxLfA^@abn7|{{dsRc!>+AWU26LNqOyv! z!uzkj(bQN3CoFsAz_F~*V+;sp1OQCiOko?&YWpS(E~318KBRNc2Z?Q)Bz{PfY?DN> zvpTI^;#Ad0{I$&L8di*xMbU+hbNT?$l`^YXW3P?(MlIL&p>$Ar5=ThrMVEB2Bt~*L zf3LGbOYFqY2c=1cSq0wNorBy)wY+Y)lrf3*l5TuAv*G}O@OJbMdwrN0+kB&#$PIJcz( ziNO7KE8a;l=(&gm+s-)K-hjd&b7x`864_-0L3S^ue}pt}XJwLu=uUujIkRDh-jId> zwtI=9kYR_pA)S_F!XvT>LXo(&ce@jDvw~%Ob#SZZM)ym(a1$gs2a7MI+y{IV zO_G=xL<{(Btb zu|J7JLhWt%Xmoq_h9c3Sb`UFwElhB1E)qJObhX zo6pD!osb94(pGFr+S|UG`b)hNt$?ccFu^zrbeK5v-7v~CKqvE8u1sWs$LzwlpU&tQ zSUWew@+L?|>spz`B{qhs&jKx&!AE6{vnxs+x|YtX&xWFQOX+-*1KjH`e`xyELl_Q` zyCI4hKLhix4q}ABdgRL~6b3848GyW%3o7WLi@b(I)J$>gsLf25#Z$H@lC7JJH`@6e z#Dt+?fde@X>y5J8nk{n(%*_Pq8FRfV&!kQKOtD!$X6sBdbBPY2wTYw-4^J;M(Y|jZ zz&%Z^`m?0kNW2m|K@lpMf0ZtY-yU^u$iIKEivef>Nj#qwfY$m0_zJ#sEnu_gz;^@S zJ+j$YErQf8@CJ2hPdD{T*RwoXV2UV!E|4CCR95kddO#v_^TO-*UnDvysscE4B(ds{ z6OD-Mz>7*kbmA{b%_l_(;nL%2V)_;E@N+Gb*P~Fap?f}MMB_1L%le_r8?*g)CO@4k#o5fq^A490d_Uo4+rDV69F7f9(J2Kh{*CzDHYJV}M9XUXnv zht#9uXRdLje{jBis<2Wh`6(8TKeXLqMyj%_c|f3fln4&k9}s%dtRhXhT)qp&4%ab< zdN=glbk`U)P0esurlNKWJ!hwI=lWe*&8TeGUtg)r+)1ktl5-AIYxU|iRNIz!VI_yf zX0i93DCwU+i&u!%da}g(LCVA@3hk&m@mysiJl&Sef8wiV!Wk|@@`6nU1*z0(SK-RT zq7V}In?z;>PzJPct86^s=#*`rGwi zZjdie*KkO|#Q|xymb(&7>E?Ln?qzbx6;ofz(hnOFKf&TOFG+nH6Kq+i0e2HH3$(>5 ztTskVe=p?fD17qLpP$dD$nzZlg`pYPo?hh3((6(N60Pc=jOI;I^lMDK9~RmM0g#pY z04#6)sWLnl`0h?DZ>I7Bi9cTv z44`R~9W!hwn=kwY#G1hyRmD*HQZT24t2?eI2CHZ^1x_d8JOXw^rj}+9suhzyonJ(; zTN|&eaBYKb5I=L ze=WDCNF*%P&jf~9&`2abG`BqpwKSy8}$ zUq-Ar;5D9D^q_XPuQkmRfo2$?&kUqke}YutE-H_}u4ACD-Beh|2*#Rqz{Q2Kb#xx% zDyL=Xg&rTQ?2zOb8_(N$U`U-H0p!%KXAWwxsg@IZZ&Uwo0w&q$UH>%1opG{uy;v-r z0GhREq+avX?w#vgi8glAy_3Y1Y6))B$JU-CCW}(NE|~PVxYVc1;@hVCbR&40e;cv> z>U-D!7X`Maw=_EqiTIpK)DlZegNVn^&Cu~iYV3d_{_H%yIk$m8?S&Z8+P*I8gSWX< zu%>mA0jk!;DKBx1_+>-xVWdQp}Tbt;x4|UQg_sVU*K-g@&rrf>2Hc6d60T@6Gx_u#Z{ko2w%SWUsMSw z0+Uh9DFQY*m$AxciM*RSJvv(F28$$#6fp)u}I+2uOfrHglucqR*1FSBUz zX_-U|UwvA}`2sJ)h}Iv#9lBmdo;-SGNLw3vm5h68&BZR0eDQf1(~ zdRQVes~9?(1uMwuglHT5{vHd@lSS*g=g=vOAm+vV1{1Kt7FiLy^QE&r>jSY5wzj`S zQPOwP_J2=viVpdvd9>(ld9HosPcB#lj4-9a$tK!nGWh5BfBbQ|F7}Bm1%#)!w;)p- z!&PzQtkw;kgl#|Z!C?5slxI?8X+YoWpp5JAzKLXhiSp>DpZ@qGJ!3N5{r+Z|!huq0 zALIaH>Jh;A@+57AJSt)rQKai6)fu`u!T7`fT7OcG>uE!bMGi62Gkc|C1vGUd#2+x6 zO_YXNG=4Lerm`#P#wqa`5nbDU^a69L(GBGpr$-CrQ!ExAmb(a=)RWZ75v`>6f0i+3 z89pqtd@&rXvL9=*y%YJHmHb&1D3?>~gdTcVsV?2KlZz++(?L;oEX|bcyBu0pQt-%~ z_J3^n=wR=}BhS_;$tu2){{Qss{3do3cA|e`&5^NZ18bsD5ai6lo*+C^!mVf9jHq(x zMzh_*G)ymDG;e2x6qk~XyJF|*g;#qWFXwi42d4~qm78_Y2dfKp*n5SXRZtuZu%*$# zU4z@;4ugjvgS!NGcO3}926uON3GNo01SYr#3+@oyE$m;r`*NRdRljsqzqgz|U-NK| z!KRlK^*X`*vz4KH!dlcm?Lzdc3F2%Kj{`OtcBGsJ)DozYmqp}}rYO#p9@^$6`{66w zQZiVC2$jcRgTycEp7}hbvtjYDFtd#08AmIB%V?U!KB4_{?}R><$#RNo^)aE41Pm3! zhq67?I|44@gK1fZQ(bY^g2Jg~%KLY`>-DQ6x3t@8Yh`rFk=C3w4vcun*4CS+o)5M) z4#uH3G>{EMMe8AD8hxpeLPSv>=|u{je~!JlK$_qqmng7}t#2aEi0LAPB#k|78dcq( zAi}>}YF<)B=NYtcHm4Rue?1~o=_)Y%>B(`gy|RlouI3#Q97fkkH*NBvR9k1xMOjId znst6InD?+QhI=W0>g_Lr_)Qjnu!}akETXd#l;BSAs0#U#Ik&{$+7Ar64PeCd%)rJj z+3He~PS$^S1Y;a5V7amj6VgNkD7W`-#2d3aa0Sm%B<}TfnBG!si$itivW1aqrt24W-aN z4hmGXo@beG5$k;B|IJSyKK(6hi<^@HiQVp_btVs0W)(y27PO5M8%uZIpQLmLDnE*f z^Z4$>Ilz=bG`mRC?BDO>>SJNCW>QeGih9Mf@>X5yvMwePibPon-BM@Y(Zb@;-2QM# z*C`VFgC(`6JF~tct|F=~0fPY_-UB5+PV=gCH?r^_t5^tQ`w-1vsLg!P_fM~_4BD^Q zb|iZC9g%%#JP^eJzq0OiDHysI^pz2B*AN1s{-?&91U)BV8pAkm2nA&Pt)2_nK{eBp zq=BZ4DymV)B;VehTYOl>dw5CGdDsJ>Zq!455zWsQxd`R6HwHnn^(i~i;?PDL2qTd- z1^w>`aiLGoSG2a5GLp zKvWyaJ*|PazlF?7rCvH*a}R0?Jr+&H#RRruJZ-i$xSu-732B6MaL-6P+TDKThb;W| z82bFMs-=)dz);Hv&VBtN<<8pDD@lu9WK)9(>Yj{COLXc25yGQ*lwS&es7i-B7)b%R z^~IR?Las!r-mFx9Wk#__WAtw|n$Ew8ZT=tPDMa zZ9Nef&+T&ZN+qqhYKZsWQvkM>w|m+l1(vLmtu^rW+X#x@Qn`~m@_P1J! zWV*Gd1?F3jmnn&|*P!m1#U-!9a~^WGLDnKknwbGXza>O{d=){4KqAX` zN?#|OW7(X6O^w0 z07huO-&H~#osVmf1s3`1nt&2{v|)P+LvXyw{@>bcJud$9z8LGK#a{g2128- z{RDtwjD6vy!-27%9{O(6F_X41VzAg=dt1uG0Q}G%Lcib5J=qU^mc6l|eIbzTJsQtz zn=p3s(W4we|-mwkI%N<$6jxB#fK@xMfZI zB?YL;;uE*MT&4SA27G&y8l%HVi*<2H{@JlJB36wC4ArQ`wvK6=~kHo z*LjFIg?!TXu0&p@hmxz8-(ow0t}U;##D=X^85 zQAQ97MXBLgr3j#>%LQCb$Kmw_Vt|NPN?S2y=mJwxg%yM^##D$NLp+OB?qpeu<3z5C zz(Y#TshT3D*w3zm9>*4TZVeFXVyIfMBFP*sGg2Ik8Iu-Nt+cHC;EDjapGCr)n0V&8 z?RV~be9$G;?exI>6L1CG*=^0VW_c)gb%%X)%Epi4KA%GymW%W=NN^q#WpnrMuF&gE zgv{qKx7bg{O@suh68Fp_(}x?Ng;t0!(k(f6iUa!hjF1+H)GWZAMHwfEP_JDPQng+} zk1*m%-B;5L*M8@tCjp}zXKDB_%2at&BW(2Bz4tUtxIgGfBN&~`B7O>dWO;-`rK3&i zyCq)^^7$t1t_xhi-3~?Q zv~#ce(}x;rRDf6QnI3s031w54FHPb}p0S~CJS+k~>0j*qXKIWU=q#mqGtWvkHU~7b z^;Xdk>STwy!f^19`tjeqXFq>{uydxLYjuBc#ej-J&fpaN@;lxKVuLAI9 zu13Go(L|W!i9l!($qOGr%6>hOU3}T=jvp_GPi^_*?Hg^Y$d5kv1$FPRIz6#r&3z>$vok_!?(^f@r3gCK+D8ckVu4(qrT)I%Qm zP1bBJk%JU?sz=rjNv~0fg?yAEps>{j5q^>Mw*s{kEdo!slujmoMBXW`X~(AuOM3eL z2jhO1Gk4~@U(rk%y|%Elv7tlbCn4c_V^aCU<3~JIE`MQfsCtR**9r|}%T52pa{4>! zJ=3@F1rzkCpSTlZUu;%7W26*2G=%Z(-fZyPD|cc> zRN|Zx6=lbbLhluGmV8KyTQ{pzH1PfJ#&Q@vzFuw6;R(5X+LsKDpu?c{RcR?OZox13 z``;b6AFs|ms}& ztG=Pqah=adk`O&vIOrU9FnzCiuYjWKn0^>fVq2gch!h&|V_!mbx8qA`+1D^dJS7bJ zcyVAh^!daE>p-@ZYpA_A#*yyN~_Xx+g_QPsIFEvlIJ&eOd&jZeurblNIFDb5JB z8U)|%erWHri))&1P;Q=NeAb8w_Pr10rFDH-$%DthM@!-T5z6f1hqiv@`f{7NljKi~ zG=xG%oN$r6Y(h(8AW#tfW9f|QY7Z>rW_2`N2JdWyzMy66N^}Y7F558+AkB_K`5Jxx z&v$CeSPRgK&BaUir{NOf%vBCx;tFb8M>{66hBA}I^W{v8GXYj|zteg-Amj92I=FrE zpI86|S07_PYTsxMsh=0GNT zUZMVI&fRHisBm*qicy64@@F0Ua1Gt2(SyLfE*BC!yHU3Yd?DS$rhTSQyC^+A13ipw z^U!~*Cx3&K?GLSp2L^DOty}ciS0!u|xHKF8Yg8>cvmq&OjuZO+;f|WR@8y$}-s^bg z;3NV;OYS-*0ldKfvjNUrf}k!4xw=g!mR{@5xh1?~6=iupXxZ{s;zX5&46H2&k_qw7 zt#t?`GV(3xAtp^E-;0DIgD3Hf;w&nS5EL{E1~StUYmL+gck+L-B3<%G%Jj&MeEYjc z)~xJ_h&h@K{{eu0NsE|VK&N^c2*-uPJ}bMQztu8^VY>Typk~w>H3_PQS79Q-B%?$6 z!cT({NX(9^7geV*yM-!y9sEemj^Np#Vzx?Bjc*h2CE+ZJsrm^KW)RdP0D z**DKe447v{uV~4PE`fHm0`PaxWZ#r#V8ZT{96_ojMmM+lN?yHdg@Uy8m)yUTV9$>f zUF}h(WS@dhwblb*feLl-W|SZ-5{<=4rM8ukd9<ql-+>hER?is*A=(K<0^fKApid*{@bsn3A}EH<#^OYP|Fv< zFwFWwVt_3>J_adiQ}xRgogLcs`n7JieQEIb3%xTv1zvFeEVg+y0grwupMNny6PEsX z=;=>~POZtB;YWX74#I|wucB3_78e|KM8Dt4&FI(SB z$Q9b7TKgnW6WAh>`2D-TRqU4NP!IfjlE=b{xoGf~>_Oz#KYtDYelZ@7EwYB)%7|BKlK7ya`N&G0(8v5)-QP zf1DzJQL?^>m=ELL@+(!N>M$vI2-}03BZGTc(V<5Z{_9_F4%{l`#ME&=C`goHU1uqo zDA@=7tfq7h;_HT^cq!!D682r8rwUs}%GKMwih#szYlxMWys`%+cyBtruTWFC>eKg| z4$^{K9+`8X0%I$0xAp@0gVZCg4fIkzNhPPO^249$VkEo$1=0SLIU|bJ0)Z#s@fAAz zE~skj&)Uh4XuIMDRuB%aVcFGjp=kE;juNki;)|uy{9f|2zp179XP}(og9VDRm<|y{ zrXSi2K1HOzb1g>hcMN%+4E_j+zYvVrUU2%Gl}h`BW$=zsFF4pKwca%mSfayOKJko{ zNyll*olsDl_XzY$sA|a>xZ)-AdC}X1xf5P!30g!yWdsOX#NwtVvA+Wn2g6en?`WZi zk<9xS5kp%m7QAeUu^zrLpTD1J>~;GsV69Gm{Doz}|H=%S-H_47X7sjTZz}v@GuJk_ zjZO#qJwj=3zVc9>{vw}jeq4Zk3piV~q!81P zb<2;+PS&CGqGya`+^jGOxcUyeGZuYi!s%7U<*{bLDtW0BJI%pGFMTB zO~(Q_KSFv|tH>d0aZ=Lq4Bc58#Z{HBCCsqY{btr#>F-y=5D~V@yWG-$f0~+XvLApx zO1I2mX5qh3sE9IK>=Bz!3}^Y<=STfL#JEfzmSyo*mxE~REPo3N-bkOdU^aSrzj9Y( z2F*d%N@ec$r$hh2xm$2pdX_+$QIpV$LD?0}5LI%AgO7UqJ18Gg<=pzHUq0UdV+T4m z^PbKC^yBd4TQGCB?}S|jZvF2s_?Sm;6PXox&gyZ2m597orBUiw`9!h%*|n6ttbN2c zJ5~#pQ<4f1LqHP*PXJ|N9E=*V-9&u+Ws&67G_P=~qPvs|g;2mQ`zy2|SR=*fQm8S1 zz9bs$O429=)BkS)k?V{JR{ku7cS#%C@2oeQ)o}oN*M^3mL17X8$*<+F?Cdx1lgg0w z0;6#V+r8Q-q_2+Zt=cy&KYg)j67pZn-sh|c3G7=%$*%p!K5QVkBD09VQ$!OVlWCT(HHGZ1vc&>Y=x^YeLv% zkJ)LgHdW&QZ*`tChV562oaFsMBWk8MMv4A(%!RC&|I$8mWJ8TLmtYY7#KB-Pv(!B? zYo_hjNN%_-`N~gOT3~KGt>S<`>Aa7x0nvUYV*`!qbN|?iE;LUy=^ESgp{ALzVMfxr z3Zq9iHI{(oxSrVKaQN(~_uQ)+d_mrNdd4NCTsGO7iT43P-Pw!Y+pT=!AN1>M&UriT z@hAt_!7yaOg|n^Oy*c)eEe-HDrs4HBmR|mmzq*$CNZKTV+B+9DvCli5%LUMS;+E&z z@qbq6HC#2-f1$Hec!*_Q*E)(KPlk9aN9IU84FSt=E=Ybt_0=s(5ZBlfe-rk?>5Riv zU*A<~aJENLxxv{iF#I2I49sawISEh`dlVpG3lPX<$5D;#jU7cen5{fe&sbxIZUtY9 zDMh*Qif>IEG5iG>$#m5cyZ+aZ7>WI^_Pu@NKWY3ahrXZ-u<*PmC>}?PPe3Y#QgYs+ z#q$gcC!O8X)|w<-UJ|It>KQ8>9-Ln&CvV0xnlm8`r!}qHlOI5utPpyaw z0vwbLPi>H%gS9#L@y+&YXC+rdku`Bwxd^8vm`9cwnoghbxUp%&e)~gJ z`nV%Bp!GU`1^0&P8sNu~Us}<~`6|@JsXYg1NbQWq4(zc!c=HX~h255@U2OWos8(h#ifvfIw#BGy)5h zGJVuFQG+nz;_XpgOQ~jrOvKLq*vt;=vq759XG1wA>2WD`Cq3h)4Eg1)PiBtvw8l}5 zB6wPu(O^w9HYLa0=YlUcdw)7Md;9&SzfRkuZeJM@m)wOAY*`UYQCZl%<44J&bF|^g zBn7wFO@eO*{LSn{qdgko@}$=!TXET;2n2R2V4xXK7TA%&03jpf#%?V-BX}R#A8l12 zqr3>ynZ*EcoajHQBX6s3#(oikv+$};MvVk;)uB}+qh^q-6=c`Oz7*nR=Q!)2SC2wI z^Sk(SODzKV?C(-%^DZjlTo?XZ+=aw^i?&$x$)sJ6m@Bfg9fzIbC}$(NGc}q1_(M>y z-OFs+l=n=qH(Y$&;mbfE|3tcW4B{3InTe7%+XYhOjA}_$obeX70X13rRAP`zYaqXV z5ekJ&>bsjlASQ)e>bq5;i5mjcnNS5gb@pY3vv}0^ZHv&k5liKq0LboLnp~VcFk>4}#2J*A8IesA*=%GL(1_;* z&xuMOS}J`WHY1f}x^%;d?MuF7M+o1A`Y;o0!1{bkYf zZaCXTS~&IJHhJaTQqq)_-lNV>)pBAkL%`GhRc+R4q5u@0^|6qZ`{vugxFfQ-Kl9~{ zWw06!x_<%Z-we!aY_#^(Ed>tHOr7_$)@HO+&bO@>-yF~i?&tlQAE}ALO zKmGFaknS<+02f+6!)r Date: Thu, 16 May 2024 15:21:27 -0400 Subject: [PATCH 2/3] Update zklayer-whitepaper.tex --- zklayer-whitepaper.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zklayer-whitepaper.tex b/zklayer-whitepaper.tex index cb7a049..05ea331 100644 --- a/zklayer-whitepaper.tex +++ b/zklayer-whitepaper.tex @@ -383,7 +383,7 @@ \subsection{Model Node Pool Registration} The network implements sets of blocks, called epochs, in which a registered node must be available. Nodes that register in the current epoch are activated during the following epoch. Model nodes commit compute units per unit of time to the network. Since the compute units for a workload are known ahead of time the network delegates workloads to fill but not exceed its compute capacity. -It is the expectation that a model node will complete delegated workloads during a registered epoch. Model nodes that fail to complete work while registered or otherwise shown to be unavailable will face a penalty. +It is the expectation that a model node will complete delegated workloads during a registered epoch. Model nodes which fail to complete work while registered or otherwise shown to be unavailable will face a penalty. \subsection{Model Vetting} From a2956569323c51181df3decf0ec90d7f90eb4bcc Mon Sep 17 00:00:00 2001 From: Colin Gagich Date: Thu, 16 May 2024 19:30:49 -0400 Subject: [PATCH 3/3] Small grammar and rewords --- zklayer-whitepaper.tex | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/zklayer-whitepaper.tex b/zklayer-whitepaper.tex index 05ea331..66097f6 100644 --- a/zklayer-whitepaper.tex +++ b/zklayer-whitepaper.tex @@ -216,7 +216,7 @@ \section{ZKLayer} \subsection{Technical Architecture} -To address current blockchain limitations and challenges of running on-chain Neural Networks, ZKLayer is designed to serve as a conduit between off-chain and on-chain architectures. Taking a forward-looking approach, the ZKLayer architecture is inherently modular, a design philosophy that allows each component of the system to be individually updated or replaced. +To address current blockchain limitations and challenges of running on-chain Neural Networks, ZKLayer is designed to serve as a conduit between off-chain and on-chain architectures. Taking a forward-looking approach, the ZKLayer architecture is inherently modular, a design philosophy for each component of the system to be individually updated or replaced. \begin{figure}[!ht] \centering @@ -337,7 +337,7 @@ \subsection{Persistent Storage} \subsection{Aggregation Circuits} -As the complexity of a model increases, so does the size of its associated zk-circuit which results in larger proofs. To manage this, aggregation circuits are utilized to amalgamate multiple proofs into a singular, more concise proof that can be submitted on-chain, along with the corresponding output data. This technique also permits the batching of related inferences, enhancing efficiency and reducing the on-chain data storage footprint. +As the complexity of a model increases, so does the size of its associated zk-circuit which results in larger proofs. To manage this, aggregation circuits are utilized to amalgamate multiple proofs into a singular concise proof submitted on-chain, along with the corresponding output data. This technique also permits the batching of related inferences, enhancing efficiency and reducing the on-chain data storage footprint. \subsection{On-chain Architecture} @@ -389,9 +389,9 @@ \subsection{Model Vetting} As ZKLayer will be an open permission-less network, no party (or even Inference Labs) can decide which models should or shouldn’t be available on the network. Instead an economic system determines how “good” a model is. This is crucial to retain an open and fair censorship free network. -Verified backtesting is published by the model creator and made available to the public. Users get a guarantee the model will perform a certain way under set circumstances rather than relying on blind trust in published accuracy, precision and recall values. While the provided examples may not be representative of real-world use cases as it is self-published by the creator, this can be seen as a move in the right direction. Users also submit inferences one at a time, with no upfront commitments or complicated setup to quickly verify the usefulness of the model for their application. +Verified backtesting is published by the model creator and made available to the public. Users get a guarantee the model will perform a certain way under set circumstances rather than relying on blind trust in published accuracy, precision and recall values. While the provided examples may not be representative of real-world use cases as it is self-published by the creator, this is clearly a move in the right direction. Users also submit inferences one at a time, with no upfront commitments or complicated setup to quickly verify the usefulness of the model for their application. -Aggregating on-chain historical usage of a model results in a proof of its usefulness. How “good” a model is can be answered by its frequency of use, inference by a diverse set of applications and users, and repeat use of a model by a user. In the same way an open-source software package can be evaluated by the number of other projects that depend on it (and subsequently how “good” those packages are). +Aggregating on-chain historical usage of a model results in a proof of its usefulness. How “good” a model is can be answered by its frequency of use, inference by a diverse set of applications and users, and repeat use of a model by a user. In the same way an open-source software package can be evaluated by the number of other projects which depend on it (and subsequently how “good” those packages are). The network implements a non-zero registration fee for models to prevent flooding of the network with unusable or non-existent models. @@ -586,7 +586,7 @@ \section{Current Execution and Deployment} \end{enumerate} -\section{Remained Challenges and future work} +\section{Remaining Challenges and future work} This section first discusses remaining concerns such as IP risk and data privacy, then it explores future enhancements for ZKLayer. We anticipate ZKLayer's potential to support emerging technologies like FHEML, verifiable FHE, MPCML, and others. While these technologies currently pose computational challenges and are not yet practical, advancements in technology suggest that efficient solutions will become available over time. Consequently, ZKLayer remains adaptable for updates to accommodate new technologies and services. @@ -600,7 +600,7 @@ \subsubsection{Reverse Engineering Risk} \textbf{* IP Replication Risk} -While not a perfect analogy, one must not assume the process of zk-circuit generation to proving and verification keys is strictly one way as it would be with any secure hash function. There may be artifacts in the keys that give hints about the original circuit design and therefore the underlying model used to generate the circuits~\cite{BenSasson2014SuccinctNZ}. While it is likely computationally impractical to reverse this process and regenerate the original model from the keys, the risk still theoretically exists. +While not a perfect analogy, one must not assume the process of zk-circuit generation to proving and verification keys is strictly one way as it would be with any secure hash function. There may be artifacts in the keys which give hints about the original circuit design and therefore the underlying model used to generate the circuits~\cite{BenSasson2014SuccinctNZ}. While it is likely computationally impractical to reverse this process and regenerate the original model from the keys, the risk still theoretically exists. \textbf{* Public Verification Key} @@ -610,7 +610,7 @@ \subsubsection{Security Risk} \textbf{* Trusted Setup Risk} -There are a few methods to mitigate this which are in early development. Recently ahead of the Unirep v2 launch, a call to the public was made to assist in a public trusted setup generation process (which Inference Labs proudly participated in) and the tools are open source to repeat this process. This process can be replicated at scale and at the protocol level, which allows nodes on the network to contribute to the process as new models are registered on the network and provide incentives for nodes to participate. This also further increases the security of the setup process and the overall network. +There are a few methods to mitigate this which are in early development. Recently ahead of the Unirep v2 launch, a call to the public was made to assist in a public trusted setup generation process (which Inference Labs proudly participated in) and the tools are open source to repeat this process. This process can be replicated at scale and at the protocol level. When new models are registered, nodes contribute to the process and are incentivized for their participation. This also further increases the security of the setup process and the overall network. \textbf{* Age of ZK} @@ -674,7 +674,7 @@ \subsection{Potential Usages of ZKLayer} To address this issue, companies should demonstrate the fairness of their AI models. A naïve solution would be for these companies to publicly disclose their algorithms. However, this approach conflicts with their intellectual property rights. Therefore, ZKML proposes a solution whereby companies can prove that they are using a specific algorithm for all users without revealing any information about their models. Kang et al.~\cite{TensorPlonkMedium}. have provided insights into the ZKML system, which operates using GPU acceleration (GPA). The use of GPA can accelerate the proof generation process by over 1000 times. Consequently, they suggest that Twitter could generate proofs for 1\% of the 500 million tweets per day from its users for approximately \$21,000 per day. Given that this cost represents less than 0.5\% of Twitter's annual infrastructure expenses, it is feasible for Twitter to demonstrate the fairness of its feed AI models. -In the future, as AI models increasingly handle decision-making and various tasks, responsible AI will become even more critical than it is today. Simultaneously, with a shift towards decentralization, most communications and transactions are expected to occur on Web3. In such an environment, ZKLayer could play a vital role by enabling AI model operators to broadcast proofs of honesty on Web3 without compromising the confidentiality of their model details. +In the future, as AI models increasingly handle decision-making and various tasks, responsible AI will become even more critical than it is today. Simultaneously, with a shift towards decentralization, most communications and transactions are expected to occur on Web3. In such an environment, ZKLayer will play a vital role by enabling AI model operators to broadcast proofs of honesty on Web3 without compromising the confidentiality of their model details. \section{Conclusion} The Zero-Knowledge Layer (ZKLayer) presents a comprehensive solution to the challenges of integrating AI and blockchain technology. It provides a decentralized protocol that enables secure, off-chain AI model inferences while preserving intellectual property through zero-knowledge cryptography. This innovative approach not only enhances privacy and security but also ensures the integrity and authenticity of AI models. The ZKLayer architecture is designed to be modular and adaptable, supporting rapid deployment across multiple blockchain ecosystems. This work reflects a significant step towards realizing a decentralized, secure, and privacy-preserving foundation for AI-enhanced blockchain systems, potentially revolutionizing the way AI operates in the blockchain space and contributing to the broader adoption of web3 technologies.