From 8203c58fa69862aca7519376050042bfea0c7a56 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Mon, 16 Sep 2024 19:55:42 +0200 Subject: [PATCH 01/15] add new 7579 tutorial --- assets/7579-tutorial-2.png | Bin 134313 -> 0 bytes assets/7579-tutorial-3.png | Bin 209738 -> 0 bytes assets/7579-tutorial.png | Bin 187959 -> 0 bytes .../erc-7579/tutorials/7579-tutorial.mdx | 429 +++++++++++++----- 4 files changed, 310 insertions(+), 119 deletions(-) delete mode 100644 assets/7579-tutorial-2.png delete mode 100644 assets/7579-tutorial-3.png delete mode 100644 assets/7579-tutorial.png diff --git a/assets/7579-tutorial-2.png b/assets/7579-tutorial-2.png deleted file mode 100644 index 9ee441a3e8ffaf35b750f3e09e2e28919a9533aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 134313 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
OK3> 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%0AQ-BBIY=|k=GqyT&EuL`I|a;!la&j&XMAyCAf4-u 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

+^P+ z_ud%;a6I)Se7U4hW%g;}tR^l*OBem1k&hh{yrIOqOe`kk{Sg4W08p6PhS`$l_&0fm z^e2+CT%-E1hyyQ;w_LLQy&bY!RMig(Vi7F5k$zi*p$5d*U7tP{g(aXtwJECV2uX4R zq)r;vWhA-R4HuRJrxdGHe-3_BPFV%&;lhG>JP2xIs8ZGbi1mnf*7ESBafB;0*|c`h zlO;9dGYRTx_G@a`Ku=+VUv*!`^TgAoJ+oT|I*S@V#lFn5dQ@tIjgC3yd^pdSdmd`G zi)yNRtXLulO5YGZ5$|_I8ysa)udb^5c8_uHG^6?Tf(CTljcXWj9s7Xsug#OrI|3Kp z)xX%LCNy(b`xt18p1sml5Htr$VdFPHhFR-6R2o)X?l!)`$)6a1pK~DY-tR5CiR(T; zA}z<;iqwr$VQFf1{iP@Rma*$A=3lqpOlmE}v0r1HWo;YP)zn@2wqxa}1BL98n9&|< zMr}bDlhkd?rfxJ!&yVlvst%k!rS7}oSRGT;bGEH(?DQdP9{~9?uSF~y&Vpj;7&MME zbtNmY#q0V@N6XA9ziGpkn94L3CELn|uuhE3fC!p^UO%o}5lEbOu{AraT0dq&95zMQ zoK~lUbd|DM%(|y6=Iun?s2DhGxA27x5xy4?+#|9_Z;o&-Vuhdhn*gG1#i;pKD~{u8 zt=ZmXu^8T92$Ev1Gz^ZehoJz-d8)n;08&n;%x&dRL_!@+A{$rEQjbU*v}P+VolEnN z)o^7`HH070_@Il*GePoSBB|5yh$C;_Qdkbt8Y7oM0-#X0Le8O^o+mZ`wjl+y-XKeB zQ{nV@A}~1K_MYY+#zV*SEz6>7Kz`a_bPn{6yzcYvMtNA4;8Vf2>`G_R8}p2JQ_Y!( z4k)!iTxQCQyIgLM)$QSmv|^jg2#d$J;`1)oP2NN6*Kyt$#DQ>_yj2I0c!H!dqtkOD zzPJefRdWRm#e^*@G0{F1EOD4~Nye;_H+?{HE~G&JptD@uZ~3z#)3BRjb;GYWw3rvd zX*iHu>z!ptlNJ57wt}vF6|ngwv!lxu=a>r@=rXkK>HXo9aT-<4#6GO*ff)bb`y#Kco5vm8WF(YN$BscIZ0lr(v!ds(Gl zqCfzm#Cd$iNv^2JOBS{j2T`XtUL%RHI~VN(srIz^Ga|Bu8M4K5t*I^#OHYpvePq!>Sss?rLlri>x_~5S z5p39Xh*AWf@z(hH>@NQ$LzYyW+Xp^p;+bXEX`dQpmw@2p*C#o2hJhv8 zroD;^S6()``(x))MP4su#D}F!+c$b0>RjAMT+mXsv8!;kvKJ2EOCf$g|Gaa&vnt2L zT-Z4>TcO%BdfK}p09N_0B*SmC6Uo<^Rs(+bf#>m_t|W*H~l4}EIJ}*l*Bw|-nYjnImRBsb-`?FQ|ik|L~p;m4AEgAi$mthmmqo@kY_2Z!4ML3+B zcu#TCPsy;K8UFyE$`EYyAc6>!a}PHDQ?^hPX7+uxzp(KDbTjSX08?JU0IMP@n9eOSHq#}_(?sz6x~?D^X-GpvliZV<@HYd zCDg>eNxP_lk*sETZ3!hmm3MT;^H7?b0xR9RyzYEK)$dMG6ZJf%y6j2K($|LY zd~NmAlT5QMKAD?!5LT2;Cd=F117-J$lL;JxqGW;-W}NOI3rpo9 zv;7kNd|%FM@r)|irk=OTur|#IJ0~GKIE+5qJo<=M1?5@2D80?Sf%n!0yKTKXypOgN zqr8Ddj>q(Tg)L}OsT~2hoeABO+O?i_$qp%c@zTNKe4EWOj)la;A0~~&OD{nQ*otQ_ zZBmmi5-eLjU0~JCJ|MgV^|1;)wv>{X$3~lZOh;$x>uKMJM?aCMXZUcyUzS=u;uC-{ zHANhJ){%UlWo@)b0^?4w2bB({O&sz6f*M%mNjZ!G;Q7Z5pmiWSpXJJ!XWg79(?7Od zjI#yQyed?3j63wz)stl&8+1pv3i?+}Smq>aytKj*fFg`ZV#avqvj*sJv8CP5Gp=07 zYcsA>Z&|VIDL~-S)#6r00nXE){i+CYuQ3E45MO&+)++3fFubdGy9ruJw*RO{mKDgD zVmDmCVv}g8q->M8v44W~hva?PKJ0KY%e@#p$)u;fkYi zwNWXuag6ghzUO;tV%d{hq@v+4}#?CDVGJ$vx0L8{j+af`=&2Lb-6AS%P)U@U&T z-eOe7mL`X6_U*{;W>0GgOekn&BBWe~VNHMxMpwzI!g?uJk38YXe>3F zNA~Jb+qURjRVYf@d<7QV3mw3qILpuOC568yTMlBO_Sj$#ya9KD=OHa|&mkN=9#`w) z{37Q#TBM|7SU$MJ-g1vm(n7@}P-&9T?~(~_*1h++6aqL?D-UXk(_tF3X1F0MN&=yw z-m8#$Hn91iakU&F&U$%n;$T`O456d1sAl^G!oo!5`E=A|hp%tQL$!K=p0pigTYz#O zF1V*z|9e(Rwn2Gf-1~x?ZDR8)G7AA%CWy4Hn&0F6umC<9B{R~W=5NN>%2|(*i-O!~ zd-P#WDdwRaeAkivJMP&?-aMM;j7Drq)xJVb+Z_me>cnYu(XI(#Tuq|*q_}k*A|*6B z>F%QP&-oAJ-?c9|BM@!X5rd;!*B|JuzndljdsAkcI7?X=ig0bYTWVH!JS}&Bew4`k zasMXf)ej66`m59GC_w=^@sXR-LKpkq?Cz2mYNJ2G#>_s(!qS|O8N6dkq;<=_=q07# z>7tUW1?F4$4;?ysC|GzNjsj5do+L2!$2Ll1MPgGV1ZuNZx6{Q@1vw0-buF!RZIJk# zQM;Y6+e4HNJxkxCclPT?=96Q;j|gJgK#uU8A1mL%5ouYmogi)h5&PC?i$BP{LF5+I+VClo?=49Ng;OW#JzqJKazjJK;L1&mt>6V_Bv~y z2>H=j2{IlIVJ~tdH6$E9>en^w1OQw=QoD1NuY+j!tIO7vSzy1@wCtujC*2aBv-N_U zZRe+}Dn}1v0FG!g0Q+kB7~28^bZb*7pd#THMzgYWC(r-h4FP5wzuXbRkMB1|=!jfn zA4~$-1J{!Bq%1OffvqLYUa7MzKi!r(7mbK&>9WAKboY68kZk~N#Hxq{uwos`c2tHZ zTPkMV*SW^Desi{5C$HD2w`L)^Wnxoo@sG3W z0T-zt0EA-7@u^}<7sibz(`_ln;ZeTMO+{w=bl{&&sr6)be%;d64ut|9$dE zaJRI(Cxw_;L`PX0#su1{Ns=CH?Fs224(jFl3D;uqqnbjTeHvT=rq$Q{n_^FFA6U+u3#*#c35<1xy$|_RKz%tZW~9C{E3mA!B45>&zXA zbu_T}3Qb13()wI%;}u!A>$)3SLf`i@%q}Oxyo?GPBk|j4s`<~7!3f8w1BZaC(G;2r z0FT6E6+ublRkTJ6eVv|-E=}4}5ux-+R@@4|xz+kii`|6y0whJ0L!7Km7Z=PMJ=6y*WzKc}q$`h>(1uOJeI zNwvVSe;-I&f&j2N)q>>pB>^O(E=5jEsy|M+a&G@YXhx$8M1ho7dmBfIt*K+S#9}*3fTWkm-K-rxNwC=d0X#U$ifL~8;h{by;h}<7LcgHEl);p|LWFQiye4s<2YA8fB2u?&%V!=j1&raykVKRKm)j&K`kU!PpGD z{s!#xU@A}fz$RNaCbo`vDm>ZIu#TyKgL!uA1(1ePol^q3P0TQbaU5@(i5L6FMi`u@ z+-sEkbDcUyrK7gAO>H%c4@y&kOVNt(^5dDA%w0AGQA~u4%pgw*+c?Hh$gw}vp-5+6 zWE(6}L?D{_dRcN5nE*2FH@imFx+f*u+3ojrg{%vn*%BQP-1q2R150wSFN$mH(BH^<0Q!aJP zp`eZ1 zuL>zXygkCQ`%2pxr_s~w2X&94?dF;=Ghmi7F`PjPkfsU1WPQhw>|xVAc6aOb*5|nB zTx|Co6^zk-nmUl1O(VRR9V!MLKQ4f~pp3a(0tnwW8*u8xt87E?RmEu)uoU?ZY!otm z=3*3{%+Rod>j$Cs?&V~W{XN!0GU5JiU#pbs?^XG8J3U1HFdjABJ^rK_#9$lALy zHobRL=N_X&cGjsr4?Va}O)UAN7|~lfs=m;VKK3O0b&P8AMVnlLE%(ga%)v7@pU>It zLZIPMaOc=O)!@(L8TwUqDodV;0tk)g-y*3ooG}FjKp~CX1w};gbdy`2CESnoULR&O^zLjm$$c z?(v(&b3HN*-2k}qf-bvH1i>qnC3_71P_>ig6-J?IN`V>~4%%l*%E15rgI?<80YJ-i z9io29<^g%a3D?IQ5FHmFr2;<24Ov^ju5}CilY1~v8srkGVO0<}$S7cMaZ4n!+_&SF zy{FFNRXQE5z6`LV0#gk=>?b}x?dQ=2{0aiy8OFA_hJ=N-3{}t8K1youA{_Mcksa7L zT}x-AOce_kCpWlbbgaJtDx#Z}no@u^k!uSm$814-`2>+z=mF}mvrZ5G#~e}`n}>~t zQNMe)=mT(?oN&=nb)cV>b+Ts$G$)V_ctmEX_iW<%q$8}GB}U?_rN<>*QToPpGJX3f za3TfX2y$VSUWIQ}wkgW0_75MHcfjqro*QbJ)wg(Qho7kj;7suHo>zv%60J_>=b9_X za4BopE&NRYw8L!zTwuYE*+mm2y}x&D|BslqI8F%XYeD=Rt~n!6qmwE)**FGEE#5b6 z&B~m<@pNC`Gr%QdC3E~8a^Wpc0+YD1+*kxilKP#)l}OJ5*36QS_e7zHJ zb#r3l~K~=}V(k2)7yMw2hjD{%AhW}U7r~%z% zl}wpF_O)kd5VEYVz?;0i;svC83J_ZfgZU2Zg181BfYy;UuE8~~!TrIdyNi_DJ^e6IZHNStmqn`l+uKn97vw*Ap##gde%w*S`^1KKoS%FY%l!uLgX1>> zG-b^zC~pPw0i=!EpmR#_P!A|eXn}&bbpLtOAMBi&oM*f*CciuY$Xu;OSlZaVPxL8* zLh=172xK&>XHwd7MykdW81xh_0D#$=0M6dH54$1eQT6<-Q2WKMJKBP%E0ihMKtHFh zC?RmOxh)opgFLQ=O5>>?K7Ozg-1-N(b2mtPbQn(m4h{l!@G$G--yDKmm36_EhXHFQ zrtc^QB6;Kkm$qML1|rU9n;=>Mh+A>5r=TqeJo`kxfjQTeij1#My@|JW4BX$8x?|ul zAa_-kJfp?0%Is=(!2_zVskspaHSp3Mzg>sU2#`C(w(xcpbGwNA!B{B^p2Kc;7r56h zKwTU5Exis(z5;>ef&+nTqcUJ&X6XQk2Xy0rA)sAD4=s&#kY86)7Y=~Zm1M++xwcYurdZgO!8H9rO+F!vqU=Z6CH zZV(3Fkq2P#l}k85ePSJ0iuJuLnD3th8nK`Z{i(ctqwWyB*u9_(JLeD^sAW_u#o$7| zy^I7Ph32?el^Sba2H((9G-~g<;ptA%1KZU=<@Y#%@V1D~9^{19`p|Vik|YO_D}npk z>zaXv3+SB=fI5(%y*)@Tn*tC0U8zv^ZRqpOldQqJUkyDkD*NIBMa`R?qz0awB{EF` z1h;>uD0-vcfg*QZsN?SaPUorZpt_TQt6&e)N;zhoa0q>@=p5iW?mU&!aN_Efp~E^C z{-7}x07L^_>u+QnRJX1H{-;-1|Gn>8FhBj~)t_7dRoUF%ZalX{Gc6#I%WaPKeVjpe zv7P}M>vv`V%BMq|K2vX!>SaLl#%>=l(z-Y4`djvsrKy(QlAvj*PtxNJ%Y_4HA{12U z!%>NpCS}*-BJSs)S9(?Toly=TW3TveX~|80YrGD{Iy;3w?K%S+4_b&>7yKDoeQHM? zp!|eZzeN4HJc=|`_dFSrmN?J1wyYRVWx)GbrlWp_AysN76$3JNEKgmVPXjg>czE~; z>pdGhzcd+)KP^s^(Fju4PH8yyuzE|B0DtB88MMK{04K^ZtX0ebTIdf0*~?sH`-2|e zPphgmjoR=s)(B9>N}M6x#*QivCQ3Mh>Y+sB8w}(`C5l^)>un`F0uozLQjE;&6w63z zNdi3$^^-2RaGN2DA-DiaW#b^)9LPfJJhUFs*u5K<3@*NLgBZD=bfM^4Hef80$5bwkB_|G2IhtG7wX^k=eG4!{AduOC- z&qr<+YF5y$JATxTdIiAA&D*7rU@mq5TK`vf!1kwpYs7d0#|con);@^d_FXZKss}5H z_8Ggf`P{UC41(0|Z*3B;5RLvHR;mKx_RZ;ap#QOp|Ml^A-GQvwzy1NJak_k^CjCHO=`;7C(q-O>=$_$zRf1)11F#@q?JwH0KAA z{3We5&G}0fKZxnSr8(bLy2^Mum0u|B7}&U=e#(^F^hCFl=>7+9L~cu7cHDXP^Ic2! z+t%!-xOwul_UtrZ=iPrba?>eIjm^zm+w`SXSj2^4sG<#0#nul$ieKFy^!slUHtk)^ zL|?n+-{j=LOd8_@9!!e+uPKIj>3ePf4sIq&3Z1MJRvD>wlN#6l`@W z>hr1wbOa`ouL)Mw5QzZ~7$P(A;x;Hv3Ek%szpy8i2POqocrTCC#Y_owmiBLUD*kf2 z8qA785{JNKqCl7ws29)MEwX}yzyN?gqXG`_uCG%i>C-L zwfm7R761M#Py}n=tw8Jb2n}2!1PU-a^CUtKgeyEz7z&g9psMxG6Cpfpa}h!bJJ<>f z6v-j&8xzhqHU)xFUR;2LkxZ~7F#Z~-{pYg&YsJ$cYrEGp;XkTW-z!SrAHnDK)+EqD zUj0Nf^xADuL4#@TdA0(e%%U#kGas%o{rV}`K|o$FI@*+MUKARGqKt9@3OH?|oNI?r zaJldjnAjqvO0PwP!xyHCi1^}>So0TD@e5g^UR}1B+z2>e0t|f`uJqzsV4o*}>khxW zPVN}ik2_aTzu|4=czWW6iRBEx;I4do9s)8Do%`kXzHoG24k!?6E*f~p%i0^df$MPX zb9$vQ12uUqFbI{ZeNqKr3h^q78f>DjuE7uwn%uL>0vy&9wtEr)CaWPWoAhB7=T6Pg zAvGzo>VJD{Ybc-uEjusmaBKm9t1gr;O}V-{I}Vk?B6(5+LD^SA6~LGy;9o_p!Y9iC zc=2U83V`b^B`iyCWDViKnCHtM!uZbj423IaD~zW`-Pe~YNnHSJ5Eq1mHci*ZN@fzx z#|^E?6*Q^r;=%h4$pde5OUhkH zaLg71W6X0%aiTf_@Ambd5n9oE=>!&9bC2-~7>Q~6)EG>uw5zU*5hpy0P*7mdL05(O z`^j0yJSQ-Ex;hkwFYdN<0)v*@m+t0<XQ*eh|uOGRh+7ZBx20@d+d1>HfXjpdQV>iu) z%oU4(u})+y?0!2rH6R;iHyqHlS3_f{&fyw0@?VPUkPlG)=o|RA7Y6Duk)?h_Ct`i< zOl!}XrBs@gNy+sA;f*q@{(QUET!m*&_hhOqt)!WJwM1tqG}wYJYAM%>`3}+;)Cw6* zt+@Pkb_9cz^1Ib;n^Wamw_Hwclk0XZn<_ln69C{iM*z0GHcy`E4j)j^cD*p|{`raK z$%xZqlU!;T`y@9lIv`_8Uj#gt7W1v*zrp-&6^uNP?>Ch)eP#WCG0s(lq4jwq=}?eabbd(A>4c^ZcviB4_hTU=Hdo zZJGx{HSbC^s+jtOcecl(Mn6eM^fcRIEaeJ#7eVjK^DW*?!+symTY$o|FZNA8N88Aw zL;8EQ4baS9kLDP2r(8`(A(RFK13GXz4`20E!uNk9f+{~ zxYux@)-;S&cXu;{hAlUHEjWY%gF5S>>19(rJZRUFkyv8}>g(e>jPB~h;#kpzCbEMQ zU?Hr@;1?o9+1-nf6G^&$!Z8tmrj}4+$vk&V^c#|hy|~I|p`ZmYy_-mo+cF8M?zP)= zXcDX|vR}Jl;X6=qhsrng5iUDmr^F#-_G(; zAU7$Kou)*D?0bB};7P5W2Xg8$FjzAp zsEx`!^JU@1mu@e0HGKX1rz>dv*ZjrUW)f6}j!*lQ#*T7~UvmHUh7B`A;0Dn9=cKVZ z@f?XAN?%hLaW|ZL92dEQA=~2*xPQb$p?2UA$)et~f`BG*V?^MDIq_lyEE_((;*gPi zL3Q@yfp&wH86LKTu>`oES4?gv4=y)u+wwA#oU^QS@=8&cY9P*DEz{etW`4Wp8V%IRx(Y2or&^MDR60fV2xs8FFshP)4YRLM*j<0vhu8wbUwB%Cg%V z%R4boKqAQzF%W@mPQ+IcA?;R4HR7xJ;u?p0ml>C;OWXt;N(S$Lw@426-VPLcOuu@! z-F8pjj*El)Z$Tqh$(^U=x>5_nW?s+ltL~-m-b8Hl@)&D+nRrUW&12;m?P10xn+T?W z;?)U}`%O0YCPJACSMN=}G&Eu)>`8S6r^?OS#;%Z}ktVKjr`Fi}esXU=Z_-}#y5#+s zx^!I!i8&jV9bdsqm-bgtWypYlxQRj5!^70}bJ*Gbv z-k`aj`RdTJ%&BX*O0VSjMT?FMnyVDd>Srr5q0gGfpq!VN?D@o~9%i^-`Y?V{^e3l= z@J2_qjnePj_GlJK8pT1UV_7en)>pIaB2BhGy`{w)I4k9uGWS)VekzR*7G*hIjd81L zMX2==4%;;~VW8=7Xr^(X(a|KHBDt;UHmoE5eCMhJ2>i0e8EIy{-R0RDvMm{AZ8qFA z*=Ch|*9He<(hx8Uq#jJRh!vQaj5B$6*X;ccg@GWksoAbh9?6TxYyMdGg14F*FRzG>KA3Qox|9?_gIs~cQ__KWScgsegujEYb|U1oy6l!s zkZ1BzRRyO%3f;e(R1LrPmb&;j$P_1Q-xQ6f_-9a`M~otO-VNwc6?yle=4hfvqNgZ-2VGkl+D{_jE`P4-_b!wTVGLUUHxak6&Eb3 zhs?X8+orPJ;>iL{8|;_p_;-mk7}*-ECaiLCwlq_8kpEn#ln!PuU4R@&;BBxnL)8J7j6yhmBty(OP&`Ks^=OD z>CED6QENl}hVF_!ub%cL*V6Iyk<;>h(OxF`&*atQQEqO>!Uo66zb?w+=mto)xf_DQ z_j0p=i4J(_AV;8|bkv=b}Cm+AVOF?fBcn zm9UvEe{iC;*j}I;E`4y^Q=M^0H3MS&Ad+7%=&y6Qw?xm)?f0}x7^5t^u8@oU1_W0( z!9g5ZQyf?3$1<qrOGDr7%C7R*Djl8((@y);0Ep$yh!G1(#{(;?XJ(jUD;#*h z29@2sYe~zL=e&*U2%xe@O@zHgB^LhHpn`bU zoqpoe)$arEU*mhi_(CbRre7RXvqya!E@NR(%!!(MP1wFvTN4O4*ybLn;rJBi_sL!l z1e|wbHtD1O)QM5kLG&J6P1rnrcXfpu0uKht(HaH&z5Kgln`HzvOC6Y`aw*Hw0>LI| zsu96tSPWL)cP;ZJgIYts&6TS5t!kqukuK5J=r*cZ#ba?@gQ)l<5-v%nLxE0uqisV_ za_p_GJRLRKxdC9~4mL_3BaYFOJ`j3w{gq(s_UVjg_aj@WK8mr!i z6y70+!qI)LBC!l!Dq}DdR!CLr3z_@quNv+Te6u_-PjmjYe#wJo(<|a?QpkwGrGoby zOAbh@NI_hDLB-VZ<|!+`spAFC0gF&my`kkF{!}PYGL&2L2-MVl9yd`QVKiZ4g|bD5 z`{*2UC3@P;dYA>yFUg1aO=DNzU{#q1pap!fwMlLcyQindXsL9ue(8qk=A#W(D%oohp(>2X@W(oq8 za-^{ZD!@ZT6Z`<_bE@UY>_|P>FCN3Ra@1lytkObAsJhjtfJlwv*{dDwPg1sml?*>B zjSyXD$ZW|Xxv3TQ`%aXe#!e}d%k%pM#}GB)l!S;1#a3_1Lby;&eBxL3D+rbY-!dpI@>k_A~sMfBkvCr=?~g5E$BVoLgf0sa9n3Y+k(T&pD! zIKFiY$=rdL2C~bhNz6rgp$+3ovaJGT)Me#UKiNF$tR0o#Z6+(unU_)hBC%q*&xzIm zkNQbqgYqIvmVgk z5LahefqaNcY<`^bTd!?>Y;wsPhWknw?})-1}E=og?z!EvK0A;22y8#YrBa1D1q^bY*oE|gw9a6fBq z?i?>~MJKyxFd%NVZx+yq&C({C;-w;(Hy zB^fuxN!!$U8jRt0xQ91?f?_tACQjVYrTUbRxojEPs||%r*WEvjq~nslOJ3?o&(RTm zBl!S#mvX;xtGb^YSmnFvv?$+3*d=4~I$DnS@PS~dg|kY7~BeOBfg z)6$@6?Q?GP#ezf3Go#hiti*jJnvxnqpSylyx$4A1^>HhZ1e`Z}^2rAzRp~`ObfLRn zdp!-nclu4@1aCcec4l)&G!YCOiHRBWaK6&*%Pv<&GE7s zf)gM^dh7!CZ!r2z*;Yv%1Wi&kar{jL*dH$hwJ*jid%K{UXPJ1AuI=bCMn1J_g-75I zD9iU=KZyeKC1Pe)Xz%S0g-0~IUfh$)bPY0!&qHec>=;i^49;5i=dvoi)Q$8tqz!j( z&HBk<0o*(_zK@}THSup0r>8X71fs7AXA*#;K|_<{noIj69yR27Ms>t zC^z)(zLGrApW;3X4rzjh~KxdF@Qp26ZEkrr7u#8DlOCR2)-3_<&iC^nQg@_7l5!q zBy(PLOaG15)6DLX8jg$2YBoH|8tbmiGlD9K^YGMAl zFkF?*A%6Pi-tlgeB4M}y&T1$)aSRuzx-G*3L^D&^X|qXwsUc ziWf96>1=);y-Y5-GP7ZL=oNl>F_COlV)C=lxV2XOLLh#NRL_|}KBeUCuesEJZqXVz zQu&@3pC1C}vh1Ald(n?*z=3s^a&5HV?(rN*6r3SPTy89!1oOWH(Xv4`>%n6303pD2`=-Ni*X ze|dZBe5>fu@c3GaV;Sj1X5G17!3%UZx~~T-y_}Z;?vXh;bP!^3tWtfVE+=V}l0Xxh z__D_)S=#19G`g{H2p_>mYu$Zo=@OTIgB?680@yGpZB5Ek0S6o#m2(pjO2r>{^y(?O z%snUi>A@kcr!@=+1Vym#Wtu*5-n%jsq1I1Gf4NfVEL|3OaT*NE3`Rq>l;>t$Dkg;L zYR58RxYR*APFKoDHG(wL-#oFCyTq^_JX{Y!D)8&2&Xe0`cy@xby=%~Nk!_*N{=*4OhO{c{;z;MjlRHRGos zsgIEo@RgS(Ysu^?~duv(i(A_C(tL#DV_pyQdxLbdt#PXv2Y{KT`vl zZ=@#mhRs-*k^jC;6-LE94Iie<$X28IxEeQau-&4)Ktcm%lnSM*&rMzC9)pe}soBP! z5zQXAY2K5nvR(yn;IO7Ak)fGS$UuyhuLCkM?zsvVm$s16mEI&XmHUsO%HD@*U;0;V zwQd5U;VPEKSv}eqaJhFYw}dFgtP2@HACX}ou&Bq^k|efVY{kzhfdYr>gecaKIXDmO zX?6{t&9y|7@&{amcUPV*8tnwaRrHVwD9A9VV`GU;j0@(@=OZMMB@2V0cc^N>ov@2* z!W@WDao0mW#4KLA7q`B`xfhJ|w(dXwx<3iOPlTFo5Nc<$i65cq0WW7u! zj_%g%F`DxSCrAuJm3{?z$^P2De1BI^dNsy-gl*_8FP3}VY@ZtLEN+r*Q1*ggr{Q}= z%udZkN_xV#;R58o#Wurf7Q|@<*F7Hc9zLV-_SDy*@?hZgRX*9fL~x>@^KEPJg+kujYQ*bGjS-@Ew`V3qlY3F zFC(!}bWrt@MNV*}N>wE6;k(h-A2#l3Op`Qe9Ad4A;KR4>=7YljI;h5*fL69+kC;gx z0fn(-8LUYju&x<1CY!XDj)jg6bvJ_w>uX zl!%5;LcvyyQC4!IoPCmzH-`}~c10?*GG!-W0U$tA8J6Dw3{hs=V_#=g-bX~*)oE7(c5zZ&L_i~_SK99-ui7DDDN?7uC4)A2s(NA3X$Y2xIjW_Ki5!K<11W~JgP+nmTAQoT$@^*ATnrtIC zV0X#O94zt|fO#f~Z<(49_2aztMSAF4%HsP5@{okljlKE)J4j<-t^{vJ;)})JCQ;$0}!%=X)^u~CLn9YMb+hMMybO=y$RXNW;Fg}lseO>1=6x~+oLJ&y-aJ}m;9<6O zV8!qw{fj+g`-XCKoIw5yT>}LeLUccvoim~yRJ|GDWF=Yp@r!{YD~)zd7C+ft12G@J zAB8HAl!wKodB=A8{`4#~Rg-x&kzH2Ul$E?iaOn7!&y|#9a&!&=scHuhd_bB3^5WKM z3rU;19pR6lIq+RzQMGSMy2d@*CKvc1WI}WpI;K8KYd*AZkn1gcFEL^?T=7|J--AgJ zyG!AG9c+?-raPzp8-MIl+*GmRJ9iSS0aVQ5-QR?4I?24-g-7~)xpl*o=(vZqCal3Z zzq6+JatF!(HeIw_K(2p$a_hVDqjWG|oxh8w04lh*L4vv>%&)!hcYBquN3UhM1-9(o zfhc$lvY++FQIOjNMX>t{CG7~|8^%X>2R;F)OxNmFYy;)6QI2 ztR~-VE1a5#8VZJBddDyyPwdGm65#Cd0u|(0kORLac)^kkl|E+y9naYc1lSuhho1k|C}I?PtUbo$XqXZDo&6G1;{?ypT&Ko zvO!pX8Ca+T5sq@5;LHy725FvZ;FOz!c~hL#F(y`Kb6X4(8@2E_;Prn_6vO*~QNm{z z#}R=?0)T4rfINn`=gR{-mK|?e?MJt3=R}r%<$BCRBL)V#0dpJX=hH5gJp?gh&UgpX zyft%9yfy_+A5>$10KOemTuMD&0<%fJDk*=TTtNgwi@2b%W1-CHvK-Swr>=rt!tC`A z)7kR*-ZO}mImCH8xlZewBvnm2Fx!6Fep0pL&g}}m%224)qvA5-NOQ%8nWoznGavSu z;2tmV&uys;g^t440kE*W)~>7zq!rh3_^{EEDio`|Af9|09=bH+cO44(ru}kuRuqGj zWGDz-!aT0#0taDF1)J%8`HJz=nyz+?L6EMv2+LFLsCEF8Lw@LqsZtV;BsFuT=HwTB ztXjRLW|hDC*L7aGY!TH#%9BHlzC+3XesSx|EJ=r3{nxGAHK=<^Wb5=k*~Q?pYZY`{PyA zF&nnDl(n_X|NYT^{!V{%y&N_L7iA$@VEzEC|MvwGEVXG*s`v9u*Pk^g{p`*LuYyA6 z*zqM&4}N@&Uw>i=7J+=$g!uR7mH+CU^KZKZq8ME0j; z{pcI893l&&rN{oMbZ&@&J~Dkv^eTO1e}A}tTPy1jupEeQjh+twR61YJs%!XSN*RC9 zIsEtkx{771s19x*aiZnl9^_}s{+|rxr!=4eQl9g_Bo0_b6@uBpPEma$Pe@yJ7yjbT zDf&PIEJ>uqRj&F=o#2!J-EJYS+4_K$>>vH@+J^jvx~^@=|Fj!^P^`5L`3obowjqCY zqO6^eKR42AC*%*7=0BO}wG;9eCV9(&BjNyD!&E7d?Dthil1! z+iQkqNXWo{8s37Pbnto~4rw8^XZAPXpfT7GGN=0yyY_njz8lt7Z#BnuO*vO}XxH}Ms?OS)X<5}8 zubGxL)AEaC+`s>7&9tnUmesb)>i*iAX<1EHYhKHm*YfY){aQe@y8ZZtT-Hp>nrZoW z*W?#lYRzj|^IBHhE~{IeHPf=1tk%4iHLv9tCiZW?TFbSpz5V;I)=bNqY5AM| zSXCf@d}qzHteKX7w;!v!ao@kQW?EL=NoxVoT0pd#lfU{-S__C)lhvAO`QKq$suXo9 zi;ER30|c_!YKEi*kFJifTJ_NU^Bk$%l+C2n3tC1_Ylp192mbu#Dmftl~TOmDCzC7pR@TI_dH+ zUNHFG7yi^r0Gpg!UShtx$+jcgf@M5FW%b+s;(Z5PH;f4{^_6*N6uA-wr-_w;^MKfv z*g5&nuf(4k$e0_S8?4@1xxcTOVC9!*hH6?fO>$Vq#PZ@` z$4m1JWMu$*OY<@OKi>tF>|musLql6fFv3f&7rlP8cK^jE*SUA5;>7$<{$h)){;L&D zupUT3r6pA#xPoBB%E-!$**}(}C};6>GfavssRQ%#C;U^pTBW5PiT~`e3flMAg0BWA z$6$@O=RbX1Cl;3ReQ^7Kx{1z62qNN#D0wa*nt4MhdGQedYJPTCMQ<% zfY`&lLLF!UTCmePR=EJQ04;C490FQ^7NF(%5h9QiJ@ka|y^?1r_M_&tcI_cW!X{c82~ z7PjtfS!d^uePIRmzYjZyaa{q79BQ(_w8S__u@PeKrE+z6)&M8~%Ih-f@bNGJ1wa|6 zcpCi^fC8WZD6lF(uYsZbLZ4UyEkR4r60`&@(Ke!6KugdPv;-|dOSFyX7SIy31T8^J z&=PGUx&^cZEkR4r60}6yh;9KbK}*mQv;-~DHlkZVOVARu1T8^Jw2kN%&=Rx+EkR4r z5^W>81+@IbwQRX)UOMtD0JyKm;+6rpf)C;kBicqU{vPQbxFZYh$U>)YbPIqo5;3DO z1PL937yt!8LGyub0Z;%G3_eD69qAqb1wcXbfo=g%Mj~c3hM+>hAO=7IP|$p!TL2UQ z1%r=KT}QeHKmkzDe4tz21{7u`wX9|RNs`M!;+?5Wa8pkH<%hdYu8ni_L+OVX&D`z0 z-`45kdAqN1sh>r$m*>pZ<0g3>YN=f`l@j`2%HHk8SMdo;ZS9TQD#w#y};%jq~*%@@mV%DPA9@v z{cVfo`t=>$RoK0;7pKn`ZBSlAl7R9W%Ig;y5B5RzgH$&U4 zyHMZUye>^IFCx{RCZsFx_psCY!!)Tpol$)&Ccr)XtK{-GuKPv~Qq7ukJGG}IUE=*U zpBPG@_I}xX^XBzIbx#bH>c5XsfmH;cyTqbpVc~=lszl#YLPfrBNY}}VNl5VK>mFta zC6cpkvS_C_kFICi4qm;3!3YY{%L;_|?$vA$9eQxsF*+&9m#=?ZEbQoLJ|lgbo(xvx zbIb=6`6`m9iKmrh6&4oi9_1xQ)9Lij3bI15Yr=6l!g!uUQ4xe-EzwY}e zdqyCRV0^N&qwav;TlQol%Y(&{G6ECCwfhCf&DY%$ul?*Ja3`2Fn~i!!+2-k_`Ib4| zVi>R#e>UX*v%4fYpkQ+(gU#%D(<^gIe){Q}{7zA)en62l*x%he*kbJ)(ht`Eds3ZQ zuSn|ex}h8FVXN?Mxw*NWzu&9yb@||-K_y`QwkM#luVMDs{}lG5V9s-r4WuSLYCaun zQrqLbk&flyZ{`Q$3tB(so1Th$ zrmkVlJmy6#y>|cpHext?)1R#mrw6{a+a}U??V1}!Q&v{f4U{yknCggY+n(0f5J4gx zyS!rx!K{mkPfR3Sm-9}JMBy9Hw;#6-M}s6)Q4$dqm7Rt6xvmlnnRj^d+7%6%9t;;{ z3NnVhlM7m7w=M6ozQfcw4=Vly8C+-wF^O#M9a$IYvd9ptm$zvfBK4XyOKMAD_m1735B27Lh(N zJ!;7-=W<0+d*@g^g=SBvsHjLX>iSBLnh|~*Gwkuv3tfIM91>(`o<6>?xu_OL^D5*N zpDQaX^D0!8AFz50a$M{#4MQLuXo_^@4K$TS@$|tmy1m@b&#%0;cKW>VGeYhreMuze z2U4{7nDsM>xC4sqdL#mpCzPxVA`m>hyuA84_T38MF48l0X>h&&$i<%wrZx%3tuIWvZBiH?WLrwVq#gZ+r!`t%~HBX)|#Sj z@sHWL({r1z2^suhnVu>|Nh%4iw}wt=u*d%9aR%)PdunW9GY zIy0;#tX|-KyEIku=>z56Y^5aifl}hVMRG*8cI{dkab=<^j`XCmva*_C(nsOzmJ6iH z@=5Z}oJ&6aSL}UOah+*#mpML~)AsjeCaz2Ct6Aocgs7K7cCQx43hRL$Ybvl2S0 zozjhcjm#sm&aMqxLOmQgFk4 zrTp{23AX=*ed`}D`^TD`W$gtN^J0SHb7_NO%+X_h<(%@}a()=&?zx*wE~qcDkA$YgSX zSd?xr%;rUv(Ut{O^@uttZiJab_(RG7hOu4i?l4(;VoVnn&X`cpdftAKy8}1IVA9o4 z;%~9i3CQPqMEkg0u9$YeTuh}d4U{zyeWaJ&@-1mpOVA-Z%Pt(6vNi6r4DaQxw z?Fya0V8MQELqkJsh=vkBH`#wYFj!uB`PISBfW#t zB81){g|~CgJ?HbDdq4I4^Tv2%$QU6zJ6U_LJ=a`w{pMWrH$!gfs+~N>bc}+6;-rSU z@+}Gq>O=|(N+YVHz?l$5SPuoo2?fU+H*RX&xN-5O8^q4h*_MJrJtW4M(!`*JKGp2? zDP3sef&&ncmzYI4Wl<+WAE;(eaw!rtePB8S! z6`b{lqFRju7TYn)DFN=wX+fO?YGVb|1^JQmBhHIuhh81sY#ayyx|` z)=;2OJ`Yh4x8iGfcK}SSeP;5RNb=kFF(S#?@A1F}RQz_Ipd$)ak80~+{1{sONr&@h zJa^|;UA$u3DvDoHO@^`Im_&uPhC_jK=Q|ff8TX5}cTA0S>E)lU1Xo-nU7T(sUQ)f9 z(Ea)FGexIQZ8i;w2P}e9c1GVn2tIk~6#a~{>XqGck9$It)>YR(U%#io&1x+l%y4Y& z@np0@5@(c6Ovz`Y2X#``wBQ5IwW?B+(^*5*d|4!%_5rm#SRR9IGxs&^M}z4~@r=|Z zGK~?wL#|&n)4Eg=7Cv2L3lTGlMIC7@IjFDx@H!i>dfZ_&4^hi~{U|mJ+Ue(}J0C5j8t?O%d9d|_0qQ%YxdXfGf5#LUESahdMn!B0Uf z)^uu=uLPF)U%@^d)w|SrZlGtS!Bv{)eDJ4wzQCP~MD?**pi+>l?6tl(~N@}1qVPMBHC6y&--1rvUt*EJ+piN2Fq8)$&;3*rkv}^PRV}B z^;h=Rjyx;17rU!RuNOrnDzbi_Z%6fvkksYWDXQmTQDM9krQ2bXtD9V^q;Vw=vwHV+ z62*J$^!xYkyOzxdH7K_H-;eBn^6q?2ZN-vLVJ`JCO7qyc3j(rdz8E|{x-160d!qf( z$z<5^2bAOQ*$zJvI&)<5nn*lV8RjX@{9yLu^LGWV9I(B6-sEKe6P>%fgVb9O54~Z% za46@4^n>%|kC?x(n#)^!Ir8n$@_YNk*VL)#-m>onQ(K1&vI|hruBtqKMa4m{p?WLw zgz{7M$n&4%GEbO3Dp0Gu*!L-Ln#zr-I=GzO`<0sd={2U^r`EYl`Qc1&jlQWzhm?MP zAjX>V(C&@F=gS@n$io(4MsI7nWH!Y7&euKidL#Hb@WkExcmcam>ATu5!&UBGHId=^ zV0SOeMB3!t=JKmNL0%W zsI$3;Z#Rb{Y-&8& zSl4LK=w;1alBRrlE^0wTA@d4NT(lm~r9$>at`rUnPR~e%+}!;5+^XEe@XXxc+o6W7 zhF*EeH>>m4v}Z(3pEzr5T~>?Sopzkgng&m+uF<(M?24*HS?jF6Z8Rvo;(ir$wIaGK z8Xqm0pPz4+pPDb6f4xsSA7r?lXL%Evxu>tA)u9_+C}F9SU#Sd!F?_W`)(Mh(JD;vE zE%ACsj=)IJH~ej^$UG?r_$i`!h&VX5>l0lN>wVp4JjT!S*N#mf_RbWOq|)<+&g{Z!6Dfv zj8F28GN0^Z+Bh}9x+I@0S?jU$=&Sch{Ts3kCJl4X%}$z~z=yvKzy7jO75B1}agzzh zglD!tUo4_x1+Xe zvh(j?jW=jdn4O!2wD(~O1yHivm2iYBO9p-6qdSqBHZ_BCVdLUm#~Jk8Sidn87@o`92BoUnFrj>h-An^-Hn5e&nScM!H~j9;a% zi={g?@>7aa#@={zBfNoK%>qq@wnqD*Z9{XBXTzUIFGS;A~jEbYIvZELk&w5vPu;Ml9f7f$(LwyZJt(~dPB zym3(LklB;+$25=oDdkT{9PgwmqFy@gdOU&EjVJmH6Dv|~gB~5+Fm>B~@1xvDyXWFB z;Lp&{icbe!xW{lQ#Non|2x{gsw|1g>o4Wpe=(*rY<-(VKXTU7-oO=!@gt=t0FV8v_ zxG%gMTzB25(r~Sr9B-m*6bwhj-Hp1a6h!x3>P@Mylgdv*q-kM#={l3TGVz+~I+|lKd(W7g z3MaR6T)TOC_I#YjnZ}RTD+bY_)V{ErT=I!simJa{C)>bnW2>r{ZDr?cSNw|KTrePp zF0tY&4(fG#D`MeMa%OT}HBWV3wVLvsbZ7nb`%^8?qDGpwCTU#J=Zdewb2cbEaK>7Tt>g6Mwdrayx}NjPaNxd$m2yI-E?+>_Jsu>*m4>YN8J&F7iW9KG{y zbFQ)xj196O8P$#5^&i?QmQ|LO@oHXjF51d18n>+iIi9@3UN|=-ALu=j`dWV%(LpCCT6)sie9xzAU8nVlMRF^(wL6K9T&tGQB!@ego+uy!9wR-$Q�dSVd0tk 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 diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 96a476c9..2df0d1c9 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -3,31 +3,25 @@ import { Callout } from 'nextra/components' # **How to build an app with Safe and ERC-7579** -The smart account ecosystem was fragmented, with each provider building its own modules often incompatible with other smart account implementations. Developers had to build new modules compatible with their smart accounts or miss out on essential application features. +The smart account ecosystem needed to be more cohesive, with each provider building its modules, often incompatible with other smart account implementations. Developers had to build new modules compatible with their smart accounts or miss out on essential application features. -[ERC-7579](https://docs.safe.global/advanced/erc-7579/overview) aims to ensure interoperability across implementations. It defines the account interface so developers can implement modules for all smart accounts that follow this standard. The Safe7579 Adapter makes your Safe compatible with any ERC-7579 modules. As a developer building with Safe, you get access to a rich ecosystem of modules to make your application feature-rich. +[ERC-7579](https://docs.safe.global/advanced/erc-7579/overview) aims to ensure interoperability across implementations. It defines the account interface so developers can implement modules for all smart accounts that follow this standard. The Safe7579 Adapter makes your Safe compatible with any ERC-7579 modules. As a developer building with Safe, you can access a rich ecosystem of modules to add features to your application. -Let's say you want to build an app to enable scheduling transfers for monthly salaries to a team of contributors. However, Safe does not offer a native module for scheduling transfers. With the ERC-7579 compatibility, you can use Rhinestone's [Scheduled Transfer module](https://docs.rhinestone.wtf/module-sdk/modules/scheduled-transfers) with Safe to build an app to schedule transfers ahead of time. +In this tutorial, we will build an app that can: -This tutorial will teach you to build an app that can: - -- Deploy an ERC-7579-compatible Safe Smart Account. -- Create a scheduled transaction. -- Execute it at the requested date and time. - -![screenshot](../../../../assets/7579-tutorial.png) +- Enable a 7579 module on a newly deployed Safe (the [OwnableExecutor](https://github.com/rhinestonewtf/core-modules/blob/main/src/OwnableExecutor/OwnableExecutor.sol) module by Rhinestone) +- Send a transaction via the 7579 module (Send a dummy transaction as the new owner via `executeOnOwnedAccount`) +- Interact with the 7579 directly to add a new owner to the module ## Prerequisites **Prerequisite knowledge:** You will need some basic experience with [React](https://react.dev/learn), [Next.js](https://nextjs.org/docs), [ERC-4337](https://docs.safe.global/home/4337-overview) and [ERC-7579](https://docs.safe.global/advanced/erc-7579/overview). -Before progressing with the tutorial, please make sure you have: +Before progressing with the tutorial, please make sure you have the following: - Downloaded and installed [Node.js](https://nodejs.org/en/download/package-manager) and [pnpm](https://pnpm.io/installation). - Created an API key from [Pimlico](https://www.pimlico.io/). -**Note:** If you wish to follow along using the completed project, you can [check out the GitHub repository](https://github.com/5afe/safe-7579-tutorial) for this tutorial. - ## **1. Setup a Next.js application** Initialize a new Next.js app using pnpm with the following command: @@ -43,169 +37,366 @@ When prompted by the CLI: ### **Install dependencies** -For this project, we'll use Pimlico's [Permissionless.js](https://docs.pimlico.io/permissionless) to set up a Safe and interact with it, Rhinestone's [Module SDK](https://docs.rhinestone.wtf/module-sdk) to install and use core modules, and [viem](https://www.npmjs.com/package/viem) for some helper functions. +For this project, we'll use Pimlico's [Permissionless.js](https://docs.pimlico.io/permissionless) to set up a Safe and interact with it and [viem](https://www.npmjs.com/package/viem) for some helper functions. - As of now, `permissionless.js` can only be used to deploy single-signer Safe accounts. Multi-signature ERC-7579 Safes will be coming soon. + Currently, `permissionless.js` can only be used to deploy single-signer Safe accounts. Multi-signature ERC-7579 Safes will be coming soon. -Run the following command to add all these dependencies to the project: +We run the following command to add all these dependencies to the project: ```shell -pnpm add permissionless viem @rhinestone/module-sdk@0.1.4 +pnpm add permissionless@0.2.0 viem@2 ``` -Now, create a file named `.env.local` at the root of your project, and add your Pimlico API key to it: +## Setup project -```shell -echo "NEXT_PUBLIC_PIMLICO_API_KEY='your_pimlico_api_key_goes_here'" > .env.local -``` +First, we will set up the project and add some UI and styles so we can focus on the 7579-related code for the rest of the tutorial. -### **Run the development server** +### Add CSS -Run the local development server with the following command: +We replace the content of `app/globals.css` with the following: -```shell -pnpm dev -``` - -Go to `http://localhost:3000` in your browser to see the default Next.js application. +```css +:root { + background-color: #121312; + font-family: 'DM Sans', sans-serif; + font-size: 13px; +} -![screenshot-default](../../../../assets/next.png) +* { + box-sizing: border-box; + margin: 0; + padding: 0; + color: #fff; +} -## 2. Initialize `permissionless` client +button { + background-color: #12ff80; + border: none; + border-radius: 6px; + color: rgba(0, 0, 0, 0.87); + cursor: pointer; + font-weight: bold; + padding: 8px 24px; + margin-top: 24px; + margin-bottom: 24px; + display: block; +} -Create a `lib` folder at the project root, and add a file `permissionless.ts`: +body { + align-items: center; + display: flex; + flex-direction: column; + justify-content: space-between; + margin: 6rem auto; + width: 500px; +} -```shell -mkdir lib -cd lib -touch permissionless.ts -``` +.card { + background-color: #1c1c1c; + border-radius: 6px; + margin-bottom: 24px; + padding: 24px; + text-align: left; + width: 100%; + align-items: center; + display: flex; + flex-direction: column; +} -Add the code necessary to create Pimlico's `smartAccountClient` by adding this content to `permissionless.ts` : +.title { + display: flex; + align-items: center; + gap: 10px; + font-size: large; +} -```typescript -// from ../../../../examples/erc-7579/lib/permissionless.ts +pre { + border: 1px solid #303033; + border-radius: 8px; + color: #a1a3a7; + margin: 24px 0; + padding: 24px; + text-align: center; +} ``` -It will: -- Load a `PRIVATE_KEY` from `.env.local` (or generate one if it doesn't exist); -- Create the `publicClient`, `paymasterClient` and `bundlerClient` necessary to initialize the `permissionless` library; -- Create an ERC-7579-compatible Safe Smart Account from the generated private key -- Pass the Safe Smart Account object to `createSmartAccountClient` to generate a Permissionless client. - -We can then call `getSmartAccountClient()` wherever we need to interact with the Safe via Pimlico. +### Add a scaffold React component -## 3. Add Rhinestone module functionality +We replace the content of `app/page.tsx` with the following code. It includes all necessary imports, the React component and the UI, and empty functions that we will fill with code in the following steps. From now on, we will only work on this file. -Create a new file `scheduledTransfers.ts` in the `lib` folder: - -```shell -touch scheduledTransfers.ts +```tsx +'use client' + +import Image from 'next/image' +import styles from './page.module.css' + +import { owner, owner2 } from '../lib/owner' +import { createSmartAccountClient } from 'permissionless' +import { sepolia } from 'viem/chains' +import { encodePacked, http, encodeFunctionData, parseAbi } from 'viem' +import { erc7579Actions } from 'permissionless/actions/erc7579' +import { createPublicClient, createWalletClient } from 'viem' +import { createPimlicoClient } from 'permissionless/clients/pimlico' +import { entryPoint07Address } from 'viem/account-abstraction' +import { toSafeSmartAccount } from 'permissionless/accounts' +import { useEffect, useState } from 'react' + +export default function Home () { + const [publicClient, setPublicClient] = useState(null) + const [safeAccount, setSafeAccount] = useState(null) + const [pimlicoClient, setPimlicoClient] = useState(null) + const [smartAccountClient, setSmartAccountClient] = useState(null) + + // The module we will use is deployed as a smart contract on Sepolia: + const ownableExecutorModule = '0xc98B026383885F41d9a995f85FC480E9bb8bB891' + + // Make sure to add your own API key to the Pimlico URL: + const pimlicoUrl = + 'https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY' + + + // We will use two accounts for this example: + // owner is the account that owns the smart account and will install the module. + // owner2 is the account that will be added as an owner to the smart account via the module. + // Both accounts are created from private keys. Make sure to replace them with your own private keys. + const owner = privateKeyToAccount( + '0xPRIVATE_KEY_OF_OWNER' + ) + + const owner2 = privateKeyToAccount( + '0xPRIVATE_KEY_OF_OWNER2' + ) + + // These functions will be filled with code in the following steps: + + useEffect(() => { + const init = async () => {} + init() + }, []) + + const installModule = async () => {} + + const addOwner = async () => {} + + const executeOnOwnedAccount = async () => {} + + return ( +

+ ) +} ``` -Add the code necessary to create a scheduled transfer using Rhinestone's `ScheduledTransfers` module: -```typescript -// from ../../../../examples/erc-7579/lib/scheduledTransfers.ts -``` +## Initialize the clients -This file contains two functions: -- `install7579Module` will install the module to a Safe and schedule its first transfer; -- `scheduleTransfer` to schedule subsequent transfers in a Safe where the module has been previously installed. +In the first step, we create the clients that allow us to interact with the smart account. As permissionless.js is just a tiny wrapper around viem, we will use many of viem's functions in this tutorial. -In the UI, we can then detect whether the Safe has the module installed when a user tries to schedule a transfer. If not, it will run `install7579Module`; and if it does, it will run `scheduleTransfer`. +To add this code, we overwrite the `useEffect` function with this one: -For brevity, we are only covering a simple use case of the `ScheduledTransfers` module. You can find more information about the module's functionalities in the [Rhinestone documentation](https://docs.rhinestone.wtf/module-sdk/modules/scheduled-transfers), such as the capacity to schedule recurring transfers, with a pre-determined number of repeats. +```tsx +useEffect(() => { + const init = async () => { + // The public client by viem is used as a transport layer: + const publicClient = createPublicClient({ + transport: http('https://rpc.ankr.com/eth_sepolia'), + chain: sepolia + }) + + // The safe account is created using the public client: + const safeAccount = await toSafeSmartAccount({ + client: publicClient, + owners: [owner], + version: '1.4.1', + chain: sepolia, + // These modules are required for the 7579 functionality: + safe4337ModuleAddress: '0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2', // These are not meant to be used in production as of now. + erc7579LaunchpadAddress: '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' // These are not meant to be used in production as of now. + }) + + // The Pimlico client is used as a paymaster: + const pimlicoClient = createPimlicoClient({ + transport: http( + 'https://api.pimlico.io/v2/sepolia/rpc?apikey=pim_nP3hDrTjXZjYyK34ZgugCk' + ), + chain: sepolia + }) + + // Finally, we create the smart account client, which provides functionality to interact with the smart account: + const smartAccountClient = createSmartAccountClient({ + account: safeAccount, + chain: sepolia, + bundlerTransport: http( + 'https://api.pimlico.io/v2/sepolia/rpc?apikey=pim_nP3hDrTjXZjYyK34ZgugCk' + ), + paymaster: pimlicoClient, + userOperation: { + estimateFeesPerGas: async () => { + return (await pimlicoClient.getUserOperationGasPrice()).fast + } + } + }).extend(erc7579Actions()) + + // We store the clients in the state to use them in the following steps: + setPublicClient(publicClient) + setSafeAccount(safeAccount) + setPimlicoClient(pimlicoClient) + setSmartAccountClient(smartAccountClient) + + console.log('setup done') + } + + init() +}, []) +``` -## 4. Add UI components +If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works correctly. -Now that we have the logic necessary to set up a safe and schedule a transfer, let's create a simple UI to interact with it. Create a new file `ScheduledTransferForm.tsx` in the `components` folder: +## Enable the 7579 module -```shell -cd .. -mkdir components -cd components -touch ScheduledTransferForm.tsx -``` +Now, we add the call that will add the `OwnableExecutor` module to our smart account. -Add the following code to `ScheduledTransferForm.tsx`: +We overwrite the `installModule` function with this one. ```tsx -// from ../../../../examples/erc-7579/components/ScheduledTransferForm.tsx +const installModule = async () => { + console.log('Installing module...') + + // The smart accounts client operates on 4337. It does not send transactions directly but instead creates user + // operations. The Pimlico bundler takes those user operations and sends them to the blockchain as regular + // transactions. We also use the Pimlico paymaster to sponsor the transaction. So, all interactions are free + // on Sepolia. + const userOpHash = await smartAccountClient.installModule({ + type: 'executor', + address: ownableExecutorModule, + context: encodePacked(['address'], [owner2.address]) + }) + + console.log('User operation hash:', userOpHash) + + // After we sent the user operation, we wait for the transaction to be settled: + const transactionReceipt = await pimlicoClient.waitForUserOperationReceipt({ + hash: userOpHash + }) + + console.log('Module installed:', transactionReceipt) +} ``` -This component will provide a form to allow the user to input the amount, receiver address, and date and time for the scheduled transfer. It will detect whether the Safe has the module installed, and then call either `install7579Module` or `scheduleTransfer` from the `scheduledTransfers.ts` file. +When you open the UI now and click the “Install Module” button, the console should log the module installation process. You can use [jiffyscan.xyz](https://jiffyscan.xyz/) to inspect the user operation hash. From there, you can copy the transaction hash and inspect the transaction with [Etherscan](https://sepolia.etherscan.io/), [Tenderly](https://tenderly.co/), or other block explorers. -Now, edit `app/page.tsx` to include the `ScheduledTransferForm` component: +## Send a transaction via the 7579 module -```tsx -// from ../../../../examples/erc-7579/app/page.tsx -``` +In the following function, we will use the `OwnableExecutor` module. The module allows owners to execute transactions from the smart account without collecting signatures. For this example, we will send a dummy transaction that sends zero eth to owner1. -## 5. Add styling (optional) +In detail: -We can add some styling to our app by editing the contents of `layout.tsx` in `app` folder: +1. Owner 2 calls module +2. The module calls executeAsModule on our smart account +3. The smart account executes the transaction (and sends zero eth to owner 1) + +Please replace the `executeOnOwnedAccount` function with this code: ```tsx -// from ../../../../examples/erc-7579/app/layout.tsx +const executeOnOwnedAccount = async () => { + console.log('Executing as owner...') + + // We create a wallet client for the owner2 account. This client is used to send transactions on behalf of the + // owner2. This transaction is sent as a regular transaction, so it is not free. Make sure owner2 owns enough funds + // to pay for gas. + const walletClient = createWalletClient({ + account: owner2, + transport: http('https://rpc.ankr.com/eth_sepolia'), + chain: sepolia + }) + + console.log('wallet client', walletClient) + + // We encode the transaction we want the smart account to send. The fields are: + // - to (address) + // - value (uint256) + // - data (bytes) + // In this example case, it is a dummy transaction with zero data. + const executeOnOwnedAccountData = encodePacked( + ['address', 'uint256', 'bytes'], + ['0xa6d3DEBAAB2B8093e69109f23A75501F864F74e2', 0n, '0x'] + ) + + // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe + // account and the data we want to execute as owner. This will make our smart account send the transaction that is + // encoded above. + const hash = await walletClient.writeContract({ + abi: parseAbi(['function executeOnOwnedAccount(address, bytes)']), + functionName: 'executeOnOwnedAccount', + args: [safeAccount?.address, executeOnOwnedAccountData], + address: ownableExecutorModule + }) + + console.log('Executed as owner, transaction hash:', hash) +} ``` -This will add some basic styling to the app, including a header. You can also add some custom CSS to `globals.css` in the same folder: +Now, when we open the UI and click the button “Execute as Owner,” our console should log the transaction. We can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter, to our Safe, and to the final receiver of the transaction. -```css -h1, -h2, -h3 { - margin-top: 40px; - margin-bottom: 10px; -} +We also learned which data format is used to send a 7579 transaction from a module to a Safe. It is exactly the data we packed for our transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. But with most other modules, we don’t have to pack the data ourselves; we just call a function on the module, and the module sends the dedicated transaction to the smart account. -button { - cursor: pointer; - border: none; - background: #00e673; - color: black; - padding: 10px 20px; - border-radius: 5px; - margin: 10px 0; -} +## Interact with the 7579 module directly -input { - padding: 10px; - border-radius: 5px; - border: 1px solid #ccc; - margin: 10px 0; -} +Some modules can be configured directly. The `OwnableExecutor` module allows us to add additional owners and remove existing owners. This example outlines how we interact with the module directly to add a new owner. -button:disabled { - background: #ccc; - color: #666; -} -``` +The call flow is: -## **Testing your app** +1. We sign a user operation with our smart account client and send it to the bundler. +2. The bundler bundles the user operation into a regular transaction and sends it to the meme pool. +3. The transaction executes a call from our smart account call the module with the data we defined. +4. The module recognizes our smart account as an authorized sender. It stores the new owner of our smart account in its storage. -That's it! You can find the source code for the example created in this tutorial [on GitHub](https://github.com/5afe/safe-7579-tutorial). You can now return to your browser and see the app displayed. +Replace `addOwner` with this function: -![screenshot-finalized](../../../../assets/7579-tutorial-2.png) +```tsx +const addOwner = async () => { + console.log('Adding owner...') + + // The addOwner function is part of the OwnableExecutorModule. We encode the function data using the viem library: + const addOwnerData = encodeFunctionData({ + abi: parseAbi(['function addOwner(address)']), + functionName: 'addOwner', + args: [owner2.address] + }) + + // We use the smart account client to send the user operation: In this call, our smart account calls the `addOwner` + // function at the `ownableExecutorModule` with the new owner's address. + const userOp = await smartAccountClient.sendUserOperation({ + calls: [{ to: ownableExecutorModule, value: 0, data: addOwnerData }] + }) + + console.log('User operation:', userOp) + + // Again, we wait for the transaction to be settled: + const receipt = await pimlicoClient.waitForUserOperationReceipt({ + hash: userOp + }) + + console.log('Owner added', receipt) +} +``` -Click the **Create Safe** button to initialize the Permissionless client with the private key you stored on `.env.local`. It will deploy an ERC-7579-compatible Safe Smart Account on its first transaction. +When we open the UI and click the “Add Owner” button, our console should log the user operation that adds a new owner. We should make sure to inspect the final transaction (you can get the transaction hash from jiffyscan.xyz) to understand the call stack from the smart account to the module. -![screenshot](../../../../assets/7579-tutorial-3.png) +That’s it! You have successfully built an app that can interact with a Safe Smart Account using the ERC-7579 standard. You can now deploy and test your app with your Safes and modules. -Once loaded, you will be able to choose an amount to send, a receiver address and select a date and time for your scheduled payment. Click **Schedule Transfer** to send the transaction. The first time you do this, it will deploy the Safe to Sepolia test network and install the ScheduledTransfers module. ## **Do more with Safe and ERC-7579** -We learned how to deploy an ERC-7579-compatible Safe Smart Account and use an ERC-7579-compatible module, the Scheduled Transfer from Rhinestone. We hope you enjoyed this tutorial and that the combination of Safe and 7579 will allow you to tap into new functionalities for your decentralized apps. - -As a next step, you can add more functionalities to your app using other [ERC-7579-compatible modules](https://docs.rhinestone.wtf/module-sdk/modules/ownable-validator). Here are some ideas: +We learned how to deploy an ERC-7579-compatible Safe Smart Account and use an ERC-7579-compatible module, the OwnableExecutor from Rhinestone. We hope you enjoyed this tutorial and that the combination of Safe and 7579 will allow you to tap into new functionalities for your decentralized apps. -- [Create a dead man switch](https://docs.rhinestone.wtf/module-sdk/modules/deadman-switch) in case your account becomes inactive after a certain amount of time. -- Add [multi-factor validation](https://docs.rhinestone.wtf/module-sdk/modules/multi-factor) to your Smart Account. -- [Designate an owner](https://docs.rhinestone.wtf/module-sdk/modules/ownable-executor) that can act on your behalf for executing transactions and paying for gas. +As a next step, you can add more functionalities to your app using other [ERC-7579-compatible modules](https://docs.rhinestone.wtf/module-sdk/modules/ownable-validator). -You can also find more inspiration on this list of [ERC-7579 modules](https://erc7579.com/modules). You can also read more about this ERC in our [overview](https://docs.safe.global/advanced/erc-7579/overview) or in the [official documentation](https://erc7579.com/). +You can also find more inspiration on this list of [ERC-7579 modules](https://erc7579.com/modules). You can also read more about this ERC in our [overview](https://docs.safe.global/advanced/erc-7579/overview) or the [official documentation](https://erc7579.com/). Did you encounter any difficulties? Let us know by opening [an issue](https://github.com/5afe/safe-7579-tutorial/issues/new) or asking a question on [Stack Exchange](https://ethereum.stackexchange.com/questions/tagged/safe-core) with the `safe-core` tag. From ede49afa121906232f6490ea908ff448ff53973a Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Mon, 16 Sep 2024 20:39:34 +0200 Subject: [PATCH 02/15] add 7579 tutorial --- .../erc-7579/tutorials/7579-tutorial.mdx | 54 +++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 2df0d1c9..9607014f 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -13,6 +13,8 @@ In this tutorial, we will build an app that can: - Send a transaction via the 7579 module (Send a dummy transaction as the new owner via `executeOnOwnedAccount`) - Interact with the 7579 directly to add a new owner to the module +You can find the full code for this tutorial in the [Safe7579 module tutorial repository](https://github.com/5afe/safe-7579-module-tutorial). + ## Prerequisites **Prerequisite knowledge:** You will need some basic experience with [React](https://react.dev/learn), [Next.js](https://nextjs.org/docs), [ERC-4337](https://docs.safe.global/home/4337-overview) and [ERC-7579](https://docs.safe.global/advanced/erc-7579/overview). @@ -21,6 +23,7 @@ Before progressing with the tutorial, please make sure you have the following: - Downloaded and installed [Node.js](https://nodejs.org/en/download/package-manager) and [pnpm](https://pnpm.io/installation). - Created an API key from [Pimlico](https://www.pimlico.io/). +- Two private keys for testing purposes. The second key will need some funds to pay for gas. ## **1. Setup a Next.js application** @@ -129,22 +132,17 @@ We replace the content of `app/page.tsx` with the following code. It includes al ```tsx 'use client' -import Image from 'next/image' -import styles from './page.module.css' - -import { owner, owner2 } from '../lib/owner' import { createSmartAccountClient } from 'permissionless' import { sepolia } from 'viem/chains' import { encodePacked, http, encodeFunctionData, parseAbi } from 'viem' import { erc7579Actions } from 'permissionless/actions/erc7579' import { createPublicClient, createWalletClient } from 'viem' +import { privateKeyToAccount } from 'viem/accounts' import { createPimlicoClient } from 'permissionless/clients/pimlico' -import { entryPoint07Address } from 'viem/account-abstraction' import { toSafeSmartAccount } from 'permissionless/accounts' import { useEffect, useState } from 'react' export default function Home () { - const [publicClient, setPublicClient] = useState(null) const [safeAccount, setSafeAccount] = useState(null) const [pimlicoClient, setPimlicoClient] = useState(null) const [smartAccountClient, setSmartAccountClient] = useState(null) @@ -161,12 +159,13 @@ export default function Home () { // owner is the account that owns the smart account and will install the module. // owner2 is the account that will be added as an owner to the smart account via the module. // Both accounts are created from private keys. Make sure to replace them with your own private keys. + // These are the private keys of anvil, don't use them in production, don't send any real funds to these accounts. const owner = privateKeyToAccount( - '0xPRIVATE_KEY_OF_OWNER' + '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' ) const owner2 = privateKeyToAccount( - '0xPRIVATE_KEY_OF_OWNER2' + '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' ) // These functions will be filled with code in the following steps: @@ -178,21 +177,27 @@ export default function Home () { const installModule = async () => {} - const addOwner = async () => {} - const executeOnOwnedAccount = async () => {} + const addOwner = async () => {} + return (
Safe 7579 Module
- +
) } ``` +Make sure to add your Pimlico API key to the `pimlicoUrl` variable. You can find your API key in the Pimlico dashboard. + +Also, replace the private keys in the `owner` and `owner2` variables with your own private keys for testing purposes. + +You can now run the development server with `pnpm dev` and open the app in your browser at `http://localhost:3000`. You should see a simple UI with three buttons. + ## Initialize the clients In the first step, we create the clients that allow us to interact with the smart account. As permissionless.js is just a tiny wrapper around viem, we will use many of viem's functions in this tutorial. @@ -221,9 +226,7 @@ useEffect(() => { // The Pimlico client is used as a paymaster: const pimlicoClient = createPimlicoClient({ - transport: http( - 'https://api.pimlico.io/v2/sepolia/rpc?apikey=pim_nP3hDrTjXZjYyK34ZgugCk' - ), + transport: http(pimlicoUrl), chain: sepolia }) @@ -231,9 +234,7 @@ useEffect(() => { const smartAccountClient = createSmartAccountClient({ account: safeAccount, chain: sepolia, - bundlerTransport: http( - 'https://api.pimlico.io/v2/sepolia/rpc?apikey=pim_nP3hDrTjXZjYyK34ZgugCk' - ), + bundlerTransport: http(pimlicoUrl), paymaster: pimlicoClient, userOperation: { estimateFeesPerGas: async () => { @@ -257,7 +258,7 @@ useEffect(() => { If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works correctly. -## Enable the 7579 module +## Install the 7579 module Now, we add the call that will add the `OwnableExecutor` module to our smart account. @@ -277,7 +278,7 @@ const installModule = async () => { context: encodePacked(['address'], [owner2.address]) }) - console.log('User operation hash:', userOpHash) + console.log('User operation hash:', userOpHash, '\nwaiting for receipt...') // After we sent the user operation, we wait for the transaction to be settled: const transactionReceipt = await pimlicoClient.waitForUserOperationReceipt({ @@ -304,7 +305,7 @@ Please replace the `executeOnOwnedAccount` function with this code: ```tsx const executeOnOwnedAccount = async () => { - console.log('Executing as owner...') + console.log('Executing on owned account...') // We create a wallet client for the owner2 account. This client is used to send transactions on behalf of the // owner2. This transaction is sent as a regular transaction, so it is not free. Make sure owner2 owns enough funds @@ -328,8 +329,7 @@ const executeOnOwnedAccount = async () => { ) // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe - // account and the data we want to execute as owner. This will make our smart account send the transaction that is - // encoded above. + // account and the data we want to execute. This will make our smart account send the transaction that is encoded above. const hash = await walletClient.writeContract({ abi: parseAbi(['function executeOnOwnedAccount(address, bytes)']), functionName: 'executeOnOwnedAccount', @@ -337,11 +337,11 @@ const executeOnOwnedAccount = async () => { address: ownableExecutorModule }) - console.log('Executed as owner, transaction hash:', hash) + console.log('Executed on owned account, transaction hash:', hash) } ``` -Now, when we open the UI and click the button “Execute as Owner,” our console should log the transaction. We can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter, to our Safe, and to the final receiver of the transaction. +Now, when we open the UI and click the “Execute on owned account” button, our console should log the transaction. We can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter, to our Safe, and to the final receiver of the transaction. We also learned which data format is used to send a 7579 transaction from a module to a Safe. It is exactly the data we packed for our transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. But with most other modules, we don’t have to pack the data ourselves; we just call a function on the module, and the module sends the dedicated transaction to the smart account. @@ -366,7 +366,7 @@ const addOwner = async () => { const addOwnerData = encodeFunctionData({ abi: parseAbi(['function addOwner(address)']), functionName: 'addOwner', - args: [owner2.address] + args: ['0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'] }) // We use the smart account client to send the user operation: In this call, our smart account calls the `addOwner` @@ -375,14 +375,14 @@ const addOwner = async () => { calls: [{ to: ownableExecutorModule, value: 0, data: addOwnerData }] }) - console.log('User operation:', userOp) + console.log('User operation:', userOp, '\nwaiting for tx receipt...') // Again, we wait for the transaction to be settled: const receipt = await pimlicoClient.waitForUserOperationReceipt({ hash: userOp }) - console.log('Owner added', receipt) + console.log('Owner added, tx receipt:', receipt) } ``` From 4067e18a302a3abf596b6347d4e7968093087363 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Tue, 17 Sep 2024 10:36:23 +0200 Subject: [PATCH 03/15] change github repository --- pages/advanced/erc-7579/tutorials/7579-tutorial.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 9607014f..3809fba7 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -13,7 +13,7 @@ In this tutorial, we will build an app that can: - Send a transaction via the 7579 module (Send a dummy transaction as the new owner via `executeOnOwnedAccount`) - Interact with the 7579 directly to add a new owner to the module -You can find the full code for this tutorial in the [Safe7579 module tutorial repository](https://github.com/5afe/safe-7579-module-tutorial). +You can find the full code for this tutorial in the [Safe7579 module tutorial repository](https://github.com/5afe/safe-7579-tutorial). ## Prerequisites From d24b58a086bd2ca05d3f7f8d1c52709ec01497d6 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Tue, 17 Sep 2024 11:22:34 +0200 Subject: [PATCH 04/15] fix code --- pages/advanced/erc-7579/tutorials/7579-tutorial.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 3809fba7..147412e6 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -244,7 +244,6 @@ useEffect(() => { }).extend(erc7579Actions()) // We store the clients in the state to use them in the following steps: - setPublicClient(publicClient) setSafeAccount(safeAccount) setPimlicoClient(pimlicoClient) setSmartAccountClient(smartAccountClient) From 83c12c6f260859b57840b617a9b78e1f2e931d1d Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Tue, 17 Sep 2024 11:46:41 +0200 Subject: [PATCH 05/15] move to second person singular --- .../erc-7579/tutorials/7579-tutorial.mdx | 72 +++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 147412e6..69554462 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -7,7 +7,7 @@ The smart account ecosystem needed to be more cohesive, with each provider build [ERC-7579](https://docs.safe.global/advanced/erc-7579/overview) aims to ensure interoperability across implementations. It defines the account interface so developers can implement modules for all smart accounts that follow this standard. The Safe7579 Adapter makes your Safe compatible with any ERC-7579 modules. As a developer building with Safe, you can access a rich ecosystem of modules to add features to your application. -In this tutorial, we will build an app that can: +In this tutorial, you will build an app that can: - Enable a 7579 module on a newly deployed Safe (the [OwnableExecutor](https://github.com/rhinestonewtf/core-modules/blob/main/src/OwnableExecutor/OwnableExecutor.sol) module by Rhinestone) - Send a transaction via the 7579 module (Send a dummy transaction as the new owner via `executeOnOwnedAccount`) @@ -40,13 +40,13 @@ When prompted by the CLI: ### **Install dependencies** -For this project, we'll use Pimlico's [Permissionless.js](https://docs.pimlico.io/permissionless) to set up a Safe and interact with it and [viem](https://www.npmjs.com/package/viem) for some helper functions. +For this project, you will use Pimlico's [Permissionless.js](https://docs.pimlico.io/permissionless) to set up a Safe and interact with it and [viem](https://www.npmjs.com/package/viem) for some helper functions. Currently, `permissionless.js` can only be used to deploy single-signer Safe accounts. Multi-signature ERC-7579 Safes will be coming soon. -We run the following command to add all these dependencies to the project: +Run the following command to add all these dependencies to the project: ```shell pnpm add permissionless@0.2.0 viem@2 @@ -54,11 +54,11 @@ pnpm add permissionless@0.2.0 viem@2 ## Setup project -First, we will set up the project and add some UI and styles so we can focus on the 7579-related code for the rest of the tutorial. +First, set up the project and add some UI and styles so you can focus on the 7579-related code for the rest of the tutorial. ### Add CSS -We replace the content of `app/globals.css` with the following: +Replace the content of `app/globals.css` with the following: ```css :root { @@ -127,7 +127,7 @@ pre { ### Add a scaffold React component -We replace the content of `app/page.tsx` with the following code. It includes all necessary imports, the React component and the UI, and empty functions that we will fill with code in the following steps. From now on, we will only work on this file. +Now, replace the content of `app/page.tsx` with the following code. It includes all necessary imports, the React component and the UI, and empty functions that you will fill with code in the following steps. From now on, you will only work on this file. ```tsx 'use client' @@ -147,7 +147,7 @@ export default function Home () { const [pimlicoClient, setPimlicoClient] = useState(null) const [smartAccountClient, setSmartAccountClient] = useState(null) - // The module we will use is deployed as a smart contract on Sepolia: + // The module is deployed as a smart contract on Sepolia: const ownableExecutorModule = '0xc98B026383885F41d9a995f85FC480E9bb8bB891' // Make sure to add your own API key to the Pimlico URL: @@ -155,7 +155,7 @@ export default function Home () { 'https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY' - // We will use two accounts for this example: + // You will use two accounts for this example: // owner is the account that owns the smart account and will install the module. // owner2 is the account that will be added as an owner to the smart account via the module. // Both accounts are created from private keys. Make sure to replace them with your own private keys. @@ -200,9 +200,9 @@ You can now run the development server with `pnpm dev` and open the app in your ## Initialize the clients -In the first step, we create the clients that allow us to interact with the smart account. As permissionless.js is just a tiny wrapper around viem, we will use many of viem's functions in this tutorial. +In the first step, you create the clients that allow you to interact with the smart account. As permissionless.js is just a tiny wrapper around viem, you will use many of viem's functions in this tutorial. -To add this code, we overwrite the `useEffect` function with this one: +To add this code, overwrite the `useEffect` function with this one: ```tsx useEffect(() => { @@ -230,7 +230,7 @@ useEffect(() => { chain: sepolia }) - // Finally, we create the smart account client, which provides functionality to interact with the smart account: + // Finally, create the smart account client, which provides functionality to interact with the smart account: const smartAccountClient = createSmartAccountClient({ account: safeAccount, chain: sepolia, @@ -243,7 +243,7 @@ useEffect(() => { } }).extend(erc7579Actions()) - // We store the clients in the state to use them in the following steps: + // Store the clients in the state to use them in the following steps: setSafeAccount(safeAccount) setPimlicoClient(pimlicoClient) setSmartAccountClient(smartAccountClient) @@ -255,13 +255,13 @@ useEffect(() => { }, []) ``` -If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works correctly. +If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works. ## Install the 7579 module -Now, we add the call that will add the `OwnableExecutor` module to our smart account. +Now, add the call that will add the `OwnableExecutor` module to your smart account. -We overwrite the `installModule` function with this one. +Overwrite the `installModule` function with this one. ```tsx const installModule = async () => { @@ -279,7 +279,7 @@ const installModule = async () => { console.log('User operation hash:', userOpHash, '\nwaiting for receipt...') - // After we sent the user operation, we wait for the transaction to be settled: + // After sending the user operation, wait for the transaction to be settled: const transactionReceipt = await pimlicoClient.waitForUserOperationReceipt({ hash: userOpHash }) @@ -292,21 +292,21 @@ When you open the UI now and click the “Install Module” button, the console ## Send a transaction via the 7579 module -In the following function, we will use the `OwnableExecutor` module. The module allows owners to execute transactions from the smart account without collecting signatures. For this example, we will send a dummy transaction that sends zero eth to owner1. +In the following function, you will use the `OwnableExecutor` module. The module allows owners to execute transactions from the smart account without collecting signatures. For this example, you will send a dummy transaction that sends zero eth to owner1. In detail: -1. Owner 2 calls module -2. The module calls executeAsModule on our smart account -3. The smart account executes the transaction (and sends zero eth to owner 1) +1. Owner2 calls module +2. The module calls `executeAsModule` on the smart account +3. The smart account executes the transaction (and sends zero eth to owner1) -Please replace the `executeOnOwnedAccount` function with this code: +Replace the `executeOnOwnedAccount` function with this code: ```tsx const executeOnOwnedAccount = async () => { console.log('Executing on owned account...') - // We create a wallet client for the owner2 account. This client is used to send transactions on behalf of the + // Create a wallet client for the owner2 account. This client is used to send transactions on behalf of the // owner2. This transaction is sent as a regular transaction, so it is not free. Make sure owner2 owns enough funds // to pay for gas. const walletClient = createWalletClient({ @@ -317,7 +317,7 @@ const executeOnOwnedAccount = async () => { console.log('wallet client', walletClient) - // We encode the transaction we want the smart account to send. The fields are: + // Encode the transaction you want the smart account to send. The fields are: // - to (address) // - value (uint256) // - data (bytes) @@ -327,8 +327,8 @@ const executeOnOwnedAccount = async () => { ['0xa6d3DEBAAB2B8093e69109f23A75501F864F74e2', 0n, '0x'] ) - // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe - // account and the data we want to execute. This will make our smart account send the transaction that is encoded above. + // Now, call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe + // account and the data you want to execute. This will make the smart account send the transaction that is encoded above. const hash = await walletClient.writeContract({ abi: parseAbi(['function executeOnOwnedAccount(address, bytes)']), functionName: 'executeOnOwnedAccount', @@ -340,20 +340,20 @@ const executeOnOwnedAccount = async () => { } ``` -Now, when we open the UI and click the “Execute on owned account” button, our console should log the transaction. We can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter, to our Safe, and to the final receiver of the transaction. +Now, when you open the UI and click the “Execute on owned account” button, your console should log the transaction. You can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter, to your Safe, and to the final receiver of the transaction. -We also learned which data format is used to send a 7579 transaction from a module to a Safe. It is exactly the data we packed for our transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. But with most other modules, we don’t have to pack the data ourselves; we just call a function on the module, and the module sends the dedicated transaction to the smart account. +You also learned which data format is used to send a 7579 transaction from a module to a Safe. It is exactly the data you packed for the transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. But with most other modules, you don’t have to pack the data yourself; you just call a function on the module, and the module sends the dedicated transaction to the smart account. ## Interact with the 7579 module directly -Some modules can be configured directly. The `OwnableExecutor` module allows us to add additional owners and remove existing owners. This example outlines how we interact with the module directly to add a new owner. +Some modules can be configured directly. The `OwnableExecutor` module allows you to add additional owners and remove existing owners. This example outlines how you interact with the module directly to add a new owner. The call flow is: -1. We sign a user operation with our smart account client and send it to the bundler. +1. Sign a user operation with your smart account client and send it to the bundler. 2. The bundler bundles the user operation into a regular transaction and sends it to the meme pool. -3. The transaction executes a call from our smart account call the module with the data we defined. -4. The module recognizes our smart account as an authorized sender. It stores the new owner of our smart account in its storage. +3. The transaction executes a call from your smart account call the module with the defined data. +4. The module recognizes your smart account as an authorized sender. It stores the new owner of your smart account in its storage. Replace `addOwner` with this function: @@ -361,14 +361,14 @@ Replace `addOwner` with this function: const addOwner = async () => { console.log('Adding owner...') - // The addOwner function is part of the OwnableExecutorModule. We encode the function data using the viem library: + // The addOwner function is part of the OwnableExecutorModule. Encode the function data using the viem library: const addOwnerData = encodeFunctionData({ abi: parseAbi(['function addOwner(address)']), functionName: 'addOwner', args: ['0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'] }) - // We use the smart account client to send the user operation: In this call, our smart account calls the `addOwner` + // Use the smart account client to send the user operation: In this call, the smart account calls the `addOwner` // function at the `ownableExecutorModule` with the new owner's address. const userOp = await smartAccountClient.sendUserOperation({ calls: [{ to: ownableExecutorModule, value: 0, data: addOwnerData }] @@ -376,7 +376,7 @@ const addOwner = async () => { console.log('User operation:', userOp, '\nwaiting for tx receipt...') - // Again, we wait for the transaction to be settled: + // Wait for the transaction to be settled: const receipt = await pimlicoClient.waitForUserOperationReceipt({ hash: userOp }) @@ -385,14 +385,14 @@ const addOwner = async () => { } ``` -When we open the UI and click the “Add Owner” button, our console should log the user operation that adds a new owner. We should make sure to inspect the final transaction (you can get the transaction hash from jiffyscan.xyz) to understand the call stack from the smart account to the module. +When you open the UI and click the “Add Owner” button, your console should log the user operation that adds a new owner. Make sure to inspect the final transaction (you can get the transaction hash from jiffyscan.xyz) to understand the call stack from the smart account to the module. That’s it! You have successfully built an app that can interact with a Safe Smart Account using the ERC-7579 standard. You can now deploy and test your app with your Safes and modules. ## **Do more with Safe and ERC-7579** -We learned how to deploy an ERC-7579-compatible Safe Smart Account and use an ERC-7579-compatible module, the OwnableExecutor from Rhinestone. We hope you enjoyed this tutorial and that the combination of Safe and 7579 will allow you to tap into new functionalities for your decentralized apps. +You learned how to deploy an ERC-7579-compatible Safe Smart Account and use an ERC-7579-compatible module, the OwnableExecutor from Rhinestone. We hope you enjoyed this tutorial and that the combination of Safe and 7579 will allow you to tap into new functionalities for your decentralized apps. As a next step, you can add more functionalities to your app using other [ERC-7579-compatible modules](https://docs.rhinestone.wtf/module-sdk/modules/ownable-validator). From bad4d9b8b270d50668b3a2a45462335f2bd105af Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Wed, 18 Sep 2024 12:16:15 +0200 Subject: [PATCH 06/15] add numeration to title --- .../erc-7579/tutorials/7579-tutorial.mdx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 69554462..b844a76f 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -1,7 +1,7 @@ import { Callout } from 'nextra/components' -# **How to build an app with Safe and ERC-7579** +# How to build an app with Safe and ERC-7579 The smart account ecosystem needed to be more cohesive, with each provider building its modules, often incompatible with other smart account implementations. Developers had to build new modules compatible with their smart accounts or miss out on essential application features. @@ -25,7 +25,7 @@ Before progressing with the tutorial, please make sure you have the following: - Created an API key from [Pimlico](https://www.pimlico.io/). - Two private keys for testing purposes. The second key will need some funds to pay for gas. -## **1. Setup a Next.js application** +## 1. Setup a Next.js application Initialize a new Next.js app using pnpm with the following command: @@ -38,7 +38,7 @@ When prompted by the CLI: - Select `yes` to TypeScript, ESLint, and App router. - Select `no` to all other questions (Tailwind, `src` directory, and import aliases). -### **Install dependencies** +### Install dependencies For this project, you will use Pimlico's [Permissionless.js](https://docs.pimlico.io/permissionless) to set up a Safe and interact with it and [viem](https://www.npmjs.com/package/viem) for some helper functions. @@ -52,7 +52,7 @@ Run the following command to add all these dependencies to the project: pnpm add permissionless@0.2.0 viem@2 ``` -## Setup project +## 2. Setup project First, set up the project and add some UI and styles so you can focus on the 7579-related code for the rest of the tutorial. @@ -198,7 +198,7 @@ Also, replace the private keys in the `owner` and `owner2` variables with your o You can now run the development server with `pnpm dev` and open the app in your browser at `http://localhost:3000`. You should see a simple UI with three buttons. -## Initialize the clients +## 3. Initialize the clients In the first step, you create the clients that allow you to interact with the smart account. As permissionless.js is just a tiny wrapper around viem, you will use many of viem's functions in this tutorial. @@ -257,7 +257,7 @@ useEffect(() => { If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works. -## Install the 7579 module +## 4. Install the 7579 module Now, add the call that will add the `OwnableExecutor` module to your smart account. @@ -290,7 +290,7 @@ const installModule = async () => { When you open the UI now and click the “Install Module” button, the console should log the module installation process. You can use [jiffyscan.xyz](https://jiffyscan.xyz/) to inspect the user operation hash. From there, you can copy the transaction hash and inspect the transaction with [Etherscan](https://sepolia.etherscan.io/), [Tenderly](https://tenderly.co/), or other block explorers. -## Send a transaction via the 7579 module +## 5. Send a transaction via the 7579 module In the following function, you will use the `OwnableExecutor` module. The module allows owners to execute transactions from the smart account without collecting signatures. For this example, you will send a dummy transaction that sends zero eth to owner1. @@ -344,7 +344,7 @@ Now, when you open the UI and click the “Execute on owned account” button, y You also learned which data format is used to send a 7579 transaction from a module to a Safe. It is exactly the data you packed for the transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. But with most other modules, you don’t have to pack the data yourself; you just call a function on the module, and the module sends the dedicated transaction to the smart account. -## Interact with the 7579 module directly +## 6. Interact with the 7579 module directly Some modules can be configured directly. The `OwnableExecutor` module allows you to add additional owners and remove existing owners. This example outlines how you interact with the module directly to add a new owner. @@ -390,7 +390,7 @@ When you open the UI and click the “Add Owner” button, your console should l That’s it! You have successfully built an app that can interact with a Safe Smart Account using the ERC-7579 standard. You can now deploy and test your app with your Safes and modules. -## **Do more with Safe and ERC-7579** +## Do more with Safe and ERC-7579 You learned how to deploy an ERC-7579-compatible Safe Smart Account and use an ERC-7579-compatible module, the OwnableExecutor from Rhinestone. We hope you enjoyed this tutorial and that the combination of Safe and 7579 will allow you to tap into new functionalities for your decentralized apps. From f97e34fc488a0596f1daa4fffab69b584cfc49ab Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Wed, 18 Sep 2024 12:18:02 +0200 Subject: [PATCH 07/15] fix typo --- pages/advanced/erc-7579/tutorials/7579-tutorial.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index b844a76f..f2b6bf9d 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -352,7 +352,7 @@ The call flow is: 1. Sign a user operation with your smart account client and send it to the bundler. 2. The bundler bundles the user operation into a regular transaction and sends it to the meme pool. -3. The transaction executes a call from your smart account call the module with the defined data. +3. The transaction executes a call from your smart account to the module with the defined data. 4. The module recognizes your smart account as an authorized sender. It stores the new owner of your smart account in its storage. Replace `addOwner` with this function: From 6019313bf62af8b86968c339713c8774e62bdf0d Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Wed, 18 Sep 2024 12:27:29 +0200 Subject: [PATCH 08/15] remove chain from toSafeSmartAccount --- pages/advanced/erc-7579/tutorials/7579-tutorial.mdx | 1 - 1 file changed, 1 deletion(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index f2b6bf9d..b83a90fe 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -218,7 +218,6 @@ useEffect(() => { client: publicClient, owners: [owner], version: '1.4.1', - chain: sepolia, // These modules are required for the 7579 functionality: safe4337ModuleAddress: '0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2', // These are not meant to be used in production as of now. erc7579LaunchpadAddress: '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' // These are not meant to be used in production as of now. From 87b5c7312479e2da983b54db34c71ffb75c49e45 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Fri, 20 Sep 2024 18:11:52 +0200 Subject: [PATCH 09/15] add truncate-eth-address --- .../erc-7579/tutorials/7579-tutorial.mdx | 444 +++++++++++++----- 1 file changed, 332 insertions(+), 112 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index b83a90fe..4fc5c16e 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -49,7 +49,7 @@ For this project, you will use Pimlico's [Permissionless.js](https://docs.pimlic Run the following command to add all these dependencies to the project: ```shell -pnpm add permissionless@0.2.0 viem@2 +pnpm add permissionless@0.2.0 viem@2 truncate-eth-address ``` ## 2. Setup project @@ -62,10 +62,11 @@ Replace the content of `app/globals.css` with the following: ```css :root { - background-color: #121312; - font-family: 'DM Sans', sans-serif; - font-size: 13px; -} + background-color: #121312; + font-family: Citerne, 'DM Sans', sans-serif; + font-size: 14px; + line-height: 1.4; + } * { box-sizing: border-box; @@ -74,19 +75,6 @@ Replace the content of `app/globals.css` with the following: color: #fff; } -button { - background-color: #12ff80; - border: none; - border-radius: 6px; - color: rgba(0, 0, 0, 0.87); - cursor: pointer; - font-weight: bold; - padding: 8px 24px; - margin-top: 24px; - margin-bottom: 24px; - display: block; -} - body { align-items: center; display: flex; @@ -103,18 +91,74 @@ body { padding: 24px; text-align: left; width: 100%; - align-items: center; display: flex; flex-direction: column; + box-shadow: 0 0 100px rgba(18, 255, 128, 0.2); } .title { display: flex; align-items: center; gap: 10px; + margin-bottom: 35px; font-size: large; } +.actions { + display: flex; + justify-content: flex-end; + gap: 16px; + margin-top: 50px; +} + +button { + background-color: #12ff80; + border: none; + border-radius: 6px; + color: rgba(0, 0, 0, 0.87); + border: 1px solid #12ff80; + cursor: pointer; + font-weight: bold; + padding: 8px 24px; + position: relative; +} +button.skip { + background-color: transparent; + border: 1px solid #12ff80; + color: #12ff80; +} + +.button--loading { + color: transparent; + background-color: transparent; +} + +.button--loading::after { + content: ""; + position: absolute; + width: 16px; + height: 16px; + top: 0; + left: 0; + right: 0; + bottom: 0; + margin: auto; + border: 4px solid transparent; + border-top-color: #12ff80; + border-radius: 50%; + animation: button-loading-spinner 1s ease infinite; +} + +@keyframes button-loading-spinner { + from { + transform: rotate(0turn); + } + + to { + transform: rotate(1turn); + } +} + pre { border: 1px solid #303033; border-radius: 8px; @@ -134,62 +178,231 @@ Now, replace the content of `app/page.tsx` with the following code. It includes import { createSmartAccountClient } from 'permissionless' import { sepolia } from 'viem/chains' -import { encodePacked, http, encodeFunctionData, parseAbi } from 'viem' +import { + encodePacked, + http, + encodeFunctionData, + parseAbi, + createWalletClient, + createPublicClient, + custom, + encodeAbiParameters, + parseAbiParameters +} from 'viem' import { erc7579Actions } from 'permissionless/actions/erc7579' -import { createPublicClient, createWalletClient } from 'viem' -import { privateKeyToAccount } from 'viem/accounts' import { createPimlicoClient } from 'permissionless/clients/pimlico' import { toSafeSmartAccount } from 'permissionless/accounts' import { useEffect, useState } from 'react' +import truncateEthAddress from 'truncate-eth-address' export default function Home () { const [safeAccount, setSafeAccount] = useState(null) - const [pimlicoClient, setPimlicoClient] = useState(null) const [smartAccountClient, setSmartAccountClient] = useState(null) - - // The module is deployed as a smart contract on Sepolia: + const [ownerAddress, setOwnerAddress] = useState(null) + const [publicClient, setPublicClient] = useState<>(null) + const [executorAddress, setExecutorAddress] = useState(null) + const [safeAddress, setSafeAddress] = useState(null) + const [safeIsDeployed, setSafeIsDeployed] = useState(false) + const [moduleIsInstalled, setModuleIsInstalled] = useState(false) + const [executorTransactionIsSent, setExecutorTransactionIsSent] = + useState(false) + const [ownerIsAdded, setOwnerIsAdded] = useState(false) + const [moduleIsUninstalled, setModuleIsUninstalled] = useState(false) + const [loading, setLoading] = useState(false) + + // The module we will use is deployed as a smart contract on Sepolia: const ownableExecutorModule = '0xc98B026383885F41d9a995f85FC480E9bb8bB891' - // Make sure to add your own API key to the Pimlico URL: + // We create a wallet client to connect to MetaMask: + const walletClient = createWalletClient({ + chain: sepolia, + transport: custom(window.ethereum!) + }) + + // TODO: Make sure to add your own API key to the Pimlico URL: const pimlicoUrl = 'https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY' - - - // You will use two accounts for this example: - // owner is the account that owns the smart account and will install the module. - // owner2 is the account that will be added as an owner to the smart account via the module. - // Both accounts are created from private keys. Make sure to replace them with your own private keys. - // These are the private keys of anvil, don't use them in production, don't send any real funds to these accounts. - const owner = privateKeyToAccount( - '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' - ) - const owner2 = privateKeyToAccount( - '0x59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d' - ) - - // These functions will be filled with code in the following steps: + // The Pimlico client is used as a paymaster: + const pimlicoClient = createPimlicoClient({ + transport: http(pimlicoUrl), + chain: sepolia + }) + // Check for connected accounts on page load: useEffect(() => { - const init = async () => {} - init() + checkAddresses() }, []) + // Check whether the user has connected two accounts, without MetaMask popping up: + const checkAddresses = async () => { + const addresses = await walletClient.getAddresses() + setOwnerAddress(addresses[0]) + setExecutorAddress(addresses[1]) + if (addresses.length >= 2) { + init() + } + } + + const connectWallets = async () => { + // Only at the request address call, MetaMask will pop up and ask the user to connect: + await walletClient.requestAddresses() + checkAddresses() + } + + // The following functions will be filled with code in the following steps: + + const init = async () => {} + const installModule = async () => {} const executeOnOwnedAccount = async () => {} const addOwner = async () => {} + const uninstallModule = async () => {} + + // Depending on the state of the tutorial, different cards are displayed: + // Step 1: Connect Wallets + if (!ownerAddress || !executorAddress) { + return ( +
+
Connect Wallets
+
+ Please ensure to connect with two accounts to this site. The second + account needs to have some Sepolia Eth for gas. +
+
+ +
+
+ ) + } + + // Step 2: Install Module + if (!moduleIsInstalled) { + return ( +
+
Install Module
+
+ Your Safe has the address{' '} + {safeAddress && truncateEthAddress(safeAddress)} and is{' '} + {safeIsDeployed ? 'deployed' : 'not yet deployed'}. + {!safeIsDeployed && + 'It will be deployed with your first transaction, when you install the module.'} +
+
+ You can now install the module. MetaMask will ask you to sign a + message after clicking the button. +
+
+ +
+
+ ) + } + + // Step 3: Execute on Owned Account + if (!executorTransactionIsSent) { + return ( +
+
Execute on owned account
+
+ You can now execute a transaction on the owned account as the + executor. In this case, you will send a dummy transaction. But you + could also claim the ownership of the account. Please notice, that the + app requests a transaction from the second account. +
+
+ + +
+
+ ) + } + + // Step 4: Add Owner + if (!ownerIsAdded) { + return ( +
+
Add Owner
+
+ Now, you will interact with the 7579 module directly. You can add an + owner to the Safe. The new owner will be able to execute transactions + on the Safe. +
+
+
+ + +
+
+
+ ) + } + + // Step 5: Uninstall Module + if (!moduleIsUninstalled) { + return ( +
+
Uninstall Module
+
+ To finish the lifecycle of the module, you can now uninstall the + module. MetaMask will ask you to sign a message after clicking the + button. +
+
+ +
+
+ ) + } + + // Step 6: Finish return (
-
Safe 7579 Module
- - - +
Well done
+
+ You have successfully installed, executed on, interacted with, and + uninstalled the module. This tutorial is now complete. +
) } + ``` Make sure to add your Pimlico API key to the `pimlicoUrl` variable. You can find your API key in the Pimlico dashboard. @@ -202,56 +415,59 @@ You can now run the development server with `pnpm dev` and open the app in your In the first step, you create the clients that allow you to interact with the smart account. As permissionless.js is just a tiny wrapper around viem, you will use many of viem's functions in this tutorial. -To add this code, overwrite the `useEffect` function with this one: +To add this code, overwrite the `init` function with this one: ```tsx -useEffect(() => { - const init = async () => { - // The public client by viem is used as a transport layer: - const publicClient = createPublicClient({ - transport: http('https://rpc.ankr.com/eth_sepolia'), - chain: sepolia - }) - - // The safe account is created using the public client: - const safeAccount = await toSafeSmartAccount({ - client: publicClient, - owners: [owner], - version: '1.4.1', - // These modules are required for the 7579 functionality: - safe4337ModuleAddress: '0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2', // These are not meant to be used in production as of now. - erc7579LaunchpadAddress: '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' // These are not meant to be used in production as of now. - }) - - // The Pimlico client is used as a paymaster: - const pimlicoClient = createPimlicoClient({ - transport: http(pimlicoUrl), - chain: sepolia - }) - - // Finally, create the smart account client, which provides functionality to interact with the smart account: - const smartAccountClient = createSmartAccountClient({ - account: safeAccount, - chain: sepolia, - bundlerTransport: http(pimlicoUrl), - paymaster: pimlicoClient, - userOperation: { - estimateFeesPerGas: async () => { - return (await pimlicoClient.getUserOperationGasPrice()).fast - } +const init = async () => { + // The public client is required for the safe account creation: + const publicClient = createPublicClient({ + transport: http('https://rpc.ankr.com/eth_sepolia'), + chain: sepolia + }) + + // The safe account is created using the public client: + const safeAccount = await toSafeSmartAccount({ + client: publicClient, + owners: [walletClient], + version: '1.4.1', + chain: sepolia, + // These modules are required for the 7579 functionality: + safe4337ModuleAddress: '0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2', // These are not meant to be used in production as of now. + erc7579LaunchpadAddress: '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' // These are not meant to be used in production as of now. + }) + + setSafeAddress(safeAccount.address) + setSafeIsDeployed(await safeAccount.isDeployed()) + + // Finally, we create the smart account client, which provides functionality to interact with the smart account: + const smartAccountClient = createSmartAccountClient({ + account: safeAccount, + chain: sepolia, + bundlerTransport: http(pimlicoUrl), + paymaster: pimlicoClient, + userOperation: { + estimateFeesPerGas: async () => { + return (await pimlicoClient.getUserOperationGasPrice()).fast } - }).extend(erc7579Actions()) + } + }).extend(erc7579Actions()) - // Store the clients in the state to use them in the following steps: - setSafeAccount(safeAccount) - setPimlicoClient(pimlicoClient) - setSmartAccountClient(smartAccountClient) + // Check whether the module has been installed already: + const isModuleInstalled = await smartAccountClient.isModuleInstalled({ + address: ownableExecutorModule, + type: 'executor', + context: '0x' + }) - console.log('setup done') - } + setModuleIsInstalled(isModuleInstalled) + + // We store the clients in the state to use them in the following steps: + setSafeAccount(safeAccount) + setSmartAccountClient(smartAccountClient) + setPublicClient(publicClient) - init() -}, []) + console.log('setup done') +} ``` If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works. @@ -264,6 +480,7 @@ Overwrite the `installModule` function with this one. ```tsx const installModule = async () => { + setLoading(true) console.log('Installing module...') // The smart accounts client operates on 4337. It does not send transactions directly but instead creates user @@ -273,17 +490,21 @@ const installModule = async () => { const userOpHash = await smartAccountClient.installModule({ type: 'executor', address: ownableExecutorModule, - context: encodePacked(['address'], [owner2.address]) + context: encodePacked(['address'], [executorAddress]) }) console.log('User operation hash:', userOpHash, '\nwaiting for receipt...') - // After sending the user operation, wait for the transaction to be settled: + // After we sent the user operation, we wait for the transaction to be settled: const transactionReceipt = await pimlicoClient.waitForUserOperationReceipt({ hash: userOpHash }) console.log('Module installed:', transactionReceipt) + + setModuleIsInstalled(true) + setSafeIsDeployed(await safeAccount?.isDeployed()) + setLoading(false) } ``` @@ -303,20 +524,10 @@ Replace the `executeOnOwnedAccount` function with this code: ```tsx const executeOnOwnedAccount = async () => { + setLoading(true) console.log('Executing on owned account...') - // Create a wallet client for the owner2 account. This client is used to send transactions on behalf of the - // owner2. This transaction is sent as a regular transaction, so it is not free. Make sure owner2 owns enough funds - // to pay for gas. - const walletClient = createWalletClient({ - account: owner2, - transport: http('https://rpc.ankr.com/eth_sepolia'), - chain: sepolia - }) - - console.log('wallet client', walletClient) - - // Encode the transaction you want the smart account to send. The fields are: + // We encode the transaction we want the smart account to send. The fields are: // - to (address) // - value (uint256) // - data (bytes) @@ -326,16 +537,22 @@ const executeOnOwnedAccount = async () => { ['0xa6d3DEBAAB2B8093e69109f23A75501F864F74e2', 0n, '0x'] ) - // Now, call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe - // account and the data you want to execute. This will make the smart account send the transaction that is encoded above. + // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe + // account and the data we want to execute. This will make our smart account send the transaction that is encoded above. const hash = await walletClient.writeContract({ + account: executorAddress, abi: parseAbi(['function executeOnOwnedAccount(address, bytes)']), functionName: 'executeOnOwnedAccount', - args: [safeAccount?.address, executeOnOwnedAccountData], + args: [safeAddress, executeOnOwnedAccountData], address: ownableExecutorModule }) console.log('Executed on owned account, transaction hash:', hash) + + await publicClient.waitForTransactionReceipt({ hash }) + + setExecutorTransactionIsSent(true) + setLoading(false) } ``` @@ -358,16 +575,17 @@ Replace `addOwner` with this function: ```tsx const addOwner = async () => { + setLoading(true) console.log('Adding owner...') - // The addOwner function is part of the OwnableExecutorModule. Encode the function data using the viem library: + // The addOwner function is part of the OwnableExecutorModule. We encode the function data using the viem library: const addOwnerData = encodeFunctionData({ abi: parseAbi(['function addOwner(address)']), functionName: 'addOwner', - args: ['0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC'] + args: ['0x0000000000000000000000000000000000000002'] // We add 0x2 as the new owner just as an example. }) - // Use the smart account client to send the user operation: In this call, the smart account calls the `addOwner` + // We use the smart account client to send the user operation: In this call, our smart account calls the `addOwner` // function at the `ownableExecutorModule` with the new owner's address. const userOp = await smartAccountClient.sendUserOperation({ calls: [{ to: ownableExecutorModule, value: 0, data: addOwnerData }] @@ -375,12 +593,14 @@ const addOwner = async () => { console.log('User operation:', userOp, '\nwaiting for tx receipt...') - // Wait for the transaction to be settled: + // Again, we wait for the transaction to be settled: const receipt = await pimlicoClient.waitForUserOperationReceipt({ hash: userOp }) console.log('Owner added, tx receipt:', receipt) + setOwnerIsAdded(true) + setLoading(false) } ``` From 799167ae9da0b988bbeabb0ce36cbd71fa253f1b Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Fri, 20 Sep 2024 18:47:29 +0200 Subject: [PATCH 10/15] update tutorial --- .../erc-7579/tutorials/7579-tutorial.mdx | 84 ++++++++++++++----- 1 file changed, 65 insertions(+), 19 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 4fc5c16e..46cf5280 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -3,7 +3,7 @@ import { Callout } from 'nextra/components' # How to build an app with Safe and ERC-7579 -The smart account ecosystem needed to be more cohesive, with each provider building its modules, often incompatible with other smart account implementations. Developers had to build new modules compatible with their smart accounts or miss out on essential application features. +The smart account ecosystem needed to be more cohesive. Each provider built its modules, which were often incompatible with other smart account implementations. Developers had to build new modules compatible with their smart accounts or miss out on essential application features. [ERC-7579](https://docs.safe.global/advanced/erc-7579/overview) aims to ensure interoperability across implementations. It defines the account interface so developers can implement modules for all smart accounts that follow this standard. The Safe7579 Adapter makes your Safe compatible with any ERC-7579 modules. As a developer building with Safe, you can access a rich ecosystem of modules to add features to your application. @@ -13,7 +13,7 @@ In this tutorial, you will build an app that can: - Send a transaction via the 7579 module (Send a dummy transaction as the new owner via `executeOnOwnedAccount`) - Interact with the 7579 directly to add a new owner to the module -You can find the full code for this tutorial in the [Safe7579 module tutorial repository](https://github.com/5afe/safe-7579-tutorial). +The full code for this tutorial is in the [Safe7579 module tutorial repository](https://github.com/5afe/safe-7579-tutorial). ## Prerequisites @@ -23,7 +23,8 @@ Before progressing with the tutorial, please make sure you have the following: - Downloaded and installed [Node.js](https://nodejs.org/en/download/package-manager) and [pnpm](https://pnpm.io/installation). - Created an API key from [Pimlico](https://www.pimlico.io/). -- Two private keys for testing purposes. The second key will need some funds to pay for gas. +- Metamask installed in your browser and connected to the Sepolia network. +- Two test accounts in Metamask, the second with some Sepolia Eth for gas. ## 1. Setup a Next.js application @@ -171,7 +172,7 @@ pre { ### Add a scaffold React component -Now, replace the content of `app/page.tsx` with the following code. It includes all necessary imports, the React component and the UI, and empty functions that you will fill with code in the following steps. From now on, you will only work on this file. +Now, replace the content of `app/page.tsx` with the following code. It includes all necessary imports, the React component and the UI, and empty functions you will fill with code in the following steps. From now on, you will only work on this file. ```tsx 'use client' @@ -267,7 +268,7 @@ export default function Home () { if (!ownerAddress || !executorAddress) { return (
-
Connect Wallets
+
Connect two accounts
Please ensure to connect with two accounts to this site. The second account needs to have some Sepolia Eth for gas. @@ -293,7 +294,7 @@ export default function Home () {
You can now install the module. MetaMask will ask you to sign a - message after clicking the button. + message with the first account after clicking the button.
+
+ When you click the button, Metamask will request a transaction from + the second account.
@@ -375,7 +379,7 @@ export default function Home () {
Uninstall Module
- To finish the lifecycle of the module, you can now uninstall the + To finish the module's lifecycle, you can now uninstall the module. MetaMask will ask you to sign a message after clicking the button.
@@ -396,8 +400,9 @@ export default function Home () {
Well done
- You have successfully installed, executed on, interacted with, and - uninstalled the module. This tutorial is now complete. + Congratulations! You've successfully installed, executed, + interacted with, and uninstalled the module. This tutorial is now + complete. Great job! Keep exploring!
) @@ -405,11 +410,9 @@ export default function Home () { ``` -Make sure to add your Pimlico API key to the `pimlicoUrl` variable. You can find your API key in the Pimlico dashboard. +Add your Pimlico API key to the `pimlicoUrl` variable. You can find your API key in the Pimlico dashboard. -Also, replace the private keys in the `owner` and `owner2` variables with your own private keys for testing purposes. - -You can now run the development server with `pnpm dev` and open the app in your browser at `http://localhost:3000`. You should see a simple UI with three buttons. +You can now run the development server with `pnpm dev` and open the app in your browser at `http://localhost:3000`. You should see a card that asks you to connect two wallets. Connect two wallets to proceed with the tutorial. ## 3. Initialize the clients @@ -470,7 +473,7 @@ const init = async () => { } ``` -If you run your app with `pnpm dev`, the console will log ‘setup done’ when everything works. +You must refresh your page after adding this code, as the initial site load will trigger the `init` function and set up the Safe account and the Smart account client. You can check the console to see if the setup was successful. ## 4. Install the 7579 module @@ -556,9 +559,9 @@ const executeOnOwnedAccount = async () => { } ``` -Now, when you open the UI and click the “Execute on owned account” button, your console should log the transaction. You can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter, to your Safe, and to the final receiver of the transaction. +When you open the UI and click the “Execute on owned account” button, your console should log the transaction. You can inspect the transaction with Tenderly to follow the call stack from the module over the Safe 7579 adapter to your Safe and the transaction's final receiver. -You also learned which data format is used to send a 7579 transaction from a module to a Safe. It is exactly the data you packed for the transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. But with most other modules, you don’t have to pack the data yourself; you just call a function on the module, and the module sends the dedicated transaction to the smart account. +You also learned the required data format to send a 7579 transaction from a module to a Safe. It is precisely the data you packed for the transaction in `executeOnOwnedAccountData`. Every other 7579 module uses the same data type to send transactions to a Safe. However, with most other modules, you don’t have to pack the data yourself; you call a function on the module, and the module sends the dedicated transaction to the smart account. ## 6. Interact with the 7579 module directly @@ -606,6 +609,49 @@ const addOwner = async () => { When you open the UI and click the “Add Owner” button, your console should log the user operation that adds a new owner. Make sure to inspect the final transaction (you can get the transaction hash from jiffyscan.xyz) to understand the call stack from the smart account to the module. +## 7. Uninstall the 7579 module + +The last step is to uninstall the module. If the module is no longer needed, you can remove it from the smart account. + +Replace the `uninstallModule` function with this code: + +```tsx + const uninstallModule = async () => { + setLoading(true) + console.log('Uninstalling module...') + + // To uninstall the module, use the `uninstallModule`. + // You have to pack the abi parameter yourself: + // - previousEntry (address): The address of the previous entry in the module sentinel list. + // - deInitData (bytes): The data that is passed to the deInit function of the module. + // As this is the only module, the previous entry is the sentinel address 0x1. The deInitData is empty for the + // OwnableExecutor. + const userOp = await smartAccountClient.uninstallModule({ + type: 'executor', + address: ownableExecutorModule, + context: encodeAbiParameters( + parseAbiParameters('address prevEntry, bytes memory deInitData'), + ['0x0000000000000000000000000000000000000001', '0x'] + ) + }) + + console.log('User operation:', userOp, '\nwaiting for tx receipt...') + + // We wait for the transaction to be settled: + const receipt = await pimlicoClient.waitForUserOperationReceipt({ + hash: userOp + }) + + console.log('Module uninstalled, tx receipt:', receipt) + setModuleIsUninstalled(true) + setLoading(false) +} +``` + +In the last step of the UI, you can now click the “Uninstall Module” button to remove the module from the smart account. Notice that depending on the type of the 7579 module, the method required different `deInitData`. + +Also, you have to pass the correct previous entry address to the `uninstallModule` function. If you have only one module installed, the previous entry is the [sentinel address](https://github.com/rhinestonewtf/sentinellist/blob/main/src/SentinelList.sol#L5) `0x1`. + That’s it! You have successfully built an app that can interact with a Safe Smart Account using the ERC-7579 standard. You can now deploy and test your app with your Safes and modules. From 2832750514abfae33b58552f5013e3770e711079 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Tue, 24 Sep 2024 15:57:12 +0200 Subject: [PATCH 11/15] update tutorial with types --- .../erc-7579/tutorials/7579-tutorial.mdx | 114 ++++++++++++------ 1 file changed, 77 insertions(+), 37 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 46cf5280..58d3ff1a 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -50,7 +50,7 @@ For this project, you will use Pimlico's [Permissionless.js](https://docs.pimlic Run the following command to add all these dependencies to the project: ```shell -pnpm add permissionless@0.2.0 viem@2 truncate-eth-address +pnpm add permissionless@0.2.0 viem@2.21.7 truncate-eth-address@1.0.2 ``` ## 2. Setup project @@ -188,19 +188,41 @@ import { createPublicClient, custom, encodeAbiParameters, - parseAbiParameters + parseAbiParameters, + Transport, + HttpTransport, + Client } from 'viem' -import { erc7579Actions } from 'permissionless/actions/erc7579' -import { createPimlicoClient } from 'permissionless/clients/pimlico' -import { toSafeSmartAccount } from 'permissionless/accounts' +import { Erc7579Actions, erc7579Actions } from 'permissionless/actions/erc7579' +import { + createPimlicoClient, + PimlicoClient +} from 'permissionless/clients/pimlico' +import { + toSafeSmartAccount, + ToSafeSmartAccountReturnType +} from 'permissionless/accounts' import { useEffect, useState } from 'react' import truncateEthAddress from 'truncate-eth-address' +import { SendUserOperationParameters } from 'viem/account-abstraction' export default function Home () { - const [safeAccount, setSafeAccount] = useState(null) - const [smartAccountClient, setSmartAccountClient] = useState(null) + const [safeAccount, setSafeAccount] = + useState | null>(null) + const [smartAccountClient, setSmartAccountClient] = useState< + | (Client< + HttpTransport, + typeof sepolia, + ToSafeSmartAccountReturnType<'0.7'> + > & + Erc7579Actions> & { + sendUserOperation: ( + params: SendUserOperationParameters + ) => Promise + }) + | null + >(null) const [ownerAddress, setOwnerAddress] = useState(null) - const [publicClient, setPublicClient] = useState<>(null) const [executorAddress, setExecutorAddress] = useState(null) const [safeAddress, setSafeAddress] = useState(null) const [safeIsDeployed, setSafeIsDeployed] = useState(false) @@ -215,8 +237,13 @@ export default function Home () { const ownableExecutorModule = '0xc98B026383885F41d9a995f85FC480E9bb8bB891' // We create a wallet client to connect to MetaMask: - const walletClient = createWalletClient({ + const walletClient = createWalletClient< + Transport, + typeof sepolia, + `0x${string}` + >({ chain: sepolia, + // @ts-expect-error MetaMask is a requirement for this tutorial transport: custom(window.ethereum!) }) @@ -225,7 +252,11 @@ export default function Home () { 'https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY' // The Pimlico client is used as a paymaster: - const pimlicoClient = createPimlicoClient({ + const pimlicoClient = createPimlicoClient< + '0.7', + HttpTransport, + typeof sepolia + >({ transport: http(pimlicoUrl), chain: sepolia }) @@ -233,6 +264,7 @@ export default function Home () { // Check for connected accounts on page load: useEffect(() => { checkAddresses() + // eslint-disable-next-line react-hooks/exhaustive-deps }, []) // Check whether the user has connected two accounts, without MetaMask popping up: @@ -251,6 +283,12 @@ export default function Home () { checkAddresses() } + // The public client is required for the safe account creation: + const publicClient = createPublicClient({ + transport: http('https://rpc.ankr.com/eth_sepolia'), + chain: sepolia + }) + // The following functions will be filled with code in the following steps: const init = async () => {} @@ -299,7 +337,7 @@ export default function Home () {
@@ -334,7 +372,7 @@ export default function Home () { @@ -364,7 +402,10 @@ export default function Home () { > Skip -
@@ -386,7 +427,7 @@ export default function Home () {
@@ -407,7 +448,6 @@ export default function Home () {
) } - ``` Add your Pimlico API key to the `pimlicoUrl` variable. You can find your API key in the Pimlico dashboard. @@ -422,18 +462,14 @@ To add this code, overwrite the `init` function with this one: ```tsx const init = async () => { - // The public client is required for the safe account creation: - const publicClient = createPublicClient({ - transport: http('https://rpc.ankr.com/eth_sepolia'), - chain: sepolia - }) - // The safe account is created using the public client: - const safeAccount = await toSafeSmartAccount({ + const safeAccount = await toSafeSmartAccount< + '0.7', + '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' + >({ client: publicClient, owners: [walletClient], version: '1.4.1', - chain: sepolia, // These modules are required for the 7579 functionality: safe4337ModuleAddress: '0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2', // These are not meant to be used in production as of now. erc7579LaunchpadAddress: '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' // These are not meant to be used in production as of now. @@ -443,7 +479,12 @@ const init = async () => { setSafeIsDeployed(await safeAccount.isDeployed()) // Finally, we create the smart account client, which provides functionality to interact with the smart account: - const smartAccountClient = createSmartAccountClient({ + const smartAccountClient = createSmartAccountClient< + HttpTransport, + typeof sepolia, + ToSafeSmartAccountReturnType<'0.7'>, + PimlicoClient<'0.7', HttpTransport, typeof sepolia> + >({ account: safeAccount, chain: sepolia, bundlerTransport: http(pimlicoUrl), @@ -467,7 +508,6 @@ const init = async () => { // We store the clients in the state to use them in the following steps: setSafeAccount(safeAccount) setSmartAccountClient(smartAccountClient) - setPublicClient(publicClient) console.log('setup done') } @@ -490,23 +530,23 @@ const installModule = async () => { // operations. The Pimlico bundler takes those user operations and sends them to the blockchain as regular // transactions. We also use the Pimlico paymaster to sponsor the transaction. So, all interactions are free // on Sepolia. - const userOpHash = await smartAccountClient.installModule({ + const userOpHash = await smartAccountClient?.installModule({ type: 'executor', address: ownableExecutorModule, - context: encodePacked(['address'], [executorAddress]) + context: encodePacked(['address'], [executorAddress as `0x${string}`]) }) console.log('User operation hash:', userOpHash, '\nwaiting for receipt...') // After we sent the user operation, we wait for the transaction to be settled: const transactionReceipt = await pimlicoClient.waitForUserOperationReceipt({ - hash: userOpHash + hash: userOpHash as `0x${string}` }) console.log('Module installed:', transactionReceipt) setModuleIsInstalled(true) - setSafeIsDeployed(await safeAccount?.isDeployed()) + setSafeIsDeployed((await safeAccount?.isDeployed()) ?? false) setLoading(false) } ``` @@ -543,16 +583,16 @@ const executeOnOwnedAccount = async () => { // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe // account and the data we want to execute. This will make our smart account send the transaction that is encoded above. const hash = await walletClient.writeContract({ - account: executorAddress, + account: executorAddress as `0x${string}`, abi: parseAbi(['function executeOnOwnedAccount(address, bytes)']), functionName: 'executeOnOwnedAccount', - args: [safeAddress, executeOnOwnedAccountData], + args: [safeAddress as `0x${string}`, executeOnOwnedAccountData], address: ownableExecutorModule }) console.log('Executed on owned account, transaction hash:', hash) - await publicClient.waitForTransactionReceipt({ hash }) + await publicClient?.waitForTransactionReceipt({ hash }) setExecutorTransactionIsSent(true) setLoading(false) @@ -590,15 +630,15 @@ const addOwner = async () => { // We use the smart account client to send the user operation: In this call, our smart account calls the `addOwner` // function at the `ownableExecutorModule` with the new owner's address. - const userOp = await smartAccountClient.sendUserOperation({ - calls: [{ to: ownableExecutorModule, value: 0, data: addOwnerData }] + const userOp = await smartAccountClient?.sendUserOperation({ + calls: [{ to: ownableExecutorModule, value: 0n, data: addOwnerData }] }) console.log('User operation:', userOp, '\nwaiting for tx receipt...') // Again, we wait for the transaction to be settled: const receipt = await pimlicoClient.waitForUserOperationReceipt({ - hash: userOp + hash: userOp as `0x${string}` }) console.log('Owner added, tx receipt:', receipt) @@ -626,7 +666,7 @@ Replace the `uninstallModule` function with this code: // - deInitData (bytes): The data that is passed to the deInit function of the module. // As this is the only module, the previous entry is the sentinel address 0x1. The deInitData is empty for the // OwnableExecutor. - const userOp = await smartAccountClient.uninstallModule({ + const userOp = await smartAccountClient?.uninstallModule({ type: 'executor', address: ownableExecutorModule, context: encodeAbiParameters( @@ -639,7 +679,7 @@ Replace the `uninstallModule` function with this code: // We wait for the transaction to be settled: const receipt = await pimlicoClient.waitForUserOperationReceipt({ - hash: userOp + hash: userOp as `0x${string}` }) console.log('Module uninstalled, tx receipt:', receipt) From 23608b0c2dec83bd34af92e4f368e35e263218f9 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Tue, 24 Sep 2024 17:05:09 +0200 Subject: [PATCH 12/15] update tutorial --- .../erc-7579/tutorials/7579-tutorial.mdx | 41 ++++++++----------- 1 file changed, 16 insertions(+), 25 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 58d3ff1a..243ca6f5 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -191,13 +191,11 @@ import { parseAbiParameters, Transport, HttpTransport, - Client + Client, + parseEther } from 'viem' import { Erc7579Actions, erc7579Actions } from 'permissionless/actions/erc7579' -import { - createPimlicoClient, - PimlicoClient -} from 'permissionless/clients/pimlico' +import { createPimlicoClient } from 'permissionless/clients/pimlico' import { toSafeSmartAccount, ToSafeSmartAccountReturnType @@ -210,11 +208,7 @@ export default function Home () { const [safeAccount, setSafeAccount] = useState | null>(null) const [smartAccountClient, setSmartAccountClient] = useState< - | (Client< - HttpTransport, - typeof sepolia, - ToSafeSmartAccountReturnType<'0.7'> - > & + | (Client & Erc7579Actions> & { sendUserOperation: ( params: SendUserOperationParameters @@ -244,7 +238,7 @@ export default function Home () { >({ chain: sepolia, // @ts-expect-error MetaMask is a requirement for this tutorial - transport: custom(window.ethereum!) + transport: custom(typeof window !== 'undefined' ? window.ethereum! : null) }) // TODO: Make sure to add your own API key to the Pimlico URL: @@ -252,11 +246,7 @@ export default function Home () { 'https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY' // The Pimlico client is used as a paymaster: - const pimlicoClient = createPimlicoClient< - '0.7', - HttpTransport, - typeof sepolia - >({ + const pimlicoClient = createPimlicoClient({ transport: http(pimlicoUrl), chain: sepolia }) @@ -479,12 +469,7 @@ const init = async () => { setSafeIsDeployed(await safeAccount.isDeployed()) // Finally, we create the smart account client, which provides functionality to interact with the smart account: - const smartAccountClient = createSmartAccountClient< - HttpTransport, - typeof sepolia, - ToSafeSmartAccountReturnType<'0.7'>, - PimlicoClient<'0.7', HttpTransport, typeof sepolia> - >({ + const smartAccountClient = createSmartAccountClient({ account: safeAccount, chain: sepolia, bundlerTransport: http(pimlicoUrl), @@ -577,7 +562,7 @@ const executeOnOwnedAccount = async () => { // In this example case, it is a dummy transaction with zero data. const executeOnOwnedAccountData = encodePacked( ['address', 'uint256', 'bytes'], - ['0xa6d3DEBAAB2B8093e69109f23A75501F864F74e2', 0n, '0x'] + ['0xa6d3DEBAAB2B8093e69109f23A75501F864F74e2', parseEther('0'), '0x'] ) // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe @@ -631,7 +616,13 @@ const addOwner = async () => { // We use the smart account client to send the user operation: In this call, our smart account calls the `addOwner` // function at the `ownableExecutorModule` with the new owner's address. const userOp = await smartAccountClient?.sendUserOperation({ - calls: [{ to: ownableExecutorModule, value: 0n, data: addOwnerData }] + calls: [ + { + to: ownableExecutorModule, + value: parseEther('0'), + data: addOwnerData + } + ] }) console.log('User operation:', userOp, '\nwaiting for tx receipt...') @@ -656,7 +647,7 @@ The last step is to uninstall the module. If the module is no longer needed, you Replace the `uninstallModule` function with this code: ```tsx - const uninstallModule = async () => { +const uninstallModule = async () => { setLoading(true) console.log('Uninstalling module...') From 37a6781c16e86be98925d4f6952d284069a9e689 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Tue, 24 Sep 2024 18:23:35 +0200 Subject: [PATCH 13/15] update tutorial and correct server side next error --- .../erc-7579/tutorials/7579-tutorial.mdx | 38 ++++++++++--------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 243ca6f5..f45c8777 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -189,7 +189,6 @@ import { custom, encodeAbiParameters, parseAbiParameters, - Transport, HttpTransport, Client, parseEther @@ -226,21 +225,13 @@ export default function Home () { const [ownerIsAdded, setOwnerIsAdded] = useState(false) const [moduleIsUninstalled, setModuleIsUninstalled] = useState(false) const [loading, setLoading] = useState(false) + const [walletClient, setWalletClient] = useState | null>(null) // The module we will use is deployed as a smart contract on Sepolia: const ownableExecutorModule = '0xc98B026383885F41d9a995f85FC480E9bb8bB891' - // We create a wallet client to connect to MetaMask: - const walletClient = createWalletClient< - Transport, - typeof sepolia, - `0x${string}` - >({ - chain: sepolia, - // @ts-expect-error MetaMask is a requirement for this tutorial - transport: custom(typeof window !== 'undefined' ? window.ethereum! : null) - }) - // TODO: Make sure to add your own API key to the Pimlico URL: const pimlicoUrl = 'https://api.pimlico.io/v2/sepolia/rpc?apikey=YOUR_PIMLICO_API_KEY' @@ -251,15 +242,26 @@ export default function Home () { chain: sepolia }) + useEffect(() => { + // We create a wallet client to connect to MetaMask: + const walletClient = createWalletClient({ + chain: sepolia, + // @ts-expect-error MetaMask is a requirement for this tutorial + transport: custom(typeof window !== 'undefined' ? window.ethereum! : null) + }) + setWalletClient(walletClient) + }, []) + // Check for connected accounts on page load: useEffect(() => { checkAddresses() // eslint-disable-next-line react-hooks/exhaustive-deps - }, []) + }, [walletClient]) // Check whether the user has connected two accounts, without MetaMask popping up: const checkAddresses = async () => { - const addresses = await walletClient.getAddresses() + if (!walletClient) return + const addresses = await walletClient!.getAddresses() setOwnerAddress(addresses[0]) setExecutorAddress(addresses[1]) if (addresses.length >= 2) { @@ -269,7 +271,7 @@ export default function Home () { const connectWallets = async () => { // Only at the request address call, MetaMask will pop up and ask the user to connect: - await walletClient.requestAddresses() + await walletClient!.requestAddresses() checkAddresses() } @@ -458,7 +460,8 @@ const init = async () => { '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' >({ client: publicClient, - owners: [walletClient], + // @ts-expect-error The wallet client is set in the useEffect + owners: [walletClient!], version: '1.4.1', // These modules are required for the 7579 functionality: safe4337ModuleAddress: '0x3Fdb5BC686e861480ef99A6E3FaAe03c0b9F32e2', // These are not meant to be used in production as of now. @@ -567,7 +570,8 @@ const executeOnOwnedAccount = async () => { // Now, we call the `executeOnOwnedAccount` function of the `ownableExecutorModule` with the address of the safe // account and the data we want to execute. This will make our smart account send the transaction that is encoded above. - const hash = await walletClient.writeContract({ + const hash = await walletClient!.writeContract({ + chain: sepolia, account: executorAddress as `0x${string}`, abi: parseAbi(['function executeOnOwnedAccount(address, bytes)']), functionName: 'executeOnOwnedAccount', From 7b7b5f77263d1ec489cc1a6d3fa79dfb14028964 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Wed, 25 Sep 2024 11:34:06 +0200 Subject: [PATCH 14/15] update init function --- .../erc-7579/tutorials/7579-tutorial.mdx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index f45c8777..424cabb8 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -468,8 +468,10 @@ const init = async () => { erc7579LaunchpadAddress: '0xEBe001b3D534B9B6E2500FB78E67a1A137f561CE' // These are not meant to be used in production as of now. }) + const isSafeDeployed = await safeAccount.isDeployed() + setSafeAddress(safeAccount.address) - setSafeIsDeployed(await safeAccount.isDeployed()) + setSafeIsDeployed(isSafeDeployed) // Finally, we create the smart account client, which provides functionality to interact with the smart account: const smartAccountClient = createSmartAccountClient({ @@ -485,11 +487,13 @@ const init = async () => { }).extend(erc7579Actions()) // Check whether the module has been installed already: - const isModuleInstalled = await smartAccountClient.isModuleInstalled({ - address: ownableExecutorModule, - type: 'executor', - context: '0x' - }) + const isModuleInstalled = + isSafeDeployed && + (await smartAccountClient.isModuleInstalled({ + address: ownableExecutorModule, + type: 'executor', + context: '0x' + })) setModuleIsInstalled(isModuleInstalled) From 155982d6599d231c37d2fe9b5d1f113931238371 Mon Sep 17 00:00:00 2001 From: valle-xyz Date: Wed, 25 Sep 2024 11:48:09 +0200 Subject: [PATCH 15/15] update wording --- pages/advanced/erc-7579/tutorials/7579-tutorial.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx index 424cabb8..c5273c80 100644 --- a/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx +++ b/pages/advanced/erc-7579/tutorials/7579-tutorial.mdx @@ -509,7 +509,7 @@ You must refresh your page after adding this code, as the initial site load will ## 4. Install the 7579 module -Now, add the call that will add the `OwnableExecutor` module to your smart account. +Now, add the function to install the `OwnableExecutor` module as an `executor` to your smart account. Overwrite the `installModule` function with this one.