From e0d7a0d2866c74cc72ce19f58c9f29cbb5a12782 Mon Sep 17 00:00:00 2001 From: Emre Surmeli Date: Thu, 20 Oct 2022 07:02:06 -0400 Subject: [PATCH 01/35] Avalanche comparison (#3784) * Add avalanche comparison page and add it to the sidebar * Add Avalanche to the main page intro * Add Avalanche comparison info * Add into, model and architecture sections * Add governance * Add references * Add consensus section * Add staking and message passing * Add upgradibility and conslusion sections * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparison-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Rename file for conformity * Resources added, remove to do * Improve upon architecture and p/x chain sections * Add comment to add infographics, and add a simple image visualizing ava network architecture * add new section talking about founders and company * Add ava network image * Expand on network info * Expand on consensus and add image * Add consensus image * Expand on metrics that can be changed via governance * Add staking info and remove sharding section as it doesn't exist in Avalanche * Grammarly * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Add BABE and GRANDPA links * Add XCM and XCMP links * Add attributes to image sources * Add Polkadot staking mechanics to the staking section * Rephrase conclusion * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Update docs/learn/learn-comparisons-avalanche.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * Clarify Subnet section * Clarify subnets, primary network and fix flow * final touches * Add Image sources to display Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- .../avalanche-consensus-protocols.png | Bin 0 -> 102431 bytes .../avalanche/avalanche-network.png | Bin 0 -> 224820 bytes docs/learn/learn-comparisons-avalanche.md | 123 ++++++++++++++++++ docs/learn/learn-comparisons.md | 2 + polkadot-wiki/sidebars.js | 9 +- 5 files changed, 130 insertions(+), 4 deletions(-) create mode 100644 docs/assets/comparisons/avalanche/avalanche-consensus-protocols.png create mode 100644 docs/assets/comparisons/avalanche/avalanche-network.png create mode 100644 docs/learn/learn-comparisons-avalanche.md diff --git a/docs/assets/comparisons/avalanche/avalanche-consensus-protocols.png b/docs/assets/comparisons/avalanche/avalanche-consensus-protocols.png new file mode 100644 index 0000000000000000000000000000000000000000..dd6312124fc157db3184be08d27c6faebcee2c01 GIT binary patch literal 102431 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

T*NWGleF0fVD~l4_P;rfG}9 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�=6ah86Na5ORfj~}&&0gP#1RA%GSwv8k?m|qCw&9j| zOjl9R6kjmsL+hUVs+gS-RzAilc>p)Uk32umQ*sEbrPJ zT5ktds?E2CB?P44Nx$`>7mG)~DnbmmFTTGQQEpOn|0v-bGzs!P$}OtQ_%^Q`1Opg`9DDNnPjpfiQwczpxQ)3xKGX z%$Ou6o0N#aox3Re@886|e0@dqCBTMhmK`CW;3>tJQPRXeQgFlNUP|A%vY&}^%lCS3 z(n7bY7m)I@*c7#NTtDco$(f1p_$w|kKWJgeP=Jse!%qD?qO%ww1QUbi@{?0n_fnyEv{odcxf2Ym8GeBxETO5~Qf*Ql_L;YK5TI9v2#0{! z5<3pjVnO*NA!Q!2zOfDIPqcZZ)$J&EX<{5YFE+@l?B%gasfWDPzMJbMXnSJ4-Jk_O zbwX4YXXP96GgpA0fgfRPGNgvaU)zx+USrvwAeww1%5iQ3a+0S?@Oj-V?h+kmZUL0&5RZfZ{96{T zTei@vW03Z+3e{vN_b{B~0)_%?SF4G~eLyn+A7F zQs&MlBL#Fb&+8;H-#cQ1LFx$F1@`EMcX`t@Q|#+G^3~L?(`2~dLHcbn)QCap7wD_6 zD9r4JNtY>wv_&j(YNauU3Hk#15KQbW#Cg97vz3ZCX71%Lq<=;DO#LHydEstR2^6A7 z0RBRB*Nux9!JKM-7R(`$;%AdB`PpGQlp|fXO+;im+bpQx?xx?Yd*9%)>Co=NNwfMF@O_5K8#`}E7i-1mbGUsPft?AF-1(k2>8mMp$FW? z%Bx!5HtW7-ql234aAZ*b#zSP>o`5-)Z1>)t4;h7MM={Z|i?E)zufXOW3Y;EGvBw zRDgV)KyS`yHiET2+Nh4jNAoVYs;bTPNx`qGblh{#@S9!Y#FB{9gCh&bbw~hSUap-P zWjda+ofO;kyq+sc)cv2g0F>DK%aXHZ3fS{{MHktG8x~E`$mdtxFsNTbFeBlp#=c^I zSZc5>Ok4d_;OD8PQB^fd-uYS9{maBBwkgB{mt_61d|dWnq70(4(zP&N7%#BKlvyOA)9S}F%07V^dU zJf>7Wb?WeqN5h=uC!YKI>Bxybg2lzD0^`UvTa#r9+NE>&U40 zox02z#wrNVkH#-Ub=G@m)Uk}K(r}t9nO{NRr()c%Kgd}u$VR`HF2T92JP||WGd9lS zUbQzQ5!b>i9DdgdP4)TUP!RT_u4@Q*pyeqjNI>>b)ZVD8{MAxQ;P2(yKfBzo>?dDF z(mP<&=;~kE(>^T8cc?C+-v;q;K2J^n|5W5#{dH;W-W;_o<1T#2x8J{OYrfj;+>aB(F`-Dz zTGIB$;7_C5esN~Yw*8d3H)1#a9rlN!h%fcUy!~94^tW+E%wN~p>7EO@ua-ZmOvfam zUWDC-@4le!mGGLy;P$5RENoNZkv|l;v&jssu*Jw0SmK)Qbk3|bUj0aj4~_`MfRPw- zzAol;=Y<3aq#nm{OD~^NptjF`Ph%N3>B`o@3W%(!PeqTaRdqpm$c~#2^hF2pF{WXS zDk>m(#O+w>)=CX?mt&r5%Odr7>{`?0YD?+svc34UotKuC}F zin=tliSU*R{h)PH7|6{39ky>$({%0UtUj4%@EF?U)2^%>AxItZ8<2LlD{p2xqS9>Z zXN0mw6P)=KRlQAXRuHJOI(L$NArb1mfE{rQ#m(+88YtAFCz-BDJh9h~$S|fx_dw7W zCjMR}{SB-Zqy_ekK3eX(X!QDqQTVu)tsA+&-h`{fyO$Ry+L8Z;+uE}WC|GAC*7j}V zobGg2)dCQrLLzvyNM-cwL4l4YBb%jJ6ALuubTCJUq9K#enotRrQDjZTR~x+7v=C}W zP%>&*#Lt6W7ey7RS!E(u15cqf7n+@%gL2WPPRx%~W3>`JLM(CDymzZsWuj){8#}l! zvN`t@XZM%)u)nC+=e%s!ahMT3Iu{kXe_=%SP}qWo6%-?66|VQu9AVIgDcbc_f`AmP z5luzp=eVA|J4-)Bs+KO!oDXh9Bj$_OyoGdjjnWZhZD(cVaC z!|7h(G98h&VtAHgV=Zq5HD6UjDOoM4&@4V(H0X@<7@l-iMFYf7+-%( zdT}=V)%(@E-cUa#H|DyceD1?l;YBti)iBxS>b2?Y#0LMV=}+{yBnyi@hqEH>3w|$h zdatyK7%wB|!mhp9*K9f^S8`japdiNh`9j8uRt~t_ns>(Qi6!2jeu~6U&njFF){BT= z@*>4H8w52M&mX0UQ{E|7bxgT61v-a#OF)IAiKU5*CoWp`e-bZ!W?|RIXkuT1Pf=&o zawQcg(AZW+EXJLcI;W5fKMHiLdg*@86!4vv2H%njJut*i$Rm<^mZ!VWRv5v98tA+3 z!n74}DXS~`G?_6-2#Ym{bZiRW%1(*)E}J=~Ue9b;;G8yDG?vmz+ju?2Cdv{XmJO`MZpxgnK}mm^Zg5eI;s-=lqHTfUH_ zkJ8I&A2!a4G!Wa3vRPMb%U6su4EL*5Ygdaj8l(*3PUn){4gXBp5UrjrfnBfo2@y2N z>AjM>Nyp|#=OG{&8h|cXMt6w9?0sPt z3(C-+xuP7TCwx>62lu|?c+0IJolc9k9rRkwu)?0hEbY@P(RLK;H%#8-CDfwSUr0pn z(blN00wXv?VqRn6y`q65>l6P-!!HfWdHi8q;hesYPKTh1!T%9f^nww6;^LA5gv`_* z{pO+t4VLH=9C(-`kFZ)+YtL)t@|XKomn`7oJKL?47wEUvi#xQ^t<_9!u5}^K&s! zF-ew^v%50q4J5xby7X0yj;x9|(a5w;)(WMZKynWSsfDwVB$SYy*?J1F*bS1wl7if& znZ?7dKg)fB-)FG}i@a(Q=e(?0X?ERQi!%|9A#C4!`3)(=3AU4|qIQ&x;>^;R@g#^j#Zd9|vMGgb*5i z{&J^=*4DH+L1+N*C_zQ2jAuc*=NE^c7f?7zUXU3X2HO7#N=Jvjvc7b;^S*ksx*E8a z9I8&(9Q0tE}<+Juj+4KWH$a>#TMv1Xj8}dcSFqg&}F9P!F zk`#rU5vDg9AtE6SVZ;bVj>phIru z-KH^wvwbb;SYyX2$T*!fnNSYSwVuwb(>H*@qoCeKCzmAbm+OUm| zLZjhN{?POo-7S{r_+c2!BgRga5x!YLoX|4E6mMh1E-1eBLJ(u7T^Drda*rIvwqm`v z#lxxh%iUx`3=D}e`JB01P*UFf)(e_pY(FqcVGC{yWn&Z;lDYdCRo{7t^FU~t=Be9+ zB^jO?WRV$d{YcL^j3sI(+IjF!6SM1t0IY2;T@CY3imfj-T`#hHIJb3RQO;; zDvhE=m&$Nmw|)&Aq~?cD-_sF97R5%DVP=^NjIpJwn?i)aPTJ?yrv$eOJ=829wn5HZ zGyOM&(g^8-u&)LwCz7jK@W`(y5w*A|cUnhW3VMi;j28>U2D$K|`i((HGxgwX1$Sja zTSR$%QAgs@ENLP(qimvGf6TY(?2x!foP&xvt53fu&0@toOS`({Q`-wXUbz_J>5Wbc<^?=>*m>+nbN;{0=_nA;m*hKDiAg5ub z3`x!6u?d1Q5wUzFy=r??V11w!f+$H|TYrEh8f6olfTRc2MEu7z+Wq*tslyhd!9UW8 zVWychXeUO#ehGRmJ4hG!I3>Cn2v_t73P!Lp16q@~Rm9ted|MGBFMg9(aftG8YEdej zk2LA(2+$5{af7s0671JjT}nx{WZwF=FIGVi8hLU+LWP6^RX zcSOa^$?jHJK;fhX8Wv1EzYo|1ybFGJZFM?;=K;{ykrfNa>td^4;)G6e*$Jt+?S-{D z_8G-vk)wiba}C>foXi<$Z8O+~KzIVfLwL%UUewz04)REp{l7fI*517#=u*P=V@o+^ zgbbECUM~^9M8&+^q=-khrKjgnjFX_0qZenw?HynUDoFcE%$$p+VvD5VCSdehi^T*! zEYpc0NHIADZ=VyEb`T^E@Rbfz-e1eq^5u1vdb;hV3Do>>w|laXyDAcHRZG|BeWP8L z+yqzrx+RKI1(1bWXUBwqC!Z&7;M_QI#H7B`G|q~86Q6uj%&HmCLBwVw6ZYW3SxCAr zKG;=Ho$9f9kcxR=nWz~WUuEKu%1?BhKq)C@lc8ryXBWi{7Q>0$bq^tpZ-rn~CPproaom^{@ z=)3&4WP=RdFWRG{SynU!wEFj0u?Iml-;w>PR_^bo zICnYVyhZK;4Y62LwcqXe@(`Si?z8M8+)SpQz*P8KO+8K;S}VSI+9Zd%5_qnw6`1d$ z64Cn^vSdF@vu=Wdt3tW7=gW!UlK&4^XBE{(7qDyGU4y&3ySrPl;ts{#-642zcW7~G zaWC##XmKdP-K8hrf8^p^*{f0|l%~zQgF}*&T%8suiGSZ@yxBK4Ppi`YZE06{U>_XB~}#clbB--R=;Rg z5F61O)rpO1o;Q}?5dwl-aytGAJH*Px6b&IyEi%|4;xngnv0-w>-d7WdsOlZlac&E zC+p28YZ~zSPdSjtX}!4+5Byx%2$Jrb zv01-Pu@#NNYO3^;*T?30kd~@&6SoCx*ws=MC%0x6R=-m)D}9e;k(8Ot13;Dr3~Rfp zNYCt~ABo2o3D1REO&j$gcxq zQPl{%{QWwOBMn6aXK63RkmkcPJx}kZKaCO$_f80lh(vXW^h2`Anxr&&ySz_|nrbPP z-=~j>HdT@!#uEClmsP4#V+1T~ux!?J7H=M3oss|#w8yj!8akW;iW>ksHHbw{XriVPO@jW`yJt|Bj8-*e#1svN;&YZu*))v;53V1JaapLYvk6b*7 zzw(-|XkHL;oV(v-vr$9nOxyr)K>NAQ6TH^nZm1`C&nHR}nw-%7E_qwlP-)+`5wk7P zogu>#4~&??d)~eldN~gs1Ag4x#W*xN7eWMrI{Zj~LgoU{r4}j}Ul{G1eUw~Iop9BB z=PVL=bo^e~LOGQ3IY+?^th>3tCFPKr1}oU$-PuTy^*!LkIA?ECou=&1o#JDYQYZiF~}N9xF~L8{*G_6w78Rqgd$a;aHQ*okC_*mO_V$R>sS~u z4T_!ujd-f|o!=i!{QM8TXVMtN@zgZ0NrXofpmC4_VOd~Z5@Ckk9a^N$iItXRrnqu7--HUfXaSPxQ`D@b;5oDXk)=0l3O!hmz$4f)s~HwQFQ-F>*R$e z&sg`0w7VBm37N>e@z=uV_T}7J(I#$}xrv5CN$m_HNms0q(q7c}F%K$%d$_y8 zHqxR7$4Z2|lxVaDz&t+rsQk@0nav-eZgvltr9l%vRx|<|K*b<*KdQTR zv@TV^{D8_j)jZG=6u)ae=l!yrFNaKWb((lgkv~t!Lb^9J`tZ<~p0A$2{|%p`z_t>f zA$YXtP=|*M12w+!CnA1Y^3y;#WMQQNg*nQqUss9&#b7*wIYIsU%NSO}(Tjq@zg;XC zREBK^hrbKE@Q;SkPUrQ2`^^kqLh(bvbY(^YBly`(JWS$D#YSFoq zWP&S)d6b`qo4b#bz=@eD>D98;H;W=)mvOwwl=n5^0m;#87(8O&XfLK~lj)sr2 zNm?=N)FVN`SVwx{E5+rqqL{{yhhr($2h~!In_9i0yWn>E>XdKk%9#J432z3W3EDCN z0w*CrePYSKiOe8t2{DJ2NvUf4;fb8DcuTOT!d86ImfX=%5FiM zb)M);wCeCO)9n>$th?qvl=$?*HVmBavsw2wg`a+L?DoT`sC;o zz+8bLE4+Dnj(Jy987brCHL&!p#0!BAeQZc)5qlDaOqS%Y@Zm7D1lSL^-MIQOQ*-@L zz4$J%Yn-jebyqX%E)mrHQ)%5(*|P5Uawer1+j5c4u&!ccdfI=KjOy@VAMvN5QnnNE zG}CI#5*HRFwWZ32Psp(zX$)JDELZAvb`A`rcXFag-pOyjMRv-vo>Egf*wPs2fQ2{V zvkaj2Rbf*eP#eGJIOuOTOeMSX4(d4`f&=wp2 zuFwKfyQF$~3Z9n-T>})cFSQX@er1UdcMFRUY;+zA-M9wmA~F%!3~G>3Mh(-lxeQfu zNT)0`oC^onx*VjgGQDg(l~8j|pjhY>qoFP(t{?4fgE}!#7C-WQy$K|=9&7KKm=@to z|CBp{hrR!DV$i>v)??z+0WF(5@^Ug4LkM52@nZ0&wvGawh;~J?sOwb+PioLvfRseX zSFA>VxeBMpH)%ysEbpRhG$wouB!7-axi#1Adjg}Q(!LvpDfLI-Mp#*YaoC4(|BEZX z5OC(!#Ap?4VeME>1uqV4%5C_0Go@JjW5^zt5J!b@wG+UDy2jZObe)fF(;Q&~pGdk2 zC%>y&xc^|T1CD}K2S!~>SxGTvVcmR@22|iuyal=6hBVj#(ponPb8)JIn^MjBB*#&o zZC7|gHh1#y>s+6pERlEo>)5Y(+xer+lPriKTZdwt+apc}&mkEMEU_JEO-8^Gflm-z4&4xwY=ePAwpZl)%PNUSG zvGn-=8B{cxn&VsOAtkaMSDu@D&(G4gA+rjJDijJha-SnP+4FQ(VKfU`EL0Wjc{I1V zC;6oOjJH#JQttqh)d|p76m$O+#xeWx8pN&ZtVgwI9q2zchj&Yc%Do#VbSOo_Bfxn@ zI|nAP&358yiB{JWKA_Ll=93<>U@(VTG& zBJ2NIh#1*M4Z@eI?|)3V+6K)V+4?h>^o*$zy%2m0EWq5ryhjSAIHjYTuvi85rC(h+ z^Z&D5YBq4VU!GOpJ!G+(3=5DKZKJu9*ww1qktH%`vWvk;i7>F|xnn!PE=+WJ7FD-*HSHV0(wgiAPCv;f%g@@xmT_xSGDaBGq<&H*X06DUw%pc%vQ0ph zaKH`fJ|?xa=z{l9*p*zZhx%oj1Vf81Uxl1;r!(Nyql%n6-#oJ9<0JM#%g!ujQO3#$ z<>BT*eIt?URi2Qrbw4Da+7n zM9Co{5J`0!(fzn`u=m0cooXW|^U&*<^E`-@FFL=gso0rd@Gqs=CBhRI$)4A|LB5Bl zi?pP60?D#6iW0LwBF_=qys4I6f;fIrsveIf#5$@fEsDoQdX)dE{k?e8>_*e5 z$ot}lDH2S|qfLmoA!CI^yZcomJZ(ICGpi~HTZ{pV3W2hXl*_OiTwM{5fD+0b)U7tV z4Mt}^mSrBdYH}HZmlFmx@|ygpsgn4f5pN#Cv=KU_pQ^926bAwH`7R-Inh zE%IeP&dC*iD)Kh}Klosln%}|rNTAL{&L`M!TX)#1`7#mq5oT#it(9iwI}L%m>kODM)U{HcnJZInVSyHGKt#piX@lr3wAJ0J8I`VaC$ zidqtirDD@1UP8Rk`j21jMPdS*6Fq8iM~1^l3zf}e49i{z;d>lJcGAy%(P%bAVG+ET z&Ur!*jk$=m>=-o=XgfsH#D^4$bqMZ+{#1(%bJ>&JbyuaZv5UtKzc>b_wB?$XxLBVS z_F^_thMJH0E=rLC))^JN&<~XX(Jw)$bK?GEZ@;Pj=~dfzo5%JgM2ku$Pe?>GQ;9I{ z5KTgVNcLI|IYGMA9tD`%3jjzK96k*Hmv1mgiWd#`b^)zt2-bkjj*w&{~uY*}L#}zKA|B65qm)H!! zMjBg*Q#{+gLu~qmli4v(!a*paf!bLQA_JWV?z48b=FwKmjW%ci0cvry`6-JwuoV8eDLd!k_S)?Ye|a?tkcVr-*(g!=9tNt6UA z2`cwv;F2%<>J4IzTjfZi)(;Aqfq)bU{4lDSrj_E)s)pPq(;zl7E``n`k8q-2ora;> zV|kRuhB@_Ca{+LV0ArN@-30)#BpB?&6~Z)~-(QuNWwaj`cDMoDcmDymg${z9zu)|P zzPW_(qw@lAIkuz4mm7|a=+G8QL-p`xQ+);;FImi?-6C*T?RFNV1YUO{AKg!-*&YO6 zyLq1=dWZi$5Hk#HL`kc8B>qO7Vs*IX;FRG|4FXKGPdj2JkW*+9 z!x`Yki=e*1Yz|19vo>E3H7t%Cl!9=e?}QTlxW;!{#;I8eUZqw|ZfFK9d3?gmv*Nlg z{sW*->0um$((DQJgbjUQ2bg1Q;86iCY;~$WQ_2Kv|IQ)rz!KG)DHoW>t}6y(_G>D1 zwIP+9uIs`{tLHWYdO1ScD%Caz(33*aHdP1Er|?RpTmJtC@a`ai{zG`_pcW$kpFREm0JX}|17QZVpTAD~2__G8#X$8{ zJ?XbPV%s4+2?M?Bqr@csFR3f354UO*F}pPZ$(nl$PPVhKersrw#Md6t>V7?5*nJ*f z_^-m-Evof=zlfvf>1DZAXP9dW6Cza%>I7f1Mg&46jN6Auzsq2+5LIFZ4DAZ>3HUrW z&b1WCR*v8kNZIE4wjc+P7~-1IYy4Fjwcjpr9j_5pp4MuF)KYv0$)n%8jqodwhMwpY zpLl)_fW=At_g^p@<#{L0)u#Xe{$1vwxj|%CfIVxuV;u9J__AhG)}UnadKnBg8LyLu zN>;o@Rz$iOV@fS{8Mys=5J!^?zQ`=Q&>;wg9A`*t?*M&sx8;M{ZH8|RsrrY<@{66s zt09q)hc#3rTZ#~WA(>B2=(~3UZ}s~YL~}-E`hC^fF7JZ?NY)PtI3IQ%6`?9@l`E*( zdlvK$C3{pChXg#e1#Sk1TzD3v%Ht&`{u@9P-!ba;LCo3aAcsCTUsYKU^UEmo*@(aO zN_<%w=E2#t6I$4`>DqzJHW&!;bs^lWI#BGnl+4Nlf)vs3kEL)JaCnvEFdnOI z1)SEa4@&$8L_&hL#9LwzsU{BOVd^6LbPU31rbAjwW4wYODMod#wRjJ?%~L2{V1xq+ylC$;E-TYhLhi~-*@5I@!VAtxOXl7Jg>Hp?4ucW!$M@Qy|4AQZL<7Dn zK};4YAmOKi-I+W-mUZ9lV3{7}DiN`ABhlDXVNFHb>70dQQ(p-$EZnV?aP>0z^b2yc zql?pZzS88y$NE}vyFyrR@0e91)Bw?_K^!6HjW%@}vpNd{+DxY?vGw)*_e8TdOTWKj zm;M^2i6zWEO*RIkAq|(f^s1>414v9-(1ZAI``UD*vCP)!Re2I;P%y25IN-c-#skt2 zKKY~Xo^5dBb;|5R8$%de(k>(ttSsUJX^Q%I9QKE*udn|fpRvajTO?mra9{3qDTaqO z{Ud~wRkk4bdt3Z3sB4B8vESTZu4c~hi^MU6gyb^#5?{Pt?Hzn7dgBnfZkQyln}E}= zx}kU^scseD+Ovu{=J4&msC}edcB^zwlE<+a448UDvTyxrE4JsOPf0?y_%6vcNTv@W zqpMFd{Oye&%mDt}l6siP-lZsrH364C-8cDVGt=z-MBigcO#t2(P&E$G#xxcz{W@C< z*^6gDc!d3L6{dj)B1Az({Ayjin@V4`4snZ+Ddv3EZB2=ShKUWVn<-lzYZrQ^Qxow% z`>%u%0OHd9NC%SQFch!vh_T3h`m06zsNaA3uczwH_ z%kGCTy@S#-P|4x6FyXN!o&$tK@!gKf7m&Lfi?48JLwst9EC$Ofx#q}~ateXOiSlHX zGc^P3;0gDF4{b|Lb;O=Lun{4t1xJSC1`$%gsgP#@s(2~WSgox-7pkLtn`WvmNN4At zfDd~Kn}8@W9Xlav)X2(|B`L_OtA$n;n|AZ#GCTuTvR#osJ?S>OQgl>PQ&gLzI@oJ@ zO>eo8m9Fg}gh?Vk_6?hXVVkS4l^@AP7?knCj2J`}T2Txy4Y^}{2XOV{Qi2X>hI;Eb z0lUEnc=18%=mynX_`Sn)H#V9S_wOosV#VObO-`SAHa&?I4^dDA?*em3+h_-W! zmdvTm5f2Wa%!WX@&e`xX6_K^31lN+1?(tF!+7FDIK|^IF5NcAYq5DEuOF~GiAKdg5 zA1!*29gvSdN#JCl`3U(kW39$(Z%;CaY}K81K*5b1{SKHXi4+k~-=q)ne58X5M0{Ox z!nq#PggpO7JxEh_sOK7iUK%DLP$>S*;0{;zVI2Q7CG;BN-smEp3WS6=$M1)12@k`t z+(G{j!fAnRPoO|hOf`MQsRNe`PS7{?r|al;g7{bmZ{~WpkOH9eDgMkU^6+3>gZLgP zg02Re+!B8-FK^aqZf`*xH(?45QrvSom|mMoHIL>)(?tHZ^Q5RYgF8s;5UFLC>UG36 z1XCp@NRNOHNC{{NX|$Nn{Kw3gQre zhwJom-j@}s+PGFkO?Ya=at9(2;He*5b~e$W){uDjiYtoF|4&vqZl+`d-%nEE|gy^-LFL9j9gkbPvvgZ>bo#?5c^g}a&xR7DE{hjY&Xakj0kIb zf_ZIoT6nJlmOjz^E{5~)-<>u8kxRzF`oifY;u3Ke4klkTteX#U>3ja$)Rff|alRW% zL2kQ^8ZFgnp;;QT@SucvS>!f^EG0n@AP|@m5XCN6jg9bbsE0>jzM=p3rn?{zY=1|Gq%v^c5TRx|9MeQ=?On$bVak8O*pM zcYXU2%m;(w@}n#|)t)Lwf^Ijy;Z7aTT)A?IVy%rvy-nr>@9$7FD(=02dYh$Jz}A*s zX@dGCq+2MhuX>Vup^$Ru_Ujeyxh5{%Efx9$dGS{)T<3A*MEd~huj7kyWvo!TH-(Sh z1R?g3NDjL?B%iD8oYQK2_UH^dluQlkq(2PCH;gP6N?>-9SxrUm0=E(S|MoGR~S4 z{zrw`j26dunQXL{3wh~(WHT*ZE`IdCpI_Da=*9b7O{6K1=Q0|qUK%}tQeLtczLqRD zt&mZcs-EXQ-KMLsD-G)|<}gyB*pNyL`<~FCI(s**+DH{MKgrg2#9w?(=fTiDo6zsO z$y7%bo`}VO!YOkjxsK3m?sf9ywHQQd3<5LBDa7ErRatN2a!4&P2{mltkA6d8hr{mWO zooU@?`U<+W?&V9t2HrurAT9Xf{~$Li^7E^7h&1=xk`bu^D89^AI1 zu3}K9n%^oM6C(1o6S=hQQ>d{)a~+O8WY;HG_NTlLT=Fe(3o`dUI93-aTqNYcseES| zoHYEWgm~UyF!4k2(|ewbxM9w8*(bVvp(SM_8M{%-=cPf9Szc`kP#e86^WK_tFzvq) zwcsP65SCKK8i}~{T3N&fDzVNJ%)@F&ew>pCWM>)QC8a4fWUsQwT=r)v#1rCV*(Bun z^w~TA#Q_TMqXd=)a0?aGy*%QZL%+q`Z-zuSZ~D3nQz{C`U!o6E_DvsTWW^za^Nq(v zvyWwMl2`0zBlv!Gp79c&YPOk1tJRWiX+QU?nwSTt&|3u@X~ngm8(3YC$!&VbmHk)*Gnq~nfWR$YT{IW8L-JYT#z);5D3m5!E$bVV9^Z??L9h~lld zZe5>L3%!IoTQFOc@HSUkGFIFNeiyNMd-@f#vnvF*=XqFmi5-s5ejoJbk0+K8HB8?8 z(|^|r{8yVrqP}sw)uHrB+zLWmiC@FLE2(Tr+}CP|$@hOFBXU`NxoAK%=>f}e5Eu2l zG30&=YBNY)c`GRZ^hLIXq!#@mr08Mj{0c$4-y{jpBe6Qj@ibLeOQ5Kv!X z&)J37oI$vmd%ifE-E%<4roRLH11JS{{SCc~e`Mo|VhG!I3ag^H%l{MRY7-k%bYEx3 zH}g9uhCWMkc5T6mj%6p=m}=_Kd+ro2^N?IzhhM0A)BXrzUU6A60PB#*Y2L2^?5p|X zEz8IjWcLkS*-p4Dew^vsY5Hh79QXwlVDr%XlHzX+C9QCFgha z?+WU>u7`^ges~wlbm+t=Dap>l=Rbn7obt35)NcZuFL85`+Aj6vG?Lb-!oHu?mS> zcnqOI38@v8D!ttl9El#`w-_g%G0JqgCtX}OHA}tvMfOH$WJz9>;os3)vPrA?wCGO* z2li3To`$kI!H?X2e(N#q{|+g?|KX)Ekc!I+c7nYbVdW{ZM9lF==4i;2(f2c9c@dC- zpWa9(8O7S+=rYV5#Umd#dXl+3i9!stn)iT5QU`algF`-;N5%1Rq&P&|2|rDC^-faH z*J6pTcrAV!4Uo8yJ=uWuVm-N zSfKghHCMgt*N(kyfA;9qyPx-zb=!q=MVL-neD$S#oDKs=VY=#i&7YoV$09{2R*wHf z`auyoV~OphfF|ej5S(y4cE%8rt=W5r6yRoXnlEyr7tw47^W}J)c5<)NUY@D3Q!Kv4 zkA7(QmEDFDACf2mdE}m;!$KUrhuq?Hsq}Y4sD$V&)eaAmanvk%2327AJuu1CKiA?tfedpF#HLo9Qo+Rm(dU7SZ^E_{sF$gujY!Rj?H8lC7GG>l1e$3^qcF4Wttp(Y& zAl>ZP2Ao_{8nEBjth9U982*9c+`0puhtgK8YPtD))D*{RBA7NA`7#!dLC+@~A=J1K z$4JZ#4x0AYSn+uku(EXnT935|!8u*v1Z_Y`L0=Zh0n6LBrMd(CPjJMTLnNees*6%Z zjz(;u4!Nw`0I5ggPa9_}MK$JwtR$khT#-`Msbbc^b*RUgtJ0OQF5G8&-|4&D!Fhd~ zeXV!U542xGEr|l{688((*7Rc1tIXxVxr=IETWl!tr8N=X3olc@Fotv0wgo{s-@M9Y ziJ-)}-WPQcpJ;-Dd@ufb$Y(ecqiJG*)j3P~EuhiAK`kx3?6*x%S1%!sls-Li2}2u& z_^ur7kAmKYRu*ZKYS_bMUB6qOhP$t zjy(*L#9x)yrd2PFwX+z0Rech4g)<59(PP_nB3~o#nq_78-}h%jE*Q@b9uSwY8WnGo zQeZ~ign0)x;4f4k?SL+0kma`DL!Yl6NImgQ-$%+df0(s|GRD{?hs6^+u%4~$urs;t4 z@gX>R-QvL6r7fADA81}v0!Sa&lT*&I%+rQj7jJ^n#{Za95iabJblbf2K!-v<+zNRl zJ|dg`9>B$xdzP_35{cqR=eKHq){4Qa49J$m=0Z7mlrjo~#U3t{k=#is=`Y~gx9&lP z_f}X~F^wc3w<7OvFI}DXHUUO__7q`=_YiIjS2uU3UCh4znuO*vS-ex{T{T1Dd3YZw zEw6Kf-A6<->jGz8?@rb_-A}|@MRZuNZ#w&U+MYc#2Uq>d#DmPbSp&8tfdcUlv}Tzy zqN*Pl3B!{*?xX)B$-)Es9dh9t8bM=uXdN${sKeR#ucEnl*!G=zLuh_#99FZL3 zh+r=Ve(z~CW%=zrX!S(+!IH50NR)||jSU*)T#$FB6M?ng2==pPtg(U{4Y1~bC2mY9 zal+7EoG0=Ey_SbJm|UcUZLgeLJwuam!;Epv5v>kJ-y&-lAKFaW6pW7lqI2!VuS+x` z2BSGZhhvWu%r^H#pwNt5)5Eq|z^R+s2N}<%@}l|AwtKAP_xX{phs1@u)LChww6MLh z8!5q#VrRmqTO*xG9pop^S~H|?PqXNphJW% zj}tiDu5kNdF~79!Q_02P*oP%!Ra8{7twz|f(B^IVQTAUnwEo27e-KN zQf&_OVc492Y4T%jkEfRm%V7n`s#bX$ETtkx-=vBKVDYH~k7d#2HM%n;FTJWRf-1-c zLzg7zpkBVC%kU{$rGGeY%(YD-RaH$v9UE0)P65E%RU@h^d4G*U62eBQUw-g|pw5y& zHh=C{K#p9RYqgDZ;K0er<(lJM6HT~vodKJYI#V^9q>kUZvzr~RlQVZmNE?QuS3R}! z9w0gp4tU1B%KDx|bL+N8v@GiH$tbf<(Im(2X1)|#k|6qI&Bd|Iu~U!sB@QsdLk8Cd z$lseQ&MUs*kkA1Nq#8PV`HqGu=p+L=^>_UDNW^sF4?$+wTAKpL_0j zIo~~4Nc_8#TYOWoymftzPY*=pU-avD&}CHH1G5=9REOnM=A zO8`+AH%s2S3OcZx$)ICKTX-(Xn`kPDX3E-$+DMuy0oT=w`{D&|2abKmj?mzSFt6pH zhV++}(v+fe5Q&DDB0KA#!Dr>n>pRj}R``ig!6|Nb*!hk6&v}v^di8YI6ZrB~+`KlKe|Ltvk66JWg{3fhOFLxCdO0_iqfuj} z7`v^sptG-%!ZDa=>F9@=kB#Czy^#vyP@@;s%gC!A>{JcvUy=4pHI0(75a^Y-sGR;tAzQ708^3T`b;CE zxmc`v?@GT1DI^cGyr~d*CIg9ngqM0XAc_1Y4nSzs6>c)iU4aNH!H-b$Ga3qt7>bqt zXFq+H0!mlMb@&ZcduDy|80Ks2R5|OF!;eA82Aa>x!h^ZkBWZ3!bvz zIvv_Sb&l-_E1wmtbkauHSB-$=0pL>cJaS9`ECSW|7G^?g*$@x8!hSdIDj}@w`c-s_ z;1+c7&+O4$E_o>j61%)oWg;GC`TfZN6=#bAEZA7)VW0>3K~P= z$%U6dFbNGs9eQlLi0Bm;NYS<4o)Wgy50cp6CDyxYnF4Ex2gn+kXNyuQ)Ghph2OSd+ z_~V@|f=yIH$HlCgPx)Gj7~biAOObwRfv%^WF(5pe7LPJ9?;mFD&%oG3tjn!m2fmr~ z?)|*F%z+BY=0so|e{XkJCx4#-><@4o8rQiwb;o}!`QVlOD&90whz15TV{s^_;!b$7z@kPW+X*7 zBsKTNKHR>s>c5CUqa@#brj+%!Ha?TSNq_%=W?N9Xm7n!6jUa4W*?|e2z-5lL8r6IR z@q>%Cc0S9Wi0WnVDe1ah)syHSvXYiQg|}7{BBD4i7j19M`a38V7B=dJNF@C}k&NxA7EyTEFxC-`+Y^-tA&wU!Jca); z7|O#IBPO%nqVfYVICHmtQZdWYEqqEDT{9z`cFlIl&JMCF**6IaWGtXN|D5}Rca#lW zNaibvyz_7KuCU_y^@%Ojl82Tdz4avWVuImjj3rcVe(hl9b8z*h(S9UXN(fN>gXTu>rPvM>&7h)2{`9o)53$e87?QGyCU-h3ga*<>X-aJ1QFVqEj zc`81~W~syhrSDjsiGTar2UE|w!Dq+bS=Cvc|A@nbA2X=)zW#;*4^1B+BQ-?Tg#b(! zME3VYiPZmu#fe395q3?6Sm!GGA%_*4H3se+164T~%vSx7ibHV6nGPF|#bnhVvI6l% zkEaqUl{KxFEnP7rg>ar_wQ^hi#&~99ruq6$kX^Dv;rmTe0(2tQ;)6@RNrb~8za%?5US| z^-<;D?4K`N-cCRMxg|&_Xb_P@V3m}#TRet5?aR-mC`nXf9d-jrY05ktXx)60<&!IqOTd`+x2eD^yJg#9{sG^58&&cl zN8<>a4L*6~K}-OAC!y7^-~?~4=|zBCum+Bv)XWJ zDhNY3J7S|z4?K+QC|QzR^F&)1w^B#ou{P!+@2iZp`S`L#{?7q0J(g!Jz)Bm6`7too z;8fl)^;h~b4Jl;Ov;64KtJeu16y$VE<>uMW(j2QUu=`^zep8PLUQqKzw>)#u%3 z(1MY;6g=rq;crxrGchk}2&h3h?xHiL#*RmRn0*h&{tm}4haLqWDFp=zFpID-2U5B$ zVIy05qkUm?u|q=`*X+WsKKu^^^* z`qqMdDH>s4zx{YqRKrmI1sRm*V1&T`%VwJG)`EUvgL4S-b4E$p#|>9T;#my0F?AH37Stg2GOy!6Df6+{ z>~>a+#T@+vR+U(mSx6MrmfW!2-`j+dLh=G^VTl8;jc)~0Jhr%zO9*R z={Q?*ZmUshw2IEKM&6w@ss<)0-L6j^Vj zXzEa1i-fNxIHC!4^tjirIO7wE?CusNqdpct;`|yH8u{4=fBmAMK{D@;=p(}2ms#`k z4S1Mj)Oo%sKsex-7YO|5=l#?piL_y?h%bNs(6L$lx?{G$;1>H6 zdcp!DDO?=JbP5QYG*Mr``I2MGyXGoyxy5Zx!@3(b3$W%VN33XfSMCFNfH15?h75w; z2{JIr+*}UeUxI3AGPqY8u;qaYT3hYlSpL8dH@4V#&AAs>8=Q_&40bt2s}i25L-;8q zOsmzGn>&RA{#GPXq5QIY-?o8#;|r=QfUxr`s71tZUavLgVx$E=?Iz_6UCDsH%zxZT#J<3nnK~4Rf~B@RaFF1%F&#U8xIBHZ ziA-U#!Wf0c-=*2S^3ZY{-(be9F% zwU76{%f=*t?D*+%1wSR4q1_RQG`pegE|tmbE1Hg7PG=3XSxOc;RmQ^sYB&GC%NG5(KlE!M6jdTB$mrVir+%vs3DBOxR zA({Pd?TIr^&?^LY0LT;+kUWKm{GK>j_(f)Stz;wYfNI+#zXAKblTEj zYdnu%WDYXK7$`C4CDL%VdE(TZ-zUZ_sAk)>O0$+Pv%&SEJxW0{r%jOloS57o#z1(D z+eu!K%0|5cgYBrohv7_;tCX^D=YA!_hCevfisb0YP4o zJLH|?N~xH=vh>P<*jJNA>T$WAty0!W>y#c@tgR#V$9~^Z&ZJ0ewE!h|8Tuik76PW~ z*zg79(AneXeVzNLm`wSkxYH%5n^u5*zF;%rt*Ns4>aGRc>V&$rey~Hp5Xt)8wWefw zZYkl@j^ujxLFP~URE+ZNg}6W%w*oR@VV+Cd8t^eX0e}%f9DmX(AJf4NpdyEkOxFOdW@6I|MD}CYsHA=1v07Nve^!Kqg|k0t}P?z48CwAipUO0w^#e| z81MX|r7A=e$=yZl`hxzCPB6LMf6aoxihAF4VZO6~o3h$+;A0@RW#yQXe4kI6NbUA% z?aquMNZWP%n6~n+D&h0Y;p$DMxcjH|jbe`lnita2EF;yQSDtxy`oFnHE1iyTpAXpf zdo(UpJ8vo|PG;Y=qjZ?6o4cOz#GGr#SDNi!KS0e3v0eij8cwx*X`wrkke` zk~wA}(5_K_E7<9Veqw)@>zlMmrHK+GE;v!D7Y@l1uA30%c_OV63x>(|R}yJ(%AR5r zD4DIk=uZZGt+XA(pd37%^i0JMFpA9EJeD!8&=D`lv{-j$q$#`YRxpjCn3pD+cvtP? zMpMVDH=YaPj$+(o*cK-!heG#U;d}3Boyg*< zFv_%I9xCN|cpcH+eR@e`*!@+Tvavs3S!v1^*?3sCuJ0oKJk8tB+ev}A zLIScba*^^fH88aw*$9>oy{1{;`_WhWo+dG`Ay=M~X%wDl#W1uN?B8Z0!2;$k)-;Uq zxcv?zA5y1ZOwO|8FuYO1ma?K$6`uF*EE-VdWQ8$CbepGEh}lVk$;|C?Sm%=q$&3go zyvP6X-lkHsVXf}!)#t_cZxnk{?9Z%bZK*_iXu!pg4>nD9+OCE@lu;?&26l2!Js(5T zQvBA}oZRXpAYBaWYDpGMNU|mfkRQ;#kkciP0n*y8X5~oOgp?&0X-0Z5$C+Oxpw#wq zH6iTDl5b(VYJwW#Y>Q^=q`yjwIPcvG4+EiekkQ; zLvPq0N7xf^Y~a-}Vv%0?s4*l=11Uc{ind4F^&+^@w(Or%yNyQ@VhgY_4%rAP5<&Mi zqa*>t$Ys@+E$Z$?I=nGw<>ubmqnB-%_3z|q6|KwAx~%ebGcR-d5+bVAs^Am1L=vbr ztXUTvcES@jvIp0-B;WbivO^SUT4<=XCm-MnGpWx4oLE2aCoMPkeC-E0D^On(ZY&7A zQE4-70L@q*o4M3L1|!zM?{VbE33Zd=FMb^96gi;kVT<$X`sD$|;K!%$>MH%#cB8uhg zLp$V2?%(LE)#fN#QmG8La@#T*`kO;57eO$OmB0<`ANy}FYt~suM8oYbx1=AtOgH2B zn~6nN)wwUsE4hiUMIC0Qbfzriqe{& z^o_1c-J=AsJzHi~Dc36sN0DkY@`10vR@;_t+rRHYd+_b(e%tWTnh@Rtj}?*~r1NOab2m-XLa`=b}zGu$XXFFfBQnb$?8G;g~xd{%2H zCA3P$IOe~Zn^v;5PzcZp6?!R@51fg~bD(N$$4?353L}EL3qk@g+%Xh?KWS_U6Qe5I zDcdVz3Qa2B%{9fMQosbms}20{Shuj-tTRpaIVItRT^syydM@mwj92(ZC$c>D5Q)hf zUp<|bleE1keSzSvCBdaw(cn0lh5+|i#I_e2+k+=h#~%Mu$4xe8z#Hs z?Yy_%c2(Mm?kBjBkJ^n zVw#7&oy@eA!<(n`@6z?b_h%Zq7w8Kk1R z&3(bGBADkW^?8rF0;(_jFuH-M+XA#oS0EP^7xe*_KnKU^nvHXJ+i6~LDWaqa_^0l< zGc}rgGg-`$E zg5NQ*E_kmH8UOP{WXA6tV{mE z(qOt@Q5&*>sY4A=0X#@F(CKtUi8OezEyk~o2RU~w^VOPd#+vs!P&?^Yc@?pxml@8m zx=bwdxo()s3@&hGFDcA;sW8E9G>&i>19tkkLl-+f-&Miyr~x^lK?6e@ zep0XIvl|G6@eLL5f3r9BMTQapbSMGB%=%;M1;6FCE=LyLy0}X6nHovG?A>!dN@=Cb zY&EW0#fKjV8Qa)%oBe&R&@nvKF>=JG1o& z*q!cKC*;=~qV<{>Yg*| zz`;wUfI+2PKlF?4SX!O?#HX7?CF$D~Xl2%67_w7m&e-7yfv zzbNDMx2~;6k3BkNlVaV7pS(eCL6f;hN;IW?01OVQu4KZARk>u0cNoK6yMoS&t$% zGIrrLo(+E73;uXVqoJXWjrIj&UGpl^HM5NnW3=UmuasToR*zW7i}YP*NUyzjKy

  • ?Ysk>Lb_riuN+|&<=wTP$56u4<( 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 HG7bA*YgD$^ literal 0 HcmV?d00001 diff --git a/docs/assets/comparisons/avalanche/avalanche-network.png b/docs/assets/comparisons/avalanche/avalanche-network.png new file mode 100644 index 0000000000000000000000000000000000000000..35b63b0a0083d84df2c1ccf9022d4aa2996b11ec GIT binary patch literal 224820 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 lM + +:::note + +To keep the content on this page factually correct and up-to-date, [contributions](https://github.com/w3f/polkadot-wiki#contributing-to-documentation) are welcome. + +::: + +Polkadot and Avalanche both have an architecture that allows for application-specific blockchains to be designed and connected to a primary network. In Polkadot, the primary network is the Relay-chain and Avalanche does this with 3 main chains - the P-chain, X-chain, and C-chain. Similar to how Polkadot has its Parachains that connect to the Relay-chain, Avalanche has what’s called [subnets](https://docs.avax.network/subnets). Similar to Polkadot, Avalanche also uses a PoS mechanism for achieving consensus. The validators stake their AVAX tokens in order to participate in the PoS system and secure the network. + +## Architecture + +Avalanche's architecture separates the responsibility of a layer-1 smart contract platform into three chains. This allows for a separation of concern over validators and consensus, transactions, and smart contract execution. Avalanche uses a DAG (Directed Acyclic Graph) structure for one of its chains which is non-linear. Polkadot uses the linear chain structure similar to Bitcoin and Ethereum. Smart contracts in Polkadot are implemented on [parachains](build-smart-contracts#parachains). Polkadot being a layer-0 blockchain, is not a smart contract platform and does not have plans to support them natively. + +![Avalanche Network](../assets/comparisons/avalanche/avalanche-network.png "Image from https://docs.avax.network/") + + Image source: [Avalanche docs](https://docs.avax.network/). + +#### P-chain (Platform) + +The P-chain is responsible for maintaining the validator set and securing the network. AVAX token holders can spin up their own nodes and become validators by staking their tokens. Similar to the NPoS system that Polkadot uses, Avalanche uses a Delegated PoS which allows token holders to also delegate their token stake to existing validators instead of running their own nodes. + +#### X-chain (Exchange) + +The X-chain is responsible for the transaction layer of the Avalanche blockchain. It uses a UTXO model like Bitcoin whereas Polkadot uses an account model like Ethereum. This is the only chain that implements the DAG (Directed Acyclic Graph) model for its blockchain, making this the fastest chain on the Avalanche network. This chain does not support smart contract execution. + +#### C-chain (Contracts) + +The C-chain is where the most activity will happen on the Avalanche network. It allows for different virtual machines to execute smart contract code. Out of the box, it has support for EVM and AVM (Avalanche VM). C-Chain runs a fork of go-ethereum called coreth that has the networking and consensus portions replaced with Avalanche equivalents. + +As Polkadot does not have a smart contract layer out of the box, the EVM and WASM smart contract abilities lie in the Parachain layers. This is a major difference between Polkadot and Avalanche. The smart-contract abilities of Avalanche are baked into its three-chain model. + +#### Subnets or sub-networks + +Avalanche defines a subnet as a dynamic set of validators that achieve consensus on a set of blockchains. +In Polkadot's terminology, Subnets can be viewed as public or private blockchain runtimes that can be built on top of the primary network and allow a subset of the validators to validate these runtimes. Similar to the Parachains on Polkadot, Subnets provide the freedom to choose the transaction fee model, tokenomics, and custom compile rules. One or many validators can start validating a subnet runtime, effectively becoming a subset of the overall validator set of the Primary Network. + +## Consensus + +![Avalanche Network](../assets/comparisons/avalanche/avalanche-consensus-protocols.png "Image from https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#snow-family-protocols") + + Image source: [gyuho.dev](https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#snow-family-protocols). + +Avalanche consensus uses a family of protocols to achieve security, liveness, and finality. These are known as the Snow* protocols. This group of protocols composed together uses both classical and Nakamoto consensus as well as a Delegated Proof-of-Stake system for its block creators. + +The [Snow family](https://docs.avax.network/overview/getting-started/avalanche-consensus) is a hierarchical collection of systems used to reach finality on Avalanche: + +- Slush +- Snowflake +- Snowball +- Avalanche +- Snowman +- Slushie + + +Compared to Polkadot, Avalanche uses an asynchronous hybrid system that is based on a classical and Nakomoto approach. Polkadot uses a synchronous hybrid model that combines [BABE](learn-consensus#block-production-babe) and [GRADNPA](learn-consensus#finality-gadget-grandpa), where BABE is the algorithm used to build blocks in a probabilistic way, and GRANDPA is a finality mechanism that uses a deterministic approach to adding blocks to the longest chain. In the end, validators agree to whole chains, rather than single new blocks. + +### Snowball + +The snowball protocol is an algorithm that nodes use to come to a consensus. Each node continuously queries x number of validators and takes the majority consensus and adopts it as its own. This method, in normal circumstances, will lead to the network reaching a consensus. The scalability of Snowball is promising, as the number of participants in the network grows, the number of consensus messages being passed around remains the same. Nodes will query no more than 20 nodes at a given time. + +### DAG(Directed Acyclic Graph) + +[DAGs](https://en.wikipedia.org/wiki/Directed_acyclic_graph) are graphs consisting of vertices and edges. In Avalanche they are used for **partial ordering** of decisions, such as transactions. Vertices point to each other using edges, and when ordered topologically vertices and edges create a sequence. Edges in the case of Avalanche can be conflicting, and nodes will use the snowball algorithm to make decisions about which edges to keep and which to not. + +## Staking Mechanics + +Avalanche uses a Delegated Proof-of-Stake mechanism without any slashing. The barrier to entry for staking as a full node validator is 2500 AVAX, and 25 AVAX to become a delegator. With a minimum stake period being two weeks and a maximum period being a year, for both validators and delegators. It is not clear from the Avalanche documentation what happens after a year, it is likely that validators will have to re-stake and start a new period. Validators acquire points for uptime and correctness of their work, and the remuneration of rewards depends on that. + +In Polkadot the minimum stake for needed to be a validator is variable, same for being a nominator even though it takes 10 DOT to setup a stash and controller account to start nominating. The true minimum need to be competitive enough to be included in the active set for validators, or successfully being chosen as a nominator depends on the minimum staked amounts on the network at a given time. Read more about this in the [staking page](learn-staking). + + + +## Message Passing + +Avalanche does not have a native trustless message-passing mechanism. Instead, it relies on bridges. Though, because it is an EVM-compatible protocol, it's able to interoperate at a token level. However, subnets do not have a messaging layer out of the box. Polkadot, with its [XCM](learn-xcm) and [XCMP](learn-xcm#xcmp-cross-chain-message-passing) messaging protocols, allows for a native and trustless messaging scheme, thus supporting the composability of chains and enabling the development of powerful cross-chain applications. + +## Governance + +According to its whitepaper, Avalanche plans to have an on-chain governance mechanism. It currently does not have an on-chain or off-chain system in production. Its governance system will limited to updating only a few key protocol parameters which include: + +- **Staking amount:** This value defines the minimal stake required to be placed as +bond before participating in the system. +- **Minimum staking time for a node:** The minimal amount of time required for a node to stake into the system. +- **Maximum staking time for a node:** The maximal amount of time a node can stake. +- **Minting rate:** Reward rate function, also referred to as minting rate, determines the reward a +participant can claim as a function of their staking amount given some number of x publicly disclosed nodes +under its ownership, over a period of t consecutive *minimal staking time* timeframes, such that t*minimal staking time* ≤ *maximum staking time*. +- **Transaction fee amount:** The fee structure, which is a set of governable fees parameters that specify costs to various transactions. + +Limiting the governance functionality is a design choice to increase predictability and safety. + +Polkadot's governance mechanism has been in production from the very beginning and was used to slowly release functionality and decentralize the initial network. It is also not limited to a few parameters and in fact, the whole runtime is subject to change via protocol making Polkadot a meta-protocol. + +## Upgrades + +The upgrades to Avalanche are administered by the protocol developers at [Ava Labs](https://www.avalabs.org/). On Polkadot, the forkless upgrades are administered and deployed through the on-chain governance. +When performing upgrades, every single validator on the Subnet will need to perform the identical upgrade. +This requires a co-ordination effort among the Validators of the Subnet. On Polkadot, upgrades to Parachains can be deployed automatically without any coordination with the Validators on the relaychain. + +## In the physical realm + +Ava Labs, founded by Emin Gün Sirer is based in Brooklyn, NY, and is currently the main organization behind the development of Avalanche consensus and the Avalanche Primary Network. Emin, a professor at Cornell and known for his work in the Bitcoin ecosystem, namely around the "selfish mining" attack together with Maofan Ted Yin produced the research and ideas for Avalanche at Cornell. + +## Conclusion + +Avalanche has made some design decisions that allow for an improved smart-contract development environment in which protocol engineers can have the freedom to create their own blockchains and include them in the Avalanche ecosystem via subnets. The trade-offs are that the autonomy of design is limited and blockchains have to buy into the design decisions of Avalanche's main chains. Unlike parachains on Polkadot, Subnets are not able to share the security of the main chains. In addition to utilizing block finality and security of the Relay-chain, parachains on Polkadot use [XCM](learn-xcm) to pass native trustless messages, instead of having to rely on multiple bridging solutions. However, Subnets are easy to launch when compared to parachains, given that they only need a recommended minimum of 5 validators, which make the costs of launch predictable. Avalanche has plans to implement shared security, interoperability, composability and on-chain governance features which are already offered by Polkadot. + +## References + +1. [The Avalanche Platform Whitepaper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bbf8b10d1eb01e7e16_Avalanche%20Platform%20Whitepaper.pdf) +2. [The Avalanche Consensus Whitepaper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6009805681b416f34dcae012_Avalanche%20Consensus%20Whitepaper.pdf) +1. [The AVAX Token Dynamics Paper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bc56430d6b8792b8d1_Avalanche%20Native%20Token%20Dynamics.pdf) +1. [Nakomoto vs Snow consensus](https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#what-is-snow-consensus) \ No newline at end of file diff --git a/docs/learn/learn-comparisons.md b/docs/learn/learn-comparisons.md index 49ec84093a8d..480af6028a5c 100644 --- a/docs/learn/learn-comparisons.md +++ b/docs/learn/learn-comparisons.md @@ -16,6 +16,8 @@ chains. - [vs Cosmos](learn-comparisons-cosmos.md) +- [vs Avalanche](learn-comparisons-avalanche.md) + ## Other Comparisons ### Ethereum 1.x diff --git a/polkadot-wiki/sidebars.js b/polkadot-wiki/sidebars.js index 3c1948ecb99f..a850490c414a 100644 --- a/polkadot-wiki/sidebars.js +++ b/polkadot-wiki/sidebars.js @@ -139,10 +139,11 @@ module.exports = { type: "category", label: "Polkadot Comparisons", items: [ - "learn/learn-kusama-vs-polkadot", - "learn/learn-comparisons", - "learn/learn-comparisons-ethereum-2", - "learn/learn-comparisons-cosmos", + 'learn/learn-kusama-vs-polkadot', + 'learn/learn-comparisons', + 'learn/learn-comparisons-ethereum-2', + 'learn/learn-comparisons-cosmos', + 'learn/learn-comparisons-avalanche' ], }, "learn/learn-launch", From 19108b3e129db366ce4fd8d231d37c1ff7007fb5 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Thu, 20 Oct 2022 13:12:58 +0200 Subject: [PATCH 02/35] minor fixes - avalanche page (#3963) * minor fixes - avalanche page * Remove physical realm section As no comparison is provided for Polkadot --- docs/learn/learn-comparisons-avalanche.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/learn/learn-comparisons-avalanche.md b/docs/learn/learn-comparisons-avalanche.md index 97c61d3d8ae9..54c466013279 100644 --- a/docs/learn/learn-comparisons-avalanche.md +++ b/docs/learn/learn-comparisons-avalanche.md @@ -9,7 +9,7 @@ slug: ../learn-comparisons-avalanche -:::note +:::info To keep the content on this page factually correct and up-to-date, [contributions](https://github.com/w3f/polkadot-wiki#contributing-to-documentation) are welcome. @@ -23,7 +23,7 @@ Avalanche's architecture separates the responsibility of a layer-1 smart contrac ![Avalanche Network](../assets/comparisons/avalanche/avalanche-network.png "Image from https://docs.avax.network/") - Image source: [Avalanche docs](https://docs.avax.network/). +Image source: [Avalanche docs](https://docs.avax.network/). #### P-chain (Platform) @@ -48,7 +48,7 @@ In Polkadot's terminology, Subnets can be viewed as public or private blockchain ![Avalanche Network](../assets/comparisons/avalanche/avalanche-consensus-protocols.png "Image from https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#snow-family-protocols") - Image source: [gyuho.dev](https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#snow-family-protocols). +Image source: [gyuho.dev](https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#snow-family-protocols). Avalanche consensus uses a family of protocols to achieve security, liveness, and finality. These are known as the Snow* protocols. This group of protocols composed together uses both classical and Nakamoto consensus as well as a Delegated Proof-of-Stake system for its block creators. @@ -107,10 +107,6 @@ The upgrades to Avalanche are administered by the protocol developers at [Ava La When performing upgrades, every single validator on the Subnet will need to perform the identical upgrade. This requires a co-ordination effort among the Validators of the Subnet. On Polkadot, upgrades to Parachains can be deployed automatically without any coordination with the Validators on the relaychain. -## In the physical realm - -Ava Labs, founded by Emin Gün Sirer is based in Brooklyn, NY, and is currently the main organization behind the development of Avalanche consensus and the Avalanche Primary Network. Emin, a professor at Cornell and known for his work in the Bitcoin ecosystem, namely around the "selfish mining" attack together with Maofan Ted Yin produced the research and ideas for Avalanche at Cornell. - ## Conclusion Avalanche has made some design decisions that allow for an improved smart-contract development environment in which protocol engineers can have the freedom to create their own blockchains and include them in the Avalanche ecosystem via subnets. The trade-offs are that the autonomy of design is limited and blockchains have to buy into the design decisions of Avalanche's main chains. Unlike parachains on Polkadot, Subnets are not able to share the security of the main chains. In addition to utilizing block finality and security of the Relay-chain, parachains on Polkadot use [XCM](learn-xcm) to pass native trustless messages, instead of having to rely on multiple bridging solutions. However, Subnets are easy to launch when compared to parachains, given that they only need a recommended minimum of 5 validators, which make the costs of launch predictable. Avalanche has plans to implement shared security, interoperability, composability and on-chain governance features which are already offered by Polkadot. @@ -120,4 +116,4 @@ Avalanche has made some design decisions that allow for an improved smart-contra 1. [The Avalanche Platform Whitepaper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bbf8b10d1eb01e7e16_Avalanche%20Platform%20Whitepaper.pdf) 2. [The Avalanche Consensus Whitepaper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6009805681b416f34dcae012_Avalanche%20Consensus%20Whitepaper.pdf) 1. [The AVAX Token Dynamics Paper](https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bc56430d6b8792b8d1_Avalanche%20Native%20Token%20Dynamics.pdf) -1. [Nakomoto vs Snow consensus](https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#what-is-snow-consensus) \ No newline at end of file +1. [Nakomoto vs Snow consensus](https://gyuho.dev/nakamoto-bitcoin-vs-snow-avalanche-consensus.html#what-is-snow-consensus) From af9ce5c4b01580389abac21921a1e7ffb1bdb602 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Thu, 20 Oct 2022 17:20:40 +0200 Subject: [PATCH 03/35] Add Staking Page links to Nominator guide (#3965) --- .../maintain-guides-how-to-nominate-polkadot.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/maintain/maintain-guides-how-to-nominate-polkadot.md b/docs/maintain/maintain-guides-how-to-nominate-polkadot.md index e64a43e841f3..48e1a67442a1 100644 --- a/docs/maintain/maintain-guides-how-to-nominate-polkadot.md +++ b/docs/maintain/maintain-guides-how-to-nominate-polkadot.md @@ -9,6 +9,18 @@ slug: ../maintain-guides-how-to-nominate-polkadot import RPC from "./../../components/RPC-Connection"; +:::tip New to Staking? + +Start your staking journey or explore more information about staking on +[Polkadot's Home Page](https://polkadot.network/staking/). Discover the new +[Staking Dashboard](https://staking.polkadot.network/#/overview) that makes staking much easier and +check this +[extensive article list](https://support.polkadot.network/support/solutions/articles/65000182104) to +help you get started. +{{ kusama: All the examples presented on Polkadot apply to Kusama as well. :kusama }} + +::: + :::info The following information applies to the Polkadot network. If you want to nominate on Kusama, check From 8d6ffc89b31a297c04cbc4b56c62de9072797b22 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Thu, 20 Oct 2022 17:29:34 +0200 Subject: [PATCH 04/35] Update Kusama Guide link on Nominator page --- docs/maintain/maintain-guides-how-to-nominate-polkadot.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/maintain/maintain-guides-how-to-nominate-polkadot.md b/docs/maintain/maintain-guides-how-to-nominate-polkadot.md index 48e1a67442a1..28d48bb3f838 100644 --- a/docs/maintain/maintain-guides-how-to-nominate-polkadot.md +++ b/docs/maintain/maintain-guides-how-to-nominate-polkadot.md @@ -24,7 +24,7 @@ help you get started. :::info The following information applies to the Polkadot network. If you want to nominate on Kusama, check -out the [Kusama guide](./kusama/maintain-guides-how-to-nominate-kusama.md) instead. +out the [Kusama guide](https://guide.kusama.network/docs/maintain-guides-how-to-nominate-kusama/) instead. ::: From 60b4f8c52be28140b9131360ffecacd117ed276f Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Fri, 21 Oct 2022 09:59:23 +0200 Subject: [PATCH 05/35] Add note about Warp syncing (#3940) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add note about Warp syncing * Reposition the note * Update docs/maintain/maintain-guides-how-to-validate-polkadot.md Co-authored-by: Bastian Köcher * Update maintain-guides-how-to-validate-polkadot.md * Add description for warp sync * add info about default sync settings * minor fix * Add correct info * rephrase Co-authored-by: Bastian Köcher --- ...maintain-guides-how-to-validate-polkadot.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/docs/maintain/maintain-guides-how-to-validate-polkadot.md b/docs/maintain/maintain-guides-how-to-validate-polkadot.md index daae15921f7b..f56e77c33eec 100644 --- a/docs/maintain/maintain-guides-how-to-validate-polkadot.md +++ b/docs/maintain/maintain-guides-how-to-validate-polkadot.md @@ -370,7 +370,7 @@ You can begin syncing your node by running the following command if you do not w validator mode right away: ```sh -./target/release/polkadot +./target/production/polkadot ``` ``` @@ -401,6 +401,22 @@ validator mode right away: ::: +:::tip Use Warp sync for faster syncing + +By default, the node performs `full` sync, which downloads and validates the full blockchain +history. `warp` sync can be used as a faster way to sync the validator node. + +`./target/production/polkadot --sync warp` + +Warp sync initially downloads and validates the finality proofs from [GRANDPA](../learn/learn-consensus.md#finality-gadget-grandpa) +and then downloads the state of the latest finalized block. After the warp sync, the node is ready to +import the latest blocks from the network and can be used as a Validator. The blocks from genesis +will be downloaded in the background. Check +[this discussion](https://substrate.stackexchange.com/questions/334/what-kinds-of-sync-mechanisms-does-substrate-implement/) +for more information about the different sync options available. + +::: + :::note Validators should sync using the RocksDb backend This is implicit by default, but can be explicit by passing the `--database RocksDb` flag. From bc1b005cdd7539841b54a47772630d2144539907 Mon Sep 17 00:00:00 2001 From: Anwesh Date: Fri, 21 Oct 2022 13:50:30 +0530 Subject: [PATCH 06/35] Update learn-polkadotjs.md (#3968) minor UI issue --- docs/learn/learn-polkadotjs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learn/learn-polkadotjs.md b/docs/learn/learn-polkadotjs.md index d2a41ad597cf..3fd443cc21c6 100644 --- a/docs/learn/learn-polkadotjs.md +++ b/docs/learn/learn-polkadotjs.md @@ -113,7 +113,7 @@ For more user-friendly wallets, check out the supported and treasury-funded wall - [Introduction to Polkadot-JS](https://www.youtube.com/watch?v=4EQqwGFV1D8) - [Create an account using Polkadot-JS](https://www.youtube.com/watch?v=sy7lvAqyzkY) - [Network Explorer on Polkadot-JS UI](https://www.youtube.com/watch?v=g4b4IWR6OrE) +- [Network Explorer on Polkadot-JS UI](https://www.youtube.com/watch?v=g4b4IWR6OrE) ### Documentation From d75b2efaa95220bbe3523da7c5674fb7313df04f Mon Sep 17 00:00:00 2001 From: David Hawig Date: Fri, 21 Oct 2022 10:23:16 +0200 Subject: [PATCH 07/35] Update open source stack (#3964) * Update open source stack Updating the security part, adding clockchain, adding Rust pdotc * add badges Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 57ed9e8d4bde..184911f8bb9f 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -98,24 +98,24 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | Parachain | [Parachain utilities](https://github.com/AcalaNetwork/parachain-utilities) 🔴, [Gantree](https://github.com/gantree-io/gantree-core) 🔴| Tools to create parachains from frameworks used in other ecosystems | -| Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟢, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | +| Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟢, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [Rust pdotc](https://github.com/trevor-crypto) [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | | Substrate Contract clients | [PatractGo](https://github.com/patractlabs/go-patract) 🔴| | | SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟡, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/lib/scale) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟡, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/src/Codec) 🟢, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟢, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟢| | Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | | Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴| -| Runtime Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | +| Runtime/Pallet Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴,[Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | | Smart Contract Languages | [Ask!](https://github.com/ask-lang/ask) 🟢, [Subscript](https://github.com/slickup/subscript) 🔴, [Solang](https://github.com/hyperledger-labs/solang) 🟢, [Ink!](https://github.com/paritytech/ink) 🟢, [Move VM Substrate](https://github.com/pontem-network/sp-move) 🔴, [Move smart contract by Neatcoin](https://github.com/neatcoin/neatcoin) 🟢, [Sol2Ink](https://github.com/Supercolony-net/sol2ink) 🟡| Functional Programming Languages, other languages with developed toolchains | | Smart Contract Security | [Vanguard](https://github.com/Veridise/Vanguard) 🟢| | Testing | [Halva](https://github.com/halva-suite/halva) 🔴, [Ink Waterfall](https://github.com/paritytech/ink-waterfall) 🟡, [Redspot](https://github.com/patractlabs/redspot) 🔴, [MixBytes Tank](https://github.com/mixbytes/tank) 🔴, [sub-flood](https://github.com/NikVolf/sub-flood) 🔴, [Substrate debug-kit](https://github.com/paritytech/substrate-debug-kit) 🔴, [Dotscale - SCALE Codec Comparator](https://github.com/arijitAD/dotscale) 🔴, [Asset CLI tool](https://github.com/JesseAbram/asset_cli_tool) 🔴, [sub_crash](https://github.com/JesseAbram/unfinished_testing_tool) 🔴, [subwasm](https://github.com/chevdor/subwasm) 🟢, [subsee](https://github.com/ascjones/subsee) 🔴, [polkadot-lab](https://github.com/w3f/polkadot-lab) 🔴, [Zombienet](https://github.com/paritytech/zombienet) 🟢, [RPC-perf](https://github.com/dwellir-public/rpc-perf/) 🔴| | Testnet | [Polkadot Launch](https://github.com/paritytech/polkadot-launch) 🟡, [polkadot-starship](https://github.com/koute/polkadot-starship) 🔴, [Fork off Substrate](https://github.com/maxsam4/fork-off-substrate) 🔴, [Parachain Launch](https://github.com/open-web3-stack/parachain-launch) 🟢| -| Benchmarking | [Substrate Graph Benchmarks](https://github.com/shawntabrizi/substrate-graph-benchmarks) 🔴| +| Benchmarking | [Clockchain](https://github.com/0xekez/clockchain) 🔴, [Substrate Graph Benchmarks](https://github.com/shawntabrizi/substrate-graph-benchmarks) 🔴| | Blockchain Indexing Engine | [Substrate Archive](https://github.com/paritytech/substrate-archive) 🟡, [PSQL Indexer](https://github.com/usetech-llc/polkadot_psql_indexer) 🔴, [Polkadothub Indexer](https://github.com/figment-networks/polkadothub-indexer) :grey_question:, [Substrate Graph](https://github.com/playzero/substrate-graph) 🔴, [Hydra](https://github.com/subsquid/hydra) 🔴, [Subquery](https://github.com/OnFinality-io/subql) 🟢, [Polkadot Profit Transformer](https://github.com/p2p-org/polkadot-profit-transformer) 🟡| | Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🟡, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡| | Gaming | [Crossbow](https://github.com/dodorare/crossbow) 🟢| [Amethyst](https://amethyst.rs/) + [Substrate](https://substrate.dev/) | | No-code Platforms | [EzCode's Polkadot.js plugin on Bubble.io](https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js) 🔴, [Blackprint Visual Programming Polkadot.js module](https://github.com/Blackprint/nodes-polkadot.js) 🟢| | | XCM | [XCM-tools](https://github.com/PureStake/xcm-tools) 🟢, [ParaSpell](https://github.com/dudo50/ParaSpell) 🟢| | | Wallets | [Metadata Portal](https://github.com/nova-wallet/metadata-portal) 🟢, [Tesseract](https://github.com/tesseract-one/Tesseract.rs) 🟢, [WalletConnect](https://github.com/w3f-grants-archive/walletconnect-v2-monorepo) 🔴, [BitGoJS](https://github.com/BitGo/BitGoJS/tree/master) 🟢| | -| Other | [open-web3 JS library](https://github.com/open-web3-stack/open-web3.js) 🔴, [VM-Bridge](https://github.com/CycanTech/GVM-Bridge) 🔴, [srtool](https://github.com/paritytech/srtool) 🟢, [srtool-cli](https://github.com/chevdor/srtool-cli) 🟢, [Substrate Tip Bot](https://github.com/paritytech/substrate-tip-bot) 🟢, [ORI (Onchain Risk Intelligence)](https://github.com/syntifi/ori) 🔴, [PolkaTools](https://github.com/albertov19/PolkaTools) 🟢, [polkadot-scripts](https://github.com/paritytech/polkadot-scripts) 🟢, [Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [Sube](https://github.com/virto-network/sube) 🔴, [data-store-sidecar](https://github.com/CESSProject/data-store-sidecar) 🔴, [SugarFunge](https://github.com/SugarFunge/sugarfunge-node) 🟢, [substrate-wasmedge](https://github.com/second-state/substrate-wasmedge) 🟢| +| Other | [open-web3 JS library](https://github.com/open-web3-stack/open-web3.js) 🔴, [VM-Bridge](https://github.com/CycanTech/GVM-Bridge) 🔴, [srtool](https://github.com/paritytech/srtool) 🟢, [srtool-cli](https://github.com/chevdor/srtool-cli) 🟢, [Substrate Tip Bot](https://github.com/paritytech/substrate-tip-bot) 🟢, [ORI (Onchain Risk Intelligence)](https://github.com/syntifi/ori) 🔴, [PolkaTools](https://github.com/albertov19/PolkaTools) 🟢, [polkadot-scripts](https://github.com/paritytech/polkadot-scripts) 🟢, [Sube](https://github.com/virto-network/sube) 🔴, [data-store-sidecar](https://github.com/CESSProject/data-store-sidecar) 🔴, [SugarFunge](https://github.com/SugarFunge/sugarfunge-node) 🟢, [substrate-wasmedge](https://github.com/second-state/substrate-wasmedge) 🟢| ### ink Smart Contracts From 9f4d172df595b2aa08324d3ab9c96e8e1cb0a8f9 Mon Sep 17 00:00:00 2001 From: David Hawig Date: Fri, 21 Oct 2022 10:24:42 +0200 Subject: [PATCH 08/35] Adding Primis to the open source stack (#3966) * Adding Primis to the open source stack Adding Primis to the open source stack * Add badge Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 184911f8bb9f..3df3d91225a5 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -74,7 +74,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Desktop/Web Wallets | [Talisman Web Application](https://github.com/TalismanSociety/talisman-web) 🟢, [AirGap](https://github.com/airgap-it/airgap-wallet) 🟢, [Sakura](https://github.com/w3finance/sakura) 🔴, [Omni desktop](https://github.com/w3f-grants-archive/omni-desktop-prototype) 🔴| User-friendly Wallet based on the [Recovery Pallet](https://github.com/paritytech/substrate/tree/master/frame/recovery), Web wallets focused on user-onboarding (e.g. using [localStorage](https://github.com/near/near-wallet) ), Enterprise Wallets | +| Desktop/Web Wallets | [Talisman Web Application](https://github.com/TalismanSociety/talisman-web) 🟢, [AirGap](https://github.com/airgap-it/airgap-wallet) 🟢, [Primis](https://github.com/Primis-Labs/client) 🟢, [Sakura](https://github.com/w3finance/sakura) 🔴, [Omni desktop](https://github.com/w3f-grants-archive/omni-desktop-prototype) 🔴| User-friendly Wallet based on the [Recovery Pallet](https://github.com/paritytech/substrate/tree/master/frame/recovery), Web wallets focused on user-onboarding (e.g. using [localStorage](https://github.com/near/near-wallet) ), Enterprise Wallets | | Browser Extensions | [Enkrypt](https://github.com/enkryptcom/enKrypt) 🟢, [Polkadot{.js}](https://github.com/polkadot-js/extension) 🟢, [Polkadot-Js-Plus-Extension](https://github.com/Nick-1979/polkadot-Js-Plus-extension) 🟢, [SubWallet-Extension](https://github.com/Koniverse/SubWallet-Extension) 🟢, [Doter](https://github.com/ChainBridgeNetworkTeam/Doter) 🔴, [Enzyme](https://github.com/blockxlabs/enzyme/) 🔴, [Speckle OS](https://github.com/GetSpeckle/speckle-browser-extension) 🔴| Sign-in with your polkadot, kusama, etc. account. | | Mobile Wallets | [Lunie](https://github.com/luniehq/lunie) 🔴, [Polkawallet](https://github.com/polkawallet-io/polkawallet-flutter) 🔴, [Parity Signer](https://github.com/paritytech/parity-signer) 🟢, [imToken](https://github.com/consenlabs/token-core) 🟢, [Fearless Wallet Android](https://github.com/soramitsu/fearless-Android) 🟢, [Fearless Wallet iOS](https://github.com/soramitsu/fearless-iOS) 🟢, [Stylo](https://github.com/stylo-app/stylo) 🟡, [Nova Wallet](https://github.com/nova-wallet/nova-utils) 🟢, [Fractapp](https://github.com/fractapp/fractapp/) 🔴, [Interstellar Network](https://github.com/Interstellar-Network/wallet-app) 🟡, [Hashed Wallet](https://github.com/hypha-dao/hashed-wallet) 🟢| | Burner Wallets/Faucet | [KodaDot](https://github.com/vue-polkadot/apps) 🟢, [Astar Faucet Bot](https://github.com/AstarNetwork/astar-faucet-bot) 🟡, [Generic sybil-resistant faucet](https://github.com/karooolis/sybil-resistant-substrate-faucet) 🟢| Faucet (a sybil-resistant way to receive free tokens) | From c950215d7616b5e27264fc9ebd441a6c87251443 Mon Sep 17 00:00:00 2001 From: Keith Alfaro Date: Fri, 21 Oct 2022 22:34:30 +0800 Subject: [PATCH 09/35] Address regular audit of broken external wiki links (#3969) * start fixing links * address broken link in build-node-management * remove broken link as entire site is offline * restore parachain tutorials * don't pretty format build-open-source and fix or remove broken links * remove support article that is no longer available * update research link * remove another dot leap ref * remove radium blocks as site no longer exists * restore links to Phragmen Voting and Justified Representation paper * Update docs/general/kusama/kusama-community.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> * update radium block from io to com ext Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- .prettierignore | 3 ++- docs/build/build-node-management.md | 3 ++- docs/build/build-open-source.md | 8 +++---- docs/build/build-parachains.md | 7 +++--- docs/build/build-smart-contracts.md | 29 ++++++++++++++++--------- docs/build/build-tools-index.md | 5 ++--- docs/general/claims.md | 1 - docs/general/kusama/kusama-community.md | 4 +--- docs/learn/learn-phragmen.md | 4 ++-- docs/maintain/maintain-endpoints.md | 2 +- 10 files changed, 36 insertions(+), 30 deletions(-) diff --git a/.prettierignore b/.prettierignore index b019d04718f9..d3e3b9ed8c79 100644 --- a/.prettierignore +++ b/.prettierignore @@ -8,4 +8,5 @@ !*/ # Ignore translated docs (not currently maintained) -/polkadot-wiki/translated_docs/ \ No newline at end of file +/polkadot-wiki/translated_docs/ +/docs/build/build-open-source.md \ No newline at end of file diff --git a/docs/build/build-node-management.md b/docs/build/build-node-management.md index 31d6443503a2..95980aa99031 100644 --- a/docs/build/build-node-management.md +++ b/docs/build/build-node-management.md @@ -173,5 +173,6 @@ puts your node at higher risk of attack. You can run your own, private [this Helm chart](https://github.com/w3f/substrate-telemetry-chart). The node also exposes a Prometheus endpoint by default (disable with `--no-prometheus`). Substrate -has a [monitor node metrics tutorial](https://docs.substrate.io/tutorials/get-started/node-metrics/) +has a +[monitor node metrics tutorial](https://docs.substrate.io/tutorials/get-started/monitor-node-metrics/) which uses this endpoint. diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 3df3d91225a5..a6ecc9067962 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -100,7 +100,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Parachain | [Parachain utilities](https://github.com/AcalaNetwork/parachain-utilities) 🔴, [Gantree](https://github.com/gantree-io/gantree-core) 🔴| Tools to create parachains from frameworks used in other ecosystems | | Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟢, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [Rust pdotc](https://github.com/trevor-crypto) [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | | Substrate Contract clients | [PatractGo](https://github.com/patractlabs/go-patract) 🔴| | -| SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟡, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/lib/scale) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟡, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/src/Codec) 🟢, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟢, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟢| +| SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟡, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟡, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟢, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟢, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟢| | Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | | Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴| | Runtime/Pallet Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴,[Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | @@ -109,7 +109,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Testing | [Halva](https://github.com/halva-suite/halva) 🔴, [Ink Waterfall](https://github.com/paritytech/ink-waterfall) 🟡, [Redspot](https://github.com/patractlabs/redspot) 🔴, [MixBytes Tank](https://github.com/mixbytes/tank) 🔴, [sub-flood](https://github.com/NikVolf/sub-flood) 🔴, [Substrate debug-kit](https://github.com/paritytech/substrate-debug-kit) 🔴, [Dotscale - SCALE Codec Comparator](https://github.com/arijitAD/dotscale) 🔴, [Asset CLI tool](https://github.com/JesseAbram/asset_cli_tool) 🔴, [sub_crash](https://github.com/JesseAbram/unfinished_testing_tool) 🔴, [subwasm](https://github.com/chevdor/subwasm) 🟢, [subsee](https://github.com/ascjones/subsee) 🔴, [polkadot-lab](https://github.com/w3f/polkadot-lab) 🔴, [Zombienet](https://github.com/paritytech/zombienet) 🟢, [RPC-perf](https://github.com/dwellir-public/rpc-perf/) 🔴| | Testnet | [Polkadot Launch](https://github.com/paritytech/polkadot-launch) 🟡, [polkadot-starship](https://github.com/koute/polkadot-starship) 🔴, [Fork off Substrate](https://github.com/maxsam4/fork-off-substrate) 🔴, [Parachain Launch](https://github.com/open-web3-stack/parachain-launch) 🟢| | Benchmarking | [Clockchain](https://github.com/0xekez/clockchain) 🔴, [Substrate Graph Benchmarks](https://github.com/shawntabrizi/substrate-graph-benchmarks) 🔴| -| Blockchain Indexing Engine | [Substrate Archive](https://github.com/paritytech/substrate-archive) 🟡, [PSQL Indexer](https://github.com/usetech-llc/polkadot_psql_indexer) 🔴, [Polkadothub Indexer](https://github.com/figment-networks/polkadothub-indexer) :grey_question:, [Substrate Graph](https://github.com/playzero/substrate-graph) 🔴, [Hydra](https://github.com/subsquid/hydra) 🔴, [Subquery](https://github.com/OnFinality-io/subql) 🟢, [Polkadot Profit Transformer](https://github.com/p2p-org/polkadot-profit-transformer) 🟡| +| Blockchain Indexing Engine | [Substrate Archive](https://github.com/paritytech/substrate-archive) 🟡, [PSQL Indexer](https://github.com/usetech-llc/polkadot_psql_indexer) 🔴, [Substrate Graph](https://github.com/playzero/substrate-graph) 🔴, [Hydra](https://github.com/subsquid/hydra) 🔴, [Subquery](https://github.com/OnFinality-io/subql) 🟢, [Polkadot Profit Transformer](https://github.com/p2p-org/polkadot-profit-transformer) 🟡| | Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🟡, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡| | Gaming | [Crossbow](https://github.com/dodorare/crossbow) 🟢| [Amethyst](https://amethyst.rs/) + [Substrate](https://substrate.dev/) | | No-code Platforms | [EzCode's Polkadot.js plugin on Bubble.io](https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js) 🔴, [Blackprint Visual Programming Polkadot.js module](https://github.com/Blackprint/nodes-polkadot.js) 🟢| | @@ -139,14 +139,14 @@ In the below sections you can find a list of different layers of the Polkadot St | TEE | [Acurast](https://github.com/Acurast/acurast-core) 🟢, [Integritee](https://github.com/integritee-network/worker) 🟢, [substraTEE](https://github.com/scs/substraTEE) 🔴| | DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🟡, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | | Smart contract chains | [moonbeam](https://github.com/PureStake/moonbeam) 🟢, [Edgeware](https://github.com/hicommonwealth/edgeware-node) 🔴, [ParaState](https://github.com/ParaState/substrate-ssvm-node) 🔴, [gear](https://github.com/gear-tech/gear) 🟢, [CENNZnet](https://github.com/cennznet/cennznet) 🟡, [SkyeKiwi](https://github.com/skyekiwi/skyekiwi-network) 🔴, [OAK-blockchain](https://github.com/OAK-Foundation/OAK-blockchain) 🟢, [ICE Blockchain](https://github.com/web3labs/ice-substrate) 🟢| smart contract chains with novel security approaches, smart contract chains based on existing toolchains | -| Oracle | [Laminar](https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle) 🟢, [Parallel Finance](https://github.com/parallel-finance/parallel/blob/feature-oracle/pallets/ocw-oracle/src/lib.rs) 🟢, [Chainlink-polkadot](https://github.com/smartcontractkit/chainlink-polkadot) 🔴, [Ares Protocol](https://github.com/aresprotocols/ares) 🟢, [Kylin Network](https://github.com/Kylin-Network/kylin-node) 🟢, [interbtc-clients oracle](https://github.com/interlay/interbtc-clients/tree/master/oracle) 🟢, [Anonima](https://github.com/webb-tools/anonima) 🔴, [Apollo](https://github.com/ComposableFi/composable/tree/main/frame/oracle) 🟢| +| Oracle | [Laminar](https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle) 🟢, [Chainlink-polkadot](https://github.com/smartcontractkit/chainlink-polkadot) 🔴, [Ares Protocol](https://github.com/aresprotocols/ares) 🟢, [Kylin Network](https://github.com/Kylin-Network/kylin-node) 🟢, [interbtc-clients oracle](https://github.com/interlay/interbtc-clients/tree/master/oracle) 🟢, [Anonima](https://github.com/webb-tools/anonima) 🔴, [Apollo](https://github.com/ComposableFi/composable/tree/main/code/parachain/frame/oracle) 🟢| | Identity/DID | [Litentry](https://github.com/litentry/litentry-runtime) 🔴, [pallet-did](https://github.com/substrate-developer-hub/pallet-did) 🔴, [dot-id](https://github.com/prasad-kumkar/dot-id) 🔴| | IoT | [Nodle](https://github.com/NodleCode/chain) 🟢, [MXC/DataHighway](https://github.com/DataHighway-DHX/node) 🔴, [peaq-network-node](https://github.com/peaqnetwork/peaq-network-node) 🟢| | Verifiable Claims | [KILT](https://github.com/KILTprotocol/kilt-node) 🟢, [Dock](https://github.com/docknetwork/dock-substrate) 🟢, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢| | Supply chain | [DSCP Node](https://github.com/digicatapult/dscp-node) 🟢| | | Health care | [AriaHealth](https://github.com/AriaHealth/MetaNetwork) 🔴| | | Social Networking | [Social Network](https://github.com/social-network/blockchain) 🔴, [SubSocial](https://github.com/dappforce/subsocial-parachain) 🟢, [ZeroDAO](https://github.com/ZeroDAO/ZeroDAO-node) 🔴, [Myriad Node](https://github.com/myriadsocial/myriad-node) 🟡, [Wika Network](https://github.com/randombishop/wika_etl) 🔴, [Project Liberty](https://github.com/LibertyDSNP/mrc) 🟢, [Listen](https://github.com/listenofficial/listen-parachain) 🟡, [Tribal Protocol](https://github.com/tribal-protocol/tribal_contract) 🟡, [Five Degrees on Substrate](https://github.com/rust-0x0/hex-space-protocol-substrate) 🟡, [Acuity Social](https://github.com/acuity-social/acuity-substrate) 🟢| Private instant messenger that uses on-chain identity | -| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal_node) :grey_question:, [DAOs](https://github.com/daos-org/daos) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | +| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal-node) :grey_question:, [DAOs](https://github.com/daos-org/daos) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | | Prediction Markets and Futarchy | [Zeitgeist](https://github.com/zeitgeistpm/zeitgeist) 🟢, [X Predict Market](https://github.com/XPredictMarket/NodePredict) 🔴| | Messaging | [HOPR](https://github.com/validitylabs/HOPR-PL-Substrate) 🔴, [Nolik](https://github.com/chainify/pallet-nolik/) 🟡| | File Storage, Cloud | [Subsocial-Offchain](https://github.com/dappforce/subsocial-offchain) 🔴, [DatDot](https://github.com/playproject-io/datdot) 🔴, [Crust Network](https://github.com/crustio/crust) 🟢, [offchain::ipfs](https://github.com/rs-ipfs/offchain-ipfs-manual) 🔴, [Canyon Network](https://github.com/canyon-network/canyon) 🔴, [CESS](https://github.com/Cumulus2021/cess) 🟢, [CESS Proving Subsystem](https://github.com/CESSProject/cess-proving-system) 🔴, [Iris](https://github.com/ideal-lab5/iris) 🔴, [fmd-cess](https://github.com/CESSProject/fmd-cess) 🔴, [IPFS Frame V3](https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw) 🟢, [Threefold Chain](https://github.com/threefoldtech/tfchain) 🟢, [Apron](https://github.com/Apron-Network/apron-node) 🔴| diff --git a/docs/build/build-parachains.md b/docs/build/build-parachains.md index 853a73561a3d..7a4a3d1cdd8a 100644 --- a/docs/build/build-parachains.md +++ b/docs/build/build-parachains.md @@ -22,7 +22,7 @@ own logic and runs in parallel within the {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} ecosystem. Developers can focus on creating state-of-the-art chains that take advantage of -{{ polkadot: Polkadot's :polkadot }}{{ kusama: Kusama's :kusama }} next-generation approach. Some +{{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}'s next-generation approach. Some examples of what a parachain could be are: - DeFi (Decentralized Finance) Applications @@ -87,7 +87,7 @@ With {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}, you will ge of the box if you build your application as a parachain. The [XCM format](../learn/learn-xcm.md) allows any parachains to communicate by passing messages between them. Furthermore, as bridges to other chains are connected (such as those to Bitcoin or Ethereum) -{{ polkadot: Polkadot's :polkadot }}{{ kusama: Kusama's :kusama }} parachains will be able to +{{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }}'s parachains will be able to communicate with these as well. :::note @@ -429,8 +429,7 @@ For more information on how parathread per-block auctions work, see the more det ## Resources - - +- [Parachain tutorials](https://docs.substrate.io/reference/how-to-guides/parachains/) - [Common Good Parachains](https://polkadot.network/blog/common-good-parachains-an-introduction-to-governance-allocated-parachain-slots/) - [The Launch of Parachains](https://polkadot.network/blog/the-launch-of-parachains/) - [Parathreads: Pay-as-you-go Parachains](https://medium.com/polkadot-network/parathreads-pay-as-you-go-parachains-7440d23dde06) diff --git a/docs/build/build-smart-contracts.md b/docs/build/build-smart-contracts.md index ea972660f26d..14bb451912cc 100644 --- a/docs/build/build-smart-contracts.md +++ b/docs/build/build-smart-contracts.md @@ -22,7 +22,7 @@ a specific chain address. In comparison, a runtime module is the entire logic of a chain's state transitions (what's called a state transition function). -Smart contracts must consciously implement upgradability while parachains will have the ability to +Smart contracts must consciously implement upgradeability while parachains will have the ability to swap out their code entirely through a root command or via the governance pallet. When you build a smart contract, it will eventually be deployed to a target chain with its own @@ -89,8 +89,8 @@ Here is the list of current resources available to developers who want to get st contracts to deploy on parachains based on Substrate. - [ink!](https://github.com/paritytech/ink) - Parity's ink to write smart contracts. -- [Substrate ink! Workshop](https://docs.substrate.io/tutorials/smart-contracts/develop-contract/) - - Walks you through the basics of writing and deploying an ERC-20 token using `ink!`. +- [Substrate ink! Workshop](https://docs.substrate.io/tutorials/smart-contracts/) - Walks you + through the basics of writing and deploying an ERC-20 token using `ink!`. ### Contracts Pallet @@ -184,10 +184,11 @@ at [PolkaProjects](https://www.polkaproject.com/#/projects?cateID=1&tagID=6). #### Moonbeam -[Moonbeam](https://moonbeam.network/) is another project that is planning to deploy to Polkadot as a parachain and will -support Ethereum compatible smart contracts. Since Moonbeam uses [Frontier](https://github.com/paritytech/frontier), an interoperability -layer with existing Ethereum tooling, it will support all applications that are written to target -the EVM environment with little friction. +[Moonbeam](https://moonbeam.network/) is another project that is planning to deploy to Polkadot as a +parachain and will support Ethereum compatible smart contracts. Since Moonbeam uses +[Frontier](https://github.com/paritytech/frontier), an interoperability layer with existing Ethereum +tooling, it will support all applications that are written to target the EVM environment with little +friction. [Moonriver](https://docs.moonbeam.network/networks/moonriver/), a companion network to Moonbeam, launched as a parachain on Kusama. Parachain functionality is live, and features are being @@ -198,11 +199,19 @@ Try deploying a smart contract to Moonbeam by following their [documentation][mo #### Astar -[Astar Network](https://astar.network/) supports the building of dApps with EVM and WASM smart contracts and offers developers true interoperability. True interoperability with cross-consensus messaging [XCM](https://wiki.polkadot.network/docs/learn-xcm) and cross-virtual machine [XVM](https://github.com/AstarNetwork/). We are made by developers and for developers. Astar’s unique Build2Earn model empowers developers to get paid through a dApp staking mechanism for the code they write and dApps they build. +[Astar Network](https://astar.network/) supports the building of dApps with EVM and WASM smart +contracts and offers developers true interoperability. True interoperability with cross-consensus +messaging [XCM](https://wiki.polkadot.network/docs/learn-xcm) and cross-virtual machine +[XVM](https://github.com/AstarNetwork/). We are made by developers and for developers. Astar’s +unique Build2Earn model empowers developers to get paid through a dApp staking mechanism for the +code they write and dApps they build. -[Shiden Network](https://shiden.astar.network/) is the canary network of Astar Network, live as a parachain on Kusama, and supports the EVM and WASM environment for all developers who want to build out use-cases in a canary network with economic value. Shiden acts as a playground for developers. +[Shiden Network](https://shiden.astar.network/) is the canary network of Astar Network, live as a +parachain on Kusama, and supports the EVM and WASM environment for all developers who want to build +out use-cases in a canary network with economic value. Shiden acts as a playground for developers. -Try deploying an Ethereum or ink! smart contract by following their [documentation](https://docs.astar.network/). +Try deploying an Ethereum or ink! smart contract by following their +[documentation](https://docs.astar.network/). #### Acala diff --git a/docs/build/build-tools-index.md b/docs/build/build-tools-index.md index 733510eda890..b14006c97447 100644 --- a/docs/build/build-tools-index.md +++ b/docs/build/build-tools-index.md @@ -48,8 +48,7 @@ Please see the [Wallets](build-wallets.md) page. - [PolkaStats](https://polkastats.io/) - Polkadot network statistics (includes Kusama). Shows network information and staking details from validators and intentions. [GitHub Repository](https://github.com/Colm3na/polkastats-v2/). -- [Panic](https://github.com/SimplyVC/panic) - A node monitoring and alert server for - validators. +- [Panic](https://github.com/SimplyVC/panic) - A node monitoring and alert server for validators. - [OpenWeb3/Guardian](https://github.com/open-web3-stack/guardian) - A CLI tool and JS library to monitor on chain states and events. @@ -94,7 +93,7 @@ Please see the [Wallets](build-wallets.md) page. ## UI - [Polkadash](https://github.com/Swader/polkadash) - VueJS-based starter kit for custom user - interfaces for Substrate chains. [Tutorials](https://dotleap.com/tag/tutorial/). + interfaces for Substrate chains. - [Polkadot JS Apps UI](https://github.com/polkadot-js/apps) - Repository of the [polkadot.js.org/apps](https://polkadot.js.org/apps) UI. - [Substrate Front-end Template](https://github.com/substrate-developer-hub/substrate-front-end-template) - diff --git a/docs/general/claims.md b/docs/general/claims.md index 0c9ee178c615..1cc85c6b1f55 100644 --- a/docs/general/claims.md +++ b/docs/general/claims.md @@ -13,5 +13,4 @@ tutorials: - [Why do I need to claim my DOT tokens and is there a deadline?](https://support.polkadot.network/support/solutions/articles/65000063553-why-do-i-need-to-claim-my-dot-tokens-and-is-there-a-deadline-) - [I claimed my DOT before Polkadot went live, but still see zero balance!](https://support.polkadot.network/support/solutions/articles/65000063667-i-claimed-my-dot-before-polkadot-went-live-but-still-see-zero-balance-) - [How to claim your DOT - Tutorial](https://support.polkadot.network/support/solutions/articles/65000138217-how-to-claim-your-dot-tutorial) -- [Can I claim multiple Ethereum addresses to one single Polkadot account?](https://support.polkadot.network/support/solutions/articles/65000068824-can-i-claim-multiple-ethereum-addresses-to-one-single-polkadot-account-) - [How do I know my claim worked?](https://support.polkadot.network/support/solutions/articles/65000103605-how-do-i-know-my-claim-worked-) diff --git a/docs/general/kusama/kusama-community.md b/docs/general/kusama/kusama-community.md index f707da727eb3..5eda22309719 100644 --- a/docs/general/kusama/kusama-community.md +++ b/docs/general/kusama/kusama-community.md @@ -21,8 +21,7 @@ anyone doing so is likely trying to scam you.** Information on hosting meetups, applying for funding, and materials for running it. - [Support Knowledgebase](https://support.polkadot.network/support/home) and [Polkadot Support Contact](https://support.polkadot.network). -- [Polkadot's Latest Research](https://research.web3.foundation/en/latest/polkadot/) - also applies - to Kusama. +- [Polkadot's Latest Research](https://research.web3.foundation/en/latest/polkadot/overview.html) - also applies to Kusama. ### Events @@ -66,7 +65,6 @@ application we use most often to interact with the Matrix protocol is the - [Web3 Medium Blog](https://medium.com/@web3) - [Polkadot Blog](https://polkadot.network/blog/) - [Gavin Wood's Medium Blog](https://medium.com/@gavofyork) -- [Dotleap.com Tutorials](https://dotleap.com) ## Newsletters diff --git a/docs/learn/learn-phragmen.md b/docs/learn/learn-phragmen.md index d3392cd80464..5bfec4a8eccc 100644 --- a/docs/learn/learn-phragmen.md +++ b/docs/learn/learn-phragmen.md @@ -115,7 +115,7 @@ person with weight `5` voting for that candidate. The particular algorithm we call here the "Basic Phragmén" was first described by Brill _et al._ in their paper -["Phragmén’s Voting Methods and Justified Representation"](https://aaai.org/ocs/index.php/AAAI/AAAI17/paper/download/14757/13791). +["Phragmén’s Voting Methods and Justified Representation"](https://ojs.aaai.org/index.php/AAAI/article/view/10598). ### Algorithm @@ -765,7 +765,7 @@ size _k_: Rust implementation used in Substrate. - [Phragmén's and Thiele's Election Methods](https://arxiv.org/pdf/1611.08826.pdf) - 95-page paper explaining Phragmén's election methods in detail. -- [Phragmén’s Voting Methods and Justified Representation](https://aaai.org/ocs/index.php/AAAI/AAAI17/paper/download/14757/13791) - +- [Phragmén’s Voting Methods and Justified Representation](https://ojs.aaai.org/index.php/AAAI/article/view/10598) - This paper by Brill _et al._ is the source for the simple Phragmén method, along with proofs about its properties. - [Offline Phragmén](https://github.com/kianenigma/offline-phragmen) - Script to generate the diff --git a/docs/maintain/maintain-endpoints.md b/docs/maintain/maintain-endpoints.md index 75671e255920..e14de3ef516a 100644 --- a/docs/maintain/maintain-endpoints.md +++ b/docs/maintain/maintain-endpoints.md @@ -71,7 +71,7 @@ service, and additional metrics. - [OnFinality](https://onfinality.io) - [Dwellir](https://dwellir.com) - [Pinknode](https://pinknode.io) -- [Radium Block](https://radiumblock.io) +- [Radium Block](https://radiumblock.com/) :::note From b2cec8b13ffe14358e4ffb20c67322f65af24f0f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 01:31:58 -0400 Subject: [PATCH 10/35] auction schedule update (#3976) Co-authored-by: Polkadot-Kusama Bot --- components/utilities/data/KusamaAuctions.json | 4 ++-- components/utilities/data/PolkadotAuctions.json | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/utilities/data/KusamaAuctions.json b/components/utilities/data/KusamaAuctions.json index 127e101c1310..9806613a6d08 100644 --- a/components/utilities/data/KusamaAuctions.json +++ b/components/utilities/data/KusamaAuctions.json @@ -1012,7 +1012,7 @@ "startBlock": 14918400, "startHash": "0x3fe099e3d81fb7d4aecf2f11ed5cb3d243ba6d03bf6cfe76d84807f6160ed9cc", "endPeriodBlock": 14945400, - "endPeriodHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "endPeriodHash": "0xa8b88a99f1c0c18812db8c94d90fc967b5146e18b8ecd23c64cf31086ce97dea", "biddingEndsBlock": 15017400, "biddingEndsHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "onboardStartBlock": 15120000, @@ -1020,7 +1020,7 @@ "onboardEndBlock": 19958400, "onboardEndHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "startDate": 1665991038012, - "endPeriodDate": null, + "endPeriodDate": 1666153308043, "biddingEndsDate": null, "onboardStartDate": null, "onboardEndDate": null diff --git a/components/utilities/data/PolkadotAuctions.json b/components/utilities/data/PolkadotAuctions.json index 960365cef7cf..5448a071db8f 100644 --- a/components/utilities/data/PolkadotAuctions.json +++ b/components/utilities/data/PolkadotAuctions.json @@ -528,14 +528,14 @@ "endPeriodBlock": 12537400, "endPeriodHash": "0xa34451450bca3bc96c2eac5f7df667a364a8988c21a32081918e4c45b1c8bf1a", "biddingEndsBlock": 12609400, - "biddingEndsHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "biddingEndsHash": "0xb5fe1b9290e60ae022eb8b724f11f3d9c7ad1a90f5f58c30edec6ff264dbe3eb", "onboardStartBlock": 13017600, "onboardStartHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "onboardEndBlock": 22694400, "onboardEndHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "startDate": 1665953556009, "endPeriodDate": 1666115604006, - "biddingEndsDate": null, + "biddingEndsDate": 1666552620009, "onboardStartDate": null, "onboardEndDate": null }, From 3abbd1b7d15754161070b494b5c75616a757d10e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 01:33:08 -0400 Subject: [PATCH 11/35] Update status badges (#3977) Co-authored-by: github-actions[bot] --- docs/build/build-open-source.md | 34 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index a6ecc9067962..6afaa70b13b5 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -74,15 +74,15 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| Desktop/Web Wallets | [Talisman Web Application](https://github.com/TalismanSociety/talisman-web) 🟢, [AirGap](https://github.com/airgap-it/airgap-wallet) 🟢, [Primis](https://github.com/Primis-Labs/client) 🟢, [Sakura](https://github.com/w3finance/sakura) 🔴, [Omni desktop](https://github.com/w3f-grants-archive/omni-desktop-prototype) 🔴| User-friendly Wallet based on the [Recovery Pallet](https://github.com/paritytech/substrate/tree/master/frame/recovery), Web wallets focused on user-onboarding (e.g. using [localStorage](https://github.com/near/near-wallet) ), Enterprise Wallets | +| Desktop/Web Wallets | [Talisman Web Application](https://github.com/TalismanSociety/talisman-web) 🟢, [AirGap](https://github.com/airgap-it/airgap-wallet) 🟢, [Primis](https://github.com/Primis-Labs/client) 🟢, [Sakura](https://github.com/w3finance/sakura) 🔴, [Omni desktop](https://github.com/w3f-grants-archive/omni-desktop-prototype) 🔴| User-friendly Wallet based on the [Recovery Pallet](https://github.com/paritytech/substrate/tree/master/frame/recovery), Web wallets focused on user-onboarding (e.g. using [localStorage](https://github.com/near/near-wallet) ), Enterprise Wallets | | Browser Extensions | [Enkrypt](https://github.com/enkryptcom/enKrypt) 🟢, [Polkadot{.js}](https://github.com/polkadot-js/extension) 🟢, [Polkadot-Js-Plus-Extension](https://github.com/Nick-1979/polkadot-Js-Plus-extension) 🟢, [SubWallet-Extension](https://github.com/Koniverse/SubWallet-Extension) 🟢, [Doter](https://github.com/ChainBridgeNetworkTeam/Doter) 🔴, [Enzyme](https://github.com/blockxlabs/enzyme/) 🔴, [Speckle OS](https://github.com/GetSpeckle/speckle-browser-extension) 🔴| Sign-in with your polkadot, kusama, etc. account. | -| Mobile Wallets | [Lunie](https://github.com/luniehq/lunie) 🔴, [Polkawallet](https://github.com/polkawallet-io/polkawallet-flutter) 🔴, [Parity Signer](https://github.com/paritytech/parity-signer) 🟢, [imToken](https://github.com/consenlabs/token-core) 🟢, [Fearless Wallet Android](https://github.com/soramitsu/fearless-Android) 🟢, [Fearless Wallet iOS](https://github.com/soramitsu/fearless-iOS) 🟢, [Stylo](https://github.com/stylo-app/stylo) 🟡, [Nova Wallet](https://github.com/nova-wallet/nova-utils) 🟢, [Fractapp](https://github.com/fractapp/fractapp/) 🔴, [Interstellar Network](https://github.com/Interstellar-Network/wallet-app) 🟡, [Hashed Wallet](https://github.com/hypha-dao/hashed-wallet) 🟢| +| Mobile Wallets | [Lunie](https://github.com/luniehq/lunie) 🔴, [Polkawallet](https://github.com/polkawallet-io/polkawallet-flutter) 🔴, [Parity Signer](https://github.com/paritytech/parity-signer) 🟢, [imToken](https://github.com/consenlabs/token-core) 🟡, [Fearless Wallet Android](https://github.com/soramitsu/fearless-Android) 🟢, [Fearless Wallet iOS](https://github.com/soramitsu/fearless-iOS) 🟢, [Stylo](https://github.com/stylo-app/stylo) 🟡, [Nova Wallet](https://github.com/nova-wallet/nova-utils) 🟢, [Fractapp](https://github.com/fractapp/fractapp/) 🔴, [Interstellar Network](https://github.com/Interstellar-Network/wallet-app) 🟡, [Hashed Wallet](https://github.com/hypha-dao/hashed-wallet) 🟢| | Burner Wallets/Faucet | [KodaDot](https://github.com/vue-polkadot/apps) 🟢, [Astar Faucet Bot](https://github.com/AstarNetwork/astar-faucet-bot) 🟡, [Generic sybil-resistant faucet](https://github.com/karooolis/sybil-resistant-substrate-faucet) 🟢| Faucet (a sybil-resistant way to receive free tokens) | | Wallet Plugins | [Metamask-Snap by Chainsafe](https://github.com/ChainSafe/metamask-snap-polkadot) 🟢| | CLI Wallet | [Subwallet](https://github.com/yxf/subwallet) 🔴, [Proxy-hot-wallet](https://github.com/canontech/proxy-hot-wallet) 🔴| -| Multisignature Wallets | [Subscan Multisig UI - React](https://github.com/itering/subscan-multisig-react) 🟡, [Subscan Multisig UI](https://github.com/itering/subscan-multisig-ui) 🔴, [Dorafactory-Multisig](https://github.com/DoraFactory/dorafactory-multisig) 🔴| -| Hardware Wallets | [Ledger Polkadot](https://github.com/ZondaX/ledger-polkadot) 🟡, [Ledger Kusama](https://github.com/Zondax/ledger-kusama) 🟡, [Ledger Statemint](https://github.com/Zondax/ledger-statemint) 🟢, [Ledger Statemine](https://github.com/Zondax/ledger-statemine) 🟢| Trezor | -| Block Explorers | [Calamar](https://github.com/topmonks/calamar) 🟢, [Polkaholic](https://github.com/colorfulnotion/polkaholic) 🟢, [Polkascan](https://github.com/polkascan/explorer-api) 🟢, [Polkastats](https://github.com/Colm3na/polkastats-backend) 🔴, [Subscan](https://github.com/itering/subscan) 🟡, [Statescan](https://github.com/opensquare-network/statescan) 🟢, [Edgscan](https://github.com/edgeware-builders/edgscan) 🔴, [Epirus](https://github.com/web3labs/epirus-substrate) 🟡, [Ink! Explorer API](https://github.com/blockcoders/ink-substrate-explorer-api) 🟢| Mempool focused explorer (including parachain transaction) | +| Multisignature Wallets | [Subscan Multisig UI - React](https://github.com/itering/subscan-multisig-react) 🟢, [Subscan Multisig UI](https://github.com/itering/subscan-multisig-ui) 🔴, [Dorafactory-Multisig](https://github.com/DoraFactory/dorafactory-multisig) 🔴| +| Hardware Wallets | [Ledger Polkadot](https://github.com/ZondaX/ledger-polkadot) 🟢, [Ledger Kusama](https://github.com/Zondax/ledger-kusama) 🟢, [Ledger Statemint](https://github.com/Zondax/ledger-statemint) 🟢, [Ledger Statemine](https://github.com/Zondax/ledger-statemine) 🟢| Trezor | +| Block Explorers | [Calamar](https://github.com/topmonks/calamar) 🟢, [Polkaholic](https://github.com/colorfulnotion/polkaholic) 🟢, [Polkascan](https://github.com/polkascan/explorer-api) 🟢, [Polkastats](https://github.com/Colm3na/polkastats-backend) 🔴, [Subscan](https://github.com/itering/subscan) 🟡, [Statescan](https://github.com/opensquare-network/statescan) 🟡, [Edgscan](https://github.com/edgeware-builders/edgscan) 🔴, [Epirus](https://github.com/web3labs/epirus-substrate) 🟡, [Ink! Explorer API](https://github.com/blockcoders/ink-substrate-explorer-api) 🟢| Mempool focused explorer (including parachain transaction) | | Validator Dashboards | [Polkacube](https://github.com/hashquark-io/polkacube-frontend) 🔴, [YieldScan](https://github.com/buidl-labs/YieldScan) 🔴, [Hubble](https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot) 🔴| | Node Explorers | [Polkadot Node Explorer](https://github.com/protos-research/polkadot-node-explorer) 🔴| | NFT Explorer | [NFT Explorer for Kusama & Polkadot](https://github.com/kodadot/nft-gallery) 🟢| @@ -100,7 +100,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Parachain | [Parachain utilities](https://github.com/AcalaNetwork/parachain-utilities) 🔴, [Gantree](https://github.com/gantree-io/gantree-core) 🔴| Tools to create parachains from frameworks used in other ecosystems | | Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟢, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [Rust pdotc](https://github.com/trevor-crypto) [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | | Substrate Contract clients | [PatractGo](https://github.com/patractlabs/go-patract) 🔴| | -| SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟡, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟡, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟢, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟢, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟢| +| SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟢, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟡, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟢, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟡, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟡| | Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | | Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴| | Runtime/Pallet Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴,[Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | @@ -110,7 +110,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Testnet | [Polkadot Launch](https://github.com/paritytech/polkadot-launch) 🟡, [polkadot-starship](https://github.com/koute/polkadot-starship) 🔴, [Fork off Substrate](https://github.com/maxsam4/fork-off-substrate) 🔴, [Parachain Launch](https://github.com/open-web3-stack/parachain-launch) 🟢| | Benchmarking | [Clockchain](https://github.com/0xekez/clockchain) 🔴, [Substrate Graph Benchmarks](https://github.com/shawntabrizi/substrate-graph-benchmarks) 🔴| | Blockchain Indexing Engine | [Substrate Archive](https://github.com/paritytech/substrate-archive) 🟡, [PSQL Indexer](https://github.com/usetech-llc/polkadot_psql_indexer) 🔴, [Substrate Graph](https://github.com/playzero/substrate-graph) 🔴, [Hydra](https://github.com/subsquid/hydra) 🔴, [Subquery](https://github.com/OnFinality-io/subql) 🟢, [Polkadot Profit Transformer](https://github.com/p2p-org/polkadot-profit-transformer) 🟡| -| Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🟡, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡| +| Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🔴, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡| | Gaming | [Crossbow](https://github.com/dodorare/crossbow) 🟢| [Amethyst](https://amethyst.rs/) + [Substrate](https://substrate.dev/) | | No-code Platforms | [EzCode's Polkadot.js plugin on Bubble.io](https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js) 🔴, [Blackprint Visual Programming Polkadot.js module](https://github.com/Blackprint/nodes-polkadot.js) 🟢| | | XCM | [XCM-tools](https://github.com/PureStake/xcm-tools) 🟢, [ParaSpell](https://github.com/dudo50/ParaSpell) 🟢| | @@ -126,18 +126,18 @@ In the below sections you can find a list of different layers of the Polkadot St | Gaming | [Open Emoji Battler](https://github.com/OpenEmojiBattler/open-emoji-battler) 🟢, [NewOmega](https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs) 🔴| | | DAO | [subDAO](https://github.com/SubDAO-Network/subDAO-contracts) 🔴, [RainbowDAO](https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1) 🔴| | | Spam Protection | [Prosopo](https://github.com/prosopo-io/integration) 🟡| | -| Other | [Candle Auctions](https://github.com/agryaznov/candle-auction-ink) 🔴, [polkasign-contract](https://github.com/SubDAO-Network/polkasign-contract) 🔴, [OCEX](https://github.com/bsn-si/ocex-cli) 🔴, [Roloi](https://github.com/RoloiMoney/roloi-polkadot-w3f-grant) 🟡| | +| Other | [Candle Auctions](https://github.com/agryaznov/candle-auction-ink) 🔴, [polkasign-contract](https://github.com/SubDAO-Network/polkasign-contract) 🔴, [OCEX](https://github.com/bsn-si/ocex-cli) 🔴, [Roloi](https://github.com/RoloiMoney/roloi-polkadot-w3f-grant) 🔴| | ### Chains and Pallets | Components | Existing projects | Potentially interesting projects | | ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Scalable Transactions | [Perun channels](https://github.com/perun-network/perun-polkadot-pallet) 🟡, [CLI demo of Perun](https://github.com/perun-network/perun-polkadot-demo) 🔴, [Astar](https://github.com/AstarNetwork/Astar) 🟢, [Celer](https://github.com/celer-network/cChannel-substrate) 🔴, [Gunclear](https://github.com/GunClear/Gunero) 🔴| roll-ups, DAG-based consensus mechanisms, side chains | -| Bridges | [interBTC](https://github.com/interlay/interbtc) 🟢, [ChainBridge](https://github.com/centrifuge/ChainBridge/) 🟢, [EOS by Bifrost](https://github.com/bifrost-finance/bifrost-eos-relay) 🔴, [POA - Substrate](https://github.com/paritytech/parity-bridge) 🔴, [Substrate - Ethereum DAI Bridge](https://github.com/akropolisio/POC-polkadai-bridge) 🔴, [Substrate - Substrate Bridge](https://github.com/paritytech/substrate-bridge-relay) 🔴, [BTC by ChainX](https://github.com/chainx-org/ChainX) 🟡, [Cosmos-Substrate bridge](https://github.com/ChorusOne/wormhole-bridge) 🔴, [Substrate IBC Pallet](https://github.com/octopus-network/substrate-ibc) 🟢, [Polkadot Ethereum Bridge](https://github.com/Snowfork/polkadot-ethereum) 🟢, [Darwinia](https://github.com/darwinia-network/darwinia) 🟢, [Stellar/DeFi Bridge by Pendulum](https://github.com/pendulum-chain/pendulum-prototype) 🔴, [Filecoindot](https://github.com/ChainSafe/filecoindot) 🟢| ZCash | +| Bridges | [interBTC](https://github.com/interlay/interbtc) 🟢, [ChainBridge](https://github.com/centrifuge/ChainBridge/) 🟢, [EOS by Bifrost](https://github.com/bifrost-finance/bifrost-eos-relay) 🔴, [POA - Substrate](https://github.com/paritytech/parity-bridge) 🔴, [Substrate - Ethereum DAI Bridge](https://github.com/akropolisio/POC-polkadai-bridge) 🔴, [Substrate - Substrate Bridge](https://github.com/paritytech/substrate-bridge-relay) 🔴, [BTC by ChainX](https://github.com/chainx-org/ChainX) 🟢, [Cosmos-Substrate bridge](https://github.com/ChorusOne/wormhole-bridge) 🔴, [Substrate IBC Pallet](https://github.com/octopus-network/substrate-ibc) 🟢, [Polkadot Ethereum Bridge](https://github.com/Snowfork/polkadot-ethereum) 🟢, [Darwinia](https://github.com/darwinia-network/darwinia) 🟢, [Stellar/DeFi Bridge by Pendulum](https://github.com/pendulum-chain/pendulum-prototype) 🔴, [Filecoindot](https://github.com/ChainSafe/filecoindot) 🟡| ZCash | | Privacy | [Webb Anon](https://github.com/webb-tools/anon) 🔴, [ZeroChain](https://github.com/LayerXcom/zero-chain) 🔴, [pLibra (Phala Network)](https://github.com/Phala-Network/phala-blockchain) 🟢, [Automata Network](https://github.com/automata-network/automata) 🔴, [zCloak Network](https://github.com/zCloak-Network/zcloak-node) 🔴, [Zero Network](https://github.com/zero-network/zero) 🟢| [Multi-Asset Shielded Pool (MASP)](https://github.com/anoma/masp) , [Zkay](https://arxiv.org/pdf/2009.01020.pdf), [Zexe](https://eprint.iacr.org/2018/962.pdf) | | ZKP | [ZeroPool](https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example) 🔴, [Megaclite](https://github.com/patractlabs/megaclite) 🔴, [zkMega](https://github.com/patractlabs/zkmega) 🔴, [PLONK for Substrate](https://github.com/AstarNetwork/plonk) 🔴, [Webb Anchor Protocol](https://github.com/webb-tools/protocol-substrate) 🟢| | TEE | [Acurast](https://github.com/Acurast/acurast-core) 🟢, [Integritee](https://github.com/integritee-network/worker) 🟢, [substraTEE](https://github.com/scs/substraTEE) 🔴| -| DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🟡, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | +| DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🔴, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | | Smart contract chains | [moonbeam](https://github.com/PureStake/moonbeam) 🟢, [Edgeware](https://github.com/hicommonwealth/edgeware-node) 🔴, [ParaState](https://github.com/ParaState/substrate-ssvm-node) 🔴, [gear](https://github.com/gear-tech/gear) 🟢, [CENNZnet](https://github.com/cennznet/cennznet) 🟡, [SkyeKiwi](https://github.com/skyekiwi/skyekiwi-network) 🔴, [OAK-blockchain](https://github.com/OAK-Foundation/OAK-blockchain) 🟢, [ICE Blockchain](https://github.com/web3labs/ice-substrate) 🟢| smart contract chains with novel security approaches, smart contract chains based on existing toolchains | | Oracle | [Laminar](https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle) 🟢, [Chainlink-polkadot](https://github.com/smartcontractkit/chainlink-polkadot) 🔴, [Ares Protocol](https://github.com/aresprotocols/ares) 🟢, [Kylin Network](https://github.com/Kylin-Network/kylin-node) 🟢, [interbtc-clients oracle](https://github.com/interlay/interbtc-clients/tree/master/oracle) 🟢, [Anonima](https://github.com/webb-tools/anonima) 🔴, [Apollo](https://github.com/ComposableFi/composable/tree/main/code/parachain/frame/oracle) 🟢| | Identity/DID | [Litentry](https://github.com/litentry/litentry-runtime) 🔴, [pallet-did](https://github.com/substrate-developer-hub/pallet-did) 🔴, [dot-id](https://github.com/prasad-kumkar/dot-id) 🔴| @@ -146,15 +146,15 @@ In the below sections you can find a list of different layers of the Polkadot St | Supply chain | [DSCP Node](https://github.com/digicatapult/dscp-node) 🟢| | | Health care | [AriaHealth](https://github.com/AriaHealth/MetaNetwork) 🔴| | | Social Networking | [Social Network](https://github.com/social-network/blockchain) 🔴, [SubSocial](https://github.com/dappforce/subsocial-parachain) 🟢, [ZeroDAO](https://github.com/ZeroDAO/ZeroDAO-node) 🔴, [Myriad Node](https://github.com/myriadsocial/myriad-node) 🟡, [Wika Network](https://github.com/randombishop/wika_etl) 🔴, [Project Liberty](https://github.com/LibertyDSNP/mrc) 🟢, [Listen](https://github.com/listenofficial/listen-parachain) 🟡, [Tribal Protocol](https://github.com/tribal-protocol/tribal_contract) 🟡, [Five Degrees on Substrate](https://github.com/rust-0x0/hex-space-protocol-substrate) 🟡, [Acuity Social](https://github.com/acuity-social/acuity-substrate) 🟢| Private instant messenger that uses on-chain identity | -| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal-node) :grey_question:, [DAOs](https://github.com/daos-org/daos) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | +| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal-node) 🟡, [DAOs](https://github.com/daos-org/daos) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | | Prediction Markets and Futarchy | [Zeitgeist](https://github.com/zeitgeistpm/zeitgeist) 🟢, [X Predict Market](https://github.com/XPredictMarket/NodePredict) 🔴| | Messaging | [HOPR](https://github.com/validitylabs/HOPR-PL-Substrate) 🔴, [Nolik](https://github.com/chainify/pallet-nolik/) 🟡| -| File Storage, Cloud | [Subsocial-Offchain](https://github.com/dappforce/subsocial-offchain) 🔴, [DatDot](https://github.com/playproject-io/datdot) 🔴, [Crust Network](https://github.com/crustio/crust) 🟢, [offchain::ipfs](https://github.com/rs-ipfs/offchain-ipfs-manual) 🔴, [Canyon Network](https://github.com/canyon-network/canyon) 🔴, [CESS](https://github.com/Cumulus2021/cess) 🟢, [CESS Proving Subsystem](https://github.com/CESSProject/cess-proving-system) 🔴, [Iris](https://github.com/ideal-lab5/iris) 🔴, [fmd-cess](https://github.com/CESSProject/fmd-cess) 🔴, [IPFS Frame V3](https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw) 🟢, [Threefold Chain](https://github.com/threefoldtech/tfchain) 🟢, [Apron](https://github.com/Apron-Network/apron-node) 🔴| +| File Storage, Cloud | [Subsocial-Offchain](https://github.com/dappforce/subsocial-offchain) 🔴, [DatDot](https://github.com/playproject-io/datdot) 🔴, [Crust Network](https://github.com/crustio/crust) 🟢, [offchain::ipfs](https://github.com/rs-ipfs/offchain-ipfs-manual) 🔴, [Canyon Network](https://github.com/canyon-network/canyon) 🔴, [CESS](https://github.com/Cumulus2021/cess) 🟢, [CESS Proving Subsystem](https://github.com/CESSProject/cess-proving-system) 🔴, [Iris](https://github.com/ideal-lab5/iris) 🔴, [fmd-cess](https://github.com/CESSProject/fmd-cess) 🔴, [IPFS Frame V3](https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw) 🟡, [Threefold Chain](https://github.com/threefoldtech/tfchain) 🟢, [Apron](https://github.com/Apron-Network/apron-node) 🔴| | Name Service | [Substrate Names](https://github.com/xaya/substrate-names) 🔴, [ENS on Substrate](https://github.com/hskang9/substrate-name-service) 🔴, [PNS-Pallets](https://github.com/pnsproject/pns-pallets) 🔴, [Faceless](https://github.com/HeisenbergLin22/Faceless_milestone1) 🟡| | Gaming | [Bit.country](https://github.com/bit-country/Bit-Country-Blockchain) 🟢, [SubGame](https://github.com/SubGame-Network/subgame-network) 🔴, [subzero](https://github.com/playzero/subzero) 🔴, [Web3Games](https://github.com/web3gamesofficial/web3games-blockchain) 🔴, [Ajuna Network](https://github.com/ajuna-network/Ajuna) 🟢, [Gafi Network](https://github.com/cryptoviet/gafi) 🟡, [Asylum](https://gitlab.com/asylum-space/asylum-item-nft) 🟢 | | Computation/AI | [DeepBrain Chain](https://github.com/DeepBrainChain/DeepBrainChain-MainChain) 🟢, [AI Infrastructure on Blockchain](https://github.com/anudit/cerebrum) 🔴| -| Enable specific use-cases | [Robonomics](https://github.com/airalab/substrate-node-robonomics) 🟢, [UniversalDOT](https://github.com/UniversalDot/pallets) 🟡, [Evercity Sustainable Finance Protocol](https://github.com/EvercityEcosystem/evercity-chain) 🟡, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢, [logion](https://github.com/logion-network/logion-node) 🟢| -| NFT | [ternoa](https://github.com/capsule-corp-ternoa/chain) 🟢, [FRAME Pallet: NFTs for Substrate](https://github.com/danforbes/pallet-nft) 🔴, [Unique NFT Parachain](https://github.com/UniqueNetwork/unique-chain) 🟡, [DNFT](https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets) 🔴, [RMRK-Substrate](https://github.com/rmrk-team/rmrk-substrate) 🟢, [NT-NFTs](https://github.com/Popular-Coding/nt-nft) 🟡, [Green Lemon](https://github.com/GreenLemonProtocol/dksap-polkadot) 🟡, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢| +| Enable specific use-cases | [Robonomics](https://github.com/airalab/substrate-node-robonomics) 🟡, [UniversalDOT](https://github.com/UniversalDot/pallets) 🟡, [Evercity Sustainable Finance Protocol](https://github.com/EvercityEcosystem/evercity-chain) 🔴, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢, [logion](https://github.com/logion-network/logion-node) 🟢| +| NFT | [ternoa](https://github.com/capsule-corp-ternoa/chain) 🟢, [FRAME Pallet: NFTs for Substrate](https://github.com/danforbes/pallet-nft) 🔴, [Unique NFT Parachain](https://github.com/UniqueNetwork/unique-chain) 🟡, [DNFT](https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets) 🔴, [RMRK-Substrate](https://github.com/rmrk-team/rmrk-substrate) 🟢, [NT-NFTs](https://github.com/Popular-Coding/nt-nft) 🟢, [Green Lemon](https://github.com/GreenLemonProtocol/dksap-polkadot) 🟡, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢| | Randomness | [DKG and Randomness Beacon](https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon) 🟡| | Licensing | [Anagolay Network](https://github.com/anagolay/anagolay-chain) 🟢| | Banking Integration | [FIAT on-off-ramp](https://github.com/element36-io/ebics-java-service) 🔴| @@ -162,7 +162,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Collection of Pallets | [Substrate Open Runtime Module Library](https://github.com/open-web3-stack/open-runtime-module-library) 🟢, [warehouse](https://github.com/galacticcouncil/warehouse) 🟢, [InvArch FRAME Pallet Library](https://github.com/InvArch/InvArch-Frames) 🟢| | Marketplaces | [Dot Marketplace](https://github.com/WowLabz/dot-marketplace-v2/tree/Phase2_Milestone2) 🟡, [Gated Marketplace](https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace) 🟢| | Carbon Credits | [BitGreen](https://github.com/bitgreen/bitg-node) 🟢, [Carbon Assets Pallet](https://github.com/EvercityEcosystem/carbon-assets) 🟡, [Sequester Pallets](https://github.com/SequesterChain/pallets) 🔴| -| Other | [Substrate Account Filter](https://github.com/gautamdhameja/substrate-account-filter) 🔴, [Subtensor](https://github.com/opentensor/subtensor) 🟢, [AdMeta](https://github.com/AdMetaNetwork/admeta) 🟡, [Chocolate Node](https://github.com/chocolatenetwork/chocolate-node) 🟢, [Virto Network](https://github.com/virto-network/virto-node) 🟡, [Substrate Validator Set](https://github.com/gautamdhameja/substrate-validator-set) 🟢, [DEIP](https://github.com/DEIPworld/deip-node) 🟡, [DeBio](https://github.com/debionetwork/debio-node) 🟢, [MathChain](https://github.com/mathwallet/MathChain) 🔴, [encointer](https://github.com/encointer/encointer-node) 🟢, [Grassland](https://github.com/grasslandnetwork/substrate_node) 🔴, [Substrate-Tutorials](https://github.com/rusty-crewmates/substrate-tutorials) 🟢, [Fair Squares](https://github.com/Fair-Squares/fair-squares) 🟢, [Totem Live Accounting](https://github.com/totem-tech/totem) 🔴, [Escrow Pallet](https://github.com/herou/EscrowPallet) 🟡, [TREX](https://github.com/NexTokenTech/TREX) 🟡, [Relation Graph](https://github.com/relationlabs/Relation-Graph) 🟢| Decentralized review/reputation system | +| Other | [Substrate Account Filter](https://github.com/gautamdhameja/substrate-account-filter) 🔴, [Subtensor](https://github.com/opentensor/subtensor) 🟢, [AdMeta](https://github.com/AdMetaNetwork/admeta) 🟡, [Chocolate Node](https://github.com/chocolatenetwork/chocolate-node) 🟢, [Virto Network](https://github.com/virto-network/virto-node) 🟡, [Substrate Validator Set](https://github.com/gautamdhameja/substrate-validator-set) 🟢, [DEIP](https://github.com/DEIPworld/deip-node) 🔴, [DeBio](https://github.com/debionetwork/debio-node) 🟢, [MathChain](https://github.com/mathwallet/MathChain) 🔴, [encointer](https://github.com/encointer/encointer-node) 🟢, [Grassland](https://github.com/grasslandnetwork/substrate_node) 🔴, [Substrate-Tutorials](https://github.com/rusty-crewmates/substrate-tutorials) 🟢, [Fair Squares](https://github.com/Fair-Squares/fair-squares) 🟢, [Totem Live Accounting](https://github.com/totem-tech/totem) 🔴, [Escrow Pallet](https://github.com/herou/EscrowPallet) 🟡, [TREX](https://github.com/NexTokenTech/TREX) 🟡, [Relation Graph](https://github.com/relationlabs/Relation-Graph) 🟢| Decentralized review/reputation system | ### Host @@ -178,7 +178,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -| Secure validator setup | [Polkadot Validation Node Ansible Setup](https://github.com/polkachu/polkadot-validator) 🟡, [W3F Polkadot Validator Setup](https://github.com/w3f/polkadot-validator-setup) 🔴| +| Secure validator setup | [Polkadot Validation Node Ansible Setup](https://github.com/polkachu/polkadot-validator) 🟢, [W3F Polkadot Validator Setup](https://github.com/w3f/polkadot-validator-setup) 🔴| | High availability setup | [Archipel](https://github.com/luguslabs/archipel) 🔴, [Polkadot Failover Mechanism](https://github.com/protofire/polkadot-failover-mechanism) 🔴| | Load Balanced Endpoints | [terragrunt-polkadot](https://github.com/insight-w3f/terragrunt-polkadot) 🔴, [Geometry Labs' Substrate Meta repo](https://github.com/sudoblockio/substrate-meta) 🔴| | Deployment Tools | [Polkadot Package Manager](https://github.com/Blockdaemon/bpm-sdk) 🔴, [PolkaHub](https://github.com/akropolisio/polkahub-monorepo) 🔴, [Avado](https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom) 🔴, [Polkadot Deployer](https://github.com/w3f/polkadot-deployer) 🔴| @@ -190,7 +190,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -| SR25519 | [rust](https://github.com/w3f/schnorrkel) 🔴(contains partial bindings for C, JavaScript, and Python), [.Net bindings](https://github.com/gautamdhameja/sr25519-dotnet) 🔴, [C](https://github.com/usetech-llc/sr25519) 🔴*(old)*, [C](https://github.com/TerenceGe/sr25519-donna) 🔴*(new)*, [C/C++](https://github.com/soramitsu/soramitsu-sr25519-crust) 🔴, [C#](https://github.com/usetech-llc/sr25519_dotnet) 🔴, [Go](https://github.com/ChainSafe/go-schnorrkel) 🔴, [java](https://github.com/debuggor/schnorrkel-java) 🔴, [PHP](https://github.com/gmajor-encrypt/sr25519-bindings) 🟢| +| SR25519 | [rust](https://github.com/w3f/schnorrkel) 🔴(contains partial bindings for C, JavaScript, and Python), [.Net bindings](https://github.com/gautamdhameja/sr25519-dotnet) 🔴, [C](https://github.com/usetech-llc/sr25519) 🔴*(old)*, [C](https://github.com/TerenceGe/sr25519-donna) 🔴*(new)*, [C/C++](https://github.com/soramitsu/soramitsu-sr25519-crust) 🟢, [C#](https://github.com/usetech-llc/sr25519_dotnet) 🔴, [Go](https://github.com/ChainSafe/go-schnorrkel) 🔴, [java](https://github.com/debuggor/schnorrkel-java) 🔴, [PHP](https://github.com/gmajor-encrypt/sr25519-bindings) 🟡| | Signature Aggregation | [apk-proofs](https://github.com/w3f/apk-proofs) 🟢| | Distributed key generation (DKG) | [keygen.rs](https://github.com/isislovecruft/frost-dalek) 🔴| | Validator HSMs | [Zondax Remote Signer](https://github.com/Zondax/buildroot-zondax) 🟡| From 1d77f397e4e56f36613a626a576cc47b59fd5007 Mon Sep 17 00:00:00 2001 From: Diogo <112647953+dsm-w3f@users.noreply.github.com> Date: Mon, 24 Oct 2022 05:08:27 -0300 Subject: [PATCH 12/35] Update build-open-source.md (#3975) --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 6afaa70b13b5..7163dcc0b04c 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -113,7 +113,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🔴, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡| | Gaming | [Crossbow](https://github.com/dodorare/crossbow) 🟢| [Amethyst](https://amethyst.rs/) + [Substrate](https://substrate.dev/) | | No-code Platforms | [EzCode's Polkadot.js plugin on Bubble.io](https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js) 🔴, [Blackprint Visual Programming Polkadot.js module](https://github.com/Blackprint/nodes-polkadot.js) 🟢| | -| XCM | [XCM-tools](https://github.com/PureStake/xcm-tools) 🟢, [ParaSpell](https://github.com/dudo50/ParaSpell) 🟢| | +| XCM | [XCM-tools](https://github.com/PureStake/xcm-tools) 🟢, [ParaSpell](https://github.com/dudo50/ParaSpell) 🟢, [XBI](https://github.com/t3rn/xbi) 🟢| | | Wallets | [Metadata Portal](https://github.com/nova-wallet/metadata-portal) 🟢, [Tesseract](https://github.com/tesseract-one/Tesseract.rs) 🟢, [WalletConnect](https://github.com/w3f-grants-archive/walletconnect-v2-monorepo) 🔴, [BitGoJS](https://github.com/BitGo/BitGoJS/tree/master) 🟢| | | Other | [open-web3 JS library](https://github.com/open-web3-stack/open-web3.js) 🔴, [VM-Bridge](https://github.com/CycanTech/GVM-Bridge) 🔴, [srtool](https://github.com/paritytech/srtool) 🟢, [srtool-cli](https://github.com/chevdor/srtool-cli) 🟢, [Substrate Tip Bot](https://github.com/paritytech/substrate-tip-bot) 🟢, [ORI (Onchain Risk Intelligence)](https://github.com/syntifi/ori) 🔴, [PolkaTools](https://github.com/albertov19/PolkaTools) 🟢, [polkadot-scripts](https://github.com/paritytech/polkadot-scripts) 🟢, [Sube](https://github.com/virto-network/sube) 🔴, [data-store-sidecar](https://github.com/CESSProject/data-store-sidecar) 🔴, [SugarFunge](https://github.com/SugarFunge/sugarfunge-node) 🟢, [substrate-wasmedge](https://github.com/second-state/substrate-wasmedge) 🟢| From cac543b1d7ef4e6bfddf71aae48905b5e710c780 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Mon, 24 Oct 2022 10:19:24 +0200 Subject: [PATCH 13/35] NPoS - Remove outdated info (#3974) - the calls to staking pallet are no longer filtered - add link to Staking Miner --- docs/learn/learn-phragmen.md | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/docs/learn/learn-phragmen.md b/docs/learn/learn-phragmen.md index 5bfec4a8eccc..92a5b5cac6a2 100644 --- a/docs/learn/learn-phragmen.md +++ b/docs/learn/learn-phragmen.md @@ -56,20 +56,14 @@ Given the large set of nominators and validators, Phragmén's method is a diffic problem. Polkadot uses off-chain workers to compute the result off-chain and submit a transaction to propose the set of winners. The reason for performing this computation off-chain is to keep a constant block time of six seconds and prevent long block times at the end of each era, when the -validator election takes place. - -Because certain user actions, like changing nominations, can change the outcome of the Phragmén -election, the system forbids calls to these functions for the last quarter of the session before an -era change. These functions are not permitted: - -- `bondExtra` -- `unbond` -- `withdrawUnbonded` -- `validate` -- `nominate` -- `chill` -- `payoutStakers` -- `rebond` +validator election takes place. + +:::info Staking Miners + +The process of computing the optimal solution for NPoS election can be delegated to +[Staking Miners](learn-staking-miner). + +::: ### Council Elections From befa08b76d970250910c5dee165e89dab604b42e Mon Sep 17 00:00:00 2001 From: Santi Balaguer Date: Mon, 24 Oct 2022 10:25:39 +0200 Subject: [PATCH 14/35] Small change in Phragmen algorithm explainer (#3971) If I understood the explanation correctly, I believe point (1) of the algorithm is wrong. Voters cast their vote to candidates, and not candidates to candidates. If this is wrong, please dismiss this PR. --- docs/learn/learn-phragmen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learn/learn-phragmen.md b/docs/learn/learn-phragmen.md index 92a5b5cac6a2..614dc8078bee 100644 --- a/docs/learn/learn-phragmen.md +++ b/docs/learn/learn-phragmen.md @@ -115,7 +115,7 @@ their paper The Phragmén method will iterate, selecting one seat at a time, according to the following rules: -1. Candidates submit their ballots, marking which candidates they approve. Ballots will not be +1. Voters submit their ballots, marking which candidates they approve. Ballots will not be modified after submission. 2. An initial load of 0 is set for each ballot. 3. The candidate who wins the next available seat is the one where the ballots of their supporters From 55ac9bf98693b9debdcb03ec9c43f4967e2c211c Mon Sep 17 00:00:00 2001 From: S E R A Y A Date: Mon, 24 Oct 2022 10:29:29 +0200 Subject: [PATCH 15/35] Update build-open-source.md (#3972) Add Supersig Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 7163dcc0b04c..ebc044431cd6 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -137,7 +137,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Privacy | [Webb Anon](https://github.com/webb-tools/anon) 🔴, [ZeroChain](https://github.com/LayerXcom/zero-chain) 🔴, [pLibra (Phala Network)](https://github.com/Phala-Network/phala-blockchain) 🟢, [Automata Network](https://github.com/automata-network/automata) 🔴, [zCloak Network](https://github.com/zCloak-Network/zcloak-node) 🔴, [Zero Network](https://github.com/zero-network/zero) 🟢| [Multi-Asset Shielded Pool (MASP)](https://github.com/anoma/masp) , [Zkay](https://arxiv.org/pdf/2009.01020.pdf), [Zexe](https://eprint.iacr.org/2018/962.pdf) | | ZKP | [ZeroPool](https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example) 🔴, [Megaclite](https://github.com/patractlabs/megaclite) 🔴, [zkMega](https://github.com/patractlabs/zkmega) 🔴, [PLONK for Substrate](https://github.com/AstarNetwork/plonk) 🔴, [Webb Anchor Protocol](https://github.com/webb-tools/protocol-substrate) 🟢| | TEE | [Acurast](https://github.com/Acurast/acurast-core) 🟢, [Integritee](https://github.com/integritee-network/worker) 🟢, [substraTEE](https://github.com/scs/substraTEE) 🔴| -| DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🔴, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | +| DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🔴, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢, [Supersig](https://github.com/kabocha-network/pallet_supersig) 🟢| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | | Smart contract chains | [moonbeam](https://github.com/PureStake/moonbeam) 🟢, [Edgeware](https://github.com/hicommonwealth/edgeware-node) 🔴, [ParaState](https://github.com/ParaState/substrate-ssvm-node) 🔴, [gear](https://github.com/gear-tech/gear) 🟢, [CENNZnet](https://github.com/cennznet/cennznet) 🟡, [SkyeKiwi](https://github.com/skyekiwi/skyekiwi-network) 🔴, [OAK-blockchain](https://github.com/OAK-Foundation/OAK-blockchain) 🟢, [ICE Blockchain](https://github.com/web3labs/ice-substrate) 🟢| smart contract chains with novel security approaches, smart contract chains based on existing toolchains | | Oracle | [Laminar](https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle) 🟢, [Chainlink-polkadot](https://github.com/smartcontractkit/chainlink-polkadot) 🔴, [Ares Protocol](https://github.com/aresprotocols/ares) 🟢, [Kylin Network](https://github.com/Kylin-Network/kylin-node) 🟢, [interbtc-clients oracle](https://github.com/interlay/interbtc-clients/tree/master/oracle) 🟢, [Anonima](https://github.com/webb-tools/anonima) 🔴, [Apollo](https://github.com/ComposableFi/composable/tree/main/code/parachain/frame/oracle) 🟢| | Identity/DID | [Litentry](https://github.com/litentry/litentry-runtime) 🔴, [pallet-did](https://github.com/substrate-developer-hub/pallet-did) 🔴, [dot-id](https://github.com/prasad-kumkar/dot-id) 🔴| From f439a24b2d0f72847d3d558aac777e7e8236cfd9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 17:20:24 +0200 Subject: [PATCH 16/35] Bump @polkadot/api from 9.5.2 to 9.6.1 (#3982) Bumps [@polkadot/api](https://github.com/polkadot-js/api/tree/HEAD/packages/api) from 9.5.2 to 9.6.1. - [Release notes](https://github.com/polkadot-js/api/releases) - [Changelog](https://github.com/polkadot-js/api/blob/master/CHANGELOG.md) - [Commits](https://github.com/polkadot-js/api/commits/v9.6.1/packages/api) --- updated-dependencies: - dependency-name: "@polkadot/api" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 206 +++++++++++++++++++++++++-------------------------- 2 files changed, 104 insertions(+), 104 deletions(-) diff --git a/package.json b/package.json index 959a59ae03c6..ae052afcfdbf 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@docusaurus/plugin-client-redirects": "^2.1.0", "@docusaurus/preset-classic": "^2.1.0", "@octokit/rest": "^19.0.5", - "@polkadot/api": "^9.5.2", + "@polkadot/api": "^9.6.1", "@polkadot/keyring": "10.1.1", "@testing-library/jest-dom": "^5.16.5", diff --git a/yarn.lock b/yarn.lock index 8fe17c4a7c5e..e2d0f4e76769 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2457,64 +2457,64 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== -"@polkadot/api-augment@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-9.5.2.tgz#55168dd112517028fea5f2ab9c54ea627e43ac3a" - integrity sha512-dH6QMY8Z3zI6CrgSU3eSe6f0KWDb5PYGztg/FXGPrjh7Vjic7syWZ1LD6zaHJAFWDp80BEdEXfqr4lConrCKGg== +"@polkadot/api-augment@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-9.6.1.tgz#9e4f068bbee4f4944cb2ff04c94e15161cb43ab2" + integrity sha512-K2efVG15NuswLUqesaiJTtAVKKdTq1mcR/4Fw/ZCuL9vv4E8GBhvNzV0WdhSB7frEphruTgwThfav3XCTGc0uw== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/api-base" "9.5.2" - "@polkadot/rpc-augment" "9.5.2" - "@polkadot/types" "9.5.2" - "@polkadot/types-augment" "9.5.2" - "@polkadot/types-codec" "9.5.2" + "@polkadot/api-base" "9.6.1" + "@polkadot/rpc-augment" "9.6.1" + "@polkadot/types" "9.6.1" + "@polkadot/types-augment" "9.6.1" + "@polkadot/types-codec" "9.6.1" "@polkadot/util" "^10.1.11" -"@polkadot/api-base@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-9.5.2.tgz#ac0a6b5546a54bcc753ac55c9f033caa9f8b4e5c" - integrity sha512-BBsH9SLB1FHgjdiU32cZX1puL3Eh8IjOJHjRsO/5SdttciQhF5g/u/m/mM/55qnlXmffI9s2Jre18G0XtVU9Aw== +"@polkadot/api-base@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-9.6.1.tgz#888d1fc86f9df830cd38bc2c102406ef3cd52034" + integrity sha512-dzVsBTw2YdSycQDjdf8N2ya905YIyqW2y2TCPBMSzm982llL7M6/AgkCxj/a+hbZgh6BE7Uqp5BiEk+c6h0hSQ== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/rpc-core" "9.5.2" - "@polkadot/types" "9.5.2" + "@polkadot/rpc-core" "9.6.1" + "@polkadot/types" "9.6.1" "@polkadot/util" "^10.1.11" rxjs "^7.5.7" -"@polkadot/api-derive@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-9.5.2.tgz#c0412cfc13fa71f93b315d126b12b5ab38e6438c" - integrity sha512-kWn12dlqfIES1trNLd3O1i2qa4T97v/co1VMCgVstICwCt3+mGZgpxkMqQqPiWHagKEVeBNoAn+h8eOiQlbujA== +"@polkadot/api-derive@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-9.6.1.tgz#2ae1ab5e0dd3882ac86c91bb63cb950b753802d1" + integrity sha512-z9lVNLlVRLVSHJQ0A5ir5OLITV19XDC9/TP6PYwKzBujmYXSf7tcYLCGF/roEuRzob+kIAiIvGuRkTs18VuuEQ== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/api" "9.5.2" - "@polkadot/api-augment" "9.5.2" - "@polkadot/api-base" "9.5.2" - "@polkadot/rpc-core" "9.5.2" - "@polkadot/types" "9.5.2" - "@polkadot/types-codec" "9.5.2" + "@polkadot/api" "9.6.1" + "@polkadot/api-augment" "9.6.1" + "@polkadot/api-base" "9.6.1" + "@polkadot/rpc-core" "9.6.1" + "@polkadot/types" "9.6.1" + "@polkadot/types-codec" "9.6.1" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" rxjs "^7.5.7" -"@polkadot/api@9.5.2", "@polkadot/api@^9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-9.5.2.tgz#cef83928e47c393fbebf2788bc86841b6ab37a41" - integrity sha512-iEF/E8vQan3fHmIEl3bX7Yn/1jQLlvSDwPOxiQdj4tIcF36HX6vCbkdhQKRif0CNYES58TA9EKFiCNg81k+kXw== +"@polkadot/api@9.6.1", "@polkadot/api@^9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-9.6.1.tgz#19e0076d52ad4f87706137f9b03517a22e6a4330" + integrity sha512-HWvxgm1ylZrE3afCpCbgIPZ9/qEgH25Osp+5G8gblp2PD20aiXJOwS2cjiIqLq+KPF8/ivU8zXHSBNtZJzToYA== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/api-augment" "9.5.2" - "@polkadot/api-base" "9.5.2" - "@polkadot/api-derive" "9.5.2" + "@polkadot/api-augment" "9.6.1" + "@polkadot/api-base" "9.6.1" + "@polkadot/api-derive" "9.6.1" "@polkadot/keyring" "^10.1.11" - "@polkadot/rpc-augment" "9.5.2" - "@polkadot/rpc-core" "9.5.2" - "@polkadot/rpc-provider" "9.5.2" - "@polkadot/types" "9.5.2" - "@polkadot/types-augment" "9.5.2" - "@polkadot/types-codec" "9.5.2" - "@polkadot/types-create" "9.5.2" - "@polkadot/types-known" "9.5.2" + "@polkadot/rpc-augment" "9.6.1" + "@polkadot/rpc-core" "9.6.1" + "@polkadot/rpc-provider" "9.6.1" + "@polkadot/types" "9.6.1" + "@polkadot/types-augment" "9.6.1" + "@polkadot/types-codec" "9.6.1" + "@polkadot/types-create" "9.6.1" + "@polkadot/types-known" "9.6.1" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" eventemitter3 "^4.0.7" @@ -2556,106 +2556,106 @@ "@polkadot/util" "10.1.11" "@substrate/ss58-registry" "^1.33.0" -"@polkadot/rpc-augment@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-9.5.2.tgz#739cc3ed2f86f4318432e38381a2cc780dc64f1e" - integrity sha512-QAcunC7p/T4xy6e4m0Q1c9tiVYxnm+S9o10tmtx0K4qXzrc/4I2/tsw3nEGi3BzJhvMpFondSQGcJ3gyLwpmVA== +"@polkadot/rpc-augment@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-9.6.1.tgz#bfa723fc2987414dc60e77900d6b00008299d242" + integrity sha512-K65Uk2uOAJiM7s0AtKXqmtimNNy7IYKT+waB8NXUxLbgJsWIQFZS7eIFblkIvi8vSPNRtURghvBqJx0cLf+0Ew== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/rpc-core" "9.5.2" - "@polkadot/types" "9.5.2" - "@polkadot/types-codec" "9.5.2" + "@polkadot/rpc-core" "9.6.1" + "@polkadot/types" "9.6.1" + "@polkadot/types-codec" "9.6.1" "@polkadot/util" "^10.1.11" -"@polkadot/rpc-core@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-9.5.2.tgz#1a00868038b6c07fe8f58bd0a6cc9519d14001cc" - integrity sha512-4PbNz0GEp3FXYOnsS7mDHZy9DNVBOl56fq8vs09rLkEkrrvGkHmCvabEEWL7OPbwBzwzsCxdgI+IdkVTUKXPkQ== +"@polkadot/rpc-core@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-9.6.1.tgz#8f212b5a3ba6db8bcaf4d87c3f0260e5f934e24a" + integrity sha512-ixjaTyRCzuZfdmFlyoMrMQ/tdtg3n7M7JI0qeIUJr+ikjOu/QhZ5QDAdOpruWEhyJTWp7suGUefJ/K3su0D+pQ== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/rpc-augment" "9.5.2" - "@polkadot/rpc-provider" "9.5.2" - "@polkadot/types" "9.5.2" + "@polkadot/rpc-augment" "9.6.1" + "@polkadot/rpc-provider" "9.6.1" + "@polkadot/types" "9.6.1" "@polkadot/util" "^10.1.11" rxjs "^7.5.7" -"@polkadot/rpc-provider@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-9.5.2.tgz#3e38ea4c3639180f12270b6fe8cbcabf728aaf1d" - integrity sha512-Sn2jfvAsvQcl35o0up8JR/XbDMS/3YVDEN2sFuzXtiD77W2njukItbZT+BolfAW+biAUs3bNomump5k/YLiLKg== +"@polkadot/rpc-provider@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-9.6.1.tgz#7861985a2cd443608b504e861d66d0cebd46e643" + integrity sha512-dG/qeIXDHYBotZ+xT6lurYClG0dPMmClfXTGteFoSv6nTWwi2nL3RoBWgJZHOSlJBExleenovDQXdOy2YmuiFQ== dependencies: "@babel/runtime" "^7.19.4" "@polkadot/keyring" "^10.1.11" - "@polkadot/types" "9.5.2" - "@polkadot/types-support" "9.5.2" + "@polkadot/types" "9.6.1" + "@polkadot/types-support" "9.6.1" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" "@polkadot/x-fetch" "^10.1.11" "@polkadot/x-global" "^10.1.11" "@polkadot/x-ws" "^10.1.11" - "@substrate/connect" "0.7.14" + "@substrate/connect" "0.7.15" eventemitter3 "^4.0.7" mock-socket "^9.1.5" nock "^13.2.9" -"@polkadot/types-augment@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-9.5.2.tgz#d9e77756b0e36455d708f5af8265ef011ddf8d91" - integrity sha512-LDJdv/84sECwA0R5lK85/orxjoozJe3+2jeLjRiKr8S6qm9XRfz0wLCSF866kpSGBZ4B1dYBUhzjoSu95y2Jug== +"@polkadot/types-augment@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-9.6.1.tgz#8d3cd23852d786e58d09741f8daad9c549335df0" + integrity sha512-ZS8XoaeiMpOO5Bbz+4hI5ynsd057kHT5pHZc8PIypQvE/slhzZyBKOW8+MblM4FIyVfR8owz/7nGpOX62zfMiA== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/types" "9.5.2" - "@polkadot/types-codec" "9.5.2" + "@polkadot/types" "9.6.1" + "@polkadot/types-codec" "9.6.1" "@polkadot/util" "^10.1.11" -"@polkadot/types-codec@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-9.5.2.tgz#345c38ccef17651b8cabd159a42810893b5e7e44" - integrity sha512-FJPjE3ceTGTcadeC8d5C+aSR8SLKuQrXKIBmMNBky+WwzEo0vufRqxFWcPLxAOEeeUPgBXS967tP15+UU4psGA== +"@polkadot/types-codec@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-9.6.1.tgz#d937a385636c4d9b29e59cfb9582b55e31421132" + integrity sha512-fgrD9yKVVHMyw26VORE+VR2hEnyVa5g5krK3Xv4l6rVGWYYE/vcmsuelZIPM0Glzc5K/2nA72s4Yv5/V8Sk1gA== dependencies: "@babel/runtime" "^7.19.4" "@polkadot/util" "^10.1.11" "@polkadot/x-bigint" "^10.1.11" -"@polkadot/types-create@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-9.5.2.tgz#a85dcb794ea11e5d528baa34b65e57cfafc905cf" - integrity sha512-YbplL8K0LqUEHoV3FgZ5B83oVV67KGbLXsWHVVaUZBPsmtXJXrbBfSyJgl/80I2n4lXEBmg3sFAYMbaSTvL05A== +"@polkadot/types-create@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-9.6.1.tgz#689f5b7f2e3aac2c1248455bf3a6f6e3ca2e286e" + integrity sha512-xxkoyq44CnXOjI4ieJtyh4PFRL+ALmVadHvvNuU2C0dwvGGYMxUeISw2O1vFssW0MzyZU7ZI6BY9FkVFZKCnkA== dependencies: "@babel/runtime" "^7.19.4" - "@polkadot/types-codec" "9.5.2" + "@polkadot/types-codec" "9.6.1" "@polkadot/util" "^10.1.11" -"@polkadot/types-known@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-9.5.2.tgz#a71fd08932b1643bbf346321472ed48ab1ade215" - integrity sha512-iNaGOF6dGiTvy3Ns8Z7WNjYD1SGnZiapDAKPH4brPuJqMpN6/FxYpfPSSOKx+IJEamsdINcaggb87eWyPxH8CA== +"@polkadot/types-known@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-9.6.1.tgz#a96b05156a145d350f749752fa7d980d6b1dcc89" + integrity sha512-D5Cc3VikkGnZmVbeNEgksgimdYQY/+pdrSr0xzAd2vZV0WBN17UmrXQ2EKGxEhITqt9n75Zsemh0oTIEOuc1WA== dependencies: "@babel/runtime" "^7.19.4" "@polkadot/networks" "^10.1.11" - "@polkadot/types" "9.5.2" - "@polkadot/types-codec" "9.5.2" - "@polkadot/types-create" "9.5.2" + "@polkadot/types" "9.6.1" + "@polkadot/types-codec" "9.6.1" + "@polkadot/types-create" "9.6.1" "@polkadot/util" "^10.1.11" -"@polkadot/types-support@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-9.5.2.tgz#f2990d19cbd78c24e5b7116466fb1d89f93a8ca7" - integrity sha512-Zdbl5fvGQjUkyE1r67vhyPEqLUwlZ35GCnkoobY9MgN6gylhSjNue/shpG4uGsEjWVQL7GkFkrPiwtzDArVilg== +"@polkadot/types-support@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-9.6.1.tgz#cd6f05a97b287e538e79fcc037b634e79bf1023b" + integrity sha512-4cfDbH6YTJ2dL8qYyBjMaJiAG8SQTUiTBtmymWDP58StgMtcOtDk2DByp0Nt3kWFH6/IhYGin3QZ1M00xdynAA== dependencies: "@babel/runtime" "^7.19.4" "@polkadot/util" "^10.1.11" -"@polkadot/types@9.5.2": - version "9.5.2" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-9.5.2.tgz#33ab2caea08f084141a01038adbe53ed69ab7d9c" - integrity sha512-6C5xzOrMK+fu0JMOlSO+8dPDhpwKPOaKMv3v5BMvBEWtDNKM81/QQoAoYT7DSVXq/V16icSFxPs9IWC+6Qq5ag== +"@polkadot/types@9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-9.6.1.tgz#3e1fadfc678a90fb33d043da759435870b69e87c" + integrity sha512-HzWRW6715xxZ5pIB25idkeTtBMKfMVGk+D2lHl2eKiGQiTbo0m13HoSJAS9cR4kZeimMI8j+i2wpFysjW84Jlw== dependencies: "@babel/runtime" "^7.19.4" "@polkadot/keyring" "^10.1.11" - "@polkadot/types-augment" "9.5.2" - "@polkadot/types-codec" "9.5.2" - "@polkadot/types-create" "9.5.2" + "@polkadot/types-augment" "9.6.1" + "@polkadot/types-codec" "9.6.1" + "@polkadot/types-create" "9.6.1" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" rxjs "^7.5.7" @@ -3016,19 +3016,19 @@ resolved "https://registry.yarnpkg.com/@substrate/connect-extension-protocol/-/connect-extension-protocol-1.0.1.tgz#fa5738039586c648013caa6a0c95c43265dbe77d" integrity sha512-161JhCC1csjH3GE5mPLEd7HbWtwNSPJBg3p1Ksz9SFlTzj/bgEwudiRN2y5i0MoLGCIJRYKyKGMxVnd29PzNjg== -"@substrate/connect@0.7.14": - version "0.7.14" - resolved "https://registry.yarnpkg.com/@substrate/connect/-/connect-0.7.14.tgz#c090e952e9cdd93185a94d24fbc424ea20fe7bbe" - integrity sha512-uW5uBmihpivshmmmw+rsg7qOV0KqVSep4rWOXFMP8aFQinvmqw4JqxP21og4H/7JZxttYUBFQVsdtXHGKJ0aVQ== +"@substrate/connect@0.7.15": + version "0.7.15" + resolved "https://registry.yarnpkg.com/@substrate/connect/-/connect-0.7.15.tgz#64b52bb1035a4ee24a521441f44cf46d92216540" + integrity sha512-dGE7oCXn+3LDlSKJ29ae1SmnpkMBakaYrN8muAB+w9Gx11dNM1mHssuEwsgudLA1S6Dt4NIu7d6qlZ+OjHGlYA== dependencies: "@substrate/connect-extension-protocol" "^1.0.1" - "@substrate/smoldot-light" "0.6.34" + "@substrate/smoldot-light" "0.7.2" eventemitter3 "^4.0.7" -"@substrate/smoldot-light@0.6.34": - version "0.6.34" - resolved "https://registry.yarnpkg.com/@substrate/smoldot-light/-/smoldot-light-0.6.34.tgz#273dba622102281fd0fdb0e375198bff2ec584c3" - integrity sha512-+HK9MaJ0HelJmpf4YYR+salJ7dhVBltmhGlyz5l8OXS9DW18fe0Z2wxEo8P5kX9CUxlCXEb8J9JBRQAYBPHbwQ== +"@substrate/smoldot-light@0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@substrate/smoldot-light/-/smoldot-light-0.7.2.tgz#5723f9b8c95b4a5c1b555462452d07f7f1523e71" + integrity sha512-AweZghbBOUiEf/dlNCVLDcDUy3qkjWuSmKfFZYBeV/CbkN73tJAJSBzOy4MVl3WM8cLDUOxDmc6uy8+5/IhmDA== dependencies: pako "^2.0.4" ws "^8.8.1" From ff9f2231208d13451fb41201b46d366b3e5efb6e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 17:20:57 +0200 Subject: [PATCH 17/35] Bump immer from 9.0.15 to 9.0.16 (#3981) Bumps [immer](https://github.com/immerjs/immer) from 9.0.15 to 9.0.16. - [Release notes](https://github.com/immerjs/immer/releases) - [Commits](https://github.com/immerjs/immer/compare/v9.0.15...v9.0.16) --- updated-dependencies: - dependency-name: immer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index ae052afcfdbf..78f93bc2a02a 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,7 @@ "crowdin-cli": "^0.3.0", "css-what": "^6.1.0", "glob-parent": "^6.0.2", - "immer": "^9.0.15", + "immer": "^9.0.16", "node-fetch": "^3.2.10", "node-forge": "^1.3.1", "nth-check": "^2.1.1", diff --git a/yarn.lock b/yarn.lock index e2d0f4e76769..f08573e720f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6935,10 +6935,10 @@ image-size@^1.0.1: dependencies: queue "6.0.2" -immer@^9.0.15, immer@^9.0.7: - version "9.0.15" - resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" - integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== +immer@^9.0.16, immer@^9.0.7: + version "9.0.16" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.16.tgz#8e7caab80118c2b54b37ad43e05758cdefad0198" + integrity sha512-qenGE7CstVm1NrHQbMh8YaSzTZTFNP3zPqr3YU0S0UY441j4bJTg4A2Hh5KAhwgaiU6ZZ1Ar6y/2f4TblnMReQ== import-fresh@^3.1.0, import-fresh@^3.2.1, import-fresh@^3.3.0: version "3.3.0" From 126936ee68e4aa739a5a593463956706174c71c3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Oct 2022 17:23:26 +0200 Subject: [PATCH 18/35] Bump katex from 0.16.2 to 0.16.3 (#3980) Bumps [katex](https://github.com/KaTeX/KaTeX) from 0.16.2 to 0.16.3. - [Release notes](https://github.com/KaTeX/KaTeX/releases) - [Changelog](https://github.com/KaTeX/KaTeX/blob/main/CHANGELOG.md) - [Commits](https://github.com/KaTeX/KaTeX/compare/v0.16.2...v0.16.3) --- updated-dependencies: - dependency-name: katex dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 78f93bc2a02a..bc63fec0edf1 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "ipfs-http-client": "^57.0.3", "jest": "^29.2.1", "jest-environment-jsdom": "^29.2.1", - "katex": "^0.16.2", + "katex": "^0.16.3", "loud-rejection": "^2.2.0", "mr-pdf": "^1.1.0", "npm-run-all": "^4.1.5", diff --git a/yarn.lock b/yarn.lock index f08573e720f0..e8cde2a2dddb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8131,10 +8131,10 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" -katex@^0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.2.tgz#9d3dc2a7e65fb8aa31101b1f86888ec40eed7b24" - integrity sha512-70DJdQAyh9EMsthw3AaQlDyFf54X7nWEUIa5W+rq8XOpEk//w5Th7/8SqFqpvi/KZ2t6MHUj4f9wLmztBmAYQA== +katex@^0.16.3: + version "0.16.3" + resolved "https://registry.yarnpkg.com/katex/-/katex-0.16.3.tgz#29640560b8fa0403e45f3aa20da5fdbb6d2b83a8" + integrity sha512-3EykQddareoRmbtNiNEDgl3IGjryyrp2eg/25fHDEnlHymIDi33bptkMv6K4EOC2LZCybLW/ZkEo6Le+EM9pmA== dependencies: commander "^8.0.0" From b5251ddfba2ecb833ce009e7d6dd708343bff31d Mon Sep 17 00:00:00 2001 From: David Hawig Date: Mon, 24 Oct 2022 17:24:50 +0200 Subject: [PATCH 19/35] Adding Polkadot Basic Notifications (#3983) * Adding Polkadot Basic Notifications Adding Polkadot Basic Notifications to the tech stack * Add status badge Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index ebc044431cd6..3525090b570b 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -110,7 +110,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Testnet | [Polkadot Launch](https://github.com/paritytech/polkadot-launch) 🟡, [polkadot-starship](https://github.com/koute/polkadot-starship) 🔴, [Fork off Substrate](https://github.com/maxsam4/fork-off-substrate) 🔴, [Parachain Launch](https://github.com/open-web3-stack/parachain-launch) 🟢| | Benchmarking | [Clockchain](https://github.com/0xekez/clockchain) 🔴, [Substrate Graph Benchmarks](https://github.com/shawntabrizi/substrate-graph-benchmarks) 🔴| | Blockchain Indexing Engine | [Substrate Archive](https://github.com/paritytech/substrate-archive) 🟡, [PSQL Indexer](https://github.com/usetech-llc/polkadot_psql_indexer) 🔴, [Substrate Graph](https://github.com/playzero/substrate-graph) 🔴, [Hydra](https://github.com/subsquid/hydra) 🔴, [Subquery](https://github.com/OnFinality-io/subql) 🟢, [Polkadot Profit Transformer](https://github.com/p2p-org/polkadot-profit-transformer) 🟡| -| Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🔴, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡| +| Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🔴, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡, [Polkadot Basic Notifications](https://github.com/kianenigma/polkadot-basic-notification) 🟢| | Gaming | [Crossbow](https://github.com/dodorare/crossbow) 🟢| [Amethyst](https://amethyst.rs/) + [Substrate](https://substrate.dev/) | | No-code Platforms | [EzCode's Polkadot.js plugin on Bubble.io](https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js) 🔴, [Blackprint Visual Programming Polkadot.js module](https://github.com/Blackprint/nodes-polkadot.js) 🟢| | | XCM | [XCM-tools](https://github.com/PureStake/xcm-tools) 🟢, [ParaSpell](https://github.com/dudo50/ParaSpell) 🟢, [XBI](https://github.com/t3rn/xbi) 🟢| | From 968c552a5674cd6c05c23a64a61691c3a48614b9 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Tue, 25 Oct 2022 10:34:22 +0200 Subject: [PATCH 20/35] Improve Staking Miner intro (#3973) * Improve Staking Miner intro - Add links to NPoS and Offchain workers - Run grammarly - fix typos * Update docs/learn/learn-staking-miner.md Co-authored-by: Emre Surmeli Co-authored-by: Emre Surmeli --- docs/learn/learn-staking-miner.md | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/docs/learn/learn-staking-miner.md b/docs/learn/learn-staking-miner.md index 087bf39232e9..cb5e4f5efe80 100644 --- a/docs/learn/learn-staking-miner.md +++ b/docs/learn/learn-staking-miner.md @@ -11,20 +11,25 @@ import RPC from "./../../components/RPC-Connection"; :::caution -The staking-miner code is experimental and it is still in development phase. Use is at your own +The staking-miner code is experimental and it is still in the development phase. Use is at your own discretion, as there is a risk of losing some funds. ::: -The staking miner is a passive validator functionality which runs when a new set of validators need -to be elected for NPoS. This is a computationally intense process, hence the mining. Staking miners -compete with each other to produce election solutions which consist of a validator set, stake -distribution across that set, and a score indicating how optimal the solution is. Staking miners run -the any given staking algortihms(as of now, sequential Phragmén or PhragMMS, this is subject to -change if improved algorithms are introduced) to produce results, and the result is then sent as a -transaction to the relay chain via a normal signed extrinsic. The transaction requires a bond, and a -transaction fee. The best solution is rewarded which in the least covers the transaction fee, and -the bond is returned to the account. If the solution is not valid, the bond and the fee are lost. +At the end of each era on Polkadot and Kusama, using [NPoS](learn-phragmen), a new set of validators +must be elected based on the nominator preferences. This is a computationally intensive process, hence +the usage of the term "mining" for computing the solution. The validators use +[off-chain workers](https://docs.substrate.io/reference/how-to-guides/offchain-workers/) to +compute the result and submit a transaction to propose the set of winners. This can also be delegated +to stand-alone programs, whose task is to mine the optimal solution. Staking miners compete with each other +to produce election solutions which consist of a validator set, stake distribution across that set, and a score +indicating how optimal the solution is. Staking miners run any given staking algorithms (as of now, +sequential Phragmén or PhragMMS, subject to change if improved algorithms are introduced) to produce results, +which are then sent as a transaction to the relay chain via a normal signed extrinsic. The transaction +requires a bond and a transaction fee. The best solution is rewarded, which the least covers the +transaction fee, and the bond is returned to the account. The bond and the fee are lost if the solution +is invalid. + Staking miner uses a pallet called `pallet_election_provider_multi_phase` and can only produce solutions during the From 2ebbf8a2de597ad182cc120cef01dfa7485ff4b1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Oct 2022 21:01:36 +0200 Subject: [PATCH 21/35] Bump jest from 29.2.1 to 29.2.2 (#3984) Bumps [jest](https://github.com/facebook/jest/tree/HEAD/packages/jest) from 29.2.1 to 29.2.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.2/packages/jest) --- updated-dependencies: - dependency-name: jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 335 ++++++++++++++++++++++++++++----------------------- 2 files changed, 184 insertions(+), 153 deletions(-) diff --git a/package.json b/package.json index bc63fec0edf1..9e9f41da60e3 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "fs-extra": "^10.1.0", "husky": "^8.0.1", "ipfs-http-client": "^57.0.3", - "jest": "^29.2.1", + "jest": "^29.2.2", "jest-environment-jsdom": "^29.2.1", "katex": "^0.16.3", "loud-rejection": "^2.2.0", diff --git a/yarn.lock b/yarn.lock index e8cde2a2dddb..be289579442e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1874,15 +1874,15 @@ jest-util "^29.2.1" slash "^3.0.0" -"@jest/core@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.1.tgz#30af794ebd73bfb87cd8ba36718738dfe38b772e" - integrity sha512-kuLKYqnqgerXkBUwlHVxeSuhSnd+JMnMCLfU98bpacBSfWEJPegytDh3P2m15/JHzet32hGGld4KR4OzMb6/Tg== +"@jest/core@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.2.2.tgz#207aa8973d9de8769f9518732bc5f781efc3ffa7" + integrity sha512-susVl8o2KYLcZhhkvSB+b7xX575CX3TmSvxfeDjpRko7KmT89rHkXj6XkDkNpSeFMBzIENw5qIchO9HC9Sem+A== dependencies: "@jest/console" "^29.2.1" - "@jest/reporters" "^29.2.1" + "@jest/reporters" "^29.2.2" "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.1" + "@jest/transform" "^29.2.2" "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" @@ -1891,18 +1891,18 @@ exit "^0.1.2" graceful-fs "^4.2.9" jest-changed-files "^29.2.0" - jest-config "^29.2.1" + jest-config "^29.2.2" jest-haste-map "^29.2.1" jest-message-util "^29.2.1" jest-regex-util "^29.2.0" - jest-resolve "^29.2.1" - jest-resolve-dependencies "^29.2.1" - jest-runner "^29.2.1" - jest-runtime "^29.2.1" - jest-snapshot "^29.2.1" + jest-resolve "^29.2.2" + jest-resolve-dependencies "^29.2.2" + jest-runner "^29.2.2" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" jest-util "^29.2.1" - jest-validate "^29.2.1" - jest-watcher "^29.2.1" + jest-validate "^29.2.2" + jest-watcher "^29.2.2" micromatch "^4.0.4" pretty-format "^29.2.1" slash "^3.0.0" @@ -1918,20 +1918,30 @@ "@types/node" "*" jest-mock "^29.2.1" -"@jest/expect-utils@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.1.tgz#eae61c90f2066540f60d23b8f254f03b7869b22f" - integrity sha512-yr4aHNg5Z1CjKby5ozm7sKjgBlCOorlAoFcvrOQ/4rbZRfgZQdnmh7cth192PYIgiPZo2bBXvqdOApnAMWFJZg== +"@jest/environment@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.2.tgz#481e729048d42e87d04842c38aa4d09c507f53b0" + integrity sha512-OWn+Vhu0I1yxuGBJEFFekMYc8aGBGrY4rt47SOh/IFaI+D7ZHCk7pKRiSoZ2/Ml7b0Ony3ydmEHRx/tEOC7H1A== + dependencies: + "@jest/fake-timers" "^29.2.2" + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-mock "^29.2.2" + +"@jest/expect-utils@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.2.2.tgz#460a5b5a3caf84d4feb2668677393dd66ff98665" + integrity sha512-vwnVmrVhTmGgQzyvcpze08br91OL61t9O0lJMDyb6Y/D8EKQ9V7rGUb/p7PDt0GPzK0zFYqXWFo4EO2legXmkg== dependencies: jest-get-type "^29.2.0" -"@jest/expect@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.1.tgz#8d99be3886ebfcffd6cabb2b46602a301b976ffe" - integrity sha512-o14R2t2tHHHudwji43UKkzmmH49xfF5T++FQBK2tl88qwuBWQOcx7fNUYl+mA/9TPNAN0FkQ3usnpyS8FUwsvQ== +"@jest/expect@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.2.2.tgz#81edbd33afbde7795ca07ff6b4753d15205032e4" + integrity sha512-zwblIZnrIVt8z/SiEeJ7Q9wKKuB+/GS4yZe9zw7gMqfGf4C5hBLGrVyxu1SzDbVSqyMSlprKl3WL1r80cBNkgg== dependencies: - expect "^29.2.1" - jest-snapshot "^29.2.1" + expect "^29.2.2" + jest-snapshot "^29.2.2" "@jest/fake-timers@^29.2.1": version "29.2.1" @@ -1945,25 +1955,37 @@ jest-mock "^29.2.1" jest-util "^29.2.1" -"@jest/globals@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.2.1.tgz#6933beb8b4e43b990409a19c462fde7b71210e63" - integrity sha512-Z4EejYPP1OPVq2abk1+9urAwJqkgw5jB2UJGlPjb5ZwzPQF8WLMcigKEfFzZb2OHhEVPP0RZD0/DbVTY1R6iQA== +"@jest/fake-timers@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.2.tgz#d8332e6e3cfa99cde4bc87d04a17d6b699deb340" + integrity sha512-nqaW3y2aSyZDl7zQ7t1XogsxeavNpH6kkdq+EpXncIDvAkjvFD7hmhcIs1nWloengEWUoWqkqSA6MSbf9w6DgA== dependencies: - "@jest/environment" "^29.2.1" - "@jest/expect" "^29.2.1" "@jest/types" "^29.2.1" - jest-mock "^29.2.1" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^29.2.1" + jest-mock "^29.2.2" + jest-util "^29.2.1" -"@jest/reporters@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.1.tgz#599e4376823751fdda50f2ca97243e013da10c4d" - integrity sha512-sCsfUKM/yIF4nNed3e/rIgVIS58EiASGMDEPWqItfLZ9UO1ALW2ASDNJzdWkxEt0T8o2Ztj619G0KKrvK+McAw== +"@jest/globals@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.2.2.tgz#205ff1e795aa774301c2c0ba0be182558471b845" + integrity sha512-/nt+5YMh65kYcfBhj38B3Hm0Trk4IsuMXNDGKE/swp36yydBWfz3OXkLqkSvoAtPW8IJMSJDFCbTM2oj5SNprw== + dependencies: + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" + "@jest/types" "^29.2.1" + jest-mock "^29.2.2" + +"@jest/reporters@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.2.2.tgz#69b395f79c3a97ce969ce05ccf1a482e5d6de290" + integrity sha512-AzjL2rl2zJC0njIzcooBvjA4sJjvdoq98sDuuNs4aNugtLPSQ+91nysGKRF0uY1to5k0MdGMdOBggUsPqvBcpA== dependencies: "@bcoe/v8-coverage" "^0.2.3" "@jest/console" "^29.2.1" "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.1" + "@jest/transform" "^29.2.2" "@jest/types" "^29.2.1" "@jridgewell/trace-mapping" "^0.3.15" "@types/node" "*" @@ -2018,20 +2040,20 @@ "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.1.tgz#cafd2c5f3528c70bd4cc243800459ac366e480cc" - integrity sha512-O/pnk0/xGj3lxPVNwB6HREJ7AYvUdyP2xo/s14/9Dtf091HoOeyIhWLKQE/4HzB8lNQBMo6J5mg0bHz/uCWK7w== +"@jest/test-sequencer@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.2.2.tgz#4ac7487b237e517a1f55e7866fb5553f6e0168b9" + integrity sha512-Cuc1znc1pl4v9REgmmLf0jBd3Y65UXJpioGYtMr/JNpQEIGEzkmHhy6W6DLbSsXeUA13TDzymPv0ZGZ9jH3eIw== dependencies: "@jest/test-result" "^29.2.1" graceful-fs "^4.2.9" jest-haste-map "^29.2.1" slash "^3.0.0" -"@jest/transform@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.1.tgz#f3d8154edd19cdbcaf1d6646bd8f4ff7812318a2" - integrity sha512-xup+iEuaIRSQabQaeqxaQyN0vg1Dctrp9oTObQsNf3sZEowTIa5cANYuoyi8Tqhg4GCqEVLTf18KW7ii0UeFVA== +"@jest/transform@^29.2.2": + version "29.2.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.2.2.tgz#dfc03fc092b31ffea0c55917728e75bfcf8b5de6" + integrity sha512-aPe6rrletyuEIt2axxgdtxljmzH8O/nrov4byy6pDw9S8inIrTV+2PnjyP/oFHMSynzGxJ2s6OHowBNMXp/Jzg== dependencies: "@babel/core" "^7.11.6" "@jest/types" "^29.2.1" @@ -4107,12 +4129,12 @@ axios@^1.1.3: form-data "^4.0.0" proxy-from-env "^1.1.0" -babel-jest@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.1.tgz#213c47e28072de11bdb98c9d29b89f2ab99664f1" - integrity sha512-gQJwArok0mqoREiCYhXKWOgUhElJj9DpnssW6GL8dG7ARYqHEhrM9fmPHTjdqEGRVXZAd6+imo3/Vwa8TjLcsw== +babel-jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.2.2.tgz#2c15abd8c2081293c9c3f4f80a4ed1d51542fee5" + integrity sha512-kkq2QSDIuvpgfoac3WZ1OOcHsQQDU5xYk2Ql7tLdJ8BVAYbefEXal+NfS45Y5LVZA7cxC8KYcQMObpCt1J025w== dependencies: - "@jest/transform" "^29.2.1" + "@jest/transform" "^29.2.2" "@types/babel__core" "^7.1.14" babel-plugin-istanbul "^6.1.1" babel-preset-jest "^29.2.0" @@ -5638,10 +5660,10 @@ electron-to-chromium@^1.4.251: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.251.tgz#8b62448f3c591f0d32488df09454dda72dec96d5" integrity sha512-k4o4cFrWPv4SoJGGAydd07GmlRVzmeDIJ6MaEChTUjk4Dmomn189tCicSzil2oyvbPoGgg2suwPDNWq4gWRhoQ== -emittery@^0.10.2: - version "0.10.2" - resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" - integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== +emittery@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.13.1.tgz#c04b8c3457490e0847ae51fced3af52d338e3dad" + integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ== emoji-regex@^8.0.0: version "8.0.0" @@ -5926,14 +5948,14 @@ exit@^0.1.2: resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== -expect@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.1.tgz#25752d0df92d3daa5188dc8804de1f30759658cf" - integrity sha512-BJtA754Fba0YWRWHgjKUMTA3ltWarKgITXHQnbZ2mTxTXC4yMQlR0FI7HkB3fJYkhWBf4qjNiqvg3LDtXCcVRQ== +expect@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-29.2.2.tgz#ba2dd0d7e818727710324a6e7f13dd0e6d086106" + integrity sha512-hE09QerxZ5wXiOhqkXy5d2G9ar+EqOyifnCXCpMNu+vZ6DG9TJ6CO2c2kPDSLqERTTWrO7OZj8EkYHQqSd78Yw== dependencies: - "@jest/expect-utils" "^29.2.1" + "@jest/expect-utils" "^29.2.2" jest-get-type "^29.2.0" - jest-matcher-utils "^29.2.1" + jest-matcher-utils "^29.2.2" jest-message-util "^29.2.1" jest-util "^29.2.1" @@ -7592,13 +7614,13 @@ jest-changed-files@^29.2.0: execa "^5.0.0" p-limit "^3.1.0" -jest-circus@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.2.1.tgz#1385353d9bca6acf58f916068bbeffcfc95bef02" - integrity sha512-W+ZQQ5ln4Db2UZNM4NJIeasnhCdDhSuYW4eLgNAUi0XiSSpF634Kc5wiPvGiHvTgXMFVn1ZgWIijqhi9+kLNLg== +jest-circus@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.2.2.tgz#1dc4d35fd49bf5e64d3cc505fb2db396237a6dfa" + integrity sha512-upSdWxx+Mh4DV7oueuZndJ1NVdgtTsqM4YgywHEx05UMH5nxxA2Qu9T9T9XVuR021XxqSoaKvSmmpAbjwwwxMw== dependencies: - "@jest/environment" "^29.2.1" - "@jest/expect" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/expect" "^29.2.2" "@jest/test-result" "^29.2.1" "@jest/types" "^29.2.1" "@types/node" "*" @@ -7607,56 +7629,56 @@ jest-circus@^29.2.1: dedent "^0.7.0" is-generator-fn "^2.0.0" jest-each "^29.2.1" - jest-matcher-utils "^29.2.1" + jest-matcher-utils "^29.2.2" jest-message-util "^29.2.1" - jest-runtime "^29.2.1" - jest-snapshot "^29.2.1" + jest-runtime "^29.2.2" + jest-snapshot "^29.2.2" jest-util "^29.2.1" p-limit "^3.1.0" pretty-format "^29.2.1" slash "^3.0.0" stack-utils "^2.0.3" -jest-cli@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.2.1.tgz#fbfa90b87b27a04e1041cc9d33ee80f32e2f2528" - integrity sha512-UIMD5aNqvPKpdlJSaeUAoLfxsh9TZvOkaMETx5qXnkboc317bcbb0eLHbIj8sFBHdcJAIAM+IRKnIU7Wi61MBw== +jest-cli@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.2.2.tgz#feaf0aa57d327e80d4f2f18d5f8cd2e77cac5371" + integrity sha512-R45ygnnb2CQOfd8rTPFR+/fls0d+1zXS6JPYTBBrnLPrhr58SSuPTiA5Tplv8/PXpz4zXR/AYNxmwIj6J6nrvg== dependencies: - "@jest/core" "^29.2.1" + "@jest/core" "^29.2.2" "@jest/test-result" "^29.2.1" "@jest/types" "^29.2.1" chalk "^4.0.0" exit "^0.1.2" graceful-fs "^4.2.9" import-local "^3.0.2" - jest-config "^29.2.1" + jest-config "^29.2.2" jest-util "^29.2.1" - jest-validate "^29.2.1" + jest-validate "^29.2.2" prompts "^2.0.1" yargs "^17.3.1" -jest-config@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.2.1.tgz#2182af014d6c73978208626335db5134803dd183" - integrity sha512-EV5F1tQYW/quZV2br2o88hnYEeRzG53Dfi6rSG3TZBuzGQ6luhQBux/RLlU5QrJjCdq3LXxRRM8F1LP6DN1ycA== +jest-config@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.2.2.tgz#bf98623a46454d644630c1f0de8bba3f495c2d59" + integrity sha512-Q0JX54a5g1lP63keRfKR8EuC7n7wwny2HoTRDb8cx78IwQOiaYUVZAdjViY3WcTxpR02rPUpvNVmZ1fkIlZPcw== dependencies: "@babel/core" "^7.11.6" - "@jest/test-sequencer" "^29.2.1" + "@jest/test-sequencer" "^29.2.2" "@jest/types" "^29.2.1" - babel-jest "^29.2.1" + babel-jest "^29.2.2" chalk "^4.0.0" ci-info "^3.2.0" deepmerge "^4.2.2" glob "^7.1.3" graceful-fs "^4.2.9" - jest-circus "^29.2.1" - jest-environment-node "^29.2.1" + jest-circus "^29.2.2" + jest-environment-node "^29.2.2" jest-get-type "^29.2.0" jest-regex-util "^29.2.0" - jest-resolve "^29.2.1" - jest-runner "^29.2.1" + jest-resolve "^29.2.2" + jest-runner "^29.2.2" jest-util "^29.2.1" - jest-validate "^29.2.1" + jest-validate "^29.2.2" micromatch "^4.0.4" parse-json "^5.2.0" pretty-format "^29.2.1" @@ -7715,16 +7737,16 @@ jest-environment-jsdom@^29.2.1: jest-util "^29.2.1" jsdom "^20.0.0" -jest-environment-node@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.1.tgz#f90311d0f0e8ef720349f83c97a076e403f90665" - integrity sha512-PulFKwEMz6nTAdLUwglFKei3b/LixwlRiqTN6nvPE1JtrLtlnpd6LXnFI1NFHYJGlTmIWilMP2n9jEtPPKX50g== +jest-environment-node@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.2.2.tgz#a64b272773870c3a947cd338c25fd34938390bc2" + integrity sha512-B7qDxQjkIakQf+YyrqV5dICNs7tlCO55WJ4OMSXsqz1lpI/0PmeuXdx2F7eU8rnPbRkUR/fItSSUh0jvE2y/tw== dependencies: - "@jest/environment" "^29.2.1" - "@jest/fake-timers" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" "@jest/types" "^29.2.1" "@types/node" "*" - jest-mock "^29.2.1" + jest-mock "^29.2.2" jest-util "^29.2.1" jest-get-type@^28.0.2: @@ -7774,10 +7796,10 @@ jest-matcher-utils@^28.0.0: jest-get-type "^28.0.2" pretty-format "^28.1.3" -jest-matcher-utils@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.1.tgz#2bf876c5f891b33786aadf5d65d5da5970744122" - integrity sha512-hUTBh7H/Mnb6GTpihbLh8uF5rjAMdekfW/oZNXUMAXi7bbmym2HiRpzgqf/zzkjgejMrVAkPdVSQj+32enlUww== +jest-matcher-utils@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.2.2.tgz#9202f8e8d3a54733266784ce7763e9a08688269c" + integrity sha512-4DkJ1sDPT+UX2MR7Y3od6KtvRi9Im1ZGLGgdLFLm4lPexbTaCgJW5NN3IOXlQHF7NSHY/VHhflQ+WoKtD/vyCw== dependencies: chalk "^4.0.0" jest-diff "^29.2.1" @@ -7808,6 +7830,15 @@ jest-mock@^29.2.1: "@types/node" "*" jest-util "^29.2.1" +jest-mock@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.2.tgz#9045618b3f9d27074bbcf2d55bdca6a5e2e8bca7" + integrity sha512-1leySQxNAnivvbcx0sCB37itu8f4OX2S/+gxLAV4Z62shT4r4dTG9tACDywUAEZoLSr36aYUTsVp3WKwWt4PMQ== + dependencies: + "@jest/types" "^29.2.1" + "@types/node" "*" + jest-util "^29.2.1" + jest-pnp-resolver@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" @@ -7818,67 +7849,67 @@ jest-regex-util@^29.2.0: resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.2.0.tgz#82ef3b587e8c303357728d0322d48bbfd2971f7b" integrity sha512-6yXn0kg2JXzH30cr2NlThF+70iuO/3irbaB4mh5WyqNIvLLP+B6sFdluO1/1RJmslyh/f9osnefECflHvTbwVA== -jest-resolve-dependencies@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.1.tgz#8d717dd41dc615fef1d412d395ea3deccfb1b9fa" - integrity sha512-o3mUGX2j08usj1jIAIE8KmUVpqVAn54k80kI27ldbZf2oJn6eghhB6DvJxjrcH40va9CQgWTfU5f2Ag/MoUqgQ== +jest-resolve-dependencies@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.2.2.tgz#1f444766f37a25f1490b5137408b6ff746a05d64" + integrity sha512-wWOmgbkbIC2NmFsq8Lb+3EkHuW5oZfctffTGvwsA4JcJ1IRk8b2tg+hz44f0lngvRTeHvp3Kyix9ACgudHH9aQ== dependencies: jest-regex-util "^29.2.0" - jest-snapshot "^29.2.1" + jest-snapshot "^29.2.2" -jest-resolve@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.2.1.tgz#a4d2f76db88aeb6ec5f5453c9a40b52483d17799" - integrity sha512-1dJTW76Z9622Viq4yRcwBuEXuzGtE9B2kdl05RC8Om/lAzac9uEgC+M8Q5osVidbuBPmxm8wSrcItYhca2ZAtQ== +jest-resolve@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.2.2.tgz#ad6436053b0638b41e12bbddde2b66e1397b35b5" + integrity sha512-3gaLpiC3kr14rJR3w7vWh0CBX2QAhfpfiQTwrFPvVrcHe5VUBtIXaR004aWE/X9B2CFrITOQAp5gxLONGrk6GA== dependencies: chalk "^4.0.0" graceful-fs "^4.2.9" jest-haste-map "^29.2.1" jest-pnp-resolver "^1.2.2" jest-util "^29.2.1" - jest-validate "^29.2.1" + jest-validate "^29.2.2" resolve "^1.20.0" resolve.exports "^1.1.0" slash "^3.0.0" -jest-runner@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.2.1.tgz#885afe64661cb2f51f84c1b97afb713d1093c124" - integrity sha512-PojFI+uVhQ4u4YZKCN/a3yU0/l/pJJXhq1sW3JpCp8CyvGBYGddRFPKZ1WihApusxqWRTHjBJmGyPWv6Av2lWA== +jest-runner@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.2.2.tgz#6b5302ed15eba8bf05e6b14d40f1e8d469564da3" + integrity sha512-1CpUxXDrbsfy9Hr9/1zCUUhT813kGGK//58HeIw/t8fa/DmkecEwZSWlb1N/xDKXg3uCFHQp1GCvlSClfImMxg== dependencies: "@jest/console" "^29.2.1" - "@jest/environment" "^29.2.1" + "@jest/environment" "^29.2.2" "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.1" + "@jest/transform" "^29.2.2" "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" - emittery "^0.10.2" + emittery "^0.13.1" graceful-fs "^4.2.9" jest-docblock "^29.2.0" - jest-environment-node "^29.2.1" + jest-environment-node "^29.2.2" jest-haste-map "^29.2.1" jest-leak-detector "^29.2.1" jest-message-util "^29.2.1" - jest-resolve "^29.2.1" - jest-runtime "^29.2.1" + jest-resolve "^29.2.2" + jest-runtime "^29.2.2" jest-util "^29.2.1" - jest-watcher "^29.2.1" + jest-watcher "^29.2.2" jest-worker "^29.2.1" p-limit "^3.1.0" source-map-support "0.5.13" -jest-runtime@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.2.1.tgz#62e3a23c33710ae4d9c3304dda851a5fb225b574" - integrity sha512-PSQ880OoIW9y8E6/jjhGn3eQNgNc6ndMzCZaKqy357bv7FqCfSyYepu3yDC6Sp1Vkt+GhP2M/PVgldS2uZSFZg== +jest-runtime@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.2.2.tgz#4068ee82423769a481460efd21d45a8efaa5c179" + integrity sha512-TpR1V6zRdLynckKDIQaY41od4o0xWL+KOPUCZvJK2bu5P1UXhjobt5nJ2ICNeIxgyj9NGkO0aWgDqYPVhDNKjA== dependencies: - "@jest/environment" "^29.2.1" - "@jest/fake-timers" "^29.2.1" - "@jest/globals" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" + "@jest/globals" "^29.2.2" "@jest/source-map" "^29.2.0" "@jest/test-result" "^29.2.1" - "@jest/transform" "^29.2.1" + "@jest/transform" "^29.2.2" "@jest/types" "^29.2.1" "@types/node" "*" chalk "^4.0.0" @@ -7888,18 +7919,18 @@ jest-runtime@^29.2.1: graceful-fs "^4.2.9" jest-haste-map "^29.2.1" jest-message-util "^29.2.1" - jest-mock "^29.2.1" + jest-mock "^29.2.2" jest-regex-util "^29.2.0" - jest-resolve "^29.2.1" - jest-snapshot "^29.2.1" + jest-resolve "^29.2.2" + jest-snapshot "^29.2.2" jest-util "^29.2.1" slash "^3.0.0" strip-bom "^4.0.0" -jest-snapshot@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.1.tgz#f3843b3099c8fec7e6218dea18cc506f10ea5d30" - integrity sha512-KZdLD7iEz5M4ZYd+ezZ/kk73z+DtNbk/yJ4Qx7408Vb0CCuclJIZPa/HmIwSsCfIlOBNcYTKufr7x/Yv47oYlg== +jest-snapshot@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.2.2.tgz#1016ce60297b77382386bad561107174604690c2" + integrity sha512-GfKJrpZ5SMqhli3NJ+mOspDqtZfJBryGA8RIBxF+G+WbDoC7HCqKaeAss4Z/Sab6bAW11ffasx8/vGsj83jyjA== dependencies: "@babel/core" "^7.11.6" "@babel/generator" "^7.7.2" @@ -7907,19 +7938,19 @@ jest-snapshot@^29.2.1: "@babel/plugin-syntax-typescript" "^7.7.2" "@babel/traverse" "^7.7.2" "@babel/types" "^7.3.3" - "@jest/expect-utils" "^29.2.1" - "@jest/transform" "^29.2.1" + "@jest/expect-utils" "^29.2.2" + "@jest/transform" "^29.2.2" "@jest/types" "^29.2.1" "@types/babel__traverse" "^7.0.6" "@types/prettier" "^2.1.5" babel-preset-current-node-syntax "^1.0.0" chalk "^4.0.0" - expect "^29.2.1" + expect "^29.2.2" graceful-fs "^4.2.9" jest-diff "^29.2.1" jest-get-type "^29.2.0" jest-haste-map "^29.2.1" - jest-matcher-utils "^29.2.1" + jest-matcher-utils "^29.2.2" jest-message-util "^29.2.1" jest-util "^29.2.1" natural-compare "^1.4.0" @@ -7938,10 +7969,10 @@ jest-util@^29.2.1: graceful-fs "^4.2.9" picomatch "^2.2.3" -jest-validate@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.1.tgz#db814ce12c4c7e4746044922762e56eb177d066c" - integrity sha512-DZVX5msG6J6DL5vUUw+++6LEkXUsPwB5R7fsfM7BXdz2Ipr0Ib046ak+8egrwAR++pvSM/5laxLK977ieIGxkQ== +jest-validate@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.2.2.tgz#e43ce1931292dfc052562a11bc681af3805eadce" + integrity sha512-eJXATaKaSnOuxNfs8CLHgdABFgUrd0TtWS8QckiJ4L/QVDF4KVbZFBBOwCBZHOS0Rc5fOxqngXeGXE3nGQkpQA== dependencies: "@jest/types" "^29.2.1" camelcase "^6.2.0" @@ -7950,17 +7981,17 @@ jest-validate@^29.2.1: leven "^3.1.0" pretty-format "^29.2.1" -jest-watcher@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.2.1.tgz#1cb91f8aa9e77b1332af139944ad65e51430d7c3" - integrity sha512-7jFaHUaRq50l4w/f6RuY713bvI5XskMmjWCE54NGYcY74fLkShS8LucXJke1QfGnwDSCoIqGnGGGKPwdaBYz2Q== +jest-watcher@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.2.2.tgz#7093d4ea8177e0a0da87681a9e7b09a258b9daf7" + integrity sha512-j2otfqh7mOvMgN2WlJ0n7gIx9XCMWntheYGlBK7+5g3b1Su13/UAK7pdKGyd4kDlrLwtH2QPvRv5oNIxWvsJ1w== dependencies: "@jest/test-result" "^29.2.1" "@jest/types" "^29.2.1" "@types/node" "*" ansi-escapes "^4.2.1" chalk "^4.0.0" - emittery "^0.10.2" + emittery "^0.13.1" jest-util "^29.2.1" string-length "^4.0.1" @@ -7983,15 +8014,15 @@ jest-worker@^29.2.1: merge-stream "^2.0.0" supports-color "^8.0.0" -jest@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest/-/jest-29.2.1.tgz#352ec0b81a0e436691d546d984cd7d8f72ffd26a" - integrity sha512-K0N+7rx+fv3Us3KhuwRSJt55MMpZPs9Q3WSO/spRZSnsalX8yEYOTQ1PiSN7OvqzoRX4JEUXCbOJRlP4n8m5LA== +jest@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest/-/jest-29.2.2.tgz#24da83cbbce514718acd698926b7679109630476" + integrity sha512-r+0zCN9kUqoON6IjDdjbrsWobXM/09Nd45kIPRD8kloaRh1z5ZCMdVsgLXGxmlL7UpAJsvCYOQNO+NjvG/gqiQ== dependencies: - "@jest/core" "^29.2.1" + "@jest/core" "^29.2.2" "@jest/types" "^29.2.1" import-local "^3.0.2" - jest-cli "^29.2.1" + jest-cli "^29.2.2" joi@^17.6.0: version "17.6.0" From cf088bab972352e14371963b225c759a739262a9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 25 Oct 2022 21:18:51 +0200 Subject: [PATCH 22/35] Bump jest-environment-jsdom from 29.2.1 to 29.2.2 (#3985) Bumps [jest-environment-jsdom](https://github.com/facebook/jest/tree/HEAD/packages/jest-environment-jsdom) from 29.2.1 to 29.2.2. - [Release notes](https://github.com/facebook/jest/releases) - [Changelog](https://github.com/facebook/jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/jest/commits/v29.2.2/packages/jest-environment-jsdom) --- updated-dependencies: - dependency-name: jest-environment-jsdom dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 45 +++++++-------------------------------------- 2 files changed, 8 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 9e9f41da60e3..3e21feb70b4c 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "husky": "^8.0.1", "ipfs-http-client": "^57.0.3", "jest": "^29.2.2", - "jest-environment-jsdom": "^29.2.1", + "jest-environment-jsdom": "^29.2.2", "katex": "^0.16.3", "loud-rejection": "^2.2.0", "mr-pdf": "^1.1.0", diff --git a/yarn.lock b/yarn.lock index be289579442e..9cdbaa6af8d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1908,16 +1908,6 @@ slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.1.tgz#acb1994fbd5ad02819a1a34a923c531e6923b665" - integrity sha512-EutqA7T/X6zFjw6mAWRHND+ZkTPklmIEWCNbmwX6uCmOrFrWaLbDZjA+gePHJx6fFMMRvNfjXcvzXEtz54KPlg== - dependencies: - "@jest/fake-timers" "^29.2.1" - "@jest/types" "^29.2.1" - "@types/node" "*" - jest-mock "^29.2.1" - "@jest/environment@^29.2.2": version "29.2.2" resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-29.2.2.tgz#481e729048d42e87d04842c38aa4d09c507f53b0" @@ -1943,18 +1933,6 @@ expect "^29.2.2" jest-snapshot "^29.2.2" -"@jest/fake-timers@^29.2.1": - version "29.2.1" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.1.tgz#786d60e8cb60ca70c9f913cb49fcc77610c072bb" - integrity sha512-KWil+8fef7Uj/P/PTZlPKk1Pw117wAmr71VWFV8ZDtRtkwmTG8oY4IRf0Ss44J2y5CYRy8d/zLOhxyoGRENjvA== - dependencies: - "@jest/types" "^29.2.1" - "@sinonjs/fake-timers" "^9.1.2" - "@types/node" "*" - jest-message-util "^29.2.1" - jest-mock "^29.2.1" - jest-util "^29.2.1" - "@jest/fake-timers@^29.2.2": version "29.2.2" resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-29.2.2.tgz#d8332e6e3cfa99cde4bc87d04a17d6b699deb340" @@ -7723,17 +7701,17 @@ jest-each@^29.2.1: jest-util "^29.2.1" pretty-format "^29.2.1" -jest-environment-jsdom@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.2.1.tgz#5bfbbc52a74b333c7e69ff3a4f540af850a7a718" - integrity sha512-MipBdmrjgzEdQMkK7b7wBShOfv1VqO6FVwa9S43bZwKYLC4dlWnPiCgNpZX3ypNEpJO8EMpMhg4HrUkWUZXGiw== +jest-environment-jsdom@^29.2.2: + version "29.2.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-29.2.2.tgz#1e2d9f1f017fbaa7362a83e670b569158b4b8527" + integrity sha512-5mNtTcky1+RYv9kxkwMwt7fkzyX4EJUarV7iI+NQLigpV4Hz4sgfOdP4kOpCHXbkRWErV7tgXoXLm2CKtucr+A== dependencies: - "@jest/environment" "^29.2.1" - "@jest/fake-timers" "^29.2.1" + "@jest/environment" "^29.2.2" + "@jest/fake-timers" "^29.2.2" "@jest/types" "^29.2.1" "@types/jsdom" "^20.0.0" "@types/node" "*" - jest-mock "^29.2.1" + jest-mock "^29.2.2" jest-util "^29.2.1" jsdom "^20.0.0" @@ -7821,15 +7799,6 @@ jest-message-util@^29.2.1: slash "^3.0.0" stack-utils "^2.0.3" -jest-mock@^29.2.1: - version "29.2.1" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.1.tgz#a0d361cffcb28184fa9c5443adbf591fa5759775" - integrity sha512-NDphaY/GqyQpTfnTZiTqqpMaw4Z0I7XnB7yBgrT6IwYrLGxpOhrejYr4ANY4YvO2sEGdd8Tx/6D0+WLQy7/qDA== - dependencies: - "@jest/types" "^29.2.1" - "@types/node" "*" - jest-util "^29.2.1" - jest-mock@^29.2.2: version "29.2.2" resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-29.2.2.tgz#9045618b3f9d27074bbcf2d55bdca6a5e2e8bca7" From 20815490474599340511757f2e0c8935e4f93dc6 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Wed, 26 Oct 2022 18:19:04 +0200 Subject: [PATCH 23/35] Fix Formatting - Treasury page (#3987) --- docs/learn/learn-treasury.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/learn/learn-treasury.md b/docs/learn/learn-treasury.md index af2ac87255d7..226b23c56dca 100644 --- a/docs/learn/learn-treasury.md +++ b/docs/learn/learn-treasury.md @@ -175,8 +175,12 @@ There are two types of tips: which is paid out from the total amount. - tipper-initiated: Tips that a Council member published, do not have a finder's fee or a bond. -:::info For information about how to submit a tip from the Treasury you can read -[this support article](https://support.polkadot.network/support/solutions/articles/65000181971). ::: +:::info + +For information about how to submit a tip from the Treasury you can read +[this support article](https://support.polkadot.network/support/solutions/articles/65000181971). + +::: To better understand the process a tip goes through until it is paid out, let's consider the example below. From 982b2e2c238325109396f408c7cb5f2ec645e652 Mon Sep 17 00:00:00 2001 From: S E R A Y A Date: Thu, 27 Oct 2022 01:42:15 +0200 Subject: [PATCH 24/35] Update build-open-source.md (#3988) --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 3525090b570b..e2f7405e13b0 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -146,7 +146,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Supply chain | [DSCP Node](https://github.com/digicatapult/dscp-node) 🟢| | | Health care | [AriaHealth](https://github.com/AriaHealth/MetaNetwork) 🔴| | | Social Networking | [Social Network](https://github.com/social-network/blockchain) 🔴, [SubSocial](https://github.com/dappforce/subsocial-parachain) 🟢, [ZeroDAO](https://github.com/ZeroDAO/ZeroDAO-node) 🔴, [Myriad Node](https://github.com/myriadsocial/myriad-node) 🟡, [Wika Network](https://github.com/randombishop/wika_etl) 🔴, [Project Liberty](https://github.com/LibertyDSNP/mrc) 🟢, [Listen](https://github.com/listenofficial/listen-parachain) 🟡, [Tribal Protocol](https://github.com/tribal-protocol/tribal_contract) 🟡, [Five Degrees on Substrate](https://github.com/rust-0x0/hex-space-protocol-substrate) 🟡, [Acuity Social](https://github.com/acuity-social/acuity-substrate) 🟢| Private instant messenger that uses on-chain identity | -| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal-node) 🟡, [DAOs](https://github.com/daos-org/daos) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | +| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal-node) 🟡, [DAOs](https://github.com/daos-org/daos) 🟢, [Shivarthu](https://github.com/amiyatulu/shivarthu/) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | | Prediction Markets and Futarchy | [Zeitgeist](https://github.com/zeitgeistpm/zeitgeist) 🟢, [X Predict Market](https://github.com/XPredictMarket/NodePredict) 🔴| | Messaging | [HOPR](https://github.com/validitylabs/HOPR-PL-Substrate) 🔴, [Nolik](https://github.com/chainify/pallet-nolik/) 🟡| | File Storage, Cloud | [Subsocial-Offchain](https://github.com/dappforce/subsocial-offchain) 🔴, [DatDot](https://github.com/playproject-io/datdot) 🔴, [Crust Network](https://github.com/crustio/crust) 🟢, [offchain::ipfs](https://github.com/rs-ipfs/offchain-ipfs-manual) 🔴, [Canyon Network](https://github.com/canyon-network/canyon) 🔴, [CESS](https://github.com/Cumulus2021/cess) 🟢, [CESS Proving Subsystem](https://github.com/CESSProject/cess-proving-system) 🔴, [Iris](https://github.com/ideal-lab5/iris) 🔴, [fmd-cess](https://github.com/CESSProject/fmd-cess) 🔴, [IPFS Frame V3](https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw) 🟡, [Threefold Chain](https://github.com/threefoldtech/tfchain) 🟢, [Apron](https://github.com/Apron-Network/apron-node) 🔴| From d96c683c6c6826e51b50922c6db91950bc069e17 Mon Sep 17 00:00:00 2001 From: Radha <86818441+DrW3RK@users.noreply.github.com> Date: Thu, 27 Oct 2022 03:17:07 +0200 Subject: [PATCH 25/35] Minor fix - NPoS doc --- docs/learn/learn-staking.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/learn/learn-staking.md b/docs/learn/learn-staking.md index bff689178f52..c833ab854545 100644 --- a/docs/learn/learn-staking.md +++ b/docs/learn/learn-staking.md @@ -70,8 +70,7 @@ PoS network rewards good behavior and punishes bad behavior. {{ polkadot: Polkadot :polkadot }}{{ kusama: Kusama :kusama }} implements [Nominated Proof-of-Stake (NPoS)](learn-consensus.md/#nominated-proof-of-stake), a relatively novel and sophisticated mechanism to select the validators who are allowed to participate in its -[consensus](learn-consensus.md) protocol. The NPoS encourages -{{ polkadot: DOT :polkadot }}{{ kusama: KSM :kusama }} holders to participate as nominators. NPoS +[consensus](learn-consensus.md) protocol. NPoS encourages {{ polkadot: DOT :polkadot }}{{ kusama: KSM :kusama }} holders to participate as **nominators**. From dfacd7646b432206fed1ee6a8dfd15258c85de4c Mon Sep 17 00:00:00 2001 From: Emre Surmeli Date: Fri, 28 Oct 2022 05:48:16 -0400 Subject: [PATCH 26/35] Staking miner deposit and reward section (#3954) * Syntax fixes * Use deposit instead of bond in wording, and add a draft section for deposit and reward mechanics * Finalize deposit and reward section draft * Add signed phase parameter configuration definitions to resources * Replace with permalinks * Move Deposit and reward mechanics to bottom, makes more sense there * Flush out grammar and explanation of signed phase before deposit and reward mechnics section * Refine the deposit and reward mechanics section * Fix consts.electionProviderMultiPhase.signedDepositByte output and add example deposit based on weight calculation * hardcode values as temp fix * Update docs/learn/learn-staking-miner.md Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- components/RPC-Connection.jsx | 4 +-- components/utilities/filters.js | 10 +++--- docs/learn/learn-staking-miner.md | 56 ++++++++++++++++++++++++------- 3 files changed, 51 insertions(+), 19 deletions(-) diff --git a/components/RPC-Connection.jsx b/components/RPC-Connection.jsx index 6976883c1c8e..96954c9fbfcf 100644 --- a/components/RPC-Connection.jsx +++ b/components/RPC-Connection.jsx @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; import { ApiPromise, WsProvider } from "@polkadot/api"; -import { HumanReadable, BlocksToDays} from "./utilities/filters"; +import { HumanReadable, BlocksToDays } from "./utilities/filters"; /* This component connects to the Polkadot/Kusama APIs and renders the response data. @@ -139,7 +139,7 @@ function applyFilter(value, filter, network, setReturnValue) { break; case "blocksToDays": BlocksToDays(value, setReturnValue); - break; + break; default: console.log("Ignoring unknown filter type"); return; diff --git a/components/utilities/filters.js b/components/utilities/filters.js index ccea86780706..4586ba228c4a 100644 --- a/components/utilities/filters.js +++ b/components/utilities/filters.js @@ -5,12 +5,12 @@ const Statemint = "statemint"; const values = { polkadot: { - precision: 1e10, - symbol: "DOT", + precision: 1e10, + symbol: "DOT", }, - kusama: { - precision: 1e12, - symbol: "KSM", + kusama: { + precision: 1e12, + symbol: "KSM", }, statemint: { precision: 1e10, diff --git a/docs/learn/learn-staking-miner.md b/docs/learn/learn-staking-miner.md index cb5e4f5efe80..a4f9b59a5b9c 100644 --- a/docs/learn/learn-staking-miner.md +++ b/docs/learn/learn-staking-miner.md @@ -27,7 +27,7 @@ indicating how optimal the solution is. Staking miners run any given staking alg sequential Phragmén or PhragMMS, subject to change if improved algorithms are introduced) to produce results, which are then sent as a transaction to the relay chain via a normal signed extrinsic. The transaction requires a bond and a transaction fee. The best solution is rewarded, which the least covers the -transaction fee, and the bond is returned to the account. The bond and the fee are lost if the solution +transaction fee, and the bond is returned to the account. [The bond and the fee](learn-staking-miner#deposit-and-reward-mechanics) are lost if the solution is invalid. @@ -40,11 +40,13 @@ starts, only the off-chain workers can provide election results. Running the staking miner requires passing the seed of a funded account in order to pay the fees for the transactions that will be sent. The same account's balance is used to reserve deposits as well. -The best solution in each round is rewarded. All correct solutions will get their bond back and the -ones that submit invalid solutions will lose their bond. +The best solution in each round is rewarded. All correct solutions will get their deposit back and +the ones that submit invalid solutions will lose their deposit. ## NPoS election optimization +![NPoS election optimization](../assets/staking-miner/NPoS-election-optimization.png) + A basic election solution is a simple distribution of stake across validators, but this can be optimized for better distribution equaling a higher security score. The staking miner does not act as a validator and focuses solely on the election result and optimization of the solution. It @@ -53,8 +55,6 @@ order to submit solutions to the NPoS election. When the correct time comes, it solution and submits it to the chain. The default miner algorithm is sequential Phragmén with a configurable number of balancing iterations that improve the score. -![NPoS election optimization](../assets/staking-miner/NPoS-election-optimization.png) - ## Signed Phase of the election pallet The election provider pallet `pallet_election_provider_multi_phase` is divided into two phases, @@ -94,18 +94,21 @@ Upon arrival of a new solution: 1. If the queue is not full, it is stored in the appropriate sorted index. 2. If the queue is full but the submitted solution is better than one of the queued ones, the worse - solution is discarded, the bond of the outgoing solution is returned, and the new solution is + solution is discarded, the deposit of the outgoing solution is returned, and the new solution is stored in the correct index. 3. If the queue is full and the solution is not an improvement compared to any of the queued ones, - it is instantly rejected and no bond is reserved. + it is instantly rejected and no deposit is reserved. -Upon the end of the signed phase, no more solutions can be submitted and the solutions in the queue +Upon the end of the `SignedPhase`, no more solutions can be submitted and the solutions in the queue will be checked using [`Pallet::feasibility_check`](https://paritytech.github.io/substrate/master/pallet_election_provider_multi_phase/pallet/struct.Pallet.html#method.feasibility_check) which ensures the score is indeed correct, and marks them as valid or invalid. By checking each solution in the queue, the queue will be reorganized by score. The highest valid score will be rewarded. Invalid solutions with higher score than the winning solution will be slashed. The rest of -the solutions will be discarded and their deposit will be returned. +the solutions will be discarded and their deposit will be returned. Once the staking miner with a +winning solution is ready to be rewarded the runtime will automatically execute +[`finalize_signed_phase_accept_solution`](https://github.com/paritytech/substrate/blob/f2bc08a3071a91b71fec63cf2b22c707411cec0e/frame/election-provider-multi-phase/src/signed.rs#L453-L474) +which reward account associated with the winning solution. ``` Queue @@ -122,10 +125,39 @@ Queue +-------------------------------+ ``` -If you want to run a staking miner on your validator, refer to the repository provided in the -resources section below. +## Deposit and reward mechanics + +The staking miners are required to pay a deposit to post their solutions. Deposit amount is the sum +of `SignedDepositBase` +`SignedDepositByte` + `SignedDepositWeight`. All good solutions are subject +to receiving a `SignedRewardBase`. + +### Deposit + +Current deposit(`SignedDepositBase`) is +{{ polkadot: :polkadot }} +{{ kusama: :kusama }} +which is a fixed amount. + +Current deposit per byte(`SignedDepositByte`) is +{{ polkadot: 0.0000097656 DOT :polkadot }}{{ kusama: 0.00000032551 KSM :kusama }} and the total is +variable depending on the size of the solution data. For example a solution weighing 200KB would +yield {{ polkadot: 200 x 0.0000097656 = **0.00195312 DOT**. :polkadot }} +{{ kusama: 200 x 0.00000032551 = **0.000065102 KSM**. :kusama }} + +And the weight deposit(`SignedDepositWeight`) is currently set to `0` and has no effect. + +### Reward + +Current reward(`SignedRewardBase`) is +{{ polkadot: :polkadot }} +{{ kusama: :kusama }} +which is a fixed amount. ## Further Resources -- [Election Pallet definition](https://crates.parity.io/pallet_election_provider_multi_phase/index.html) +If you want to run a staking miner on your validator, refer to the repository provided in the +resources section below. + - [Staking Miner repository](https://github.com/paritytech/staking-miner-v2) +- [Election Pallet definition](https://crates.parity.io/pallet_election_provider_multi_phase/index.html) +- [Signed phase parameter configuration on Polkadot](https://github.com/paritytech/polkadot/blob/f610ffc05876d4b98a14cee245b4cc27bd3c0c15/runtime/polkadot/src/lib.rs#L389:L397) From 232185c38c34977c3ccf02868fbd7e04e793d3d2 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 08:45:41 +0530 Subject: [PATCH 27/35] Update status badges (#3993) Co-authored-by: github-actions[bot] --- docs/build/build-open-source.md | 48 ++++++++++++++++----------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index e2f7405e13b0..81a7dc6210d0 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -76,13 +76,13 @@ In the below sections you can find a list of different layers of the Polkadot St | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Desktop/Web Wallets | [Talisman Web Application](https://github.com/TalismanSociety/talisman-web) 🟢, [AirGap](https://github.com/airgap-it/airgap-wallet) 🟢, [Primis](https://github.com/Primis-Labs/client) 🟢, [Sakura](https://github.com/w3finance/sakura) 🔴, [Omni desktop](https://github.com/w3f-grants-archive/omni-desktop-prototype) 🔴| User-friendly Wallet based on the [Recovery Pallet](https://github.com/paritytech/substrate/tree/master/frame/recovery), Web wallets focused on user-onboarding (e.g. using [localStorage](https://github.com/near/near-wallet) ), Enterprise Wallets | | Browser Extensions | [Enkrypt](https://github.com/enkryptcom/enKrypt) 🟢, [Polkadot{.js}](https://github.com/polkadot-js/extension) 🟢, [Polkadot-Js-Plus-Extension](https://github.com/Nick-1979/polkadot-Js-Plus-extension) 🟢, [SubWallet-Extension](https://github.com/Koniverse/SubWallet-Extension) 🟢, [Doter](https://github.com/ChainBridgeNetworkTeam/Doter) 🔴, [Enzyme](https://github.com/blockxlabs/enzyme/) 🔴, [Speckle OS](https://github.com/GetSpeckle/speckle-browser-extension) 🔴| Sign-in with your polkadot, kusama, etc. account. | -| Mobile Wallets | [Lunie](https://github.com/luniehq/lunie) 🔴, [Polkawallet](https://github.com/polkawallet-io/polkawallet-flutter) 🔴, [Parity Signer](https://github.com/paritytech/parity-signer) 🟢, [imToken](https://github.com/consenlabs/token-core) 🟡, [Fearless Wallet Android](https://github.com/soramitsu/fearless-Android) 🟢, [Fearless Wallet iOS](https://github.com/soramitsu/fearless-iOS) 🟢, [Stylo](https://github.com/stylo-app/stylo) 🟡, [Nova Wallet](https://github.com/nova-wallet/nova-utils) 🟢, [Fractapp](https://github.com/fractapp/fractapp/) 🔴, [Interstellar Network](https://github.com/Interstellar-Network/wallet-app) 🟡, [Hashed Wallet](https://github.com/hypha-dao/hashed-wallet) 🟢| +| Mobile Wallets | [Lunie](https://github.com/luniehq/lunie) 🔴, [Polkawallet](https://github.com/polkawallet-io/polkawallet-flutter) 🔴, [Parity Signer](https://github.com/paritytech/parity-signer) 🟢, [imToken](https://github.com/consenlabs/token-core) 🟡, [Fearless Wallet Android](https://github.com/soramitsu/fearless-Android) 🟢, [Fearless Wallet iOS](https://github.com/soramitsu/fearless-iOS) 🟢, [Stylo](https://github.com/stylo-app/stylo) 🟡, [Nova Wallet](https://github.com/nova-wallet/nova-utils) 🟢, [Fractapp](https://github.com/fractapp/fractapp/) 🔴, [Interstellar Network](https://github.com/Interstellar-Network/wallet-app) 🔴, [Hashed Wallet](https://github.com/hypha-dao/hashed-wallet) 🟢| | Burner Wallets/Faucet | [KodaDot](https://github.com/vue-polkadot/apps) 🟢, [Astar Faucet Bot](https://github.com/AstarNetwork/astar-faucet-bot) 🟡, [Generic sybil-resistant faucet](https://github.com/karooolis/sybil-resistant-substrate-faucet) 🟢| Faucet (a sybil-resistant way to receive free tokens) | | Wallet Plugins | [Metamask-Snap by Chainsafe](https://github.com/ChainSafe/metamask-snap-polkadot) 🟢| | CLI Wallet | [Subwallet](https://github.com/yxf/subwallet) 🔴, [Proxy-hot-wallet](https://github.com/canontech/proxy-hot-wallet) 🔴| | Multisignature Wallets | [Subscan Multisig UI - React](https://github.com/itering/subscan-multisig-react) 🟢, [Subscan Multisig UI](https://github.com/itering/subscan-multisig-ui) 🔴, [Dorafactory-Multisig](https://github.com/DoraFactory/dorafactory-multisig) 🔴| -| Hardware Wallets | [Ledger Polkadot](https://github.com/ZondaX/ledger-polkadot) 🟢, [Ledger Kusama](https://github.com/Zondax/ledger-kusama) 🟢, [Ledger Statemint](https://github.com/Zondax/ledger-statemint) 🟢, [Ledger Statemine](https://github.com/Zondax/ledger-statemine) 🟢| Trezor | -| Block Explorers | [Calamar](https://github.com/topmonks/calamar) 🟢, [Polkaholic](https://github.com/colorfulnotion/polkaholic) 🟢, [Polkascan](https://github.com/polkascan/explorer-api) 🟢, [Polkastats](https://github.com/Colm3na/polkastats-backend) 🔴, [Subscan](https://github.com/itering/subscan) 🟡, [Statescan](https://github.com/opensquare-network/statescan) 🟡, [Edgscan](https://github.com/edgeware-builders/edgscan) 🔴, [Epirus](https://github.com/web3labs/epirus-substrate) 🟡, [Ink! Explorer API](https://github.com/blockcoders/ink-substrate-explorer-api) 🟢| Mempool focused explorer (including parachain transaction) | +| Hardware Wallets | [Ledger Polkadot](https://github.com/ZondaX/ledger-polkadot) 🟢, [Ledger Kusama](https://github.com/Zondax/ledger-kusama) 🟢, [Ledger Statemint](https://github.com/Zondax/ledger-statemint) 🟡, [Ledger Statemine](https://github.com/Zondax/ledger-statemine) 🟡| Trezor | +| Block Explorers | [Calamar](https://github.com/topmonks/calamar) 🟢, [Polkaholic](https://github.com/colorfulnotion/polkaholic) 🟢, [Polkascan](https://github.com/polkascan/explorer-api) 🟡, [Polkastats](https://github.com/Colm3na/polkastats-backend) 🔴, [Subscan](https://github.com/itering/subscan) 🟡, [Statescan](https://github.com/opensquare-network/statescan) 🟡, [Edgscan](https://github.com/edgeware-builders/edgscan) 🔴, [Epirus](https://github.com/web3labs/epirus-substrate) 🟢, [Ink! Explorer API](https://github.com/blockcoders/ink-substrate-explorer-api) 🟢| Mempool focused explorer (including parachain transaction) | | Validator Dashboards | [Polkacube](https://github.com/hashquark-io/polkacube-frontend) 🔴, [YieldScan](https://github.com/buidl-labs/YieldScan) 🔴, [Hubble](https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot) 🔴| | Node Explorers | [Polkadot Node Explorer](https://github.com/protos-research/polkadot-node-explorer) 🔴| | NFT Explorer | [NFT Explorer for Kusama & Polkadot](https://github.com/kodadot/nft-gallery) 🟢| @@ -98,24 +98,24 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | | Parachain | [Parachain utilities](https://github.com/AcalaNetwork/parachain-utilities) 🔴, [Gantree](https://github.com/gantree-io/gantree-core) 🔴| Tools to create parachains from frameworks used in other ecosystems | -| Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟢, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [Rust pdotc](https://github.com/trevor-crypto) [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | +| Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟡, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [Rust pdotc](https://github.com/trevor-crypto) [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | | Substrate Contract clients | [PatractGo](https://github.com/patractlabs/go-patract) 🔴| | -| SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟢, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟡, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟢, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟡, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟡| +| SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟢, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟢, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟡, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟡, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟡| | Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | | Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴| | Runtime/Pallet Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴,[Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | | Smart Contract Languages | [Ask!](https://github.com/ask-lang/ask) 🟢, [Subscript](https://github.com/slickup/subscript) 🔴, [Solang](https://github.com/hyperledger-labs/solang) 🟢, [Ink!](https://github.com/paritytech/ink) 🟢, [Move VM Substrate](https://github.com/pontem-network/sp-move) 🔴, [Move smart contract by Neatcoin](https://github.com/neatcoin/neatcoin) 🟢, [Sol2Ink](https://github.com/Supercolony-net/sol2ink) 🟡| Functional Programming Languages, other languages with developed toolchains | -| Smart Contract Security | [Vanguard](https://github.com/Veridise/Vanguard) 🟢| +| Smart Contract Security | [Vanguard](https://github.com/Veridise/Vanguard) 🟡| | Testing | [Halva](https://github.com/halva-suite/halva) 🔴, [Ink Waterfall](https://github.com/paritytech/ink-waterfall) 🟡, [Redspot](https://github.com/patractlabs/redspot) 🔴, [MixBytes Tank](https://github.com/mixbytes/tank) 🔴, [sub-flood](https://github.com/NikVolf/sub-flood) 🔴, [Substrate debug-kit](https://github.com/paritytech/substrate-debug-kit) 🔴, [Dotscale - SCALE Codec Comparator](https://github.com/arijitAD/dotscale) 🔴, [Asset CLI tool](https://github.com/JesseAbram/asset_cli_tool) 🔴, [sub_crash](https://github.com/JesseAbram/unfinished_testing_tool) 🔴, [subwasm](https://github.com/chevdor/subwasm) 🟢, [subsee](https://github.com/ascjones/subsee) 🔴, [polkadot-lab](https://github.com/w3f/polkadot-lab) 🔴, [Zombienet](https://github.com/paritytech/zombienet) 🟢, [RPC-perf](https://github.com/dwellir-public/rpc-perf/) 🔴| -| Testnet | [Polkadot Launch](https://github.com/paritytech/polkadot-launch) 🟡, [polkadot-starship](https://github.com/koute/polkadot-starship) 🔴, [Fork off Substrate](https://github.com/maxsam4/fork-off-substrate) 🔴, [Parachain Launch](https://github.com/open-web3-stack/parachain-launch) 🟢| +| Testnet | [Polkadot Launch](https://github.com/paritytech/polkadot-launch) 🔴, [polkadot-starship](https://github.com/koute/polkadot-starship) 🔴, [Fork off Substrate](https://github.com/maxsam4/fork-off-substrate) 🔴, [Parachain Launch](https://github.com/open-web3-stack/parachain-launch) 🟢| | Benchmarking | [Clockchain](https://github.com/0xekez/clockchain) 🔴, [Substrate Graph Benchmarks](https://github.com/shawntabrizi/substrate-graph-benchmarks) 🔴| | Blockchain Indexing Engine | [Substrate Archive](https://github.com/paritytech/substrate-archive) 🟡, [PSQL Indexer](https://github.com/usetech-llc/polkadot_psql_indexer) 🔴, [Substrate Graph](https://github.com/playzero/substrate-graph) 🔴, [Hydra](https://github.com/subsquid/hydra) 🔴, [Subquery](https://github.com/OnFinality-io/subql) 🟢, [Polkadot Profit Transformer](https://github.com/p2p-org/polkadot-profit-transformer) 🟡| -| Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🟡, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🔴, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡, [Polkadot Basic Notifications](https://github.com/kianenigma/polkadot-basic-notification) 🟢| +| Blockchain/Event Monitoring | [Web3 Guardian](https://github.com/open-web3-stack/guardian) 🔴, [Aurras Event Manager](https://github.com/HugoByte/aurras-event-manager) 🟡, [@commonwealth/chain-events](https://github.com/hicommonwealth/chain-events) 🔴, [Massbit](https://github.com/massbitprotocol/massbitchain) 🟡, [Polkadot Basic Notifications](https://github.com/kianenigma/polkadot-basic-notification) 🟢| | Gaming | [Crossbow](https://github.com/dodorare/crossbow) 🟢| [Amethyst](https://amethyst.rs/) + [Substrate](https://substrate.dev/) | | No-code Platforms | [EzCode's Polkadot.js plugin on Bubble.io](https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js) 🔴, [Blackprint Visual Programming Polkadot.js module](https://github.com/Blackprint/nodes-polkadot.js) 🟢| | | XCM | [XCM-tools](https://github.com/PureStake/xcm-tools) 🟢, [ParaSpell](https://github.com/dudo50/ParaSpell) 🟢, [XBI](https://github.com/t3rn/xbi) 🟢| | | Wallets | [Metadata Portal](https://github.com/nova-wallet/metadata-portal) 🟢, [Tesseract](https://github.com/tesseract-one/Tesseract.rs) 🟢, [WalletConnect](https://github.com/w3f-grants-archive/walletconnect-v2-monorepo) 🔴, [BitGoJS](https://github.com/BitGo/BitGoJS/tree/master) 🟢| | -| Other | [open-web3 JS library](https://github.com/open-web3-stack/open-web3.js) 🔴, [VM-Bridge](https://github.com/CycanTech/GVM-Bridge) 🔴, [srtool](https://github.com/paritytech/srtool) 🟢, [srtool-cli](https://github.com/chevdor/srtool-cli) 🟢, [Substrate Tip Bot](https://github.com/paritytech/substrate-tip-bot) 🟢, [ORI (Onchain Risk Intelligence)](https://github.com/syntifi/ori) 🔴, [PolkaTools](https://github.com/albertov19/PolkaTools) 🟢, [polkadot-scripts](https://github.com/paritytech/polkadot-scripts) 🟢, [Sube](https://github.com/virto-network/sube) 🔴, [data-store-sidecar](https://github.com/CESSProject/data-store-sidecar) 🔴, [SugarFunge](https://github.com/SugarFunge/sugarfunge-node) 🟢, [substrate-wasmedge](https://github.com/second-state/substrate-wasmedge) 🟢| +| Other | [open-web3 JS library](https://github.com/open-web3-stack/open-web3.js) 🔴, [VM-Bridge](https://github.com/CycanTech/GVM-Bridge) 🔴, [srtool](https://github.com/paritytech/srtool) 🟢, [srtool-cli](https://github.com/chevdor/srtool-cli) 🟢, [Substrate Tip Bot](https://github.com/paritytech/substrate-tip-bot) 🟡, [ORI (Onchain Risk Intelligence)](https://github.com/syntifi/ori) 🔴, [PolkaTools](https://github.com/albertov19/PolkaTools) 🟡, [polkadot-scripts](https://github.com/paritytech/polkadot-scripts) 🟢, [Sube](https://github.com/virto-network/sube) 🔴, [data-store-sidecar](https://github.com/CESSProject/data-store-sidecar) 🔴, [SugarFunge](https://github.com/SugarFunge/sugarfunge-node) 🟢, [substrate-wasmedge](https://github.com/second-state/substrate-wasmedge) 🟢| ### ink Smart Contracts @@ -123,9 +123,9 @@ In the below sections you can find a list of different layers of the Polkadot St | --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------- | | Bridges | [Dante Protocol](https://github.com/dantenetwork/protocol-stack-for-ink) 🟢| | | DeFi | [Polkadot AMM](https://github.com/realnimish/polkadot-amm) 🔴, [Vera](https://github.com/veradefi/defi) 🟡, [Nsure Insurance](https://github.com/nsure-tech/dot-contract) 🔴, [Everlasting Cash](https://github.com/CycanTech/ELC) 🔴, [Coinversation](https://github.com/Coinversation/coinpro) 🔴, [zenlink-dex-contract](https://github.com/zenlinkpro/zenlink-dex-contract) 🔴, [AlgoCash](https://github.com/ReserveLabs/AlgoCash) 🔴| New seigniorage-style stable coins | -| Gaming | [Open Emoji Battler](https://github.com/OpenEmojiBattler/open-emoji-battler) 🟢, [NewOmega](https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs) 🔴| | +| Gaming | [Open Emoji Battler](https://github.com/OpenEmojiBattler/open-emoji-battler) 🟡, [NewOmega](https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs) 🔴| | | DAO | [subDAO](https://github.com/SubDAO-Network/subDAO-contracts) 🔴, [RainbowDAO](https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1) 🔴| | -| Spam Protection | [Prosopo](https://github.com/prosopo-io/integration) 🟡| | +| Spam Protection | [Prosopo](https://github.com/prosopo-io/integration) 🔴| | | Other | [Candle Auctions](https://github.com/agryaznov/candle-auction-ink) 🔴, [polkasign-contract](https://github.com/SubDAO-Network/polkasign-contract) 🔴, [OCEX](https://github.com/bsn-si/ocex-cli) 🔴, [Roloi](https://github.com/RoloiMoney/roloi-polkadot-w3f-grant) 🔴| | ### Chains and Pallets @@ -137,24 +137,24 @@ In the below sections you can find a list of different layers of the Polkadot St | Privacy | [Webb Anon](https://github.com/webb-tools/anon) 🔴, [ZeroChain](https://github.com/LayerXcom/zero-chain) 🔴, [pLibra (Phala Network)](https://github.com/Phala-Network/phala-blockchain) 🟢, [Automata Network](https://github.com/automata-network/automata) 🔴, [zCloak Network](https://github.com/zCloak-Network/zcloak-node) 🔴, [Zero Network](https://github.com/zero-network/zero) 🟢| [Multi-Asset Shielded Pool (MASP)](https://github.com/anoma/masp) , [Zkay](https://arxiv.org/pdf/2009.01020.pdf), [Zexe](https://eprint.iacr.org/2018/962.pdf) | | ZKP | [ZeroPool](https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example) 🔴, [Megaclite](https://github.com/patractlabs/megaclite) 🔴, [zkMega](https://github.com/patractlabs/zkmega) 🔴, [PLONK for Substrate](https://github.com/AstarNetwork/plonk) 🔴, [Webb Anchor Protocol](https://github.com/webb-tools/protocol-substrate) 🟢| | TEE | [Acurast](https://github.com/Acurast/acurast-core) 🟢, [Integritee](https://github.com/integritee-network/worker) 🟢, [substraTEE](https://github.com/scs/substraTEE) 🔴| -| DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🔴, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢, [Supersig](https://github.com/kabocha-network/pallet_supersig) 🟢| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | -| Smart contract chains | [moonbeam](https://github.com/PureStake/moonbeam) 🟢, [Edgeware](https://github.com/hicommonwealth/edgeware-node) 🔴, [ParaState](https://github.com/ParaState/substrate-ssvm-node) 🔴, [gear](https://github.com/gear-tech/gear) 🟢, [CENNZnet](https://github.com/cennznet/cennznet) 🟡, [SkyeKiwi](https://github.com/skyekiwi/skyekiwi-network) 🔴, [OAK-blockchain](https://github.com/OAK-Foundation/OAK-blockchain) 🟢, [ICE Blockchain](https://github.com/web3labs/ice-substrate) 🟢| smart contract chains with novel security approaches, smart contract chains based on existing toolchains | +| DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🔴, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢, [Supersig](https://github.com/kabocha-network/pallet_supersig) 🟡| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | +| Smart contract chains | [moonbeam](https://github.com/PureStake/moonbeam) 🟢, [Edgeware](https://github.com/hicommonwealth/edgeware-node) 🔴, [ParaState](https://github.com/ParaState/substrate-ssvm-node) 🔴, [gear](https://github.com/gear-tech/gear) 🟢, [CENNZnet](https://github.com/cennznet/cennznet) 🟡, [SkyeKiwi](https://github.com/skyekiwi/skyekiwi-network) 🟢, [OAK-blockchain](https://github.com/OAK-Foundation/OAK-blockchain) 🟢, [ICE Blockchain](https://github.com/web3labs/ice-substrate) 🟢| smart contract chains with novel security approaches, smart contract chains based on existing toolchains | | Oracle | [Laminar](https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle) 🟢, [Chainlink-polkadot](https://github.com/smartcontractkit/chainlink-polkadot) 🔴, [Ares Protocol](https://github.com/aresprotocols/ares) 🟢, [Kylin Network](https://github.com/Kylin-Network/kylin-node) 🟢, [interbtc-clients oracle](https://github.com/interlay/interbtc-clients/tree/master/oracle) 🟢, [Anonima](https://github.com/webb-tools/anonima) 🔴, [Apollo](https://github.com/ComposableFi/composable/tree/main/code/parachain/frame/oracle) 🟢| | Identity/DID | [Litentry](https://github.com/litentry/litentry-runtime) 🔴, [pallet-did](https://github.com/substrate-developer-hub/pallet-did) 🔴, [dot-id](https://github.com/prasad-kumkar/dot-id) 🔴| | IoT | [Nodle](https://github.com/NodleCode/chain) 🟢, [MXC/DataHighway](https://github.com/DataHighway-DHX/node) 🔴, [peaq-network-node](https://github.com/peaqnetwork/peaq-network-node) 🟢| -| Verifiable Claims | [KILT](https://github.com/KILTprotocol/kilt-node) 🟢, [Dock](https://github.com/docknetwork/dock-substrate) 🟢, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢| +| Verifiable Claims | [KILT](https://github.com/KILTprotocol/kilt-node) 🟢, [Dock](https://github.com/docknetwork/dock-substrate) 🟡, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢| | Supply chain | [DSCP Node](https://github.com/digicatapult/dscp-node) 🟢| | | Health care | [AriaHealth](https://github.com/AriaHealth/MetaNetwork) 🔴| | -| Social Networking | [Social Network](https://github.com/social-network/blockchain) 🔴, [SubSocial](https://github.com/dappforce/subsocial-parachain) 🟢, [ZeroDAO](https://github.com/ZeroDAO/ZeroDAO-node) 🔴, [Myriad Node](https://github.com/myriadsocial/myriad-node) 🟡, [Wika Network](https://github.com/randombishop/wika_etl) 🔴, [Project Liberty](https://github.com/LibertyDSNP/mrc) 🟢, [Listen](https://github.com/listenofficial/listen-parachain) 🟡, [Tribal Protocol](https://github.com/tribal-protocol/tribal_contract) 🟡, [Five Degrees on Substrate](https://github.com/rust-0x0/hex-space-protocol-substrate) 🟡, [Acuity Social](https://github.com/acuity-social/acuity-substrate) 🟢| Private instant messenger that uses on-chain identity | -| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟢, [Societal](https://github.com/sctllabs/societal-node) 🟡, [DAOs](https://github.com/daos-org/daos) 🟢, [Shivarthu](https://github.com/amiyatulu/shivarthu/) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | +| Social Networking | [Social Network](https://github.com/social-network/blockchain) 🔴, [SubSocial](https://github.com/dappforce/subsocial-parachain) 🟢, [ZeroDAO](https://github.com/ZeroDAO/ZeroDAO-node) 🔴, [Myriad Node](https://github.com/myriadsocial/myriad-node) 🟡, [Wika Network](https://github.com/randombishop/wika_etl) 🔴, [Project Liberty](https://github.com/LibertyDSNP/mrc) 🟢, [Listen](https://github.com/listenofficial/listen-parachain) 🟢, [Tribal Protocol](https://github.com/tribal-protocol/tribal_contract) 🟡, [Five Degrees on Substrate](https://github.com/rust-0x0/hex-space-protocol-substrate) 🟡, [Acuity Social](https://github.com/acuity-social/acuity-substrate) 🟢| Private instant messenger that uses on-chain identity | +| Governance/DAO | [Hashed Network](https://github.com/hashed-io/hashed-substrate) 🟢, [Sunshine DAO](https://github.com/sunshine-protocol/sunshine-bounty) 🔴, [Governance OS](https://github.com/NucleiStudio/governance-os) 🔴, [Idavoll Network](https://github.com/idavollnetwork/idavoll) 🔴, [Substrate Moloch](https://github.com/DoraFactory/Substrate-Moloch-V2) 🔴, [QRUCIAL-DAO](https://github.com/Qrucial/QRUCIAL-DAO) 🟡, [Societal](https://github.com/sctllabs/societal-node) 🟡, [DAOs](https://github.com/daos-org/daos) 🟢, [Shivarthu](https://github.com/amiyatulu/shivarthu/) 🟢| [Consul](https://github.com/consul/consul) - Open Government and E-Participation Web Software | | Prediction Markets and Futarchy | [Zeitgeist](https://github.com/zeitgeistpm/zeitgeist) 🟢, [X Predict Market](https://github.com/XPredictMarket/NodePredict) 🔴| | Messaging | [HOPR](https://github.com/validitylabs/HOPR-PL-Substrate) 🔴, [Nolik](https://github.com/chainify/pallet-nolik/) 🟡| | File Storage, Cloud | [Subsocial-Offchain](https://github.com/dappforce/subsocial-offchain) 🔴, [DatDot](https://github.com/playproject-io/datdot) 🔴, [Crust Network](https://github.com/crustio/crust) 🟢, [offchain::ipfs](https://github.com/rs-ipfs/offchain-ipfs-manual) 🔴, [Canyon Network](https://github.com/canyon-network/canyon) 🔴, [CESS](https://github.com/Cumulus2021/cess) 🟢, [CESS Proving Subsystem](https://github.com/CESSProject/cess-proving-system) 🔴, [Iris](https://github.com/ideal-lab5/iris) 🔴, [fmd-cess](https://github.com/CESSProject/fmd-cess) 🔴, [IPFS Frame V3](https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw) 🟡, [Threefold Chain](https://github.com/threefoldtech/tfchain) 🟢, [Apron](https://github.com/Apron-Network/apron-node) 🔴| | Name Service | [Substrate Names](https://github.com/xaya/substrate-names) 🔴, [ENS on Substrate](https://github.com/hskang9/substrate-name-service) 🔴, [PNS-Pallets](https://github.com/pnsproject/pns-pallets) 🔴, [Faceless](https://github.com/HeisenbergLin22/Faceless_milestone1) 🟡| -| Gaming | [Bit.country](https://github.com/bit-country/Bit-Country-Blockchain) 🟢, [SubGame](https://github.com/SubGame-Network/subgame-network) 🔴, [subzero](https://github.com/playzero/subzero) 🔴, [Web3Games](https://github.com/web3gamesofficial/web3games-blockchain) 🔴, [Ajuna Network](https://github.com/ajuna-network/Ajuna) 🟢, [Gafi Network](https://github.com/cryptoviet/gafi) 🟡, [Asylum](https://gitlab.com/asylum-space/asylum-item-nft) 🟢 | +| Gaming | [Bit.country](https://github.com/bit-country/Bit-Country-Blockchain) 🟢, [SubGame](https://github.com/SubGame-Network/subgame-network) 🔴, [subzero](https://github.com/playzero/subzero) 🔴, [Web3Games](https://github.com/web3gamesofficial/web3games-blockchain) 🔴, [Ajuna Network](https://github.com/ajuna-network/Ajuna) 🟢, [Gafi Network](https://github.com/cryptoviet/gafi) 🔴, [Asylum](https://gitlab.com/asylum-space/asylum-item-nft) 🟢 | | Computation/AI | [DeepBrain Chain](https://github.com/DeepBrainChain/DeepBrainChain-MainChain) 🟢, [AI Infrastructure on Blockchain](https://github.com/anudit/cerebrum) 🔴| -| Enable specific use-cases | [Robonomics](https://github.com/airalab/substrate-node-robonomics) 🟡, [UniversalDOT](https://github.com/UniversalDot/pallets) 🟡, [Evercity Sustainable Finance Protocol](https://github.com/EvercityEcosystem/evercity-chain) 🔴, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢, [logion](https://github.com/logion-network/logion-node) 🟢| -| NFT | [ternoa](https://github.com/capsule-corp-ternoa/chain) 🟢, [FRAME Pallet: NFTs for Substrate](https://github.com/danforbes/pallet-nft) 🔴, [Unique NFT Parachain](https://github.com/UniqueNetwork/unique-chain) 🟡, [DNFT](https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets) 🔴, [RMRK-Substrate](https://github.com/rmrk-team/rmrk-substrate) 🟢, [NT-NFTs](https://github.com/Popular-Coding/nt-nft) 🟢, [Green Lemon](https://github.com/GreenLemonProtocol/dksap-polkadot) 🟡, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢| +| Enable specific use-cases | [Robonomics](https://github.com/airalab/substrate-node-robonomics) 🟢, [UniversalDOT](https://github.com/UniversalDot/pallets) 🟡, [Evercity Sustainable Finance Protocol](https://github.com/EvercityEcosystem/evercity-chain) 🔴, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢, [logion](https://github.com/logion-network/logion-node) 🟢| +| NFT | [ternoa](https://github.com/capsule-corp-ternoa/chain) 🟡, [FRAME Pallet: NFTs for Substrate](https://github.com/danforbes/pallet-nft) 🔴, [Unique NFT Parachain](https://github.com/UniqueNetwork/unique-chain) 🔴, [DNFT](https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets) 🔴, [RMRK-Substrate](https://github.com/rmrk-team/rmrk-substrate) 🟢, [NT-NFTs](https://github.com/Popular-Coding/nt-nft) 🟢, [Green Lemon](https://github.com/GreenLemonProtocol/dksap-polkadot) 🟡, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢| | Randomness | [DKG and Randomness Beacon](https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon) 🟡| | Licensing | [Anagolay Network](https://github.com/anagolay/anagolay-chain) 🟢| | Banking Integration | [FIAT on-off-ramp](https://github.com/element36-io/ebics-java-service) 🔴| @@ -162,7 +162,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Collection of Pallets | [Substrate Open Runtime Module Library](https://github.com/open-web3-stack/open-runtime-module-library) 🟢, [warehouse](https://github.com/galacticcouncil/warehouse) 🟢, [InvArch FRAME Pallet Library](https://github.com/InvArch/InvArch-Frames) 🟢| | Marketplaces | [Dot Marketplace](https://github.com/WowLabz/dot-marketplace-v2/tree/Phase2_Milestone2) 🟡, [Gated Marketplace](https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace) 🟢| | Carbon Credits | [BitGreen](https://github.com/bitgreen/bitg-node) 🟢, [Carbon Assets Pallet](https://github.com/EvercityEcosystem/carbon-assets) 🟡, [Sequester Pallets](https://github.com/SequesterChain/pallets) 🔴| -| Other | [Substrate Account Filter](https://github.com/gautamdhameja/substrate-account-filter) 🔴, [Subtensor](https://github.com/opentensor/subtensor) 🟢, [AdMeta](https://github.com/AdMetaNetwork/admeta) 🟡, [Chocolate Node](https://github.com/chocolatenetwork/chocolate-node) 🟢, [Virto Network](https://github.com/virto-network/virto-node) 🟡, [Substrate Validator Set](https://github.com/gautamdhameja/substrate-validator-set) 🟢, [DEIP](https://github.com/DEIPworld/deip-node) 🔴, [DeBio](https://github.com/debionetwork/debio-node) 🟢, [MathChain](https://github.com/mathwallet/MathChain) 🔴, [encointer](https://github.com/encointer/encointer-node) 🟢, [Grassland](https://github.com/grasslandnetwork/substrate_node) 🔴, [Substrate-Tutorials](https://github.com/rusty-crewmates/substrate-tutorials) 🟢, [Fair Squares](https://github.com/Fair-Squares/fair-squares) 🟢, [Totem Live Accounting](https://github.com/totem-tech/totem) 🔴, [Escrow Pallet](https://github.com/herou/EscrowPallet) 🟡, [TREX](https://github.com/NexTokenTech/TREX) 🟡, [Relation Graph](https://github.com/relationlabs/Relation-Graph) 🟢| Decentralized review/reputation system | +| Other | [Substrate Account Filter](https://github.com/gautamdhameja/substrate-account-filter) 🔴, [Subtensor](https://github.com/opentensor/subtensor) 🟢, [AdMeta](https://github.com/AdMetaNetwork/admeta) 🟡, [Chocolate Node](https://github.com/chocolatenetwork/chocolate-node) 🟢, [Virto Network](https://github.com/virto-network/virto-node) 🟡, [Substrate Validator Set](https://github.com/gautamdhameja/substrate-validator-set) 🟢, [DEIP](https://github.com/DEIPworld/deip-node) 🔴, [DeBio](https://github.com/debionetwork/debio-node) 🟢, [MathChain](https://github.com/mathwallet/MathChain) 🔴, [encointer](https://github.com/encointer/encointer-node) 🟢, [Grassland](https://github.com/grasslandnetwork/substrate_node) 🔴, [Substrate-Tutorials](https://github.com/rusty-crewmates/substrate-tutorials) 🟡, [Fair Squares](https://github.com/Fair-Squares/fair-squares) 🟢, [Totem Live Accounting](https://github.com/totem-tech/totem) 🔴, [Escrow Pallet](https://github.com/herou/EscrowPallet) 🟡, [TREX](https://github.com/NexTokenTech/TREX) 🟡, [Relation Graph](https://github.com/relationlabs/Relation-Graph) 🟢| Decentralized review/reputation system | ### Host @@ -182,15 +182,15 @@ In the below sections you can find a list of different layers of the Polkadot St | High availability setup | [Archipel](https://github.com/luguslabs/archipel) 🔴, [Polkadot Failover Mechanism](https://github.com/protofire/polkadot-failover-mechanism) 🔴| | Load Balanced Endpoints | [terragrunt-polkadot](https://github.com/insight-w3f/terragrunt-polkadot) 🔴, [Geometry Labs' Substrate Meta repo](https://github.com/sudoblockio/substrate-meta) 🔴| | Deployment Tools | [Polkadot Package Manager](https://github.com/Blockdaemon/bpm-sdk) 🔴, [PolkaHub](https://github.com/akropolisio/polkahub-monorepo) 🔴, [Avado](https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom) 🔴, [Polkadot Deployer](https://github.com/w3f/polkadot-deployer) 🔴| -| Validator monitoring | [ONE-T](https://github.com/turboflakes/one-t) 🟢, [SubVT](https://github.com/helikon-labs/subvt) 🔴, [P.A.N.I.C.](https://github.com/SimplyVC/panic) 🔴, [Polkalert](https://github.com/galacticcouncil/polkalert) 🔴, [B-Harvest](https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3) 🔴, [nmonpolkadot](https://github.com/stakezone/nmonpolkadot) 🔴, [Polkadot-K8s-Monitor](https://github.com/ironoa/polkadot-k8s-monitor) 🟡, [Polkadot-Watcher](https://github.com/w3f/polkadot-watcher) 🟢, [1KV Telegram Bot](https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot) 🔴| -| Validator payout management | [Substrate validator auto payout](https://github.com/Colm3na/substrate-auto-payout) 🔴, [Polkadot Payouts](https://github.com/w3f/polkadot-payouts) 🟡, [staking-payouts CLI](https://github.com/emostov/staking-payouts) 🟡, [Payctl](https://github.com/stakelink/substrate-payctl) 🟡, [crunch](https://github.com/turboflakes/crunch) 🟢| +| Validator monitoring | [ONE-T](https://github.com/turboflakes/one-t) 🟢, [SubVT](https://github.com/helikon-labs/subvt) 🔴, [P.A.N.I.C.](https://github.com/SimplyVC/panic) 🟢, [Polkalert](https://github.com/galacticcouncil/polkalert) 🔴, [B-Harvest](https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3) 🔴, [nmonpolkadot](https://github.com/stakezone/nmonpolkadot) 🔴, [Polkadot-K8s-Monitor](https://github.com/ironoa/polkadot-k8s-monitor) 🟡, [Polkadot-Watcher](https://github.com/w3f/polkadot-watcher) 🟢, [1KV Telegram Bot](https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot) 🟢| +| Validator payout management | [Substrate validator auto payout](https://github.com/Colm3na/substrate-auto-payout) 🔴, [Polkadot Payouts](https://github.com/w3f/polkadot-payouts) 🟢, [staking-payouts CLI](https://github.com/emostov/staking-payouts) 🟡, [Payctl](https://github.com/stakelink/substrate-payctl) 🟡, [crunch](https://github.com/turboflakes/crunch) 🟢| | Staking Miner | [Staking Miner v2](https://github.com/paritytech/staking-miner-v2) 🟢| ### Signatures | Components | Existing projects | Potentially interesting projects | | -------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | -| SR25519 | [rust](https://github.com/w3f/schnorrkel) 🔴(contains partial bindings for C, JavaScript, and Python), [.Net bindings](https://github.com/gautamdhameja/sr25519-dotnet) 🔴, [C](https://github.com/usetech-llc/sr25519) 🔴*(old)*, [C](https://github.com/TerenceGe/sr25519-donna) 🔴*(new)*, [C/C++](https://github.com/soramitsu/soramitsu-sr25519-crust) 🟢, [C#](https://github.com/usetech-llc/sr25519_dotnet) 🔴, [Go](https://github.com/ChainSafe/go-schnorrkel) 🔴, [java](https://github.com/debuggor/schnorrkel-java) 🔴, [PHP](https://github.com/gmajor-encrypt/sr25519-bindings) 🟡| +| SR25519 | [rust](https://github.com/w3f/schnorrkel) 🟢(contains partial bindings for C, JavaScript, and Python), [.Net bindings](https://github.com/gautamdhameja/sr25519-dotnet) 🔴, [C](https://github.com/usetech-llc/sr25519) 🔴*(old)*, [C](https://github.com/TerenceGe/sr25519-donna) 🔴*(new)*, [C/C++](https://github.com/soramitsu/soramitsu-sr25519-crust) 🟢, [C#](https://github.com/usetech-llc/sr25519_dotnet) 🔴, [Go](https://github.com/ChainSafe/go-schnorrkel) 🔴, [java](https://github.com/debuggor/schnorrkel-java) 🔴, [PHP](https://github.com/gmajor-encrypt/sr25519-bindings) 🟡| | Signature Aggregation | [apk-proofs](https://github.com/w3f/apk-proofs) 🟢| | Distributed key generation (DKG) | [keygen.rs](https://github.com/isislovecruft/frost-dalek) 🔴| | Validator HSMs | [Zondax Remote Signer](https://github.com/Zondax/buildroot-zondax) 🟡| @@ -200,7 +200,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Components | Existing projects | Potentially interesting projects | | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------- | | PoC | [Spartan](https://github.com/subspace/substrate) 🔴| -| PoW | [PoW consensus for Substrate](https://github.com/paritytech/substrate/tree/master/client/consensus/pow) 🟢, [RandomX](https://github.com/kulupu/kulupu/tree/master/pow) 🟢, [Sha3 PoW](https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow) 🔴| +| PoW | [PoW consensus for Substrate](https://github.com/paritytech/substrate/tree/master/client/consensus/pow) 🟢, [RandomX](https://github.com/kulupu/kulupu/tree/master/pow) 🟡, [Sha3 PoW](https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow) 🔴| | Block production | [BABE](https://github.com/paritytech/substrate/tree/master/client/consensus/babe) 🟢, [Aura](https://github.com/paritytech/substrate/tree/master/client/consensus/aura) 🟢| | Finality | [GRANDPA](https://github.com/paritytech/substrate/tree/master/frame/grandpa) 🟢, [AlephBFT](https://github.com/Cardinal-Cryptography/aleph-node/tree/main/finality-aleph) 🟢| | Other | [Nimbus: Upgradeable consensus framework](https://github.com/PureStake/nimbus) 🟡| From eadfddef78b7e3344f08bf86d1744da866fe40bb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 31 Oct 2022 10:56:39 -0400 Subject: [PATCH 28/35] auction schedule update (#3992) Co-authored-by: Polkadot-Kusama Bot --- components/utilities/data/KusamaAuctions.json | 16 ++++++++-------- components/utilities/data/PolkadotAuctions.json | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/components/utilities/data/KusamaAuctions.json b/components/utilities/data/KusamaAuctions.json index 9806613a6d08..35a00827a5fd 100644 --- a/components/utilities/data/KusamaAuctions.json +++ b/components/utilities/data/KusamaAuctions.json @@ -1014,31 +1014,31 @@ "endPeriodBlock": 14945400, "endPeriodHash": "0xa8b88a99f1c0c18812db8c94d90fc967b5146e18b8ecd23c64cf31086ce97dea", "biddingEndsBlock": 15017400, - "biddingEndsHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "biddingEndsHash": "0xbc86c1c5b6f8671cc53afd1133e0e9adba22ef60281650fd6fab9bad939bd151", "onboardStartBlock": 15120000, "onboardStartHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "onboardEndBlock": 19958400, "onboardEndHash": "0x0000000000000000000000000000000000000000000000000000000000000000", "startDate": 1665991038012, "endPeriodDate": 1666153308043, - "biddingEndsDate": null, + "biddingEndsDate": 1666585824017, "onboardStartDate": null, "onboardEndDate": null }, { "index": 57, "startBlock": 15019200, - "startHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "startHash": "0xba5ba301bf32f43e342e7b5b7ad8b9b6d081d2dc0c718aa24b1dc8a154fb0dcc", "endPeriodBlock": 15046200, - "endPeriodHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "endPeriodHash": "0x0393bddf8e55f5d0c404b86eaaa996a8830774ebbdaae81fdb1b36287ce05e5c", "biddingEndsBlock": 15118200, "biddingEndsHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "onboardStartBlock": null, + "onboardStartBlock": 15120000, "onboardStartHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "onboardEndBlock": null, + "onboardEndBlock": 19958400, "onboardEndHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "startDate": null, - "endPeriodDate": null, + "startDate": 1666596642018, + "endPeriodDate": 1666758792052, "biddingEndsDate": null, "onboardStartDate": null, "onboardEndDate": null diff --git a/components/utilities/data/PolkadotAuctions.json b/components/utilities/data/PolkadotAuctions.json index 5448a071db8f..d10e0e669bb3 100644 --- a/components/utilities/data/PolkadotAuctions.json +++ b/components/utilities/data/PolkadotAuctions.json @@ -542,17 +542,17 @@ { "index": 30, "startBlock": 12683200, - "startHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "startHash": "0x42244e186f70465e5df8cfbbf0042eebc6e6590c192fb7498443293ade62ba58", "endPeriodBlock": 12710200, - "endPeriodHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "endPeriodHash": "0xed552b506ca77ecdf8e2e5a3e3d72ada0c437440f40a7295bb542cfe986134ad", "biddingEndsBlock": 12782200, "biddingEndsHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "onboardStartBlock": null, + "onboardStartBlock": 13017600, "onboardStartHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "onboardEndBlock": null, + "onboardEndBlock": 22694400, "onboardEndHash": "0x0000000000000000000000000000000000000000000000000000000000000000", - "startDate": null, - "endPeriodDate": null, + "startDate": 1666998144009, + "endPeriodDate": 1667160300008, "biddingEndsDate": null, "onboardStartDate": null, "onboardEndDate": null From 740dc82892ad5697aa8f4bbee77b1d633202164a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 11:05:58 -0400 Subject: [PATCH 29/35] Bump @docusaurus/preset-classic from 2.1.0 to 2.2.0 (#3994) Bumps [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v2.2.0/packages/docusaurus-preset-classic) --- updated-dependencies: - dependency-name: "@docusaurus/preset-classic" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 441 ++++++++++++++++++++++++++++++++++++--------------- 2 files changed, 314 insertions(+), 129 deletions(-) diff --git a/package.json b/package.json index 3e21feb70b4c..ebdccf799260 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@docusaurus/core": "^2.1.0", "@docusaurus/module-type-aliases": "^2.1.0", "@docusaurus/plugin-client-redirects": "^2.1.0", - "@docusaurus/preset-classic": "^2.1.0", + "@docusaurus/preset-classic": "^2.2.0", "@octokit/rest": "^19.0.5", "@polkadot/api": "^9.6.1", diff --git a/yarn.lock b/yarn.lock index 9cdbaa6af8d8..53d3d4093619 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1289,7 +1289,7 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.1.0", "@docusaurus/core@^2.1.0": +"@docusaurus/core@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== @@ -1366,6 +1366,83 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" +"@docusaurus/core@2.2.0", "@docusaurus/core@^2.1.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.2.0.tgz#64c9ee31502c23b93c869f8188f73afaf5fd4867" + integrity sha512-Vd6XOluKQqzG12fEs9prJgDtyn6DPok9vmUWDR2E6/nV5Fl9SVkhEQOBxwObjk3kQh7OY7vguFaLh0jqdApWsA== + dependencies: + "@babel/core" "^7.18.6" + "@babel/generator" "^7.18.7" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-runtime" "^7.18.6" + "@babel/preset-env" "^7.18.6" + "@babel/preset-react" "^7.18.6" + "@babel/preset-typescript" "^7.18.6" + "@babel/runtime" "^7.18.6" + "@babel/runtime-corejs3" "^7.18.6" + "@babel/traverse" "^7.18.8" + "@docusaurus/cssnano-preset" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" + "@slorber/static-site-generator-webpack-plugin" "^4.0.7" + "@svgr/webpack" "^6.2.1" + autoprefixer "^10.4.7" + babel-loader "^8.2.5" + babel-plugin-dynamic-import-node "^2.3.3" + boxen "^6.2.1" + chalk "^4.1.2" + chokidar "^3.5.3" + clean-css "^5.3.0" + cli-table3 "^0.6.2" + combine-promises "^1.1.0" + commander "^5.1.0" + copy-webpack-plugin "^11.0.0" + core-js "^3.23.3" + css-loader "^6.7.1" + css-minimizer-webpack-plugin "^4.0.0" + cssnano "^5.1.12" + del "^6.1.1" + detect-port "^1.3.0" + escape-html "^1.0.3" + eta "^1.12.3" + file-loader "^6.2.0" + fs-extra "^10.1.0" + html-minifier-terser "^6.1.0" + html-tags "^3.2.0" + html-webpack-plugin "^5.5.0" + import-fresh "^3.3.0" + leven "^3.1.0" + lodash "^4.17.21" + mini-css-extract-plugin "^2.6.1" + postcss "^8.4.14" + postcss-loader "^7.0.0" + prompts "^2.4.2" + react-dev-utils "^12.0.1" + react-helmet-async "^1.3.0" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + react-loadable-ssr-addon-v5-slorber "^1.0.1" + react-router "^5.3.3" + react-router-config "^5.1.1" + react-router-dom "^5.3.3" + rtl-detect "^1.0.4" + semver "^7.3.7" + serve-handler "^6.1.3" + shelljs "^0.8.5" + terser-webpack-plugin "^5.3.3" + tslib "^2.4.0" + update-notifier "^5.1.0" + url-loader "^4.1.1" + wait-on "^6.0.1" + webpack "^5.73.0" + webpack-bundle-analyzer "^4.5.0" + webpack-dev-server "^4.9.3" + webpack-merge "^5.8.0" + webpackbar "^5.0.2" + "@docusaurus/cssnano-preset@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" @@ -1376,6 +1453,16 @@ postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" +"@docusaurus/cssnano-preset@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.2.0.tgz#fc05044659051ae74ab4482afcf4a9936e81d523" + integrity sha512-mAAwCo4n66TMWBH1kXnHVZsakW9VAXJzTO4yZukuL3ro4F+JtkMwKfh42EG75K/J/YIFQG5I/Bzy0UH/hFxaTg== + dependencies: + cssnano-preset-advanced "^5.3.8" + postcss "^8.4.14" + postcss-sort-media-queries "^4.2.1" + tslib "^2.4.0" + "@docusaurus/logger@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" @@ -1384,6 +1471,14 @@ chalk "^4.1.2" tslib "^2.4.0" +"@docusaurus/logger@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.2.0.tgz#ea2f7feda7b8675485933b87f06d9c976d17423f" + integrity sha512-DF3j1cA5y2nNsu/vk8AG7xwpZu6f5MKkPPMaaIbgXLnWGfm6+wkOeW7kNrxnM95YOhKUkJUophX69nGUnLsm0A== + dependencies: + chalk "^4.1.2" + tslib "^2.4.0" + "@docusaurus/mdx-loader@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" @@ -1407,7 +1502,44 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/module-type-aliases@2.1.0", "@docusaurus/module-type-aliases@^2.1.0": +"@docusaurus/mdx-loader@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.2.0.tgz#fd558f429e5d9403d284bd4214e54d9768b041a0" + integrity sha512-X2bzo3T0jW0VhUU+XdQofcEeozXOTmKQMvc8tUnWRdTnCvj4XEcBVdC3g+/jftceluiwSTNRAX4VBOJdNt18jA== + dependencies: + "@babel/parser" "^7.18.8" + "@babel/traverse" "^7.18.8" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@mdx-js/mdx" "^1.6.22" + escape-html "^1.0.3" + file-loader "^6.2.0" + fs-extra "^10.1.0" + image-size "^1.0.1" + mdast-util-to-string "^2.0.0" + remark-emoji "^2.2.0" + stringify-object "^3.3.0" + tslib "^2.4.0" + unified "^9.2.2" + unist-util-visit "^2.0.3" + url-loader "^4.1.1" + webpack "^5.73.0" + +"@docusaurus/module-type-aliases@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.2.0.tgz#1e23e54a1bbb6fde1961e4fa395b1b69f4803ba5" + integrity sha512-wDGW4IHKoOr9YuJgy7uYuKWrDrSpsUSDHLZnWQYM9fN7D5EpSmYHjFruUpKWVyxLpD/Wh0rW8hYZwdjJIQUQCQ== + dependencies: + "@docusaurus/react-loadable" "5.5.2" + "@docusaurus/types" "2.2.0" + "@types/history" "^4.7.11" + "@types/react" "*" + "@types/react-router-config" "*" + "@types/react-router-dom" "*" + react-helmet-async "*" + react-loadable "npm:@docusaurus/react-loadable@5.5.2" + +"@docusaurus/module-type-aliases@^2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== @@ -1436,18 +1568,18 @@ lodash "^4.17.21" tslib "^2.4.0" -"@docusaurus/plugin-content-blog@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.1.0.tgz#32b1a7cd4b0026f4a76fce4edc5cfdd0edb1ec42" - integrity sha512-xEp6jlu92HMNUmyRBEeJ4mCW1s77aAEQO4Keez94cUY/Ap7G/r0Awa6xSLff7HL0Fjg8KK1bEbDy7q9voIavdg== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-blog@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-blog/-/plugin-content-blog-2.2.0.tgz#dc55982e76771f4e678ac10e26d10e1da2011dc1" + integrity sha512-0mWBinEh0a5J2+8ZJXJXbrCk1tSTNf7Nm4tYAl5h2/xx+PvH/Bnu0V+7mMljYm/1QlDYALNIIaT/JcoZQFUN3w== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" cheerio "^1.0.0-rc.12" feed "^4.2.2" fs-extra "^10.1.0" @@ -1458,18 +1590,18 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-docs@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.1.0.tgz#3fcdf258c13dde27268ce7108a102b74ca4c279b" - integrity sha512-Rup5pqXrXlKGIC4VgwvioIhGWF7E/NNSlxv+JAxRYpik8VKlWsk9ysrdHIlpX+KJUCO9irnY21kQh2814mlp/Q== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-docs@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-docs/-/plugin-content-docs-2.2.0.tgz#0fcb85226fcdb80dc1e2d4a36ef442a650dcc84d" + integrity sha512-BOazBR0XjzsHE+2K1wpNxz5QZmrJgmm3+0Re0EVPYFGW8qndCWGNtXW/0lGKhecVPML8yyFeAmnUCIs7xM2wPw== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@types/react-router-config" "^5.0.6" combine-promises "^1.1.0" fs-extra "^10.1.0" @@ -1480,84 +1612,84 @@ utility-types "^3.10.0" webpack "^5.73.0" -"@docusaurus/plugin-content-pages@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.1.0.tgz#714d24f71d49dbfed888f50c15e975c2154c3ce8" - integrity sha512-SwZdDZRlObHNKXTnFo7W2aF6U5ZqNVI55Nw2GCBryL7oKQSLeI0lsrMlMXdzn+fS7OuBTd3MJBO1T4Zpz0i/+g== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-content-pages@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-content-pages/-/plugin-content-pages-2.2.0.tgz#e3f40408787bbe229545dd50595f87e1393bc3ae" + integrity sha512-+OTK3FQHk5WMvdelz8v19PbEbx+CNT6VSpx7nVOvMNs5yJCKvmqBJBQ2ZSxROxhVDYn+CZOlmyrC56NSXzHf6g== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" tslib "^2.4.0" webpack "^5.73.0" -"@docusaurus/plugin-debug@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.1.0.tgz#b3145affb40e25cf342174638952a5928ddaf7dc" - integrity sha512-8wsDq3OIfiy6440KLlp/qT5uk+WRHQXIXklNHEeZcar+Of0TZxCNe2FBpv+bzb/0qcdP45ia5i5WmR5OjN6DPw== +"@docusaurus/plugin-debug@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-debug/-/plugin-debug-2.2.0.tgz#b38741d2c492f405fee01ee0ef2e0029cedb689a" + integrity sha512-p9vOep8+7OVl6r/NREEYxf4HMAjV8JMYJ7Bos5fCFO0Wyi9AZEo0sCTliRd7R8+dlJXZEgcngSdxAUo/Q+CJow== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" fs-extra "^10.1.0" react-json-view "^1.21.3" tslib "^2.4.0" -"@docusaurus/plugin-google-analytics@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.1.0.tgz#c9a7269817b38e43484d38fad9996e39aac4196c" - integrity sha512-4cgeqIly/wcFVbbWP03y1QJJBgH8W+Bv6AVbWnsXNOZa1yB3AO6hf3ZdeQH9x20v9T2pREogVgAH0rSoVnNsgg== +"@docusaurus/plugin-google-analytics@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-2.2.0.tgz#63c7137eff5a1208d2059fea04b5207c037d7954" + integrity sha512-+eZVVxVeEnV5nVQJdey9ZsfyEVMls6VyWTIj8SmX0k5EbqGvnIfET+J2pYEuKQnDIHxy+syRMoRM6AHXdHYGIg== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-google-gtag@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.1.0.tgz#e4f351dcd98b933538d55bb742650a2a36ca9a32" - integrity sha512-/3aDlv2dMoCeiX2e+DTGvvrdTA+v3cKQV3DbmfsF4ENhvc5nKV23nth04Z3Vq0Ci1ui6Sn80TkhGk/tiCMW2AA== +"@docusaurus/plugin-google-gtag@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-2.2.0.tgz#7b086d169ac5fe9a88aca10ab0fd2bf00c6c6b12" + integrity sha512-6SOgczP/dYdkqUMGTRqgxAS1eTp6MnJDAQMy8VCF1QKbWZmlkx4agHDexihqmYyCujTYHqDAhm1hV26EET54NQ== dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" tslib "^2.4.0" -"@docusaurus/plugin-sitemap@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.1.0.tgz#b316bb9a42a1717845e26bd4e2d3071748a54b47" - integrity sha512-2Y6Br8drlrZ/jN9MwMBl0aoi9GAjpfyfMBYpaQZXimbK+e9VjYnujXlvQ4SxtM60ASDgtHIAzfVFBkSR/MwRUw== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-sitemap@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-sitemap/-/plugin-sitemap-2.2.0.tgz#876da60937886032d63143253d420db6a4b34773" + integrity sha512-0jAmyRDN/aI265CbWZNZuQpFqiZuo+5otk2MylU9iVrz/4J7gSc+ZJ9cy4EHrEsW7PV8s1w18hIEsmcA1YgkKg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" fs-extra "^10.1.0" sitemap "^7.1.1" tslib "^2.4.0" -"@docusaurus/preset-classic@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.1.0.tgz#45b23c8ec10c96ded9ece128fac3a39b10bcbc56" - integrity sha512-NQMnaq974K4BcSMXFSJBQ5itniw6RSyW+VT+6i90kGZzTwiuKZmsp0r9lC6BYAvvVMQUNJQwrETmlu7y2XKW7w== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/plugin-debug" "2.1.0" - "@docusaurus/plugin-google-analytics" "2.1.0" - "@docusaurus/plugin-google-gtag" "2.1.0" - "@docusaurus/plugin-sitemap" "2.1.0" - "@docusaurus/theme-classic" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-search-algolia" "2.1.0" - "@docusaurus/types" "2.1.0" +"@docusaurus/preset-classic@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/preset-classic/-/preset-classic-2.2.0.tgz#bece5a043eeb74430f7c6c7510000b9c43669eb7" + integrity sha512-yKIWPGNx7BT8v2wjFIWvYrS+nvN04W+UameSFf8lEiJk6pss0kL6SG2MRvyULiI3BDxH+tj6qe02ncpSPGwumg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/plugin-debug" "2.2.0" + "@docusaurus/plugin-google-analytics" "2.2.0" + "@docusaurus/plugin-google-gtag" "2.2.0" + "@docusaurus/plugin-sitemap" "2.2.0" + "@docusaurus/theme-classic" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-search-algolia" "2.2.0" + "@docusaurus/types" "2.2.0" "@docusaurus/react-loadable@5.5.2", "react-loadable@npm:@docusaurus/react-loadable@5.5.2": version "5.5.2" @@ -1567,23 +1699,23 @@ "@types/react" "*" prop-types "^15.6.2" -"@docusaurus/theme-classic@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.1.0.tgz#d957a907ea8dd035c1cf911d0fbe91d8f24aef3f" - integrity sha512-xn8ZfNMsf7gaSy9+ClFnUu71o7oKgMo5noYSS1hy3svNifRTkrBp6+MReLDsmIaj3mLf2e7+JCBYKBFbaGzQng== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/types" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/theme-classic@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-classic/-/theme-classic-2.2.0.tgz#a048bb1bc077dee74b28bec25f4b84b481863742" + integrity sha512-kjbg/qJPwZ6H1CU/i9d4l/LcFgnuzeiGgMQlt6yPqKo0SOJIBMPuz7Rnu3r/WWbZFPi//o8acclacOzmXdUUEg== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/types" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" "@mdx-js/react" "^1.6.22" clsx "^1.2.1" copy-text-to-clipboard "^3.0.1" @@ -1598,17 +1730,17 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-common@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.1.0.tgz#dff4d5d1e29efc06125dc06f7b259f689bb3f24d" - integrity sha512-vT1otpVPbKux90YpZUnvknsn5zvpLf+AW1W0EDcpE9up4cDrPqfsh0QoxGHFJnobE2/qftsBFC19BneN4BH8Ag== - dependencies: - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/module-type-aliases" "2.1.0" - "@docusaurus/plugin-content-blog" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/plugin-content-pages" "2.1.0" - "@docusaurus/utils" "2.1.0" +"@docusaurus/theme-common@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-common/-/theme-common-2.2.0.tgz#2303498d80448aafdd588b597ce9d6f4cfa930e4" + integrity sha512-R8BnDjYoN90DCL75gP7qYQfSjyitXuP9TdzgsKDmSFPNyrdE3twtPNa2dIN+h+p/pr+PagfxwWbd6dn722A1Dw== + dependencies: + "@docusaurus/mdx-loader" "2.2.0" + "@docusaurus/module-type-aliases" "2.2.0" + "@docusaurus/plugin-content-blog" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/plugin-content-pages" "2.2.0" + "@docusaurus/utils" "2.2.0" "@types/history" "^4.7.11" "@types/react" "*" "@types/react-router-config" "*" @@ -1618,19 +1750,19 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-search-algolia@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.1.0.tgz#e7cdf64b6f7a15b07c6dcf652fd308cfdaabb0ee" - integrity sha512-rNBvi35VvENhucslEeVPOtbAzBdZY/9j55gdsweGV5bYoAXy4mHB6zTGjealcB4pJ6lJY4a5g75fXXMOlUqPfg== +"@docusaurus/theme-search-algolia@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-search-algolia/-/theme-search-algolia-2.2.0.tgz#77fd9f7a600917e6024fe3ac7fb6cfdf2ce84737" + integrity sha512-2h38B0tqlxgR2FZ9LpAkGrpDWVdXZ7vltfmTdX+4RsDs3A7khiNsmZB+x/x6sA4+G2V2CvrsPMlsYBy5X+cY1w== dependencies: "@docsearch/react" "^3.1.1" - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/plugin-content-docs" "2.1.0" - "@docusaurus/theme-common" "2.1.0" - "@docusaurus/theme-translations" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/plugin-content-docs" "2.2.0" + "@docusaurus/theme-common" "2.2.0" + "@docusaurus/theme-translations" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" algoliasearch "^4.13.1" algoliasearch-helper "^3.10.0" clsx "^1.2.1" @@ -1640,10 +1772,10 @@ tslib "^2.4.0" utility-types "^3.10.0" -"@docusaurus/theme-translations@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.1.0.tgz#ce9a2955afd49bff364cfdfd4492b226f6dd3b6e" - integrity sha512-07n2akf2nqWvtJeMy3A+7oSGMuu5F673AovXVwY0aGAux1afzGCiqIFlYW3EP0CujvDJAEFSQi/Tetfh+95JNg== +"@docusaurus/theme-translations@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/theme-translations/-/theme-translations-2.2.0.tgz#5fbd4693679806f80c26eeae1381e1f2c23d83e7" + integrity sha512-3T140AG11OjJrtKlY4pMZ5BzbGRDjNs2co5hJ6uYJG1bVWlhcaFGqkaZ5lCgKflaNHD7UHBHU9Ec5f69jTdd6w== dependencies: fs-extra "^10.1.0" tslib "^2.4.0" @@ -1662,6 +1794,20 @@ webpack "^5.73.0" webpack-merge "^5.8.0" +"@docusaurus/types@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.2.0.tgz#02c577a4041ab7d058a3c214ccb13647e21a9857" + integrity sha512-b6xxyoexfbRNRI8gjblzVOnLr4peCJhGbYGPpJ3LFqpi5nsFfoK4mmDLvWdeah0B7gmJeXabN7nQkFoqeSdmOw== + dependencies: + "@types/history" "^4.7.11" + "@types/react" "*" + commander "^5.1.0" + joi "^17.6.0" + react-helmet-async "^1.3.0" + utility-types "^3.10.0" + webpack "^5.73.0" + webpack-merge "^5.8.0" + "@docusaurus/utils-common@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" @@ -1669,6 +1815,13 @@ dependencies: tslib "^2.4.0" +"@docusaurus/utils-common@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.2.0.tgz#a401c1b93a8697dd566baf6ac64f0fdff1641a78" + integrity sha512-qebnerHp+cyovdUseDQyYFvMW1n1nv61zGe5JJfoNQUnjKuApch3IVsz+/lZ9a38pId8kqehC1Ao2bW/s0ntDA== + dependencies: + tslib "^2.4.0" + "@docusaurus/utils-validation@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" @@ -1680,6 +1833,17 @@ js-yaml "^4.1.0" tslib "^2.4.0" +"@docusaurus/utils-validation@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.2.0.tgz#04d4d103137ad0145883971d3aa497f4a1315f25" + integrity sha512-I1hcsG3yoCkasOL5qQAYAfnmVoLei7apugT6m4crQjmDGxq+UkiRrq55UqmDDyZlac/6ax/JC0p+usZ6W4nVyg== + dependencies: + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" + joi "^17.6.0" + js-yaml "^4.1.0" + tslib "^2.4.0" + "@docusaurus/utils@2.1.0": version "2.1.0" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" @@ -1701,6 +1865,27 @@ url-loader "^4.1.1" webpack "^5.73.0" +"@docusaurus/utils@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.2.0.tgz#3d6f9b7a69168d5c92d371bf21c556a4f50d1da6" + integrity sha512-oNk3cjvx7Tt1Lgh/aeZAmFpGV2pDr5nHKrBVx6hTkzGhrnMuQqLt6UPlQjdYQ3QHXwyF/ZtZMO1D5Pfi0lu7SA== + dependencies: + "@docusaurus/logger" "2.2.0" + "@svgr/webpack" "^6.2.1" + file-loader "^6.2.0" + fs-extra "^10.1.0" + github-slugger "^1.4.0" + globby "^11.1.0" + gray-matter "^4.0.3" + js-yaml "^4.1.0" + lodash "^4.17.21" + micromatch "^4.0.5" + resolve-pathname "^3.0.0" + shelljs "^0.8.5" + tslib "^2.4.0" + url-loader "^4.1.1" + webpack "^5.73.0" + "@emotion/cache@^10.0.27": version "10.0.29" resolved "https://registry.yarnpkg.com/@emotion/cache/-/cache-10.0.29.tgz#87e7e64f412c060102d589fe7c6dc042e6f9d1e0" From 2cdd4177618a875514415b09001873ea452448b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 11:16:29 -0400 Subject: [PATCH 30/35] Bump @docusaurus/plugin-client-redirects from 2.1.0 to 2.2.0 (#3995) Bumps [@docusaurus/plugin-client-redirects](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-plugin-client-redirects) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v2.2.0/packages/docusaurus-plugin-client-redirects) --- updated-dependencies: - dependency-name: "@docusaurus/plugin-client-redirects" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 177 +++------------------------------------------------ 2 files changed, 11 insertions(+), 168 deletions(-) diff --git a/package.json b/package.json index ebdccf799260..72082bebeb69 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@crowdin/cli": "^3.9.0", "@docusaurus/core": "^2.1.0", "@docusaurus/module-type-aliases": "^2.1.0", - "@docusaurus/plugin-client-redirects": "^2.1.0", + "@docusaurus/plugin-client-redirects": "^2.2.0", "@docusaurus/preset-classic": "^2.2.0", "@octokit/rest": "^19.0.5", "@polkadot/api": "^9.6.1", diff --git a/yarn.lock b/yarn.lock index 53d3d4093619..bd722cd6c84b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1289,83 +1289,6 @@ "@docsearch/css" "3.1.1" algoliasearch "^4.0.0" -"@docusaurus/core@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.1.0.tgz#4aedc306f4c4cd2e0491b641bf78941d4b480ab6" - integrity sha512-/ZJ6xmm+VB9Izbn0/s6h6289cbPy2k4iYFwWDhjiLsVqwa/Y0YBBcXvStfaHccudUC3OfP+26hMk7UCjc50J6Q== - dependencies: - "@babel/core" "^7.18.6" - "@babel/generator" "^7.18.7" - "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-transform-runtime" "^7.18.6" - "@babel/preset-env" "^7.18.6" - "@babel/preset-react" "^7.18.6" - "@babel/preset-typescript" "^7.18.6" - "@babel/runtime" "^7.18.6" - "@babel/runtime-corejs3" "^7.18.6" - "@babel/traverse" "^7.18.8" - "@docusaurus/cssnano-preset" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/mdx-loader" "2.1.0" - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" - "@slorber/static-site-generator-webpack-plugin" "^4.0.7" - "@svgr/webpack" "^6.2.1" - autoprefixer "^10.4.7" - babel-loader "^8.2.5" - babel-plugin-dynamic-import-node "^2.3.3" - boxen "^6.2.1" - chalk "^4.1.2" - chokidar "^3.5.3" - clean-css "^5.3.0" - cli-table3 "^0.6.2" - combine-promises "^1.1.0" - commander "^5.1.0" - copy-webpack-plugin "^11.0.0" - core-js "^3.23.3" - css-loader "^6.7.1" - css-minimizer-webpack-plugin "^4.0.0" - cssnano "^5.1.12" - del "^6.1.1" - detect-port "^1.3.0" - escape-html "^1.0.3" - eta "^1.12.3" - file-loader "^6.2.0" - fs-extra "^10.1.0" - html-minifier-terser "^6.1.0" - html-tags "^3.2.0" - html-webpack-plugin "^5.5.0" - import-fresh "^3.3.0" - leven "^3.1.0" - lodash "^4.17.21" - mini-css-extract-plugin "^2.6.1" - postcss "^8.4.14" - postcss-loader "^7.0.0" - prompts "^2.4.2" - react-dev-utils "^12.0.1" - react-helmet-async "^1.3.0" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - react-loadable-ssr-addon-v5-slorber "^1.0.1" - react-router "^5.3.3" - react-router-config "^5.1.1" - react-router-dom "^5.3.3" - rtl-detect "^1.0.4" - semver "^7.3.7" - serve-handler "^6.1.3" - shelljs "^0.8.5" - terser-webpack-plugin "^5.3.3" - tslib "^2.4.0" - update-notifier "^5.1.0" - url-loader "^4.1.1" - wait-on "^6.0.1" - webpack "^5.73.0" - webpack-bundle-analyzer "^4.5.0" - webpack-dev-server "^4.9.3" - webpack-merge "^5.8.0" - webpackbar "^5.0.2" - "@docusaurus/core@2.2.0", "@docusaurus/core@^2.1.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/core/-/core-2.2.0.tgz#64c9ee31502c23b93c869f8188f73afaf5fd4867" @@ -1443,16 +1366,6 @@ webpack-merge "^5.8.0" webpackbar "^5.0.2" -"@docusaurus/cssnano-preset@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.1.0.tgz#5b42107769b7cbc61655496090bc262d7788d6ab" - integrity sha512-pRLewcgGhOies6pzsUROfmPStDRdFw+FgV5sMtLr5+4Luv2rty5+b/eSIMMetqUsmg3A9r9bcxHk9bKAKvx3zQ== - dependencies: - cssnano-preset-advanced "^5.3.8" - postcss "^8.4.14" - postcss-sort-media-queries "^4.2.1" - tslib "^2.4.0" - "@docusaurus/cssnano-preset@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/cssnano-preset/-/cssnano-preset-2.2.0.tgz#fc05044659051ae74ab4482afcf4a9936e81d523" @@ -1463,14 +1376,6 @@ postcss-sort-media-queries "^4.2.1" tslib "^2.4.0" -"@docusaurus/logger@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.1.0.tgz#86c97e948f578814d3e61fc2b2ad283043cbe87a" - integrity sha512-uuJx2T6hDBg82joFeyobywPjSOIfeq05GfyKGHThVoXuXsu1KAzMDYcjoDxarb9CoHCI/Dor8R2MoL6zII8x1Q== - dependencies: - chalk "^4.1.2" - tslib "^2.4.0" - "@docusaurus/logger@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/logger/-/logger-2.2.0.tgz#ea2f7feda7b8675485933b87f06d9c976d17423f" @@ -1479,29 +1384,6 @@ chalk "^4.1.2" tslib "^2.4.0" -"@docusaurus/mdx-loader@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.1.0.tgz#3fca9576cc73a22f8e7d9941985590b9e47a8526" - integrity sha512-i97hi7hbQjsD3/8OSFhLy7dbKGH8ryjEzOfyhQIn2CFBYOY3ko0vMVEf3IY9nD3Ld7amYzsZ8153RPkcnXA+Lg== - dependencies: - "@babel/parser" "^7.18.8" - "@babel/traverse" "^7.18.8" - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@mdx-js/mdx" "^1.6.22" - escape-html "^1.0.3" - file-loader "^6.2.0" - fs-extra "^10.1.0" - image-size "^1.0.1" - mdast-util-to-string "^2.0.0" - remark-emoji "^2.2.0" - stringify-object "^3.3.0" - tslib "^2.4.0" - unified "^9.2.2" - unist-util-visit "^2.0.3" - url-loader "^4.1.1" - webpack "^5.73.0" - "@docusaurus/mdx-loader@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/mdx-loader/-/mdx-loader-2.2.0.tgz#fd558f429e5d9403d284bd4214e54d9768b041a0" @@ -1553,16 +1435,16 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/plugin-client-redirects@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.1.0.tgz#4141040552faad48aefc5bc8f3827c3c4eba1ab8" - integrity sha512-3PhzwHSyZWqBAFPJuLJE3dZVuKWQEj9ReQP85Z3/2hpnQoVNBgAqc+64FIko0FvvK1iluLeasO7NWGyuATngvw== - dependencies: - "@docusaurus/core" "2.1.0" - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" - "@docusaurus/utils-common" "2.1.0" - "@docusaurus/utils-validation" "2.1.0" +"@docusaurus/plugin-client-redirects@^2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.2.0.tgz#f6228e5b2852520e22e0f4b89f870431aa975a90" + integrity sha512-psBoWi+cbc2I+VPkKJlcZ12tRN3xiv22tnZfNKyMo18iSY8gr4B6Q0G2KZXGPgNGJ/6gq7ATfgDK6p9h9XRxMQ== + dependencies: + "@docusaurus/core" "2.2.0" + "@docusaurus/logger" "2.2.0" + "@docusaurus/utils" "2.2.0" + "@docusaurus/utils-common" "2.2.0" + "@docusaurus/utils-validation" "2.2.0" eta "^1.12.3" fs-extra "^10.1.0" lodash "^4.17.21" @@ -1808,13 +1690,6 @@ webpack "^5.73.0" webpack-merge "^5.8.0" -"@docusaurus/utils-common@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.1.0.tgz#248434751096f8c6c644ed65eed2a5a070a227f8" - integrity sha512-F2vgmt4yRFgRQR2vyEFGTWeyAdmgKbtmu3sjHObF0tjjx/pN0Iw/c6eCopaH34E6tc9nO0nvp01pwW+/86d1fg== - dependencies: - tslib "^2.4.0" - "@docusaurus/utils-common@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/utils-common/-/utils-common-2.2.0.tgz#a401c1b93a8697dd566baf6ac64f0fdff1641a78" @@ -1822,17 +1697,6 @@ dependencies: tslib "^2.4.0" -"@docusaurus/utils-validation@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.1.0.tgz#c8cf1d8454d924d9a564fefa86436268f43308e3" - integrity sha512-AMJzWYKL3b7FLltKtDXNLO9Y649V2BXvrnRdnW2AA+PpBnYV78zKLSCz135cuWwRj1ajNtP4onbXdlnyvCijGQ== - dependencies: - "@docusaurus/logger" "2.1.0" - "@docusaurus/utils" "2.1.0" - joi "^17.6.0" - js-yaml "^4.1.0" - tslib "^2.4.0" - "@docusaurus/utils-validation@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/utils-validation/-/utils-validation-2.2.0.tgz#04d4d103137ad0145883971d3aa497f4a1315f25" @@ -1844,27 +1708,6 @@ js-yaml "^4.1.0" tslib "^2.4.0" -"@docusaurus/utils@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.1.0.tgz#b77b45b22e61eb6c2dcad8a7e96f6db0409b655f" - integrity sha512-fPvrfmAuC54n8MjZuG4IysaMdmvN5A/qr7iFLbSGSyDrsbP4fnui6KdZZIa/YOLIPLec8vjZ8RIITJqF18mx4A== - dependencies: - "@docusaurus/logger" "2.1.0" - "@svgr/webpack" "^6.2.1" - file-loader "^6.2.0" - fs-extra "^10.1.0" - github-slugger "^1.4.0" - globby "^11.1.0" - gray-matter "^4.0.3" - js-yaml "^4.1.0" - lodash "^4.17.21" - micromatch "^4.0.5" - resolve-pathname "^3.0.0" - shelljs "^0.8.5" - tslib "^2.4.0" - url-loader "^4.1.1" - webpack "^5.73.0" - "@docusaurus/utils@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/utils/-/utils-2.2.0.tgz#3d6f9b7a69168d5c92d371bf21c556a4f50d1da6" From ac9849d16b32d87bce26fa232b9afda234bfbb4b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 11:24:13 -0400 Subject: [PATCH 31/35] Bump @docusaurus/module-type-aliases from 2.1.0 to 2.2.0 (#3996) Bumps [@docusaurus/module-type-aliases](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-module-type-aliases) from 2.1.0 to 2.2.0. - [Release notes](https://github.com/facebook/docusaurus/releases) - [Changelog](https://github.com/facebook/docusaurus/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/docusaurus/commits/v2.2.0/packages/docusaurus-module-type-aliases) --- updated-dependencies: - dependency-name: "@docusaurus/module-type-aliases" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 30 +----------------------------- 2 files changed, 2 insertions(+), 30 deletions(-) diff --git a/package.json b/package.json index 72082bebeb69..693870007877 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@actions/github": "^5.1.1", "@crowdin/cli": "^3.9.0", "@docusaurus/core": "^2.1.0", - "@docusaurus/module-type-aliases": "^2.1.0", + "@docusaurus/module-type-aliases": "^2.2.0", "@docusaurus/plugin-client-redirects": "^2.2.0", "@docusaurus/preset-classic": "^2.2.0", "@octokit/rest": "^19.0.5", diff --git a/yarn.lock b/yarn.lock index bd722cd6c84b..c1799c7c0ecb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1407,7 +1407,7 @@ url-loader "^4.1.1" webpack "^5.73.0" -"@docusaurus/module-type-aliases@2.2.0": +"@docusaurus/module-type-aliases@2.2.0", "@docusaurus/module-type-aliases@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.2.0.tgz#1e23e54a1bbb6fde1961e4fa395b1b69f4803ba5" integrity sha512-wDGW4IHKoOr9YuJgy7uYuKWrDrSpsUSDHLZnWQYM9fN7D5EpSmYHjFruUpKWVyxLpD/Wh0rW8hYZwdjJIQUQCQ== @@ -1421,20 +1421,6 @@ react-helmet-async "*" react-loadable "npm:@docusaurus/react-loadable@5.5.2" -"@docusaurus/module-type-aliases@^2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/module-type-aliases/-/module-type-aliases-2.1.0.tgz#322f8fd5b436af2154c0dddfa173435730e66261" - integrity sha512-Z8WZaK5cis3xEtyfOT817u9xgGUauT0PuuVo85ysnFRX8n7qLN1lTPCkC+aCmFm/UcV8h/W5T4NtIsst94UntQ== - dependencies: - "@docusaurus/react-loadable" "5.5.2" - "@docusaurus/types" "2.1.0" - "@types/history" "^4.7.11" - "@types/react" "*" - "@types/react-router-config" "*" - "@types/react-router-dom" "*" - react-helmet-async "*" - react-loadable "npm:@docusaurus/react-loadable@5.5.2" - "@docusaurus/plugin-client-redirects@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/plugin-client-redirects/-/plugin-client-redirects-2.2.0.tgz#f6228e5b2852520e22e0f4b89f870431aa975a90" @@ -1662,20 +1648,6 @@ fs-extra "^10.1.0" tslib "^2.4.0" -"@docusaurus/types@2.1.0": - version "2.1.0" - resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.1.0.tgz#01e13cd9adb268fffe87b49eb90302d5dc3edd6b" - integrity sha512-BS1ebpJZnGG6esKqsjtEC9U9qSaPylPwlO7cQ1GaIE7J/kMZI3FITnNn0otXXu7c7ZTqhb6+8dOrG6fZn6fqzQ== - dependencies: - "@types/history" "^4.7.11" - "@types/react" "*" - commander "^5.1.0" - joi "^17.6.0" - react-helmet-async "^1.3.0" - utility-types "^3.10.0" - webpack "^5.73.0" - webpack-merge "^5.8.0" - "@docusaurus/types@2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@docusaurus/types/-/types-2.2.0.tgz#02c577a4041ab7d058a3c214ccb13647e21a9857" From d12d0539be95aadd932720e969931d77b993a493 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 1 Nov 2022 11:24:40 -0400 Subject: [PATCH 32/35] Bump @polkadot/api from 9.6.1 to 9.6.2 (#3998) Bumps [@polkadot/api](https://github.com/polkadot-js/api/tree/HEAD/packages/api) from 9.6.1 to 9.6.2. - [Release notes](https://github.com/polkadot-js/api/releases) - [Changelog](https://github.com/polkadot-js/api/blob/master/CHANGELOG.md) - [Commits](https://github.com/polkadot-js/api/commits/v9.6.2/packages/api) --- updated-dependencies: - dependency-name: "@polkadot/api" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 231 ++++++++++++++++++++++++++------------------------- 2 files changed, 119 insertions(+), 114 deletions(-) diff --git a/package.json b/package.json index 693870007877..8fac32495e5b 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@docusaurus/plugin-client-redirects": "^2.2.0", "@docusaurus/preset-classic": "^2.2.0", "@octokit/rest": "^19.0.5", - "@polkadot/api": "^9.6.1", + "@polkadot/api": "^9.6.2", "@polkadot/keyring": "10.1.1", "@testing-library/jest-dom": "^5.16.5", diff --git a/yarn.lock b/yarn.lock index c1799c7c0ecb..cb199bd41756 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1216,12 +1216,12 @@ core-js-pure "^3.20.2" regenerator-runtime "^0.13.4" -"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": - version "7.19.4" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.4.tgz#a42f814502ee467d55b38dd1c256f53a7b885c78" - integrity sha512-EXpLCrk55f+cYqmHsSR+yD/0gAIMxxA9QK9lnQWzhMCvt+YmoBN7Zx94s++Kv0+unHk39vxNO8t+CMA2WSS3wA== +"@babel/runtime@^7.1.2", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.17.2", "@babel/runtime@^7.18.3", "@babel/runtime@^7.18.6", "@babel/runtime@^7.18.9", "@babel/runtime@^7.19.4", "@babel/runtime@^7.20.0", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.6.3", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": + version "7.20.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.1.tgz#1148bb33ab252b165a06698fde7576092a78b4a9" + integrity sha512-mrzLkl6U9YLF8qpqI7TB82PESyEGjm/0Ly91jG575eVxMMlb8fYfOXFZIJ8XfLrJZQbm7dlKry2bJmXBUEkdFg== dependencies: - regenerator-runtime "^0.13.4" + regenerator-runtime "^0.13.10" "@babel/template@^7.12.7", "@babel/template@^7.18.6", "@babel/template@^7.3.3": version "7.18.6" @@ -2457,64 +2457,64 @@ resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" integrity sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g== -"@polkadot/api-augment@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-9.6.1.tgz#9e4f068bbee4f4944cb2ff04c94e15161cb43ab2" - integrity sha512-K2efVG15NuswLUqesaiJTtAVKKdTq1mcR/4Fw/ZCuL9vv4E8GBhvNzV0WdhSB7frEphruTgwThfav3XCTGc0uw== - dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/api-base" "9.6.1" - "@polkadot/rpc-augment" "9.6.1" - "@polkadot/types" "9.6.1" - "@polkadot/types-augment" "9.6.1" - "@polkadot/types-codec" "9.6.1" +"@polkadot/api-augment@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/api-augment/-/api-augment-9.6.2.tgz#a6e7c29d8a06c0951d37796f56bf54530bbc04f0" + integrity sha512-XsRSXCeZV+pdoY35fhoiHO/sVCmTdfb1lhnpkqEDmucOvP4lBRdg/y2l+50jmftJxnvYD5p/ddVc6ezOJVmL0w== + dependencies: + "@babel/runtime" "^7.20.0" + "@polkadot/api-base" "9.6.2" + "@polkadot/rpc-augment" "9.6.2" + "@polkadot/types" "9.6.2" + "@polkadot/types-augment" "9.6.2" + "@polkadot/types-codec" "9.6.2" "@polkadot/util" "^10.1.11" -"@polkadot/api-base@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-9.6.1.tgz#888d1fc86f9df830cd38bc2c102406ef3cd52034" - integrity sha512-dzVsBTw2YdSycQDjdf8N2ya905YIyqW2y2TCPBMSzm982llL7M6/AgkCxj/a+hbZgh6BE7Uqp5BiEk+c6h0hSQ== +"@polkadot/api-base@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/api-base/-/api-base-9.6.2.tgz#4790cccb46a06a98ddaf42891a88969fa35f8a0c" + integrity sha512-07WUlTW2qxcXeD/nIw5db2Oz7zsU6doyGb+AC6m33NFVivyzOXtqGTqttRSxzdAblqsSPPFfzkiUDZ1g0BrSCA== dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/rpc-core" "9.6.1" - "@polkadot/types" "9.6.1" + "@babel/runtime" "^7.20.0" + "@polkadot/rpc-core" "9.6.2" + "@polkadot/types" "9.6.2" "@polkadot/util" "^10.1.11" rxjs "^7.5.7" -"@polkadot/api-derive@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-9.6.1.tgz#2ae1ab5e0dd3882ac86c91bb63cb950b753802d1" - integrity sha512-z9lVNLlVRLVSHJQ0A5ir5OLITV19XDC9/TP6PYwKzBujmYXSf7tcYLCGF/roEuRzob+kIAiIvGuRkTs18VuuEQ== - dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/api" "9.6.1" - "@polkadot/api-augment" "9.6.1" - "@polkadot/api-base" "9.6.1" - "@polkadot/rpc-core" "9.6.1" - "@polkadot/types" "9.6.1" - "@polkadot/types-codec" "9.6.1" +"@polkadot/api-derive@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/api-derive/-/api-derive-9.6.2.tgz#772730756dc82ac67af7d069307f880957b4ab62" + integrity sha512-ajqNUen4JZOkbsOCt2cm+1tIFNQtRqE2xreRcpFx6YpQUxWpXXMU3ZTWc7JxxQFmMv0AVRtcynNCh/DC2TrLBA== + dependencies: + "@babel/runtime" "^7.20.0" + "@polkadot/api" "9.6.2" + "@polkadot/api-augment" "9.6.2" + "@polkadot/api-base" "9.6.2" + "@polkadot/rpc-core" "9.6.2" + "@polkadot/types" "9.6.2" + "@polkadot/types-codec" "9.6.2" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" rxjs "^7.5.7" -"@polkadot/api@9.6.1", "@polkadot/api@^9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-9.6.1.tgz#19e0076d52ad4f87706137f9b03517a22e6a4330" - integrity sha512-HWvxgm1ylZrE3afCpCbgIPZ9/qEgH25Osp+5G8gblp2PD20aiXJOwS2cjiIqLq+KPF8/ivU8zXHSBNtZJzToYA== +"@polkadot/api@9.6.2", "@polkadot/api@^9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/api/-/api-9.6.2.tgz#42050aed59489a0a484bc50e9186bd58b18d9835" + integrity sha512-Cz/E4ZBDIxeOIyWKt9fnwW12ts5SopF2t03t4jnzM1beTUkGIZ6mQjho6JoXVIJEcAa8r1PsVpdyuSQhzeoXwQ== dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/api-augment" "9.6.1" - "@polkadot/api-base" "9.6.1" - "@polkadot/api-derive" "9.6.1" + "@babel/runtime" "^7.20.0" + "@polkadot/api-augment" "9.6.2" + "@polkadot/api-base" "9.6.2" + "@polkadot/api-derive" "9.6.2" "@polkadot/keyring" "^10.1.11" - "@polkadot/rpc-augment" "9.6.1" - "@polkadot/rpc-core" "9.6.1" - "@polkadot/rpc-provider" "9.6.1" - "@polkadot/types" "9.6.1" - "@polkadot/types-augment" "9.6.1" - "@polkadot/types-codec" "9.6.1" - "@polkadot/types-create" "9.6.1" - "@polkadot/types-known" "9.6.1" + "@polkadot/rpc-augment" "9.6.2" + "@polkadot/rpc-core" "9.6.2" + "@polkadot/rpc-provider" "9.6.2" + "@polkadot/types" "9.6.2" + "@polkadot/types-augment" "9.6.2" + "@polkadot/types-codec" "9.6.2" + "@polkadot/types-create" "9.6.2" + "@polkadot/types-known" "9.6.2" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" eventemitter3 "^4.0.7" @@ -2556,38 +2556,38 @@ "@polkadot/util" "10.1.11" "@substrate/ss58-registry" "^1.33.0" -"@polkadot/rpc-augment@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-9.6.1.tgz#bfa723fc2987414dc60e77900d6b00008299d242" - integrity sha512-K65Uk2uOAJiM7s0AtKXqmtimNNy7IYKT+waB8NXUxLbgJsWIQFZS7eIFblkIvi8vSPNRtURghvBqJx0cLf+0Ew== +"@polkadot/rpc-augment@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-augment/-/rpc-augment-9.6.2.tgz#1b87084602c294d871d29b6c27880c568fdfb191" + integrity sha512-bOzL99Kx2SipaaanxelDzdvLuf4ViW62627G9gjre/WRnnjpfWrBUX7K8YuzrEIAUf+gbfXs99zqKTBXiJl8wg== dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/rpc-core" "9.6.1" - "@polkadot/types" "9.6.1" - "@polkadot/types-codec" "9.6.1" + "@babel/runtime" "^7.20.0" + "@polkadot/rpc-core" "9.6.2" + "@polkadot/types" "9.6.2" + "@polkadot/types-codec" "9.6.2" "@polkadot/util" "^10.1.11" -"@polkadot/rpc-core@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-9.6.1.tgz#8f212b5a3ba6db8bcaf4d87c3f0260e5f934e24a" - integrity sha512-ixjaTyRCzuZfdmFlyoMrMQ/tdtg3n7M7JI0qeIUJr+ikjOu/QhZ5QDAdOpruWEhyJTWp7suGUefJ/K3su0D+pQ== +"@polkadot/rpc-core@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-core/-/rpc-core-9.6.2.tgz#82e9fc3a979493a69023e6803c05d034112571e3" + integrity sha512-hPDo/Zyu+j+XcPkjV0WVd7KzCmW14m50ZQQfLg9H4/R/tIiuPIML9g+tyoHKg4+H9OxLTmaP0RKFm0d2L2Od0g== dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/rpc-augment" "9.6.1" - "@polkadot/rpc-provider" "9.6.1" - "@polkadot/types" "9.6.1" + "@babel/runtime" "^7.20.0" + "@polkadot/rpc-augment" "9.6.2" + "@polkadot/rpc-provider" "9.6.2" + "@polkadot/types" "9.6.2" "@polkadot/util" "^10.1.11" rxjs "^7.5.7" -"@polkadot/rpc-provider@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-9.6.1.tgz#7861985a2cd443608b504e861d66d0cebd46e643" - integrity sha512-dG/qeIXDHYBotZ+xT6lurYClG0dPMmClfXTGteFoSv6nTWwi2nL3RoBWgJZHOSlJBExleenovDQXdOy2YmuiFQ== +"@polkadot/rpc-provider@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/rpc-provider/-/rpc-provider-9.6.2.tgz#f0d9dc8f3cdab970ad293869e216ef9c1aff0e5c" + integrity sha512-JKrfAdHDhGARy3zQ5ASQfPD32ZdkSsH6IGwfO79vxtelN1ItR9VszoELppX/amlc++Vf8d6MOAjiil7IGGRTIQ== dependencies: - "@babel/runtime" "^7.19.4" + "@babel/runtime" "^7.20.0" "@polkadot/keyring" "^10.1.11" - "@polkadot/types" "9.6.1" - "@polkadot/types-support" "9.6.1" + "@polkadot/types" "9.6.2" + "@polkadot/types-support" "9.6.2" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" "@polkadot/x-fetch" "^10.1.11" @@ -2598,64 +2598,64 @@ mock-socket "^9.1.5" nock "^13.2.9" -"@polkadot/types-augment@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-9.6.1.tgz#8d3cd23852d786e58d09741f8daad9c549335df0" - integrity sha512-ZS8XoaeiMpOO5Bbz+4hI5ynsd057kHT5pHZc8PIypQvE/slhzZyBKOW8+MblM4FIyVfR8owz/7nGpOX62zfMiA== +"@polkadot/types-augment@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/types-augment/-/types-augment-9.6.2.tgz#46608167e953cd8e912055628e74b9f22d305d2a" + integrity sha512-iHQJ2RajV0LNfkSSfjlkTqexmv8ZadDJZNzrHyLbW01Wx9kSM7IH0I0eN1b532HX0/E07lnR/TQ0/EUZnDuqnw== dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/types" "9.6.1" - "@polkadot/types-codec" "9.6.1" + "@babel/runtime" "^7.20.0" + "@polkadot/types" "9.6.2" + "@polkadot/types-codec" "9.6.2" "@polkadot/util" "^10.1.11" -"@polkadot/types-codec@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-9.6.1.tgz#d937a385636c4d9b29e59cfb9582b55e31421132" - integrity sha512-fgrD9yKVVHMyw26VORE+VR2hEnyVa5g5krK3Xv4l6rVGWYYE/vcmsuelZIPM0Glzc5K/2nA72s4Yv5/V8Sk1gA== +"@polkadot/types-codec@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/types-codec/-/types-codec-9.6.2.tgz#0c3ab8d8db8199aed4bedf9008d70093fca85f0a" + integrity sha512-XXpJv+ydQDmno2dHm2dHCxAYrCLncCqsF/xUQAlQS2qbViQOoEUoP5wOhcKrsvITNekh0YLfdhyzaSId2ST2xQ== dependencies: - "@babel/runtime" "^7.19.4" + "@babel/runtime" "^7.20.0" "@polkadot/util" "^10.1.11" "@polkadot/x-bigint" "^10.1.11" -"@polkadot/types-create@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-9.6.1.tgz#689f5b7f2e3aac2c1248455bf3a6f6e3ca2e286e" - integrity sha512-xxkoyq44CnXOjI4ieJtyh4PFRL+ALmVadHvvNuU2C0dwvGGYMxUeISw2O1vFssW0MzyZU7ZI6BY9FkVFZKCnkA== +"@polkadot/types-create@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/types-create/-/types-create-9.6.2.tgz#50954bad8fff0f96029a401d6388d2c7571628df" + integrity sha512-7s2Z2ir/l7RwxuG1aj3vIBnDT8hspMP/q20NR27ekY/8V+zEDjHWqofgETNRcG2MeHxQqzFEqUKjCOCy8BXiuw== dependencies: - "@babel/runtime" "^7.19.4" - "@polkadot/types-codec" "9.6.1" + "@babel/runtime" "^7.20.0" + "@polkadot/types-codec" "9.6.2" "@polkadot/util" "^10.1.11" -"@polkadot/types-known@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-9.6.1.tgz#a96b05156a145d350f749752fa7d980d6b1dcc89" - integrity sha512-D5Cc3VikkGnZmVbeNEgksgimdYQY/+pdrSr0xzAd2vZV0WBN17UmrXQ2EKGxEhITqt9n75Zsemh0oTIEOuc1WA== +"@polkadot/types-known@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/types-known/-/types-known-9.6.2.tgz#b109763dea97cadde453d38dde1cdd4586f9ae11" + integrity sha512-dekLSTr6CoukKAJezQ83Dn9ggOTRrRSMZr19Wi8NLJCTkbTzNCyFSMmQuwG1XxYWwTgjfqMLUVmInkLSxzDNSA== dependencies: - "@babel/runtime" "^7.19.4" + "@babel/runtime" "^7.20.0" "@polkadot/networks" "^10.1.11" - "@polkadot/types" "9.6.1" - "@polkadot/types-codec" "9.6.1" - "@polkadot/types-create" "9.6.1" + "@polkadot/types" "9.6.2" + "@polkadot/types-codec" "9.6.2" + "@polkadot/types-create" "9.6.2" "@polkadot/util" "^10.1.11" -"@polkadot/types-support@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-9.6.1.tgz#cd6f05a97b287e538e79fcc037b634e79bf1023b" - integrity sha512-4cfDbH6YTJ2dL8qYyBjMaJiAG8SQTUiTBtmymWDP58StgMtcOtDk2DByp0Nt3kWFH6/IhYGin3QZ1M00xdynAA== +"@polkadot/types-support@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/types-support/-/types-support-9.6.2.tgz#a33ae056a2092455777d377a4d4c948779d5e98e" + integrity sha512-rAVjf1lbknZRgNTRtfdXM9Zl7sMhF6kXP8qXF/7la43hGbolDnGskMRfzKvUhA4HRrjhT0w0bUXfEE+Snk1Q9w== dependencies: - "@babel/runtime" "^7.19.4" + "@babel/runtime" "^7.20.0" "@polkadot/util" "^10.1.11" -"@polkadot/types@9.6.1": - version "9.6.1" - resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-9.6.1.tgz#3e1fadfc678a90fb33d043da759435870b69e87c" - integrity sha512-HzWRW6715xxZ5pIB25idkeTtBMKfMVGk+D2lHl2eKiGQiTbo0m13HoSJAS9cR4kZeimMI8j+i2wpFysjW84Jlw== +"@polkadot/types@9.6.2": + version "9.6.2" + resolved "https://registry.yarnpkg.com/@polkadot/types/-/types-9.6.2.tgz#1be65ed096cdfd16f2acce79e77383a37b1e06d6" + integrity sha512-pP38vk+JfcQwgLwHsKttuj0yaM7uPQnst3Cd7u7ZX4qf5PmICtZ2Baz11NW0aF8mqhqgkNNF+a8PSUqJQd21Xg== dependencies: - "@babel/runtime" "^7.19.4" + "@babel/runtime" "^7.20.0" "@polkadot/keyring" "^10.1.11" - "@polkadot/types-augment" "9.6.1" - "@polkadot/types-codec" "9.6.1" - "@polkadot/types-create" "9.6.1" + "@polkadot/types-augment" "9.6.2" + "@polkadot/types-codec" "9.6.2" + "@polkadot/types-create" "9.6.2" "@polkadot/util" "^10.1.11" "@polkadot/util-crypto" "^10.1.11" rxjs "^7.5.7" @@ -10071,6 +10071,11 @@ regenerate@^1.4.2: resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== +regenerator-runtime@^0.13.10: + version "0.13.10" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.10.tgz#ed07b19616bcbec5da6274ebc75ae95634bfc2ee" + integrity sha512-KepLsg4dU12hryUO7bp/axHAKvwGOCV0sGloQtpagJ12ai+ojVDqkeGSiRX1zlq+kjIMZ1t7gpze+26QqtdGqw== + regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" From f74f990333ec8c65ef02ae6e0fa438bc5017c893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20M=C3=BCller?= Date: Wed, 2 Nov 2022 02:37:31 +0000 Subject: [PATCH 33/35] Update build-open-source.md (#4001) * Update build-open-source.md Add Signac * Update badge Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 81a7dc6210d0..5991bf260a6c 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -102,7 +102,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Substrate Contract clients | [PatractGo](https://github.com/patractlabs/go-patract) 🔴| | | SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟢, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟢, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟡, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟡, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟡| | Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | -| Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴| +| Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴, [Signac](https://github.com/standardweb3/signac/) 🟢| | Runtime/Pallet Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴,[Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | | Smart Contract Languages | [Ask!](https://github.com/ask-lang/ask) 🟢, [Subscript](https://github.com/slickup/subscript) 🔴, [Solang](https://github.com/hyperledger-labs/solang) 🟢, [Ink!](https://github.com/paritytech/ink) 🟢, [Move VM Substrate](https://github.com/pontem-network/sp-move) 🔴, [Move smart contract by Neatcoin](https://github.com/neatcoin/neatcoin) 🟢, [Sol2Ink](https://github.com/Supercolony-net/sol2ink) 🟡| Functional Programming Languages, other languages with developed toolchains | | Smart Contract Security | [Vanguard](https://github.com/Veridise/Vanguard) 🟡| From f3b6dce613e09d709604f97913d2b4a1ddb3792a Mon Sep 17 00:00:00 2001 From: David Hawig Date: Wed, 2 Nov 2022 14:19:38 +0100 Subject: [PATCH 34/35] Add Parami, update litentry (#4003) * Add Parami, update litentry Add Parami to the open source stack, update litentry * Update badge Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 5991bf260a6c..848eec714b49 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -140,7 +140,7 @@ In the below sections you can find a list of different layers of the Polkadot St | DeFi | [Reef](https://github.com/reef-defi/reef-chain) 🟡, [Diora](https://github.com/Diora-Network/Diora) 🔴, [Pendulum Chain](https://github.com/pendulum-chain/pendulum) 🟢, [Compound Gateway](https://github.com/compound-finance/gateway) 🔴, [Parallel Finance](https://github.com/parallel-finance/parallel) 🟢, [PINT](https://github.com/ChainSafe/PINT) 🔴, [Laminar Chain](https://github.com/laminar-protocol/laminar-chain) 🔴, [Acala](https://github.com/AcalaNetwork/Acala) 🟢, [Centrifuge](https://github.com/centrifuge/centrifuge-chain) 🟢, [Stafi](https://github.com/stafiprotocol/stafi-node) 🟡, [Definex](https://github.com/y2labs-0sh/definex) 🔴, [OAX Foundation](https://github.com/OAXFoundation/parrot) 🔴, [Cybex](https://github.com/alexxuyang/substrate-dex) 🔴, [Zenlink](https://github.com/zenlinkpro/pallet-zenlink) 🔴, [Swaps Pallet](https://github.com/lsaether/pallet-swaps) 🔴, [Polkadex](https://github.com/Polkadex-Substrate/Polkadex/tree/master) 🟢, [SubDEX](https://github.com/subdarkdex/subdex-parachain) 🔴, [HydraDX](https://github.com/galacticcouncil/hack.HydraDX-node) 🟢, [Substrate Stablecoin](https://github.com/apopiak/stablecoin) 🔴, [Standard protocol](https://github.com/digitalnativeinc/standard-substrate) 🔴, [Polkaswap](https://github.com/sora-xor/sora2-network) 🟢, [Curve AMM](https://github.com/equilibrium-eosdt/equilibrium-curve-amm) 🔴, [Konomi Network](https://github.com/konomi-network/cumulus/) 🔴, [Composable Finance](https://github.com/ComposableFi/composable) 🟢, [Stable Asset](https://github.com/nutsfinance/stable-asset) 🟢, [Libra Payment](https://github.com/atscaletech/libra) 🟡, [Mangata](https://github.com/mangata-finance/mangata-node) 🟢, [Tidechain](https://github.com/tidelabs/tidechain) 🟢, [Basilisk](https://github.com/galacticcouncil/Basilisk-node) 🟢, [Polymesh](https://github.com/PolymeshAssociation/Polymesh) 🟢, [Supersig](https://github.com/kabocha-network/pallet_supersig) 🟡| DEX with privacy and confidentiality features such as those found in a [dark pool](https://en.wikipedia.org/wiki/Dark_pool) | | Smart contract chains | [moonbeam](https://github.com/PureStake/moonbeam) 🟢, [Edgeware](https://github.com/hicommonwealth/edgeware-node) 🔴, [ParaState](https://github.com/ParaState/substrate-ssvm-node) 🔴, [gear](https://github.com/gear-tech/gear) 🟢, [CENNZnet](https://github.com/cennznet/cennznet) 🟡, [SkyeKiwi](https://github.com/skyekiwi/skyekiwi-network) 🟢, [OAK-blockchain](https://github.com/OAK-Foundation/OAK-blockchain) 🟢, [ICE Blockchain](https://github.com/web3labs/ice-substrate) 🟢| smart contract chains with novel security approaches, smart contract chains based on existing toolchains | | Oracle | [Laminar](https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle) 🟢, [Chainlink-polkadot](https://github.com/smartcontractkit/chainlink-polkadot) 🔴, [Ares Protocol](https://github.com/aresprotocols/ares) 🟢, [Kylin Network](https://github.com/Kylin-Network/kylin-node) 🟢, [interbtc-clients oracle](https://github.com/interlay/interbtc-clients/tree/master/oracle) 🟢, [Anonima](https://github.com/webb-tools/anonima) 🔴, [Apollo](https://github.com/ComposableFi/composable/tree/main/code/parachain/frame/oracle) 🟢| -| Identity/DID | [Litentry](https://github.com/litentry/litentry-runtime) 🔴, [pallet-did](https://github.com/substrate-developer-hub/pallet-did) 🔴, [dot-id](https://github.com/prasad-kumkar/dot-id) 🔴| +| Identity/DID | [Parami](https://github.com/parami-foundation/parami-blockchain) 🟢, [Litentry](https://github.com/litentry/litentry-parachain) 🔴, [pallet-did](https://github.com/substrate-developer-hub/pallet-did) 🔴, [dot-id](https://github.com/prasad-kumkar/dot-id) 🔴| | IoT | [Nodle](https://github.com/NodleCode/chain) 🟢, [MXC/DataHighway](https://github.com/DataHighway-DHX/node) 🔴, [peaq-network-node](https://github.com/peaqnetwork/peaq-network-node) 🟢| | Verifiable Claims | [KILT](https://github.com/KILTprotocol/kilt-node) 🟢, [Dock](https://github.com/docknetwork/dock-substrate) 🟡, [Fennel Protocol](https://github.com/fennelLabs/Fennel-Protocol) 🟢| | Supply chain | [DSCP Node](https://github.com/digicatapult/dscp-node) 🟢| | From d8adf6d00dfed0277c2bd67e1d466cb310f1266f Mon Sep 17 00:00:00 2001 From: David Hawig Date: Wed, 2 Nov 2022 14:21:49 +0100 Subject: [PATCH 35/35] Add projects to "Easy Runtime Development" (#4004) * Add projects to "Easy Runtime Development" Add projects to "Easy Runtime Development" * Update badge Co-authored-by: Radha <86818441+DrW3RK@users.noreply.github.com> --- docs/build/build-open-source.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/build/build-open-source.md b/docs/build/build-open-source.md index 848eec714b49..8cc198e5336b 100644 --- a/docs/build/build-open-source.md +++ b/docs/build/build-open-source.md @@ -101,7 +101,7 @@ In the below sections you can find a list of different layers of the Polkadot St | Client Libraries | [Go](https://github.com/centrifuge/go-substrate-rpc-client) 🟢, [.Net](https://github.com/usetech-llc/polkadot_api_dotnet) 🔴, [.NET Standard 2.0](https://github.com/ajuna-network/Ajuna.NetApi) 🟢, [C++](https://github.com/usetech-llc/polkadot_api_cpp) 🔴, [C](https://github.com/finoabanking/substrate-c-tool) 🔴, [Haskell](https://github.com/airalab/hs-web3) 🟡, [Javascript](https://github.com/polkadot-js/api) 🟢, [Substrate API Sidecar - TypeScript](https://github.com/paritytech/substrate-api-sidecar) 🟢, [Ruby](https://github.com/itering/scale.rb) 🟢, [Python](https://github.com/polkascan/py-substrate-interface) 🟢, [Java (+ Android)](https://github.com/emeraldpay/polkaj) 🔴, [Substrate Client Java](https://github.com/strategyobject/substrate-client-java) 🟡, [Rust SCS](https://github.com/scs/substrate-api-client) 🟢, [Rust Parity](https://github.com/paritytech/substrate-subxt) 🟢, [Rust pdotc](https://github.com/trevor-crypto) [PHP (gmajor-encrypt)](https://github.com/gmajor-encrypt/php-substrate-api) 🔴, [PHP (neha0921)](https://github.com/neha0921/substrate-interface-package) 🔴, [RPC-Ethereum](https://github.com/paritytech/frontier) 🟢, [Swift](https://github.com/tesseract-one/Substrate.swift) 🔴, [Kotlin](https://github.com/NodleCode/substrate-client-kotlin) 🔴| | | Substrate Contract clients | [PatractGo](https://github.com/patractlabs/go-patract) 🔴| | | SCALE Codec | [Rust](https://github.com/paritytech/parity-scale-codec) 🟢, [TypeScript](https://github.com/paritytech/parity-scale-codec-ts) 🟢, [Python](https://github.com/polkascan/py-scale-codec) 🟢, [Golang Chainsafe](https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/) 🟢, [Golang Itering](https://github.com/itering/scale.go) 🟢, [C](https://github.com/MatthewDarnell/cScale) 🔴, [C++](https://github.com/soramitsu/scale-codec-cpp) 🟢, [JavaScript](https://github.com/polkadot-js/api) 🟢, [AssemblyScript](https://github.com/LimeChain/as-scale-codec) 🔴, [Haskell](https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec) 🟡, [Java](https://github.com/emeraldpay/polkaj) 🔴, [Ruby](https://github.com/itering/scale.rb) 🟢, [Dart](https://github.com/nbltrust/dart-scale-codec) 🔴, [Swift](https://github.com/tesseract-one/swift-scale-codec) 🔴, [PHP](https://github.com/gmajor-encrypt/php-scale-codec) 🟡, [JavaScript by Soramitsu](https://github.com/soramitsu/scale-codec-js-library) 🟡, [Scale Codec Comparator](https://github.com/gmajor-encrypt/scale-codec-comparator) 🟡| -| Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | +| Easy Runtime Development | [Subalfred](https://github.com/hack-ink/subalfred) 🟢, [substrate-stencil](https://github.com/kaichaosun/substrate-stencil) 🟡, [Play Substrate](https://github.com/kaichaosun/play-substrate), [substrate-node-template](https://github.com/substrate-developer-hub/substrate-node-template), [VS Code Plugin](https://github.com/everstake/vscode-plugin-substrate) 🔴, [Atom Code Plugin](https://github.com/everstake/atom-plugin-substrate) 🔴, [Substrate Playground](https://github.com/paritytech/substrate-playground) 🟢, [Substrate Marketplace VS Code Plugin](https://github.com/paritytech/vscode-substrate) 🔴, [AssemblyScript Runtime Generation](https://github.com/LimeChain/as-substrate-runtime) 🔴, [Substrate Package Manager](https://github.com/clearloop/sup) 🔴, [Subsembly: Framework for developing AssemblyScript Substrate Runtimes](https://github.com/LimeChain/subsembly) 🔴, [dependency diener](https://github.com/bkchr/diener) 🟢| | | Easy Smart Contract Development | [Typechain Polkadot](https://github.com/Supercolony-net/typechain-polkadot) 🟡, [ink-playground](https://github.com/staketechnologies/ink-playground/tree/master) 🔴, [Ink! Remix Plugin](https://github.com/blockchain-it-hr/ink-remix-plugin) 🔴, [Signac](https://github.com/standardweb3/signac/) 🟢| | Runtime/Pallet Security | [Substrate Toml Lint](https://github.com/shawntabrizi/substrate-toml-lint) 🟡, [K specifications](https://github.com/kframework/wasm-semantics) 🔴,[Static analyzer for Substrate FRAME's pallets](https://github.com/simon-perriard/saft) 🟡, [PolPatrol - Polkadot Runtime Checker](https://github.com/ChainSecurity/polpatrol) 🔴| Automated Runtime checking tools, economic audit simulator such as [gauntlet.network](https://gauntlet.network/) | | Smart Contract Languages | [Ask!](https://github.com/ask-lang/ask) 🟢, [Subscript](https://github.com/slickup/subscript) 🔴, [Solang](https://github.com/hyperledger-labs/solang) 🟢, [Ink!](https://github.com/paritytech/ink) 🟢, [Move VM Substrate](https://github.com/pontem-network/sp-move) 🔴, [Move smart contract by Neatcoin](https://github.com/neatcoin/neatcoin) 🟢, [Sol2Ink](https://github.com/Supercolony-net/sol2ink) 🟡| Functional Programming Languages, other languages with developed toolchains |

    cZCU?+E9Aw87 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 -l}(_IjDUi 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%0A0i6~M2jYji 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