From 6782af59dec943e1957e10e1b919f216c24c3ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matev=C5=BE=20Jekovec?= Date: Fri, 24 Nov 2023 15:29:49 +0100 Subject: [PATCH] docs: Migrate Sapphire docs to sapphire-paratime repo --- .gitmodules | 3 + .../dapp/images/sapphire/gasless-gsn-flow.jpg | Bin 150922 -> 0 bytes .../sapphire/gasless-on-chain-signer.svg | 4 - .../hardhat-boilerplate-frontend1.png | Bin 3981 -> 0 bytes .../hardhat-boilerplate-frontend2.png | Bin 11508 -> 0 bytes .../hardhat-boilerplate-frontend3.png | Bin 13182 -> 0 bytes docs/dapp/images/sapphire/sourcify1.png | Bin 35154 -> 0 bytes docs/dapp/images/sapphire/sourcify2.png | Bin 25663 -> 0 bytes docs/dapp/images/sapphire/sourcify3.png | Bin 88187 -> 0 bytes docs/dapp/sapphire/addresses.md | 19 +- docs/dapp/sapphire/authentication.md | 210 +--------- docs/dapp/sapphire/browser.md | 209 +--------- docs/dapp/sapphire/gasless.md | 389 +---------------- docs/dapp/sapphire/guide.mdx | 391 +----------------- docs/dapp/sapphire/images | 1 + docs/dapp/sapphire/precompiles.md | 318 +------------- docs/dapp/sapphire/quickstart.mdx | 208 +--------- docs/dapp/sapphire/security.md | 117 +----- external/sapphire-paratime | 1 + src/editUrl.js | 1 + src/remark/cross-repo-links.js | 3 + 21 files changed, 17 insertions(+), 1857 deletions(-) delete mode 100644 docs/dapp/images/sapphire/gasless-gsn-flow.jpg delete mode 100644 docs/dapp/images/sapphire/gasless-on-chain-signer.svg delete mode 100644 docs/dapp/images/sapphire/hardhat-boilerplate-frontend1.png delete mode 100644 docs/dapp/images/sapphire/hardhat-boilerplate-frontend2.png delete mode 100644 docs/dapp/images/sapphire/hardhat-boilerplate-frontend3.png delete mode 100644 docs/dapp/images/sapphire/sourcify1.png delete mode 100644 docs/dapp/images/sapphire/sourcify2.png delete mode 100644 docs/dapp/images/sapphire/sourcify3.png mode change 100644 => 120000 docs/dapp/sapphire/addresses.md mode change 100644 => 120000 docs/dapp/sapphire/authentication.md mode change 100644 => 120000 docs/dapp/sapphire/browser.md mode change 100644 => 120000 docs/dapp/sapphire/gasless.md mode change 100644 => 120000 docs/dapp/sapphire/guide.mdx create mode 120000 docs/dapp/sapphire/images mode change 100644 => 120000 docs/dapp/sapphire/precompiles.md mode change 100644 => 120000 docs/dapp/sapphire/quickstart.mdx mode change 100644 => 120000 docs/dapp/sapphire/security.md create mode 160000 external/sapphire-paratime diff --git a/.gitmodules b/.gitmodules index b1c953dd35..510d75b006 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,3 +11,6 @@ [submodule "external/cli"] path = external/cli url = https://github.com/oasisprotocol/cli +[submodule "external/sapphire-paratime"] + path = external/sapphire-paratime + url = https://github.com/oasisprotocol/sapphire-paratime diff --git a/docs/dapp/images/sapphire/gasless-gsn-flow.jpg b/docs/dapp/images/sapphire/gasless-gsn-flow.jpg deleted file mode 100644 index 4a3683560e80de052b345f7c62f3b736702f0b43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 150922 zcmeFYXIPWV*Ej06D@D2jf>Hv8ri5PI(vwgmG$DY}0to~RO^V>&N()s&5(rgF5)zs~ zLN8nCO@Rau0;u%9MFADt%l=>IIqyE-&T~GzU(PeRuH2K%J@;DkTWigld)As?Z+^Wy z#s@J2n;rY@w`0eCJNg{^#W`kt?8NbZ%0J&Hj>^f?C;usDPoF+@`rO&`=g*xzckVp* z1@7})yj7=R40WASl2mcvR>6=OMrS)APj1vqv5IxXy7M{rlf6zy3PL zfA&Pt={qNWlRkEw|F;wTzy0byCUL~%5nKQ8`(NeE*;A)aoILm2@uTKIzGKHuoj79s zB=33d^Jh*U=Q{S=@e?Ocoj$`aa8^)CNL5(+maWLeOEMssgQG`g7Jh8}oR&Q%H0;m1 zdX}u3hNh8S2#!!(Qmd}*|)Cq-*NVOQflfg{~)`JViNcM!|oA1 zu_H!~xcM(u{<)q!bwu&>QJX3M5uzu4J8_EV>=76z|GDd^h5zI!0V!eCTecWMA&?r( z&g0L_;@Ytfr$waIJ%eAom(eh?m&NU#0T_ooE~$I@YvvgDQOD!_C-{%uJhpH7Z$kf5 z{~rYY2Z4VhaGwr=m0GjbqAnEB3`e`TeO{e-!jzx66khhtSoB4-s=Dfgw~TnSdU&!+uYOSY~{@bne6H^SvEtB?9WN_AQsCsFCyKgzC#{hacx5j%C+a zH2(GG^D2K|ef7tGhDMup_c~Nv;x@p^zN#3Y%U^?su2mY`4t;OzHybglS<0W~y_f)= zeV z^hRa!&4>ZBr%e<6*`Od^z8ZhI#)#X6)sFmz@unVqRC`elm*X8{ediIE)wwdJHwJ09V+YevB`pr$4BEoysCG>( zs2hb(IP%)h!66GADvtqW`VOv(9A@ zjP+#=Hs^kUtBxZ* zDq_!8;OU0?1XIj1yBIBGs9wF5b|GOVR<#U1u1NZ0o)lbScR_bVgB~p_EqVf}GQON;dVIadYoK(vmJYV>o49VFGpEN=GSkulKF{Z56 z4a>ZbqZdMwlv2`bzI(*qpEx~V6y-f#&)1z7H?RBfY$hBskLd=LH8I8P5jeob=T5O@ zim^%+bD8y8;`^x?=+XRYBL;A@oRt%{imV%MZ+tB-r?`HQ| z@|v?Ea=$Zz)$>F?_k|Q?n^iKcOb)&Vk%2MUUR8bovPoQa-I`g+=w}|IzIP23{topq z;mxGw*|5t~Mu7y7eTyPm=hVlfO|FO7MlkPH_AZS_0RAS9EKZ<&I?Fr1XuaO6-FMcx zVd8|iSCjz@L4Te**Cj&VK9xNPts>~^fEMPA`kz_@ty@ZDn~HS!2MLCtx@|~&!WIYA zUniUuyo6oznV33H4l+sMvI}={PpG$}xmd7?1Kwr1js(dvmo1@mo?wY0ujz)E#O~C= z=Ru3`8m@mq9k7Gj1>Ux7qCq$E$KwgA>FXFG#yy zOobbcIcQc?i7{w;4VLP;6ViG}PDx&fsVGfMl)oYnGQJ>~q#*a;K|;W5qvwKQvm#|F z39KqkyxNP3$PUj)ft;9!^T}wG8iYlMnYf5CZIruS2pj!6)|a*BY@DPxxZGCIEHf9{ zNsNH*hapq8YlCbJ8j9eleA>Q}Ek5gX;+Y80#gQnJKX-Yc|9+;_ zmz02!oOQKXKPc9@FtG-7 zz*og(q*8DK`=W{!QN3_Qarex9&&z`TZ_bw*KO0qv2=mVr6xRfP@~rzt3scfYY!2$2 zlf&T~aIzIq8AekAeG;OM)UJtod-6>9OEtG3=|T;HQIvkX-Gcqo!{!P*lU-d4=;cy1 zt%nXeG*YIYeBPBrM1Z99_3EqbVg?!&Es0iT5z1@HTGDdjR;9T#NEjp%Dz|TNJB$5o zVm>S}F-2wQ)%QsEhsKLezE-^=GY_SXLo;1Hg@#I89Tx|pbX_4<(Jn?KC=feeofHbQ zoHbo!KxKqDf7JBAQArMJAATDb_^KWH(=O_AUFb0OXOPxGy?Vg(GTT<^W6ubezVBsh zxSi^c_hJLoY1{Qt#qd39x;iBO){+#rww(nDBfr>E2hO5HqX2baTultkq;*}GE7|IG z^p{v=NI5MuVx9+e{jo=$Rar^UEmCL6_`=teG56-iW?5-h(#uAQG8AYZBk|=XOT~cR z`})+UhgaSq11+Z9gCpB^5Oexgx&Dir&%ivqwcUyQ?vI0i-Y&Mqd<*3^51s>hQh-;U;-bV65wfUV)^bKbRwjM= z|G=h$hN`sjCJ^yRhQK6ergHcolZW(5EHWqK`oe3omMDLR!1F~xAA)v*;#ibdceSRP zV`KW~RxElI6U1B6?$6fO9w6LWEjsSKObdSDa7v&M^JQ0%Z|UX3d9W!apy9E>S_Bph z;76TMd?Ej(bm8tk?95ufljIf9D|FZFl{?N>8*aHj^~g}f$wSl(K8)}(mR??wGyC{{ z4g|N@I*^5QX(+4~$UwSU%B01}t4felc$x1X8L=tAg3kKzSk{nr-q+}<`n#ITF}r76 zzKhH;9^OU2%iRgn?a(b{%dn{|10E?-7MuO*jqRY5pOb=W2iUfh*r+Z8)&`FzX>iq~ zAL32ken#^icB#*}B|4Sc<W!Z654 zomloYb*_}l&O)F5v?}s1`JSelVOlkqgcUD+1s&Y05GJikEV;TM66sX3$~_5Qak0%*)ez> z@N(q-O#M!;o_>odf`y=L$pZ0=_r?*0NM-)*d6PwJoFiE@bQj!x&mnjPnU8`g+q>Z- zG@HHZs|HIh>s%nx^M|Z6bxGIIHd)x+E1C=_qAYlr?JppLY2Wb|%djjm>QE&Y@qdK` z#&~`uF33DjOYnm#k$b_bLe(Gbwzt8e#GeaYx8Co#F|#W3|MY$fc_K2&fY-^fHiUL& zTGBKc;h1{p(k5c4n{rq={$5n{OIeJ$*NuA{uZ%hahVzi~_(S2SVMMWrE{Y*t@iL4S zH>O=}qeIaA7zvzNaCG4>PsN)*J4@_dJipy!YfQJ=6LfrLJdo~{hieRKS^TgRo>bLr zRc;iLTgDhKiX^%kjm+`H2)UqSBb?KJHdjPujOK|%3n|6!p#ajwuDCsm*AuuG1_r@p z@{w|Smse~{;4&J;;~JTM$iHe|DzO-KBLw?FYxXmrbJwbbvdh;^X527J&v7}4d>e2$ zGF(xm7>5?u6nH=i6BYdqG^Tx+T{)c>t-WmK^Lqu8E8d=cjXIHD;&A3}tTYjcp6HP+h=8$K_M_i}HsLNhNdT{KVuKtdUC6dE21W3XRd8_73w z2o66na-crApArSFyUd_=S384J*Y`Ea6V4#-QEJgrTYMkP-gP1qHy)$=^lAMhZ1|wy z_aX}n$3+2B@X03iPnb8aKg~KDW+As>AHh{tXDWPXNPMR@uqEi% zF|*AIUjZmdGRurQHJO40YR*w!=_u)(%me@=#Dyqd{pB5KxDiBD=GFr(uIvP}ayEV1 z2BhJRpD1-3jv#12wtH^^u+LG`!FW{upCU^N+Vc?yhEV-=kCa(V6^`z~!EwZ^hkr5;LtSzYhQ z}WV?Gm3dN1ExEyh8s z&Pr=GQxGe0(9wNhS|!(D<@@B$lJ=Nu&ju2Qwr;lMZy=54YSbpxStLrz)SC_We$;-U zz~Y2ph`ra_>X+5*U@32uu&EG3S)CStDkr9(msk(90yg9Wh*cZbdoxJDrCT}=Qlft{ zQ-cc#emgIjn@~omFi!PMkMBH)+swScj^( zfGCq|&H3`MWRPk*=w+)|-H%mi1p-}nY|1I^)a{MFBcY6g~j2QnTlUm`j{W-9Hf zD;7h~$?ah#p6cdnlNIV~3})SX-E7!E+hz?A3em#7o$-Dwi{l=CeZl%Y>PJTC{6(SR zF>7aU#G){}X);+XcOf@9r#A=W1bEdyo_8xE#h4?6f(d0A{#miO#mo+V%^$Ae`L+eA z9&NPJZCi7^7(xYS4Q_)j0mu*&3J1O(QsTb6W|ccu?;zGYa1V2i5EOv5d9gFY@Y8Ci zX{>_u$z~7N$7nQZ?drc|?&Ha?~Pb|sk4@e@yvDPwL-PMkrst%I<`eA0J_8XtWR*z50(c8v7 z&f(clI0d{w#a~4{jrdJD3V1~%5e`pZTX5Zg zg49X;etZ)3`EOt8gq)loee;Z757x(;X1_tX&RAlfFZSNj?JgsmVcewA-IcgfS)K37 z8U}^f9>8IwF1zQo_poThL{K>D{xo8Y_~{jVUrtH~P>L^PFD&)Ka_tZ$mSO%>qbZ|V z(8cqD9}5gQDbYU2VDIs34-CW}HZj7bb(AXj#|Ns)7-hweJ+4VZ?6Y~iO`x`gbo~dk z^v~4mSKNdvr;QP2^4T-%epp{=;p?^GT3!~=UDh>rAdRZ4Yfa|KwH&CXmIvQ%%4-e$ z9+_0wxE4wY;v6h0Mm1aFSQQ9-)9Ll8i_h}`+1E;Si389B>-y>i!@Ahmel0_#?g`Gu z>jq(Wx*g=E%5}ih?U~Cl4RcQy12S70rqTY9;DAOkI7nG^g1(_figlcU4R#r( zxa=9@WLMygw~_mxdRciC`@KJH<1x#Y=Cz}S%BtQ9vudeR5oz{Xa;{=sE}bUC#yHLq zKXHXUe&nozr+k*dEyi*592t@c=Fc+keQ0V;e%BV5KN9g*GyP%#WjR|_-Q}FE*B6~0 zAQXlRGF;5q@L~4ol$>Qipmw6E=)}4zl4c_ByAk!nxz3?T{NU#|g!E6{r3?322IgrJG;j56^(bQ%LuYNSM;&~r5sS(E?Eits zSKtHHqW1a71U87%Vzsls!>aY)r%DTHE%#|#z3{2C{;ZjYA)#fXGkO8njpm-6eR~Cy zXJ7EZi;kYiyw4oEB0UnAvn)AW@oA%Bt1$;&DR?*#O4e$=oPAktdWQLI4`gsM`=z_x zuydp2twCpzBBUKsBWJ@(R|0?qW{n^}i-k?uFIE`Aog3-m)^zDncBuy18Y=FwRe`W7 z?rKuAGHeXuY-Mrxc)rdM2weiyqf4@t=I#@byY?s_3J(N~iV`h5(C0~Rm&GWzr#v)x zUvrG{DWj}dc{5qBj?|-G+I^KFb6!Lf-@avev_`3m* zwa|rt!hLoF(bYyRSVJof&Sgd6>o99p<9U!!C@c5&vk&Nfnt6Za_&wv4<0cQpf(;-! za4~pY0TeT$7tR1rC~67$J8qvJ;y7!mj@C0T3M@w)1mt9++izEmFTuAU$o}ibQMzua zyB!Myd%50a;~!y@lqVB)Qxx9!?^WvI4Ijx*d+iVg?YKbAYT{z`li^Iuycy4q-H>D> z@XFM*CRvZqZytei&%Io5x5xeRh-1RN51(a5$znAYA0GJ3%|r(;RFFpI;hN!Ynp=+B zKh|00##%3ys1YmnO7~i$lufrR2igr=y2fS9kQ#}tIX=CU8|+dre+Zum9FIVl5JDDW zuLYkP3VVaE{PXw5cXrj-MnEyhROk9OVzq4WJ`S(Fu($P5=EmV@ynLi`z48V-t|Qf< z(V#W&yFrcSXyC+$yFNP{jo`@d+dtjDg$I1}Z|zr%ebA>~8JRHuQgi=9O9HI5X0>`# zm~Y`DrMnzlkzW`o6TIiC7TA*Q?uga=yaCn__&roj#J*q0@J-+69x<$GxEA%hivuoR zyt2ewdt^A76r4X>s;**moNKtl>IDBiprkdxl4By?C(9 zm>_w14Ybk!$F~bNw&Im9NSQ_3+n^oyj`kdoIx64Z$MW=~Vu+yn>p+pbOC9x)3Kl}` zoPZnVwoD5PsZKK~u&16w!LTM(LS|WWG=Ha{vrZ!5l&A@ip_?Z)Y>shgDq>(J(K;

h{IuUEfroCu1vj1jW-C?Kl^kDG9mA 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 - - -
1.
🔒 call
makeProxyTransaction
(nonce, gasPrice, request, rsv)
1....
3.
 🔒eth.sendTransaction(tx)
3....
Gasless Client
(Node.js, Metamask, Oasis CLI)
Gasless Client...
5.
addr.call(tx)
5....
On-Chain Proxy
contract
On-Chain Proxy...
DAOv1
DAOv1
4.
decrypt tx
4....
Trust
Trust
2.
verify tx
2....
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/dapp/images/sapphire/hardhat-boilerplate-frontend1.png b/docs/dapp/images/sapphire/hardhat-boilerplate-frontend1.png deleted file mode 100644 index 8d085599085b2c3a7844f76f9fab7daa5ce3d11f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3981 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 diff --git a/docs/dapp/images/sapphire/hardhat-boilerplate-frontend2.png b/docs/dapp/images/sapphire/hardhat-boilerplate-frontend2.png deleted file mode 100644 index 49a293bba2bad9044d69e65e087510eda2fa418d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11508 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 q3bSSAM@4v){;Q(Ez|!=p>i zmea@dtlLJ&O;FBu{kDglW3ysjR%1CT!|k3Mb=r_-`pxsuL^vn$1${r1fxTz@j3)c6 zCmjIHlYbTc6E7wuvN1>>Ygw)%c2@s`sW7V5LZd!CM0wNaj?@o9#-eX0T_9ZTtl>&>e55y7I5 ze_!~TI(pE5;I?ExP)hBxm2M0*E7b z5qpA3aXM)YUMYrLgOE%;?^mIg&Old5=|IG*mn;#EfTQ6|8n*yPW%dd=NY4ysXIDup zkHVFuv1bptUC;JCzOEFu9s4(2ekB!rkZ@Fxgf~vMN5->z+mzk+FR}I3p(7Q+DVV;c zR*pAl%Xr}Br+ZV!0PDKvMH@=oKEnKXFXyuhQHLC9HeMc{x61!5AK|eL2(GED#{{P4 zYltgJ9}6kB$@KWjSk9PEa5C?PBWPm~R?aU>2%FO(FIQ&MyS^Nw8c< zCV%nHACd2Fzv6b4x?Q9#{0}C$M_>AbLJd%i8_aH3@)%Fp}GnK zk9n%cFG!Y8b=16NHJVclN*oC9s@f|-9!Z+`S{1e+=NOnADCx}z0-3M5S@41HCD_(} zbt;Cv$Hzj~1o@V-Xy2sZhG>dDIt`)o68(9r*(Kh5hw~zYK!=ej3xV?6+cmKG@#h*= zb@=TbhGPku=7SsLO;8fT1`--11*xx*G&Xo1!s^Da2TinRm@}ubClYe-(Lc2FiZprC z^ZCFWq6Sm`nUPTi7CV>_H~_#@6>zjd)!-E*)jB0fXjAGZCOC3=eL5S;jKXc*XnRa- z_VSRPY0ggZSq&W_lY`s~EBXt9UC@^o|4OdhV~mm5LdBxo6UQp-yju8G#F++ie~)(W za_TmM&O1)~h?MZ;?|pAZu$)!-uldb1$-LDcOfr_`0#TF=PCkdDCoLsr zce6w`I>89WyIBMlMI5VI$gPLt>UcVN?SFJkC|kf~K&f_MY3XVhMX@&Kofx^PG_;uT zy&_+}nq#s*xuTrS6=ifMToOg4o3_!75Og>KZfz1a;jkT!QI3@Hs9cJiMK!nv!I2Vi zApD~l(>Atfmk_VBGy(*5M0&Yi9@S5LzF89mR6n}IPQBKo%U01%mEP555OSG5F#!F- z9%S%95zGe3Yhp@f)gBo>kecI*ce6Vy9Wk4-Rykc2u*EbWDW5rO2%V3s9qhB7KjvN|`X&rOL8$uOHLb zTb-k{nFWfI4o`P6K>K#f<-d4Inb8W!eHu`ICTR|SzaaoeHCG|+^@s_4BlI9o-?*qN z=>6gY2QY#T94NuIn#*5pIbBM?vf8l&Xn{&1_3;XO?|%QFiG+mYN&n_~@K$Bm{;VjQ zsI|54#b+)+!Itpf+B+HZS~3eL3|>*IJR3fFVrzlgXO2`R$rd&+`ULehEz;r@JH zfqF7ey?%r?{b!A;zEa1~P#I5WX{4P8IOYoQ?wf;vRJYF{VuMbCFL6Oz9>-A9kF9!* zd(&PU|LOt6vqMB*%M<{|Q@nIK+cBT+7T!Gyo8)pl$6uP#PdX?n|4&tjw+p1rSt9+n z5BI0jYj9PT+a(4_`A3m%4T_uJ!EdKvqU)cXX)j(S+AO6j2qORWDCxkthNs*59H>RC zRB<%Up?x#CV8|8vf~|+F;YjEB8xJ4WvZQ)Nr`-5(orsQQn3|*}pH`)P^pcLd_xLaA z9=^RR*vF9`(^)A3P+kMCW67_>Z( zP(DZzPFrP|lHBg_CSSh(SUHiQ#9I@_0G6<|TwS#mdUyDZ|H*#SKHG?{`OW-lnSH0+ z5e>M0@9%f#3{&@vR;)(+g-P;?>HZH5g3&QX^zR{o8u6<&`f~laJIue#G3B>-4$Hb9 z&D`S|*YFexKnzfOxs>OPiRA7CAoo|#foVY#<`W!+eOZABeYtLNi#(S!7x_{c^O|Ey zyko33i$2qms?Fki$YLP_*o;^%<$crtDXGoE>dA?`Y-qc;tad7kQmJE_7?KM~BQ68D z+p2Zdag4I|E*A5smHs3|Tm=-b9z(-a+re8?8rFYSuhv3cgLl(cdoG_s1=G~2fsFsS^KScjm1HX_B7}rZX zuJ$KUi9WdPgd9GK=DfX9lw#=rUwZrUc&NJg|EsB{$S@V55!tdtM9hSUDLt|jWnUAr zgfU@cjmk(-WZ#lP_9gq?ShAN0@@bmwYdUg=-tZNSt0jSPcTfP(F#96y*+p7z3J;a z)%S#*Ip$5<-?qn^Cfed=WWR=GHZ1(p{`PO20;S3VzP_d162K`*M`KmUd zt*sv$>)tiK(bH4aaZlyJ9_2D3nY$9YfW^zPC5{P9(i`;IT~7ccVYK zF+8k?Li^23ly8B*xK|$H$MtNw#V0~UO=?xtRIElWwW<`(v2`z1SHE#wcX~fJ<4()a zd!H6osV*(uPIIg22U9Cs_a}P0P~Rm5{gLyf%i0QiPRX)V(dmkZ9MaT728(~n$lu#} z$JcD^g-i}p&tEYa_!B21|H0j<4+$u#&Ud^r*srzA72DZ7TJxMaaJ2c34LD~V7&buh zkLgy|MaD#YeD^FS(r!OpT6L}CC94$xq@~6|=QqxDCmwYT$e&D50&iUHIP~+ac z&R&kgpULe7OZlDVB!LHm66?wQP~cKobItr)rM!R*X^*rXTP@#fvGmd!u*8drXX273 zg2Jw?RA-qVi4Tqp%<3iShB*S>uWY7$G$J>N)6(T+c;P^u1XCD6Uf_Dy#?Z0yNP+zI z=Z{1LLj{%^Xn=$BRw?(d!mKL8!skQx5|)?y2ij&z$F6*Sayt_Rc+*?B1dK5X3S8fc zyqXwjfZexFf5uBfc+BM7n4Y@Zio_TI_*;f43O&{Q;*9h36jv2EgA+9V5_YgXQ9uB? zEb!%}r?{K4CJcCbr@c!#Zjt?JZ&!lGot6>PV2ydt3?AhY1r#9v@xqZ;98Cf9U#}aU z3K#M`A?TNyS#Auge{vYquk~Jy96h~wd9I88O<&g9YiA|F53xzF5E>z-Wr&yhx<}$2 z-^BNIeOeTwfC-W>6f`aLS=Xt|ZrTq(y*sNu>sY<-N4!)-q2^- zABw!5kUnbJa3mNS91!dlEEH_dW2|g<*{;T@H+1xJ1A7Bgg9}K31}_K4^IGz%^Uf=W zAwzH{U3pL^Tv_z1=YyMan9^B=x`X?J4Z_`piv^2?ig}7T^sAK`CW7mOgLpTCpR}|n zdj`jZlNtN^`?|-SwYvK+H%R5Q%(4pM;QG~%M~^hT5l!N$NV#J1phfu9K);18b~;!( zhpFsI#;~F-HvUGm^s|_-lkGvb=hmNmO0gY1|iG*~%n_`}AsI)fS3YqwQ*5@PUk$8!STbKfgUL|Kb4)E?VZ?Uslr(?Q`lG+~2EVZL)3F#E;{CIBfApA0SwGQd&;gHP9o&BBZY zXdDbGJ|!WT51bhTAN%4e`wGE)D+4^!(}YpuL_H``k9>CKdjLCgLo^Bi#!RSMeu?XJ zm|{)}C|b)kR+W(sfUkcE|2y8M1Kc*!*;xoN-O|)PGsY$;vi`~zFZplte=*^|ILvf z@mw7DmjE3!!F<+Inuh-{sV?GTI2)sgHP0Qj0|WgJx8-DOj@Qu0BNPze`X~b-nj$S) zX(%A=2X1Y{?8AWTr+%Cu+5Aw@s+JZ37|@M60MwkPNc<2DtTQzPsTpa=ZWKtzL%fkP zKZul*Mgbvj%}&{0RQ}NI&`3M{{LC->6hH|wtB~QGcq-LN{TF)_Ug9mpI0BH8O8%qG z!cf3nUtk6S%pg|(qy0FDS$A($i*UdnK^L;rEe(m{lG`0y%KJJo%^ zSojGJFqseqw+jB!@;@|~>d!xUia%%zz|B~;Q62fibw5tP_&BixQiYjBz&n-zE^+$> zP9xP7R&A{`Rjogx_Jif8D}IYMWB0J$cQ^jGp^cXv03#ndYS#QWy!b?nP8W>>c3KeT z33`v;H2AwKPEe@>|BcMgRQ-d^rQ5u~(BGN< zd(2@V<|eK`V*crn)tY+&IJ==OGPWwxAL3qD@CI^(3nqGw!*4>99VvzJUfe*Yd!;}o zoJ*0o{eeR-Ff3oHPT}^??c`yHxtuXqphkIE90c?CIoz+15h}ukSx+T+%VKbJ;P(ad zo|!wiZ5&IkoN42<`W zlOa;^?G=QBT48{%T*rEJ`6hiv$sh!|&1w-NMk?yPP(yW$hOxFxo_P__{}w1%zl&Pb=^8s)`HIqat-QH=`eX&bakCcG^G0u9^72iV)&+t03FCr^BtEKgLwP_wuW9C?QS*8c6x3il>=o)c~-NwM}e zoPBL|>-MGtwx&)g+2xF%Gyf4qGZx-7VYR}MFzx~edD2!>FofGy64m}u(S2SBZ)sD$W_~4O_(nK9~^c{|% zX3eAA#4kDcKsq=k^{Zo&G?(O)dQ-<7NxDlh)6HQ)MuFoad*A_{WYNZJ3`%cd zvK%>?MHP30;o;UWHwH6v4#lj|GH_r?>Pa_lB!BR;o_tse5TL-%jY zkD5JfxWMd}4__RXM}I!N`b5rRQidsV>4r^?b2>X_XDdf2D}1MZa}82sde&L!SxR@k z@))wLZ<+Mry*#=lhd4R;j9=eKHtzHi4vpemtucrK3`pkVtM$SO~f$B6Bon=KM4Xb8F7{Fub%b>txZI5juU1Mvy2f zi+PdTsOS(cGoy>#ZZ(!GIo@e}cj2xCgXCOqvFX*DfkQ?)4(dA(!o405qH8s!*9`gV zO>c;?`sF9q7tEHfT_|9mYL5FB2W>hQL?D(PakiUf!FkRoOTaj~KO=FXV199f`L(#h z+H^w(h8f*nDBLN-o(Q97zC2gX#(OHp6?w;<@F6?|^Zw#dTG^vbmb{ zgTnC)w3U|-7XBIO&Fp3;JdMs?-#)9AVnGB#KY5&0K3fTgrh;8Aiwlesw%~W`81C## z=Sgb!)+~45bn)Qw|5e zcUCX-GRpE#zc}j;A#+iBRXK$xNYQYAND&tNpkh9UaNMX^mgXWlD)zZZ6B~j=*2bo} zMCJlQtIl2ESagRNUXQ>TN9sKBcQ^&rLzh1S9-JFSke`y5@_% z6C9H(%+`AGZN71)f6^*0O^Pe*qQuuQBdsBK;TK$vC`@)}D6MilYG$_aoYte6Eji_= zk{c@wmr3NKU0;YbgF1t2=LdrE>t(Vp$u3tcgr?{DVAtL(4k*)i)en7*7P;6kIQa2& zA-VU^tZKXdk(`a0jOp8#iPIG}yi#)e_F*EJi1PX0@}>RO%cf>myWJdD@=v_HIW;b% zy6C#u*o+0!2aKQK%CaSlUThIPGFlI(KXGp0Xj)dK2iFZNL-gwXk`Z_2M=dnRDbY{S zdOe{0diJlvL6#uJw@$OI`5tRs_^!LBG6Rcn1p=ENtn3E@2iX^IcKNpyw~6#MDf=Uv zA4O7<>-{xi>&SFPCc7BikC(%+VH}~HY48}Yo@a|DY*b_>@wcH2Y@{TVUXLz=iHY+2 zdtCN+l)smx4<8Q#%LbPNkP%owbb?Zmt_b~7mR`+h?aI~{Fa-y1F@$SBs@Z)cfLEjr zlg4*Aa|*-vZ@?`Pf2eDq2}S@c=l{r3IhO{MfeL*qLF!fV6WmV==0ZYXMb-4D z6v=<3DcAri&pT=&ANn1%Y!1M0i^tY{Pj;x2Af*WZR7y1+VTEuk1|lZFtP!06Oj;@P ziUcjnVE<CSjgmH(F*wWL$%8frcehl2+1 zVjy4$-uwptjU>$b35ZEt(?o4Gg^4;^*ZURiSSdK0DAf3~lG&Z^QpK*+E@U8Si0+2y zelri(4(r@l3o>uhyI|8=i@dlSIy$Ehpjq(y9Ctt413%B`dmet%tFe4&VsL@vK35l5 z>tK}i^$E!pha;@YY-V6XnX0aLQWAoZg4u@>GfKnvQT*I+T?^3G?V?0vHwEYqwqS6c zu-@HvR$G_Gz?`1KN}Z}voIz#GwnAv7?do<+3q=CMv5GX`2T4D8?yHir4VbIK^hIi` z!9o2zwQF+z#r`EbaH5!TxC{#{w3^2Lf{LmJyoKO>sybsCOh@UTxPHQqt}~6IHEB`> zxA6Q10MCy8{;C}hv4C)F%F^*`sE1z`4~!e-yT5^Rp84 z7M4;a4pR+N94GyY_x|M>8qhDa-?NY!3~IBBz*#|o#=;+3{r__sXul&BDCoE5g$<$r z9JL?F=Kdx2-4d`**8qLHC~&XY@9cv!DM6bb2|~pLYF!SvKx3ORYCQZU> z>YxH`T{-}>o`F0`w%*^Z5%2(M@MVU`QJFeWamzSufOXl=daa&Z(CaG}f87l^ZrO1x zXrrjtu~|Je_VGqaZ-5xbH8=6`&5qW3_rl%@vH9zpV&g|;2iZu4)|+PA*JcMJhP0#W z$R)ia5%Jn?65}D(>K1anixC{xrP-HF^R><5Qp-7(U-l-8&1-K;j_Y^Stta-*MaXHF zN{=u1&{n*07S*p#)TvJHhzs1n2z(j66#T?>2L#OlZAf;Pr}htG4-dddNfP9m7(h9J61DuilN$ebGf~XwtLhq zh1MMleC92pH!%gp#`W%{y)0g>l50)8^=6^GOOD=I5Nn8AwN+_YV8YYQ8Gx$b}lPNm+0^&1PgXk7)C!i zX1{MC7^EEd)F5&TB`PDvzvR`wFW+s8u0Y+RO7BDi!P_p(b78`9#0!)1CifZlWu4!r za-aZmbb=Xf&uNp%xYzfJxs=G~11jR7kL1rSTitwp@F9|>+JB;pm43OxntaNZt1iJ8 z!^w36ah3(j^}qUIBv=w=x@3h$qdC5U_iYYC3j+xga5&uK!^BzG+!Z3HBy8v+8vXVB zkS*e-JO*DGgvU?%R@D1G@;#zrUl9m?QmhzMf!JTdEF|{OdpU7(eS6y0q&v#M3!5DZ zCDtyrf!fOZjGHd>6XHYfKK7M{@#T$ez1v!<2cKh|xjGe4T4LPFSKZC7hNxK~JKW7H z@mgOgT|EVd8;-clb`iF|Sg?JI6C(KglAdhcI;&4E+KfEM2yYMl81Ev-oM$x}Bx@;; zx%Gunjns3aSZ@FhZ@;dUHg|1c9u6uTj`<5x&XT~PVT1CBN_8|ki$?F*XxJohaDTlp{#vYrCy&9Rj6Y{l4-Wy7FlazrXP8Qcu`O2PwznAWN}{>s@x7%2=$A za(ZL<<)w72SE`IZos!6cN2HA__la!#OK6DC_E$D&=&lGMo^K{<@;Yp>oC2YGFC@E4 zL}{!eB~drCRQJX>UeCyR(@b;S$aOYB|F*LI&P#E?UqMH3i^1D}?=I5q=Yk$Fv>_I# z&jFpM3KtlZ?MK2(WNx-RmXQc`^j?tFW0B>wE5?5JLBp`wI_I3e z5ZN(~e4|81ntYj{^LC%NZyrgt#2dasnPo}cO-L2CZuyoJdBW{A?Pupb>8o#}j!WDc z+$_5}CZp9cl1=l-uvE2FFJF58&C2jruC7W77#Ac6amLnj;j*=UiZX zsYT;ATjHJ8nNm=N@%5(>Jd!LRNjt{vGlBXb)6vtPT_Kp%7x@xwSEc zU%hCOrWhkt5HQAfCvHzFt48Z0&bEGr4&R&K)N`R%JS6hLV@n1uR)m0t5Q zALCDNNA2p(@rizsp_@=>6|b-F7S-=%gU3N|=_{5JD0`a5pVI6lDb z-L?g(=qo^o!SbczsCW zxj-WA=6(EoGtY$!opx=h96GKkdmAG=A_`@vQP7fy<#IF;F0CygZZBDH*_*h0hD2;l zT%eHeK_D-DTg$79Ie^j?RUDK^?8>dekZlp>R(3?Ja%b9*ja z53DQZBOw)Mho&;hpSE=x(MWdQ`ERXDXQZ{0}$odDs8| diff --git a/docs/dapp/images/sapphire/sourcify3.png b/docs/dapp/images/sapphire/sourcify3.png deleted file mode 100644 index ac32713f68a2000ae6cfa46d37c3acc544995bc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88187 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

=()(&TUdXV8|}X24|#-Ixkdj4M)#KOo=Y88sVz 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

qN2I{LU@F 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 (block.timestamp - (60*60*24)) ); - - // Validate EIP-712 sign-in authentication. - bytes32 authdataDigest = keccak256(abi.encodePacked( - "\x19\x01", - DOMAIN_SEPARATOR, - keccak256(abi.encode( - SIGNIN_TYPEHASH, - auth.user, - auth.time - )) - )); - - address recovered_address = ecrecover( - authdataDigest, uint8(auth.rsv.v), auth.rsv.r, auth.rsv.s); - - require( auth.user == recovered_address, "Invalid Sign-In" ); - - _; - } - - function authenticatedViewCall( - SignIn calldata auth, - ... args - ) - external view - authenticated(auth) - returns (bytes memory output) - { - // Use `auth.user` instead of `msg.sender`! - } -} -``` - -With the above contract code deployed, let's look at the frontend dApp and how -it can request the user to sign-in using EIP-712. You may wish to add additional -parameters which are authenticated such as the domain name. The following code -example uses Ethers: - -```typescript -const time = new Date().getTime(); -const user = await eth.signer.getAddress(); - -// Ask user to "Sign-In" every 24 hours. -const signature = await eth.signer._signTypedData({ - name: "SignInExample.SignIn", - version: "1", - chainId: import.meta.env.CHAINID, - verifyingContract: contract.address -}, { - SignIn: [ - { name: 'user', type: "address" }, - { name: 'time', type: 'uint32' }, - ] -}, { - user, - time: time -}); -const rsv = ethers.utils.splitSignature(signature); -const auth = {user, time, rsv}; -// The `auth` variable can then be cached. - -// Then in the future, authenticated view calls can be performed by -// passing auth without further user interaction authenticated data. -await contract.authenticatedViewCall(auth, ...args); -``` diff --git a/docs/dapp/sapphire/authentication.md b/docs/dapp/sapphire/authentication.md new file mode 120000 index 0000000000..912a6e5c27 --- /dev/null +++ b/docs/dapp/sapphire/authentication.md @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/authentication.md \ No newline at end of file diff --git a/docs/dapp/sapphire/browser.md b/docs/dapp/sapphire/browser.md deleted file mode 100644 index 20ab2f9a1a..0000000000 --- a/docs/dapp/sapphire/browser.md +++ /dev/null @@ -1,208 +0,0 @@ ---- -description: Writing Sapphire dApp for browser and Metamask ---- - -# Browser Support - -Confidential Sapphire dApps work in web browsers by wrapping the -Ethereum provider such as Metamask to enable signing and encrypting -calls and transactions. - -Let's begin with the [Hardhat boilerplate]. As mentioned on their website -the boilerplate provides the following: - -- The Solidity contract implementing an ERC-20 token -- Tests for the entire functionality of the contract -- A minimal React front-end to interact with the contract using ethers.js - -Go ahead and clone the original [Hardhat boilerplate repo]. Move to the checked -out folder and **apply the Sapphire-specific changes** to `hardhat.config.js` -as [described in the quickstart][quickstart]. - -Next, install dependencies. The boilerplate project uses -[pnpm], but `yarn` and `npm` will also work with some modifications -around workspaces: - -```shell npm2yarn -npm install -npm install -D @oasisprotocol/sapphire-paratime -``` - -Now, you can deploy the contract on the Testnet with the private key of the -account holding some [TEST tokens]: - -```shell -PRIVATE_KEY="0x..." npx hardhat run scripts/deploy.js --network sapphire-testnet -``` - -This will compile the contract and deploy it on the Testnet. In addition -to the quickstart steps, **the contract address and ABI will also automatically -be copied over to the `frontend/src/contracts` folder so that the frontend can -access them!** - -:::warning - -The contract in the Hardhat boilerplate is ERC-20-compatible and emits the -`transfer` event. If your wish to preserve confidentiality, you can comment -out [line 66]. Read [the guide](guide.mdx#contract-logs) to learn more. - -::: - -## Signing Sapphire Calls and Transactions in Browser - -Now, let's explore the frontend of our dApp. Begin by moving into the -`frontend` folder and install dependencies: - -```shell npm2yarn -npm install -npm install -D @oasisprotocol/sapphire-paratime -``` - -The main frontend logic is stored in `frontend/src/components/Dapp.js`. Apply -the following changes: - -```diff title="frontend/src/components/Dapp.js" ---- a/hardhat-boilerplate/frontend/src/components/Dapp.js -+++ b/hardhat-boilerplate/frontend/src/components/Dapp.js -@@ -2,6 +2,7 @@ - - // We'll use ethers to interact with the Ethereum network and our contract - import { ethers } from "ethers"; -+import * as sapphire from '@oasisprotocol/sapphire-paratime'; - - // We import the contract's artifacts and address here, as we are going to be - // using them with ethers -@@ -22,7 +23,7 @@ - // This is the Hardhat Network id that we set in our hardhat.config.js. - // Here's a list of network ids https://docs.metamask.io/guide/ethereum-provider.html#properties - // to use when deploying to other networks. --const HARDHAT_NETWORK_ID = '1337'; -+const HARDHAT_NETWORK_ID = '23295'; // Sapphire Testnet - - // This is an error code that indicates that the user canceled a transaction - const ERROR_CODE_TX_REJECTED_BY_USER = 4001; -@@ -225,14 +226,20 @@ - - async _initializeEthers() { - // We first initialize ethers by creating a provider using window.ethereum -- this._provider = new ethers.providers.Web3Provider(window.ethereum); -+ this._provider = sapphire.wrap(new ethers.providers.Web3Provider(window.ethereum)); - -- // Then, we initialize the contract using that provider and the token's -- // artifact. You can do this same thing with your contracts. -+ // Then, we initialize two contract instances: -+ // - _token: Used for eth_calls (e.g. balanceOf, name, symbol) -+ // - _tokenWrite: Used for on-chain transactions (e.g. transfer) - this._token = new ethers.Contract( - contractAddress.Token, - TokenArtifact.abi, -- this._provider.getSigner(0) -+ this._provider, -+ ); -+ this._tokenWrite = new ethers.Contract( -+ contractAddress.Token, -+ TokenArtifact.abi, -+ sapphire.wrap(new ethers.providers.Web3Provider(window.ethereum).getSigner()) - ); - } - -@@ -294,7 +301,7 @@ - - // We send the transaction, and save its hash in the Dapp's state. This - // way we can indicate that we are waiting for it to be mined. -- const tx = await this._token.transfer(to, amount); -+ const tx = await this._tokenWrite.transfer(to, amount); - this.setState({ txBeingSent: tx.hash }); - - // We use .wait() to wait for the transaction to be mined. This method -@@ -360,8 +367,8 @@ - return true; - } - -- this.setState({ -- networkError: 'Please connect Metamask to Localhost:8545' -+ this.setState({ -+ networkError: 'Please connect to Sapphire ParaTime Testnet' - }); - - return false; -``` - -Beside the obvious change to the chain ID and wrapping ethers.js objects with the -Sapphire wrapper you can notice that we initialized **two** contract -instances: - -- `this._token` object will be used for unsigned eth calls. This is the - Hardhat method of [setting `from` transaction field to all zeros] - [guide-transaction-calls] in order to avoid Metamask signature popups. - Although the call is unsigned, **it is still encrypted** with the - corresponding runtime key to preserve confidentiality. -- `this._tokenWrite` object will be used for signed calls and transactions. The - user will be prompted by Metamask for the signature. Both — calls and - transactions — will be encrypted. - -## Trying it - -Start the frontend by typing: - -```shell npm2yarn -npm run start -``` - -If all goes well the web server will spin up and your browser should -automatically open `http://localhost:3000`. - -![Hardhat boilerplate frontend](../images/sapphire/hardhat-boilerplate-frontend1.png) - -Go ahead and connect the wallet. If you haven't done it yet, you will have -to add the [Sapphire ParaTime Testnet network to your Metamask] -[sapphire-testnet]. Once connected, the frontend will make an unsigned call to -the `balanceOf` view and show you the amount of `MHT`s in your selected -Metamask account. - -![MHT balance of your account](../images/sapphire/hardhat-boilerplate-frontend2.png) - -Next, let's transfer some `MHT`s. Fill in the amount, the address and hit the -*Transfer* button. Metamask will show you the popup to sign and submit the -transfer transaction. Once confirmed, Metamask will both **sign and encrypt** the transaction. - -![Sign and encrypt the transfer transaction](../images/sapphire/hardhat-boilerplate-frontend3.png) - -Once the transaction is processed, you will get a notification from Metamask -and the balance in the dApp will be updated. - -:::tip - -If you commented out `emit Transfer(...)`, the transfer of `MHT`s would have -been completely confidential. In the example above, the [following transaction] -[block explorer] was generated. Go ahead and check your transaction on the -block explorer too, to make sure no sensitive data was leaked! - -::: - -Congratulations, you successfully implemented your first truly confidential -dApp which runs in the browser and wraps Metamask to both sign and encrypt the -transactions! - -Should you have any questions or ideas to share, feel free to reach out to us -on [discord and other social media channels][social-media]. - -:::info Example - -You can download a full working example from the [Sapphire ParaTime examples] -repository. - -::: - -[block explorer]: https://testnet.explorer.sapphire.oasis.dev/tx/0x3303dea5d48291d1564cad573f21fc71fcbdc2b862e17e056287fd9207e3bc53 -[guide-transaction-calls]: guide.mdx#transactions--calls -[Hardhat boilerplate repo]: https://github.com/NomicFoundation/hardhat-boilerplate -[Hardhat boilerplate]: https://hardhat.org/tutorial/boilerplate-project -[Hardhat tutorial]: https://hardhat.org/tutorial -[line 66]: https://github.com/NomicFoundation/hardhat-boilerplate/blob/13bd712c1285b2de572f14d20e6a750ae08565c0/contracts/Token.sol#L66 -[quickstart]: quickstart.mdx#add-the-sapphire-testnet-to-hardhat -[sapphire-testnet]: ./README.mdx#testnet -[Sapphire ParaTime examples]: https://github.com/oasisprotocol/sapphire-paratime/tree/main/examples/hardhat-boilerplate -[social-media]: ../../get-involved/README.md#social-media-channels -[pnpm]: https://pnpm.io -[TEST tokens]: quickstart.mdx#get-some-sapphire-testnet-tokens diff --git a/docs/dapp/sapphire/browser.md b/docs/dapp/sapphire/browser.md new file mode 120000 index 0000000000..1b1dfca35c --- /dev/null +++ b/docs/dapp/sapphire/browser.md @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/browser.md \ No newline at end of file diff --git a/docs/dapp/sapphire/gasless.md b/docs/dapp/sapphire/gasless.md deleted file mode 100644 index 775690d504..0000000000 --- a/docs/dapp/sapphire/gasless.md +++ /dev/null @@ -1,388 +0,0 @@ ---- -description: Submitting transactions without paying for fees ---- - -# Gasless Transactions - -When you submit a transaction to a blockchain, you need to pay certain fee -(called *gas* in Ethereum jargon). Since only the transactions with the highest -fee will be included in the block, this mechanism effectively prevents denial -of service attacks on the network. On the other hand, paying for gas requires -from the user that they have certain amount of blockchain-native tokens -available in their wallet which may not be feasible. - -In this chapter we will learn how the user signs and sends their transaction to -a *relayer*. The relayer then wraps the original signed transaction into a new -*meta-transaction* (see [ERC-2771] for details), signs it and pays for the -necessary transaction fees. When the transaction is submitted the on-chain -recipient contract decodes the meta-transaction, verifies both signatures and -executes the original transaction. - -Oasis Sapphire supports two transaction relaying methods: The **on-chain -signer** exposes the Oasis-specific contract state encryption functionality -while the **gas station network** method is a standardized approach known in -other blockchains as well. - -:::caution - -The gas station network implementation on Sapphire is still in early beta. Some -features such as the browser support are not fully implemented yet. - -::: - -[ERC-2771]: https://eips.ethereum.org/EIPS/eip-2771 - -## On-Chain Signer - -The on-chain signer is a smart contract which receives the user's transaction, -checks whether the transaction is valid, wraps it into a meta-transaction -(which includes paying for the transaction fee) and returns it back to the user -in [EIP-155] format. These steps are executed as a confidential call. Finally, -the user submits the generated transaction to the network. - -![Diagram of the On-Chain Signing](../images/sapphire/gasless-on-chain-signer.svg) - -### EIP155Signer - -To sign a transaction, the Sapphire's `EIP155Signer` library bundled along the -`@oasisprotocol/sapphire-contract` package comes with the following helper which -returns a raw, RLP-encoded, signed transaction ready to be broadcast: - -```solidity -function sign(address publicAddress, bytes32 secretKey, EthTx memory transaction) internal view returns (bytes memory); -``` - -`publicAddress` and `secretKey` are the signer's address and their private key -used to sign a meta-transaction (and pay for the fees). We will store these -sensitive data inside the encrypted smart contract state together with the -signer's `nonce` field in the following struct: - -```solidity -struct EthereumKeypair { - address addr; - bytes32 secret; - uint64 nonce; -} -``` - -The last `transaction` parameter in the `sign()` function is the transaction -encoded in a format based on [EIP-155]. This can either be the original user's -transaction or a meta-transaction. - -### Gasless Proxy Contract - -The following snippet is a complete *Gasless* contract for wrapping the user's -transactions (`makeProxyTx()`) and executing them (`proxy()`). The signer's -private key containing enough balance to cover transaction fees should be -provided in the constructor. - -```solidity -import {EIP155Signer} from "@oasisprotocol/sapphire-contracts/contracts/EIP155Signer.sol"; - -struct EthereumKeypair { - address addr; - bytes32 secret; - uint64 nonce; -} - -struct EthTx { - uint64 nonce; - uint256 gasPrice; - uint64 gasLimit; - address to; - uint256 value; - bytes data; - uint256 chainId; -} - -// Proxy for gasless transaction. -contract Gasless { - EthereumKeypair private kp; - - function setKeypair(EthereumKeypair memory keypair) external payable { - kp = keypair; - } - - function makeProxyTx(address innercallAddr, bytes memory innercall) - external - view - returns (bytes memory output) - { - bytes memory data = abi.encode(innercallAddr, innercall); - - // Call will invoke proxy(). - return - EIP155Signer.sign( - kp.addr, - kp.secret, - EIP155Signer.EthTx({ - nonce: kp.nonce, - gasPrice: 100_000_000_000, - gasLimit: 250000, - to: address(this), - value: 0, - data: abi.encodeCall(this.proxy, data), - chainId: block.chainid - }) - ); - } - - function proxy(bytes memory data) external payable { - (address addr, bytes memory subcallData) = abi.decode( - data, - (address, bytes) - ); - (bool success, bytes memory outData) = addr.call{value: msg.value}( - subcallData - ); - if (!success) { - // Add inner-transaction meaningful data in case of error. - assembly { - revert(add(outData, 32), mload(outData)) - } - } - kp.nonce += 1; - } -} -``` - -:::tip - -The snippet above only runs on Sapphire Mainnet, Testnet or Localnet. -`EIP155Signer.sign()` is not supported on other EVM chains. - -::: - -### Simple Gasless Commenting dApp - -Let's see how we can implement on-chain signer for a gasless commenting dApp -like this: - -```solidity -contract CommentBox { - string[] public comments; - - function comment(string memory commentText) external { - comments.push(commentText); - } -} -``` - -Then, the TypeScript code on a client side for submitting a comment in a gasless -fashion would look like this: - -```typescript -const CommentBox = await ethers.getContractFactory("CommentBox"); -const commentBox = await CommentBox.deploy(); -const Gasless = await ethers.getContractFactory("Gasless"); -const gasless = await Gasless.deploy(); - -// Set the keypair used to sign the meta-transaction. -await gasless.setKeypair({ - addr: "70997970C51812dc3A010C7d01b50e0d17dc79C8", - secret: Uint8Array.from(Buffer.from("59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d", 'hex')), - nonce: 0, -}); - -const innercall = commentBox.interface.encodeFunctionData('comment', ['Hello, free world!']); -const tx = await gasless.makeProxyTx(commentBox.address, innercall); - -const plainProvider = new ethers.providers.JsonRpcProvider(ethers.provider.connection); -const plainResp = await plainProvider.sendTransaction(tx); - -const receipt = await ethers.provider.waitForTransaction(plainResp.hash); -if (!receipt || receipt.status != 1) throw new Error('tx failed'); -``` - -:::info Example - -You can download a complete on-chain signer example based on the above snippets -from the [Sapphire ParaTime examples] repository. - -::: - -[Sapphire ParaTime examples]: - https://github.com/oasisprotocol/sapphire-paratime/tree/main/examples/onchain-signer - -### Gasless Proxy in Production - -The snippets above have shown how the on-chain signer can generate and sign a -meta-transaction for arbitrary transaction. In production environment however, -you must consider the following: - -#### Confidentiality - -Both the inner- and the meta-transaction are stored on-chain unencrypted. Use -`Sapphire.encrypt()` and `Sapphire.decrypt()` call on the inner-transaction with -an encryption key generated and stored inside a confidential contract state. - -#### Gas Cost and Gas Limit - -The gas cost and the gas limit in our snippet were hardcoded inside the -contract. Ideally the gas cost should be dynamically adjusted by an oracle and -the gas limit determined based on the type of transactions. **Never let gas cost -and limit to be freely defined by the user, since they can drain your relayer's -account.** - -#### Allowed Transactions - -Your relayer will probably be used for transactions of a specific contract only. -One approach is to store the allowed address of the target contract and **only -allow calls to this contract address**. - -#### Access Control - -You can either whitelist specific addresses of the users in the relayer contract -or implement the access control in the target contract. In the latter case, the -relayer's `makeProxyTx()` should simulate the execution of the inner-transaction -and generate the meta-transaction only if it inner-transaction succeeded. - -#### Multiple Signers - -Only one transaction per block can be relayed by the same signer since the order -of the transactions is not deterministic and nonces could mismatch. To overcome -this, relayer can randomly pick a signer from the **pool of signers**. When the -transaction is relayed, don't forget to reimburse the signer of the transaction! - -:::info Example - -All the above points are considered in the [Demo Voting dApp][demo-voting]. -You can explore the code and also try out a deployed gasless version of the -voting dApp on the [Oasis Playground site][demo-voting-playground]. The access -control list is configured so that anyone can vote on any poll and only poll -creators can close the poll. - -::: - -[demo-voting]: https://github.com/oasisprotocol/demo-voting -[demo-voting-playground]: https://playground.oasis.io/demo-voting -[dao-opl]: ../opl/host.md -[EIP-155]: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md - -## Gas Station Network - -[Gas Station Network](https://docs.opengsn.org) (GSN) was adapted to work with -Sapphire in a forked `@oasislabs/opengsn-cli` package. The diagram below -illustrates a flow for signing a transaction by using a GSN[^1]. - -![Diagram of the Gas Station Network Flow](../images/sapphire/gasless-gsn-flow.jpg) - -[^1]: The GSN flow diagram is courtesy of [OpenGSN documentation][opengsn-docs]. - -[opengsn-docs]: https://github.com/opengsn/docs - -### Package Install - -Starting with an empty folder, let us install the -[Oasis fork of the GSN command line tool](https://github.com/oasislabs/gsn) by -using the following commands: - -```shell npm2yarn -npm init -npm install -D @oasislabs/opengsn-cli -``` - -Next, we will export our hex-encoded private key (**without** the leading `0x`) -for deploying the gas station network as an environment variable: - -```shell -export PRIVATE_KEY=... -``` - -### Deploy GSN - -Deploy GSN relaying contracts along with the test paymaster using a -test token. Use the address of your account as `--burnAddress` and -`--devAddress` parameters: - -```shell -npx gsn deploy --network sapphire-testnet --burnAddress 0xfA3AC9f65C9D75EE3978ab76c6a1105f03156204 --devAddress 0xfA3AC9f65C9D75EE3978ab76c6a1105f03156204 --testToken true --testPaymaster true --yes --privateKeyHex $PRIVATE_KEY -``` - -After the command finishes successfully, you should find the addreses of -deployed contracts at the end: - -``` - Deployed TestRecipient at address 0x594cd6354b23A5200a57355072E2A5B15354ee21 - - RelayHub: 0xc4423AB6133B06e4e60D594Ac49abE53374124b3 - RelayRegistrar: 0x196036FBeC1dA841C60145Ce12b0c66078e141E6 - StakeManager: 0x6763c3fede9EBBCFbE4FEe6a4DE6C326ECCdacFc - Penalizer: 0xA58A0D302e470490c064EEd5f752Df4095d3A002 - Forwarder: 0x59001d07a1Cd4836D22868fcc0dAf3732E93be81 - TestToken (test only): 0x6Ed21672c0c26Daa32943F7b1cA1f1d0ABdbac66 - Paymaster (Default): 0x8C06261f58a024C958d42df89be7195c8690008d -``` - - -### Start GSN Relay Server - -Now we are ready to start our own relay server by using the following command. -Use the newly deployed: - -- `RelayHub` address for `--relayHubAddress`, -- `TestToken` address for `--managerStakeTokenAddress`, -- address of your account for `--owner-address` - -```shell -npx gsn relayer-run --relayHubAddress 0xc4423AB6133B06e4e60D594Ac49abE53374124b3 --managerStakeTokenAddress 0x6Ed21672c0c26Daa32943F7b1cA1f1d0ABdbac66 --ownerAddress '0xfA3AC9f65C9D75EE3978ab76c6a1105f03156204' --ethereumNodeUrl 'https://testnet.sapphire.oasis.dev' --workdir . -``` - -### Fund and Register GSN Relay Server - -The first thing is to fund your relay server so that it has enough native -tokens to pay for others' transactions. Let's fund the paymaster with -**5 tokens**. Use the `RelayHub` and `Paymaster` addresses for `--hub` -and `--paymaster` values: - -```shell -npx gsn paymaster-fund --network sapphire-testnet --hub 0xc4423AB6133B06e4e60D594Ac49abE53374124b3 --paymaster 0x8C06261f58a024C958d42df89be7195c8690008d --privateKeyHex $PRIVATE_KEY --amount 5000000000000000000 -``` - -You can check the balance of the paymaster by running: - -```shell -npx gsn paymaster-balance --network sapphire-testnet --hub 0xc4423AB6133B06e4e60D594Ac49abE53374124b3 --paymaster 0x8C06261f58a024C958d42df89be7195c8690008d -``` - -Next, we need to register the relay server with the your desired `relayUrl` by -staking the `token` the relayHub requires. - -```shell -npx gsn relayer-register --network sapphire-testnet --relayUrl 'http://localhost:8090' --token 0x6Ed21672c0c26Daa32943F7b1cA1f1d0ABdbac66 --wrap true --privateKeyHex $PRIVATE_KEY -``` - -After this step, your relay server should be ready to take incoming relay -requests and forward them to the relay hub on Sapphire Testnet. - -### Send Testing Relayed Requests: - -We can test whether a relayed request can be forwarded and processed correctly. -Scroll up to find the GSN deployment response and use the following parameters: -- `Forwarder` as `--to`, -- `Paymaster` as `--paymaster`, -- your account address as `--from` - -Parameters matching our deployment would be: - -```shell -npx gsn send-request --network sapphire-testnet --abiFile 'node_modules/@oasislabs/opengsn-cli/dist/compiled/TestRecipient.json' --method emitMessage --methodParams 'hello world!' --to 0x594cd6354b23A5200a57355072E2A5B15354ee21 --paymaster 0x8C06261f58a024C958d42df89be7195c8690008d --privateKeyHex $PRIVATE_KEY --from 0xfA3AC9f65C9D75EE3978ab76c6a1105f03156204 --gasLimit 150000 --gasPrice 100 -``` - -:::info - -More detailed explanations of these GSN commands and parameters can be found on -the [upstream OpenGSN website](https://docs.opengsn.org/javascript-client/gsn-helpers.html). - -::: - -### Writing a GSN-enabled Smart Contract - -First, install the OpenGSN contracts package: - -```shell npm2yarn -npm install -D @opengsn/contracts@3.0.0-beta.2 -``` - -Then follow the remainder of the steps from the -[upstream OpenGSN docs](https://docs.opengsn.org/contracts/#receiving-a-relayed-call). diff --git a/docs/dapp/sapphire/gasless.md b/docs/dapp/sapphire/gasless.md new file mode 120000 index 0000000000..1ae10d0a76 --- /dev/null +++ b/docs/dapp/sapphire/gasless.md @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/gasless.md \ No newline at end of file diff --git a/docs/dapp/sapphire/guide.mdx b/docs/dapp/sapphire/guide.mdx deleted file mode 100644 index b7689b5aae..0000000000 --- a/docs/dapp/sapphire/guide.mdx +++ /dev/null @@ -1,390 +0,0 @@ ---- -description: Guide to creating secure dApps on Sapphire ---- - -import DocCard from '@theme/DocCard'; -import {findSidebarItem} from '@site/src/sidebarUtils'; - -# Guide - -This page mainly describes the differences between Sapphire and Ethereum -since there are a number of excellent tutorials on developing for Ethereum. -If you don't know where to begin, the [Hardhat tutorial], [Solidity docs], and -[Emerald dApp tutorial] are great places to start. You can continue following -this guide once you've set up your development environment and have deployed -your contract to a non-confidential EVM network (e.g., Ropsten, Emerald). - - -[Hardhat tutorial]: https://hardhat.org/tutorial -[Solidity docs]: https://docs.soliditylang.org/en/v0.8.15/solidity-by-example.html -[Emerald dApp tutorial]: ../emerald/writing-dapps-on-emerald.mdx - -## Oasis Consensus Layer and Sapphire ParaTime - -The Oasis Network consists of the consensus layer and a number of ParaTimes. -ParaTimes are independent replicated state machines that settle transactions -using the consensus layer (to learn more, check the [Oasis Network Overview] -[overview chapter]). Sapphire is a ParaTime which implements the Ethereum -Virtual Machine (EVM). - -The minimum and also expected block time in Sapphire is **6 seconds**. Any -Sapphire transaction will require at least this amount of time to be executed, -and probably no more. - -ParaTimes, Sapphire included, are not allowed to directly access your tokens stored -in consensus layer accounts. You will need to _deposit_ tokens from your consensus -account to Sapphire. Consult the [How to transfer ROSE into an EVM ParaTime] -[how-to-deposit-rose] chapter to learn more. - - -[overview chapter]: ../../general/oasis-network/README.mdx -[how-to-deposit-rose]: ../../general/manage-tokens/how-to-transfer-rose-into-paratime.mdx -[Testnet faucet]: https://faucet.testnet.oasis.dev/ - -## Testnet and Mainnet - -Sapphire is deployed on both Testnet and Mainnet. The Testnet should be -considered unstable software and may have its state wiped at any time. As -the name implies, only use the Testnet for testing unless you're testing how -angry your users get when state is wiped. - -:::danger Never deploy production services on Testnet - -Because Testnet state can be wiped in the future, you should **never** deploy a -production service on the Testnet! Just don't do it! - -Also note that while the Testnet does use actual TEEs, due to experimental -software and different security parameters, **confidentiality of Sapphire on the -Testnet is not guaranteed** -- all transactions and state published on the -Sapphire Testnet should be considered public. - -::: - -:::tip - -For testing purposes, visit our [Testnet faucet] to obtain some TEST which you -can then use on the Sapphire Testnet to pay for gas fees. The faucet supports -sending TEST both to your consensus layer address or to your address inside the -ParaTime. - -::: - -[network-parameters]: ../../node/mainnet/README.md -[Testnet]: ../../node/testnet/README.md - -## Sapphire vs Ethereum - -Sapphire is generally compatible with Ethereum, the EVM, and all of the -user and developer tooling that you already use. There are a few breaking changes, -but we think that you'll like them: - -* Contract state is only visible to the contract that wrote it. With respect - to the contract API, it's as if all state variables are declared as `private`, but - with the further restriction that not even full nodes can read the values. Public or - access-controlled values are provided instead through explicit getters. -* Transactions and calls are end-to-end encrypted into the contract. Only the caller - and the contract can see the data sent to/received from the ParaTime. This ends up - defeating most of the utility of block explorers, however. -* The `from` address using of calls is derived from a signature attached to the call. - Unsigned calls have their sender set to the zero address. This allows contract authors - to write getters that release secrets to authenticated callers, but without - requiring a transaction to be posted on-chain. - -In addition to confidentiality, you get a few extra benefits including the ability to generate private -entropy, and make signatures on-chain. An example of a dApp that uses both is a HSM contract -that generates an Ethereum wallet and signs transactions sent to it via transactions. - -Otherwise Sapphire is like Emerald, which is like a fast, cheap Ethereum. - -## Integrating Sapphire - -Once ROSE tokens are [deposited into Sapphire], it should be painless for users to begin -using dApps. To achieve this ideal user experience, we have to modify the dApp a little, -but it's made simple by our compatibility library, [@oasisprotocol/sapphire-paratime]. - -There are compatibility layers in other languages, which may be found in [the repo]. - - -[deposited into Sapphire]: ../../general/manage-tokens/how-to-transfer-rose-into-paratime.mdx -[@oasisprotocol/sapphire-paratime]: https://www.npmjs.com/package/@oasisprotocol/sapphire-paratime -[the repo]: https://github.com/oasisprotocol/sapphire-paratime/tree/main/clients - -## Writing Secure dApps - -### Wallets - -Sapphire is compatible with popular self-custodial wallets including MetaMask, -Ledger, Brave, and so forth. You can also use libraries like Web3.js and Ethers -to create programmatic wallets. In general, if it generates secp256k1 signatures, -it'll work just fine. - -### Languages & Frameworks - -Sapphire is programmable using any language that targets the EVM, such as Solidity -or Vyper. If you prefer to use an Ethereum framework like Hardhat or Foundry, you -can also use those with Sapphire; all you need to do is set your Web3 gateway URL. -You can find the details of the Oasis Sapphire Web3 gateway -[here](/dapp/sapphire#web3-gateway). - -### Transactions & Calls - -![Client, Key Manager, Compute Node diagram](../../general/images/architecture/client-km-compute.svg) - -The figure above illustrates the flow of a confidential smart contract -*transaction* executed on the Sapphire ParaTime. - -Transactions and calls must be encrypted and signed for maximum security. -You can use the [@oasisprotocol/sapphire-paratime] JS package to make your life -easy. It'll handle cryptography and signing for you. - -You should be aware that taking actions based on the value of private data may -leak the private data through side channels like time spent and gas use. If you -need to branch on private data, you should in most cases ensure that both -branches exhibit similar time/gas and storage patterns. - -You can also make confidential smart contract *calls* on Sapphire. If you -use `msg.sender` for access control in your contract, the call **must be -signed**, otherwise `msg.sender` will be zeroed. On the other hand, set the -`from` address to all zeros, if you want to avoid annoying signature popups in -the user's wallet for calls that do not need to be signed. The JS library will -do this for you. - -:::note - -Inside the smart contract code, there is no way of knowing whether the -client's call data were originally encrypted or not. - -::: - -

- Detailed confidential smart contract transaction flow on Sapphire -
- -
-
- -
- Detailed confidential smart contract call flow on Sapphire -
- -
-
- -### Contract State - -The Sapphire state model is like Ethereum's except for all state being encrypted -and not accessible to anyone except the contract. The contract, executing in an -active (attested) Oasis compute node is the only entity that can request its -state encryption key from the Oasis key manager. Both the keys and values of the -items stored in state are encrypted, but the size of either is *not* hidden. You -app may need to pad state items to a constant length, or use other obfuscation. -Observers may also be able to infer computation based on storage access patterns, -so you may need to obfuscate that, too. See [Security chapter] for more -recommendations. - -[Security chapter]: ./security.md#storage-access-patterns - -:::danger Contract state leaks a fine-grained access pattern - -Contract state is backed by an encrypted key-value store. However, the trace of -encrypted records is leaked to the compute node. As a concrete example, an ERC-20 -token transfer would leak which encrypted record is for the sender's account -balance and which is for the receiver's account balance. Such a token would be -traceable from sender address to receiver address. Obfuscating the storage access -patterns may be done by using an ORAM implementation. - -::: - -Contract state may be made available to third parties through logs/events, or -explicit getters. - -### Contract Logs - -Contract logs/events (e.g., those emitted by the Solidity `emit` keyword) -are exactly like Ethereum. Data contained in events is *not* encrypted. -Precompiled contracts are available to help you encrypt data that you can -then pack into an event, however. - -:::danger Unmodified contracts may leak state through logs - -Base contracts like those provided by OpenZeppelin often emit logs containing -private information. If you don't know they're doing that, you might undermine -the confidentiality of your state. As a concrete example, the ERC-20 spec -requires implementers to emit an `event Transfer(from, to, amount)`, which is -obviously problematic if you're writing a confidential token. What you can -do instead is fork that contract and remove the offending emissions. - -::: - -## Contract Verification - -[Sourcify] is the preferred service for the [verification of smart -contracts][ethereum-contract-verify] deployed on Sapphire. Make sure you have -the **address of each deployed contract** available (your deployment scripts -should report those) and the **contracts JSON metadata file** generated when -compiling contracts (Hardhat stores it inside the `artifacts/build-info` folder -and names it as a 32-digit hex number). If your project contains multiple -contracts, you will need to verify each contract separately. - -:::danger Contract deployment encryption - -**Do not deploy your contract with an encrypted contract deployment transaction, -if you want to verify it.** For example, if your `hardhat.config.ts` -or deployment script contains `import '@oasisprotocol/sapphire-hardhat'` or -`import '@oasisprotocol/sapphire-paratime'` lines at the beginning, you should -comment those out for the deployment. - -Verification services will try to match the contract deployment transaction code -with the one in the provided contract's metadata and since the transaction was -encrypted with an ephemeral ParaTime key, the verification service will not be -able to decrypt it. Some services may extract the contract's bytecode from the -chain directly by calling `eth_getCode` RPC, but this will not work correctly -for contracts with immutable variables. - -::: - -To verify a contract deployed on Sapphire Mainnet or Testnet: - -1. Visit the [Sourcify] website and hit the "VERIFY CONTRACT" button. - - ![Sourcify website](../images/sapphire/sourcify1.png) - -2. Upload the contracts JSON metadata file. - - ![Sourcify: Upload metadata JSON file](../images/sapphire/sourcify2.png) - - :::tip Store your metadata files - - For production deployments, it is generally a good idea to **archive your - contract metadata JSON file** since it is not only useful for the - verification, but contains a copy of all the source files, produced bytecode, - an ABI, compiler and other relevant contract-related settings that may be - useful in the future. Sourcify will store the metadata file for you and will - even make it available via IPFS, but it is still a good idea to store it - yourself. - - ::: - -3. Sourcify will decode the metadata and prepare a list of included contracts on - the right. Enter the address of the specific contract and select the "Oasis - Sapphire" or "Oasis Sapphire Testnet" chain for the Mainnet or Testnet - accordingly. If your contract assigns any immutable variables in the - constructor, you will also need to correctly fill those out under the "More - Inputs (optional)" panel. Finally, click on the "Verify" button. - - ![Sourcify: Verify contract](../images/sapphire/sourcify3.png) - -4. If everything goes well, you will get a ** *Perfect match* notice and your - contract is now verified**. Congratulations! - -In case of a *Partial match*, the contracts metadata JSON differs from the one -used for deployment although the compiled contract bytecode matched. Make sure -the source code `.sol` file of the contract is the same as the one used during the -deployment (including the comments, variable names and source code file -names) and use the same version of Hardhat and solc compiler. - -You can also explore other verification methods on Sourcify by reading the -[official Sourcify contract verification instructions][sourcify-contract-verify]. - -[Sourcify]: https://sourcify.dev/ -[hardhat-example]: https://github.com/oasisprotocol/sapphire-paratime/tree/main/examples/hardhat -[sourcify-contract-verify]: https://docs.sourcify.dev/docs/how-to-verify/ -[ethereum-contract-verify]: https://ethereum.org/en/developers/docs/smart-contracts/verifying/ - -## Running a Private Oasis Network Locally - -For convenient development and testing of your dApps the Oasis team prepared -the [ghcr.io/oasisprotocol/sapphire-dev][sapphire-dev] Docker image which brings you a -complete Oasis stack to your desktop. The Localnet Sapphire instance **mimics -confidential transactions**, but it does not run in a trusted execution -environment nor does it require Intel's SGX on your computer. The network is -isolated from the Mainnet or Testnet and consists of: - -- single Oasis validator node with 1-second block time and 30-second epoch, -- single Oasis client node, -- three compute nodes running Oasis Sapphire, -- single key manager node, -- PostgreSQL instance, -- Oasis Web3 gateway with transaction indexer and enabled Oasis RPCs, -- helper script which populates initial test accounts for you. - -To run the image, execute: - -```sh -docker run -it -p8545:8545 -p8546:8546 ghcr.io/oasisprotocol/sapphire-dev -``` - -After a while, the tool will show you something like this: - -``` -sapphire-dev 2023-02-28-git84730b2 (oasis-core: 22.2.6, sapphire-paratime: 0.4.0, oasis-web3-gateway: 3.2.0-git84730b2) - -Starting oasis-net-runner with sapphire... -Starting postgresql... -Starting oasis-web3-gateway... -Bootstrapping network and populating account(s) (this might take a minute)... - -Available Accounts -================== -(0) 0x75eCF0d4496C2f10e4e9aF3D4d174576Ee9010E2 (100 ROSE) -(1) 0x903a7dce5a26a3f4DE2d157606c2191740Bc4BC9 (100 ROSE) -(2) 0xF149ad5CBFfD92ba84F5784106f6Cb071A32a1b8 (100 ROSE) -(3) 0x2315F40C1122400Df55483743B051D2997ef0a62 (100 ROSE) -(4) 0xf6FdcacbA93A428A07d27dacEf1fBF25E2C65B0F (100 ROSE) - -Private Keys -================== -(0) 0x160f52faa5c0aecfa26c793424a04d53cbf23dcad5901ce15b50c2e85b9d6ca7 -(1) 0x0ba685723b47d8e744b1b70a9bea9d4d968f60205385ae9de99865174c1af110 -(2) 0xfa990cf0c22af455d2734c879a2a844ff99bd779b400bb0e2919758d1be284b5 -(3) 0x3bf225ef73b1b56b03ceec8bb4dfb4830b662b073b312beb7e7fec3159b1bb4f -(4) 0xad0dd7ceb896fd5f5ddc76d56e54ee6d5c2a3ffeac7714d3ef544d3d6262512c - -HD Wallet -================== -Mnemonic: bench remain brave curve frozen verify dream margin alarm world repair innocent -Base HD Path: m/44'/60'/0'/0/%d - -WARNING: The chain is running in ephemeral mode. State will be lost after restart! - -Listening on http://localhost:8545 and ws://localhost:8546 -``` - -Those familiar with local dApp environments will find the output above similar -to `geth --dev` or `ganache-cli` commands or the `geth-dev-assistant` npm -package. [sapphire-dev] will spin up a private Oasis Network locally, generate -and populate test accounts and make the following Web3 endpoints available for -you to use: -- `http://localhost:8545` -- `ws://localhost:8546` - -:::tip - -If you prefer using the same mnemonics each time (e.g. for testing purposes) -or to populate just a single wallet, use `-to` flag and pass the mnemonics or -the wallet addresses. For example - -```sh -docker run -it -p8545:8545 -p8546:8546 ghcr.io/oasisprotocol/sapphire-dev -to "bench remain brave curve frozen verify dream margin alarm world repair innocent" -docker run -it -p8545:8545 -p8546:8546 ghcr.io/oasisprotocol/sapphire-dev -to "0x75eCF0d4496C2f10e4e9aF3D4d174576Ee9010E2,0xbDA5747bFD65F08deb54cb465eB87D40e51B197E" -``` - -::: - -:::danger - -[sapphire-dev] runs in ephemeral mode. Any smart contract and wallet balance -will be lost after you quit the Docker container! - -::: - -[sapphire-dev]: https://github.com/oasisprotocol/oasis-web3-gateway/pkgs/container/sapphire-dev - -## See also - - - diff --git a/docs/dapp/sapphire/guide.mdx b/docs/dapp/sapphire/guide.mdx new file mode 120000 index 0000000000..872eeaa164 --- /dev/null +++ b/docs/dapp/sapphire/guide.mdx @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/guide.mdx \ No newline at end of file diff --git a/docs/dapp/sapphire/images b/docs/dapp/sapphire/images new file mode 120000 index 0000000000..dbac58ba8e --- /dev/null +++ b/docs/dapp/sapphire/images @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/images \ No newline at end of file diff --git a/docs/dapp/sapphire/precompiles.md b/docs/dapp/sapphire/precompiles.md deleted file mode 100644 index 1c09d2c27a..0000000000 --- a/docs/dapp/sapphire/precompiles.md +++ /dev/null @@ -1,317 +0,0 @@ ---- -description: Additional Sapphire precompiles for encryption and confidentiality ---- - -# Precompiles - -In addition to the standard EVM precompiles, Sapphire provides a number -of further cryptography-related ones to make some operations easier and -cheaper to perform: x25519 key derivation, Deoxys-II-based encryption -and decryption, signing key generation, message digest signing and -verification. - -These can be called in the same way as other precompiles by dispatching -calls to specific well-known contract addresses, as described below. - -Input parameters should be packed into a contiguous memory region with -each chunk of data padded to 32 bytes as usual. The recommended way to -construct parameter byte sequences in Solidity is with `abi.encode` and -`abi.decode`, which will transparently handle things like putting -`bytes` lengths in the correct position. - -## Library - -While it is possible to call the precompiles directly using Yul or, for -example, `abi.encode` and `abi.decode` in Solidity, we recommend always -using the `contracts/Sapphire.sol` wrapper library for a more comfortable -experience. The examples below are written against it. The library is provided -by the `@oasisprotocol/sapphire-contracts` npm package. - -```shell npm2yarn -npm install -D @oasisprotocol/sapphire-contracts -``` - -Then, you can use the wrapper library inside your `.sol` contract file as -follows: - -```solidity -pragma solidity ^0.8.13; - -import "@oasisprotocol/sapphire-contracts/contracts/Sapphire.sol"; - -contract Test { - constructor() {} - function test() public view returns (bytes32) { - return Sapphire.deriveSymmetricKey("public key as bytes32", "private key as bytes32"); - } -} -``` - -Feel free to discover other convenient libraries for Solidity inside the -`contracts/` folder of the -[Oasis Sapphire repository](https://github.com/oasisprotocol/sapphire-paratime)! - -## Generating Pseudo-Random Bytes - -* Precompile address: `0x0100000000000000000000000000000000000001` -* Parameters: `uint num_bytes, bytes pers` -* Gas cost: 10,000 minimum plus 240 per output word plus 60 per word of - the personalization string. - -Generate `num_bytes` pseudo-random bytes, with an optional personalization -string (`pers`) added into the hashing algorithm to increase domain separation -when needed. - -```solidity -bytes memory randomPad = Sapphire.randomBytes(64, ""); -``` - -### Implementation Details - -:::danger Prior to 0.6.0 -All view queries and simulated transactions (via `eth_call`) would receive the -same entropy in-between blocks if they use the same `num_bytes` and `pers` parameters. -If your contract requires confidentiality you should generate a secret in the constructor -to be used with view calls: - -```solidity -Sapphire.randomBytes(64, abi.encodePacked(msg.sender, this.perContactSecret)); -``` -::: - -The mode (e.g. simulation or 'view call' vs transaction execution) is fed to TupleHash (among other -block-dependent components) to derive the "key id", which is then used to derive a per-block VRF key -from epoch-ephemeral entropy (using KMAC256 and cSHAKE) so a different "key id" will result in a -unique per-block VRF key. This per-block VRF key is then used to create the per-block root RNG which -is then used to derive domain-separated (using Merlin transcripts) per-transaction random RNGs which -are then exposed via this precompile. The KMAC, cSHAKE and TupleHash algorithms are SHA-3 derived functions -defined in [NIST Special Publication 800-185](https://nvlpubs.nist.gov/nistpubs/specialpublications/nist.sp.800-185.pdf). - -## X25519 Key Derivation - -* Precompile address: `0x0100000000000000000000000000000000000002` -* Parameters: `bytes32 public_key, bytes32 private_key` -* Gas cost: 100,000 - -### Example - -```solidity -bytes32 publicKey = ... ; -bytes32 privateKey = ... ; -bytes32 symmetric = Sapphire.deriveSymmetricKey(publicKey, privateKey); -``` - -## Deoxys-II Encryption - -* Encryption precompile address: `0x0100000000000000000000000000000000000003` -* Decryption precompile address: `0x0100000000000000000000000000000000000004` -* Parameters: `bytes32 key, bytes32 nonce, bytes text_or_ciphertext, bytes additional_data` -* Gas cost: 50,000 minimum plus 100 per word of input - -### Example - -```solidity -bytes32 key = ... ; -bytes32 nonce = ... ; -bytes memory text = "plain text"; -bytes memory ad = "additional data"; -bytes memory encrypted = Sapphire.encrypt(key, nonce, text, ad); -bytes memory decrypted = Sapphire.decrypt(key, nonce, encrypted, ad); -``` - -## Signing Keypairs Generation - -* Precompile address: `0x0100000000000000000000000000000000000005` -* Parameters: `uint method, bytes seed` -* Return value: `bytes public_key, bytes private_key` -* Gas cost: method-dependent base cost, see below - -The available methods are items in the `Sapphire.SigningAlg` enum. Note, -however, that the generation method ignores subvariants, so all three -ed25519-based are equivalent, and all secp256k1 & secp256r1 based methods are -equivalent. `Sr25519` is not available and will return an error. - -### Gas Cost -* Ed25519: 1,000 gas - * `0` (`Ed25519Oasis`) - * `1` (`Ed25519Pure`) - * `2` (`Ed25519PrehashedSha512`) -* Secp256k1: 1,500 gas. - * `3` (`Secp256k1Oasis`) - * `4` (`Secp256k1PrehashedKeccak256`) - * `5` (`Secp256k1PrehashedSha256`) -* Secp256r1: 4,000 gas - * `7` (`Secp256r1PrehashedSha256`) - -### Public Key Format - - * Ed25519: 32 bytes - * Secp256k1 & Secp256r1: 33 bytes, compressed format (0x02 or 0x03 prefix, then 32 byte X coordinate) - -### Example - -Using the Sapphire library: - -```solidity -bytes memory seed = hex"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef"; -bytes memory publicKey; -bytes memory privateKey; -(publicKey, privateKey) = Sapphire.generateSigningKeyPair(Sapphire.SigningAlg.Ed25519Pure, seed); -``` - -## Message Signing - -* Precompile address: `0x0100000000000000000000000000000000000006` -* Parameters: `uint method, bytes private_key, bytes context_or_digest, bytes message` -* Gas cost: see below for the method-dependent base cost, plus 8 gas per 32 bytes of context and message except digest. - -The `context_or_digest` and `messages` parameters change in meaning slightly -depending on the method requested. For methods that take a context in addition -to the message you must pass the context in the `context_or_digest` parameter -and use `message` as expected. For methods that take a pre-existing hash of the -message, pass that in `context_or_digest` and leave `message` empty. -Specifically the `Ed25519Oasis` and `Secp256k1Oasis` variants take both a -context and a message (each are variable length `bytes`), the context serves as -a domain separator. - -### Signing Algorithms - -* `0` (`Ed25519Oasis`) - * 1,500 gas - * variable length context and message -* `1` (`Ed25519Pure`) - * 1,500 gas - * empty context, variable length message -* `2` (`Ed25519PrehashedSha512`) - * 1,500 gas - * pre-existing SHA-512 hash (64 bytes) as context, empty message -* `3` (`Secp256k1Oasis`) - * 3,000 gas - * variable length context and message -* `4` (`Secp256k1PrehashedKeccak256`) - * 3,000 gas - * pre-existing hash (32 bytes) as context, empty message -* `5` (`Secp256k1PrehashedSha256`) - * 3,000 gas - * pre-existing hash (32 bytes) as context, empty message -* `7` (`Secp256r1PrehashedSha256`) - * 9,000 gas - * pre-existing hash (32 bytes) as context, empty message - -### Example - -Using the Sapphire library: - -```solidity -Sapphire.SigningAlg alg = Sapphire.SigningAlg.Ed25519Pure; -bytes memory pk; -bytes memory sk; -(pk, sk) = Sapphire.generateSigningKeyPair(alg, Sapphire.randomBytes(32, "")); -bytes memory signature = Sapphire.sign(alg, sk, "", "signed message"); -``` - -## Signature Verification - -* Precompile address: `0x0100000000000000000000000000000000000007` -* Parameters: `uint method, bytes public_key, bytes context_or_digest, bytes message, bytes signature` - -The `method`, `context_or_digest` and `message` parameters have the same meaning -as described above in the Message Signing section. - -### Gas Cost - -The algorithm-specific base cost below, with an additional 8 gas per 32 bytes of -`context` and `message` for the `Ed25519Oasis`, `Ed25519Pure` and `Secp256k1Oasis` algorithms. - -* Ed25519: 2,000 gas - * `0` (`Ed25519Oasis`) - * `1` (`Ed25519Pure`) - * `2` (`Ed25519PrehashedSha512`) -* Secp256k1: 3,000 gas - * `3` (`Secp256k1Oasis`) - * `4` (`Secp256k1PrehashedKeccak256`) - * `5` (`Secp256k1PrehashedSha256`) -* Secp256r1: 7,900 gas - * `7` (`Secp256r1PrehashedSha256`) - -### Example - -Using the Sapphire library: - -```solidity -Sapphire.SigningAlg alg = Sapphire.SigningAlg.Secp256k1PrehashedKeccak256; -bytes memory pk; -bytes memory sk; -bytes memory digest = abi.encodePacked(keccak256("signed message")); -(pk, sk) = Sapphire.generateSigningKeyPair(alg, Sapphire.randomBytes(32, "")); -bytes memory signature = Sapphire.sign(alg, sk, digest, ""); -require( Sapphire.verify(alg, pk, digest, "", signature) ); -``` - -## SHA-512 - - * Precompile address: `0x0100000000000000000000000000000000000101` - * Parameters: `bytes input_data` - -Hash the input data with SHA-512, according to [NIST.FIPS.180-4] - -:::warning SHA-512 is vulnerable to length-extension attacks - -The SHA-512/256 variant (below) is not vulnerable to [length-extension attacks]. -Length extension attacks are relevant if, among other things, you are computing -the hash of a secret message or computing merkle trees. - -::: - -[length-extension attacks]: https://en.wikipedia.org/wiki/Length_extension_attack - -### Gas Cost - -* 115 gas, then 13 gas per word - -### Example - -```solidity -bytes memory result = sha512(abi.encodePacked("input data")); -``` - - -## SHA-512/256 - - * Precompile address: `0x0100000000000000000000000000000000000102` - * Parameters: `bytes input_data` - -Hash the input data with SHA-512/256, according to [NIST.FIPS.180-4] - -[NIST.FIPS.180-4]: https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.180-4.pdf - -### Gas Cost - - * 115 gas, then 13 gas per word - -### Example - -```solidity -bytes32 result = sha512_256(abi.encodePacked("input data")); -``` - - -## Subcall - - * Precompile address: `0x0100000000000000000000000000000000000102` - * Parameters: `string method, bytes cborEncodedParams` - -Subcall performs an Oasis SDK call. This allows Sapphire contracts to interact -with the Consensus layer and other modules supported by the SDK. For more -information about the specific modules and their available calls see the Oasis -SDK [source code]. - -### Gas Cost - -Varies per operation, refer to the oasis-sdk [source code]. - -### Example - -TODO: an example - -[source code]: https://github.com/oasisprotocol/oasis-sdk/tree/main/runtime-sdk/src/modules diff --git a/docs/dapp/sapphire/precompiles.md b/docs/dapp/sapphire/precompiles.md new file mode 120000 index 0000000000..9d4de035b3 --- /dev/null +++ b/docs/dapp/sapphire/precompiles.md @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/precompiles.md \ No newline at end of file diff --git a/docs/dapp/sapphire/quickstart.mdx b/docs/dapp/sapphire/quickstart.mdx deleted file mode 100644 index 76dd35f4a2..0000000000 --- a/docs/dapp/sapphire/quickstart.mdx +++ /dev/null @@ -1,207 +0,0 @@ -import DocCard from '@theme/DocCard'; -import {findSidebarItem} from '@site/src/sidebarUtils'; - -# Quickstart - -

- -

- -In this tutorial, you will build and deploy a unique dApp that requires -confidentiality to work. By the end of the tutorial, you should feel -comfortable setting up your Eth development environment to target Sapphire, -and know how and when to use confidentiality. - -The expected completion time of this tutorial is 15 minutes. - -:::info Sunsetting Truffle - -Per Consensys [announcement], Oasis will no longer support Truffle as of -2023-10-05 and encourage immediate [migration] to Hardhat. Please see our -repository for the archived Truffle [tutorial] and the deprecated [example]. - -::: - -[announcement]: https://consensys.io/blog/consensys-announces-the-sunset-of-truffle-and-ganache-and-new-hardhat -[migration]: https://trufflesuite.com/docs/truffle/how-to/migrate-to-hardhat/ -[tutorial]: https://github.com/oasisprotocol/docs/blob/2f4a1a3c217b82687ab9440bf051762ae369ed45/docs/dapp/sapphire/quickstart.mdx -[example]: https://github.com/oasisprotocol/sapphire-paratime/tree/3a85e42e6c1cc090c28a521cf7df6353aa8a30c8/examples/truffle - - -## Create a Sapphire-Native dApp - -Porting an existing Eth app is cool, and will provide benefits such as -protection against MEV. -However, starting from scratch with confidentiality in mind can unlock some -really novel dApps and provide a [higher level of security]. - -One simple-but-useful dApp that takes advantage of confidentiality is a -[dead person's switch] that reveals a secret (let's say the encryption key to a -data trove) if the operator fails to re-up before too long. -Let's make it happen! - -[higher level of security]: guide.mdx#writing-secure-dapps -[dead person's switch]: https://en.wikipedia.org/wiki/Dead_man%27s_switch - -### Init a new Hardhat project - -We're going to use Hardhat, but Sapphire should be compatible with your dev -environment of choice. Let us know if things are not as expected! - -1. Make & enter a new directory -2. `npx hardhat@~2.16.0 init` then create a TypeScript project. -3. Add [`@oasisprotocol/sapphire-hardhat`] as dependency: - - ```shell npm2yarn - npm install -D @oasisprotocol/sapphire-hardhat - ``` - -4. Install `@nomicfoundation/hardhat-toolbox`, TypeScript and other peer - dependencies required by HardHat. - -### Add the Sapphire Testnet to Hardhat - -Open up your `hardhat.config.ts` and drop in these lines. - -```diff -diff --git a/hardhat.config.ts b/hardhat.config.ts -index 414e974..49c95f9 100644 ---- a/hardhat.config.ts -+++ b/hardhat.config.ts -@@ -1,8 +1,19 @@ - import { HardhatUserConfig } from "hardhat/config"; -+import '@oasisprotocol/sapphire-hardhat'; - import "@nomicfoundation/hardhat-toolbox"; - - const config: HardhatUserConfig = { - solidity: "0.8.17", -+ networks: { -+ 'sapphire-testnet': { -+ // This is Testnet! If you want Mainnet, add a new network config item. -+ url: "https://testnet.sapphire.oasis.dev", -+ accounts: process.env.PRIVATE_KEY -+ ? [process.env.PRIVATE_KEY] -+ : [], -+ chainId: 0x5aff, -+ }, -+ }, - }; - - export default config; -``` - -By importing `@oasisprotocol/sapphire-hardhat` at the top of the config file, -**any network config entry corresponding to the Sapphire's chain ID will -automatically be wrapped with Sapphire specifics for encrypting and signing the -transactions**. - -### Get some Sapphire Testnet tokens - -Now for the fun part. We need to configure the Sapphire network and get some tokens. -Hit up the one and only [Oasis Testnet faucet] and select "Sapphire". -Submit the form and be on your way. - -[Oasis Testnet faucet]: https://faucet.testnet.oasis.dev - -### Get the Contract - -This is a Sapphire tutorial and you're already a Solidity expert, so let's not -bore you with explaining the gritty details of the contract. -Start by pasting [Vigil.sol] into `contracts/Vigil.sol`. - -While you're there, also place [run-vigil.ts] into `scripts/run-vigil.ts`. -We'll need that later. - -[Vigil.sol]: https://github.com/oasisprotocol/sapphire-paratime/blob/main/examples/hardhat/contracts/Vigil.sol -[run-vigil.ts]: https://github.com/oasisprotocol/sapphire-paratime/blob/main/examples/hardhat/scripts/run-vigil.ts - -#### Vigil.sol, the interesting parts - -The key state variables are: - -```solidity - SecretMetadata[] public _metas; - bytes[] private _secrets; -``` - -* `_metas` is marked with `public` visibility, so despite the state itself being - encrypted and not readable directly, Solidity will generate a getter that will - do the decryption for you. -* `_secrets` is `private` and therefore truly secret; only the contract can - access the data contained in this mapping. - -And the methods we'll care most about are - -* `createSecret`, which adds an entry to both `_metas` and `_secrets`. -* `revealSecret`, which acts as an access-controlled getter for the data - contained with `_secrets`. Due to trusted execution and confidentiality, the - only way that the secret will get revealed is if execution proceeds all the - way to the end of the function and does not revert. - -The rest of the methods are useful if you actually intended to use the contract, -but they demonstrate that developing for Sapphire is essentially the same as for -Ethereum. -You can even write tests against the Hardhat network and use Hardhat plugins. - -### Run the Contract - -And to wrap things up, we'll put `Vigil` through its paces. -First, let's see what's actually going on. - -After deploying the contract, we can create a secret, check that it's not -readable, wait a bit, and then check that it has become readable. -Pretty cool if you ask me! - -Anyway, make it happen by running - -```shell -PRIVATE_KEY="0x..." npx hardhat run scripts/run-vigil.ts --network sapphire-testnet -``` - -And if you see something like the following, you'll know you're well on the road -to deploying confidential dApps on Sapphire. - -``` -Vigil deployed to: 0x74dC4879B152FDD1DDe834E9ba187b3e14f462f1 -Storing a secret in 0x13125d868f5fb3cbc501466df26055ea063a90014b5ccc8dfd5164dc1dd67543 -Checking the secret -failed to fetch secret: reverted: not expired -Waiting... -Checking the secret again -The secret ingredient is brussels sprouts -``` - -## All done! - -Congratulations, you made it through the Sapphire tutorial! If you have any -questions, please check out the [guide] and join the discussion on the -[#sapphire-paratime Discord channel][social-media]. - -Best of luck on your future forays into confidentiality! - -:::info Example - -Visit the Sapphire ParaTime repository to download the [Hardhat][hardhat-example] -example of this quickstart. - -::: - -:::info Example - -If your project involves building a web frontend, we recommend that you check -out the official [Oasis starter] files. - -[Oasis starter]: https://github.com/oasisprotocol/demo-starter - -::: - -## See also - - - - - -[social-media]: ../../get-involved/README.md#social-media-channels -[guide]: guide.mdx -[hardhat-example]: https://github.com/oasisprotocol/sapphire-paratime/tree/main/examples/hardhat -[`@oasisprotocol/sapphire-hardhat`]: https://www.npmjs.com/package/@oasisprotocol/sapphire-hardhat diff --git a/docs/dapp/sapphire/quickstart.mdx b/docs/dapp/sapphire/quickstart.mdx new file mode 120000 index 0000000000..b57943dc32 --- /dev/null +++ b/docs/dapp/sapphire/quickstart.mdx @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/quickstart.mdx \ No newline at end of file diff --git a/docs/dapp/sapphire/security.md b/docs/dapp/sapphire/security.md deleted file mode 100644 index e9f869e050..0000000000 --- a/docs/dapp/sapphire/security.md +++ /dev/null @@ -1,116 +0,0 @@ ---- -description: "Secure dApps: Recipes for Confidentiality" ---- - -# Security - -This page is an ongoing work in progress to support confidential smart contract -development. At the moment we address safeguarding storage variable access -patterns and provide best practices for more secure orderings of error checking -to prevent leaking contract state. - -## Storage Access Patterns - -You can use a tool such as [hardhat-tracer] to examine the base EVM state -transitions under the hood. - -```shell npm2yarn -npm install -D hardhat-tracer -``` - -and add `hardhat-tracer` to your `config.ts` file, - -```typescript -import "hardhat-tracer" -``` - -in order to test and show call traces. - -```shell -npx hardhat test --vvv --opcodes SSTORE,SLOAD -``` - -You can also trace a particular transaction, once you know its hash. - -```shell -npx hardhat trace --hash 0xTransactionHash -``` - -For both [gas] usage and confidentiality purposes, we **recommend using -non-unique data size**. E.g. 64-byte value will still be distinct from a -128-byte value. - -:::caution Inference based on access patterns - -`SSTORE` keys from one transaction may be linked to `SLOAD` keys of another -transaction. - -::: - -## Order of Operations - -When handling errors, gas usage patterns not only can reveal the code path -taken, **but sometimes the balance of a user as well** (in the case of a diligent -attacker using binary search). - -```solidity -function transferFrom(address who, address to, uint amount) - external -{ - require( balances[who] >= amount ); - require( allowances[who][msg.sender] >= amount ); - // ... -} -``` - -Modifying the order of error checking can prevent the accidental disclosure of -balance information in the example above. - -```solidity -function transferFrom(address who, address to, uint amount) - external -{ - require( allowances[who][msg.sender] >= amount ); - require( balances[who] >= amount ); - // ... -} -``` - -## Gas Padding - -To prevent leaking information about a particular transaction, Sapphire -provides a [precompile] for dApp developers to **pad the amount of gas used -in a transaction**. - -```solidity -contract GasExample { - bytes32 tmp; - - function constantMath(bool doMath, uint128 padGasAmount) external { - if (doMath) { - bytes32 x; - - for (uint256 i = 0; i < 100; i++) { - x = keccak256(abi.encodePacked(x, tmp)); - } - - tmp = x; - } - - Sapphire.padGas(padGasAmount); - } -} -``` - -Both contract calls below should use the same amount of gas. Sapphire also -provides the precompile to return the gas [used] by the current transaction. - -```typescript -await contract.constantMath(true, 100000); -await contract.constantMath(false, 100000); -``` - -[gas]: https://docs.soliditylang.org/en/latest/internals/layout_in_storage.html -[hardhat-tracer]: https://www.npmjs.com/package/hardhat-tracer -[precompile]: https://api.docs.oasis.io/sol/sapphire-contracts/contracts/Sapphire.sol/library.Sapphire.html#padgas -[used]: https://api.docs.oasis.io/sol/sapphire-contracts/contracts/Sapphire.sol/library.Sapphire.html#gasused diff --git a/docs/dapp/sapphire/security.md b/docs/dapp/sapphire/security.md new file mode 120000 index 0000000000..701ce461be --- /dev/null +++ b/docs/dapp/sapphire/security.md @@ -0,0 +1 @@ +../../../external/sapphire-paratime/docs/security.md \ No newline at end of file diff --git a/external/sapphire-paratime b/external/sapphire-paratime new file mode 160000 index 0000000000..4dced37d7b --- /dev/null +++ b/external/sapphire-paratime @@ -0,0 +1 @@ +Subproject commit 4dced37d7b7db53be1902fddb3fd022cae617593 diff --git a/src/editUrl.js b/src/editUrl.js index 1b15c6c689..2aff35b4c0 100644 --- a/src/editUrl.js +++ b/src/editUrl.js @@ -7,6 +7,7 @@ const gitModules = { 'external/cli/': 'https://github.com/oasisprotocol/cli/{mode}/master/', 'external/oasis-core/': 'https://github.com/oasisprotocol/oasis-core/{mode}/stable/22.2.x/', 'external/oasis-sdk/': 'https://github.com/oasisprotocol/oasis-sdk/{mode}/main/', + 'external/sapphire-paratime/': 'https://github.com/oasisprotocol/sapphire-paratime/{mode}/main/', }; /** diff --git a/src/remark/cross-repo-links.js b/src/remark/cross-repo-links.js index 83a0bd3501..5df0f4520c 100644 --- a/src/remark/cross-repo-links.js +++ b/src/remark/cross-repo-links.js @@ -5,6 +5,7 @@ const oasisSdkContractRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-sdk\/ const oasisSdkRuntimeRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-sdk\/blob\/main\/docs\/runtime\/(.*)\.mdx?(#.*)?/; const oasisCoreRegex = /https:\/\/github\.com\/oasisprotocol\/oasis-core\/blob\/master\/docs\/(.*)\.mdx?(#.*)?/; const adrsRegex = /https:\/\/github\.com\/oasisprotocol\/adrs\/blob\/main\/(.*)\.mdx?(#.*)?/; +const sapphireParatimeRegex = /https:\/\/github\.com\/oasisprotocol\/sapphire-paratime\/blob\/main\/(.*)\.mdx?(#.*)?/; const docsRegex = /https:\/\/github\.com\/oasisprotocol\/docs\/blob\/main\/docs\/(.*)\.mdx?(#.*)?/; const indexReadmeRegex = /(index|README)($|#)/; @@ -33,6 +34,8 @@ module.exports = function (options) { node.url = node.url.replace(oasisCoreRegex, '/core/$1$2'); } else if (adrsRegex.test(node.url)) { node.url = node.url.replace(adrsRegex, '/adrs/$1$2'); + } else if (sapphireParatimeRegex.test(node.url)) { + node.url = node.url.replace(sapphireParatimeRegex, '/sapphire-paratime/$1$2'); } else if (docsRegex.test(node.url)) { node.url = node.url.replace(docsRegex, '/$1$2'); } else {