From 595a81866775efa47d658c5a1449a2784672dcf0 Mon Sep 17 00:00:00 2001 From: Dan Forbes Date: Fri, 13 Sep 2024 09:06:20 -0700 Subject: [PATCH 1/3] feat(web3js-plugin): demo-video (#103) --- content/10.js/01.web3js/00.index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/content/10.js/01.web3js/00.index.md b/content/10.js/01.web3js/00.index.md index d6079b3..6453678 100644 --- a/content/10.js/01.web3js/00.index.md +++ b/content/10.js/01.web3js/00.index.md @@ -81,5 +81,8 @@ Insights into managing smart accounts on the ZKsync network. :: :: +Watch the [demo video](https://www.youtube.com/watch?v=RkNvE_FRr_A) on YouTube: +[![YouTube Demo](https://img.youtube.com/vi/RkNvE_FRr_A/maxresdefault.jpg)](https://www.youtube.com/watch?v=RkNvE_FRr_A) + The Web3.js plugin for ZKsync was made with 💛 by [ChainSafe](https://chainsafe.io/) ![ChainSafe](/images/chainsafe.png "ChainSafe") From 2239475bc9db1e15849b1b9fb199fce143622c96 Mon Sep 17 00:00:00 2001 From: Sabrina Date: Wed, 18 Sep 2024 10:50:02 -0400 Subject: [PATCH 2/3] fix: update docs-nuxt-template (#104) --- .husky/pre-commit | 2 ++ bun.lockb | Bin 650361 -> 655574 bytes package.json | 2 +- 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.husky/pre-commit b/.husky/pre-commit index 84aec53..49190d4 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1,2 +1,4 @@ +bun install +git add bun.lockb bun lint-staged diff --git a/bun.lockb b/bun.lockb index fced49a6c74a904e7b9f97b2fc29c38df212feed..4487f4cfa8a429b041d1e1e740cc057a6b02eec7 100755 GIT binary patch delta 28437 zcmeIbcX$-Xwy!-i(#&WuNq|5o03wPcB!Lnl$>fYMISUX-WJD6l5@3=68xT-{Nx~+Y zj6q;>#wKI1MK(Dn+hBqX-@B%3fW6N?``+(9_de&J-48!jt+!XjuCDHBO?a7E;^$F; zQ-ew_+B&31>rxAshM!-Mt6jEo-}QW*oTuHGkX9vY)KB~IhMHN+l*J@l`DrZ+T5cCw zpL{ql#bd77RK#RTO@U{{-o(#~J&*keJE%)g@5C-ieOG;D_=~ZWlKR&ivon53n%R^C zKXJa8dy7WvO*pGmm1l*Zt zHf6(plWsN@#m-n{HhE#k;upk*Vx^)LaA{~NHV^i!_Pevc0DgU}A2z>^-=+6Q(Lisw z1)k4T-jsTu9r*wy*pUkxs{`_4J@I=d4jd?>_VF^Kfyrs3O6AK{0?(JdvsW1XyRjl| zWvSvREteauF=J&|8eyf|RkdFhE0yHL`eUuSl4tZWO5$AuK2S5>&k{bPP{Z= zBUXmrw9zQ%&kaTgCa0|^U9eb`+2m}-@ZlzBw+8j;*K1Js#6BJHWmdFi#B-$`C|#uF z-pxjN?U)}@Pst49aOT-!9F`pTKJZ&`Q#NP3y zJ=*Uw(kT6ty~f}dryLm@f2L4LQ zxr-fQH)5sH;YWiq#&X>d+$Em-N<<5NaH zub+*D;3s^ka64A&S%sDI=80v3q)s9s1r5QovscT$P_W{^> z?3X!FRmTs1U<_eDtn}D*IyT3bNqXR+QEmXfj8t3?hJh{pk#WeDH!=CbOjg}qD-E`ru;^VuQcMDF6P514!_+d!>{iABWZMt%5!|$3-UvsB#QsNhx zol^Y!ygf4}xqU`*d-JN=>YL`~3K^}Im?yiLv!{7>DXpdsHap~c(1*sERNQ8Bq+a3{?&EG1Y%~Wy^Die)TyF@rjt}>3en~Ljcj1JZWNzZ=Su6e9@XqTI;pmMg6N}S_)@;I) zGL3d;<;GD?CUaUG?QVc4=Y>^ju#S^`Y4ek#9S2FtxO2!qk8r%g3pYymJi;8T^6!vg z|4yGMDm|E^xE?p!C^s#_`T#FV`KOtq9mO^o%{Hm4c^LXQ+*)bvr$#%Lk&;GXI=83N17qJLJm*-e^nz4%8dnauo8b=RRyFFKYh8`oJ?+xWXlo_zWm`H^X{0`J zrgCpJn}$ltGI^^yzl(`-A5x#}OtE1Rj_~hYb3OgD2uC+O8FF{$BwCE;T&BFHdnDOg*HpOv?$u~ zij=V`%6b>I!=7!)&`|QraKZ2)ArAA-wyQSC0B zJegJ&6%fOr&%e*eXsqL{@$?x%F*EU`X~w?$c#<)zvoXc@n@!wS(D}Fp5th#T)%iml zq}T%=4#^}unRCSa73qQVu4rqHgUmQ}=@8R7A1?%?u|_AGYtQIp+Pi(y^iy~;;9R!0 zL|8vM%$ndV!rGK%T_gF`dwPvzv_T_yu@GS-`;csIB=?c5X(T;9d#_jlkqmD@LfE;mXR?e)3^pWPhjhCylU#wImV5YvDV9&e00v} zhcTBM<4Nh{p@c8>KIaHIe!|mrZHRDqoj0306KUidf+zco{%^&Tb{GfSe8DxIGFNNk z$rX!Jet(4H3%vKo=Qy6+YM7miV4;h~@nKf8RP@3#j*67B0Z&HXsQvl-$ixWC$Cs4P zITpzAmsA_9_2?zDsax8m#Arw8W!LzpC$ThWkCEgE?$jPj!-xon`xPCTcJ)!D2aa^k zB8Ss5`HJ$nK(WUpB+b8Tv?KSg#@!(YfdTD}C-uF@mKlLD>VNg1cD!+Oo=sB^`#*2Obswq@}(b^a2~@VL&+TUz^m(T-iDWNA06 zxWZIi@P=`H;Z`Fh!rBKvu z+^r^aTZ$*0x7CYqEyXO4k3zcyb+K+ANB&Ou40euCfH4f;z7e>S`icthc!_ zA}DuS95;1e;f=s!>F1m)az{o&mW^Jd);u+%j&rsPww8GV`i=JhwJE%AtlGh;yhYE;2D!FPDMDppS_y_yi{w7 z7p~@K<+3?}WLGj77s>~Cb@Axt$p}l>^9-Md=2w9!W|PTOJ*&xN!PdmeCf0_nul*0L z#5d4fERPyY&9QFSR+@_yzpeJgir)b%`8#TkO~L&KAg|C(eRN=79Vk``NYcJoY4AYJ zhiEQVDoECLDApZ+Bv$gLYCcNa(OIcqc8mq^Ov5x)@0f{Y50B}|DolH zw8?Zp?+`122eDkEO|LZne_^Gb*HXTmf6m1JkaeE_|AP&1*8hKH1Z0l9)rU|X+shD} zu`&nTu(FAjx#OYtJF*+~n;beotQ3?@2V~d$Ln{U5)Lg7otDo?6;Z zk%Y9o4puTW&^!K}mAEFvNx{u^{D)R5Xsh}E!q#&JO3ylwK??4Sm7a9b1&Eaf#%upW zD{F5=dR{|;O^!>cQss?+2l4yuHFB+ ztNA~^s~LZ;u_fbNW4DXnSF`r<`73LqLsJXo?YTWJ=DRyp`;<;jE^;FLO^(iQj%AvT zt{y!ozW?#8GeZ`rPkVN6aUrG7AeAv|K!JgkuQ|TACA(!j%i?~=z1q1S=eG?S_UWc@ zuZnHAbo=XaT;A4`W&})nb)cMQvwC?f*QV@y(X#T&=dq(!YzqsR@kxo)#@XkrdQrpk zW#-W-n69@u{Uw29*)ld86Cx_?Q%wc+38eA;Sr%F_G=&UqbK*0*YFTfK_q z4)=-qy-4FbZLXh+X;xevqj?P$e9?O3`P4yi>pwj?NfjMm&)z;)rCHbNFTP&o{2aS& zec^?jg8IIhwDY&lIa>x+F6malbNaE2s*NgDxc+G9PYXUv_WGcCzG|YUdrLLJ(>bH?60D70U~n&=I3&+->~3^9q_MXzdwD$u!?8$ygroY`MszqrPsAuanUDg&(0E~ z|LlCG-p6tAIkN^efBD6&?jKdjy0!GLC*B^jB=i`*sm|N&52Bx?t4q1uz15Q3R1~0| z=BA?Axv8jm9zYS5o(E7T55VdLD5he)051e=5>P^!^8%K80pjxlN~-k&TIB_J~I+JpvNE0mbqILRA0!0Pp;OvjWPi03X0%0b_jtVd|8C zWFJ77FCapV@&yF?0&WV3QXzhTOaU|f0MY8IfC+wpn*M;wYMMVF(jV|lKvfk}0B}dZ zk^+Dj^;E#@0)XZP0oC~n8=y`>fVB{yriv{Dcp+eufZEC&09alK5FY@jtJVu>6#(!m z45-gv3IHC30S5#$RGviuTLcU$0%)xE2uLUbC{`2@tNIrOcozkn74V4)C z1_GW5=%`{!0`3S{QW6lSo(h;<641O9po>Z`1*lUBU@Z-ZSFxo5F9d7?H0=K2RLwiv zH+9VMSE~b8UTxX+^Cn+=)_(X?e{22BqFojwFaBX`vh~bVPsgHt-5-1uQ>F9c>d&L6 zOj7rYO`P$QZ_{jTzb|i5^GmZ5nDe%3m^}LBbSAO2nNt!h|?=7p_G$m7#vCeDhJm^&ux0@&&YD| z2V2Bs&2xXy?vb^>{NeJtu6bwt+5g_YPorlHeUdM_x25*df|Y*fk4^8I*Ym^XJzdjy zZ0o%b8Yf@rSasdtV|5>QE7GOd`W#ihnSO9%+|@JJk|v%US-1Q5`NxfF_uHB*&puh* zensUi0nPi)99%U1^v`QIC8)n?p2}8+!_-@~F2iBkQkKKCLqK2UC<{mk0`x8m=&!a4 z@Gb}N4+0EOi9vwF0*(n7r1F;oBnJaVmIDk?KL`j60hA2}3{@p_0x|_m$q5*)PUQeh z2nE~}Fj9rcQWses@QjtsoT6f61-c_(tducIoeBobt^f!N0gO?jLI8EbqznOLRY)k{ zg@Bo%fbr_8faT$Un&kl#)wJ?}RuO<_0w$@L3ILBtz>*4pDe9?!EdrW{0lrk}VSt1v zfHfR2O~r--yek4W2}o1s2*6UZ*zE-0u0qRr(+!U}x zg;WN-5HPbcV41oqV0jFnW);8+HLVJu)yIHm0=`u-RRJE=0ZXa^R;#B1wg_lm4X{?F zR|6!}09a!H>s4$Fz`G`3lYouN{4wCLfcTFAo78#%$+ZAp)d3kQt~wyFHsFAOt;(|o zAXC7g8h~wTkAMkv0L5wocBuX}0g-h9X9et10kr^k1dOc(*rQGfm|YJLRvWNSjj9c( zQy*|szyTFf2k=6`%sPNW>Z*X{4FEOk0)9}_>H=Cd1UwUPM8(ttcr*emsRuZwo(k9^ zpm}}336)+SkkA-lZ2&l>VjBRwn*cTm_(_=?0uBp^ZwNT6)(c3E1$Z?A{G#F-0Ro!> z4hT4>JR1Wt1q^BoxS;k3nD7apSQEe{)xQZKvKip4fGa8>7H~(v*jT_-bxOeO=76xK zfa_{hQ$U>-fSUqts*q0rF9gi|1aMnj6|lS|pk_0`T{W#4pj9itGXeKiOml!oYrvA` zfQRa-fGq-=w*Wj==`8>WZ2;DmfTt?9CBVBaV3UB~mAMt*uz>hhfM;sGfaG=nuhxJ+ zRa|R8V0*v;0WXzj8$hOjL2Ur9)gA#8Isl5b1^li0w*^FY1e_J{Rt2;J+z~LgoqK(Y z*``jnb8n$$cY=hqhq&3)==P90agdurtTq+e0rEn~%nlH{OH>KNF@L0DI#HEJSHO}^fNbiifGq-=#{qJv^f*95Jiyu+;HhFe1H8KdHVMeB%v}J7 z1;lp&c&YUQlDh-Ex&rd4xUPV}1i%3S`ITopAXC7gc!00kBVa-zpjbD6zv|x&5ZME8 zRzN`&&>e6`z}W790Ch^h?4E$I1V9lrDgjWZ7vQFVVk#sN@It`ML_i7NKmb_Y8&IyfYU))Pr@2%ur?6SL~o2r)L-b7+l)(h@U z)%n>C z6>!77ZCar&fvQ@DyL(3P754}37M}yEzzz2eAGzLOzvG5Eqwi4nnr123n#r3TvZ&Z( z_k!YD*5Au$bjv-+Vp;OL`t*)_MN5G{#(#guJ>&a3*7`viwDO)gOK^ZZvgUp75h_PM zTV=CJ)y`*Y*iarvi{$TMvc+)ymzT408{j2?tvU|32+oJ$s-ffL0lxgbQ?^>_ zYCc=;%C&X4{Oz0%LpZlOFsVkK+xr>F)Ib*@f8d>@{}9zkg?QU?r!>|@2yI6>QhO84 zb$LC^ghKo9N9E% z3zUNMpi$BRwho%f5PhauoMtja<)rg$T{V*-3f4^SPi2VZPm3Wi85g-LlupWcg*xojw=BBn!hpQn)+*2kn~Otrc9Eg z6b%dEoRlNXHUK6S2Ow{l{Ed2$jw?($zm6NMSrM3zWDC9I85qD zDb9ZdH5{p730NV`Tn!9_1!$H^oD5+}lub%z8>RD>BAr9CF*>d^ET?9lX;ud2>E`^4 zCGVQhuq?0;fijBYGz%hKRA(Nq8SmUNmDX$mOpa?Xs;t>$9ml(kOm#Gy0^^^&=g5?a zWGYR!a{Q$y<6k zYW9te7MJy!)g@gC zCd=vu&FYb!&QQuavQe}8q)W;I$o3sfM!JFYzYtIsm(4n`A?d=JWoXt2Rz$NcI&)*# zC7F3_-|INu1ZrBK7pZNU#lpI2wp}ycl4=~G}uo>#B+0Qz2 zb6Aot@E6Tmz^al#%E^Su^l6EzNg-?(bX+UaFBx)K5ii1=Z`*2((}DtJ^}D14+mPm6 zyUy*hX1ux3G)J#+S71^}JG4NvYdWqyY@ue?HRH`_rgY72Xx35Y-(n4KYS@WDX`w8g zw=|0*y;YV$w%ai2RA=)?DW;1CtRPi`u1V7^DNo0kddU zPP6f_&t!brf;F2!x~XO%FlpdK6h}g?dKGls=cE%f3)5^8tcPS^O9=-`eUniy9T=?x zr@&-Z%O$gtW?zurC(UQ8tl5{O_iI)~v#GG!TnyxjSyi)Xq(6qqR?T23rs+8H{*wr7 z3{c8RLkDS06t=p~JcIOJm|PueXf~7dN92_&VNK0uk(QNBu7tHTQ>1(Ab*8pvvth&J z9ec9X0ZPSlP+zWg)v)z6n@hS4qwq1dfzJFD=`6(6z&3=*XwE}2S~amvbliN+YGY$H zTcBATY||7C7vdb@0wdcenk^!opjk7`(qYLg)pAj3uGwPJvV6<+qlIQ)lm3_QVZ$Lr7ZrD$C;6~Erbf6q2Y4vv~ShG=@ZGy>h?|~ho z^KRCxC-yVVGBlIrUKTZ}cZ@ZX~CrY|}K`Lt2(& z*`{M9?_MOgX|m1Gar;Qit(I&vHQP^mGc6d4on@nb$$S9GOEB4H6DWuKAo7Qe!_L#} z5a}t>Dz-&1NghUDXqFC>@_s;HYWB5``w^C=nOwLec|`i3KxzWc5)F@%{+bqkj$I0q zQ|B1!2b+Z5q2rE|9-`S!%}&7NFv)7VOS6-t56~)EC3kCfinN@v(`EekXn2~m-0{e^ z7bZRV3CX*3W!tag&XE2ts}nh|n9`H8Xn|%2b>5$0BdH`EdsyfFg|w^zi?K2%ocDj3 zIBkHkK>Vl!&yn85IlBaVM6>gxLx@|7J*wFS($|Pvi9M#-Mbg*x`F>opOR&P4ozU#E z%)dYlPilCDz?1qEJEhsLu+y+rVqr2eS5Y_*Vk(TXO%^s1KJDEM$tC~F~?WyCgY4!wmOwX;U$*X3t13k=e+02PS=bjt;>N zV`YS7_n+u5&K$NB(|rwJh^vR|fo3m3R?Qx2_6p|E?2%@#Vfi$Btl3{Mndx$>J<;rM z(syXIoM}&;jPZYiBQGFi`wb|qev9PAf^2{2%+hputst47X=aAWYX#Y!Yi5DDJ{|F= zW^OR~2#1`eFEn$9wMn6ca!$U~&Cc*SVRNP23Pm-JITg1I!y2Rr8>=O0^cp!CEW_%Wj(qu~XkY*T*H zA@ojqE|23dCLjLefwf6`B#+~S`SRbln#tohVSfDgo37YbGk@3>>W~Kb$!jtREWm$j zkQD5%+2IIdOsh3hwaVHSw3c^q7eED3ArycLqaw%)Ip02xwIF$`qI?=86^%lp(HQg@ z8jHrE@n`~?sP;tI3aWNNw#ngb@!O&Hr~~SVIwAR}NeJPK^P(CKKJRZ)TEu%m= zTc{;m-sRm8HA3>%@gP(V$XG-6ZJy9(JHhW$%po)qcqe4wM4&LOc`yXZ0Fok0 zQ47=(wL+~?8&nt7NB21A?<4tyhTPK0Lo4~@k9>Tn4}2!#v!kY-_(RbkB+GXJY(X@i z9xOoesl2sl9a@hzWHmK1Z6qQ0f1A)|l!3OOC1^I9gXW^I&^$CB$-Uu1v>1JjTA|jc zO@_IO?S#c4pNr^L{UDF*$%Z=#bRtf zS>^L%9n{}3ww77KNk$;|tg6k&wiYGjnXf$Jy@&22d9*8!a^)kVHIO{Qt%9nl10UNS zXOTw-@@bPY+11YKw!F2xNoPUwYF}R6Co_OU(QvBhi@Ku(BrnwE@uIvqmm6`rwvx_f z$;e)Vb;?{%#niIp3zCoJNUT50>-mhHGX+hBI?p`CIy zU#?>7*mhav1CA?{S6!RR(yy7ZWP5)hOLp;?_FUMqg4~fA$>Y8GC;&bWI}W8H`Lj)4 zG#ELM{7tDh>Xnhdo^4~f%JR3Pz8`YZ8I(~7btfHt;MXDabB)kEFL`f#t*cA|KR^{k7$4M0y`t<@J}JmfWAovoraFVIvfcqEI-hhysx8 zFM11c_h!`$|8AACwU~V zR^+?r) zHAD?ieR3XV-P8cdfAyQZyB!x@*83lE~c1Cfin<_cd zR^HZ=4U{%-J**d7Ht!!DN8qo0iNal?^HsSB!rbXxqWxCXl zOfmoik-V6YXW`@fO8-&DGk+AA9pOGAcQqeFp6eXiJ)c6S+PFjXu zX8xzx5y%xMvwoz?Hr(dxKbqty^e;~U3CWi-mfi9MJtgs_;;){dJXywtwt+QI=W4HQ5^V%q!%E0aV3pgM7jZumPxUl^m1!; zlW7|XSK(VoXCSF$6IzGXBB?|wScRmLrDzHI2JvRL6y9;Ln53(nUz7e8Nii-aX&F$L zFGWapsamR$0sapAEp{Vz16q$ZqkFLOwE26|!L!R-9>k- z>P?Dmm>Q94E1I$kuoLY-KOkw1YsBQWkc_Cb~d&W6SNZm^%aqg;XGHd9_Gc$51cyAP4O z&pOS8v-bRrBdJ*)DSA?~>suXjnyXX}4hjycU~;{4>aUl3zw0zK&sK|>vO|J`x%r-J ze6Qqw{mqXSGxY|As42PZ{wn8QDp;&a@3ogVuTmZN+8e6E+ihL}5t7sO4bV46K3e(P zoJuEXGG$7k&*rI5_u0LDUEiAA=;FGvE6)C0lZc3*3PE8^1hsyjJ-@kxI)d?aeb@7b zO0WBG2`~MZQBsAVP*bdWOMsv2TdViad0GF@j^j=eKpTxls0#b-p}wx~v%WR#wMX3* zW4aI#7Q`s?tW}NLPgSYvD=`z*ru}rrOWhUIL-`+|e%Dt@PZ>0#_k*N~k1S^DX6zYC z6-$6+#v--zpxxWDVv*`_7`tncT66$=c9B|z@9X+*>J!aP3;*!E3Lg!c)v$CmHs+gu3N0D)Kq)#x~03}3No7K^8T?PSJ(gb-v6fHe;zkiGyeBR z*ZhxT_`f-LzW@CY>Hd{ar;cziK34HR+8dgis*OL|OBab>W}FWHJh^k4hqFgcYqK&- zww%frbjtg^N)RTEvJ}4|KC?vG1YAgY+Zx+wLc3i}*C&N6+O(@yV*-Q4alot$#cLJjZ(XP3C#u6t1~z?N47&UN` z_cW`dUUn}x&U#g7yUj-x%EIEeraH)`r7()3 zxoXNATf7QBV{=#2v)X-B&bPL_lv!TA%xZ6}zLA2bzqNV!J6F#17byK!@TW6O^zS>Eoes_n4(s;^Eld-tllr#LP- zGE{-nEQlpDROD%n>z#S37k-b98OGNf`*;=e9986#qj}5?A-Sj~DL$^tKpHajcIM^$ zQ}@q!zo#b=(vaca(XSH6H|zF(Pco-K4)(mfFvz|A!z$r!6Q_IZB)?pmxa@3DKUYd_m(76~;jaQ`yed1l<4tAc*EH+Xk_ z&RF}ieW95z)mKe2?V*0IZ@qsoFmPDZq+$*A@#IMR?@|jgIh~8|GESmp6CcJGj|;3# zM3`|BmEWaKXWGBBWb9HC&ePX6p+pV6Qv#0vGzQe!S+J&de z_tAMNJ^KZF zH$T@Goe#;Zb1Nou(o2guQf`h|csA}=Q!g;_4(^|InJ&4$?LOt&s6TH#&+hd;@X3C4 z`2sWZ^?sG>BGz$0og|06WxLZwa_TSQPd$)-!F~Hu&%y6=hViEED@0Z~pw?WpceB(v zpz>a_&-HVCgZ{E->x#Bra^RQuIdr4^T;H`newgiG?dDsHzK<}P8~)!n*Y)-NRmNQZ zv8;K~p!Zp)9#oB_;YNqN{oefmfZN2+iViB#htZQ;I~kjU>Wiy%&GnN4H@~{oKCEck z#P?Bcc(t9oio9CH}_9R)AeHuS@WOiU2o&WTLiLpN|F9Q zsD8h`9|X%kW^|2>dh)B?=b!iK_F7!6G7g2s7_3l>{}HwKs=a}w)De~Q8a0F;QKhbN z)Q=of)30$_xxS14^_znOe)%CTmvgwC*T5Uc)vx3TcYS+*@f;gVm6%;>fHQ&>nHOd! zjGK#59ikGS)g85%J>@x6JOc1Np@OcH*Y%SC*V@-?ReAUpK9=G~P{;=uNiE#bWL*7m!+s@zi zYyx}a(iz1A)04{YCM|RQHpI*%pI%QougOh>T=ck)*mqJjAtK!MYZ3!a=h$=nyJy>U z1f{!vZ{p;dZQBESewx4@Sw0y}+bOj`^16PZV(X$FFIQE(SeOV|*ur^ndde8H?n7=} zdi(ROH}6ZWcuGBxmbrfQVshe<0n?h5Y^@_0)y}6>p<9&h`kjoQw-ngB{L!qO?@M?6 zl7@18`fYkYcUe&N!anbm>LYnwKfY0`Pmw(Z4vm?wOXo$T>*qO2Juc~Y(k&rf=j9IW zr&DS>dHq~J>|t5b?fUpJp*Ng)L*-~%POB$Uy6dMvY%4b1nzz5ySX~CQDd4p6a|vMw zGu>MB{B(q_m(oK|t17q2TZ0H+W>Z0rSw~+LI#EDJFlMeFAnDj4&#-C!W4EwJu94*J zdsiS2;)I4B%+aIIVU|>8>9+dA|EdlYZ`=b%~HOkka>1Z%*p% zdTHM_Q*@4T&OOex#_MO5{m%Qf=6`*qPy_GSE4Z#muHWMLy1=;og$A54<^b2ODAS{B z>N4f}xqfV;|F{x!4w-)4LCtakg_JjCxuJ61Hs2lf;5TfSJG1VyJNB+> zB-a0)ns=Y3xPJBG`RPtYzL?0nx@bxiuh>IORqv^j64971WtCyN@@#oQM|SV;T@k@1 zU6l%c%B^qs1G|r(>&H5}RM?zc@kC2GF)2;P^ut&_2c;H0u+OywJW!P$Qiba$IOZQH zzO2;5qc`7YYyLp>Bf`}yRX7XFd%p*2r@-M4ROUm9!5{dDL3?;mEq}yd>0;kyYWJ9? zxqc1j+u#3O9DMdM&uEk8qh-Ola57 zaui+Hc30CKx13KVqJl!%RqBZv!O;7;enDix7cYnY7`$8VtM!=bD#BgAC9?Iq+r4t^ ze)I1+TK7b~kpt^$ri{AF@pJv?$kBb*(r+ADb%AWW z43RZ+{!^9ul=Hy#GbLa5%X4V(_(@#Woi`1fDXt$f32*-GiM3br$xUGeW&nAQJypla z`>qz(FO!V_u~hWlH=`qn)K_Od(B{W1^K<>CNxxY+?qu!t*-9d~FvuAj_=jrp8xwEf zA8NsG_EJTyd=ad?xOM&dNowbe`t|H9KXvACuJ*2(>*{cU-`{uGIT1c;W#zAmY_lC6 z8AE=z?{TxV+OI19X%9*{aKxCjhd3z>mX;YXa~!_BcB>p)tXrFj7dNEg=fi(? z|K7@aVWYkO>74f~ypjMf0*>bYef+LBrdo#`MpLVpvW$0oVb5@T;V~>t9w%m`PIAn* z@$#?0bVsaOFxp{Ph0+}Ev!*+&YTI;2WmWWyqmb&i-jP-Px!#eRXMmAuj=`3Y;Ec6t zjuvJ$>Kl*3s)@~E&4`=nIGS%(w8P6BsiuA8D57lNdgN2Fd)eP{vxkRz=;e_^6`SNJ ztOB=q`0@JI+}9DH%DwR5qn~b$+?J3a6|5XP@b4?u^Tz1EVYc Ef9$I}<^TWy delta 26629 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 diff --git a/package.json b/package.json index 9016cbf..fa94ade 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "typescript": "^5.0.0" }, "dependencies": { - "@matterlabs/docs-nuxt-template": "2.8.5", + "@matterlabs/docs-nuxt-template": "2.9.1", "@iconify-json/heroicons": "^1.2.0", "@iconify-json/simple-icons": "^1.2.1", "@iconify-json/vscode-icons": "^1.2.0", From 89db362151ac42cc2fa341d124842c8b8a4d1a50 Mon Sep 17 00:00:00 2001 From: Dan Forbes Date: Thu, 19 Sep 2024 08:15:43 -0700 Subject: [PATCH 3/3] feat(web3js-plugin): existing-contract (#100) Add docs for instantiating and interacting with an existing smart contract. Co-authored-by: Sabrina --- content/10.js/01.web3js/07.contracts.md | 111 +++++++++++++++++++++++- 1 file changed, 108 insertions(+), 3 deletions(-) diff --git a/content/10.js/01.web3js/07.contracts.md b/content/10.js/01.web3js/07.contracts.md index 286c3f9..e36a8cc 100644 --- a/content/10.js/01.web3js/07.contracts.md +++ b/content/10.js/01.web3js/07.contracts.md @@ -48,24 +48,25 @@ async function main() { // replace with actual values const contractAbi: ContractAbi = []; - const constractByteCode: Bytes = ""; + const contractByteCode: Bytes = ""; // create a ContractFactory that uses the default create deployment type const contractFactory: ContractFactory = new ContractFactory( contractAbi, - constractByteCode, + contractByteCode, wallet, ); // or specify the deployment type // const contractFactory: ContractFactory = new ContractFactory( // contractAbi, - // constractByteCode, + // contractByteCode, // wallet, // "createAccount", // ); const contract: Contract = await contractFactory.deploy(); + console.log("Contract address:", contract.options.address); console.log("Contract methods:", contract.methods); } @@ -114,3 +115,107 @@ const returnValue = await contract.methods .contractMethod(/* method parameters, if any */) .call(); ``` + +## Interact with an existing smart contract + +The example above demonstrates interacting with a new smart contract that was deployed with a `ContractFactory`. The +following examples demonstrate instantiating and interacting with an existing smart contract. + +To instantiate an existing smart contract from a server-side environment (e.g. Node.js), use a `ZKsyncWallet` and its +`provider` property to construct a new `Contract` object as demonstrated in the following code sample: + +```ts +import { Contract, ContractAbi, Web3 } from "web3"; +import { + types, + Web3ZKsyncL2, + ZKsyncPlugin, + ZKsyncWallet, +} from "web3-plugin-zksync"; + +async function main() { + const web3: Web3 = new Web3(/* optional L1 provider */); + web3.registerPlugin( + new ZKsyncPlugin( + Web3ZKsyncL2.initWithDefaultProvider(types.Network.Sepolia), + ), + ); + const zksync: ZKsyncPlugin = web3.ZKsync; + + const PRIVATE_KEY: string = ""; + const wallet: ZKsyncWallet = new zksync.Wallet(PRIVATE_KEY); + + // replace with actual values + const contractAbi: ContractAbi = []; + const contractAddress: string = ""; + + // use the wallet and its provider to instantiate the contract + const contract: Contract = new wallet.provider!.eth.Contract( + contractAbi, + contractAddress, + ); + + const returnValue = await contract.methods + .contractMethod(/* method parameters, if any */) + .call(); +} + +main() + .then(() => console.log("✅ Script executed successfully")) + .catch((error) => console.error(`❌ Error executing script: ${error}`)); +``` + +The following React component demonstrates instantiating and interacting with an existing smart contract using an +injected provider (e.g. MetaMask): + +```ts +import { useEffect, useState } from "react"; + +import { Contract, ContractAbi } from "web3"; +import { ZKsyncPlugin } from "web3-plugin-zksync"; + +function App() { + const [zksync, setZKsync] = useState(null); + useEffect(() => { + if (window.ethereum) { + setZKsync(new ZKsyncPlugin(window.ethereum)); + } else { + console.error("No injected providers"); + } + }, []); + + useEffect(() => { + if (!zksync) { + return; + } + + // replace with actual values + const contractAbi: ContractAbi = []; + const contractAddress: string = ""; + + // use the plugin and its provider to instantiate the contract + const contract: Contract = new zksync.L2.eth.Contract( + contractAbi, + contractAddress, + ); + + const callContract = async () => { + // use an injected account to interact with the smart contract + const allAccounts = await zksync.L2.eth.requestAccounts(); + // send a transaction that updates the state of the smart contract + const transactionReceipt = await contract.methods + .contractMethod(/* method parameters, if any */) + .send({ from: allAccounts[0] }); + // call a smart contract to inspect its state + const returnValue = await contract.methods + .contractMethod(/* method parameters, if any */) + .call(); + }; + + callContract(); + }, [zksync]); + return
; +} + +export default App; +```