From 877c7befe9d2ead5377ca4a1d60ed588afeadc1e Mon Sep 17 00:00:00 2001 From: Polkadot Wiki CI Date: Thu, 18 Apr 2024 13:40:29 +0000 Subject: [PATCH] Deploy website - based on 4d2586b18a6b50b1300c25cf6f03c9eb6c8a7d8d --- 404.html | 8 +- ...ulate-376dcd569f7a4b6f1ed20798f522bd0e.png | Bin 0 -> 200718 bytes assets/js/2d34559d.0bce0fe4.js | 1 + ...7224c.c024be92.js => 41f7224c.2ed84beb.js} | 2 +- ...f2afb.132e7609.js => 935f2afb.04c51c75.js} | 2 +- assets/js/ccc1222e.1d45d596.js | 1 - assets/js/ccc1222e.582baac2.js | 1 + assets/js/cda87995.13ccfd80.js | 1 + assets/js/cda87995.91fb2662.js | 1 - ...b42b0.346ff64c.js => db0b42b0.106f625e.js} | 2 +- assets/js/main.0e16765f.js | 2 - assets/js/main.f5d5a325.js | 2 + ...CENSE.txt => main.f5d5a325.js.LICENSE.txt} | 0 assets/js/runtime~main.523625f0.js | 1 + assets/js/runtime~main.67ea34d3.js | 1 - docs/alpha-program.html | 8 +- docs/ambassadors.html | 8 +- docs/apps-index.html | 8 +- docs/bug-bounty.html | 8 +- docs/build-archive-index.html | 8 +- docs/build-client-index.html | 8 +- docs/build-client-side.html | 8 +- docs/build-dapp.html | 8 +- docs/build-data.html | 8 +- docs/build-guide.html | 8 +- docs/build-hackathon.html | 8 +- docs/build-hrmp-channels.html | 8 +- docs/build-index.html | 8 +- docs/build-integrate-assets.html | 8 +- docs/build-integration.html | 8 +- docs/build-light-clients.html | 8 +- docs/build-network-overview.html | 8 +- docs/build-node-interaction.html | 8 +- docs/build-node-management.html | 8 +- docs/build-open-source.html | 12 +- docs/build-oracle.html | 8 +- docs/build-pdk.html | 8 +- docs/build-protocol-index.html | 8 +- docs/build-protocol-info.html | 8 +- docs/build-smart-contracts.html | 8 +- docs/build-storage.html | 8 +- docs/build-tools-index.html | 18 +- docs/build-transaction-construction.html | 8 +- docs/community-index.html | 8 +- docs/community.html | 8 +- docs/contributing.html | 8 +- docs/contributors.html | 8 +- docs/dashboards-index.html | 8 +- docs/decentralized-futures.html | 8 +- docs/decentralized-voices.html | 8 +- docs/dev-heroes.html | 8 +- docs/en/learn-jam-chain/index.html | 11 + docs/explore-index.html | 8 +- docs/faq.html | 8 +- docs/general-index.html | 8 +- docs/getting-started.html | 8 +- docs/glossary.html | 8 +- docs/governance-apps.html | 8 +- docs/grants.html | 8 +- docs/how-to-dyor.html | 8 +- docs/kusama-adversarial-cheatsheet.html | 8 +- docs/kusama-bug-bounty.html | 8 +- docs/kusama-claims.html | 8 +- docs/kusama-coc.html | 8 +- docs/kusama-community.html | 8 +- docs/kusama-getting-started.html | 8 +- docs/kusama-index.html | 8 +- docs/kusama-parameters.html | 8 +- docs/kusama-social-recovery.html | 8 +- docs/kusama-timeline.html | 8 +- docs/learn-DOT.html | 8 +- docs/learn-account-abstraction.html | 8 +- docs/learn-account-advanced.html | 8 +- docs/learn-account-multisig.html | 8 +- docs/learn-accounts.html | 8 +- docs/learn-advanced-index.html | 8 +- docs/learn-agile-coretime-index.html | 8 +- docs/learn-agile-coretime.html | 8 +- docs/learn-architecture.html | 8 +- docs/learn-archive.html | 10 +- docs/learn-asset-conversion-assethub.html | 8 +- docs/learn-assets-index.html | 8 +- docs/learn-assets.html | 8 +- docs/learn-async-backing.html | 8 +- docs/learn-auction.html | 8 +- docs/learn-basics-index.html | 8 +- docs/learn-bridge-hub.html | 8 +- docs/learn-bridges.html | 8 +- docs/learn-collator.html | 8 +- docs/learn-comparisons-avalanche.html | 8 +- docs/learn-comparisons-cosmos.html | 8 +- docs/learn-comparisons-ethereum-2.html | 8 +- docs/learn-comparisons-index.html | 8 +- docs/learn-comparisons-kusama.html | 8 +- docs/learn-comparisons-rollups.html | 8 +- docs/learn-comparisons.html | 8 +- docs/learn-components-index.html | 8 +- docs/learn-consensus.html | 8 +- docs/learn-crowdloans.html | 8 +- docs/learn-cryptography.html | 8 +- docs/learn-dot-ksm-bridge.html | 8 +- docs/learn-elastic-scaling.html | 10 +- docs/learn-future-implementations-index.html | 10 +- docs/learn-guides-accounts-multisig.html | 8 +- docs/learn-guides-accounts-proxy-pure.html | 8 +- docs/learn-guides-accounts-proxy.html | 8 +- docs/learn-guides-accounts.html | 8 +- docs/learn-guides-asset-conversion.html | 8 +- docs/learn-guides-assets-create.html | 8 +- docs/learn-guides-assets-ledger.html | 8 +- docs/learn-guides-assets.html | 8 +- docs/learn-guides-bounties.html | 8 +- docs/learn-guides-bridges.html | 8 +- docs/learn-guides-coretime-marketplaces.html | 8 +- docs/learn-guides-coretime-parachains.html | 8 +- docs/learn-guides-dot-ksm-bridge.html | 8 +- docs/learn-guides-identity.html | 8 +- docs/learn-guides-ledger.html | 8 +- docs/learn-guides-nominator.html | 8 +- docs/learn-guides-polkadot-opengov.html | 8 +- docs/learn-guides-staking-pools.html | 8 +- docs/learn-guides-staking.html | 8 +- docs/learn-guides-transfers.html | 8 +- docs/learn-guides-treasury.html | 8 +- docs/learn-guides-vault.html | 8 +- docs/learn-hyperbridge.html | 8 +- docs/learn-identity.html | 8 +- docs/learn-implementations.html | 8 +- docs/learn-index.html | 8 +- docs/learn-inflation.html | 8 +- docs/learn-jam-chain.html | 241 ++++++++++++++++++ docs/learn-nft-pallets.html | 8 +- docs/learn-nft-projects.html | 8 +- docs/learn-nft.html | 8 +- docs/learn-nomination-pools.html | 8 +- docs/learn-nominator.html | 8 +- docs/learn-parachains-faq.html | 8 +- docs/learn-parachains-index.html | 8 +- docs/learn-parachains-protocol.html | 8 +- docs/learn-parachains.html | 8 +- docs/learn-parathreads.html | 10 +- docs/learn-participants-index.html | 8 +- docs/learn-phragmen.html | 8 +- docs/learn-polkadot-host.html | 8 +- docs/learn-polkadot-js-guides.html | 8 +- docs/learn-polkadot-opengov-index.html | 8 +- docs/learn-polkadot-opengov-origins.html | 8 +- docs/learn-polkadot-opengov-treasury.html | 8 +- docs/learn-polkadot-opengov.html | 8 +- docs/learn-polkadot-technical-fellowship.html | 8 +- docs/learn-polkadotjs.html | 8 +- docs/learn-proxies-pure.html | 8 +- docs/learn-proxies.html | 8 +- docs/learn-runtime-upgrades.html | 8 +- docs/learn-sassafras.html | 12 +- docs/learn-scams.html | 8 +- docs/learn-spree.html | 10 +- docs/learn-staking-advanced.html | 8 +- docs/learn-staking-index.html | 8 +- docs/learn-staking.html | 8 +- docs/learn-system-chains.html | 8 +- docs/learn-teleport.html | 8 +- docs/learn-transaction-fees.html | 8 +- docs/learn-transactions.html | 8 +- docs/learn-validator.html | 8 +- docs/learn-video-tutorials.html | 8 +- docs/learn-wasm.html | 8 +- docs/learn-xcm-index.html | 8 +- docs/learn-xcm-instructions.html | 8 +- docs/learn-xcm-pallet.html | 8 +- docs/learn-xcm-transport.html | 8 +- docs/learn-xcm-usecases.html | 8 +- docs/learn-xcm.html | 8 +- docs/learn-xcvm.html | 8 +- docs/learn/learn-controller.html | 8 +- docs/learn/learn-governance.html | 8 +- docs/learn/learn-launch.html | 8 +- docs/learn/learn-redenomination.html | 8 +- docs/learn/learn-treasury.html | 8 +- docs/learn/xcm.html | 8 +- docs/learn/xcm/config-deep-dive.html | 8 +- docs/learn/xcm/fundamentals-fees.html | 8 +- docs/learn/xcm/fundamentals-multiasset.html | 8 +- docs/learn/xcm/fundamentals-summary.html | 8 +- docs/learn/xcm/fundamentals-xcvm.html | 8 +- docs/learn/xcm/fundamentals.html | 8 +- .../fundamentals/multilocation-example.html | 8 +- .../fundamentals/multilocation-junctions.html | 8 +- .../fundamentals/multilocation-summary.html | 8 +- .../learn/xcm/fundamentals/multilocation.html | 8 +- docs/learn/xcm/introduction.html | 8 +- docs/learn/xcm/journey-assets.html | 8 +- docs/learn/xcm/journey-channels.html | 8 +- docs/learn/xcm/journey-expectations.html | 8 +- docs/learn/xcm/journey-fees.html | 8 +- docs/learn/xcm/journey-holding.html | 8 +- docs/learn/xcm/journey-locks.html | 8 +- docs/learn/xcm/journey-origin.html | 8 +- docs/learn/xcm/journey-queries.html | 8 +- docs/learn/xcm/journey-register.html | 8 +- docs/learn/xcm/journey-summary.html | 8 +- docs/learn/xcm/journey-transact.html | 8 +- docs/learn/xcm/journey-version.html | 8 +- docs/learn/xcm/journey.html | 8 +- docs/learn/xcm/journey/transfers-reserve.html | 8 +- docs/learn/xcm/journey/transfers-summary.html | 8 +- .../learn/xcm/journey/transfers-teleport.html | 8 +- docs/learn/xcm/journey/transfers.html | 8 +- docs/learn/xcm/overview-architecture.html | 8 +- docs/learn/xcm/overview-format.html | 8 +- docs/learn/xcm/overview-intro.html | 8 +- docs/learn/xcm/overview-summary.html | 8 +- docs/learn/xcm/overview-xcvm.html | 8 +- docs/learn/xcm/overview.html | 8 +- docs/learn/xcm/quickstart-first-look.html | 8 +- docs/learn/xcm/quickstart-simulator.html | 8 +- docs/learn/xcm/quickstart-summary.html | 8 +- docs/learn/xcm/quickstart.html | 8 +- docs/learn/xcm/reference-glossary.html | 8 +- docs/learn/xcm/reference-xcvm-registers.html | 8 +- docs/learn/xcm/references.html | 8 +- docs/learn/xcm/testing.html | 8 +- docs/ledger.html | 8 +- docs/maintain-archive.html | 8 +- docs/maintain-bootnode.html | 8 +- docs/maintain-collator-index.html | 8 +- docs/maintain-endpoints.html | 8 +- docs/maintain-errors.html | 8 +- docs/maintain-guides-async-backing.html | 8 +- docs/maintain-guides-avoid-slashing.html | 8 +- docs/maintain-guides-how-to-chill.html | 8 +- ...ntain-guides-how-to-monitor-your-node.html | 8 +- ...aintain-guides-how-to-stop-validating.html | 8 +- docs/maintain-guides-how-to-systemd.html | 8 +- docs/maintain-guides-how-to-upgrade.html | 8 +- ...aintain-guides-how-to-validate-kusama.html | 8 +- ...ntain-guides-how-to-validate-polkadot.html | 8 +- docs/maintain-guides-secure-validator.html | 8 +- docs/maintain-guides-society-kusama.html | 8 +- docs/maintain-guides-validator-community.html | 8 +- docs/maintain-guides-validator-payout.html | 8 +- docs/maintain-index.html | 8 +- docs/maintain-networks.html | 8 +- docs/maintain-node-index.html | 8 +- docs/maintain-polkadot-parameters.html | 8 +- docs/maintain-rpc.html | 8 +- docs/maintain-sync.html | 8 +- docs/maintain-validator-index.html | 8 +- docs/maintain-wss.html | 8 +- docs/maintain/maintain-guides-democracy.html | 8 +- .../maintain-guides-how-to-join-council.html | 8 +- ...aintain-guides-how-to-vote-councillor.html | 8 +- docs/metadata.html | 8 +- docs/multisig-apps.html | 8 +- docs/parachains-apps.html | 8 +- docs/polkadot-direction.html | 8 +- docs/polkadot-v1.html | 8 +- docs/polkadot-vault.html | 8 +- docs/polkadot-vision-index.html | 8 +- docs/polkadotjs-ui.html | 8 +- docs/polkadotjs.html | 8 +- docs/programs-index.html | 8 +- docs/research.html | 8 +- docs/staking-apps.html | 8 +- docs/staking-dashboard.html | 8 +- docs/start-building.html | 8 +- docs/stay-safe-index.html | 8 +- docs/thousand-contributors.html | 8 +- docs/thousand-validators.html | 8 +- docs/transaction-attacks.html | 8 +- docs/wallets-and-extensions.html | 8 +- docs/wallets-index.html | 8 +- docs/web3-and-polkadot.html | 8 +- index.html | 8 +- search.html | 8 +- sitemap.xml | 2 +- 276 files changed, 1313 insertions(+), 1058 deletions(-) create mode 100644 assets/images/refine-accumulate-376dcd569f7a4b6f1ed20798f522bd0e.png create mode 100644 assets/js/2d34559d.0bce0fe4.js rename assets/js/{41f7224c.c024be92.js => 41f7224c.2ed84beb.js} (97%) rename assets/js/{935f2afb.132e7609.js => 935f2afb.04c51c75.js} (61%) delete mode 100644 assets/js/ccc1222e.1d45d596.js create mode 100644 assets/js/ccc1222e.582baac2.js create mode 100644 assets/js/cda87995.13ccfd80.js delete mode 100644 assets/js/cda87995.91fb2662.js rename assets/js/{db0b42b0.346ff64c.js => db0b42b0.106f625e.js} (74%) delete mode 100644 assets/js/main.0e16765f.js create mode 100644 assets/js/main.f5d5a325.js rename assets/js/{main.0e16765f.js.LICENSE.txt => main.f5d5a325.js.LICENSE.txt} (100%) create mode 100644 assets/js/runtime~main.523625f0.js delete mode 100644 assets/js/runtime~main.67ea34d3.js create mode 100644 docs/en/learn-jam-chain/index.html create mode 100644 docs/learn-jam-chain.html diff --git a/404.html b/404.html index 94b00c5407a8..cf2e5826b664 100644 --- a/404.html +++ b/404.html @@ -19,13 +19,13 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/assets/images/refine-accumulate-376dcd569f7a4b6f1ed20798f522bd0e.png b/assets/images/refine-accumulate-376dcd569f7a4b6f1ed20798f522bd0e.png new file mode 100644 index 0000000000000000000000000000000000000000..a105aa8597504d16dd6c0014fb3c791b6cedf747 GIT binary patch literal 200718 zcmeFZga5A)id>1s&mO*YqhEs-Y~`52>yY;*FrkjrEw7ZF9 zr@aJN!4q-`@?o(#*g-6u5F-(|{p}wr`+3A);1TxWtg^;`?uI8#O}&9xp1cEJpCVp< zbDa|^xte%-w#4W4<;R5~$KP_+fys&E$OMr7FkJkS@Q(83nJ~?G z+%_$ZeB!nbbLOokPH#C3b+J9?mMn}a52*svj;S!(oNq|_S6=_uFl^kt?H(Sn9?d&1-(Rj0mQw`7>W?$hM;;3|G?uD2*VC^_6jq}dBf@VeRmSRv5@K}M z{T-%>Up?tPdX(C2A_#;rhP#qRVIV>K%Riv(R?)+!N}W+6K_Crfz6+NbE6DlwZksG< zw|g52acD2<>en}9hgazsIRRfZ?=;iMh9lK)w@n{cU(?tjR$KXgPBWy>(1gLw(;=C7 z{Z@2fjMMkLBxRT_8@+D3NSJvAt_?=7Yst|(a8{U zt?1Xp+k$UyvB>xbNr-Vtk3fOKgMLJ&APJ=J?~fSbA_rj=-jBooB*oQ}G0y$kGlkiO zHTd%BO*%XQ?rthdYVGsJg~+j65OVU%7a#D#BsB=m$r0bchi3O0c>HOH#`UtF8JXKa-y(jDj2^%1UK~TDYNth-V>nlAD;Vcvg!z!V&jWex?k;>W*U+y^>=(;JX%bxcFc5AN6ay7f_&*}9CM1b~8BYGeLXwh9lzdRum|r=nOmO~#_IG?^f$6Vl!i=QpgEl+wr^8#t`Lo}Z z1XyN^7ro_vWs)V!N*F0Ym6g1YUHg(jC^5@w%F>ww5S<~+l)W&;c=>|+3#=^OOqc8@ zqzM1&Dr)){Bb~jA)@7)roh8-WWq9j*rJA_&!9KmAoM?sH==Lvyw~#q;GXp02akr1o z(%t#i!}R+|wjj40aPbC`RaEY87QZ@tmF-p)rpXSdO1Dq4N931T`|2i2rW9;0cll+) zkoi+8XJBJeqkm(f`;SE_Z&^ap7|DBbuOApRVZHC)ewUUyl5CNplGKn~%fpZ!mZp?u zla}Ie-|z zw`HNa5lf##V;4G?1a1kRde3~%*n7DvShSQNpm>~kM!#XCED`(7sqx9?x)8uTz`ESJ+_9VwZ~}lVrz}@2hc3_5($z&!jy%BRSjddrz}Xn;f3I;2z8$=uP=latKf8M^|bTG-!aE*QtD(eZTugJvl-U zArFX+{^>#yU8;eRh-Rqw;^vXRh`WfC*ta@Ec!G+u(?6H}MC~aLvI&A0?-zeBPL}H; zUKn{F;SvFf1V(D$k#L-{WhdXJyp&Z>PW$K~zfiz(&~#aMsqWcPoNZB5-0K`}(Q;tM zVg*D18Uou)Z^meLQ7=$0)OHzmAvlycMhvEaS-@&Fxi&LBkbXfk1L$pMViRv%*ICk4 zG60xJvC%cwwepz=vfMUf=_^>?O<|Zy_?&9g(pBGsUgrcHsVS{(v5sDDSwT7GSagdb zkGLeHA=KhKF9-~SpUIxgp8uJh8)fv>sM;uSdqfE*S6Q5a#Km@&gNmb2r_e^;EuAgB zCoMcZHC?}DvB_SSR<|OuAPSwB&&+vyU!&r>!h0dIqG8qC)@Ti~P?$^xA93?sVc}$!{E)<6h$vH}hUnu7r%4EL1)8@OGPi zs|zaqI`FL$!w>s2?)xZn;_xUmf)>Z)Hpvmm&&DFyA%+s=5zQnvM0^zYlBl03xeJ(g zEy|pZM;DzOY8#~-TDI2vkb0RSJ5mi|Nu|uCRApr4%A~wAv6E`aimg_Q9Dx10((IBr z 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�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

Tj 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 X&O5S3>eOUm1|aZs^>bP0l+XkKQ)2BV literal 0 HcmV?d00001 diff --git a/assets/js/2d34559d.0bce0fe4.js b/assets/js/2d34559d.0bce0fe4.js new file mode 100644 index 000000000000..9385aea2b100 --- /dev/null +++ b/assets/js/2d34559d.0bce0fe4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5645],{3905:(e,t,n)=>{n.d(t,{Zo:()=>h,kt:()=>m});var a=n(67294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function s(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=a.createContext({}),c=function(e){var t=a.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},h=function(e){var t=c(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,h=r(e,["components","mdxType","originalType","parentName"]),d=c(n),p=i,m=d["".concat(l,".").concat(p)]||d[p]||u[p]||o;return n?a.createElement(m,s(s({ref:t},h),{},{components:n})):a.createElement(m,s({ref:t},h))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,s=new Array(o);s[0]=p;var r={};for(var l in t)hasOwnProperty.call(t,l)&&(r[l]=t[l]);r.originalType=e,r[d]="string"==typeof e?e:i,s[1]=r;for(var c=2;c{n.r(t),n.d(t,{assets:()=>h,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var a=n(87462),i=n(63366),o=(n(67294),n(3905)),s=["components"],r={id:"learn-jam-chain",title:"Polkadot's JAM Chain",sidebar_label:"JAM Chain",description:"Polkadot's Join-Accumulate Machine.",keywords:["Polkadot","JAM","join-accumulate"],slug:"../learn-jam-chain"},l=void 0,c={unversionedId:"learn/learn-jam-chain",id:"learn/learn-jam-chain",title:"Polkadot's JAM Chain",description:"Polkadot's Join-Accumulate Machine.",source:"@site/../docs/learn/learn-jam-chain.md",sourceDirName:"learn",slug:"/learn-jam-chain",permalink:"/docs/learn-jam-chain",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-jam-chain.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1713447369,formattedLastUpdatedAt:"Apr 18, 2024",frontMatter:{id:"learn-jam-chain",title:"Polkadot's JAM Chain",sidebar_label:"JAM Chain",description:"Polkadot's Join-Accumulate Machine.",keywords:["Polkadot","JAM","join-accumulate"],slug:"../learn-jam-chain"},sidebar:"docs",previous:{title:"SASSAFRAS",permalink:"/docs/learn-sassafras"},next:{title:"Archive",permalink:"/docs/learn-archive"}},h={},d=[{value:"A Rollup Chain",id:"a-rollup-chain",level:2},{value:"Smart Contract Similarity",id:"smart-contract-similarity",level:2},{value:"Service Entry Points",id:"service-entry-points",level:2},{value:"JAM is Transactionless",id:"jam-is-transactionless",level:3},{value:"Refine Function",id:"refine-function",level:3},{value:"Accumulate Function",id:"accumulate-function",level:3},{value:"On-transfer Function",id:"on-transfer-function",level:3},{value:"JAM Chain's Generalization",id:"jam-chains-generalization",level:2},{value:"Polkadot Virtual Machine (PVM)",id:"polkadot-virtual-machine-pvm",level:2},{value:"SAFROLE",id:"safrole",level:2},{value:"Networking",id:"networking",level:2},{value:"Pipelining for Efficient Block Processing",id:"pipelining-for-efficient-block-processing",level:2},{value:"Architectural Differences: JAM vs. Relay Chain",id:"architectural-differences-jam-vs-relay-chain",level:2},{value:"JAM Toaster",id:"jam-toaster",level:2},{value:"JAM and Substrate",id:"jam-and-substrate",level:2},{value:"Benchmarks vs. Metering",id:"benchmarks-vs-metering",level:3},{value:"XCMP",id:"xcmp",level:3},{value:"Accords",id:"accords",level:3},{value:"Boosting Efficiency",id:"boosting-efficiency",level:3},{value:"Enhancements and Compatibility in JAM",id:"enhancements-and-compatibility-in-jam",level:2}],u={toc:d},p="wrapper";function m(e){var t=e.components,r=(0,i.Z)(e,s);return(0,o.kt)(p,(0,a.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("admonition",{type:"note"},(0,o.kt)("p",{parentName:"admonition"},"JAM paper is available at ",(0,o.kt)("a",{parentName:"p",href:"https://graypaper.com/"},"graypaper.com")," and the information regarding JAM\nprize is available at ",(0,o.kt)("a",{parentName:"p",href:"https://jam.web3.foundation/"},"jam.web3.foundation"),".")),(0,o.kt)("p",null,"JAM, short for Join-Accumulate Machine, represents a prospective design to succeed the relay chain.\nIts name originates from CoreJAM, denoting Collect Refine Join Accumulate, which outlines the\ncomputation model the machine embodies and that was\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/RFCs/blob/006a9ff07c3d3bc5316c6bf63b05e966e694cc2d/text/corejam.md"},"first described in an RFC by Gavin Wood"),".\nHowever, within the actual chain, only the Join and Accumulate functions are executed, while the\nCollect and Refine processes occur off-chain."),(0,o.kt)("p",null,"Unlike the current iterative approach, JAM will be introduced as a comprehensive singular upgrade.\nSeveral factors contribute to this decision:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"A unified upgrade allows for precise restriction of post-upgrade actions, which is challenging\nwith an iterative approach."),(0,o.kt)("li",{parentName:"ul"},"It mitigates the constant stream of minor upgrades and breaking changes that occur regularly over\nweeks or months.")),(0,o.kt)("p",null,"While this shift entails a significant breaking change, efforts will be made to minimize its impact\nto manageable levels. Consolidating multiple smaller breaking changes into a single transition is\ndeemed preferable, introducing a novel blockchain concept that uniquely integrates various existing\nideas."),(0,o.kt)("h2",{id:"a-rollup-chain"},"A Rollup Chain"),(0,o.kt)("p",null,"JAM will be a domain-specific chain that handles one particular domain of problems. In this case,\nroll-ups, what Ethereum people call optimistic roll-ups. JAM's rollups are heavily bounded in terms\nof their security. This is what Polkadot has been doing for the last five years, it is already a\nhighly domain-specific roll-up chain. JAM essentially makes it less opinionated and more generic."),(0,o.kt)("p",null,"The JAM chain accepts outputs of roll-ups, in more general terms, bits of computation done\nelsewhere, and integrates the outputs into a shared state, similarly to how the Polkadot Relay Chain\nfunctions."),(0,o.kt)("p",null,"The job of the JAM chain is to provide the necessary apparatus to ensure that the output correctly\nreflects the input when it goes through the transformation it's meant to have undergone."),(0,o.kt)("h2",{id:"smart-contract-similarity"},"Smart Contract Similarity"),(0,o.kt)("p",null,"JAM exhibits several similarities with a smart contract chain:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Permissionless code execution occurs directly on the JAM chain itself."),(0,o.kt)("li",{parentName:"ul"},"The state of the JAM chain is organized into distinct encapsulations."),(0,o.kt)("li",{parentName:"ul"},"Alongside state, encapsulations encompass code and balance.")),(0,o.kt)("p",null,"These encapsulations of state are termed ",(0,o.kt)("strong",{parentName:"p"},"services"),". Thus, the JAM state is partitioned into\nservices. The creation of a new service is permissionless, akin to deploying a smart contract on a\nsmart contract chain. Consequently, adding a new service to the JAM chain does not necessitate\napproval from any authority or adherence to governance mechanisms, unlike Substrate-based chains\nthat mandate governance approval for adding new pallets. Services encompass code, balance, and\ncertain state components, resembling the structure commonly observed on a smart contract chain."),(0,o.kt)("h2",{id:"service-entry-points"},"Service Entry Points"),(0,o.kt)("p",null,"JAM services' code is split into three different entry points:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Refine")," is the function that does the mostly stateless computation. It defines the\ntransformation for the rollup for a specific service."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"Accumulate")," is the function that takes the output of that and folds it into the overall state\nof the service"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"OnTransfer")," handles information coming from other services.")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Work packages")," are the input to a service. Work packages can have many ",(0,o.kt)("strong",{parentName:"p"},"work items")," in them.\nEvery work item is associated with a service, and it reflects the actual input to the service. For\nthe parachains service, this is where the transactions and all of the blockchain inputs are entered."),(0,o.kt)("p",null,"The JAM security apparatus consists a two-stage processing where the Refine function accepts a work\nitem as an input and yields a work result as an output, which gets fed into the Accumulate function\n(first Refine, then Accumulate). Work items are refined into ",(0,o.kt)("strong",{parentName:"p"},"work results"),", and therefore, a work\npackage containing many work items is refined into a ",(0,o.kt)("strong",{parentName:"p"},"work report"),", which is the corresponding\nresults of several items. A work package can be assigned that uses one core for a specific time slot\n(typically a period of 6 seconds)."),(0,o.kt)("p",null,(0,o.kt)("img",{alt:"refine-accumulate",src:n(95209).Z,width:"1874",height:"1052"})),(0,o.kt)("h3",{id:"jam-is-transactionless"},"JAM is Transactionless"),(0,o.kt)("p",null,"JAM distinguishes itself from smart contract chains by operating transactionlessly. There are no\ntransactions within JAM; all actions are permissionless and initially undergo a Refine stage. During\nthis stage, the service pre-refines input data, transforming it into work reports consisting of work\nresults. Subsequently, these work results are transferred onto the chain."),(0,o.kt)("p",null,"Despite the absence of transactions, JAM still accommodates extrinsic information of a specific\nformat. There are five types of extrinsic information:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Guarantees"),(0,o.kt)("li",{parentName:"ul"},"Assurances"),(0,o.kt)("li",{parentName:"ul"},"Judgments"),(0,o.kt)("li",{parentName:"ul"},"Preimages"),(0,o.kt)("li",{parentName:"ul"},"Tickets")),(0,o.kt)("p",null,"The first three types form part of the JAM chain's security framework. Guarantees and assurances\ninvolve validators collectively attesting that a work result accurately reflects the outcome of its\ncorresponding work item after transformation through the service's refine function."),(0,o.kt)("p",null,"Judgments occur when a work result does not align with its intended work item and has already been\nintegrated into the service\u2019s state. A rollback is necessary in such cases, and the result\u2019s\ninvalidity is recorded. Judgments must occur within one hour of submitting the work report to the\nchain, during which finality is temporarily paused."),(0,o.kt)("p",null,"Preimages represent a feature provided by the JAM chain for the refine function. While the refine\nfunction is typically stateless, it can perform one stateful operation: looking up the preimage of a\nhash. This feature is the only opinionated aspect of the refine function."),(0,o.kt)("p",null,"Tickets serve as anonymous entries into the block production mechanism. They are not immediately\nrequired for block production; instead, the system operates two epochs in advance. This mechanism is\npart of the SAFROL algorithm, a refined version of the original ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-sassafras"},"SASSAFRAS"),"\nalgorithm."),(0,o.kt)("h3",{id:"refine-function"},"Refine Function"),(0,o.kt)("p",null,"In the Refine processing stage within JAM, up to 5 MB of data can be accepted during each time slot,\nwhich lasts 6 seconds. However, Refine yields a maximum of 4 kB of data, resulting in significant\ndata compaction that is necessary due to the distributed nature of\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-parachains-protocol#availability-and-validity-anv-protocol"},"the availability system"),".\nFor instance, in the context of a parachain, the 5 MB of data represents the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-parachains-protocol#protocols-summary"},"Proof of Validity (PoV)"),", while the 4 kB of data\ncorresponds to the ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-parachains-protocol#candidate-receipts"},"candidate receipt"),"."),(0,o.kt)("p",null,"Refine can execute for up to 6 seconds of ",(0,o.kt)("a",{parentName:"p",href:"#polkadot-virtual-machine-pvm"},"PVM")," gas, equivalent to\nthe full block period of the relay chain. This extended execution time, compared to the current\nlimit of two seconds for PVFs, is facilitated by ",(0,o.kt)("a",{parentName:"p",href:"#benchmarks-vs-metering"},"secure metering")," and\nother optimizations inherent to PVM."),(0,o.kt)("p",null,"Moreover, Refine receives contextual information about the ongoing work and its surroundings,\nincluding details about concurrent refinements being performed. This feature enables the\nconstruction of work packages containing multiple work items from various services, facilitating\ninteractions like ",(0,o.kt)("a",{parentName:"p",href:"#accords"},"accords")," and synchronous communication between services."),(0,o.kt)("p",null,"Preimage lookups can also be conducted within Refine. If a hash and its associated preimage are\nbelieved to be available on the JAM chain, the preimage can be requested by providing the hash. This\ncapability enables efficient storage and retrieval of code, such as parachain code, by storing the\ncode on the JAM chain and referencing its hash in the work package."),(0,o.kt)("p",null,"Refine is the primary processing workhorse, handling tasks with largely stateless operations."),(0,o.kt)("h3",{id:"accumulate-function"},"Accumulate Function"),(0,o.kt)("p",null,"The accumulate function is responsible for integrating the output generated by the Refine function\ninto the chain state. Accumulate can accept multiple outputs from Refine, all originating from the\nsame service. Both Refine and Accumulate serve as entry points from a service-specific code blob."),(0,o.kt)("p",null,"Accumulate's execution time per output is considerably shorter than Refine\u2019s, typically around 10\nmilliseconds at most. However, the duration depends on factors such as the number of work items in\nthe work package. If a work package contains multiple items, the available time is divided among\nthem."),(0,o.kt)("p",null,"Unlike Refine, Accumulate is stateful, granting it access to the JAM chain's state. It can read\nstorage from any service, write to its key-value store, transfer funds, and include a memo with fund\ntransfers. Additionally, Accumulate can create new services, upgrade its code, and request preimage\navailability, among other functionalities."),(0,o.kt)("p",null,"Moreover, both Refine and Accumulate can invoke child instances of the PVM. This allows for creating\nsub-instances, or virtual machines, where code and data can be deployed, memory and stack\nconfigurations can be customized, and computations can be executed within a flexible framework."),(0,o.kt)("h3",{id:"on-transfer-function"},"On-transfer Function"),(0,o.kt)("p",null,"The onTransfer function within the JAM system is also stateful, enabling it to modify the service's\nstate. It has the capability to inspect the state of other services and make changes to its own\nstate. This functionality facilitates communication between services, albeit in an asynchronous\nmanner."),(0,o.kt)("p",null,"Unlike many smart contract platforms, where interactions occur synchronously, in JAM the interaction\nbetween encapsulated components, such as smart contracts or services in this case, happens\nasynchronously. Messages, along with tokens, are sent, and at some point later during the same\nsix-second execution period, the receiving service processes them. There is no immediate return\npath; if a return path is needed, the sending service must initiate another transfer or modify its\nstate in a way that the receiving service can later interpret."),(0,o.kt)("p",null,"Both Accumulate and onTransfer are designed to be executed in parallel, allowing different services'\naccumulation and transfers to occur simultaneously. This design opens the possibility for future\nenhancements, such as allocating more than the current 10 milliseconds of gas input. In theory, a\nsecondary core could be utilized to execute certain accumulations, providing them with significantly\nmore gas to utilize."),(0,o.kt)("h2",{id:"jam-chains-generalization"},"JAM Chain's Generalization"),(0,o.kt)("p",null,"Polkadot, as outlined in the original Polkadot white paper, is primarily tailored to a specific\nservice profile: delivering parachains. In pursuit of this service, Polkadot has developed two\nessential subcomponents:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"the distributed data availability system"),(0,o.kt)("li",{parentName:"ul"},"the auditing and guarantees system for computation (i.e. an optimistic roll-up system with robust\nsecurity guarantees)")),(0,o.kt)("p",null,"JAM represents a reduction in the level of opinionation compared to Polkadot, offering a higher\nlevel of abstraction and generalization. This facilitates easier utilization of underlying\ncomponents according to individual preferences."),(0,o.kt)("p",null,"JAM operates in a permissionless manner, akin to smart contract chains, allowing individuals to\nupload and expect the execution of code. Additionally, it hosts data, enables preimage lookup, and\nmanages state, resembling a key-value pair system. The genesis block of JAM includes a service to\nfacilitate the creation of new services since JAM lacks a mechanism for accepting transactions\ndirectly."),(0,o.kt)("p",null,"Services within JAM have no predefined limits on the amount of code, data, or state they can\naccommodate. Their capabilities are determined by crypto-economic factors; the more DOT tokens\ndeposited, the greater capacity for data and state. For instance, ",(0,o.kt)("strong",{parentName:"p"},"the parachains service"),"\nconsolidates all Polkadot 1.1 functionality within a single service on JAM, with the potential for\nadditional services to leverage Polkadot's distributed availability system, and auditing and\nguarantees system for computation."),(0,o.kt)("h2",{id:"polkadot-virtual-machine-pvm"},"Polkadot Virtual Machine (PVM)"),(0,o.kt)("p",null,"The PVM design is rooted in the RISC-V ISA (Instruction Set Architecture), known for its simplicity\nand versatility. The RISC-V ISA offers several advantages:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"It is easy to transpile into common hardware formats such as x86, x64, and ARM."),(0,o.kt)("li",{parentName:"ul"},"It is well-supported by tooling like ",(0,o.kt)("a",{parentName:"li",href:"https://llvm.org/"},"LLVM"))),(0,o.kt)("p",null,"The PVM itself embodies simplicity and security, being sandboxable and offering various execution\nguarantees. It is deterministic, consensus-sensitive, and friendly to metering. Unlike other VMs,\nthe PVM lacks complexity and excessive opinionation."),(0,o.kt)("p",null,"WASM, while optimized for web use cases, presents challenges with stack management, particularly in\nhandling continuations. RISC-V addresses this issue by placing the stack in memory, facilitating\ncontinuations handling naturally without additional complexity."),(0,o.kt)("p",null,"Additionally, the PVM demonstrates exceptional execution speeds, especially when run on conventional\nhardware like X64 and ARM, offering advantages such as free metering compared to WASM."),(0,o.kt)("p",null,"The incorporation of RISC-V-enabled continuations is poised to establish a new standard for scalable\ncoding across multi-core platforms like JAM. Asynchronous, parallelized architectures are\nincreasingly essential for scalability in both hardware and software platforms, a trend that is\nexpected to extend to blockchain and consensus algorithms."),(0,o.kt)("h2",{id:"safrole"},"SAFROLE"),(0,o.kt)("p",null,"SAFROLE is a block production algorithm, a simplification of ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-sassafras"},"SASSAFRAS"),". It\nexcludes some components that may be useful for parachains. So parachains may probably stick with\nSASSAFRAS rather SAFROLE. SAFROLE will be as simple as possile to:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"ensure that it is as minimally opinionated as possible to maximize the potential future use cases"),(0,o.kt)("li",{parentName:"ul"},"to follow in the footsteps of Ethereum yellow paper, and really try to get as many implementations\nas possible to try and spread the expertise.")),(0,o.kt)("p",null,"Understanding how Polkadot 1.0 works end-to-end is challenging. With JAM, someone who is capable of\nreading and understanding the yellow paper would be able to read and understand fairly quickly how\nJAM works. So simplicity is crucial."),(0,o.kt)("p",null,"SAFROLE is a SNARK-based block production algorithm. It uses SNARK specifically for their anonymity\nfeatures. And it delivers constant time block production, almost entirely fork-free. There are a\ncouple of instances where forks could possibly arise. They basically only happen when there's a net\nsplit or someone's being intentionally malicious. The great value for the anonymity is not\nspecifically to keep validators' identities sort of a secret. In fact, when they actually produce a\nblock, they give away their identity anyway, but rather for ensuring that the block production\nmechanism itself is secure, basically to avoid spamming."),(0,o.kt)("h2",{id:"networking"},"Networking"),(0,o.kt)("p",null,"Networking for JAM uses the ",(0,o.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/QUIC"},"QUIC protocol"),". This allows direct\npoint-to-point connections between a large numbers of validators. So essentially all 1,000-plus\nvalidators on Polkadot can have a persistent connection to each other without potential issues with\nsockets. Gossip is avoided, mostly because it is not needed, because JAM will not handle\ntransactions. In case of distributing something that's not point-to-point or within a very small\nsubset validators, grid-diffusal will be used, in which validators are arranged into a grid, and\npackages are sent by a row, and then each node on the row sends it to all members of its column."),(0,o.kt)("h2",{id:"pipelining-for-efficient-block-processing"},"Pipelining for Efficient Block Processing"),(0,o.kt)("p",null,"In state-based blockchains like Ethereum, the header of blocks typically contains the posterior\nstate root, summarizing the state after all block computations. Consequently, the header cannot be\nsent until all computations are complete. However, some computations can be performed before sending\nthe header, as their outcomes determine the block's validity."),(0,o.kt)("p",null,"In JAM, a different approach is adopted by placing the prior state root in the header instead of the\nposterior state root. This means that the state roots featured in the header lag by one block. As a\nresult, lightweight computations, comprising approximately 5% of the block's workload or execution\ntime, can be executed, and the block can be distributed immediately afterward. The remaining 95% of\nthe block's computation, primarily accumulation tasks, can be completed subsequently. This enables\nthe next block to be started before the execution of the current block is finished."),(0,o.kt)("p",null,"This approach allows for more efficient utilization of time between blocks. In traditional setups\nlike Polkadot's six-second block time, where the posterior state root must be provided, only a\nportion of the time can be used for computation. However, with pipelining in JAM, the entire block\ntime can be effectively utilized for computations, maximizing efficiency."),(0,o.kt)("p",null,"While using the full block time for computation may not be ideal, as it could lead to perpetual\ncatching up and delayed block imports, JAM's approach enables significantly more time for\ncomputation compared to traditional setups. This means that approximately three to three and a half\nseconds of effective block computation time can be achieved, a substantial improvement over the\ncurrent setup."),(0,o.kt)("h2",{id:"architectural-differences-jam-vs-relay-chain"},"Architectural Differences: JAM vs. Relay Chain"),(0,o.kt)("p",null,"One of the architectural distinctions between JAM and the Relay Chain lies in the degree to which\nfunctionality is fixed. While the relay chain fixes certain elements, such as the language used to\ndefine the protocol (WASM), JAM goes further in this regard. For instance, it dictates the type used\nfor encoding the block header and the hashing scheme, making alterations to these aspects\nchallenging."),(0,o.kt)("p",null,"However, flexibility comparable to that enabled by the WebAssembly meta-protocol in the relay chain\nis preserved in JAM through its service model. In this model, upgradability responsibility is\nshifted to services, freeing the chain itself from the burden of being upgradable. Three primary\nreasons support this decision:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Simplicity is prioritized. Maintaining a non-upgradable chain significantly reduces complexity."),(0,o.kt)("li",{parentName:"ul"},"The relay chain's tendency to introduce complex functionalities without removing older ones\ncomplicates matters. Because upgrades are easily implemented, there's little incentive to simplify\nthe Substrate SDK. Consequently, replicating Polkadot becomes impractical."),(0,o.kt)("li",{parentName:"ul"},"The potential for optimization afforded by JAM's fixed parameters. With a clear understanding of\nthe specific tasks the JAM chain must perform and the ability to set fixed parameters,\noptimizations in areas like network topology and timing become feasible. This contrasts with the\nchallenges posed by the relay chain's highly upgradable nature, where such optimizations are more\ncomplex due to the frequent alterations possible with each upgrade.")),(0,o.kt)("p",null,"Despite these differences, JAM retains flexibility in application-level functionalities, such as\ncoretime sales, staking, and governance, all managed within services. Additionally, JAM introduces a\nnovel concept by associating a token balance with a service, providing opportunities for economic\nmodel adjustments that are not easily achievable in purely upgradable chains like the Relay Chain."),(0,o.kt)("h2",{id:"jam-toaster"},"JAM Toaster"),(0,o.kt)("p",null,"One of the ongoing efforts in ensuring that JAM meets its original expectations involves\nestablishing a comprehensive test environment for the JAM chain. Unlike small-scale test networks\nrunning on unreliable hardware to manage cloud computing costs, this initiative entails a\nsubstantial investment. Introducing the JAM toaster, essentially a test platform designed for\nconducting large-scale trials and performance assessments of JAM. This addresses a prior challenge\nencountered during the development of the Polkadot Relay Chain, where understanding the emergent\neffects and dynamics of operating a network at such scale proved difficult. Previous attempts were\nlimited to a few dozen nodes on a test network and the Kusama network, which lacks comprehensive\nmonitoring capabilities due to restrictions on accessing validator nodes. Conversely, the\nsmall-scale test network failed to accurately simulate the network dynamics of a larger-scale\ndeployment. The JAM toaster aims to bridge this gap by enabling in-depth research at the scale of\nthe entire JAM network, comprising 1,023 nodes. This platform facilitates the investigation of\nnetwork behavior and performance characteristics, providing valuable insights for developers\nregarding the expected performance of their parachains."),(0,o.kt)("h2",{id:"jam-and-substrate"},"JAM and Substrate"),(0,o.kt)("h3",{id:"benchmarks-vs-metering"},"Benchmarks vs. Metering"),(0,o.kt)("p",null,"Benchmarks, or performance tests, can be optional when working with JAM. While they may still be\nnecessary on occasion, JAM's metered system can often obviate the need for frequent benchmarking.\nJAM operates on a metered system, allowing users to assess computational workload after completion.\nAdditionally, there's a theoretical mechanism to control computation, typically implemented at block\nconstruction time."),(0,o.kt)("p",null,"However, there are scenarios where benchmarking remains relevant. For instance, when metering is\ndeemed too conservative for certain use cases, benchmarking might be necessary to enhance\nperformance. Additionally, benchmarking could be useful for tasks requiring extended execution\ntimes, ensuring they aren't run excessively long."),(0,o.kt)("h3",{id:"xcmp"},"XCMP"),(0,o.kt)("p",null,'Moving on to Cross-Chain Message Passing (XCMP), JAM mandates full XCMP support. This is because\nwithin the relay chain, there\'s a provision for passing more data via a candidate receipt than would\nbe practical if all parachains transmitted all data all the time. JAM adheres strictly to rules,\neven for parachain services, including limitations on data transmission between the "refine" and\n"accumulate" phases. Currently, with\n',(0,o.kt)("a",{parentName:"p",href:"/docs/learn-xcm-transport#hrmp-xcmp-lites"},"Horizontal Relay Chain Message Passing (HRMP)"),", all\nmessages traverse the relay chain, constraining the data payload to 4 kB or less, which might not be\nrealistic. Thus, XCMP, where only message headers are relayed via the chain while the actual message\ndata is transmitted off-chain, emerges as a necessary and overdue improvement."),(0,o.kt)("h3",{id:"accords"},"Accords"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/polkadot-direction#xcm-and-accords"},"Accords")," essentially encapsulate state and logic,\nresembling smart contracts, with multiple instances residing alongside each parachain. They\nfacilitate message exchange between instances and enable synchronous interactions with parachains.\nAccords find utility in scenarios where trust between parachains is lacking, such as token\ntransfers. Unlike the existing method involving a reserve intermediary, Accords streamline direct\ntoken teleportation between parachains, eliminating the need for trust-compromising intermediaries.\nMoreover, Accords could function as XCM forwarding mechanisms, ensuring message integrity even when\nrelayed through third-party intermediaries, thus eliminating the need for explicit origin markers."),(0,o.kt)("h3",{id:"boosting-efficiency"},"Boosting Efficiency"),(0,o.kt)("p",null,"Lastly, JAM's broader, less opinionated approach to leveraging underlying consensus mechanisms makes\nit conducive to implementing more innovative solutions. For instance, distributed availability for\ncomplex tasks like zero-knowledge proofs becomes more practical and efficient with JAM.\nAdditionally, JAM supports a mixed resource consumption model, wherein work packages can contain\nboth computationally intensive tasks and data-heavy operations. By pairing services with diverse\nresource requirements, such as those needing extensive computation with those necessitating high\ndata availability, JAM optimizes the utilization of validators' resources, thereby reducing costs.\nThis flexible approach enables the combination of tasks like distributed availability and SNARK\nverification with parachain workloads, driving down costs while enhancing efficiency."),(0,o.kt)("h2",{id:"enhancements-and-compatibility-in-jam"},"Enhancements and Compatibility in JAM"),(0,o.kt)("p",null,"JAM's design prioritizes compatibility with existing Polkadot 1 parachains. While it maintains\ncompatibility with the Polkadot SDK, the Polkadot Validator Function (PVF) undergoes retargeting.\nInstead of WebAssembly, it will target the Polkadot Virtual Machine (PVM). This transition is\nfacilitated by the fact that PVM is a minor modification of RISC-V, which has already been\nestablished as an official LLVM target. Consequently, PVM could become an official LLVM target\nbefore the deployment of JAM."),(0,o.kt)("p",null,"Beyond serving as a host for parachains, JAM introduces significant enhancements. It offers the\npotential to streamline benchmarking efforts and alleviate future benchmarking requirements.\nAdditionally, JAM introduces the concept of accords, multi-instance, multi-sharded smart contracts\nthat govern and enforce specific interaction protocols between parachains. Furthermore, full\nCross-Chain Message Passing (XCMP) support is essential, enabling the removal of limitations on\ninformation transfer between parachains, typically facilitated by Cross-Chain Messages (XCM)."),(0,o.kt)("p",null,"Regarding Agile Coretime, JAM retains compatibility with existing setups. However, it introduces the\ncapability to target coretime not only at parachains but also at arbitrary sets of work packages.\nThis flexibility enhances the versatility and efficiency of resource allocation within the JAM\necosystem."))}m.isMDXComponent=!0},95209:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/refine-accumulate-376dcd569f7a4b6f1ed20798f522bd0e.png"}}]); \ No newline at end of file diff --git a/assets/js/41f7224c.c024be92.js b/assets/js/41f7224c.2ed84beb.js similarity index 97% rename from assets/js/41f7224c.c024be92.js rename to assets/js/41f7224c.2ed84beb.js index e8cd1203ab02..6052515d3c12 100644 --- a/assets/js/41f7224c.c024be92.js +++ b/assets/js/41f7224c.2ed84beb.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3274],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>f});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=n.createContext({}),s=function(e){var r=n.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},d=function(e){var r=s(e.components);return n.createElement(l.Provider,{value:r},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=s(t),m=a,f=u["".concat(l,".").concat(m)]||u[m]||p[m]||i;return t?n.createElement(f,c(c({ref:r},d),{},{components:t})):n.createElement(f,c({ref:r},d))}));function f(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,c=new Array(i);c[0]=m;var o={};for(var l in r)hasOwnProperty.call(r,l)&&(o[l]=r[l]);o.originalType=e,o[u]="string"==typeof e?e:a,c[1]=o;for(var s=2;s{t.d(r,{Z:()=>h});var n=t(67294),a=t(86010),i=t(53438),c=t(39960),o=t(13919),l=t(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var r=e.href,t=e.children;return n.createElement(c.Z,{href:r,className:(0,a.Z)("card padding--lg",s.cardContainer)},t)}function u(e){var r=e.href,t=e.icon,i=e.title,c=e.description;return n.createElement(d,{href:r},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:i},t," ",i),c&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:c},c))}function p(e){var r,t=e.item,a=(0,i.Wl)(t);return a?n.createElement(u,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:null!=(r=t.description)?r:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){var r,t,a=e.item,c=(0,o.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,i.xz)(null!=(r=a.docId)?r:void 0);return n.createElement(u,{href:a.href,icon:c,title:a.label,description:null!=(t=a.description)?t:null==l?void 0:l.description})}function f(e){var r=e.item;switch(r.type){case"link":return n.createElement(m,{item:r});case"category":return n.createElement(p,{item:r});default:throw new Error("unknown item type "+JSON.stringify(r))}}function v(e){var r=e.className,t=(0,i.jA)();return n.createElement(h,{items:t.items,className:r})}function h(e){var r=e.items,t=e.className;if(!r)return n.createElement(v,e);var c=(0,i.MN)(r);return n.createElement("section",{className:(0,a.Z)("row",t)},c.map((function(e,r){return n.createElement("article",{key:r,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},48659:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>s,default:()=>v,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var n=t(87462),a=t(63366),i=(t(67294),t(3905)),c=t(52991),o=["components"],l={id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},s=void 0,d={unversionedId:"learn/learn-archive",id:"learn/learn-archive",title:"Learn Archive",description:"Archive for the Learn Section.",source:"@site/../docs/learn/learn-archive.md",sourceDirName:"learn",slug:"/learn-archive",permalink:"/docs/learn-archive",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-archive.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},sidebar:"docs",previous:{title:"SASSAFRAS",permalink:"/docs/learn-sassafras"},next:{title:"Governance V1",permalink:"/docs/learn/learn-governance"}},u={},p=[],m={toc:p},f="wrapper";function v(e){var r=e.components,t=(0,a.Z)(e,o);return(0,i.kt)(f,(0,n.Z)({},m,t,{components:r,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"This section contains archived pages. The content in them no longer applies to Polkadot but can\nstill be relevant for parachains and related projects.")),(0,i.kt)(c.Z,{mdxType:"DocCardList"}))}v.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3274],{3905:(e,r,t)=>{t.d(r,{Zo:()=>d,kt:()=>f});var n=t(67294);function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function i(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function c(e){for(var r=1;r=0||(a[t]=e[t]);return a}(e,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=n.createContext({}),s=function(e){var r=n.useContext(l),t=r;return e&&(t="function"==typeof e?e(r):c(c({},r),e)),t},d=function(e){var r=s(e.components);return n.createElement(l.Provider,{value:r},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var r=e.children;return n.createElement(n.Fragment,{},r)}},m=n.forwardRef((function(e,r){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=s(t),m=a,f=u["".concat(l,".").concat(m)]||u[m]||p[m]||i;return t?n.createElement(f,c(c({ref:r},d),{},{components:t})):n.createElement(f,c({ref:r},d))}));function f(e,r){var t=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var i=t.length,c=new Array(i);c[0]=m;var o={};for(var l in r)hasOwnProperty.call(r,l)&&(o[l]=r[l]);o.originalType=e,o[u]="string"==typeof e?e:a,c[1]=o;for(var s=2;s{t.d(r,{Z:()=>h});var n=t(67294),a=t(86010),i=t(53438),c=t(39960),o=t(13919),l=t(95999);const s={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function d(e){var r=e.href,t=e.children;return n.createElement(c.Z,{href:r,className:(0,a.Z)("card padding--lg",s.cardContainer)},t)}function u(e){var r=e.href,t=e.icon,i=e.title,c=e.description;return n.createElement(d,{href:r},n.createElement("h2",{className:(0,a.Z)("text--truncate",s.cardTitle),title:i},t," ",i),c&&n.createElement("p",{className:(0,a.Z)("text--truncate",s.cardDescription),title:c},c))}function p(e){var r,t=e.item,a=(0,i.Wl)(t);return a?n.createElement(u,{href:a,icon:"\ud83d\uddc3\ufe0f",title:t.label,description:null!=(r=t.description)?r:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:t.items.length})}):null}function m(e){var r,t,a=e.item,c=(0,o.Z)(a.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,i.xz)(null!=(r=a.docId)?r:void 0);return n.createElement(u,{href:a.href,icon:c,title:a.label,description:null!=(t=a.description)?t:null==l?void 0:l.description})}function f(e){var r=e.item;switch(r.type){case"link":return n.createElement(m,{item:r});case"category":return n.createElement(p,{item:r});default:throw new Error("unknown item type "+JSON.stringify(r))}}function v(e){var r=e.className,t=(0,i.jA)();return n.createElement(h,{items:t.items,className:r})}function h(e){var r=e.items,t=e.className;if(!r)return n.createElement(v,e);var c=(0,i.MN)(r);return n.createElement("section",{className:(0,a.Z)("row",t)},c.map((function(e,r){return n.createElement("article",{key:r,className:"col col--6 margin-bottom--lg"},n.createElement(f,{item:e}))})))}},48659:(e,r,t)=>{t.r(r),t.d(r,{assets:()=>u,contentTitle:()=>s,default:()=>v,frontMatter:()=>l,metadata:()=>d,toc:()=>p});var n=t(87462),a=t(63366),i=(t(67294),t(3905)),c=t(52991),o=["components"],l={id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},s=void 0,d={unversionedId:"learn/learn-archive",id:"learn/learn-archive",title:"Learn Archive",description:"Archive for the Learn Section.",source:"@site/../docs/learn/learn-archive.md",sourceDirName:"learn",slug:"/learn-archive",permalink:"/docs/learn-archive",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-archive.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1711019259,formattedLastUpdatedAt:"Mar 21, 2024",frontMatter:{id:"learn-archive",title:"Learn Archive",sidebar_label:"Archive",description:"Archive for the Learn Section.",keywords:["Gov1","Gov1 Treasury","Launch","Redenomination","Controller"],slug:"../learn-archive"},sidebar:"docs",previous:{title:"JAM Chain",permalink:"/docs/learn-jam-chain"},next:{title:"Governance V1",permalink:"/docs/learn/learn-governance"}},u={},p=[],m={toc:p},f="wrapper";function v(e){var r=e.components,t=(0,a.Z)(e,o);return(0,i.kt)(f,(0,n.Z)({},m,t,{components:r,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"sticky",style:{zIndex:1}},(0,i.kt)("br",null),(0,i.kt)("p",null,"This section contains archived pages. The content in them no longer applies to Polkadot but can\nstill be relevant for parachains and related projects.")),(0,i.kt)(c.Z,{mdxType:"DocCardList"}))}v.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.132e7609.js b/assets/js/935f2afb.04c51c75.js similarity index 61% rename from assets/js/935f2afb.132e7609.js rename to assets/js/935f2afb.04c51c75.js index dcf21450ca72..992a647176a2 100644 --- a/assets/js/935f2afb.132e7609.js +++ b/assets/js/935f2afb.04c51c75.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53],{22624:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Explore","description":"Wallets and Apps in the Polkadot Ecosystem.","items":[{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"general/getting-started"},{"type":"category","label":"Wallets","description":"Beginner friendly wallets with advanced features.","items":[{"type":"link","label":"Polkadot Ecosystem Wallets","description":"Wallets listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/wallets/"},{"type":"link","label":"Wallets and Extensions","href":"/docs/wallets-and-extensions","docId":"general/wallets-and-extensions"},{"type":"link","label":"Ledger","href":"/docs/ledger","docId":"general/ledger"},{"type":"link","label":"Polkadot Vault","href":"/docs/polkadot-vault","docId":"general/polkadot-vault"}],"collapsed":true,"collapsible":true,"href":"/docs/wallets-index"},{"type":"category","label":"Apps","description":"Apps for Staking, Governance, Multisigs, NFTs and many more use cases.","items":[{"type":"link","label":"Polkadot Ecosystem Apps","description":"Apps listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/dapps/"},{"type":"link","label":"DotAppStore","description":"Apps upvoted by the community.","href":"https://dotappstore.com/"},{"type":"link","label":"Staking Apps","href":"/docs/staking-apps","docId":"general/staking-apps"},{"type":"link","label":"Governance Apps","href":"/docs/governance-apps","docId":"general/governance-apps"},{"type":"link","label":"Multisig Apps","href":"/docs/multisig-apps","docId":"general/multisig-apps"},{"type":"link","label":"NFT Projects","href":"/docs/learn-nft-projects","docId":"learn/learn-nft-projects"},{"type":"link","label":"Parachain Apps","href":"/docs/parachains-apps","docId":"general/parachains-apps"}],"collapsed":true,"collapsible":true,"href":"/docs/apps-index"},{"type":"category","label":"Dashboards","description":"Dashboards in the Polkadot Ecosystem.","items":[{"type":"link","label":"Staking Dashboard","href":"/docs/staking-dashboard","docId":"general/staking-dashboard"}],"collapsed":true,"collapsible":true,"href":"/docs/dashboards-index"},{"type":"category","label":"Community & Contributors","description":"Polkadot Community and Wiki Contributors.","items":[{"type":"link","label":"Community","href":"/docs/community","docId":"general/community"},{"type":"link","label":"Contributing to the Wiki","href":"/docs/contributing","docId":"general/contributing"},{"type":"link","label":"Contributors","href":"/docs/contributors","docId":"general/contributors"}],"collapsed":true,"collapsible":true,"href":"/docs/community-index"},{"type":"category","label":"Programs","description":"Programs for Grants, Bounties, Ambassadors and many more inititatives.","items":[{"type":"link","label":"Decentralized Futures","href":"/docs/decentralized-futures","docId":"general/decentralized-futures"},{"type":"link","label":"Decentralized Voices","href":"/docs/decentralized-voices","docId":"general/decentralized-voices"},{"type":"link","label":"Grants","href":"/docs/grants","docId":"general/grants"},{"type":"link","label":"Bug Bounty","href":"/docs/bug-bounty","docId":"general/bug-bounty"},{"type":"link","label":"Polkadot Ambassadors","href":"/docs/ambassadors","docId":"general/ambassadors"},{"type":"link","label":"Alpha Program","href":"/docs/alpha-program","docId":"general/alpha-program"},{"type":"link","label":"Thousand Validators","href":"/docs/thousand-validators","docId":"general/doc-thousand-validators"},{"type":"link","label":"Thousand Contributors","href":"/docs/thousand-contributors","docId":"general/doc-thousand-contributors"},{"type":"link","label":"Developer Heroes","href":"/docs/dev-heroes","docId":"general/dev-heroes"}],"collapsed":true,"collapsible":true,"href":"/docs/programs-index"},{"type":"link","label":"Metadata Explorer","href":"/docs/metadata","docId":"general/metadata"}],"collapsed":true,"collapsible":true,"href":"/docs/explore-index"},{"type":"category","label":"Learn","items":[{"type":"category","label":"General","description":"General Information to get started with Polkadot and Web3.","items":[{"type":"link","label":"Web3 and Polkadot","href":"/docs/web3-and-polkadot","docId":"general/web3-and-polkadot"},{"type":"category","label":"Polkadot Vision","description":"Polkadot\'s Vision revealed by Gavin Wood at Decoded 2023.","items":[{"type":"link","label":"Polkadot 1.0","href":"/docs/polkadot-v1","docId":"general/polkadot-v1"},{"type":"link","label":"Polkadot Direction","href":"/docs/polkadot-direction","docId":"general/polkadot-direction"}],"collapsed":true,"collapsible":true,"href":"/docs/polkadot-vision-index"},{"type":"category","label":"Stay Safe","description":"Good-practices to Stay Safe while Surfing in Web3.","items":[{"type":"link","label":"Do Your Own Research","href":"/docs/how-to-dyor","docId":"general/how-to-dyor"},{"type":"link","label":"Scam Protection","href":"/docs/learn-scams","docId":"general/scams"},{"type":"link","label":"Transaction Verification","href":"/docs/transaction-attacks","docId":"general/transaction-attacks"}],"collapsed":true,"collapsible":true,"href":"/docs/stay-safe-index"},{"type":"link","label":"Build on Polkadot","href":"/docs/start-building","docId":"general/start-building"},{"type":"link","label":"Research Pages","href":"/docs/research","docId":"general/research"},{"type":"link","label":"FAQ","href":"/docs/faq","docId":"general/faq"},{"type":"link","label":"Glossary","href":"/docs/glossary","docId":"general/glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/general-index"},{"type":"category","label":"Basics","description":"Staking, Accounts, Transactions, Tokens and NFTs, and Governance.","items":[{"type":"category","label":"Accounts","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Account Abstraction","href":"/docs/learn-account-abstraction","docId":"learn/learn-account-abstraction"},{"type":"link","label":"Account Identity","href":"/docs/learn-identity","docId":"learn/learn-identity"},{"type":"link","label":"Multi-Signature Accounts","href":"/docs/learn-account-multisig","docId":"learn/learn-account-multisig"},{"type":"link","label":"Proxy Accounts","href":"/docs/learn-proxies","docId":"learn/learn-proxies"},{"type":"link","label":"Pure Proxy Accounts","href":"/docs/learn-proxies-pure","docId":"learn/learn-proxies-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-accounts"},{"type":"category","label":"Transactions","description":"Extrinsics, Balance Transfers, and Fees.","items":[{"type":"link","label":"Transaction Fees","href":"/docs/learn-transaction-fees","docId":"learn/learn-transaction-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-transactions"},{"type":"category","label":"Staking","description":"Mechanics of Staking.","items":[{"type":"link","label":"Introduction to Staking","href":"/docs/learn-staking","docId":"learn/learn-staking"},{"type":"link","label":"Nomination Pools","href":"/docs/learn-nomination-pools","docId":"learn/learn-nomination-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-staking-index"},{"type":"category","label":"Polkadot OpenGov","description":"Everything about Polkadot OpenGov.","items":[{"type":"link","label":"Polkadot OpenGov","href":"/docs/learn-polkadot-opengov","docId":"learn/learn-polkadot-opengov"},{"type":"link","label":"OpenGov Origins","href":"/docs/learn-polkadot-opengov-origins","docId":"learn/learn-polkadot-opengov-origins"},{"type":"link","label":"Technical Fellowship","href":"/docs/learn-polkadot-technical-fellowship","docId":"learn/learn-polkadot-technical-fellowship"},{"type":"link","label":"OpenGov.Watch","description":"Community-maintained Support Pages about Polkadot OpenGov.","href":"https://www.opengov.watch/"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-opengov-index"},{"type":"link","label":"Treasury","href":"/docs/learn-polkadot-opengov-treasury","docId":"learn/learn-polkadot-opengov-treasury"},{"type":"category","label":"Tokens and Assets","description":"DOT Token, Asset Hub, and Teleports.","items":[{"type":"link","label":"DOT","href":"/docs/learn-DOT","docId":"learn/learn-DOT"},{"type":"link","label":"Token Inflation","href":"/docs/learn-inflation","docId":"learn/learn-inflation"},{"type":"category","label":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","items":[{"type":"link","label":"Asset Conversion","href":"/docs/learn-asset-conversion-assethub","docId":"learn/learn-asset-conversion-assethub"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets"},{"type":"link","label":"Teleporting Assets","href":"/docs/learn-teleport","docId":"learn/learn-teleport"},{"type":"link","label":"Introduction to NFTs","href":"/docs/learn-nft","docId":"learn/learn-nft"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets-index"},{"type":"category","label":"Network Participants","description":"Participants in the Polkadot Ecosystem.","items":[{"type":"link","label":"Collator","href":"/docs/learn-collator","docId":"learn/learn-collator"},{"type":"link","label":"Nominator","href":"/docs/learn-nominator","docId":"learn/learn-nominator"},{"type":"link","label":"Validator","href":"/docs/learn-validator","docId":"learn/learn-validator"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-participants-index"},{"type":"category","label":"Components","description":"OpenGov, Treasury, WASM, Runtime Upgrades, and more.","items":[{"type":"link","label":"Polkadot Host","href":"/docs/learn-polkadot-host","docId":"learn/learn-polkadot-host"},{"type":"link","label":"WebAssembly (Wasm)","href":"/docs/learn-wasm","docId":"learn/learn-wasm"},{"type":"link","label":"Runtime Upgrades","href":"/docs/learn-runtime-upgrades","docId":"learn/learn-runtime-upgrades"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-components-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-basics-index"},{"type":"category","label":"Advanced","description":"Advanced Concepts & Guides about Accounts, Staking, and NFTs.","items":[{"type":"category","label":"Polkadot-JS","description":"Overview of Polkadot-JS.","items":[{"type":"link","label":"Polkadot-JS Tooling","href":"/docs/polkadotjs","docId":"general/polkadotjs"},{"type":"link","label":"Polkadot-JS UI","href":"/docs/polkadotjs-ui","docId":"general/polkadotjs-ui"},{"type":"category","label":"Polkadot-JS Guides","description":"Polkadot-JS Guides about Staking, Asset Hub, Vault App, and more.","items":[{"type":"category","label":"Account Guides","description":"Polkadot-JS Guides about Accounts.","items":[{"type":"link","label":"Multisig Guides","href":"/docs/learn-guides-accounts-multisig","docId":"learn/learn-guides-accounts-multisig"},{"type":"link","label":"Proxy Guides","href":"/docs/learn-guides-accounts-proxy","docId":"learn/learn-guides-accounts-proxy"},{"type":"link","label":"Pure Proxy Guides","href":"/docs/learn-guides-accounts-proxy-pure","docId":"learn/learn-guides-accounts-proxy-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-accounts"},{"type":"link","label":"Transfer Guides","href":"/docs/learn-guides-transfers","docId":"learn/learn-guides-transfers"},{"type":"category","label":"Staking Guides","description":"Polkadot-JS Guides about Staking.","items":[{"type":"link","label":"Nominator Guides","href":"/docs/learn-guides-nominator","docId":"learn/learn-guides-nominator"},{"type":"link","label":"Nomination Pool Guides","href":"/docs/learn-guides-staking-pools","docId":"learn/learn-guides-staking-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-staking"},{"type":"link","label":"OpenGov Guides","href":"/docs/learn-guides-polkadot-opengov","docId":"learn/learn-guides-polkadot-opengov"},{"type":"link","label":"Treasury Guides","href":"/docs/learn-guides-treasury","docId":"learn/learn-guides-treasury"},{"type":"link","label":"Bounty Guides","href":"/docs/learn-guides-bounties","docId":"learn/learn-guides-bounties"},{"type":"link","label":"Identity Guides","href":"/docs/learn-guides-identity","docId":"learn/learn-guides-identity"},{"type":"link","label":"Ledger Guides","href":"/docs/learn-guides-ledger","docId":"learn/learn-guides-ledger"},{"type":"link","label":"Polkadot Vault Guides","href":"/docs/learn-guides-vault","docId":"learn/learn-guides-vault"},{"type":"category","label":"Asset Hub Guides","description":"Polkadot-JS Guides about Asset Hub.","items":[{"type":"link","label":"Create Asset Guides","href":"/docs/learn-guides-assets-create","docId":"learn/learn-guides-assets-create"},{"type":"link","label":"Asset Hub Ledger Guides","href":"/docs/learn-guides-assets-ledger","docId":"learn/learn-guides-assets-ledger"},{"type":"link","label":"Asset Conversion Tutorials","href":"/docs/learn-guides-asset-conversion","docId":"learn/learn-guides-asset-conversion"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-assets"},{"type":"category","label":"Bridge Hub Guides","description":"Polkadot-JS Guides for Bridge Hub.","items":[{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-guides-dot-ksm-bridge","docId":"learn/learn-guides-dot-ksm-bridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-bridges"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-js-guides"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadotjs"},{"type":"category","label":"Architecture","description":"Nominators, Validators, Collators, Parachains, and more.","items":[{"type":"link","label":"Consensus","href":"/docs/learn-consensus","docId":"learn/learn-consensus"},{"type":"category","label":"Parachains","description":"Parachains\' Protocol, Auctions, Crowdloans, and more.","items":[{"type":"link","label":"Introduction to Parachains","href":"/docs/learn-parachains","docId":"learn/learn-parachains"},{"type":"link","label":"Protocol Overview","href":"/docs/learn-parachains-protocol","docId":"learn/learn-parachains-protocol"},{"type":"link","label":"System Parachains","href":"/docs/learn-system-chains","docId":"learn/learn-system-chains"},{"type":"link","label":"Parachain Slot Auctions","href":"/docs/learn-auction","docId":"learn/learn-auction"},{"type":"link","label":"Parachain Crowdloans","href":"/docs/learn-crowdloans","docId":"learn/learn-crowdloans"},{"type":"link","label":"Parachains FAQ","href":"/docs/learn-parachains-faq","docId":"learn/learn-parachains-faq"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-parachains-index"},{"type":"link","label":"Asynchronous Backing","href":"/docs/learn-async-backing","docId":"learn/learn-async-backing"},{"type":"category","label":"Agile Coretime","description":"Concepts, Implementation and Tutorials on Agile Coretime.","items":[{"type":"link","label":"Agile Coretime Intro","href":"/docs/learn-agile-coretime","docId":"learn/learn-agile-coretime"},{"type":"link","label":"Coretime Marketplaces","href":"/docs/learn-guides-coretime-marketplaces","docId":"learn/learn-guides-coretime-marketplaces"},{"type":"link","label":"Coretime for Parachains","href":"/docs/learn-guides-coretime-parachains","docId":"learn/learn-guides-coretime-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-agile-coretime-index"},{"type":"category","label":"Bridges","description":"Bridging Polkadot to other Blockchain Protocols.","items":[{"type":"link","label":"Bridge Hub","href":"/docs/learn-bridge-hub","docId":"learn/learn-bridge-hub"},{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-dot-ksm-bridge","docId":"learn/learn-dot-ksm-bridge"},{"type":"link","label":"Hyperbridge","href":"/docs/learn-hyperbridge","docId":"learn/learn-hyperbridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-bridges"},{"type":"category","label":"Cross Consensus Messaging (XCM)","description":"Polkadot\'s Cross-Consensus Messaging Format (XCM).","items":[{"type":"link","label":"Cross-Consensus Message Format (XCM)","href":"/docs/learn-xcm","docId":"learn/learn-xcm"},{"type":"link","label":"XCM Pallet","href":"/docs/learn-xcm-pallet","docId":"learn/learn-xcm-pallet"},{"type":"link","label":"XCM Use-cases","href":"/docs/learn-xcm-usecases","docId":"learn/learn-xcm-usecases"},{"type":"link","label":"XCM Transport","href":"/docs/learn-xcm-transport","docId":"learn/learn-xcm-transport"},{"type":"link","label":"XCM Virtual Machine (XCVM)","href":"/docs/learn-xcvm","docId":"learn/learn-xcvm"},{"type":"link","label":"XCM Instructions","href":"/docs/learn-xcm-instructions","docId":"learn/learn-xcm-instructions"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-xcm-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-architecture"},{"type":"link","label":"Accounts","href":"/docs/learn-account-advanced","docId":"learn/learn-account-advanced"},{"type":"link","label":"Advanced Staking Concepts","href":"/docs/learn-staking-advanced","docId":"learn/learn-staking-advanced"},{"type":"link","label":"NFT Pallets","href":"/docs/learn-nft-pallets","docId":"learn/learn-nft-pallets"},{"type":"link","label":"Cryptography","href":"/docs/learn-cryptography","docId":"learn/learn-cryptography"},{"type":"link","label":"NPoS Election Algorithms","href":"/docs/learn-phragmen","docId":"learn/learn-phragmen"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-advanced-index"},{"type":"category","label":"XCM Docs","description":"In-depth documentation about the Polkadot\'s Cross-Chain Messaging (XCM).","items":[{"type":"link","label":"XCM: Cross-Consensus Messaging","href":"/docs/learn/xcm/introduction","docId":"learn/xcm/learn-xcm-docs-intro"},{"type":"category","label":"Overview","description":"Overview of the XCM Documentation.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/overview-summary","docId":"learn/xcm/overview/learn-xcm-docs-overview-summary"},{"type":"link","label":"Introduction","href":"/docs/learn/xcm/overview-intro","docId":"learn/xcm/overview/learn-xcm-docs-overview-intro"},{"type":"link","label":"A Format, not a Protocol","href":"/docs/learn/xcm/overview-format","docId":"learn/xcm/overview/learn-xcm-docs-overview-format"},{"type":"link","label":"The XCVM","href":"/docs/learn/xcm/overview-xcvm","docId":"learn/xcm/overview/learn-xcm-docs-overview-xcvm"},{"type":"link","label":"Architecture","href":"/docs/learn/xcm/overview-architecture","docId":"learn/xcm/overview/learn-xcm-docs-overview-architecture"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/overview"},{"type":"category","label":"Quickstart","description":"Start Diving into XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/quickstart-summary","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary"},{"type":"link","label":"XCM Simulator","href":"/docs/learn/xcm/quickstart-simulator","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator"},{"type":"link","label":"First Look at an XCM","href":"/docs/learn/xcm/quickstart-first-look","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/quickstart"},{"type":"category","label":"Fundamentals","description":"Fundamental Concepts about XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals-summary","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary"},{"type":"category","label":"MultiLocation","description":"The MultiLocation Type.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals/multilocation-summary","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary"},{"type":"link","label":"Junction(s)","href":"/docs/learn/xcm/fundamentals/multilocation-junctions","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions"},{"type":"link","label":"Example","href":"/docs/learn/xcm/fundamentals/multilocation-example","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals/multilocation"},{"type":"link","label":"MultiAsset","href":"/docs/learn/xcm/fundamentals-multiasset","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset"},{"type":"link","label":"XCVM","href":"/docs/learn/xcm/fundamentals-xcvm","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm"},{"type":"link","label":"Weight and Fees","href":"/docs/learn/xcm/fundamentals-fees","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals"},{"type":"category","label":"A Journey through XCM","description":"A Practical Introduction to the XCM Features","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey-summary","docId":"learn/xcm/journey/learn-xcm-docs-journey-summary"},{"type":"category","label":"Transfers","description":"Transferring Assets between Consensus Systems with XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey/transfers-summary","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary"},{"type":"link","label":"Asset Teleportation","href":"/docs/learn/xcm/journey/transfers-teleport","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport"},{"type":"link","label":"Reserve-backed Transfers","href":"/docs/learn/xcm/journey/transfers-reserve","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey/transfers"},{"type":"link","label":"Fee Handling","href":"/docs/learn/xcm/journey-fees","docId":"learn/xcm/journey/learn-xcm-docs-journey-fees"},{"type":"link","label":"Transact: A General Solution","href":"/docs/learn/xcm/journey-transact","docId":"learn/xcm/journey/learn-xcm-docs-journey-transact"},{"type":"link","label":"Origin Manipulation","href":"/docs/learn/xcm/journey-origin","docId":"learn/xcm/journey/learn-xcm-docs-journey-origin"},{"type":"link","label":"More Register Modifiers","href":"/docs/learn/xcm/journey-register","docId":"learn/xcm/journey/learn-xcm-docs-journey-register"},{"type":"link","label":"More Holding Modifiers","href":"/docs/learn/xcm/journey-holding","docId":"learn/xcm/journey/learn-xcm-docs-journey-holding"},{"type":"link","label":"Trap and Claim Assets","href":"/docs/learn/xcm/journey-assets","docId":"learn/xcm/journey/learn-xcm-docs-journey-assets"},{"type":"link","label":"Expectations","href":"/docs/learn/xcm/journey-expectations","docId":"learn/xcm/journey/learn-xcm-docs-journey-expectations"},{"type":"link","label":"Queries","href":"/docs/learn/xcm/journey-queries","docId":"learn/xcm/journey/learn-xcm-docs-journey-queries"},{"type":"link","label":"Version Subscription","href":"/docs/learn/xcm/journey-version","docId":"learn/xcm/journey/learn-xcm-docs-journey-version"},{"type":"link","label":"Locks","href":"/docs/learn/xcm/journey-locks","docId":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks"},{"type":"link","label":"Channels and Bridges","href":"/docs/learn/xcm/journey-channels","docId":"learn/xcm/journey/learn-xcm-docs-journey-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey"},{"type":"link","label":"Executor Configuration","href":"/docs/learn/xcm/config-deep-dive","docId":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive"},{"type":"link","label":"Testing","href":"/docs/learn/xcm/testing","docId":"learn/xcm/learn-xcm-docs-testing"},{"type":"category","label":"References","description":"XCVM Registers and Glossary","items":[{"type":"link","label":"All XCVM Registers","href":"/docs/learn/xcm/reference-xcvm-registers","docId":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers"},{"type":"link","label":"Glossary","href":"/docs/learn/xcm/reference-glossary","docId":"learn/xcm/reference/learn-xcm-docs-reference-glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/references"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm"},{"type":"category","label":"Polkadot Comparisons","description":"Comparison between Polkadot and other Networks. ","items":[{"type":"link","label":"Kusama","href":"/docs/learn-comparisons-kusama","docId":"learn/learn-comparisons-kusama"},{"type":"link","label":"Ethereum","href":"/docs/learn-comparisons-ethereum-2","docId":"learn/learn-comparisons-ethereum-2"},{"type":"link","label":"Cosmos","href":"/docs/learn-comparisons-cosmos","docId":"learn/learn-comparisons-cosmos"},{"type":"link","label":"Avalanche","href":"/docs/learn-comparisons-avalanche","docId":"learn/learn-comparisons-avalanche"},{"type":"link","label":"Other Comparisons","href":"/docs/learn-comparisons","docId":"learn/learn-comparisons"},{"type":"link","label":"Layer Two and Rollups","href":"/docs/learn-comparisons-rollups","docId":"learn/learn-comparisons-rollups"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-comparisons-index"},{"type":"link","label":"Videos","href":"/docs/learn-video-tutorials","docId":"learn/learn-video-tutorials"},{"type":"category","label":"Future Implementations","description":"Implementations that will be deployed on Polkadot.","items":[{"type":"link","label":"SPREE","href":"/docs/learn-spree","docId":"learn/learn-spree"},{"type":"link","label":"Parathreads","href":"/docs/learn-parathreads","docId":"learn/learn-parathreads"},{"type":"link","label":"Elastic Scaling","href":"/docs/learn-elastic-scaling","docId":"learn/learn-elastic-scaling"},{"type":"link","label":"SASSAFRAS","href":"/docs/learn-sassafras","docId":"learn/learn-sassafras"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-future-implementations-index"},{"type":"category","label":"Archive","description":"Implementations no longer live on Polkadot.","items":[{"type":"link","label":"Governance V1","href":"/docs/learn/learn-governance","docId":"learn/archive/learn-governance"},{"type":"link","label":"Gov1 Treasury","href":"/docs/learn/learn-treasury","docId":"learn/archive/learn-treasury"},{"type":"link","label":"Polkadot Launch Phases","href":"/docs/learn/learn-launch","docId":"learn/archive/learn-launch"},{"type":"link","label":"Redenomination of DOT","href":"/docs/learn/learn-redenomination","docId":"learn/archive/learn-redenomination"},{"type":"link","label":"Controller Accounts","href":"/docs/learn/learn-controller","docId":"learn/archive/learn-controller"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-index"},{"type":"category","label":"Build","items":[{"type":"category","label":"Client-side Development","items":[{"type":"link","label":"Building Client-side Apps","href":"/docs/build-client-side","docId":"build/build-client-side"},{"type":"link","label":"Using Light Clients","href":"/docs/build-light-clients","docId":"build/build-light-clients"},{"type":"link","label":"Node Interaction","href":"/docs/build-node-interaction","docId":"build/build-node-interaction"}],"collapsed":true,"collapsible":true,"href":"/docs/build-client-index"},{"type":"link","label":"Smart Contracts","href":"/docs/build-smart-contracts","docId":"build/build-smart-contracts"},{"type":"category","label":"Protocol Development","items":[{"type":"link","label":"Polkadot Protocol Overview","href":"/docs/build-protocol-info","docId":"build/build-protocol-info"},{"type":"link","label":"Using AssetHub","href":"/docs/build-integrate-assets","docId":"build/build-integrate-assets"},{"type":"link","label":"Opening HRMP Channels","href":"/docs/build-hrmp-channels","docId":"build/build-hrmp-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/build-protocol-index"},{"type":"link","label":"Development Networks","href":"/docs/build-network-overview","docId":"build/build-network-overview"},{"type":"category","label":"Tooling","items":[{"type":"link","label":"Explorer, Data, & Indexing Tools","href":"/docs/build-data","docId":"build/build-data"},{"type":"link","label":"Open Source Stack","href":"/docs/build-open-source","docId":"build/build-open-source"}],"collapsed":true,"collapsible":true,"href":"/docs/build-tools-index"},{"type":"link","label":"Hackathons","href":"/docs/build-hackathon","docId":"build/build-hackathon"},{"type":"category","label":"Build Archive","items":[{"type":"link","label":"Transaction Construction","href":"/docs/build-transaction-construction","docId":"build/build-transaction-construction"},{"type":"link","label":"Integration Initiation","href":"/docs/build-integration","docId":"build/build-integration"},{"type":"link","label":"Node Management","href":"/docs/build-node-management","docId":"build/build-node-management"},{"type":"link","label":"Parachain Development","href":"/docs/build-pdk","docId":"build/build-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/build-archive-index"}],"collapsed":true,"collapsible":true,"href":"/docs/build-guide"},{"type":"category","label":"Maintain","items":[{"type":"link","label":"Parameters","href":"/docs/maintain-polkadot-parameters","docId":"maintain/maintain-polkadot-parameters"},{"type":"category","label":"Nodes and Dapps","description":"Learn how to set up a node.","items":[{"type":"link","label":"Node Endpoints","href":"/docs/maintain-endpoints","docId":"maintain/maintain-endpoints"},{"type":"link","label":"Set up a Full Node","href":"/docs/maintain-sync","docId":"maintain/maintain-sync"},{"type":"link","label":"Set up a Boot Node","href":"/docs/maintain-bootnode","docId":"maintain/maintain-bootnode"},{"type":"link","label":"Set up a RPC node","href":"/docs/maintain-rpc","docId":"maintain/maintain-rpc"},{"type":"link","label":"Secure the WebSocket","href":"/docs/maintain-wss","docId":"maintain/maintain-wss"},{"type":"link","label":"Networks","href":"/docs/maintain-networks","docId":"maintain/maintain-networks"},{"type":"link","label":"Resolving Errors","href":"/docs/maintain-errors","docId":"maintain/maintain-errors"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-node-index"},{"type":"category","label":"Collator Guides","description":"Guides for Collator Nodes.","items":[{"type":"link","label":"Async Backing Upgrade","href":"/docs/maintain-guides-async-backing","docId":"maintain/maintain-guides-async-backing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-collator-index"},{"type":"category","label":"Validator Guides","description":"Guides for Validator Nodes.","items":[{"type":"link","label":"How to run a Validator on Polkadot","href":"/docs/maintain-guides-how-to-validate-polkadot","docId":"maintain/maintain-guides-how-to-validate-polkadot"},{"type":"link","label":"Validator Payout Overview","href":"/docs/maintain-guides-validator-payout","docId":"maintain/maintain-guides-validator-payout"},{"type":"link","label":"Using systemd for a Validator Node","href":"/docs/maintain-guides-how-to-systemd","docId":"maintain/maintain-guides-how-to-systemd"},{"type":"link","label":"Secure Validator","href":"/docs/maintain-guides-secure-validator","docId":"maintain/maintain-guides-secure-validator"},{"type":"link","label":"How to Upgrade Your Validator","href":"/docs/maintain-guides-how-to-upgrade","docId":"maintain/maintain-guides-how-to-upgrade"},{"type":"link","label":"Monitor your node","href":"/docs/maintain-guides-how-to-monitor-your-node","docId":"maintain/maintain-guides-how-to-monitor-your-node"},{"type":"link","label":"How to Chill","href":"/docs/maintain-guides-how-to-chill","docId":"maintain/maintain-guides-how-to-chill"},{"type":"link","label":"How to Stop Validating","href":"/docs/maintain-guides-how-to-stop-validating","docId":"maintain/maintain-guides-how-to-stop-validating"},{"type":"link","label":"Validator Community Overview","href":"/docs/maintain-guides-validator-community","docId":"maintain/doc-maintain-guides-validator-community"},{"type":"link","label":"Validator Best Practices","href":"/docs/maintain-guides-avoid-slashing","docId":"maintain/maintain-guides-avoid-slashing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-validator-index"},{"type":"category","label":"Archive","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Participate in Democracy","href":"/docs/maintain/maintain-guides-democracy","docId":"maintain/archive/maintain-guides-democracy"},{"type":"link","label":"Join the Council","href":"/docs/maintain/maintain-guides-how-to-join-council","docId":"maintain/archive/maintain-guides-how-to-join-council"},{"type":"link","label":"Voting for Councillors","href":"/docs/maintain/maintain-guides-how-to-vote-councillor","docId":"maintain/archive/maintain-guides-how-to-vote-councillor"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-index"}]},"docs":{"build/build-client-side":{"id":"build/build-client-side","title":"Building Client-side Apps","description":"An overview about building clients that use Polkadot","sidebar":"docs"},"build/build-dapp":{"id":"build/build-dapp","title":"Building dApps","description":"An overview about building dApps on Polkadot"},"build/build-data":{"id":"build/build-data","title":"Explorer, Data, & Indexing Tools","description":"An overview about building with data analytics","sidebar":"docs"},"build/build-guide":{"id":"build/build-guide","title":"Polkadot Developer Portal","description":"Start building with Polkadot/Kusama.","sidebar":"docs"},"build/build-hackathon":{"id":"build/build-hackathon","title":"Hackathons","description":"Join or host a Hackathon.","sidebar":"docs"},"build/build-hrmp-channels":{"id":"build/build-hrmp-channels","title":"Opening HRMP Channels","description":"Steps on how to open HRMP channels between parachains.","sidebar":"docs"},"build/build-index":{"id":"build/build-index","title":"Builder\'s Guides","description":"Reference point for the Polkadot builder guides."},"build/build-integrate-assets":{"id":"build/build-integrate-assets","title":"Using AssetHub","description":"Tools that you can use for integrating assets.","sidebar":"docs"},"build/build-integration":{"id":"build/build-integration","title":"Polkadot Integration Guide","description":"Reference point for the Polkadot integration guides.","sidebar":"docs"},"build/build-light-clients":{"id":"build/build-light-clients","title":"Using Light Clients","description":"Information about light client options.","sidebar":"docs"},"build/build-network-overview":{"id":"build/build-network-overview","title":"Development Networks","description":"An overview of the different networks on Polkadot","sidebar":"docs"},"build/build-node-interaction":{"id":"build/build-node-interaction","title":"Node Interaction","description":"Tools for node interaction.","sidebar":"docs"},"build/build-node-management":{"id":"build/build-node-management","title":"Node Management","description":"Steps on how to manage your Polkadot node.","sidebar":"docs"},"build/build-open-source":{"id":"build/build-open-source","title":"Open Source Stack","description":"Overview of the open source Polkadot/Kusama Tech Stack","sidebar":"docs"},"build/build-oracle":{"id":"build/build-oracle","title":"Oracles","description":"Information about building with oracles."},"build/build-parachains":{"id":"build/build-parachains","title":"Parachain Development","description":"A guide on what it means to become a Parachain and the steps to do so.","sidebar":"docs"},"build/build-protocol-info":{"id":"build/build-protocol-info","title":"Polkadot Protocol Overview","description":"Characteristics about the Polkadot protocol, and what you need to consider when building.","sidebar":"docs"},"build/build-smart-contracts":{"id":"build/build-smart-contracts","title":"Smart Contracts","description":"How smart contracts play their role in the Polkadot ecosystem.","sidebar":"docs"},"build/build-storage":{"id":"build/build-storage","title":"Decentralized Storage","description":"Information about building with decentralized storage."},"build/build-tools-index":{"id":"build/build-tools-index","title":"Tool Index","description":"Reference point for a list of tools to support your development.","sidebar":"docs"},"build/build-transaction-construction":{"id":"build/build-transaction-construction","title":"Transaction Construction and Signing","description":"Information about how transactions are constructed on Polkadot.","sidebar":"docs"},"general/alpha-program":{"id":"general/alpha-program","title":"Polkadot Alpha Program","description":"The Polkadot Alpha Program and How it can Support your Development.","sidebar":"docs"},"general/ambassadors":{"id":"general/ambassadors","title":"Polkadot Ambassador Program","description":"The Polkadot\'s Ambassador Program and How you can Participate in It.","sidebar":"docs"},"general/bug-bounty":{"id":"general/bug-bounty","title":"Bug Bounty Program","description":"An Overview of How you can Help Catch Bugs.","sidebar":"docs"},"general/community":{"id":"general/community","title":"Community","description":"Connect and stay updated with the Polkadot Community.","sidebar":"docs"},"general/contributing":{"id":"general/contributing","title":"Contributing to the Polkadot Wiki","description":"Contribute to the Polkadot Wiki.","sidebar":"docs"},"general/contributors":{"id":"general/contributors","title":"Contributors","description":"Get to know your Wiki-slayers.","sidebar":"docs"},"general/decentralized-futures":{"id":"general/decentralized-futures","title":"Decentralized Futures Program","description":"Learn about the Decentralized Futures Program.","sidebar":"docs"},"general/decentralized-voices":{"id":"general/decentralized-voices","title":"Decentralized Voices Program","description":"Learn about the Decentralized Voices Program.","sidebar":"docs"},"general/dev-heroes":{"id":"general/dev-heroes","title":"Developer Heroes Program","description":"More Power to Polkadot\'s Developers.","sidebar":"docs"},"general/doc-thousand-contributors":{"id":"general/doc-thousand-contributors","title":"Thousand Contributors Program","description":"The Thousand Contributors Program and How it can Support your Contributions.","sidebar":"docs"},"general/doc-thousand-validators":{"id":"general/doc-thousand-validators","title":"Thousand Validators Programme","description":"The Thousand Validators Program and How it can Support your Validator Endeavors.","sidebar":"docs"},"general/faq":{"id":"general/faq","title":"Frequently Asked Questions (FAQs)","description":"FAQs to Help you Navigate on Polkadot.","sidebar":"docs"},"general/getting-started":{"id":"general/getting-started","title":"Getting Started","description":"Get started with Polkadot and Web3.","sidebar":"docs"},"general/glossary":{"id":"general/glossary","title":"Glossary","description":"Common Terms and Concepts in the Polkadot Ecosystem.","sidebar":"docs"},"general/governance-apps":{"id":"general/governance-apps","title":"Polkadot Governance Apps","description":"Governance Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/grants":{"id":"general/grants","title":"Grants Program","description":"The Grant Programs in the Polkadot Ecosystem.","sidebar":"docs"},"general/how-to-dyor":{"id":"general/how-to-dyor","title":"How to Do Your Own Research (DYOR)","description":"Importance of Doing Your Own Research (DYOR).","sidebar":"docs"},"general/kusama/kusama-adversarial-cheatsheet":{"id":"general/kusama/kusama-adversarial-cheatsheet","title":"Adversarial Cheatsheet","description":"A cheatsheet to help you create chaos."},"general/kusama/kusama-bug-bounty":{"id":"general/kusama/kusama-bug-bounty","title":"Bug Bounty","description":"An overview of how you can help catch bugs."},"general/kusama/kusama-claims":{"id":"general/kusama/kusama-claims","title":"Kusama Claims","description":"Step-by-step guide on how to claim your KSM tokens."},"general/kusama/kusama-coc":{"id":"general/kusama/kusama-coc","title":"Kusama Code of Conduct","description":"Kusama\'s Code of Conduct to sustain chaos."},"general/kusama/kusama-community":{"id":"general/kusama/kusama-community","title":"Kusama Community","description":"Stay in-touch and keep up-to-date by interacting and engaging in the Kusama community."},"general/kusama/kusama-getting-started":{"id":"general/kusama/kusama-getting-started","title":"Interact with Kusama","description":"Reference point for Kusama content."},"general/kusama/kusama-index":{"id":"general/kusama/kusama-index","title":"Kusama","description":"Legacy link to Kusama Wiki document"},"general/kusama/kusama-parameters":{"id":"general/kusama/kusama-parameters","title":"Kusama Parameters","description":"Learn about common Kusama parameters"},"general/kusama/kusama-social-recovery":{"id":"general/kusama/kusama-social-recovery","title":"Social Recovery","description":"Steps on how to perform account recovery on Kusama."},"general/kusama/kusama-timeline":{"id":"general/kusama/kusama-timeline","title":"Kusama Timeline","description":"Stay up-to-date with the latest action on Kusama."},"general/ledger":{"id":"general/ledger","title":"Using the Polkadot & Kusama Ledger Applications","description":"Use the Polkadot Ledger Application.","sidebar":"docs"},"general/metadata":{"id":"general/metadata","title":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","sidebar":"docs"},"general/multisig-apps":{"id":"general/multisig-apps","title":"Polkadot Multisig Apps","description":"Multisig Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/parachains-apps":{"id":"general/parachains-apps","title":"Polkadot Parachain Apps","description":"Polkadot\'s Parachain Apps.","sidebar":"docs"},"general/polkadot-direction":{"id":"general/polkadot-direction","title":"Polkadot Direction","description":"Polkadot as a Decentralized and Secure Ubiquitous Computer.","sidebar":"docs"},"general/polkadot-v1":{"id":"general/polkadot-v1","title":"Polkadot 1.0","description":"Polkadot\'s 1.0, Blockspace, Decentralization and Resilience.","sidebar":"docs"},"general/polkadot-vault":{"id":"general/polkadot-vault","title":"Polkadot Vault (formerly Parity Signer)","description":"Your old Smartphone as an Air-gapped Wallet.","sidebar":"docs"},"general/polkadotjs":{"id":"general/polkadotjs","title":"Polkadot-JS Tooling","description":"The Polkadot-JS Tool Collection.","sidebar":"docs"},"general/polkadotjs-ui":{"id":"general/polkadotjs-ui","title":"Polkadot-JS UI (Wallet)","description":"A Wallet for Power-users and Developers.","sidebar":"docs"},"general/research":{"id":"general/research","title":"Research Pages","description":"Latest Research Developments on Polkadot.","sidebar":"docs"},"general/scams":{"id":"general/scams","title":"How to Protect Yourself from Scams","description":"How to Protect yourself against Scams.","sidebar":"docs"},"general/staking-apps":{"id":"general/staking-apps","title":"Polkadot Staking Apps","description":"Staking Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/staking-dashboard":{"id":"general/staking-dashboard","title":"Polkadot Staking Dashboard","description":"Everything about the Polkadot Staking Dashboard.","sidebar":"docs"},"general/start-building":{"id":"general/start-building","title":"Build on Polkadot","description":"Start Building with the Polkadot SDK.","sidebar":"docs"},"general/transaction-attacks":{"id":"general/transaction-attacks","title":"Why Verify Transactions?","description":"How to Prevent from being a Victim of an Attack","sidebar":"docs"},"general/wallets-and-extensions":{"id":"general/wallets-and-extensions","title":"Wallets and Extensions","description":"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.","sidebar":"docs"},"general/web3-and-polkadot":{"id":"general/web3-and-polkadot","title":"Web3 and Polkadot","description":"Introduction to Web3 and Polkadot\'s Role in shaping the Web3 Vision.","sidebar":"docs"},"learn/archive/learn-controller":{"id":"learn/archive/learn-controller","title":"Controller Accounts","description":"Controller Accounts used in Staking.","sidebar":"docs"},"learn/archive/learn-governance":{"id":"learn/archive/learn-governance","title":"Governance V1","description":"Polkadot\'s First Governance Model.","sidebar":"docs"},"learn/archive/learn-launch":{"id":"learn/archive/learn-launch","title":"Polkadot Launch Phases","description":"Polkadot\'s Launch Process and its Individual Phases.","sidebar":"docs"},"learn/archive/learn-redenomination":{"id":"learn/archive/learn-redenomination","title":"Redenomination of DOT","description":"Everything about the DOT Token Redenomination.","sidebar":"docs"},"learn/archive/learn-treasury":{"id":"learn/archive/learn-treasury","title":"Governance v1 Treasury","description":"The Polkadot\'s On-chain Treasury during Gov1.","sidebar":"docs"},"learn/learn-account-abstraction":{"id":"learn/learn-account-abstraction","title":"Polkadot\'s Account Abstraction","description":"Polkadot\'s Native Account Abstraction.","sidebar":"docs"},"learn/learn-account-advanced":{"id":"learn/learn-account-advanced","title":"Polkadot Accounts In-Depth","description":"Advanced Concepts about Polkadot\'s Accounts.","sidebar":"docs"},"learn/learn-account-multisig":{"id":"learn/learn-account-multisig","title":"Multi-Signature Accounts","description":"Multi-signature Accounts on Polkadot.","sidebar":"docs"},"learn/learn-accounts":{"id":"learn/learn-accounts","title":"Polkadot Accounts","description":"Polkadot Accounts, Account Identity, and Account Reaping.","sidebar":"docs"},"learn/learn-agile-coretime":{"id":"learn/learn-agile-coretime","title":"Introduction to Agile Coretime","description":"Introduction to Agile Coretime and its terminology","sidebar":"docs"},"learn/learn-architecture":{"id":"learn/learn-architecture","title":"Architecture","description":"Key Components to Polkadot\'s Architecture.","sidebar":"docs"},"learn/learn-archive":{"id":"learn/learn-archive","title":"Learn Archive","description":"Archive for the Learn Section.","sidebar":"docs"},"learn/learn-asset-conversion-assethub":{"id":"learn/learn-asset-conversion-assethub","title":"Asset Conversion on AssetHub","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-assets":{"id":"learn/learn-assets","title":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","sidebar":"docs"},"learn/learn-async-backing":{"id":"learn/learn-async-backing","title":"Asynchronous Backing","description":"A brief overview of asynchronous backing, and how it affects Polkadot\'s scalability.","sidebar":"docs"},"learn/learn-auction":{"id":"learn/learn-auction","title":"Parachain Slot Auctions","description":"Polkadot\'s Parachain Slot Auction Mechanism.","sidebar":"docs"},"learn/learn-bridge-hub":{"id":"learn/learn-bridge-hub","title":"Bridge Hub","description":"Overview of Bridge Hub System Parachain.","sidebar":"docs"},"learn/learn-bridges":{"id":"learn/learn-bridges","title":"Bridges","description":"Bridges and Examples of Common Bridges.","sidebar":"docs"},"learn/learn-collator":{"id":"learn/learn-collator","title":"Collator","description":"Role of Collators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-comparisons":{"id":"learn/learn-comparisons","title":"Polkadot Comparisons","description":"Comparison between Polkadot and ETH 1.0 and BSC.","sidebar":"docs"},"learn/learn-comparisons-avalanche":{"id":"learn/learn-comparisons-avalanche","title":"Polkadot vs. Avalanche","description":"Comparison between Polkadot and Avalanche.","sidebar":"docs"},"learn/learn-comparisons-cosmos":{"id":"learn/learn-comparisons-cosmos","title":"Polkadot vs. Cosmos","description":"Comparison between Polkadot and Cosmos.","sidebar":"docs"},"learn/learn-comparisons-ethereum-2":{"id":"learn/learn-comparisons-ethereum-2","title":"Polkadot vs. Ethereum","description":"Comparison between Polkadot and Ethereum.","sidebar":"docs"},"learn/learn-comparisons-kusama":{"id":"learn/learn-comparisons-kusama","title":"Polkadot vs. Kusama","description":"Comparing the cousins.","sidebar":"docs"},"learn/learn-comparisons-rollups":{"id":"learn/learn-comparisons-rollups","title":"Layer Two and Rollups","description":"Comparison between various Rollup and L2 Protocols.","sidebar":"docs"},"learn/learn-consensus":{"id":"learn/learn-consensus","title":"Polkadot\'s Consensus Protocols","description":"The Consensus Mechanisms of Polkadot.","sidebar":"docs"},"learn/learn-crowdloans":{"id":"learn/learn-crowdloans","title":"Parachain Crowdloans","description":"Polkadot\'s Crowdloans and How to Participate.","sidebar":"docs"},"learn/learn-cryptography":{"id":"learn/learn-cryptography","title":"Cryptography on Polkadot","description":"Cryptographic Functions used in Polkadot.","sidebar":"docs"},"learn/learn-DOT":{"id":"learn/learn-DOT","title":"DOT","description":"Tokenomics of Polkadot\'s Native Token DOT.","sidebar":"docs"},"learn/learn-dot-ksm-bridge":{"id":"learn/learn-dot-ksm-bridge","title":"Polkadot <> Kusama Bridge","description":"Overview of Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-elastic-scaling":{"id":"learn/learn-elastic-scaling","title":"Polkadot\'s Elastic Scaling","description":"Enabling parachains to scale on-demand through instantaneous coretime.","sidebar":"docs"},"learn/learn-guides-accounts":{"id":"learn/learn-guides-accounts","title":"Polkadot-JS Guides about Accounts","description":"Polkadot-JS Guides about Accounts","sidebar":"docs"},"learn/learn-guides-accounts-multisig":{"id":"learn/learn-guides-accounts-multisig","title":"Polkadot-JS Guides about Multi-signature Accounts","description":"Polkadot-JS Guides about Multi-signature Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy":{"id":"learn/learn-guides-accounts-proxy","title":"Polkadot-JS Guides about Proxy Accounts","description":"Polkadot-JS Guides about Proxy Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy-pure":{"id":"learn/learn-guides-accounts-proxy-pure","title":"Polkadot-JS Guides about Pure Proxy Accounts","description":"Polkadot-JS Guides about Pure Proxy Accounts","sidebar":"docs"},"learn/learn-guides-asset-conversion":{"id":"learn/learn-guides-asset-conversion","title":"Asset Conversion Tutorials","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-guides-assets":{"id":"learn/learn-guides-assets","title":"Polkadot-JS Guides about Asset Hub","description":"Polkadot-JS Guides about Asset Hub.","sidebar":"docs"},"learn/learn-guides-assets-create":{"id":"learn/learn-guides-assets-create","title":"Polkadot-JS Guides about Creating Assets","description":"Polkadot-JS Guides about Creating Assets.","sidebar":"docs"},"learn/learn-guides-assets-ledger":{"id":"learn/learn-guides-assets-ledger","title":"Polkadot-JS Guides about Asset Hub Ledger App","description":"Polkadot-JS Guides about Ledger and the Asset Hub.","sidebar":"docs"},"learn/learn-guides-bounties":{"id":"learn/learn-guides-bounties","title":"Polkadot-JS Guides about Bounties","description":"Polkadot-JS Guides for Bounties","sidebar":"docs"},"learn/learn-guides-coretime-marketplaces":{"id":"learn/learn-guides-coretime-marketplaces","title":"Coretime Marketplaces","description":"Usage guides for coretime marketplaces","sidebar":"docs"},"learn/learn-guides-coretime-parachains":{"id":"learn/learn-guides-coretime-parachains","title":"Agile Coretime for Parachains","description":"Agile Coretime from Parachains perspective","sidebar":"docs"},"learn/learn-guides-dot-ksm-bridge":{"id":"learn/learn-guides-dot-ksm-bridge","title":"Polkadot and Kusama Bridge Guides","description":"Polkadot-JS Guides about Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-guides-identity":{"id":"learn/learn-guides-identity","title":"Polkadot-JS Guides about Identity","description":"Polkadot-JS Guides about Identity.","sidebar":"docs"},"learn/learn-guides-ledger":{"id":"learn/learn-guides-ledger","title":"Polkadot-JS Guides for Ledger Devices","description":"Polkadot-JS Guides for Ledger Devices.","sidebar":"docs"},"learn/learn-guides-nominator":{"id":"learn/learn-guides-nominator","title":"Polkadot-JS Guides For Nominators","description":"Polkadot-JS Guides for Nominators.","sidebar":"docs"},"learn/learn-guides-polkadot-opengov":{"id":"learn/learn-guides-polkadot-opengov","title":"Polkadot-JS Guides about OpenGov","description":"Polkadot-JS Guides about Polkadot OpenGov.","sidebar":"docs"},"learn/learn-guides-staking":{"id":"learn/learn-guides-staking","title":"Polkadot-JS Guides about Staking","description":"Polkadot-JS Guides about Staking.","sidebar":"docs"},"learn/learn-guides-staking-pools":{"id":"learn/learn-guides-staking-pools","title":"Polkadot-JS Guides for Pool Creators","description":"Polkadot-JS Guides about Nomination Pools.","sidebar":"docs"},"learn/learn-guides-transfers":{"id":"learn/learn-guides-transfers","title":"Polkadot-JS Guides about Transfers","description":"Polkadot-JS Guides about Balances Transfers.","sidebar":"docs"},"learn/learn-guides-treasury":{"id":"learn/learn-guides-treasury","title":"Polkadot-JS Guides about the Treasury","description":"Polkadot-JS Guides about the Polkadot Treasury.","sidebar":"docs"},"learn/learn-guides-vault":{"id":"learn/learn-guides-vault","title":"Polkadot-JS Guides about the Vault App","description":"Polkadot-JS Guides about Polkadot Vault.","sidebar":"docs"},"learn/learn-hyperbridge":{"id":"learn/learn-hyperbridge","title":"Hyperbridge","description":"Polkadot\'s Bridge to Ethereum.","sidebar":"docs"},"learn/learn-identity":{"id":"learn/learn-identity","title":"Account Identity","description":"On-chain Identity, Judgements and Registrars.","sidebar":"docs"},"learn/learn-implementations":{"id":"learn/learn-implementations","title":"Polkadot Implementations","description":"Learn about the different Polkadot implementations."},"learn/learn-inflation":{"id":"learn/learn-inflation","title":"Token Inflation","description":"Explanation of Token\'s Inflation in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft":{"id":"learn/learn-nft","title":"NFTs","description":"The NFT Landscape of the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-pallets":{"id":"learn/learn-nft-pallets","title":"NFT Pallets","description":"Functionalities of the NFT Pallets in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-projects":{"id":"learn/learn-nft-projects","title":"NFT projects on Polkadot and Kusama","description":"NFT Projects in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nomination-pools":{"id":"learn/learn-nomination-pools","title":"Nomination Pools","description":"Staking through Polkadot\'s Nomination Pools.","sidebar":"docs"},"learn/learn-nominator":{"id":"learn/learn-nominator","title":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-parachains":{"id":"learn/learn-parachains","title":"Parachains","description":"An Introduction to Polkadot\'s Parachains.","sidebar":"docs"},"learn/learn-parachains-faq":{"id":"learn/learn-parachains-faq","title":"Parachains FAQ","description":"Parachains FAQ.","sidebar":"docs"},"learn/learn-parachains-protocol":{"id":"learn/learn-parachains-protocol","title":"Parachains\' Protocol Overview","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","sidebar":"docs"},"learn/learn-parathreads":{"id":"learn/learn-parathreads","title":"Parathreads","description":"An Introductory Guide to Parathreads.","sidebar":"docs"},"learn/learn-phragmen":{"id":"learn/learn-phragmen","title":"NPoS Election Algorithms","description":"The Election Methods used in Polkadot\'s NPoS Mechanism.","sidebar":"docs"},"learn/learn-polkadot-host":{"id":"learn/learn-polkadot-host","title":"Polkadot Host (PH)","description":"The Polkadot Host and its Components.","sidebar":"docs"},"learn/learn-polkadot-js-guides":{"id":"learn/learn-polkadot-js-guides","title":"Polkadot-JS Guides","description":"Guides about Polkadot-JS.","sidebar":"docs"},"learn/learn-polkadot-opengov":{"id":"learn/learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","sidebar":"docs"},"learn/learn-polkadot-opengov-origins":{"id":"learn/learn-polkadot-opengov-origins","title":"Polkadot OpenGov Origins","description":"All Origins for Polkadot\'s OpenGov.","sidebar":"docs"},"learn/learn-polkadot-opengov-treasury":{"id":"learn/learn-polkadot-opengov-treasury","title":"Treasury","description":"Polkadot\'s On-chain Treasury.","sidebar":"docs"},"learn/learn-polkadot-technical-fellowship":{"id":"learn/learn-polkadot-technical-fellowship","title":"Polkadot Technical Fellowship","description":"Self-governing body of experts and developers of the Polkadot protocol.","sidebar":"docs"},"learn/learn-polkadotjs":{"id":"learn/learn-polkadotjs","title":"Polkadot-JS","description":"Overview of Polkadot-JS.","sidebar":"docs"},"learn/learn-proxies":{"id":"learn/learn-proxies","title":"Proxy Accounts","description":"Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-proxies-pure":{"id":"learn/learn-proxies-pure","title":"Pure Proxy Accounts","description":"Pure Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-runtime-upgrades":{"id":"learn/learn-runtime-upgrades","title":"Runtime Upgrades","description":"Forkless Runtime Upgrades on Polkadot.","sidebar":"docs"},"learn/learn-sassafras":{"id":"learn/learn-sassafras","title":"Polkadot Block Production: SASSAFRAS","description":"The Consensus Mechanism of Polkadot.","sidebar":"docs"},"learn/learn-spree":{"id":"learn/learn-spree","title":"SPREE","description":"Fundamentals of SPREE.","sidebar":"docs"},"learn/learn-staking":{"id":"learn/learn-staking","title":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","sidebar":"docs"},"learn/learn-staking-advanced":{"id":"learn/learn-staking-advanced","title":"Advanced Staking Concepts","description":"Advanced Concepts about Staking on Polkadot.","sidebar":"docs"},"learn/learn-system-chains":{"id":"learn/learn-system-chains","title":"System Parachains","description":"System Parachains currently deployed on Polkadot.","sidebar":"docs"},"learn/learn-teleport":{"id":"learn/learn-teleport","title":"Teleporting Assets","description":"Teleport Assets between Parachains and Relay Chain.","sidebar":"docs"},"learn/learn-transaction-fees":{"id":"learn/learn-transaction-fees","title":"Transaction Fees","description":"How Transaction Fees are Calculated and Handled.","sidebar":"docs"},"learn/learn-transactions":{"id":"learn/learn-transactions","title":"Types of Transactions (a.k.a. Extrinsics)","description":"Types of Transactions on Polkadot.","sidebar":"docs"},"learn/learn-validator":{"id":"learn/learn-validator","title":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-video-tutorials":{"id":"learn/learn-video-tutorials","title":"Videos about Polkadot","description":"Videos about Polkadot and Related Topics.","sidebar":"docs"},"learn/learn-wasm":{"id":"learn/learn-wasm","title":"WebAssembly (Wasm)","description":"WASM and its Role in Polkadot\'s Runtime.","sidebar":"docs"},"learn/learn-xcm":{"id":"learn/learn-xcm","title":"Introduction to Cross-Consensus Message Format (XCM)","description":"XCM, The Messaging Format at the Forefront of Interoperability.","sidebar":"docs"},"learn/learn-xcm-instructions":{"id":"learn/learn-xcm-instructions","title":"XCM Instructions & Register Specification","description":"Specification for Instructions and Registers for the XCM Format.","sidebar":"docs"},"learn/learn-xcm-pallet":{"id":"learn/learn-xcm-pallet","title":"XCM FRAME Pallet Overview","description":"Mechanics of the XCM Pallet and its role in Polkadot\'s Ecosystem.","sidebar":"docs"},"learn/learn-xcm-transport":{"id":"learn/learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","description":"Methods to send XCM Messages across Networks.","sidebar":"docs"},"learn/learn-xcm-usecases":{"id":"learn/learn-xcm-usecases","title":"XCM Use-cases & Examples","description":"Cross-consensus Interactions and the XCM Format.","sidebar":"docs"},"learn/learn-xcvm":{"id":"learn/learn-xcvm","title":"XCM Virtual Machine (XCVM) & XCM Executor","description":"Design of the XCM Executor and Mechanics of the XCM Virtual Machine.","sidebar":"docs"},"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive":{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","title":"Executor Configuration","description":"Deep Dive into the Configuration of the XCM-Executor.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","title":"Weight and Fees","description":"Weight and Fees in XCM.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","title":"MultiAsset","description":"The MultiAsset Datatype.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","title":"Fundamentals","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","title":"XCVM","description":"Deep Dive into XCVM.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","title":"Example","description":"A MultiLocation Example.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","title":"Junction(s)","description":"The Junction Type in a MultiLocation Struct.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","title":"MultiLocation","description":"Learn about XCM fundamentals.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-assets":{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","title":"Trap and Claim Assets","description":"Instructions to Trap and Claim Assets.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-channels":{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","title":"Channels and Bridges","description":"Establishment of HRMP Channels between Parachains.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-expectations":{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","title":"Expectations","description":"Expect Instructions to Check if a Condition is Valid.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-fees":{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","title":"Fee Handling","description":"How Fees for XCM Transfers are Handled.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-holding":{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","title":"More Holding Modifiers","description":"More Instructions to Alter the Holding Register.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-origin":{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","title":"Origin Manipulation","description":"Manipulating the Origin of XCM.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-queries":{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","title":"Queries","description":"Query Information from another Consensus System.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-register":{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","title":"Register Modifiers","description":"More Instructions to Change the XCVM Registers.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-summary":{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","title":"A Journey through XCM","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-transact":{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","title":"Transact","description":"The Transact Instruction to Execute XCM Calls.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-version":{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","title":"Version Subscription","description":"Get Notified about XCM Version Updates.","sidebar":"docs"},"learn/xcm/journey/locks/learn-xcm-docs-journey-locks":{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","title":"Locks","description":"Restrict Transfer or Withdrawal of Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","title":"Reserve-backed Transfers","description":"Reserve-backed Transfers: Third-party Reserve to store Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","title":"Transfers","description":"Summary about XCM Transfers.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","title":"Asset Teleportation","description":"Teleportation: Sending Assets Across Chains.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-intro":{"id":"learn/xcm/learn-xcm-docs-intro","title":"XCM: Cross-Consensus Messaging","description":"Introduction to the XCM Documentation.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-testing":{"id":"learn/xcm/learn-xcm-docs-testing","title":"Testing","description":"Testing XCM-powered Solutions.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-architecture":{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","title":"The XCM Architecture","description":"The XCM Architecture.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-format":{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","title":"XCM is a Format, not a Protocol","description":"XCM is a Format, not a Protocol.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-intro":{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","title":"Introduction","description":"An Introduction to XCM.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-summary":{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","title":"XCM: Cross-Consensus Messaging","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-xcvm":{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","title":"The XCVM","description":"The Cross-Consensus Virtual Machine.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","title":"First Look at an XCM","description":"First Look at an XCM.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","title":"XCM Simulator","description":"Test XCM using a Simulated Environment.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","title":"Quickstart","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-glossary":{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","title":"Glossary","description":"Glossary.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers":{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","title":"All XCVM Registers","description":"All XCVM Registers.","sidebar":"docs"},"maintain/archive/maintain-guides-democracy":{"id":"maintain/archive/maintain-guides-democracy","title":"Participate in Democracy","description":"Steps on how to participate in democracy.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-join-council":{"id":"maintain/archive/maintain-guides-how-to-join-council","title":"Join the Council","description":"Steps on how to join the official on-chain council.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-vote-councillor":{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","title":"Voting for Councillors","description":"Steps on how to vote for councillors.","sidebar":"docs"},"maintain/doc-maintain-guides-validator-community":{"id":"maintain/doc-maintain-guides-validator-community","title":"Validator Community Overview","description":"An extensive guide to help you start and build a validator community.","sidebar":"docs"},"maintain/kusama/maintain-guides-how-to-validate-kusama":{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","description":"The fundamentals for running a Kusama validator."},"maintain/kusama/maintain-guides-society-kusama":{"id":"maintain/kusama/maintain-guides-society-kusama","title":"Kappa Sigma Mu","description":"Learn about the Kappa Sigma Mu society and join as a member."},"maintain/maintain-archive":{"id":"maintain/maintain-archive","title":"Maintain Archive","description":"Archive for the Maintain Section.","sidebar":"docs"},"maintain/maintain-bootnode":{"id":"maintain/maintain-bootnode","title":"Set up a Boot Node","description":"Steps on setting up a boot node.","sidebar":"docs"},"maintain/maintain-endpoints":{"id":"maintain/maintain-endpoints","title":"Node Endpoints","description":"List of node endpoints and examples of use.","sidebar":"docs"},"maintain/maintain-errors":{"id":"maintain/maintain-errors","title":"Errors and How to Resolve Them","description":"Common errors you might encounter and how they can be resolved.","sidebar":"docs"},"maintain/maintain-guides-async-backing":{"id":"maintain/maintain-guides-async-backing","title":"Upgrade Parachain for Asynchronous Backing Compatibility","description":"Steps on how to upgrade a parachain to be compatible with the relay chain\'s async backing feature.","sidebar":"docs"},"maintain/maintain-guides-avoid-slashing":{"id":"maintain/maintain-guides-avoid-slashing","title":"Validator Best Practices","description":"Best practices to avoid slashing.","sidebar":"docs"},"maintain/maintain-guides-how-to-chill":{"id":"maintain/maintain-guides-how-to-chill","title":"How to Chill","description":"Steps on chilling as a network participant.","sidebar":"docs"},"maintain/maintain-guides-how-to-monitor-your-node":{"id":"maintain/maintain-guides-how-to-monitor-your-node","title":"Monitor your node","description":"This guide will walk you through how to set up Prometheus with","sidebar":"docs"},"maintain/maintain-guides-how-to-stop-validating":{"id":"maintain/maintain-guides-how-to-stop-validating","title":"How to Stop Validating","description":"Steps on how to stop validating.","sidebar":"docs"},"maintain/maintain-guides-how-to-systemd":{"id":"maintain/maintain-guides-how-to-systemd","title":"Using systemd for a Validator Node","description":"Using a service manager for your validator node.","sidebar":"docs"},"maintain/maintain-guides-how-to-upgrade":{"id":"maintain/maintain-guides-how-to-upgrade","title":"How to Upgrade Your Validator","description":"Validators perform critical functions for the network, and as such, have strict uptime requirements.","sidebar":"docs"},"maintain/maintain-guides-how-to-validate-polkadot":{"id":"maintain/maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","description":"The fundamentals for running a Polkadot validator.","sidebar":"docs"},"maintain/maintain-guides-secure-validator":{"id":"maintain/maintain-guides-secure-validator","title":"Secure Validator","description":"Tips for running a secure validator.","sidebar":"docs"},"maintain/maintain-guides-validator-payout":{"id":"maintain/maintain-guides-validator-payout","title":"Validator Payout Overview","description":"How validator payout works on the network and what you should expect.","sidebar":"docs"},"maintain/maintain-index":{"id":"maintain/maintain-index","title":"Network Maintainers","description":"Reference point for network maintenance guides.","sidebar":"docs"},"maintain/maintain-networks":{"id":"maintain/maintain-networks","title":"Networks","description":"Information about the different networks of the Polkadot ecosystem.","sidebar":"docs"},"maintain/maintain-polkadot-parameters":{"id":"maintain/maintain-polkadot-parameters","title":"Polkadot Parameters","description":"A description about fundamental Polkadot parameters.","sidebar":"docs"},"maintain/maintain-rpc":{"id":"maintain/maintain-rpc","title":"Set up a RPC node","description":"Steps on setting up a RPC node.","sidebar":"docs"},"maintain/maintain-sync":{"id":"maintain/maintain-sync","title":"Set up a Full Node","description":"Steps on how to set up a full node.","sidebar":"docs"},"maintain/maintain-wss":{"id":"maintain/maintain-wss","title":"Secure the WebSocket","description":"Steps on setting up a secure socket for remote connections.","sidebar":"docs"}}}')}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[53],{22624:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"Explore","description":"Wallets and Apps in the Polkadot Ecosystem.","items":[{"type":"link","label":"Getting Started","href":"/docs/getting-started","docId":"general/getting-started"},{"type":"category","label":"Wallets","description":"Beginner friendly wallets with advanced features.","items":[{"type":"link","label":"Polkadot Ecosystem Wallets","description":"Wallets listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/wallets/"},{"type":"link","label":"Wallets and Extensions","href":"/docs/wallets-and-extensions","docId":"general/wallets-and-extensions"},{"type":"link","label":"Ledger","href":"/docs/ledger","docId":"general/ledger"},{"type":"link","label":"Polkadot Vault","href":"/docs/polkadot-vault","docId":"general/polkadot-vault"}],"collapsed":true,"collapsible":true,"href":"/docs/wallets-index"},{"type":"category","label":"Apps","description":"Apps for Staking, Governance, Multisigs, NFTs and many more use cases.","items":[{"type":"link","label":"Polkadot Ecosystem Apps","description":"Apps listed on official Polkadot website.","href":"https://polkadot.network/ecosystem/dapps/"},{"type":"link","label":"DotAppStore","description":"Apps upvoted by the community.","href":"https://dotappstore.com/"},{"type":"link","label":"Staking Apps","href":"/docs/staking-apps","docId":"general/staking-apps"},{"type":"link","label":"Governance Apps","href":"/docs/governance-apps","docId":"general/governance-apps"},{"type":"link","label":"Multisig Apps","href":"/docs/multisig-apps","docId":"general/multisig-apps"},{"type":"link","label":"NFT Projects","href":"/docs/learn-nft-projects","docId":"learn/learn-nft-projects"},{"type":"link","label":"Parachain Apps","href":"/docs/parachains-apps","docId":"general/parachains-apps"}],"collapsed":true,"collapsible":true,"href":"/docs/apps-index"},{"type":"category","label":"Dashboards","description":"Dashboards in the Polkadot Ecosystem.","items":[{"type":"link","label":"Staking Dashboard","href":"/docs/staking-dashboard","docId":"general/staking-dashboard"}],"collapsed":true,"collapsible":true,"href":"/docs/dashboards-index"},{"type":"category","label":"Community & Contributors","description":"Polkadot Community and Wiki Contributors.","items":[{"type":"link","label":"Community","href":"/docs/community","docId":"general/community"},{"type":"link","label":"Contributing to the Wiki","href":"/docs/contributing","docId":"general/contributing"},{"type":"link","label":"Contributors","href":"/docs/contributors","docId":"general/contributors"}],"collapsed":true,"collapsible":true,"href":"/docs/community-index"},{"type":"category","label":"Programs","description":"Programs for Grants, Bounties, Ambassadors and many more inititatives.","items":[{"type":"link","label":"Decentralized Futures","href":"/docs/decentralized-futures","docId":"general/decentralized-futures"},{"type":"link","label":"Decentralized Voices","href":"/docs/decentralized-voices","docId":"general/decentralized-voices"},{"type":"link","label":"Grants","href":"/docs/grants","docId":"general/grants"},{"type":"link","label":"Bug Bounty","href":"/docs/bug-bounty","docId":"general/bug-bounty"},{"type":"link","label":"Polkadot Ambassadors","href":"/docs/ambassadors","docId":"general/ambassadors"},{"type":"link","label":"Alpha Program","href":"/docs/alpha-program","docId":"general/alpha-program"},{"type":"link","label":"Thousand Validators","href":"/docs/thousand-validators","docId":"general/doc-thousand-validators"},{"type":"link","label":"Thousand Contributors","href":"/docs/thousand-contributors","docId":"general/doc-thousand-contributors"},{"type":"link","label":"Developer Heroes","href":"/docs/dev-heroes","docId":"general/dev-heroes"}],"collapsed":true,"collapsible":true,"href":"/docs/programs-index"},{"type":"link","label":"Metadata Explorer","href":"/docs/metadata","docId":"general/metadata"}],"collapsed":true,"collapsible":true,"href":"/docs/explore-index"},{"type":"category","label":"Learn","items":[{"type":"category","label":"General","description":"General Information to get started with Polkadot and Web3.","items":[{"type":"link","label":"Web3 and Polkadot","href":"/docs/web3-and-polkadot","docId":"general/web3-and-polkadot"},{"type":"category","label":"Polkadot Vision","description":"Polkadot\'s Vision revealed by Gavin Wood at Decoded 2023.","items":[{"type":"link","label":"Polkadot 1.0","href":"/docs/polkadot-v1","docId":"general/polkadot-v1"},{"type":"link","label":"Polkadot Direction","href":"/docs/polkadot-direction","docId":"general/polkadot-direction"}],"collapsed":true,"collapsible":true,"href":"/docs/polkadot-vision-index"},{"type":"category","label":"Stay Safe","description":"Good-practices to Stay Safe while Surfing in Web3.","items":[{"type":"link","label":"Do Your Own Research","href":"/docs/how-to-dyor","docId":"general/how-to-dyor"},{"type":"link","label":"Scam Protection","href":"/docs/learn-scams","docId":"general/scams"},{"type":"link","label":"Transaction Verification","href":"/docs/transaction-attacks","docId":"general/transaction-attacks"}],"collapsed":true,"collapsible":true,"href":"/docs/stay-safe-index"},{"type":"link","label":"Build on Polkadot","href":"/docs/start-building","docId":"general/start-building"},{"type":"link","label":"Research Pages","href":"/docs/research","docId":"general/research"},{"type":"link","label":"FAQ","href":"/docs/faq","docId":"general/faq"},{"type":"link","label":"Glossary","href":"/docs/glossary","docId":"general/glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/general-index"},{"type":"category","label":"Basics","description":"Staking, Accounts, Transactions, Tokens and NFTs, and Governance.","items":[{"type":"category","label":"Accounts","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Account Abstraction","href":"/docs/learn-account-abstraction","docId":"learn/learn-account-abstraction"},{"type":"link","label":"Account Identity","href":"/docs/learn-identity","docId":"learn/learn-identity"},{"type":"link","label":"Multi-Signature Accounts","href":"/docs/learn-account-multisig","docId":"learn/learn-account-multisig"},{"type":"link","label":"Proxy Accounts","href":"/docs/learn-proxies","docId":"learn/learn-proxies"},{"type":"link","label":"Pure Proxy Accounts","href":"/docs/learn-proxies-pure","docId":"learn/learn-proxies-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-accounts"},{"type":"category","label":"Transactions","description":"Extrinsics, Balance Transfers, and Fees.","items":[{"type":"link","label":"Transaction Fees","href":"/docs/learn-transaction-fees","docId":"learn/learn-transaction-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-transactions"},{"type":"category","label":"Staking","description":"Mechanics of Staking.","items":[{"type":"link","label":"Introduction to Staking","href":"/docs/learn-staking","docId":"learn/learn-staking"},{"type":"link","label":"Nomination Pools","href":"/docs/learn-nomination-pools","docId":"learn/learn-nomination-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-staking-index"},{"type":"category","label":"Polkadot OpenGov","description":"Everything about Polkadot OpenGov.","items":[{"type":"link","label":"Polkadot OpenGov","href":"/docs/learn-polkadot-opengov","docId":"learn/learn-polkadot-opengov"},{"type":"link","label":"OpenGov Origins","href":"/docs/learn-polkadot-opengov-origins","docId":"learn/learn-polkadot-opengov-origins"},{"type":"link","label":"Technical Fellowship","href":"/docs/learn-polkadot-technical-fellowship","docId":"learn/learn-polkadot-technical-fellowship"},{"type":"link","label":"OpenGov.Watch","description":"Community-maintained Support Pages about Polkadot OpenGov.","href":"https://www.opengov.watch/"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-opengov-index"},{"type":"link","label":"Treasury","href":"/docs/learn-polkadot-opengov-treasury","docId":"learn/learn-polkadot-opengov-treasury"},{"type":"category","label":"Tokens and Assets","description":"DOT Token, Asset Hub, and Teleports.","items":[{"type":"link","label":"DOT","href":"/docs/learn-DOT","docId":"learn/learn-DOT"},{"type":"link","label":"Token Inflation","href":"/docs/learn-inflation","docId":"learn/learn-inflation"},{"type":"category","label":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","items":[{"type":"link","label":"Asset Conversion","href":"/docs/learn-asset-conversion-assethub","docId":"learn/learn-asset-conversion-assethub"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets"},{"type":"link","label":"Teleporting Assets","href":"/docs/learn-teleport","docId":"learn/learn-teleport"},{"type":"link","label":"Introduction to NFTs","href":"/docs/learn-nft","docId":"learn/learn-nft"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-assets-index"},{"type":"category","label":"Network Participants","description":"Participants in the Polkadot Ecosystem.","items":[{"type":"link","label":"Collator","href":"/docs/learn-collator","docId":"learn/learn-collator"},{"type":"link","label":"Nominator","href":"/docs/learn-nominator","docId":"learn/learn-nominator"},{"type":"link","label":"Validator","href":"/docs/learn-validator","docId":"learn/learn-validator"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-participants-index"},{"type":"category","label":"Components","description":"OpenGov, Treasury, WASM, Runtime Upgrades, and more.","items":[{"type":"link","label":"Polkadot Host","href":"/docs/learn-polkadot-host","docId":"learn/learn-polkadot-host"},{"type":"link","label":"WebAssembly (Wasm)","href":"/docs/learn-wasm","docId":"learn/learn-wasm"},{"type":"link","label":"Runtime Upgrades","href":"/docs/learn-runtime-upgrades","docId":"learn/learn-runtime-upgrades"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-components-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-basics-index"},{"type":"category","label":"Advanced","description":"Advanced Concepts & Guides about Accounts, Staking, and NFTs.","items":[{"type":"category","label":"Polkadot-JS","description":"Overview of Polkadot-JS.","items":[{"type":"link","label":"Polkadot-JS Tooling","href":"/docs/polkadotjs","docId":"general/polkadotjs"},{"type":"link","label":"Polkadot-JS UI","href":"/docs/polkadotjs-ui","docId":"general/polkadotjs-ui"},{"type":"category","label":"Polkadot-JS Guides","description":"Polkadot-JS Guides about Staking, Asset Hub, Vault App, and more.","items":[{"type":"category","label":"Account Guides","description":"Polkadot-JS Guides about Accounts.","items":[{"type":"link","label":"Multisig Guides","href":"/docs/learn-guides-accounts-multisig","docId":"learn/learn-guides-accounts-multisig"},{"type":"link","label":"Proxy Guides","href":"/docs/learn-guides-accounts-proxy","docId":"learn/learn-guides-accounts-proxy"},{"type":"link","label":"Pure Proxy Guides","href":"/docs/learn-guides-accounts-proxy-pure","docId":"learn/learn-guides-accounts-proxy-pure"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-accounts"},{"type":"link","label":"Transfer Guides","href":"/docs/learn-guides-transfers","docId":"learn/learn-guides-transfers"},{"type":"category","label":"Staking Guides","description":"Polkadot-JS Guides about Staking.","items":[{"type":"link","label":"Nominator Guides","href":"/docs/learn-guides-nominator","docId":"learn/learn-guides-nominator"},{"type":"link","label":"Nomination Pool Guides","href":"/docs/learn-guides-staking-pools","docId":"learn/learn-guides-staking-pools"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-staking"},{"type":"link","label":"OpenGov Guides","href":"/docs/learn-guides-polkadot-opengov","docId":"learn/learn-guides-polkadot-opengov"},{"type":"link","label":"Treasury Guides","href":"/docs/learn-guides-treasury","docId":"learn/learn-guides-treasury"},{"type":"link","label":"Bounty Guides","href":"/docs/learn-guides-bounties","docId":"learn/learn-guides-bounties"},{"type":"link","label":"Identity Guides","href":"/docs/learn-guides-identity","docId":"learn/learn-guides-identity"},{"type":"link","label":"Ledger Guides","href":"/docs/learn-guides-ledger","docId":"learn/learn-guides-ledger"},{"type":"link","label":"Polkadot Vault Guides","href":"/docs/learn-guides-vault","docId":"learn/learn-guides-vault"},{"type":"category","label":"Asset Hub Guides","description":"Polkadot-JS Guides about Asset Hub.","items":[{"type":"link","label":"Create Asset Guides","href":"/docs/learn-guides-assets-create","docId":"learn/learn-guides-assets-create"},{"type":"link","label":"Asset Hub Ledger Guides","href":"/docs/learn-guides-assets-ledger","docId":"learn/learn-guides-assets-ledger"},{"type":"link","label":"Asset Conversion Tutorials","href":"/docs/learn-guides-asset-conversion","docId":"learn/learn-guides-asset-conversion"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-assets"},{"type":"category","label":"Bridge Hub Guides","description":"Polkadot-JS Guides for Bridge Hub.","items":[{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-guides-dot-ksm-bridge","docId":"learn/learn-guides-dot-ksm-bridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-guides-bridges"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadot-js-guides"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-polkadotjs"},{"type":"category","label":"Architecture","description":"Nominators, Validators, Collators, Parachains, and more.","items":[{"type":"link","label":"Consensus","href":"/docs/learn-consensus","docId":"learn/learn-consensus"},{"type":"category","label":"Parachains","description":"Parachains\' Protocol, Auctions, Crowdloans, and more.","items":[{"type":"link","label":"Introduction to Parachains","href":"/docs/learn-parachains","docId":"learn/learn-parachains"},{"type":"link","label":"Protocol Overview","href":"/docs/learn-parachains-protocol","docId":"learn/learn-parachains-protocol"},{"type":"link","label":"System Parachains","href":"/docs/learn-system-chains","docId":"learn/learn-system-chains"},{"type":"link","label":"Parachain Slot Auctions","href":"/docs/learn-auction","docId":"learn/learn-auction"},{"type":"link","label":"Parachain Crowdloans","href":"/docs/learn-crowdloans","docId":"learn/learn-crowdloans"},{"type":"link","label":"Parachains FAQ","href":"/docs/learn-parachains-faq","docId":"learn/learn-parachains-faq"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-parachains-index"},{"type":"link","label":"Asynchronous Backing","href":"/docs/learn-async-backing","docId":"learn/learn-async-backing"},{"type":"category","label":"Agile Coretime","description":"Concepts, Implementation and Tutorials on Agile Coretime.","items":[{"type":"link","label":"Agile Coretime Intro","href":"/docs/learn-agile-coretime","docId":"learn/learn-agile-coretime"},{"type":"link","label":"Coretime Marketplaces","href":"/docs/learn-guides-coretime-marketplaces","docId":"learn/learn-guides-coretime-marketplaces"},{"type":"link","label":"Coretime for Parachains","href":"/docs/learn-guides-coretime-parachains","docId":"learn/learn-guides-coretime-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-agile-coretime-index"},{"type":"category","label":"Bridges","description":"Bridging Polkadot to other Blockchain Protocols.","items":[{"type":"link","label":"Bridge Hub","href":"/docs/learn-bridge-hub","docId":"learn/learn-bridge-hub"},{"type":"link","label":"DOT <> KSM Bridge","href":"/docs/learn-dot-ksm-bridge","docId":"learn/learn-dot-ksm-bridge"},{"type":"link","label":"Hyperbridge","href":"/docs/learn-hyperbridge","docId":"learn/learn-hyperbridge"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-bridges"},{"type":"category","label":"Cross Consensus Messaging (XCM)","description":"Polkadot\'s Cross-Consensus Messaging Format (XCM).","items":[{"type":"link","label":"Cross-Consensus Message Format (XCM)","href":"/docs/learn-xcm","docId":"learn/learn-xcm"},{"type":"link","label":"XCM Pallet","href":"/docs/learn-xcm-pallet","docId":"learn/learn-xcm-pallet"},{"type":"link","label":"XCM Use-cases","href":"/docs/learn-xcm-usecases","docId":"learn/learn-xcm-usecases"},{"type":"link","label":"XCM Transport","href":"/docs/learn-xcm-transport","docId":"learn/learn-xcm-transport"},{"type":"link","label":"XCM Virtual Machine (XCVM)","href":"/docs/learn-xcvm","docId":"learn/learn-xcvm"},{"type":"link","label":"XCM Instructions","href":"/docs/learn-xcm-instructions","docId":"learn/learn-xcm-instructions"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-xcm-index"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-architecture"},{"type":"link","label":"Accounts","href":"/docs/learn-account-advanced","docId":"learn/learn-account-advanced"},{"type":"link","label":"Advanced Staking Concepts","href":"/docs/learn-staking-advanced","docId":"learn/learn-staking-advanced"},{"type":"link","label":"NFT Pallets","href":"/docs/learn-nft-pallets","docId":"learn/learn-nft-pallets"},{"type":"link","label":"Cryptography","href":"/docs/learn-cryptography","docId":"learn/learn-cryptography"},{"type":"link","label":"NPoS Election Algorithms","href":"/docs/learn-phragmen","docId":"learn/learn-phragmen"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-advanced-index"},{"type":"category","label":"XCM Docs","description":"In-depth documentation about the Polkadot\'s Cross-Chain Messaging (XCM).","items":[{"type":"link","label":"XCM: Cross-Consensus Messaging","href":"/docs/learn/xcm/introduction","docId":"learn/xcm/learn-xcm-docs-intro"},{"type":"category","label":"Overview","description":"Overview of the XCM Documentation.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/overview-summary","docId":"learn/xcm/overview/learn-xcm-docs-overview-summary"},{"type":"link","label":"Introduction","href":"/docs/learn/xcm/overview-intro","docId":"learn/xcm/overview/learn-xcm-docs-overview-intro"},{"type":"link","label":"A Format, not a Protocol","href":"/docs/learn/xcm/overview-format","docId":"learn/xcm/overview/learn-xcm-docs-overview-format"},{"type":"link","label":"The XCVM","href":"/docs/learn/xcm/overview-xcvm","docId":"learn/xcm/overview/learn-xcm-docs-overview-xcvm"},{"type":"link","label":"Architecture","href":"/docs/learn/xcm/overview-architecture","docId":"learn/xcm/overview/learn-xcm-docs-overview-architecture"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/overview"},{"type":"category","label":"Quickstart","description":"Start Diving into XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/quickstart-summary","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary"},{"type":"link","label":"XCM Simulator","href":"/docs/learn/xcm/quickstart-simulator","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator"},{"type":"link","label":"First Look at an XCM","href":"/docs/learn/xcm/quickstart-first-look","docId":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/quickstart"},{"type":"category","label":"Fundamentals","description":"Fundamental Concepts about XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals-summary","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary"},{"type":"category","label":"MultiLocation","description":"The MultiLocation Type.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/fundamentals/multilocation-summary","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary"},{"type":"link","label":"Junction(s)","href":"/docs/learn/xcm/fundamentals/multilocation-junctions","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions"},{"type":"link","label":"Example","href":"/docs/learn/xcm/fundamentals/multilocation-example","docId":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals/multilocation"},{"type":"link","label":"MultiAsset","href":"/docs/learn/xcm/fundamentals-multiasset","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset"},{"type":"link","label":"XCVM","href":"/docs/learn/xcm/fundamentals-xcvm","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm"},{"type":"link","label":"Weight and Fees","href":"/docs/learn/xcm/fundamentals-fees","docId":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/fundamentals"},{"type":"category","label":"A Journey through XCM","description":"A Practical Introduction to the XCM Features","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey-summary","docId":"learn/xcm/journey/learn-xcm-docs-journey-summary"},{"type":"category","label":"Transfers","description":"Transferring Assets between Consensus Systems with XCM.","items":[{"type":"link","label":"Summary","href":"/docs/learn/xcm/journey/transfers-summary","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary"},{"type":"link","label":"Asset Teleportation","href":"/docs/learn/xcm/journey/transfers-teleport","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport"},{"type":"link","label":"Reserve-backed Transfers","href":"/docs/learn/xcm/journey/transfers-reserve","docId":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey/transfers"},{"type":"link","label":"Fee Handling","href":"/docs/learn/xcm/journey-fees","docId":"learn/xcm/journey/learn-xcm-docs-journey-fees"},{"type":"link","label":"Transact: A General Solution","href":"/docs/learn/xcm/journey-transact","docId":"learn/xcm/journey/learn-xcm-docs-journey-transact"},{"type":"link","label":"Origin Manipulation","href":"/docs/learn/xcm/journey-origin","docId":"learn/xcm/journey/learn-xcm-docs-journey-origin"},{"type":"link","label":"More Register Modifiers","href":"/docs/learn/xcm/journey-register","docId":"learn/xcm/journey/learn-xcm-docs-journey-register"},{"type":"link","label":"More Holding Modifiers","href":"/docs/learn/xcm/journey-holding","docId":"learn/xcm/journey/learn-xcm-docs-journey-holding"},{"type":"link","label":"Trap and Claim Assets","href":"/docs/learn/xcm/journey-assets","docId":"learn/xcm/journey/learn-xcm-docs-journey-assets"},{"type":"link","label":"Expectations","href":"/docs/learn/xcm/journey-expectations","docId":"learn/xcm/journey/learn-xcm-docs-journey-expectations"},{"type":"link","label":"Queries","href":"/docs/learn/xcm/journey-queries","docId":"learn/xcm/journey/learn-xcm-docs-journey-queries"},{"type":"link","label":"Version Subscription","href":"/docs/learn/xcm/journey-version","docId":"learn/xcm/journey/learn-xcm-docs-journey-version"},{"type":"link","label":"Locks","href":"/docs/learn/xcm/journey-locks","docId":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks"},{"type":"link","label":"Channels and Bridges","href":"/docs/learn/xcm/journey-channels","docId":"learn/xcm/journey/learn-xcm-docs-journey-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/journey"},{"type":"link","label":"Executor Configuration","href":"/docs/learn/xcm/config-deep-dive","docId":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive"},{"type":"link","label":"Testing","href":"/docs/learn/xcm/testing","docId":"learn/xcm/learn-xcm-docs-testing"},{"type":"category","label":"References","description":"XCVM Registers and Glossary","items":[{"type":"link","label":"All XCVM Registers","href":"/docs/learn/xcm/reference-xcvm-registers","docId":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers"},{"type":"link","label":"Glossary","href":"/docs/learn/xcm/reference-glossary","docId":"learn/xcm/reference/learn-xcm-docs-reference-glossary"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm/references"}],"collapsed":true,"collapsible":true,"href":"/docs/learn/xcm"},{"type":"category","label":"Polkadot Comparisons","description":"Comparison between Polkadot and other Networks. ","items":[{"type":"link","label":"Kusama","href":"/docs/learn-comparisons-kusama","docId":"learn/learn-comparisons-kusama"},{"type":"link","label":"Ethereum","href":"/docs/learn-comparisons-ethereum-2","docId":"learn/learn-comparisons-ethereum-2"},{"type":"link","label":"Cosmos","href":"/docs/learn-comparisons-cosmos","docId":"learn/learn-comparisons-cosmos"},{"type":"link","label":"Avalanche","href":"/docs/learn-comparisons-avalanche","docId":"learn/learn-comparisons-avalanche"},{"type":"link","label":"Other Comparisons","href":"/docs/learn-comparisons","docId":"learn/learn-comparisons"},{"type":"link","label":"Layer Two and Rollups","href":"/docs/learn-comparisons-rollups","docId":"learn/learn-comparisons-rollups"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-comparisons-index"},{"type":"link","label":"Videos","href":"/docs/learn-video-tutorials","docId":"learn/learn-video-tutorials"},{"type":"category","label":"Future Implementations","description":"Implementations that will be deployed on Polkadot.","items":[{"type":"link","label":"SPREE","href":"/docs/learn-spree","docId":"learn/learn-spree"},{"type":"link","label":"Parathreads","href":"/docs/learn-parathreads","docId":"learn/learn-parathreads"},{"type":"link","label":"Elastic Scaling","href":"/docs/learn-elastic-scaling","docId":"learn/learn-elastic-scaling"},{"type":"link","label":"SASSAFRAS","href":"/docs/learn-sassafras","docId":"learn/learn-sassafras"},{"type":"link","label":"JAM Chain","href":"/docs/learn-jam-chain","docId":"learn/learn-jam-chain"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-future-implementations-index"},{"type":"category","label":"Archive","description":"Implementations no longer live on Polkadot.","items":[{"type":"link","label":"Governance V1","href":"/docs/learn/learn-governance","docId":"learn/archive/learn-governance"},{"type":"link","label":"Gov1 Treasury","href":"/docs/learn/learn-treasury","docId":"learn/archive/learn-treasury"},{"type":"link","label":"Polkadot Launch Phases","href":"/docs/learn/learn-launch","docId":"learn/archive/learn-launch"},{"type":"link","label":"Redenomination of DOT","href":"/docs/learn/learn-redenomination","docId":"learn/archive/learn-redenomination"},{"type":"link","label":"Controller Accounts","href":"/docs/learn/learn-controller","docId":"learn/archive/learn-controller"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/learn-index"},{"type":"category","label":"Build","items":[{"type":"category","label":"Client-side Development","items":[{"type":"link","label":"Building Client-side Apps","href":"/docs/build-client-side","docId":"build/build-client-side"},{"type":"link","label":"Using Light Clients","href":"/docs/build-light-clients","docId":"build/build-light-clients"},{"type":"link","label":"Node Interaction","href":"/docs/build-node-interaction","docId":"build/build-node-interaction"}],"collapsed":true,"collapsible":true,"href":"/docs/build-client-index"},{"type":"link","label":"Smart Contracts","href":"/docs/build-smart-contracts","docId":"build/build-smart-contracts"},{"type":"category","label":"Protocol Development","items":[{"type":"link","label":"Polkadot Protocol Overview","href":"/docs/build-protocol-info","docId":"build/build-protocol-info"},{"type":"link","label":"Using AssetHub","href":"/docs/build-integrate-assets","docId":"build/build-integrate-assets"},{"type":"link","label":"Opening HRMP Channels","href":"/docs/build-hrmp-channels","docId":"build/build-hrmp-channels"}],"collapsed":true,"collapsible":true,"href":"/docs/build-protocol-index"},{"type":"link","label":"Development Networks","href":"/docs/build-network-overview","docId":"build/build-network-overview"},{"type":"category","label":"Tooling","items":[{"type":"link","label":"Explorer, Data, & Indexing Tools","href":"/docs/build-data","docId":"build/build-data"},{"type":"link","label":"Open Source Stack","href":"/docs/build-open-source","docId":"build/build-open-source"}],"collapsed":true,"collapsible":true,"href":"/docs/build-tools-index"},{"type":"link","label":"Hackathons","href":"/docs/build-hackathon","docId":"build/build-hackathon"},{"type":"category","label":"Build Archive","items":[{"type":"link","label":"Transaction Construction","href":"/docs/build-transaction-construction","docId":"build/build-transaction-construction"},{"type":"link","label":"Integration Initiation","href":"/docs/build-integration","docId":"build/build-integration"},{"type":"link","label":"Node Management","href":"/docs/build-node-management","docId":"build/build-node-management"},{"type":"link","label":"Parachain Development","href":"/docs/build-pdk","docId":"build/build-parachains"}],"collapsed":true,"collapsible":true,"href":"/docs/build-archive-index"}],"collapsed":true,"collapsible":true,"href":"/docs/build-guide"},{"type":"category","label":"Maintain","items":[{"type":"link","label":"Parameters","href":"/docs/maintain-polkadot-parameters","docId":"maintain/maintain-polkadot-parameters"},{"type":"category","label":"Nodes and Dapps","description":"Learn how to set up a node.","items":[{"type":"link","label":"Node Endpoints","href":"/docs/maintain-endpoints","docId":"maintain/maintain-endpoints"},{"type":"link","label":"Set up a Full Node","href":"/docs/maintain-sync","docId":"maintain/maintain-sync"},{"type":"link","label":"Set up a Boot Node","href":"/docs/maintain-bootnode","docId":"maintain/maintain-bootnode"},{"type":"link","label":"Set up a RPC node","href":"/docs/maintain-rpc","docId":"maintain/maintain-rpc"},{"type":"link","label":"Secure the WebSocket","href":"/docs/maintain-wss","docId":"maintain/maintain-wss"},{"type":"link","label":"Networks","href":"/docs/maintain-networks","docId":"maintain/maintain-networks"},{"type":"link","label":"Resolving Errors","href":"/docs/maintain-errors","docId":"maintain/maintain-errors"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-node-index"},{"type":"category","label":"Collator Guides","description":"Guides for Collator Nodes.","items":[{"type":"link","label":"Async Backing Upgrade","href":"/docs/maintain-guides-async-backing","docId":"maintain/maintain-guides-async-backing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-collator-index"},{"type":"category","label":"Validator Guides","description":"Guides for Validator Nodes.","items":[{"type":"link","label":"How to run a Validator on Polkadot","href":"/docs/maintain-guides-how-to-validate-polkadot","docId":"maintain/maintain-guides-how-to-validate-polkadot"},{"type":"link","label":"Validator Payout Overview","href":"/docs/maintain-guides-validator-payout","docId":"maintain/maintain-guides-validator-payout"},{"type":"link","label":"Using systemd for a Validator Node","href":"/docs/maintain-guides-how-to-systemd","docId":"maintain/maintain-guides-how-to-systemd"},{"type":"link","label":"Secure Validator","href":"/docs/maintain-guides-secure-validator","docId":"maintain/maintain-guides-secure-validator"},{"type":"link","label":"How to Upgrade Your Validator","href":"/docs/maintain-guides-how-to-upgrade","docId":"maintain/maintain-guides-how-to-upgrade"},{"type":"link","label":"Monitor your node","href":"/docs/maintain-guides-how-to-monitor-your-node","docId":"maintain/maintain-guides-how-to-monitor-your-node"},{"type":"link","label":"How to Chill","href":"/docs/maintain-guides-how-to-chill","docId":"maintain/maintain-guides-how-to-chill"},{"type":"link","label":"How to Stop Validating","href":"/docs/maintain-guides-how-to-stop-validating","docId":"maintain/maintain-guides-how-to-stop-validating"},{"type":"link","label":"Validator Community Overview","href":"/docs/maintain-guides-validator-community","docId":"maintain/doc-maintain-guides-validator-community"},{"type":"link","label":"Validator Best Practices","href":"/docs/maintain-guides-avoid-slashing","docId":"maintain/maintain-guides-avoid-slashing"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-validator-index"},{"type":"category","label":"Archive","description":"Basic Accounts, Identity, Multi-signature, and Proxies.","items":[{"type":"link","label":"Participate in Democracy","href":"/docs/maintain/maintain-guides-democracy","docId":"maintain/archive/maintain-guides-democracy"},{"type":"link","label":"Join the Council","href":"/docs/maintain/maintain-guides-how-to-join-council","docId":"maintain/archive/maintain-guides-how-to-join-council"},{"type":"link","label":"Voting for Councillors","href":"/docs/maintain/maintain-guides-how-to-vote-councillor","docId":"maintain/archive/maintain-guides-how-to-vote-councillor"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-archive"}],"collapsed":true,"collapsible":true,"href":"/docs/maintain-index"}]},"docs":{"build/build-client-side":{"id":"build/build-client-side","title":"Building Client-side Apps","description":"An overview about building clients that use Polkadot","sidebar":"docs"},"build/build-dapp":{"id":"build/build-dapp","title":"Building dApps","description":"An overview about building dApps on Polkadot"},"build/build-data":{"id":"build/build-data","title":"Explorer, Data, & Indexing Tools","description":"An overview about building with data analytics","sidebar":"docs"},"build/build-guide":{"id":"build/build-guide","title":"Polkadot Developer Portal","description":"Start building with Polkadot/Kusama.","sidebar":"docs"},"build/build-hackathon":{"id":"build/build-hackathon","title":"Hackathons","description":"Join or host a Hackathon.","sidebar":"docs"},"build/build-hrmp-channels":{"id":"build/build-hrmp-channels","title":"Opening HRMP Channels","description":"Steps on how to open HRMP channels between parachains.","sidebar":"docs"},"build/build-index":{"id":"build/build-index","title":"Builder\'s Guides","description":"Reference point for the Polkadot builder guides."},"build/build-integrate-assets":{"id":"build/build-integrate-assets","title":"Using AssetHub","description":"Tools that you can use for integrating assets.","sidebar":"docs"},"build/build-integration":{"id":"build/build-integration","title":"Polkadot Integration Guide","description":"Reference point for the Polkadot integration guides.","sidebar":"docs"},"build/build-light-clients":{"id":"build/build-light-clients","title":"Using Light Clients","description":"Information about light client options.","sidebar":"docs"},"build/build-network-overview":{"id":"build/build-network-overview","title":"Development Networks","description":"An overview of the different networks on Polkadot","sidebar":"docs"},"build/build-node-interaction":{"id":"build/build-node-interaction","title":"Node Interaction","description":"Tools for node interaction.","sidebar":"docs"},"build/build-node-management":{"id":"build/build-node-management","title":"Node Management","description":"Steps on how to manage your Polkadot node.","sidebar":"docs"},"build/build-open-source":{"id":"build/build-open-source","title":"Open Source Stack","description":"Overview of the open source Polkadot/Kusama Tech Stack","sidebar":"docs"},"build/build-oracle":{"id":"build/build-oracle","title":"Oracles","description":"Information about building with oracles."},"build/build-parachains":{"id":"build/build-parachains","title":"Parachain Development","description":"A guide on what it means to become a Parachain and the steps to do so.","sidebar":"docs"},"build/build-protocol-info":{"id":"build/build-protocol-info","title":"Polkadot Protocol Overview","description":"Characteristics about the Polkadot protocol, and what you need to consider when building.","sidebar":"docs"},"build/build-smart-contracts":{"id":"build/build-smart-contracts","title":"Smart Contracts","description":"How smart contracts play their role in the Polkadot ecosystem.","sidebar":"docs"},"build/build-storage":{"id":"build/build-storage","title":"Decentralized Storage","description":"Information about building with decentralized storage."},"build/build-tools-index":{"id":"build/build-tools-index","title":"Tool Index","description":"Reference point for a list of tools to support your development.","sidebar":"docs"},"build/build-transaction-construction":{"id":"build/build-transaction-construction","title":"Transaction Construction and Signing","description":"Information about how transactions are constructed on Polkadot.","sidebar":"docs"},"general/alpha-program":{"id":"general/alpha-program","title":"Polkadot Alpha Program","description":"The Polkadot Alpha Program and How it can Support your Development.","sidebar":"docs"},"general/ambassadors":{"id":"general/ambassadors","title":"Polkadot Ambassador Program","description":"The Polkadot\'s Ambassador Program and How you can Participate in It.","sidebar":"docs"},"general/bug-bounty":{"id":"general/bug-bounty","title":"Bug Bounty Program","description":"An Overview of How you can Help Catch Bugs.","sidebar":"docs"},"general/community":{"id":"general/community","title":"Community","description":"Connect and stay updated with the Polkadot Community.","sidebar":"docs"},"general/contributing":{"id":"general/contributing","title":"Contributing to the Polkadot Wiki","description":"Contribute to the Polkadot Wiki.","sidebar":"docs"},"general/contributors":{"id":"general/contributors","title":"Contributors","description":"Get to know your Wiki-slayers.","sidebar":"docs"},"general/decentralized-futures":{"id":"general/decentralized-futures","title":"Decentralized Futures Program","description":"Learn about the Decentralized Futures Program.","sidebar":"docs"},"general/decentralized-voices":{"id":"general/decentralized-voices","title":"Decentralized Voices Program","description":"Learn about the Decentralized Voices Program.","sidebar":"docs"},"general/dev-heroes":{"id":"general/dev-heroes","title":"Developer Heroes Program","description":"More Power to Polkadot\'s Developers.","sidebar":"docs"},"general/doc-thousand-contributors":{"id":"general/doc-thousand-contributors","title":"Thousand Contributors Program","description":"The Thousand Contributors Program and How it can Support your Contributions.","sidebar":"docs"},"general/doc-thousand-validators":{"id":"general/doc-thousand-validators","title":"Thousand Validators Programme","description":"The Thousand Validators Program and How it can Support your Validator Endeavors.","sidebar":"docs"},"general/faq":{"id":"general/faq","title":"Frequently Asked Questions (FAQs)","description":"FAQs to Help you Navigate on Polkadot.","sidebar":"docs"},"general/getting-started":{"id":"general/getting-started","title":"Getting Started","description":"Get started with Polkadot and Web3.","sidebar":"docs"},"general/glossary":{"id":"general/glossary","title":"Glossary","description":"Common Terms and Concepts in the Polkadot Ecosystem.","sidebar":"docs"},"general/governance-apps":{"id":"general/governance-apps","title":"Polkadot Governance Apps","description":"Governance Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/grants":{"id":"general/grants","title":"Grants Program","description":"The Grant Programs in the Polkadot Ecosystem.","sidebar":"docs"},"general/how-to-dyor":{"id":"general/how-to-dyor","title":"How to Do Your Own Research (DYOR)","description":"Importance of Doing Your Own Research (DYOR).","sidebar":"docs"},"general/kusama/kusama-adversarial-cheatsheet":{"id":"general/kusama/kusama-adversarial-cheatsheet","title":"Adversarial Cheatsheet","description":"A cheatsheet to help you create chaos."},"general/kusama/kusama-bug-bounty":{"id":"general/kusama/kusama-bug-bounty","title":"Bug Bounty","description":"An overview of how you can help catch bugs."},"general/kusama/kusama-claims":{"id":"general/kusama/kusama-claims","title":"Kusama Claims","description":"Step-by-step guide on how to claim your KSM tokens."},"general/kusama/kusama-coc":{"id":"general/kusama/kusama-coc","title":"Kusama Code of Conduct","description":"Kusama\'s Code of Conduct to sustain chaos."},"general/kusama/kusama-community":{"id":"general/kusama/kusama-community","title":"Kusama Community","description":"Stay in-touch and keep up-to-date by interacting and engaging in the Kusama community."},"general/kusama/kusama-getting-started":{"id":"general/kusama/kusama-getting-started","title":"Interact with Kusama","description":"Reference point for Kusama content."},"general/kusama/kusama-index":{"id":"general/kusama/kusama-index","title":"Kusama","description":"Legacy link to Kusama Wiki document"},"general/kusama/kusama-parameters":{"id":"general/kusama/kusama-parameters","title":"Kusama Parameters","description":"Learn about common Kusama parameters"},"general/kusama/kusama-social-recovery":{"id":"general/kusama/kusama-social-recovery","title":"Social Recovery","description":"Steps on how to perform account recovery on Kusama."},"general/kusama/kusama-timeline":{"id":"general/kusama/kusama-timeline","title":"Kusama Timeline","description":"Stay up-to-date with the latest action on Kusama."},"general/ledger":{"id":"general/ledger","title":"Using the Polkadot & Kusama Ledger Applications","description":"Use the Polkadot Ledger Application.","sidebar":"docs"},"general/metadata":{"id":"general/metadata","title":"Metadata Explorer","description":"Visualize Metadata and related Documentation.","sidebar":"docs"},"general/multisig-apps":{"id":"general/multisig-apps","title":"Polkadot Multisig Apps","description":"Multisig Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/parachains-apps":{"id":"general/parachains-apps","title":"Polkadot Parachain Apps","description":"Polkadot\'s Parachain Apps.","sidebar":"docs"},"general/polkadot-direction":{"id":"general/polkadot-direction","title":"Polkadot Direction","description":"Polkadot as a Decentralized and Secure Ubiquitous Computer.","sidebar":"docs"},"general/polkadot-v1":{"id":"general/polkadot-v1","title":"Polkadot 1.0","description":"Polkadot\'s 1.0, Blockspace, Decentralization and Resilience.","sidebar":"docs"},"general/polkadot-vault":{"id":"general/polkadot-vault","title":"Polkadot Vault (formerly Parity Signer)","description":"Your old Smartphone as an Air-gapped Wallet.","sidebar":"docs"},"general/polkadotjs":{"id":"general/polkadotjs","title":"Polkadot-JS Tooling","description":"The Polkadot-JS Tool Collection.","sidebar":"docs"},"general/polkadotjs-ui":{"id":"general/polkadotjs-ui","title":"Polkadot-JS UI (Wallet)","description":"A Wallet for Power-users and Developers.","sidebar":"docs"},"general/research":{"id":"general/research","title":"Research Pages","description":"Latest Research Developments on Polkadot.","sidebar":"docs"},"general/scams":{"id":"general/scams","title":"How to Protect Yourself from Scams","description":"How to Protect yourself against Scams.","sidebar":"docs"},"general/staking-apps":{"id":"general/staking-apps","title":"Polkadot Staking Apps","description":"Staking Apps in the Polkadot Ecosystem.","sidebar":"docs"},"general/staking-dashboard":{"id":"general/staking-dashboard","title":"Polkadot Staking Dashboard","description":"Everything about the Polkadot Staking Dashboard.","sidebar":"docs"},"general/start-building":{"id":"general/start-building","title":"Build on Polkadot","description":"Start Building with the Polkadot SDK.","sidebar":"docs"},"general/transaction-attacks":{"id":"general/transaction-attacks","title":"Why Verify Transactions?","description":"How to Prevent from being a Victim of an Attack","sidebar":"docs"},"general/wallets-and-extensions":{"id":"general/wallets-and-extensions","title":"Wallets and Extensions","description":"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.","sidebar":"docs"},"general/web3-and-polkadot":{"id":"general/web3-and-polkadot","title":"Web3 and Polkadot","description":"Introduction to Web3 and Polkadot\'s Role in shaping the Web3 Vision.","sidebar":"docs"},"learn/archive/learn-controller":{"id":"learn/archive/learn-controller","title":"Controller Accounts","description":"Controller Accounts used in Staking.","sidebar":"docs"},"learn/archive/learn-governance":{"id":"learn/archive/learn-governance","title":"Governance V1","description":"Polkadot\'s First Governance Model.","sidebar":"docs"},"learn/archive/learn-launch":{"id":"learn/archive/learn-launch","title":"Polkadot Launch Phases","description":"Polkadot\'s Launch Process and its Individual Phases.","sidebar":"docs"},"learn/archive/learn-redenomination":{"id":"learn/archive/learn-redenomination","title":"Redenomination of DOT","description":"Everything about the DOT Token Redenomination.","sidebar":"docs"},"learn/archive/learn-treasury":{"id":"learn/archive/learn-treasury","title":"Governance v1 Treasury","description":"The Polkadot\'s On-chain Treasury during Gov1.","sidebar":"docs"},"learn/learn-account-abstraction":{"id":"learn/learn-account-abstraction","title":"Polkadot\'s Account Abstraction","description":"Polkadot\'s Native Account Abstraction.","sidebar":"docs"},"learn/learn-account-advanced":{"id":"learn/learn-account-advanced","title":"Polkadot Accounts In-Depth","description":"Advanced Concepts about Polkadot\'s Accounts.","sidebar":"docs"},"learn/learn-account-multisig":{"id":"learn/learn-account-multisig","title":"Multi-Signature Accounts","description":"Multi-signature Accounts on Polkadot.","sidebar":"docs"},"learn/learn-accounts":{"id":"learn/learn-accounts","title":"Polkadot Accounts","description":"Polkadot Accounts, Account Identity, and Account Reaping.","sidebar":"docs"},"learn/learn-agile-coretime":{"id":"learn/learn-agile-coretime","title":"Introduction to Agile Coretime","description":"Introduction to Agile Coretime and its terminology","sidebar":"docs"},"learn/learn-architecture":{"id":"learn/learn-architecture","title":"Architecture","description":"Key Components to Polkadot\'s Architecture.","sidebar":"docs"},"learn/learn-archive":{"id":"learn/learn-archive","title":"Learn Archive","description":"Archive for the Learn Section.","sidebar":"docs"},"learn/learn-asset-conversion-assethub":{"id":"learn/learn-asset-conversion-assethub","title":"Asset Conversion on AssetHub","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-assets":{"id":"learn/learn-assets","title":"Asset Hub","description":"Fungible Tokens and NFTs on Polkadot.","sidebar":"docs"},"learn/learn-async-backing":{"id":"learn/learn-async-backing","title":"Asynchronous Backing","description":"A brief overview of asynchronous backing, and how it affects Polkadot\'s scalability.","sidebar":"docs"},"learn/learn-auction":{"id":"learn/learn-auction","title":"Parachain Slot Auctions","description":"Polkadot\'s Parachain Slot Auction Mechanism.","sidebar":"docs"},"learn/learn-bridge-hub":{"id":"learn/learn-bridge-hub","title":"Bridge Hub","description":"Overview of Bridge Hub System Parachain.","sidebar":"docs"},"learn/learn-bridges":{"id":"learn/learn-bridges","title":"Bridges","description":"Bridges and Examples of Common Bridges.","sidebar":"docs"},"learn/learn-collator":{"id":"learn/learn-collator","title":"Collator","description":"Role of Collators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-comparisons":{"id":"learn/learn-comparisons","title":"Polkadot Comparisons","description":"Comparison between Polkadot and ETH 1.0 and BSC.","sidebar":"docs"},"learn/learn-comparisons-avalanche":{"id":"learn/learn-comparisons-avalanche","title":"Polkadot vs. Avalanche","description":"Comparison between Polkadot and Avalanche.","sidebar":"docs"},"learn/learn-comparisons-cosmos":{"id":"learn/learn-comparisons-cosmos","title":"Polkadot vs. Cosmos","description":"Comparison between Polkadot and Cosmos.","sidebar":"docs"},"learn/learn-comparisons-ethereum-2":{"id":"learn/learn-comparisons-ethereum-2","title":"Polkadot vs. Ethereum","description":"Comparison between Polkadot and Ethereum.","sidebar":"docs"},"learn/learn-comparisons-kusama":{"id":"learn/learn-comparisons-kusama","title":"Polkadot vs. Kusama","description":"Comparing the cousins.","sidebar":"docs"},"learn/learn-comparisons-rollups":{"id":"learn/learn-comparisons-rollups","title":"Layer Two and Rollups","description":"Comparison between various Rollup and L2 Protocols.","sidebar":"docs"},"learn/learn-consensus":{"id":"learn/learn-consensus","title":"Polkadot\'s Consensus Protocols","description":"The Consensus Mechanisms of Polkadot.","sidebar":"docs"},"learn/learn-crowdloans":{"id":"learn/learn-crowdloans","title":"Parachain Crowdloans","description":"Polkadot\'s Crowdloans and How to Participate.","sidebar":"docs"},"learn/learn-cryptography":{"id":"learn/learn-cryptography","title":"Cryptography on Polkadot","description":"Cryptographic Functions used in Polkadot.","sidebar":"docs"},"learn/learn-DOT":{"id":"learn/learn-DOT","title":"DOT","description":"Tokenomics of Polkadot\'s Native Token DOT.","sidebar":"docs"},"learn/learn-dot-ksm-bridge":{"id":"learn/learn-dot-ksm-bridge","title":"Polkadot <> Kusama Bridge","description":"Overview of Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-elastic-scaling":{"id":"learn/learn-elastic-scaling","title":"Polkadot\'s Elastic Scaling","description":"Enabling parachains to scale on-demand through instantaneous coretime.","sidebar":"docs"},"learn/learn-guides-accounts":{"id":"learn/learn-guides-accounts","title":"Polkadot-JS Guides about Accounts","description":"Polkadot-JS Guides about Accounts","sidebar":"docs"},"learn/learn-guides-accounts-multisig":{"id":"learn/learn-guides-accounts-multisig","title":"Polkadot-JS Guides about Multi-signature Accounts","description":"Polkadot-JS Guides about Multi-signature Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy":{"id":"learn/learn-guides-accounts-proxy","title":"Polkadot-JS Guides about Proxy Accounts","description":"Polkadot-JS Guides about Proxy Accounts","sidebar":"docs"},"learn/learn-guides-accounts-proxy-pure":{"id":"learn/learn-guides-accounts-proxy-pure","title":"Polkadot-JS Guides about Pure Proxy Accounts","description":"Polkadot-JS Guides about Pure Proxy Accounts","sidebar":"docs"},"learn/learn-guides-asset-conversion":{"id":"learn/learn-guides-asset-conversion","title":"Asset Conversion Tutorials","description":"Asset Conversion implementation details on AssetHub.","sidebar":"docs"},"learn/learn-guides-assets":{"id":"learn/learn-guides-assets","title":"Polkadot-JS Guides about Asset Hub","description":"Polkadot-JS Guides about Asset Hub.","sidebar":"docs"},"learn/learn-guides-assets-create":{"id":"learn/learn-guides-assets-create","title":"Polkadot-JS Guides about Creating Assets","description":"Polkadot-JS Guides about Creating Assets.","sidebar":"docs"},"learn/learn-guides-assets-ledger":{"id":"learn/learn-guides-assets-ledger","title":"Polkadot-JS Guides about Asset Hub Ledger App","description":"Polkadot-JS Guides about Ledger and the Asset Hub.","sidebar":"docs"},"learn/learn-guides-bounties":{"id":"learn/learn-guides-bounties","title":"Polkadot-JS Guides about Bounties","description":"Polkadot-JS Guides for Bounties","sidebar":"docs"},"learn/learn-guides-coretime-marketplaces":{"id":"learn/learn-guides-coretime-marketplaces","title":"Coretime Marketplaces","description":"Usage guides for coretime marketplaces","sidebar":"docs"},"learn/learn-guides-coretime-parachains":{"id":"learn/learn-guides-coretime-parachains","title":"Agile Coretime for Parachains","description":"Agile Coretime from Parachains perspective","sidebar":"docs"},"learn/learn-guides-dot-ksm-bridge":{"id":"learn/learn-guides-dot-ksm-bridge","title":"Polkadot and Kusama Bridge Guides","description":"Polkadot-JS Guides about Polkadot and Kusama Bridge.","sidebar":"docs"},"learn/learn-guides-identity":{"id":"learn/learn-guides-identity","title":"Polkadot-JS Guides about Identity","description":"Polkadot-JS Guides about Identity.","sidebar":"docs"},"learn/learn-guides-ledger":{"id":"learn/learn-guides-ledger","title":"Polkadot-JS Guides for Ledger Devices","description":"Polkadot-JS Guides for Ledger Devices.","sidebar":"docs"},"learn/learn-guides-nominator":{"id":"learn/learn-guides-nominator","title":"Polkadot-JS Guides For Nominators","description":"Polkadot-JS Guides for Nominators.","sidebar":"docs"},"learn/learn-guides-polkadot-opengov":{"id":"learn/learn-guides-polkadot-opengov","title":"Polkadot-JS Guides about OpenGov","description":"Polkadot-JS Guides about Polkadot OpenGov.","sidebar":"docs"},"learn/learn-guides-staking":{"id":"learn/learn-guides-staking","title":"Polkadot-JS Guides about Staking","description":"Polkadot-JS Guides about Staking.","sidebar":"docs"},"learn/learn-guides-staking-pools":{"id":"learn/learn-guides-staking-pools","title":"Polkadot-JS Guides for Pool Creators","description":"Polkadot-JS Guides about Nomination Pools.","sidebar":"docs"},"learn/learn-guides-transfers":{"id":"learn/learn-guides-transfers","title":"Polkadot-JS Guides about Transfers","description":"Polkadot-JS Guides about Balances Transfers.","sidebar":"docs"},"learn/learn-guides-treasury":{"id":"learn/learn-guides-treasury","title":"Polkadot-JS Guides about the Treasury","description":"Polkadot-JS Guides about the Polkadot Treasury.","sidebar":"docs"},"learn/learn-guides-vault":{"id":"learn/learn-guides-vault","title":"Polkadot-JS Guides about the Vault App","description":"Polkadot-JS Guides about Polkadot Vault.","sidebar":"docs"},"learn/learn-hyperbridge":{"id":"learn/learn-hyperbridge","title":"Hyperbridge","description":"Polkadot\'s Bridge to Ethereum.","sidebar":"docs"},"learn/learn-identity":{"id":"learn/learn-identity","title":"Account Identity","description":"On-chain Identity, Judgements and Registrars.","sidebar":"docs"},"learn/learn-implementations":{"id":"learn/learn-implementations","title":"Polkadot Implementations","description":"Learn about the different Polkadot implementations."},"learn/learn-inflation":{"id":"learn/learn-inflation","title":"Token Inflation","description":"Explanation of Token\'s Inflation in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-jam-chain":{"id":"learn/learn-jam-chain","title":"Polkadot\'s JAM Chain","description":"Polkadot\'s Join-Accumulate Machine.","sidebar":"docs"},"learn/learn-nft":{"id":"learn/learn-nft","title":"NFTs","description":"The NFT Landscape of the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-pallets":{"id":"learn/learn-nft-pallets","title":"NFT Pallets","description":"Functionalities of the NFT Pallets in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nft-projects":{"id":"learn/learn-nft-projects","title":"NFT projects on Polkadot and Kusama","description":"NFT Projects in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-nomination-pools":{"id":"learn/learn-nomination-pools","title":"Nomination Pools","description":"Staking through Polkadot\'s Nomination Pools.","sidebar":"docs"},"learn/learn-nominator":{"id":"learn/learn-nominator","title":"Nominator","description":"Role of Nominators in the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-parachains":{"id":"learn/learn-parachains","title":"Parachains","description":"An Introduction to Polkadot\'s Parachains.","sidebar":"docs"},"learn/learn-parachains-faq":{"id":"learn/learn-parachains-faq","title":"Parachains FAQ","description":"Parachains FAQ.","sidebar":"docs"},"learn/learn-parachains-protocol":{"id":"learn/learn-parachains-protocol","title":"Parachains\' Protocol Overview","description":"Actors and Protocols involved in Polkadot and its Parachains\' Block Finality.","sidebar":"docs"},"learn/learn-parathreads":{"id":"learn/learn-parathreads","title":"Parathreads","description":"An Introductory Guide to Parathreads.","sidebar":"docs"},"learn/learn-phragmen":{"id":"learn/learn-phragmen","title":"NPoS Election Algorithms","description":"The Election Methods used in Polkadot\'s NPoS Mechanism.","sidebar":"docs"},"learn/learn-polkadot-host":{"id":"learn/learn-polkadot-host","title":"Polkadot Host (PH)","description":"The Polkadot Host and its Components.","sidebar":"docs"},"learn/learn-polkadot-js-guides":{"id":"learn/learn-polkadot-js-guides","title":"Polkadot-JS Guides","description":"Guides about Polkadot-JS.","sidebar":"docs"},"learn/learn-polkadot-opengov":{"id":"learn/learn-polkadot-opengov","title":"Introduction to Polkadot OpenGov","description":"Polkadot\u2019s Latest Model for Decentralized Governance.","sidebar":"docs"},"learn/learn-polkadot-opengov-origins":{"id":"learn/learn-polkadot-opengov-origins","title":"Polkadot OpenGov Origins","description":"All Origins for Polkadot\'s OpenGov.","sidebar":"docs"},"learn/learn-polkadot-opengov-treasury":{"id":"learn/learn-polkadot-opengov-treasury","title":"Treasury","description":"Polkadot\'s On-chain Treasury.","sidebar":"docs"},"learn/learn-polkadot-technical-fellowship":{"id":"learn/learn-polkadot-technical-fellowship","title":"Polkadot Technical Fellowship","description":"Self-governing body of experts and developers of the Polkadot protocol.","sidebar":"docs"},"learn/learn-polkadotjs":{"id":"learn/learn-polkadotjs","title":"Polkadot-JS","description":"Overview of Polkadot-JS.","sidebar":"docs"},"learn/learn-proxies":{"id":"learn/learn-proxies","title":"Proxy Accounts","description":"Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-proxies-pure":{"id":"learn/learn-proxies-pure","title":"Pure Proxy Accounts","description":"Pure Proxy Accounts on Polkadot.","sidebar":"docs"},"learn/learn-runtime-upgrades":{"id":"learn/learn-runtime-upgrades","title":"Runtime Upgrades","description":"Forkless Runtime Upgrades on Polkadot.","sidebar":"docs"},"learn/learn-sassafras":{"id":"learn/learn-sassafras","title":"Polkadot Block Production: SASSAFRAS","description":"The Consensus Mechanism of Polkadot.","sidebar":"docs"},"learn/learn-spree":{"id":"learn/learn-spree","title":"SPREE","description":"Fundamentals of SPREE.","sidebar":"docs"},"learn/learn-staking":{"id":"learn/learn-staking","title":"Introduction to Staking","description":"Overview of Staking and NPoS on Polkadot.","sidebar":"docs"},"learn/learn-staking-advanced":{"id":"learn/learn-staking-advanced","title":"Advanced Staking Concepts","description":"Advanced Concepts about Staking on Polkadot.","sidebar":"docs"},"learn/learn-system-chains":{"id":"learn/learn-system-chains","title":"System Parachains","description":"System Parachains currently deployed on Polkadot.","sidebar":"docs"},"learn/learn-teleport":{"id":"learn/learn-teleport","title":"Teleporting Assets","description":"Teleport Assets between Parachains and Relay Chain.","sidebar":"docs"},"learn/learn-transaction-fees":{"id":"learn/learn-transaction-fees","title":"Transaction Fees","description":"How Transaction Fees are Calculated and Handled.","sidebar":"docs"},"learn/learn-transactions":{"id":"learn/learn-transactions","title":"Types of Transactions (a.k.a. Extrinsics)","description":"Types of Transactions on Polkadot.","sidebar":"docs"},"learn/learn-validator":{"id":"learn/learn-validator","title":"Validator","description":"Role of Validators within the Polkadot Ecosystem.","sidebar":"docs"},"learn/learn-video-tutorials":{"id":"learn/learn-video-tutorials","title":"Videos about Polkadot","description":"Videos about Polkadot and Related Topics.","sidebar":"docs"},"learn/learn-wasm":{"id":"learn/learn-wasm","title":"WebAssembly (Wasm)","description":"WASM and its Role in Polkadot\'s Runtime.","sidebar":"docs"},"learn/learn-xcm":{"id":"learn/learn-xcm","title":"Introduction to Cross-Consensus Message Format (XCM)","description":"XCM, The Messaging Format at the Forefront of Interoperability.","sidebar":"docs"},"learn/learn-xcm-instructions":{"id":"learn/learn-xcm-instructions","title":"XCM Instructions & Register Specification","description":"Specification for Instructions and Registers for the XCM Format.","sidebar":"docs"},"learn/learn-xcm-pallet":{"id":"learn/learn-xcm-pallet","title":"XCM FRAME Pallet Overview","description":"Mechanics of the XCM Pallet and its role in Polkadot\'s Ecosystem.","sidebar":"docs"},"learn/learn-xcm-transport":{"id":"learn/learn-xcm-transport","title":"XCM Transport Methods (XCMP, HRMP, VMP)","description":"Methods to send XCM Messages across Networks.","sidebar":"docs"},"learn/learn-xcm-usecases":{"id":"learn/learn-xcm-usecases","title":"XCM Use-cases & Examples","description":"Cross-consensus Interactions and the XCM Format.","sidebar":"docs"},"learn/learn-xcvm":{"id":"learn/learn-xcvm","title":"XCM Virtual Machine (XCVM) & XCM Executor","description":"Design of the XCM Executor and Mechanics of the XCM Virtual Machine.","sidebar":"docs"},"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive":{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","title":"Executor Configuration","description":"Deep Dive into the Configuration of the XCM-Executor.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","title":"Weight and Fees","description":"Weight and Fees in XCM.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","title":"MultiAsset","description":"The MultiAsset Datatype.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","title":"Fundamentals","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm":{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","title":"XCVM","description":"Deep Dive into XCVM.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","title":"Example","description":"A MultiLocation Example.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","title":"Junction(s)","description":"The Junction Type in a MultiLocation Struct.","sidebar":"docs"},"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary":{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","title":"MultiLocation","description":"Learn about XCM fundamentals.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-assets":{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","title":"Trap and Claim Assets","description":"Instructions to Trap and Claim Assets.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-channels":{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","title":"Channels and Bridges","description":"Establishment of HRMP Channels between Parachains.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-expectations":{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","title":"Expectations","description":"Expect Instructions to Check if a Condition is Valid.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-fees":{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","title":"Fee Handling","description":"How Fees for XCM Transfers are Handled.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-holding":{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","title":"More Holding Modifiers","description":"More Instructions to Alter the Holding Register.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-origin":{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","title":"Origin Manipulation","description":"Manipulating the Origin of XCM.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-queries":{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","title":"Queries","description":"Query Information from another Consensus System.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-register":{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","title":"Register Modifiers","description":"More Instructions to Change the XCVM Registers.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-summary":{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","title":"A Journey through XCM","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-transact":{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","title":"Transact","description":"The Transact Instruction to Execute XCM Calls.","sidebar":"docs"},"learn/xcm/journey/learn-xcm-docs-journey-version":{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","title":"Version Subscription","description":"Get Notified about XCM Version Updates.","sidebar":"docs"},"learn/xcm/journey/locks/learn-xcm-docs-journey-locks":{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","title":"Locks","description":"Restrict Transfer or Withdrawal of Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","title":"Reserve-backed Transfers","description":"Reserve-backed Transfers: Third-party Reserve to store Assets.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","title":"Transfers","description":"Summary about XCM Transfers.","sidebar":"docs"},"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport":{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","title":"Asset Teleportation","description":"Teleportation: Sending Assets Across Chains.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-intro":{"id":"learn/xcm/learn-xcm-docs-intro","title":"XCM: Cross-Consensus Messaging","description":"Introduction to the XCM Documentation.","sidebar":"docs"},"learn/xcm/learn-xcm-docs-testing":{"id":"learn/xcm/learn-xcm-docs-testing","title":"Testing","description":"Testing XCM-powered Solutions.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-architecture":{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","title":"The XCM Architecture","description":"The XCM Architecture.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-format":{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","title":"XCM is a Format, not a Protocol","description":"XCM is a Format, not a Protocol.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-intro":{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","title":"Introduction","description":"An Introduction to XCM.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-summary":{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","title":"XCM: Cross-Consensus Messaging","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/overview/learn-xcm-docs-overview-xcvm":{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","title":"The XCVM","description":"The Cross-Consensus Virtual Machine.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","title":"First Look at an XCM","description":"First Look at an XCM.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","title":"XCM Simulator","description":"Test XCM using a Simulated Environment.","sidebar":"docs"},"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary":{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","title":"Quickstart","description":"Summary of the Chapter.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-glossary":{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","title":"Glossary","description":"Glossary.","sidebar":"docs"},"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers":{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","title":"All XCVM Registers","description":"All XCVM Registers.","sidebar":"docs"},"maintain/archive/maintain-guides-democracy":{"id":"maintain/archive/maintain-guides-democracy","title":"Participate in Democracy","description":"Steps on how to participate in democracy.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-join-council":{"id":"maintain/archive/maintain-guides-how-to-join-council","title":"Join the Council","description":"Steps on how to join the official on-chain council.","sidebar":"docs"},"maintain/archive/maintain-guides-how-to-vote-councillor":{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","title":"Voting for Councillors","description":"Steps on how to vote for councillors.","sidebar":"docs"},"maintain/doc-maintain-guides-validator-community":{"id":"maintain/doc-maintain-guides-validator-community","title":"Validator Community Overview","description":"An extensive guide to help you start and build a validator community.","sidebar":"docs"},"maintain/kusama/maintain-guides-how-to-validate-kusama":{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","title":"Run a Validator (Kusama)","description":"The fundamentals for running a Kusama validator."},"maintain/kusama/maintain-guides-society-kusama":{"id":"maintain/kusama/maintain-guides-society-kusama","title":"Kappa Sigma Mu","description":"Learn about the Kappa Sigma Mu society and join as a member."},"maintain/maintain-archive":{"id":"maintain/maintain-archive","title":"Maintain Archive","description":"Archive for the Maintain Section.","sidebar":"docs"},"maintain/maintain-bootnode":{"id":"maintain/maintain-bootnode","title":"Set up a Boot Node","description":"Steps on setting up a boot node.","sidebar":"docs"},"maintain/maintain-endpoints":{"id":"maintain/maintain-endpoints","title":"Node Endpoints","description":"List of node endpoints and examples of use.","sidebar":"docs"},"maintain/maintain-errors":{"id":"maintain/maintain-errors","title":"Errors and How to Resolve Them","description":"Common errors you might encounter and how they can be resolved.","sidebar":"docs"},"maintain/maintain-guides-async-backing":{"id":"maintain/maintain-guides-async-backing","title":"Upgrade Parachain for Asynchronous Backing Compatibility","description":"Steps on how to upgrade a parachain to be compatible with the relay chain\'s async backing feature.","sidebar":"docs"},"maintain/maintain-guides-avoid-slashing":{"id":"maintain/maintain-guides-avoid-slashing","title":"Validator Best Practices","description":"Best practices to avoid slashing.","sidebar":"docs"},"maintain/maintain-guides-how-to-chill":{"id":"maintain/maintain-guides-how-to-chill","title":"How to Chill","description":"Steps on chilling as a network participant.","sidebar":"docs"},"maintain/maintain-guides-how-to-monitor-your-node":{"id":"maintain/maintain-guides-how-to-monitor-your-node","title":"Monitor your node","description":"This guide will walk you through how to set up Prometheus with","sidebar":"docs"},"maintain/maintain-guides-how-to-stop-validating":{"id":"maintain/maintain-guides-how-to-stop-validating","title":"How to Stop Validating","description":"Steps on how to stop validating.","sidebar":"docs"},"maintain/maintain-guides-how-to-systemd":{"id":"maintain/maintain-guides-how-to-systemd","title":"Using systemd for a Validator Node","description":"Using a service manager for your validator node.","sidebar":"docs"},"maintain/maintain-guides-how-to-upgrade":{"id":"maintain/maintain-guides-how-to-upgrade","title":"How to Upgrade Your Validator","description":"Validators perform critical functions for the network, and as such, have strict uptime requirements.","sidebar":"docs"},"maintain/maintain-guides-how-to-validate-polkadot":{"id":"maintain/maintain-guides-how-to-validate-polkadot","title":"Run a Validator (Polkadot)","description":"The fundamentals for running a Polkadot validator.","sidebar":"docs"},"maintain/maintain-guides-secure-validator":{"id":"maintain/maintain-guides-secure-validator","title":"Secure Validator","description":"Tips for running a secure validator.","sidebar":"docs"},"maintain/maintain-guides-validator-payout":{"id":"maintain/maintain-guides-validator-payout","title":"Validator Payout Overview","description":"How validator payout works on the network and what you should expect.","sidebar":"docs"},"maintain/maintain-index":{"id":"maintain/maintain-index","title":"Network Maintainers","description":"Reference point for network maintenance guides.","sidebar":"docs"},"maintain/maintain-networks":{"id":"maintain/maintain-networks","title":"Networks","description":"Information about the different networks of the Polkadot ecosystem.","sidebar":"docs"},"maintain/maintain-polkadot-parameters":{"id":"maintain/maintain-polkadot-parameters","title":"Polkadot Parameters","description":"A description about fundamental Polkadot parameters.","sidebar":"docs"},"maintain/maintain-rpc":{"id":"maintain/maintain-rpc","title":"Set up a RPC node","description":"Steps on setting up a RPC node.","sidebar":"docs"},"maintain/maintain-sync":{"id":"maintain/maintain-sync","title":"Set up a Full Node","description":"Steps on how to set up a full node.","sidebar":"docs"},"maintain/maintain-wss":{"id":"maintain/maintain-wss","title":"Secure the WebSocket","description":"Steps on setting up a secure socket for remote connections.","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/ccc1222e.1d45d596.js b/assets/js/ccc1222e.1d45d596.js deleted file mode 100644 index ffdbce744541..000000000000 --- a/assets/js/ccc1222e.1d45d596.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6920],{3905:(t,a,e)=>{e.d(a,{Zo:()=>m,kt:()=>k});var r=e(67294);function n(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function o(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,r)}return e}function i(t){for(var a=1;a=0||(n[e]=t[e]);return n}(t,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}var l=r.createContext({}),h=function(t){var a=r.useContext(l),e=a;return t&&(e="function"==typeof t?t(a):i(i({},a),t)),e},m=function(t){var a=h(t.components);return r.createElement(l.Provider,{value:a},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var a=t.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(t,a){var e=t.components,n=t.mdxType,o=t.originalType,l=t.parentName,m=p(t,["components","mdxType","originalType","parentName"]),s=h(e),u=n,k=s["".concat(l,".").concat(u)]||s[u]||d[u]||o;return e?r.createElement(k,i(i({ref:a},m),{},{components:e})):r.createElement(k,i({ref:a},m))}));function k(t,a){var e=arguments,n=a&&a.mdxType;if("string"==typeof t||n){var o=e.length,i=new Array(o);i[0]=u;var p={};for(var l in a)hasOwnProperty.call(a,l)&&(p[l]=a[l]);p.originalType=t,p[s]="string"==typeof t?t:n,i[1]=p;for(var h=2;h{e.r(a),e.d(a,{assets:()=>m,contentTitle:()=>l,default:()=>k,frontMatter:()=>p,metadata:()=>h,toc:()=>s});var r=e(87462),n=e(63366),o=(e(67294),e(3905)),i=["components"],p={id:"build-open-source",title:"Open Source Stack",sidebar_label:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",keywords:["open","source","development","code","resources","tools","apis"],slug:"../build-open-source"},l="Open Source Polkadot Stack \x3c!-- omit in toc --\x3e",h={unversionedId:"build/build-open-source",id:"build/build-open-source",title:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",source:"@site/../docs/build/build-open-source.md",sourceDirName:"build",slug:"/build-open-source",permalink:"/docs/build-open-source",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/build/build-open-source.md",tags:[],version:"current",lastUpdatedBy:"Keegan | W3F",lastUpdatedAt:1713386347,formattedLastUpdatedAt:"Apr 17, 2024",frontMatter:{id:"build-open-source",title:"Open Source Stack",sidebar_label:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",keywords:["open","source","development","code","resources","tools","apis"],slug:"../build-open-source"},sidebar:"docs",previous:{title:"Explorer, Data, & Indexing Tools",permalink:"/docs/build-data"},next:{title:"Hackathons",permalink:"/docs/build-hackathon"}},m={},s=[{value:"About",id:"about",level:2},{value:"Layers of Polkadot Stack",id:"layers-of-polkadot-stack",level:2},{value:"Wallets",id:"wallets",level:3},{value:"User Interface",id:"user-interface",level:3},{value:"Tools, APIs, and Languages",id:"tools-apis-and-languages",level:3},{value:"ink! Smart Contracts",id:"ink-smart-contracts",level:3},{value:"Chains and Pallets",id:"chains-and-pallets",level:3},{value:"Host",id:"host",level:3},{value:"Network Maintenance Tools",id:"network-maintenance-tools",level:3},{value:"Signatures",id:"signatures",level:3},{value:"Consensus",id:"consensus",level:3},{value:"Networking",id:"networking",level:3},{value:"Primitives",id:"primitives",level:3},{value:"Contributing",id:"contributing",level:2}],d={toc:s},u="wrapper";function k(t){var a=t.components,e=(0,n.Z)(t,i);return(0,o.kt)(u,(0,r.Z)({},d,e,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"open-source-polkadot-stack--omit-in-toc-"},"Open Source Polkadot Stack "),(0,o.kt)("admonition",{title:"Do your research before using open-source tools",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The tools listed here are open-source and are linked directly to their source code. Before using these tools to build your projects, always ",(0,o.kt)("a",{parentName:"p",href:"/docs/how-to-dyor"},"do your research")," and be aware of ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-scams"},"scams"),".")),(0,o.kt)("p",null,"This page aims to provide an overview of the open-source Polkadot Tech Stack."),(0,o.kt)("p",null,"This is a living document, and we rely on everyone to contribute and help maintain\nit. ",(0,o.kt)("a",{parentName:"p",href:"#contributing"},(0,o.kt)("strong",{parentName:"a"},"Please feel free to make edits and additions via pull requests")),". We\napologize if we missed your project!"),(0,o.kt)("hr",null),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#about"},"About")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#wallets"},"Wallets")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#user-interface"},"User Interface")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#tools-apis-and-languages"},"Tools, APIs, and Languages")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#ink-smart-contracts"},"ink! Smart Contracts")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#chains-and-pallets"},"Chains and Pallets")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#host"},"Host")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#network-maintenance-tools"},"Network Maintenance Tools")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#signatures"},"Signatures")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#consensus"},"Consensus")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#networking"},"Networking")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#primitives"},"Primitives")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#contributing"},"Contributing"))),(0,o.kt)("h2",{id:"about"},"About"),(0,o.kt)("p",null,"The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the ",(0,o.kt)("strong",{parentName:"p"},"open-source"),"\ntechnologies contributing to and relying on ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/"},"Polkadot"),". It is meant to be used\nfor decentralized application (Dapp) development within numerous verticals, including DeFi, Gaming,\nProvenance and many others not pictured below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"|------|--------|------------|\n| DeFi | Gaming | Provenance |\n|______|________|____________|\n Dapps\n|--------------------------/-|\n| Explorers, Wallets / |\n|------------------------/---|\n| Tools, Apis, Languages/ |\n|----------------------/-----|\n| 2nd layer protocols / |\n|--------------------/-------|\n| Chains / other |\n|------------------/--- --|\n| *Polkadot* | tech |\n|------------------\\---------|\n| P2P, Crypto, Wasm \\ |\n|--------------------\\-------|\n")),(0,o.kt)("h2",{id:"layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("p",null,"In the below sections, you can find a list of different layers of the Polkadot Stack."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Maintenance Status"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe2 Actively maintained"),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe1 Stale (no activity on the main branch for one month)"),(0,o.kt)("li",{parentName:"ul"},"\u26aa Unmaintained (no activity on the main branch for more than three months)")),(0,o.kt)("h3",{id:"wallets"},"Wallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Web Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/Multix"},"Multix")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkasafe/polkasafe-ui"},"Polkasafe")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/apps"},"polkadot-js/apps")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-web"},"Talisman Web Application")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/mydotwallet"},"mydotwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subid"},"Sub ID")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Primis-Labs/client"},"Primis")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3finance/sakura"},"Sakura")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/Web3Box-apps"},"Web3Box")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoongCrafts/coong-wallet"},"Coong Wallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-react"},"Subscan Multisig UI - React")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-ui"},"Subscan Multisig UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/dorafactory-multisig"},"Dorafactory-Multisig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi-multisig-app"},"Capi Multisig App")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"User-friendly Wallet based on the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/recovery"},"Recovery Pallet"),", Web wallets focused on user-onboarding (e.g. using ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/near/near-wallet"},"localStorage"),")")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Desktop Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-spektr"},"nova-spektr")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/omni-desktop-prototype"},"Omni desktop")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Enterprise Wallets")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Browser Extensions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman"},"Talisman-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Extension"},"SubWallet-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/enKrypt"},"Enkrypt")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/extension"},"Polkadot{.js}")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolkaGate/polkagate-extension"},"PolkaGate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainBridgeNetworkTeam/Doter"},"Doter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GetSpeckle/speckle-browser-extension"},"Speckle OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/kuma-wallet"},"Kuma Cross-chain Wallet")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Sign-in with your Polkadot, Kusama, etc. account.")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Mobile Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-ios"},"Nova Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-android"},"Nova Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-signer"},"Polkadot Vault")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-Android"},"Fearless Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-iOS"},"Fearless Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Mobile"},"SubWallet-Mobile")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kalapaja/kampela-firmware"},"Kampela")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airgap-it/airgap-wallet"},"AirGap")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Interstellar-Network/wallet-app"},"Interstellar Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/luniehq/lunie"},"Lunie")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkawallet-io/polkawallet-flutter"},"Polkawallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/consenlabs/token-core"},"imToken")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stylo-app/stylo"},"Stylo")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fractapp/fractapp/"},"Fractapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hypha-dao/hashed-wallet"},"Hashed Wallet")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Burner Wallets/Faucet/Gifts"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hamidra/dotdrop"},"dotdrop")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/vue-polkadot/apps"},"KodaDot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/astar-faucet-bot"},"Astar Faucet Bot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/karooolis/sybil-resistant-substrate-faucet"},"Generic sybil-resistant faucet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/StringNick/sybil-resistant-chat-bot-substrate-faucet"},"sybil-resistant Chat Bot Faucet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Faucet (a sybil-resistant way to receive free tokens)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallet Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/metamask-snap-polkadot"},"Metamask-Snap by Chainsafe")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"CLI Wallet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/yxf/subwallet"},"Subwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canontech/proxy-hot-wallet"},"Proxy-hot-wallet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Hardware Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZondaX/ledger-polkadot"},"Ledger Polkadot")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-kusama"},"Ledger Kusama")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemint"},"Ledger Statemint")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemine"},"Ledger Statemine")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Trezor")))),(0,o.kt)("h3",{id:"user-interface"},"User Interface"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/topmonks/calamar"},"Calamar")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/explorer-api"},"Polkascan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/polkastats-backend"},"Polkastats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan"},"Subscan")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/statescan-v2"},"Statescan")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/edgeware-builders/edgscan"},"Edgscan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/epirus-substrate"},"Sirato")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/ink-substrate-explorer-api"},"ink! Explorer API")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/substats"},"Substats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-dapp"},"Hybrid Block Explorer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Mempool focused explorer (including parachain transaction)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-telemetry"},"Polkadot Telemetry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashquark-io/polkacube-frontend"},"Polkacube")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/buidl-labs/YieldScan"},"YieldScan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot"},"Hubble")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArthurHoeke/cyclops"},"Cyclops")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3go-xyz/web3go-xyz-v2"},"Web3Go")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/MathCryptoDoc/insights-1kv"},"1kv insights")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Node Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/protos-research/polkadot-node-explorer"},"Polkadot Node Explorer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT Explorer"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/nft-gallery"},"NFT Explorer for Kusama & Polkadot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/governance-ui"},"Polkadot Delegation Dashboard")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/premiurly/polkassembly"},"Polkassembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/dotreasury"},"dotreasury")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/bright-tresury"},"Bright Treasury")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/collaboration"},"OpenSquare offchain voting")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/wpank/open-gov-insights"},"OpenGov Insights")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stake-plus/treasury-tracker"},"Treasury Tracker")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/joepetrowski/opengov-cli"},"OpenGov CLI")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"UI for the Kusama and/or Polkadot treasury (see ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/pull/5715"},"bounty module"),"), UI for Parachain Lease Offering (PLO)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/staking-rewards-collector"},"Staking Rewards Collector")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/jackson-harris-iii/staking-rewards-viewer"},"Staking Rewards Viewer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptolab-network/polkadot-staking-site"},"Polkadot Staking Site")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-staking-dashboard"},"Polkadot Staking Dashboard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-validator-selector"},"Polkadot/Kusama Validator Selector")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-staking-income"},"Staking Income CSV Generator")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridge UI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridges-ui"},"Parity Bridges UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutbox-dao/donut-interface"},"Donut Interface (Steem - Dot)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RostislavLitovkin/PlutonicationServer"},"Plutonication")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Parachain/Crowdloan"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/jhonalino/parachains.network"},"Parachains.Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrommVardek/polk-auction-ui"},"PolkAuction")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/10clouds/crowdloan-template"},"Crowdloan Front End Template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/slothunter/"},"Slothunter")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identicon"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud/polkicon"},"Polkicon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-web-identicon"},"PolkadotWebIdenticon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-angular-identicon"},"Polkadot Angular IdentIcon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Noc2/Bird-Identicon"},"Bird Identicon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Coretime"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LasticXYZ/LasticUI"},"Lastic")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RegionX-Labs/RegionX"},"RegionX")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud"},"Polkadot Cloud")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/KappaSigmaMu/ksm-app"},"KappaSigmaMu Fratority")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-webapp"},"Quadratic Funding Webapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/polkawatch/polkawatch"},"Polkawatch"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bytepayment/bytepay"},"Bytepay")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Delmonicos/charging-management-platform"},"charging-management-platform")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/subidentity-webapp"},"subidentity-webapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/paid-qa/"},"OpenSquare Paid QA")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrossChainLabs-DOT/dotpulse-api"},"DotPulse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/rubeus-smartcontract"},"Rubeus Keeper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/justmert/eco-flow-frontend"},"Polkaflow")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/chainviz"},"ChainViz")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fidi-tech/dotsight"},"Dotsight")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://docs.sui.io/build/zk_login"},"zkLogin"),", Portfolio Viewer like Zapper or Zerion")))),(0,o.kt)("h3",{id:"tools-apis-and-languages"},"Tools, APIs, and Languages"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Parachain frameworks"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot Blockchain SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/gosemble"},"Gosemble")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/parachain-utilities"},"Parachain utilities")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gantree-io/gantree-core"},"Gantree")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5"},"Cryptex")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Tools to create parachains with other frameworks, like the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cosmos/cosmos-sdk"},"Cosmos SDK")," or ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xPolygon/cdk-validium-node"},"Polygon CDK"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Client Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-api"},"Polkadot API - Typescript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi"},"Capi - Typescript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/packages/tree/main/sub-api"},"sub-api")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".Net")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/Ajuna.NetApi"},".NET Standard 2.0")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain"},"Substrate .NET Toolchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/finoabanking/substrate-c-tool"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"Javascript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar - TypeScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-substrate-interface"},"Python")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java (+ Android)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/strategyobject/substrate-client-java"},"Substrate Client Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substrate-api-client"},"Rust SCS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/subxt"},"Rust Parity (subxt)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/trevor-crypto"},"Rust pdotc")," ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-substrate-api"},"PHP (gmajor-encrypt)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neha0921/substrate-interface-package"},"PHP (neha0921)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/frontier"},"RPC-Ethereum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Substrate.swift"},"Swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/substrate-client-kotlin"},"Kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-kotlin"},"substrate-client-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-swift"},"substrate-client-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rankanizer/polkadart"},"Dart")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polywrap/integrations"},"Substrate Core Polywrapper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-ios"},"Substrate SDK iOS")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-android"},"Substrate SDK Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoongCrafts/delightfuldot"},"DelightfulDot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Gateway"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/subway"},"Subway")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Substrate Contract clients"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/go-patract"},"PatractGo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Easy Runtime Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/subalfred"},"Subalfred")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/substrate-stencil"},"substrate-stencil")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/play-substrate"},"Play Substrate")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/substrate-node-template"},"substrate-node-template")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-playground"},"Substrate Playground")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-substrate-runtime"},"AssemblyScript Runtime Generation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/clearloop/sup"},"Substrate Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly: Framework for developing AssemblyScript Substrate Runtimes")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bkchr/diener"},"dependency diener")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/vscode-substrate"},"Substrate Marketplace VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/vscode-plugin-substrate"},"VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/atom-plugin-substrate"},"Atom Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet-vscode-extension"},"zombienet extension")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Pallet Security"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/srlabs/substrate-runtime-fuzzer"},"Substrate Runtime Fuzzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-toml-lint"},"Substrate Toml Lint")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kframework/wasm-semantics"},"K specifications")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSecurity/polpatrol"},"PolPatrol - Polkadot Runtime Checker")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Automated Runtime checking tools, economic audit simulator such as ",(0,o.kt)("a",{parentName:"td",href:"https://gauntlet.network/"},"gauntlet.network"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Languages"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"#ink-smart-contracts"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ask-lang/ask"},"Ask!")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/slickup/subscript"},"Subscript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hyperledger-labs/solang"},"Solang")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eigerco/pallet-move"},"pallet-move")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pontem-network/sp-move"},"Move VM Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neatcoin/neatcoin"},"Move smart contract by Neatcoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pepyakin/substrate-seal-ebpf"},"eBPF Contracts Hackathon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkavm"},"PolkaVM")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Functional Programming Languages, other languages with developed toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-introspector"},"Polkadot introspector")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdirectory/subshell"},"Subshell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/sc-simnode"},"substrate-simnode")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/halva-suite/halva"},"Halva")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/redspot"},"Redspot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mixbytes/tank"},"MixBytes Tank")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate debug-kit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/asset_cli_tool"},"Asset CLI tool")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/unfinished_testing_tool"},"sub_crash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/subwasm"},"subwasm")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ascjones/subsee"},"subsee")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-lab"},"polkadot-lab")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dwellir-public/rpc-perf/"},"RPC-perf")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Static Analysis"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KaiserKarel/substrace"},"Substrace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/simon-perriard/saft"},"Static analyzer for Substrate FRAME's pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoinFabrik/scout"},"CoinFabrik Scout")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testnet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet"},"Zombienet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/chopsticks"},"Chopsticks")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-launch"},"Polkadot Launch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkadot-starship"},"polkadot-starship")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork off Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/try-runtime-cli"},"try-runtime-cli")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/parachain-launch"},"Parachain Launch")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zeeve-App/larch"},"Larch Zombienet GUI")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Benchmarking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/utils/frame/benchmarking-cli"},"Benchmarking CLI")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-stps"},"Polkadot sTPS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xekez/clockchain"},"Clockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-graph-benchmarks"},"Substrate Graph Benchmarks")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking"},"ink! & pallet benchmarking template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/smart-bench"},"smart-bench")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain Indexing Engine"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk"},"Squid SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-indexer"},"Hybrid Indexer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-archive"},"Substrate Archive")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_psql_indexer"},"PSQL Indexer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/substrate-graph"},"Substrate Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OnFinality-io/subql"},"Subquery")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/p2p-org/polkadot-profit-transformer"},"MBELT3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/stick"},"stick")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Infra3-Network/hyperdot"},"Hyperdot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain/Event Monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/guardian"},"Web3 Guardian")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HugoByte/aurras-event-manager"},"Aurras Event Manager")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/chain-events"},"@commonwealth/chain-events")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/massbitchain"},"Massbit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kianenigma/polkadot-basic-notification"},"Polkadot Basic Notifications")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/ocelloids"},"Ocelloids")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TrackingChains/TrackingChain"},"Tracking Chain")," \u26aa,"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dodorare/crossbow"},"Crossbow")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://amethyst.rs/"},"Amethyst")," + ",(0,o.kt)("a",{parentName:"td",href:"https://substrate.dev/"},"Substrate"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"No-code Platforms"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js"},"EzCode's Polkadot.js plugin on Bubble.io")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blackprint/nodes-polkadot.js"},"Blackprint Visual Programming Polkadot.js module")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subrelay/interface"},"SubRelay")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-connect"},"Talisman Connect")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubConnect"},"SubWallet-SubConnect")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nova-wallet/metadata-portal"},"Metadata Portal")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Tesseract.rs"},"Tesseract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/walletconnect-v2-monorepo"},"WalletConnect")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BitGo/BitGoJS/tree/master"},"BitGoJS")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"XCM"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/trappist"},"Trappist")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Moonsong-Labs/xcm-tools"},"XCM-tools")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/substrate-api-rpc"},"XCM-tools Golang")," \ud83d\udfe1,",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paraspell/ui-v2"},"ParaSpell")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/t3rn/xbi"},"XBI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/xcm-sdk"},"XCM TS/JS SDK")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XcmSend/app"},"XCMSend")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/xcm-monitoring/"},"XCM Monitoring Server")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/moonbeam-foundation/xcm-sdk"},"Moonbeam Foundation XCM-SDK")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/asset-transfer-api"},"asset-transfer-api")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/txwrapper-core"},"txwrapper-core")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-web3.js"},"open-web3 JS library")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/GVM-Bridge"},"VM-Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/srtool"},"srtool")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/srtool-cli"},"srtool-cli")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-tip-bot"},"Substrate Tip Bot")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/syntifi/ori"},"ORI (Onchain Risk Intelligence)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/albertov19/PolkaTools"},"PolkaTools")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-scripts"},"polkadot-scripts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/sube"},"Sube")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/data-store-sidecar"},"data-store-sidecar")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SugarFunge/sugarfunge-node"},"SugarFunge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/second-state/substrate-wasmedge"},"substrate-wasmedge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eightfish-org/eightfish"},"EightFish")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sandoxio/sandox"},"Sandox")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/apk-verifier/"},"APK verifier")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"ink-smart-contracts"},"ink! Smart Contracts"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Core Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/cargo-contract"},"cargo-contract")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts"},"pallet-contracts")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Local Nodes"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-contracts-node"},"substrate-contracts-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/swanky-cli"},"Swanky")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/drink"},"DRink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/contracts-ui"},"contracts-ui")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Smart-Beaver"},"SmartBeaver"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/h4nsu/openbrush-contracts"},"OpenBrush")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/727-Ventures/sol2ink"},"Sol2Ink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-contract-wizard"},"Polkadot Contract Wizard")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/ink-wrapper"},"ink-wrapper")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-playground"},"ink-playground")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockchain-it-hr/ink-remix-plugin"},"ink! Remix Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/standardweb3/signac/"},"Signac")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-boxes/"},"ink!-boxes")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-wizard"},"ink!-smart-contract-wizard")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Security & Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-waterfall"},"ink! Waterfall")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ink-verifier-image"},"Verifier Image for ink!")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/patron-backend/"},"Patron")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Frontend Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/inkathon"},"ink!athon Boilerplate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/useink"},"useink")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/use-inkathon"},"useInkathon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk/tree/master/substrate/ink-typegen"},"ink-typegen")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/typechain-polkadot"},"Typechain Polkadot")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ink-analyzer/ink-analyzer"},"ink! Analyzer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dantenetwork/protocol-stack-for-ink"},"Dante Protocol")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum-ink-wrapper"},"Pendulum-Ink-Wrapper")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RottenKiwi/Panorama-Swap-INK-SC"},"Panorama Swap")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Juminstock/ink_bank"},"ink_bank")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/realnimish/polkadot-amm"},"Polkadot AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/veradefi/defi"},"Vera")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nsure-tech/dot-contract"},"Nsure Insurance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/ELC"},"Everlasting Cash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Coinversation/coinpro"},"Coinversation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/zenlink-dex-contract"},"zenlink-dex-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ReserveLabs/AlgoCash"},"AlgoCash")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"New seigniorage-style stable coins")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/OpenEmojiBattler/open-emoji-battler"},"Open Emoji Battler")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs"},"NewOmega")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/SyncraDAO/modular-dao"},"SyncraDAO")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/subDAO-contracts"},"subDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1"},"RainbowDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/Mangoboxink"},"MangoBox")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/MangoSaleV2"},"MangoSale")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TheDotflow"},"Dotflow")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracles"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/dia-wasm-oracle"},"DIA WASM Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Spam Protection"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/prosopo/captcha"},"Prosopo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AbaxFinance/Governance"},"Abax Governance")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArtZero-io/Contracts"},"ArtZero")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/ink-aa"},"Polkadot Smart Account")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/magink-dapp"},"magink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/ink-test-contracts"},"ink-test-contracts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/agryaznov/candle-auction-ink"},"Candle Auctions")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubDAO-Network/polkasign-contract"},"polkasign-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/ocex-cli"},"OCEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RoloiMoney/roloi-polkadot-w3f-grant"},"Roloi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadrys/openPayroll"},"OpenPayroll")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InkSmartContract/BlockchainFoodOrder"},"BlockchainFoodOrder")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"chains-and-pallets"},"Chains and Pallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Scalable Transactions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-pallet"},"Perun channels")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-demo"},"CLI demo of Perun")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/Astar"},"Astar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/celer-network/cChannel-substrate"},"Celer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GunClear/Gunero"},"Gunclear")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BCS-Labs/tpscore-etl-system"},"TPScore")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/auguth/pocs"},"proof-of-contract-stake")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"roll-ups, DAG-based consensus mechanisms, side chains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc"},"interBTC")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/dkg-substrate"},"DKG Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sygmaprotocol/sygma-substrate-pallets"},"Sygma")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bifrost-finance/bifrost-eos-relay"},"EOS by Bifrost")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridge"},"POA - Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/POC-polkadai-bridge"},"Substrate - Ethereum DAI Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-bridge-relay"},"Substrate - Substrate Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainx-org/ChainX"},"BTC by ChainX")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChorusOne/wormhole-bridge"},"Cosmos-Substrate bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/octopus-network/substrate-ibc"},"Substrate IBC Pallet")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/polkadot-ethereum"},"Polkadot Ethereum Bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia"},"Darwinia")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/spacewalk"},"Spacewalk: a Stellar bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/filecoindot"},"Filecoindot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/axelar-cgp-substrate/tree/main"},"Axelar-Substrate")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"ZCash")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Privacy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LayerXcom/zero-chain"},"ZeroChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/xx-labs/xxchain"},"xx network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Phala-Network/phala-blockchain"},"pLibra (Phala Network)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/automata-network/automata"},"Automata Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zero-network/zero"},"Zero Network")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/appliedblockchain/silentdata-polkadot"},"Silent Data")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anoma/masp"},"Multi-Asset Shielded Pool (MASP)")," , ",(0,o.kt)("a",{parentName:"td",href:"https://arxiv.org/pdf/2009.01020.pdf"},"Zkay"),", ",(0,o.kt)("a",{parentName:"td",href:"https://eprint.iacr.org/2018/962.pdf"},"Zexe"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"ZKP"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example"},"ZeroPool")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/megaclite"},"Megaclite")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/zkmega"},"zkMega")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/plonk"},"PLONK for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/protocol-substrate"},"Webb Anchor Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/zk-snarks-with-substrate/"},"zk-SNARKs tutorial")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zkvers/substrate-zk"},"substrate-zk")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/hyperfridge-r0"},"hyperfridge-r0")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"TEE"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Acurast/acurast-core"},"Acurast")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/integritee-network/worker"},"Integritee")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substraTEE"},"substraTEE")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/wetee-dao/chain"},"WeTEE")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/keysafe-protocol/keysafe-app"},"Keysafe Protocol")," \u26aa")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kapilsinha/privadex"},"PrivaDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/uinb/fusotao"},"Fusotao")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/reef-defi/reef-chain"},"Reef")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Diora-Network/Diora"},"Diora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum"},"Pendulum Chain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/compound-finance/gateway"},"Compound Gateway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/parallel-finance/parallel"},"Parallel Finance")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/PINT"},"PINT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/laminar-chain"},"Laminar Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/Acala"},"Acala")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/centrifuge-chain"},"Centrifuge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stafiprotocol/stafi-node"},"Stafi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/y2labs-0sh/definex"},"Definex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAXFoundation/parrot"},"OAX Foundation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/alexxuyang/substrate-dex"},"Cybex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/pallet-zenlink"},"Zenlink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/lsaether/pallet-swaps"},"Swaps Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Polkadex-Substrate/Polkadex/tree/master"},"Polkadex")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdarkdex/subdex-parachain"},"SubDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/hack.HydraDX-node"},"HydraDX")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/apopiak/stablecoin"},"Substrate Stablecoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/digitalnativeinc/standard-substrate"},"Standard protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sora-xor/sora2-network"},"Polkaswap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/equilibrium-eosdt/equilibrium-curve-amm"},"Curve AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/konomi-network/cumulus/"},"Konomi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutsfinance/stable-asset"},"Stable Asset")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/atscaletech/libra"},"Libra Payment")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mangata-finance/mangata-node"},"Mangata")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tidelabs/tidechain"},"Tidechain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolymeshAssociation/Polymesh"},"Polymesh")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"DEX with privacy and confidentiality features such as those found in a ",(0,o.kt)("a",{parentName:"td",href:"https://en.wikipedia.org/wiki/Dark_pool"},"dark pool"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart contract chains"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/moonbeam"},"moonbeam")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Magport/Magnet"},"Magnet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/aleph-node"},"Aleph-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/edgeware-node"},"Edgeware")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ParaState/substrate-ssvm-node"},"ParaState")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gear-tech/gear"},"gear")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cennznet/cennznet"},"CENNZnet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/skyekiwi/skyekiwi-network"},"SkyeKiwi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/OAK-blockchain"},"OAK-blockchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ice-substrate"},"ICE Blockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OmniBTC/PSC"},"Polkadot Smart Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/keep-starknet-strange/madara"},"Madara - Cairo/Starknet")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"smart contract chains with novel security approaches, smart contract chains based on existing toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracle"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-pallet"},"Tellor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle"},"Laminar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/smartcontractkit/chainlink-polkadot"},"Chainlink-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/aresprotocols/ares"},"Ares Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kylin-Network/kylin-node"},"Kylin Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc-clients/tree/master/oracle"},"interbtc-clients oracle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/anonima"},"Anonima")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SaaS3-Foundation/dRuntime-fat"},"SaaS3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-parachain-contracts"},"Tellor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/bridgestate-ocw"},"Bridgestate Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/parami-foundation/parami-blockchain"},"Parami")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/litentry/litentry-parachain"},"Litentry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/pallet-did"},"pallet-did")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/prasad-kumkar/dot-id"},"dot-id")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IoT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/chain"},"Nodle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DataHighway-DHX/node"},"MXC/DataHighway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/peaqnetwork/peaq-network-node"},"peaq-network-node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Verifiable Claims"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KILTprotocol/kilt-node"},"KILT")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/docknetwork/dock-substrate"},"Dock")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Supply chain"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/digicatapult/dscp-node"},"DSCP Node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Health care"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Music Industry"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Allfeat/Allfeat"},"Allfeat Network")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Data Availability"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/availproject/avail"},"Avail")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/melodot"},"Melodot")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Social Networking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/frequency"},"Frequency")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/social-network/blockchain"},"Social Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-parachain"},"SubSocial")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/ZeroDAO-node"},"ZeroDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/myriadsocial/myriad-node"},"Myriad Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/randombishop/wika_etl"},"Wika Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/mrc"},"Project Liberty")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/listenofficial/listen-parachain"},"Listen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tribal-protocol/tribal_contract"},"Tribal Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rust-0x0/hex-space-protocol-substrate"},"Five Degrees on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/acuity-social/acuity-substrate"},"Acuity Social")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Private instant messenger that uses on-chain identity")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance/DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/aisland-dao/aisland-node/tree/main"},"Aisland Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate"},"Hashed Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sunshine-protocol/sunshine-bounty"},"Sunshine DAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NucleiStudio/governance-os"},"Governance OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/idavollnetwork/idavoll"},"Idavoll Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/Substrate-Moloch-V2"},"Substrate Moloch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Qrucial/QRUCIAL-DAO"},"QRUCIAL-DAO")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sctllabs/societal-node"},"Societal")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/daos-org/daos"},"DAOs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/amiyatulu/shivarthu/"},"Shivarthu")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/faterium"},"Faterium")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/decentration/apps"},"Supersig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/genesis-dao-node"},"GenesisDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dao-entrance/dao-entrance-node"},"DAO Entrance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/liberland/liberland_substrate"},"Liberland")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/consul/consul"},"Consul")," - Open Government and E-Participation Web Software")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Prediction Markets and Futarchy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeitgeistpm/zeitgeist"},"Zeitgeist")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XPredictMarket/NodePredict"},"X Predict Market")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Messaging"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/validitylabs/HOPR-PL-Substrate"},"HOPR")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainify/nolik"},"Nolik")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Uke-Messaging/uke-pallet"},"Uke")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Belsoft-rs/diffychat-pallet"},"Diffy Chat")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fennelLabs/Fennel-Protocol"},"Fennel Protocol")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"File Storage, Cloud"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-offchain"},"Subsocial-Offchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playproject-io/datdot"},"DatDot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/crustio/crust"},"Crust Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rs-ipfs/offchain-ipfs-manual"},"offchain::ipfs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canyon-network/canyon"},"Canyon Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cumulus2021/cess"},"CESS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/cess-proving-system"},"CESS Proving Subsystem")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5/iris"},"Iris")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/fmd-cess"},"fmd-cess")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw"},"IPFS Frame V3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/threefoldtech/tfchain"},"Threefold Chain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Apron-Network/apron-node"},"Apron")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/substrate-ipfs"},"IPFS Utilities")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/dinfra/dinfra"},"DINFRA")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Name Service"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/xaya/substrate-names"},"Substrate Names")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hskang9/substrate-name-service"},"ENS on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/pns-pallets"},"PNS-Pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HeisenbergLin22/Faceless_milestone2_delivery"},"Faceless")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ff13dfly/Anchor"},"Anchor")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bit-country/Bit-Country-Blockchain"},"Bit.country")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubGame-Network/subgame-network"},"SubGame")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/subzero"},"subzero")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3gamesofficial/web3games-blockchain"},"Web3Games")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/Ajuna"},"Ajuna Network")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptoviet/gafi"},"Gafi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/asylum-space/asylum-item-nft"},"Asylum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/3Dpass/3DP"},"3DPass")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polketio/toearnfun_flutter_app"},"Polket")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Computation/AI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Deitos-Network/deitos-ip"},"Deitos Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DeepBrainChain/DeepBrainChain-MainChain"},"DeepBrain Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/anudit/cerebrum"},"AI Infrastructure on Blockchain")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Enable specific use-cases"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/pallet_hookpoints"},"pallet-hookpoints")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/substrate-node-robonomics"},"Robonomics")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniversalDot/pallets"},"UniversalDOT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/evercity-chain"},"Evercity Sustainable Finance Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/logion-network/logion-node"},"logion")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Me-Protocol/rusty-protocol-v0.1/"},"Me Protocol")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/QSTN-US/Polkadot-QSTN-v1/"},"QSTN")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/capsule-corp-ternoa/chain"},"ternoa")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/danforbes/pallet-nft"},"FRAME Pallet: NFTs for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniqueNetwork/unique-chain"},"Unique NFT Parachain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets"},"DNFT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rmrk-team/rmrk-substrate"},"RMRK-Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/nt-nft"},"NT-NFTs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GreenLemonProtocol/dksap-polkadot"},"Green Lemon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Randomness"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon"},"DKG and Randomness Beacon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/random-meat/drand-substrate-client"},"drand-substrate-client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Licensing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anagolay/anagolay-chain"},"Anagolay Network")," \u2754"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Banking Integration"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/element36-io/ebics-java-service"},"FIAT on-off-ramp")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Crowdfunding"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ImbueNetwork/imbue"},"Imbue Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zhangjiannan/QFgrant"},"Quadratic Funding pallet by Dora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-pallet/tree/master"},"Quadratic Funding pallet by OAK")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413"},"Minimum Anti-Collusion Infrastructure (MACI)"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Collection of Pallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-runtime-module-library"},"Substrate Open Runtime Module Library")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/warehouse"},"warehouse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InvArch/InvArch-Frames"},"InvArch FRAME Pallet Library")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Marketplaces"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/WowLabz/dot-marketplace-v2/tree/Phase3_Milestone3"},"Dot Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace"},"Gated Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/ventur"},"Ventur")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RELAI-Network/futur-protocol"},"Futur Protocol")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Carbon Credits"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bitgreen/bitg-node"},"BitGreen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/carbon-assets"},"Carbon Assets Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SequesterChain/pallets"},"Sequester Pallets")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"UTXO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Off-Narrative-Labs/Tuxedo"},"Tuxedo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Moonsong-Labs/moonkit"},"Moonkit")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-account-filter"},"Substrate Account Filter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opentensor/subtensor"},"Subtensor")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AdMetaNetwork/admeta"},"AdMeta")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chocolatenetwork/chocolate-node"},"Chocolate Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/virto-node"},"Virto Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-validator-set"},"Substrate Validator Set")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DEIPworld/deip-node"},"DEIP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debionetwork/debio-node"},"DeBio")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mathwallet/MathChain"},"MathChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/encointer/encointer-node"},"encointer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/grasslandnetwork/substrate_node"},"Grassland")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rusty-crewmates/substrate-tutorials"},"Substrate-Tutorials")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Fair-Squares/fair-squares"},"Fair Squares")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/totem-tech/totem"},"Totem Live Accounting")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/herou/EscrowPallet"},"Escrow Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NexTokenTech/TREX"},"TREX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/relationlabs/Relation-Graph"},"Relation Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gertt/Invoice"},"Decentralized Invoice")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/redstone-network/redstone-node"},"Redstone Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WunderbarNetwork/access-control"},"Access Control Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/web3-grant"},"Omniverse DLT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/substrate-ismp"},"ISMP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/xcmp_prototype_playground"},"XCMP")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dhiway/cord"},"CORD Chain")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Decentralized review/reputation system")))),(0,o.kt)("h3",{id:"host"},"Host"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Rust"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate"},"Substrate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus"},"Cumulus")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"C++"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/kagome"},"Kagome")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/mayon"},"Mayon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Go"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Java"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/Fruzhin"},"Fruzhin")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/java-host-research"},"Java Host Research")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"AssemblyScript"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Light Client"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/smol-dot/smoldot"},"smoldot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-connect"},"Substrate Connect")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eqlabs/polkadot-light-client"},"C++ Polkadot Light Client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/polkadot-conformance"},"Polkadot Conformance")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sigp/polkafuzz"},"Polkafuzz")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"network-maintenance-tools"},"Network Maintenance Tools"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Secure validator setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkachu/polkadot-validator"},"Polkadot Validation Node Ansible Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-validator-setup"},"W3F Polkadot Validator Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nexus2k/polkadot-ansible"},"polkadot-ansible")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"High availability setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/luguslabs/archipel"},"Archipel")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-failover-mechanism"},"Polkadot Failover Mechanism")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Datagen-Project/Datagen-Substrate-Grant"},"Datagen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/substrate-raft"},"High Availability Validator Setup")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Load Balanced Endpoints"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/insight-w3f/terragrunt-polkadot"},"terragrunt-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sudoblockio/substrate-meta"},"Geometry Labs' Substrate Meta repo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Deployment Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blockdaemon/bpm-sdk"},"Polkadot Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/polkahub-monorepo"},"PolkaHub")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom"},"Avado")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-deployer"},"Polkadot Deployer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/for-parity-with-love/unified-collator-node-deployment"},"Unified Collator Deployment")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/one-t"},"ONE-T")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/subvt-backend"},"SubVT")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SimplyVC/panic"},"P.A.N.I.C.")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/polkalert"},"Polkalert")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3"},"B-Harvest")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakezone/nmonpolkadot"},"nmonpolkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ironoa/polkadot-k8s-monitor"},"Polkadot-K8s-Monitor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-watcher"},"Polkadot-Watcher")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot"},"1KV Telegram Bot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator payout management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/substrate-auto-payout"},"Substrate validator auto payout")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-payouts"},"Polkadot Payouts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emostov/staking-payouts"},"staking-payouts CLI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakelink/substrate-payctl"},"Payctl")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/crunch"},"crunch")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking Miner"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/staking-miner-v2"},"Staking Miner v2")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Nominator Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/miepsik/validators_selection"},"Validator Selection")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer"},"Polkanalyzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer-app"},"Polkanalyzer-app")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"signatures"},"Signatures"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SR25519"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/schnorrkel"},"rust")," \u26aa(contains partial bindings for C, JavaScript, and Python), ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/sr25519-dotnet"},".Net bindings")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(old)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TerenceGe/sr25519-donna"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(new)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/soramitsu-sr25519-crust"},"C/C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519_dotnet"},"C#")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/go-schnorrkel"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debuggor/schnorrkel-java"},"java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/sr25519-bindings"},"PHP")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Signature Aggregation"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/apk-proofs"},"apk-proofs")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Distributed key generation (DKG) or management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/isislovecruft/frost-dalek"},"keygen.rs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/sword"},"Secure Wallet Origin Distribution (SWORD)")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator HSMs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/buildroot-zondax"},"Zondax Remote Signer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"MPC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/orochi-network/orochi-network.github.io"},"Orochi Network")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"consensus"},"Consensus"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subspace/substrate"},"Spartan")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoW"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/pow"},"PoW consensus for Substrate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kulupu/kulupu/tree/master/pow"},"RandomX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow"},"Sha3 PoW")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block production"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/babe"},"BABE")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/aura"},"Aura")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Finality"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/grandpa"},"GRANDPA")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/AlephBFT"},"AlephBFT")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/nimbus"},"Nimbus: Upgradeable consensus framework")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"networking"},"Networking"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SCALE Codec"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec"},"Rust")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec-ts"},"TypeScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-scale-codec"},"Python")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/"},"Golang Chainsafe")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.go"},"Golang Itering")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/MatthewDarnell/cScale"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-cpp"},"C++")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"JavaScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-scale-codec"},"AssemblyScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.rb"},"Ruby")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nbltrust/dart-scale-codec"},"Dart")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/swift-scale-codec"},"Swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-swift"},"scale-codec-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-kotlin"},"scale-codec-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-scale-codec"},"PHP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-js-library"},"JavaScript by Soramitsu")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/scale-codec-comparator"},"Scale Codec Comparator")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia-messages-sol/blob/master/contracts/utils/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Darwinia")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/snowbridge/blob/main/core/packages/contracts/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Snowfork")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/arijitAD/dotscale"},"Dotscale")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Networking Framework"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/libp2p/libp2p"},"libp2p")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DHT Crawler"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/atredispartners/dht-crawler-polkadot"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkabot"},"Kotlin")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Tor-like access"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Evanesco-Labs/WhiteNoise.rs"},"WhiteNoise")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"primitives"},"Primitives"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Storage"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/frisitano/merkle-tree-db"},"Merkle Tree DB")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Merkle Proofs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/solidity-merkle-trees"},"Solidity Trie Verifier")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h2",{id:"contributing"},"Contributing"),(0,o.kt)("p",null,"Pull requests, issues, or other contributions from the community are encouraged! You can not only\nadd specific projects, but also potentially interesting fields/areas which are currently missing in\nthe tech stack."),(0,o.kt)("p",null,"\u2757 All technologies listed above need to be open-source. Ideally, the links\nlead directly to the code."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you\nmay ",(0,o.kt)("a",{parentName:"em",href:"https://github.com/join"},"sign up for free"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccc1222e.582baac2.js b/assets/js/ccc1222e.582baac2.js new file mode 100644 index 000000000000..82a1e4b729e0 --- /dev/null +++ b/assets/js/ccc1222e.582baac2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6920],{3905:(t,a,e)=>{e.d(a,{Zo:()=>m,kt:()=>k});var r=e(67294);function n(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function o(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,r)}return e}function i(t){for(var a=1;a=0||(n[e]=t[e]);return n}(t,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}var l=r.createContext({}),h=function(t){var a=r.useContext(l),e=a;return t&&(e="function"==typeof t?t(a):i(i({},a),t)),e},m=function(t){var a=h(t.components);return r.createElement(l.Provider,{value:a},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var a=t.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(t,a){var e=t.components,n=t.mdxType,o=t.originalType,l=t.parentName,m=p(t,["components","mdxType","originalType","parentName"]),s=h(e),u=n,k=s["".concat(l,".").concat(u)]||s[u]||d[u]||o;return e?r.createElement(k,i(i({ref:a},m),{},{components:e})):r.createElement(k,i({ref:a},m))}));function k(t,a){var e=arguments,n=a&&a.mdxType;if("string"==typeof t||n){var o=e.length,i=new Array(o);i[0]=u;var p={};for(var l in a)hasOwnProperty.call(a,l)&&(p[l]=a[l]);p.originalType=t,p[s]="string"==typeof t?t:n,i[1]=p;for(var h=2;h{e.r(a),e.d(a,{assets:()=>m,contentTitle:()=>l,default:()=>k,frontMatter:()=>p,metadata:()=>h,toc:()=>s});var r=e(87462),n=e(63366),o=(e(67294),e(3905)),i=["components"],p={id:"build-open-source",title:"Open Source Stack",sidebar_label:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",keywords:["open","source","development","code","resources","tools","apis"],slug:"../build-open-source"},l="Open Source Polkadot Stack \x3c!-- omit in toc --\x3e",h={unversionedId:"build/build-open-source",id:"build/build-open-source",title:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",source:"@site/../docs/build/build-open-source.md",sourceDirName:"build",slug:"/build-open-source",permalink:"/docs/build-open-source",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/build/build-open-source.md",tags:[],version:"current",lastUpdatedBy:"Cedric Decoster",lastUpdatedAt:1713443672,formattedLastUpdatedAt:"Apr 18, 2024",frontMatter:{id:"build-open-source",title:"Open Source Stack",sidebar_label:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",keywords:["open","source","development","code","resources","tools","apis"],slug:"../build-open-source"},sidebar:"docs",previous:{title:"Explorer, Data, & Indexing Tools",permalink:"/docs/build-data"},next:{title:"Hackathons",permalink:"/docs/build-hackathon"}},m={},s=[{value:"About",id:"about",level:2},{value:"Layers of Polkadot Stack",id:"layers-of-polkadot-stack",level:2},{value:"Wallets",id:"wallets",level:3},{value:"User Interface",id:"user-interface",level:3},{value:"Tools, APIs, and Languages",id:"tools-apis-and-languages",level:3},{value:"ink! Smart Contracts",id:"ink-smart-contracts",level:3},{value:"Chains and Pallets",id:"chains-and-pallets",level:3},{value:"Host",id:"host",level:3},{value:"Network Maintenance Tools",id:"network-maintenance-tools",level:3},{value:"Signatures",id:"signatures",level:3},{value:"Consensus",id:"consensus",level:3},{value:"Networking",id:"networking",level:3},{value:"Primitives",id:"primitives",level:3},{value:"Contributing",id:"contributing",level:2}],d={toc:s},u="wrapper";function k(t){var a=t.components,e=(0,n.Z)(t,i);return(0,o.kt)(u,(0,r.Z)({},d,e,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"open-source-polkadot-stack--omit-in-toc-"},"Open Source Polkadot Stack "),(0,o.kt)("admonition",{title:"Do your research before using open-source tools",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The tools listed here are open-source and are linked directly to their source code. Before using these tools to build your projects, always ",(0,o.kt)("a",{parentName:"p",href:"/docs/how-to-dyor"},"do your research")," and be aware of ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-scams"},"scams"),".")),(0,o.kt)("p",null,"This page aims to provide an overview of the open-source Polkadot Tech Stack."),(0,o.kt)("p",null,"This is a living document, and we rely on everyone to contribute and help maintain\nit. ",(0,o.kt)("a",{parentName:"p",href:"#contributing"},(0,o.kt)("strong",{parentName:"a"},"Please feel free to make edits and additions via pull requests")),". We\napologize if we missed your project!"),(0,o.kt)("hr",null),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#about"},"About")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#wallets"},"Wallets")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#user-interface"},"User Interface")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#tools-apis-and-languages"},"Tools, APIs, and Languages")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#ink-smart-contracts"},"ink! Smart Contracts")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#chains-and-pallets"},"Chains and Pallets")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#host"},"Host")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#network-maintenance-tools"},"Network Maintenance Tools")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#signatures"},"Signatures")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#consensus"},"Consensus")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#networking"},"Networking")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#primitives"},"Primitives")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#contributing"},"Contributing"))),(0,o.kt)("h2",{id:"about"},"About"),(0,o.kt)("p",null,"The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the ",(0,o.kt)("strong",{parentName:"p"},"open-source"),"\ntechnologies contributing to and relying on ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/"},"Polkadot"),". It is meant to be used\nfor decentralized application (Dapp) development within numerous verticals, including DeFi, Gaming,\nProvenance and many others not pictured below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"|------|--------|------------|\n| DeFi | Gaming | Provenance |\n|______|________|____________|\n Dapps\n|--------------------------/-|\n| Explorers, Wallets / |\n|------------------------/---|\n| Tools, Apis, Languages/ |\n|----------------------/-----|\n| 2nd layer protocols / |\n|--------------------/-------|\n| Chains / other |\n|------------------/--- --|\n| *Polkadot* | tech |\n|------------------\\---------|\n| P2P, Crypto, Wasm \\ |\n|--------------------\\-------|\n")),(0,o.kt)("h2",{id:"layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("p",null,"In the below sections, you can find a list of different layers of the Polkadot Stack."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Maintenance Status"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe2 Actively maintained"),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe1 Stale (no activity on the main branch for one month)"),(0,o.kt)("li",{parentName:"ul"},"\u26aa Unmaintained (no activity on the main branch for more than three months)")),(0,o.kt)("h3",{id:"wallets"},"Wallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Web Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/Multix"},"Multix")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkasafe/polkasafe-ui"},"Polkasafe")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/apps"},"polkadot-js/apps")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-web"},"Talisman Web Application")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/mydotwallet"},"mydotwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subid"},"Sub ID")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Primis-Labs/client"},"Primis")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3finance/sakura"},"Sakura")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/Web3Box-apps"},"Web3Box")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoongCrafts/coong-wallet"},"Coong Wallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-react"},"Subscan Multisig UI - React")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-ui"},"Subscan Multisig UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/dorafactory-multisig"},"Dorafactory-Multisig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi-multisig-app"},"Capi Multisig App")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"User-friendly Wallet based on the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/recovery"},"Recovery Pallet"),", Web wallets focused on user-onboarding (e.g. using ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/near/near-wallet"},"localStorage"),")")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Desktop Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-spektr"},"nova-spektr")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/omni-desktop-prototype"},"Omni desktop")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Enterprise Wallets")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Browser Extensions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman"},"Talisman-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Extension"},"SubWallet-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/enKrypt"},"Enkrypt")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/extension"},"Polkadot{.js}")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolkaGate/polkagate-extension"},"PolkaGate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainBridgeNetworkTeam/Doter"},"Doter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GetSpeckle/speckle-browser-extension"},"Speckle OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/kuma-wallet"},"Kuma Cross-chain Wallet")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Sign-in with your Polkadot, Kusama, etc. account.")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Mobile Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-ios"},"Nova Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-android"},"Nova Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-signer"},"Polkadot Vault")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-Android"},"Fearless Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-iOS"},"Fearless Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Mobile"},"SubWallet-Mobile")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kalapaja/kampela-firmware"},"Kampela")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airgap-it/airgap-wallet"},"AirGap")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Interstellar-Network/wallet-app"},"Interstellar Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/luniehq/lunie"},"Lunie")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkawallet-io/polkawallet-flutter"},"Polkawallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/consenlabs/token-core"},"imToken")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stylo-app/stylo"},"Stylo")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fractapp/fractapp/"},"Fractapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hypha-dao/hashed-wallet"},"Hashed Wallet")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Burner Wallets/Faucet/Gifts"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hamidra/dotdrop"},"dotdrop")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/vue-polkadot/apps"},"KodaDot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/astar-faucet-bot"},"Astar Faucet Bot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/karooolis/sybil-resistant-substrate-faucet"},"Generic sybil-resistant faucet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/StringNick/sybil-resistant-chat-bot-substrate-faucet"},"sybil-resistant Chat Bot Faucet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Faucet (a sybil-resistant way to receive free tokens)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallet Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/metamask-snap-polkadot"},"Metamask-Snap by Chainsafe")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"CLI Wallet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/yxf/subwallet"},"Subwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canontech/proxy-hot-wallet"},"Proxy-hot-wallet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Hardware Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZondaX/ledger-polkadot"},"Ledger Polkadot")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-kusama"},"Ledger Kusama")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemint"},"Ledger Statemint")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemine"},"Ledger Statemine")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Trezor")))),(0,o.kt)("h3",{id:"user-interface"},"User Interface"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/topmonks/calamar"},"Calamar")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/explorer-api"},"Polkascan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/polkastats-backend"},"Polkastats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan"},"Subscan")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/statescan-v2"},"Statescan")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/edgeware-builders/edgscan"},"Edgscan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/epirus-substrate"},"Sirato")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/ink-substrate-explorer-api"},"ink! Explorer API")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/substats"},"Substats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-dapp"},"Hybrid Block Explorer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Mempool focused explorer (including parachain transaction)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-telemetry"},"Polkadot Telemetry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashquark-io/polkacube-frontend"},"Polkacube")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/buidl-labs/YieldScan"},"YieldScan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot"},"Hubble")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArthurHoeke/cyclops"},"Cyclops")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3go-xyz/web3go-xyz-v2"},"Web3Go")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/MathCryptoDoc/insights-1kv"},"1kv insights")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Node Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/protos-research/polkadot-node-explorer"},"Polkadot Node Explorer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT Explorer"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/nft-gallery"},"NFT Explorer for Kusama & Polkadot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/governance-ui"},"Polkadot Delegation Dashboard")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/premiurly/polkassembly"},"Polkassembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/dotreasury"},"dotreasury")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/bright-tresury"},"Bright Treasury")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/collaboration"},"OpenSquare offchain voting")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/wpank/open-gov-insights"},"OpenGov Insights")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stake-plus/treasury-tracker"},"Treasury Tracker")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/joepetrowski/opengov-cli"},"OpenGov CLI")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"UI for the Kusama and/or Polkadot treasury (see ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/pull/5715"},"bounty module"),"), UI for Parachain Lease Offering (PLO)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/staking-rewards-collector"},"Staking Rewards Collector")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/jackson-harris-iii/staking-rewards-viewer"},"Staking Rewards Viewer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptolab-network/polkadot-staking-site"},"Polkadot Staking Site")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-staking-dashboard"},"Polkadot Staking Dashboard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-validator-selector"},"Polkadot/Kusama Validator Selector")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-staking-income"},"Staking Income CSV Generator")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridge UI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridges-ui"},"Parity Bridges UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutbox-dao/donut-interface"},"Donut Interface (Steem - Dot)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RostislavLitovkin/PlutonicationServer"},"Plutonication")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Parachain/Crowdloan"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/jhonalino/parachains.network"},"Parachains.Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrommVardek/polk-auction-ui"},"PolkAuction")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/10clouds/crowdloan-template"},"Crowdloan Front End Template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/slothunter/"},"Slothunter")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identicon"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud/polkicon"},"Polkicon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-web-identicon"},"PolkadotWebIdenticon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-angular-identicon"},"Polkadot Angular IdentIcon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Noc2/Bird-Identicon"},"Bird Identicon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Coretime"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LasticXYZ/LasticUI"},"Lastic")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RegionX-Labs/RegionX"},"RegionX")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud"},"Polkadot Cloud")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/KappaSigmaMu/ksm-app"},"KappaSigmaMu Fratority")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-webapp"},"Quadratic Funding Webapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/polkawatch/polkawatch"},"Polkawatch"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bytepayment/bytepay"},"Bytepay")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Delmonicos/charging-management-platform"},"charging-management-platform")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/subidentity-webapp"},"subidentity-webapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/paid-qa/"},"OpenSquare Paid QA")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrossChainLabs-DOT/dotpulse-api"},"DotPulse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/rubeus-smartcontract"},"Rubeus Keeper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/justmert/eco-flow-frontend"},"Polkaflow")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/chainviz"},"ChainViz")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fidi-tech/dotsight"},"Dotsight")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://docs.sui.io/build/zk_login"},"zkLogin"),", Portfolio Viewer like Zapper or Zerion")))),(0,o.kt)("h3",{id:"tools-apis-and-languages"},"Tools, APIs, and Languages"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Parachain frameworks"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot Blockchain SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/gosemble"},"Gosemble")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/parachain-utilities"},"Parachain utilities")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gantree-io/gantree-core"},"Gantree")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5"},"Cryptex")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Tools to create parachains with other frameworks, like the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cosmos/cosmos-sdk"},"Cosmos SDK")," or ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xPolygon/cdk-validium-node"},"Polygon CDK"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Client Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-api"},"Polkadot API - Typescript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi"},"Capi - Typescript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/packages/tree/main/sub-api"},"sub-api")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".Net")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubstrateGaming/Substrate.NET.API"},".NET Standard 2.0")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain"},"Substrate .NET Toolchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/finoabanking/substrate-c-tool"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"Javascript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar - TypeScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-substrate-interface"},"Python")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java (+ Android)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/strategyobject/substrate-client-java"},"Substrate Client Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substrate-api-client"},"Rust SCS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/subxt"},"Rust Parity (subxt)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/trevor-crypto"},"Rust pdotc")," ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-substrate-api"},"PHP (gmajor-encrypt)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neha0921/substrate-interface-package"},"PHP (neha0921)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/frontier"},"RPC-Ethereum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Substrate.swift"},"Swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/substrate-client-kotlin"},"Kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-kotlin"},"substrate-client-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-swift"},"substrate-client-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rankanizer/polkadart"},"Dart")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polywrap/integrations"},"Substrate Core Polywrapper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-ios"},"Substrate SDK iOS")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-android"},"Substrate SDK Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoongCrafts/delightfuldot"},"DelightfulDot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Gateway"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/subway"},"Subway")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Substrate Contract clients"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/go-patract"},"PatractGo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Easy Runtime Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/subalfred"},"Subalfred")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/substrate-stencil"},"substrate-stencil")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/play-substrate"},"Play Substrate")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/substrate-node-template"},"substrate-node-template")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-playground"},"Substrate Playground")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-substrate-runtime"},"AssemblyScript Runtime Generation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/clearloop/sup"},"Substrate Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly: Framework for developing AssemblyScript Substrate Runtimes")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bkchr/diener"},"dependency diener")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/vscode-substrate"},"Substrate Marketplace VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/vscode-plugin-substrate"},"VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/atom-plugin-substrate"},"Atom Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet-vscode-extension"},"zombienet extension")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Pallet Security"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/srlabs/substrate-runtime-fuzzer"},"Substrate Runtime Fuzzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-toml-lint"},"Substrate Toml Lint")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kframework/wasm-semantics"},"K specifications")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSecurity/polpatrol"},"PolPatrol - Polkadot Runtime Checker")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Automated Runtime checking tools, economic audit simulator such as ",(0,o.kt)("a",{parentName:"td",href:"https://gauntlet.network/"},"gauntlet.network"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Languages"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"#ink-smart-contracts"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ask-lang/ask"},"Ask!")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/slickup/subscript"},"Subscript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hyperledger-labs/solang"},"Solang")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eigerco/pallet-move"},"pallet-move")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pontem-network/sp-move"},"Move VM Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neatcoin/neatcoin"},"Move smart contract by Neatcoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pepyakin/substrate-seal-ebpf"},"eBPF Contracts Hackathon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkavm"},"PolkaVM")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Functional Programming Languages, other languages with developed toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-introspector"},"Polkadot introspector")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdirectory/subshell"},"Subshell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/sc-simnode"},"substrate-simnode")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/halva-suite/halva"},"Halva")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/redspot"},"Redspot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mixbytes/tank"},"MixBytes Tank")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate debug-kit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/asset_cli_tool"},"Asset CLI tool")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/unfinished_testing_tool"},"sub_crash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/subwasm"},"subwasm")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ascjones/subsee"},"subsee")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-lab"},"polkadot-lab")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dwellir-public/rpc-perf/"},"RPC-perf")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Static Analysis"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KaiserKarel/substrace"},"Substrace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/simon-perriard/saft"},"Static analyzer for Substrate FRAME's pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoinFabrik/scout"},"CoinFabrik Scout")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testnet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet"},"Zombienet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/chopsticks"},"Chopsticks")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-launch"},"Polkadot Launch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkadot-starship"},"polkadot-starship")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork off Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/try-runtime-cli"},"try-runtime-cli")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/parachain-launch"},"Parachain Launch")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zeeve-App/larch"},"Larch Zombienet GUI")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Benchmarking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/utils/frame/benchmarking-cli"},"Benchmarking CLI")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-stps"},"Polkadot sTPS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xekez/clockchain"},"Clockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-graph-benchmarks"},"Substrate Graph Benchmarks")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking"},"ink! & pallet benchmarking template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/smart-bench"},"smart-bench")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain Indexing Engine"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk"},"Squid SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-indexer"},"Hybrid Indexer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-archive"},"Substrate Archive")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_psql_indexer"},"PSQL Indexer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/substrate-graph"},"Substrate Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OnFinality-io/subql"},"Subquery")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/p2p-org/polkadot-profit-transformer"},"MBELT3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/stick"},"stick")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Infra3-Network/hyperdot"},"Hyperdot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain/Event Monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/guardian"},"Web3 Guardian")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HugoByte/aurras-event-manager"},"Aurras Event Manager")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/chain-events"},"@commonwealth/chain-events")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/massbitchain"},"Massbit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kianenigma/polkadot-basic-notification"},"Polkadot Basic Notifications")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/ocelloids"},"Ocelloids")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TrackingChains/TrackingChain"},"Tracking Chain")," \u26aa,"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolkadotPlay/Polkadot.Unity.SDK"},"Polkadot SDK for Unity")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dodorare/crossbow"},"Crossbow")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://assetstore.unity.com/packages/decentralization/infrastructure/polkadot-sdk-for-unity-273535"},"Unity Asset Store"),", ",(0,o.kt)("a",{parentName:"td",href:"https://amethyst.rs/"},"Amethyst")," + ",(0,o.kt)("a",{parentName:"td",href:"https://substrate.dev/"},"Substrate"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"No-code Platforms"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js"},"EzCode's Polkadot.js plugin on Bubble.io")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blackprint/nodes-polkadot.js"},"Blackprint Visual Programming Polkadot.js module")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subrelay/interface"},"SubRelay")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-connect"},"Talisman Connect")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubConnect"},"SubWallet-SubConnect")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nova-wallet/metadata-portal"},"Metadata Portal")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Tesseract.rs"},"Tesseract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/walletconnect-v2-monorepo"},"WalletConnect")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BitGo/BitGoJS/tree/master"},"BitGoJS")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"XCM"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/trappist"},"Trappist")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Moonsong-Labs/xcm-tools"},"XCM-tools")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/substrate-api-rpc"},"XCM-tools Golang")," \ud83d\udfe1,",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paraspell/ui-v2"},"ParaSpell")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/t3rn/xbi"},"XBI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/xcm-sdk"},"XCM TS/JS SDK")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XcmSend/app"},"XCMSend")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/xcm-monitoring/"},"XCM Monitoring Server")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/moonbeam-foundation/xcm-sdk"},"Moonbeam Foundation XCM-SDK")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/asset-transfer-api"},"asset-transfer-api")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/txwrapper-core"},"txwrapper-core")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-web3.js"},"open-web3 JS library")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/GVM-Bridge"},"VM-Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/srtool"},"srtool")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/srtool-cli"},"srtool-cli")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-tip-bot"},"Substrate Tip Bot")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/syntifi/ori"},"ORI (Onchain Risk Intelligence)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/albertov19/PolkaTools"},"PolkaTools")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-scripts"},"polkadot-scripts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/sube"},"Sube")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/data-store-sidecar"},"data-store-sidecar")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SugarFunge/sugarfunge-node"},"SugarFunge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/second-state/substrate-wasmedge"},"substrate-wasmedge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eightfish-org/eightfish"},"EightFish")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sandoxio/sandox"},"Sandox")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/apk-verifier/"},"APK verifier")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"ink-smart-contracts"},"ink! Smart Contracts"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Core Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/cargo-contract"},"cargo-contract")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts"},"pallet-contracts")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Local Nodes"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-contracts-node"},"substrate-contracts-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/swanky-cli"},"Swanky")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/drink"},"DRink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/contracts-ui"},"contracts-ui")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Smart-Beaver"},"SmartBeaver"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/h4nsu/openbrush-contracts"},"OpenBrush")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/727-Ventures/sol2ink"},"Sol2Ink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-contract-wizard"},"Polkadot Contract Wizard")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/ink-wrapper"},"ink-wrapper")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-playground"},"ink-playground")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockchain-it-hr/ink-remix-plugin"},"ink! Remix Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/standardweb3/signac/"},"Signac")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-boxes/"},"ink!-boxes")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-wizard"},"ink!-smart-contract-wizard")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Security & Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-waterfall"},"ink! Waterfall")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ink-verifier-image"},"Verifier Image for ink!")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/patron-backend/"},"Patron")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Frontend Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/inkathon"},"ink!athon Boilerplate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/useink"},"useink")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/use-inkathon"},"useInkathon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk/tree/master/substrate/ink-typegen"},"ink-typegen")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/typechain-polkadot"},"Typechain Polkadot")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ink-analyzer/ink-analyzer"},"ink! Analyzer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dantenetwork/protocol-stack-for-ink"},"Dante Protocol")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum-ink-wrapper"},"Pendulum-Ink-Wrapper")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RottenKiwi/Panorama-Swap-INK-SC"},"Panorama Swap")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Juminstock/ink_bank"},"ink_bank")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/realnimish/polkadot-amm"},"Polkadot AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/veradefi/defi"},"Vera")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nsure-tech/dot-contract"},"Nsure Insurance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/ELC"},"Everlasting Cash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Coinversation/coinpro"},"Coinversation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/zenlink-dex-contract"},"zenlink-dex-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ReserveLabs/AlgoCash"},"AlgoCash")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"New seigniorage-style stable coins")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/OpenEmojiBattler/open-emoji-battler"},"Open Emoji Battler")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs"},"NewOmega")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/SyncraDAO/modular-dao"},"SyncraDAO")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/subDAO-contracts"},"subDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1"},"RainbowDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/Mangoboxink"},"MangoBox")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/MangoSaleV2"},"MangoSale")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TheDotflow"},"Dotflow")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracles"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/dia-wasm-oracle"},"DIA WASM Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Spam Protection"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/prosopo/captcha"},"Prosopo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AbaxFinance/Governance"},"Abax Governance")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArtZero-io/Contracts"},"ArtZero")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/ink-aa"},"Polkadot Smart Account")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/magink-dapp"},"magink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/ink-test-contracts"},"ink-test-contracts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/agryaznov/candle-auction-ink"},"Candle Auctions")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubDAO-Network/polkasign-contract"},"polkasign-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/ocex-cli"},"OCEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RoloiMoney/roloi-polkadot-w3f-grant"},"Roloi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadrys/openPayroll"},"OpenPayroll")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InkSmartContract/BlockchainFoodOrder"},"BlockchainFoodOrder")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"chains-and-pallets"},"Chains and Pallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Scalable Transactions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-pallet"},"Perun channels")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-demo"},"CLI demo of Perun")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/Astar"},"Astar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/celer-network/cChannel-substrate"},"Celer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GunClear/Gunero"},"Gunclear")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BCS-Labs/tpscore-etl-system"},"TPScore")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/auguth/pocs"},"proof-of-contract-stake")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"roll-ups, DAG-based consensus mechanisms, side chains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc"},"interBTC")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/dkg-substrate"},"DKG Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sygmaprotocol/sygma-substrate-pallets"},"Sygma")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bifrost-finance/bifrost-eos-relay"},"EOS by Bifrost")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridge"},"POA - Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/POC-polkadai-bridge"},"Substrate - Ethereum DAI Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-bridge-relay"},"Substrate - Substrate Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainx-org/ChainX"},"BTC by ChainX")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChorusOne/wormhole-bridge"},"Cosmos-Substrate bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/octopus-network/substrate-ibc"},"Substrate IBC Pallet")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/polkadot-ethereum"},"Polkadot Ethereum Bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia"},"Darwinia")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/spacewalk"},"Spacewalk: a Stellar bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/filecoindot"},"Filecoindot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/axelar-cgp-substrate/tree/main"},"Axelar-Substrate")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"ZCash")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Privacy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LayerXcom/zero-chain"},"ZeroChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/xx-labs/xxchain"},"xx network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Phala-Network/phala-blockchain"},"pLibra (Phala Network)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/automata-network/automata"},"Automata Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zero-network/zero"},"Zero Network")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/appliedblockchain/silentdata-polkadot"},"Silent Data")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anoma/masp"},"Multi-Asset Shielded Pool (MASP)")," , ",(0,o.kt)("a",{parentName:"td",href:"https://arxiv.org/pdf/2009.01020.pdf"},"Zkay"),", ",(0,o.kt)("a",{parentName:"td",href:"https://eprint.iacr.org/2018/962.pdf"},"Zexe"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"ZKP"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example"},"ZeroPool")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/megaclite"},"Megaclite")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/zkmega"},"zkMega")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/plonk"},"PLONK for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/protocol-substrate"},"Webb Anchor Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/zk-snarks-with-substrate/"},"zk-SNARKs tutorial")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zkvers/substrate-zk"},"substrate-zk")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/hyperfridge-r0"},"hyperfridge-r0")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"TEE"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Acurast/acurast-core"},"Acurast")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/integritee-network/worker"},"Integritee")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substraTEE"},"substraTEE")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/wetee-dao/chain"},"WeTEE")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/keysafe-protocol/keysafe-app"},"Keysafe Protocol")," \u26aa")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kapilsinha/privadex"},"PrivaDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/uinb/fusotao"},"Fusotao")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/reef-defi/reef-chain"},"Reef")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Diora-Network/Diora"},"Diora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum"},"Pendulum Chain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/compound-finance/gateway"},"Compound Gateway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/parallel-finance/parallel"},"Parallel Finance")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/PINT"},"PINT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/laminar-chain"},"Laminar Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/Acala"},"Acala")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/centrifuge-chain"},"Centrifuge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stafiprotocol/stafi-node"},"Stafi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/y2labs-0sh/definex"},"Definex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAXFoundation/parrot"},"OAX Foundation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/alexxuyang/substrate-dex"},"Cybex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/pallet-zenlink"},"Zenlink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/lsaether/pallet-swaps"},"Swaps Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Polkadex-Substrate/Polkadex/tree/master"},"Polkadex")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdarkdex/subdex-parachain"},"SubDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/hack.HydraDX-node"},"HydraDX")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/apopiak/stablecoin"},"Substrate Stablecoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/digitalnativeinc/standard-substrate"},"Standard protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sora-xor/sora2-network"},"Polkaswap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/equilibrium-eosdt/equilibrium-curve-amm"},"Curve AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/konomi-network/cumulus/"},"Konomi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutsfinance/stable-asset"},"Stable Asset")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/atscaletech/libra"},"Libra Payment")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mangata-finance/mangata-node"},"Mangata")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tidelabs/tidechain"},"Tidechain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolymeshAssociation/Polymesh"},"Polymesh")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"DEX with privacy and confidentiality features such as those found in a ",(0,o.kt)("a",{parentName:"td",href:"https://en.wikipedia.org/wiki/Dark_pool"},"dark pool"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart contract chains"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/moonbeam"},"moonbeam")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Magport/Magnet"},"Magnet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/aleph-node"},"Aleph-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/edgeware-node"},"Edgeware")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ParaState/substrate-ssvm-node"},"ParaState")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gear-tech/gear"},"gear")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cennznet/cennznet"},"CENNZnet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/skyekiwi/skyekiwi-network"},"SkyeKiwi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/OAK-blockchain"},"OAK-blockchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ice-substrate"},"ICE Blockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OmniBTC/PSC"},"Polkadot Smart Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/keep-starknet-strange/madara"},"Madara - Cairo/Starknet")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"smart contract chains with novel security approaches, smart contract chains based on existing toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracle"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-pallet"},"Tellor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle"},"Laminar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/smartcontractkit/chainlink-polkadot"},"Chainlink-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/aresprotocols/ares"},"Ares Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kylin-Network/kylin-node"},"Kylin Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc-clients/tree/master/oracle"},"interbtc-clients oracle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/anonima"},"Anonima")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SaaS3-Foundation/dRuntime-fat"},"SaaS3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-parachain-contracts"},"Tellor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/bridgestate-ocw"},"Bridgestate Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/parami-foundation/parami-blockchain"},"Parami")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/litentry/litentry-parachain"},"Litentry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/pallet-did"},"pallet-did")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/prasad-kumkar/dot-id"},"dot-id")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IoT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/chain"},"Nodle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DataHighway-DHX/node"},"MXC/DataHighway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/peaqnetwork/peaq-network-node"},"peaq-network-node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Verifiable Claims"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KILTprotocol/kilt-node"},"KILT")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/docknetwork/dock-substrate"},"Dock")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Supply chain"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/digicatapult/dscp-node"},"DSCP Node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Health care"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Music Industry"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Allfeat/Allfeat"},"Allfeat Network")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Data Availability"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/availproject/avail"},"Avail")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/melodot"},"Melodot")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Social Networking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/frequency"},"Frequency")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/social-network/blockchain"},"Social Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-parachain"},"SubSocial")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/ZeroDAO-node"},"ZeroDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/myriadsocial/myriad-node"},"Myriad Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/randombishop/wika_etl"},"Wika Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/mrc"},"Project Liberty")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/listenofficial/listen-parachain"},"Listen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tribal-protocol/tribal_contract"},"Tribal Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rust-0x0/hex-space-protocol-substrate"},"Five Degrees on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/acuity-social/acuity-substrate"},"Acuity Social")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Private instant messenger that uses on-chain identity")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance/DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/aisland-dao/aisland-node/tree/main"},"Aisland Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate"},"Hashed Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sunshine-protocol/sunshine-bounty"},"Sunshine DAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NucleiStudio/governance-os"},"Governance OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/idavollnetwork/idavoll"},"Idavoll Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/Substrate-Moloch-V2"},"Substrate Moloch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Qrucial/QRUCIAL-DAO"},"QRUCIAL-DAO")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sctllabs/societal-node"},"Societal")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/daos-org/daos"},"DAOs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/amiyatulu/shivarthu/"},"Shivarthu")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/faterium"},"Faterium")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/decentration/apps"},"Supersig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/genesis-dao-node"},"GenesisDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dao-entrance/dao-entrance-node"},"DAO Entrance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/liberland/liberland_substrate"},"Liberland")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/consul/consul"},"Consul")," - Open Government and E-Participation Web Software")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Prediction Markets and Futarchy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeitgeistpm/zeitgeist"},"Zeitgeist")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XPredictMarket/NodePredict"},"X Predict Market")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Messaging"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/validitylabs/HOPR-PL-Substrate"},"HOPR")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainify/nolik"},"Nolik")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Uke-Messaging/uke-pallet"},"Uke")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Belsoft-rs/diffychat-pallet"},"Diffy Chat")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fennelLabs/Fennel-Protocol"},"Fennel Protocol")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"File Storage, Cloud"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-offchain"},"Subsocial-Offchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playproject-io/datdot"},"DatDot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/crustio/crust"},"Crust Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rs-ipfs/offchain-ipfs-manual"},"offchain::ipfs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canyon-network/canyon"},"Canyon Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cumulus2021/cess"},"CESS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/cess-proving-system"},"CESS Proving Subsystem")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5/iris"},"Iris")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/fmd-cess"},"fmd-cess")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw"},"IPFS Frame V3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/threefoldtech/tfchain"},"Threefold Chain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Apron-Network/apron-node"},"Apron")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/substrate-ipfs"},"IPFS Utilities")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/dinfra/dinfra"},"DINFRA")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Name Service"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/xaya/substrate-names"},"Substrate Names")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hskang9/substrate-name-service"},"ENS on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/pns-pallets"},"PNS-Pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HeisenbergLin22/Faceless_milestone2_delivery"},"Faceless")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ff13dfly/Anchor"},"Anchor")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bit-country/Bit-Country-Blockchain"},"Bit.country")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubGame-Network/subgame-network"},"SubGame")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/subzero"},"subzero")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3gamesofficial/web3games-blockchain"},"Web3Games")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/ajuna-pallets"},"Ajuna Pallets")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptoviet/gafi"},"Gafi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/asylum-space/asylum-item-nft"},"Asylum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/3Dpass/3DP"},"3DPass")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polketio/toearnfun_flutter_app"},"Polket")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Computation/AI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Deitos-Network/deitos-ip"},"Deitos Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DeepBrainChain/DeepBrainChain-MainChain"},"DeepBrain Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/anudit/cerebrum"},"AI Infrastructure on Blockchain")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Enable specific use-cases"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/pallet_hookpoints"},"pallet-hookpoints")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/substrate-node-robonomics"},"Robonomics")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniversalDot/pallets"},"UniversalDOT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/evercity-chain"},"Evercity Sustainable Finance Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/logion-network/logion-node"},"logion")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Me-Protocol/rusty-protocol-v0.1/"},"Me Protocol")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/QSTN-US/Polkadot-QSTN-v1/"},"QSTN")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/capsule-corp-ternoa/chain"},"ternoa")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/danforbes/pallet-nft"},"FRAME Pallet: NFTs for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniqueNetwork/unique-chain"},"Unique NFT Parachain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets"},"DNFT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rmrk-team/rmrk-substrate"},"RMRK-Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/nt-nft"},"NT-NFTs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GreenLemonProtocol/dksap-polkadot"},"Green Lemon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Randomness"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon"},"DKG and Randomness Beacon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/random-meat/drand-substrate-client"},"drand-substrate-client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Licensing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anagolay/anagolay-chain"},"Anagolay Network")," \u2754"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Banking Integration"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/element36-io/ebics-java-service"},"FIAT on-off-ramp")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Crowdfunding"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ImbueNetwork/imbue"},"Imbue Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zhangjiannan/QFgrant"},"Quadratic Funding pallet by Dora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-pallet/tree/master"},"Quadratic Funding pallet by OAK")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413"},"Minimum Anti-Collusion Infrastructure (MACI)"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Collection of Pallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-runtime-module-library"},"Substrate Open Runtime Module Library")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/warehouse"},"warehouse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InvArch/InvArch-Frames"},"InvArch FRAME Pallet Library")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Marketplaces"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/WowLabz/dot-marketplace-v2/tree/Phase3_Milestone3"},"Dot Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace"},"Gated Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/ventur"},"Ventur")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RELAI-Network/futur-protocol"},"Futur Protocol")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Carbon Credits"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bitgreen/bitg-node"},"BitGreen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/carbon-assets"},"Carbon Assets Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SequesterChain/pallets"},"Sequester Pallets")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"UTXO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Off-Narrative-Labs/Tuxedo"},"Tuxedo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Moonsong-Labs/moonkit"},"Moonkit")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-account-filter"},"Substrate Account Filter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opentensor/subtensor"},"Subtensor")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AdMetaNetwork/admeta"},"AdMeta")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chocolatenetwork/chocolate-node"},"Chocolate Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/virto-node"},"Virto Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-validator-set"},"Substrate Validator Set")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DEIPworld/deip-node"},"DEIP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debionetwork/debio-node"},"DeBio")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mathwallet/MathChain"},"MathChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/encointer/encointer-node"},"encointer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/grasslandnetwork/substrate_node"},"Grassland")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rusty-crewmates/substrate-tutorials"},"Substrate-Tutorials")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Fair-Squares/fair-squares"},"Fair Squares")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/totem-tech/totem"},"Totem Live Accounting")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/herou/EscrowPallet"},"Escrow Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NexTokenTech/TREX"},"TREX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/relationlabs/Relation-Graph"},"Relation Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gertt/Invoice"},"Decentralized Invoice")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/redstone-network/redstone-node"},"Redstone Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WunderbarNetwork/access-control"},"Access Control Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/web3-grant"},"Omniverse DLT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/substrate-ismp"},"ISMP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/xcmp_prototype_playground"},"XCMP")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dhiway/cord"},"CORD Chain")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Decentralized review/reputation system")))),(0,o.kt)("h3",{id:"host"},"Host"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Rust"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate"},"Substrate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus"},"Cumulus")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"C++"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/kagome"},"Kagome")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/mayon"},"Mayon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Go"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Java"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/Fruzhin"},"Fruzhin")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/java-host-research"},"Java Host Research")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"AssemblyScript"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Light Client"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/smol-dot/smoldot"},"smoldot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-connect"},"Substrate Connect")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eqlabs/polkadot-light-client"},"C++ Polkadot Light Client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/polkadot-conformance"},"Polkadot Conformance")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sigp/polkafuzz"},"Polkafuzz")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"network-maintenance-tools"},"Network Maintenance Tools"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Secure validator setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkachu/polkadot-validator"},"Polkadot Validation Node Ansible Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-validator-setup"},"W3F Polkadot Validator Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nexus2k/polkadot-ansible"},"polkadot-ansible")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"High availability setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/luguslabs/archipel"},"Archipel")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-failover-mechanism"},"Polkadot Failover Mechanism")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Datagen-Project/Datagen-Substrate-Grant"},"Datagen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/substrate-raft"},"High Availability Validator Setup")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Load Balanced Endpoints"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/insight-w3f/terragrunt-polkadot"},"terragrunt-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sudoblockio/substrate-meta"},"Geometry Labs' Substrate Meta repo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Deployment Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blockdaemon/bpm-sdk"},"Polkadot Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/polkahub-monorepo"},"PolkaHub")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom"},"Avado")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-deployer"},"Polkadot Deployer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/for-parity-with-love/unified-collator-node-deployment"},"Unified Collator Deployment")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/one-t"},"ONE-T")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/subvt-backend"},"SubVT")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SimplyVC/panic"},"P.A.N.I.C.")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/polkalert"},"Polkalert")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3"},"B-Harvest")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakezone/nmonpolkadot"},"nmonpolkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ironoa/polkadot-k8s-monitor"},"Polkadot-K8s-Monitor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-watcher"},"Polkadot-Watcher")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot"},"1KV Telegram Bot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator payout management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/substrate-auto-payout"},"Substrate validator auto payout")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-payouts"},"Polkadot Payouts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emostov/staking-payouts"},"staking-payouts CLI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakelink/substrate-payctl"},"Payctl")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/crunch"},"crunch")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking Miner"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/staking-miner-v2"},"Staking Miner v2")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Nominator Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/miepsik/validators_selection"},"Validator Selection")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer"},"Polkanalyzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer-app"},"Polkanalyzer-app")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"signatures"},"Signatures"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SR25519"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/schnorrkel"},"rust")," \u26aa(contains partial bindings for C, JavaScript, and Python), ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/sr25519-dotnet"},".Net bindings")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(old)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TerenceGe/sr25519-donna"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(new)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/soramitsu-sr25519-crust"},"C/C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519_dotnet"},"C#")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/go-schnorrkel"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debuggor/schnorrkel-java"},"java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/sr25519-bindings"},"PHP")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Signature Aggregation"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/apk-proofs"},"apk-proofs")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Distributed key generation (DKG) or management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/isislovecruft/frost-dalek"},"keygen.rs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/sword"},"Secure Wallet Origin Distribution (SWORD)")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator HSMs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/buildroot-zondax"},"Zondax Remote Signer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"MPC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/orochi-network/orochi-network.github.io"},"Orochi Network")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"consensus"},"Consensus"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subspace/substrate"},"Spartan")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoW"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/pow"},"PoW consensus for Substrate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kulupu/kulupu/tree/master/pow"},"RandomX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow"},"Sha3 PoW")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block production"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/babe"},"BABE")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/aura"},"Aura")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Finality"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/grandpa"},"GRANDPA")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/AlephBFT"},"AlephBFT")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/nimbus"},"Nimbus: Upgradeable consensus framework")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"networking"},"Networking"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SCALE Codec"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec"},"Rust")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec-ts"},"TypeScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-scale-codec"},"Python")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/"},"Golang Chainsafe")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.go"},"Golang Itering")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/MatthewDarnell/cScale"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-cpp"},"C++")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"JavaScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-scale-codec"},"AssemblyScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.rb"},"Ruby")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nbltrust/dart-scale-codec"},"Dart")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/swift-scale-codec"},"Swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-swift"},"scale-codec-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-kotlin"},"scale-codec-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-scale-codec"},"PHP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-js-library"},"JavaScript by Soramitsu")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/scale-codec-comparator"},"Scale Codec Comparator")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia-messages-sol/blob/master/contracts/utils/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Darwinia")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/snowbridge/blob/main/core/packages/contracts/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Snowfork")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/arijitAD/dotscale"},"Dotscale")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Networking Framework"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/libp2p/libp2p"},"libp2p")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DHT Crawler"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/atredispartners/dht-crawler-polkadot"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkabot"},"Kotlin")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Tor-like access"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Evanesco-Labs/WhiteNoise.rs"},"WhiteNoise")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"primitives"},"Primitives"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Storage"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/frisitano/merkle-tree-db"},"Merkle Tree DB")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Merkle Proofs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/solidity-merkle-trees"},"Solidity Trie Verifier")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h2",{id:"contributing"},"Contributing"),(0,o.kt)("p",null,"Pull requests, issues, or other contributions from the community are encouraged! You can not only\nadd specific projects, but also potentially interesting fields/areas which are currently missing in\nthe tech stack."),(0,o.kt)("p",null,"\u2757 All technologies listed above need to be open-source. Ideally, the links\nlead directly to the code."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you\nmay ",(0,o.kt)("a",{parentName:"em",href:"https://github.com/join"},"sign up for free"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cda87995.13ccfd80.js b/assets/js/cda87995.13ccfd80.js new file mode 100644 index 000000000000..9d150f7ada1a --- /dev/null +++ b/assets/js/cda87995.13ccfd80.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3933],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>m});var o=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,o)}return a}function n(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var s=o.createContext({}),p=function(t){var e=o.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):n(n({},e),t)),a},u=function(t){var e=p(t.components);return o.createElement(s.Provider,{value:e},t.children)},c="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},d=o.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,s=t.parentName,u=l(t,["components","mdxType","originalType","parentName"]),c=p(a),d=r,m=c["".concat(s,".").concat(d)]||c[d]||h[d]||i;return a?o.createElement(m,n(n({ref:e},u),{},{components:a})):o.createElement(m,n({ref:e},u))}));function m(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,n=new Array(i);n[0]=d;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[c]="string"==typeof t?t:r,n[1]=l;for(var p=2;p{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>s,default:()=>m,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var o=a(87462),r=a(63366),i=(a(67294),a(3905)),n=["components"],l={id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},s=void 0,p={unversionedId:"build/build-tools-index",id:"build/build-tools-index",title:"Tool Index",description:"Reference point for a list of tools to support your development.",source:"@site/../docs/build/build-tools-index.md",sourceDirName:"build",slug:"/build-tools-index",permalink:"/docs/build-tools-index",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/build/build-tools-index.md",tags:[],version:"current",lastUpdatedBy:"Cedric Decoster",lastUpdatedAt:1713443672,formattedLastUpdatedAt:"Apr 18, 2024",frontMatter:{id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},sidebar:"docs",previous:{title:"Development Networks",permalink:"/docs/build-network-overview"},next:{title:"Explorer, Data, & Indexing Tools",permalink:"/docs/build-data"}},u={},c=[{value:"Wallets",id:"wallets",level:2},{value:"Block Explorers",id:"block-explorers",level:2},{value:"Blockchain Analytics",id:"blockchain-analytics",level:2},{value:"Network Monitoring & Reporting",id:"network-monitoring--reporting",level:2},{value:"Clients",id:"clients",level:2},{value:"Tools",id:"tools",level:2},{value:"IDEs",id:"ides",level:2},{value:"UI",id:"ui",level:2},{value:"Libraries",id:"libraries",level:2},{value:"Polkadot-JS API",id:"polkadot-js-api",level:3},{value:"Alternative Libraries",id:"alternative-libraries",level:3},{value:"CLI Tools",id:"cli-tools",level:3},{value:"WASM",id:"wasm",level:3},{value:"RPC and API Tools",id:"rpc-and-api-tools",level:3},{value:"GAME ENGINE SDK",id:"game-engine-sdk",level:3},{value:"SCALE Codec",id:"scale-codec",level:3},{value:"Data Crawling and Conversion",id:"data-crawling-and-conversion",level:2}],h={toc:c},d="wrapper";function m(t){var e=t.components,a=(0,r.Z)(t,n);return(0,i.kt)(d,(0,o.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Here, we provide a list of tools available for your development needs. They are sorted by context.\nIf you're actively maintaining a tool that might be useful to other Polkadot, Kusama or Substrate\ndevelopers, feel free to ",(0,i.kt)("a",{parentName:"p",href:"/docs/contributing"},"add it in"),"."),(0,i.kt)("h2",{id:"wallets"},"Wallets"),(0,i.kt)("p",null,"Please see the ",(0,i.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions"},"Wallets")," page."),(0,i.kt)("h2",{id:"block-explorers"},"Block Explorers"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps Explorer")," - Polkadot dashboard block\nexplorer. Supports dozens of other networks, including Kusama, Westend, and other remote or local\nendpoints. ",(0,i.kt)("a",{parentName:"li",href:"https://cloudflare-ipfs.com/ipns/dotapps.io"},"Access via IPFS")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://subscan.io"},"Subscan")," - Blockchain explorer for Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/subscan-essentials"},"Repo"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://3xpl.com/polkadot"},"3xpl.com")," - Fastest ad-free universal block explorer and JSON API with\nPolkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://blockchair.com/polkadot"},"Blockchair.com")," - Universal blockchain explorer and search\nengine with Polkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.statescan.io/"},"Statescan.io")," - Polkadot & Kusama Blockchain explorer.")),(0,i.kt)("h2",{id:"blockchain-analytics"},"Blockchain Analytics"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://app.web3go.xyz/#/"},"Web3go")," - An open platform for everyone to play with, curate and\nvisualize multi-blockchain data"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkawatch.app/"},"Polkawatch")," - Polkadot Decentralization Analytics")),(0,i.kt)("h2",{id:"network-monitoring--reporting"},"Network Monitoring & Reporting"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://telemetry.polkadot.io/"},"Polkadot Telemetry Service")," - Network information including what\nnodes are running the chain, what software versions they are running, sync status, and location."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot"},"Polkabot")," - Polkadot network monitoring and reporting using Matrix\n(Riot / Element) chat. Users may create custom bot plugins.\n",(0,i.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/polkabot-a3dba18c20c8"},"Blogpost"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Ryabina-io/substratebot"},"Ryabina's Telegram Bot")," - A Telegram bot for\nmonitoring on-chain events of Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot/polkabot"},"GitHub Repository")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkastats.io/"},"PolkaStats")," - Polkadot network statistics (includes Kusama). Shows\nnetwork information and staking details from validators and intentions.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/Colm3na/polkastats-v2/"},"GitHub Repository"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/panic"},"Panic")," - A node monitoring and alert server for validators."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/open-web3-stack/guardian"},"OpenWeb3/Guardian")," - A CLI tool and JS library to\nmonitor on chain states and events."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sodazone/ocelloids"},"Ocelloids SDK")," - Typescript SDK for multi-chain monitoring\nthat supports domain-specific logic for different pallets."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ArthurHoeke/cyclops/"},"Cyclops Dashboard")," - a validator dashboard application\nthat helps Polkadot network validators keep track of all their validators, their staking rewards,\nand performance.")),(0,i.kt)("h2",{id:"clients"},"Clients"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/tree/master/polkadot"},"Polkadot")," - The original Rust\nimplementation of the Polkadot Host."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/kagome"},"Kagome")," - A C++ Polkadot implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu"},"Soramitsu"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," - A Go implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://chainsafe.io/"},"ChainSafe Systems"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/txwrapper"},"TX Wrapper")," - Helper functions for offline transaction\ngeneration.")),(0,i.kt)("h2",{id:"tools"},"Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate"},"Substrate")," - Blockchain\ndevelopment platform written in Rust. The Rust version of the Polkadot Host is being built with\nSubstrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/"},"Substrate Docs")," - Comprehensive documentation and tutorials for\nbuilding a blockchain using Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/vscode-substrate"},"Substrate VSCode plugin"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate Debug Kit")," - A collection of debug\ntools and libraries around substrate chains. Includes tools to calculate NPoS elections offline,\ndisk usage monitoring, test templates against chain state and other pallet-specific helper."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://crates.io/crates/diener"},"Diener")," - A tool for easy changing of Polkadot or Substrate\ndependency versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/shawntabrizi/polkadot-launch"},"Polkadot Launch")," - A tool to easily launch\ncustom local parachain-enabled Polkadot versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/halva-suite/halva"},"Halva")," - A Truffle-inspired local development environment\nfor Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork-off Substrate")," - Copies the state of an\nexisting chain into your local version and lets you further experiment on it."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.chevdor.com/tags/srtool/"},"srtool")," - A tool for verifying runtime versions against\non-chain proposal hashes."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nikvolf/sub-bench"},"sub-bench")," - A tool to spam your node with transactions for\nthe sake of benchmarking."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/danforbes/substrate-devhub-utils"},"substrate-devhub-utils")," - A set of\nJavaScript utilities making life with Substrate a little easier."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," - A tool to benchmark Substrate by flooding it\nwith requests."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Apillon"},"Apillon")," - A Web3 development platform with a complete toolbox and\naccess to Polkadot\u2019s technology stack.")),(0,i.kt)("h2",{id:"ides"},"IDEs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://chainide.gitbook.io/chainide-english-1/ethereum-ide-1/13.-astar-ide"},"Astar IDE")," by\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/"},"Chain IDE")," is a tool for lightning-speed smart contracts and dApp\ndevelopment for ",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-wasm?language=en"},"Wasm")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-evm?language=en"},"EVM"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sandoxio/sandox"},"Sandox IDE")," is an integrated development environment (IDE)\nwith tools for building in the Polkadot environment. Currently helpful for creating applications\nin JS.")),(0,i.kt)("h2",{id:"ui"},"UI"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Swader/polkadash"},"Polkadash")," - VueJS-based starter kit for custom user\ninterfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/apps"},"Polkadot JS Apps UI")," - Repository of the\n",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps"},"polkadot.js.org/apps")," UI."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/substrate-front-end-template"},"Substrate Front-end Template")," -\nReactJS-based starter UI for custom user interfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/extension"},"Polkadot JS Browser Extension")," - Key management in a\nChrome extension."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot-ui.info/"},"Polkadot UI")," - A library and platform for developing and publishing\nassets for Polkadot dapps.")),(0,i.kt)("h2",{id:"libraries"},"Libraries"),(0,i.kt)("h3",{id:"polkadot-js-api"},"Polkadot-JS API"),(0,i.kt)("p",null,"The Polkadot-JS API provides various utility functions that are used across all projects in the\n",(0,i.kt)("inlineCode",{parentName:"p"},"@polkadot")," namespace and is split into a number of internal utility packages. The documentation and\nusage instructions are provided at ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/"},"Polkadot-JS API Documentation"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring"},"@polkadot/keyring")," This allows you to create and load\naccounts in JavaScript. It is helpful for creating wallets or any application that will require\nthe user to write to chain. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/create"},"Examples"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/install#other-dependencies"},"@polkadot/util")," Utility\nfunctions like checking if a string is hex-encoded."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/util-crypto/"},"@polkadot/util-crypto")," Useful cryptographic utilities\nfor developing with Polkadot.")),(0,i.kt)("h3",{id:"alternative-libraries"},"Alternative Libraries"),(0,i.kt)("p",null,"The following libraries/SDKs allow for interfacing with a Substrate node in other languages:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Library by Polkascan")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go Library by Centrifuge")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/strategyobject/substrate-client-java"},"Java Library by StrategyObject")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-iOS"},"Fearless Utils iOS Swift SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nova-wallet/substrate-sdk-ios"},"Nova Wallet iOS/Swift Substrate SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-Android"},"Kotlin SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/leonardocustodio/polkadart"},"Dart/Flutter Library"))),(0,i.kt)("h3",{id:"cli-tools"},"CLI Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/api-cli"},"@polkadot/api-cli")," Command\nline interface for the polkadot API. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/api/start"},"Documentation"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/monitor-rpc"},"@polkadot/monitor-rpc")," An\nRPC monitor for Polkadot. See the RPC tools below for additional information."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/signer-cli"},"@polkadot/signer-cli")," A\nTool to construct, sign, and broadcast transactions. Signing can be done offline."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"Polkadot API Cpp")," - A \u0421++ API for Polkadot, can\nbuild ",(0,i.kt)("inlineCode",{parentName:"li"},"clip"),", a command line tool."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey")," - Command line utility\nfor generating and inspecting key pairs.")),(0,i.kt)("h3",{id:"wasm"},"WASM"),(0,i.kt)("p",null,"WebAssembly related tools and projects."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/ink/"},"ink!")," - An eDSL to write WebAssembly based smart contracts\nusing the Rust programming language."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/parity-wasm"},"parity-wasm")," - Low-level WebAssembly format library."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasm-utils"},"wasm-utils")," - Collection of WebAssembly utilities used\nin pwasm-ethereum and substrate contract development."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasmi"},"wasmi")," - A WebAssembly interpreter conceived as a component\nof parity-ethereum (Ethereum-like contracts in Wasm) and Substrate.")),(0,i.kt)("h3",{id:"rpc-and-api-tools"},"RPC and API Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/api/tree/master/packages/rpc-provider"},"@polkadot/api/rpc-provider"),"\nDemonstrates how the JS tools interact with the node over RPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/substrate/rpc"},"RPC documentation")," - Documentation of Substrate RPC\nmethods."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/polkadot_api_server"},"Polkadot API Server by SimplyVC")," - A wrapper\naround the Polkadot API which makes it easier to make Polkadot API calls from any programming\nlanguage."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/substrate-api-rpc"},"Go: Subscan API")," - Go API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++ Polkadot API")," - \u0421++ API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SubstrateGaming/Substrate.NET.API"},".NET Polkadot/Substrate API")," -\nCore Framework for Substrate in .NET and connect to nodes."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain"},".NET Toolchain Polkadot/Substrate API")," -\nToolchain to generate Polkadot/Substrate API & Service Layer for .NET."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".NET Polkadot API")," - Polkadot Substrate API\nfor .NET."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Polkadot API")," - Polkadot library for\nPython."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client/"},"GSRPC")," - Substrate RPC client in Go,\na.k.a. GSRPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar")," - An HTTP wrapper for\nSubstrate, abstracting some complex RPC calls into simple REST calls."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-subxt"},"Subxt")," - A Rust library to submit extrinsics to a\nSubstrate node via RPC.")),(0,i.kt)("h3",{id:"game-engine-sdk"},"GAME ENGINE SDK"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/PolkadotPlay/Polkadot.Unity.SDK"},"Polkadot SDK for Unity")," - A powerful toolkit\nthat integrates substrate seamless into Unity projects. (",(0,i.kt)("a",{parentName:"li",href:"https://assetstore.unity.com/packages/decentralization/infrastructure/polkadot-sdk-for-unity-273535"},"AssetStore"),", ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/PolkadotPlay/Polkadot.Unity.SDK/wiki"},"wiki"),").")),(0,i.kt)("h3",{id:"scale-codec"},"SCALE Codec"),(0,i.kt)("p",null,"The SCALE (Simple Concatenated Aggregate Little-Endian) Codec is a lightweight, efficient, binary\nserialization and deserialization codec."),(0,i.kt)("p",null,"It is designed for high-performance, copy-free encoding and decoding of data in resource-constrained\nexecution contexts, such as the Substrate runtime. It is not self-describing in any way and assumes\nthe decoding context has all type knowledge about the encoded data."),(0,i.kt)("p",null,"It is used in almost all communication to/from Substrate nodes, so implementations in different\nlanguages exist:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/awesome-substrate#scale-codec"},"Substrate Awesome"),"\nmaintains a list of SCALE codex implementations.")),(0,i.kt)("h2",{id:"data-crawling-and-conversion"},"Data Crawling and Conversion"),(0,i.kt)("p",null,"The following tools help you extract and structure data from a Substrate node."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-archive"},"Parity's Substrate Archive")," - Can be run\nalongside a Substrate node to archive all blocks, state, and extrinsic data into PostgreSQL\ndatabase."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/squid-archive-setup"},"Subsquid Archives")," - Generate a GraphQL database\nfrom a Substrate chain's data with rich filtering and querying capabilities. The data (events,\nextrinsics, blocks) for most parachains is readily available though public archive GraphQL\nendpoints, kept in\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/archive-registry/blob/main/archives.json"},"Squid Archive Registry")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/TheGoldenEye/polka-store"},"Polka-store")," - A tool which scans a Substrate chain\nand stores balance-relevant transactions in an SQLite database."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/playzero/substrate-graph"},"Substrate-graph")," - A compact indexer for Substrate\nbased nodes providing a GraphQL interface.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/cda87995.91fb2662.js b/assets/js/cda87995.91fb2662.js deleted file mode 100644 index 8e2caca36955..000000000000 --- a/assets/js/cda87995.91fb2662.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3933],{3905:(t,e,a)=>{a.d(e,{Zo:()=>u,kt:()=>m});var o=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,o)}return a}function n(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var s=o.createContext({}),p=function(t){var e=o.useContext(s),a=e;return t&&(a="function"==typeof t?t(e):n(n({},e),t)),a},u=function(t){var e=p(t.components);return o.createElement(s.Provider,{value:e},t.children)},c="mdxType",h={inlineCode:"code",wrapper:function(t){var e=t.children;return o.createElement(o.Fragment,{},e)}},d=o.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,s=t.parentName,u=l(t,["components","mdxType","originalType","parentName"]),c=p(a),d=r,m=c["".concat(s,".").concat(d)]||c[d]||h[d]||i;return a?o.createElement(m,n(n({ref:e},u),{},{components:a})):o.createElement(m,n({ref:e},u))}));function m(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,n=new Array(i);n[0]=d;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l[c]="string"==typeof t?t:r,n[1]=l;for(var p=2;p{a.r(e),a.d(e,{assets:()=>u,contentTitle:()=>s,default:()=>m,frontMatter:()=>l,metadata:()=>p,toc:()=>c});var o=a(87462),r=a(63366),i=(a(67294),a(3905)),n=["components"],l={id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},s=void 0,p={unversionedId:"build/build-tools-index",id:"build/build-tools-index",title:"Tool Index",description:"Reference point for a list of tools to support your development.",source:"@site/../docs/build/build-tools-index.md",sourceDirName:"build",slug:"/build-tools-index",permalink:"/docs/build-tools-index",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/build/build-tools-index.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1712558849,formattedLastUpdatedAt:"Apr 8, 2024",frontMatter:{id:"build-tools-index",title:"Tool Index",sidebar_label:"Tool Index",description:"Reference point for a list of tools to support your development.",keywords:["tools","clients","libraries","explorers","monitor","data","SCALE"],slug:"../build-tools-index"},sidebar:"docs",previous:{title:"Development Networks",permalink:"/docs/build-network-overview"},next:{title:"Explorer, Data, & Indexing Tools",permalink:"/docs/build-data"}},u={},c=[{value:"Wallets",id:"wallets",level:2},{value:"Block Explorers",id:"block-explorers",level:2},{value:"Blockchain Analytics",id:"blockchain-analytics",level:2},{value:"Network Monitoring & Reporting",id:"network-monitoring--reporting",level:2},{value:"Clients",id:"clients",level:2},{value:"Tools",id:"tools",level:2},{value:"IDEs",id:"ides",level:2},{value:"UI",id:"ui",level:2},{value:"Libraries",id:"libraries",level:2},{value:"Polkadot-JS API",id:"polkadot-js-api",level:3},{value:"Alternative Libraries",id:"alternative-libraries",level:3},{value:"CLI Tools",id:"cli-tools",level:3},{value:"WASM",id:"wasm",level:3},{value:"RPC and API Tools",id:"rpc-and-api-tools",level:3},{value:"SCALE Codec",id:"scale-codec",level:3},{value:"Data Crawling and Conversion",id:"data-crawling-and-conversion",level:2}],h={toc:c},d="wrapper";function m(t){var e=t.components,a=(0,r.Z)(t,n);return(0,i.kt)(d,(0,o.Z)({},h,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Here, we provide a list of tools available for your development needs. They are sorted by context.\nIf you're actively maintaining a tool that might be useful to other Polkadot, Kusama or Substrate\ndevelopers, feel free to ",(0,i.kt)("a",{parentName:"p",href:"/docs/contributing"},"add it in"),"."),(0,i.kt)("h2",{id:"wallets"},"Wallets"),(0,i.kt)("p",null,"Please see the ",(0,i.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions"},"Wallets")," page."),(0,i.kt)("h2",{id:"block-explorers"},"Block Explorers"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot-JS Apps Explorer")," - Polkadot dashboard block\nexplorer. Supports dozens of other networks, including Kusama, Westend, and other remote or local\nendpoints. ",(0,i.kt)("a",{parentName:"li",href:"https://cloudflare-ipfs.com/ipns/dotapps.io"},"Access via IPFS")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://subscan.io"},"Subscan")," - Blockchain explorer for Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/subscan-essentials"},"Repo"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://3xpl.com/polkadot"},"3xpl.com")," - Fastest ad-free universal block explorer and JSON API with\nPolkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://blockchair.com/polkadot"},"Blockchair.com")," - Universal blockchain explorer and search\nengine with Polkadot support."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.statescan.io/"},"Statescan.io")," - Polkadot & Kusama Blockchain explorer.")),(0,i.kt)("h2",{id:"blockchain-analytics"},"Blockchain Analytics"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://app.web3go.xyz/#/"},"Web3go")," - An open platform for everyone to play with, curate and\nvisualize multi-blockchain data"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkawatch.app/"},"Polkawatch")," - Polkadot Decentralization Analytics")),(0,i.kt)("h2",{id:"network-monitoring--reporting"},"Network Monitoring & Reporting"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://telemetry.polkadot.io/"},"Polkadot Telemetry Service")," - Network information including what\nnodes are running the chain, what software versions they are running, sync status, and location."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot"},"Polkabot")," - Polkadot network monitoring and reporting using Matrix\n(Riot / Element) chat. Users may create custom bot plugins.\n",(0,i.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/polkabot-a3dba18c20c8"},"Blogpost"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Ryabina-io/substratebot"},"Ryabina's Telegram Bot")," - A Telegram bot for\nmonitoring on-chain events of Substrate chains.\n",(0,i.kt)("a",{parentName:"li",href:"https://gitlab.com/Polkabot/polkabot"},"GitHub Repository")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkastats.io/"},"PolkaStats")," - Polkadot network statistics (includes Kusama). Shows\nnetwork information and staking details from validators and intentions.\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/Colm3na/polkastats-v2/"},"GitHub Repository"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/panic"},"Panic")," - A node monitoring and alert server for validators."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/open-web3-stack/guardian"},"OpenWeb3/Guardian")," - A CLI tool and JS library to\nmonitor on chain states and events."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sodazone/ocelloids"},"Ocelloids SDK")," - Typescript SDK for multi-chain monitoring\nthat supports domain-specific logic for different pallets."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ArthurHoeke/cyclops/"},"Cyclops Dashboard")," - a validator dashboard application\nthat helps Polkadot network validators keep track of all their validators, their staking rewards,\nand performance.")),(0,i.kt)("h2",{id:"clients"},"Clients"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/tree/master/polkadot"},"Polkadot")," - The original Rust\nimplementation of the Polkadot Host."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/kagome"},"Kagome")," - A C++ Polkadot implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu"},"Soramitsu"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," - A Go implementation of the Polkadot Host\ndeveloped by ",(0,i.kt)("a",{parentName:"li",href:"https://chainsafe.io/"},"ChainSafe Systems"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/txwrapper"},"TX Wrapper")," - Helper functions for offline transaction\ngeneration.")),(0,i.kt)("h2",{id:"tools"},"Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate"},"Substrate")," - Blockchain\ndevelopment platform written in Rust. The Rust version of the Polkadot Host is being built with\nSubstrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/"},"Substrate Docs")," - Comprehensive documentation and tutorials for\nbuilding a blockchain using Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/vscode-substrate"},"Substrate VSCode plugin"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate Debug Kit")," - A collection of debug\ntools and libraries around substrate chains. Includes tools to calculate NPoS elections offline,\ndisk usage monitoring, test templates against chain state and other pallet-specific helper."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://crates.io/crates/diener"},"Diener")," - A tool for easy changing of Polkadot or Substrate\ndependency versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/shawntabrizi/polkadot-launch"},"Polkadot Launch")," - A tool to easily launch\ncustom local parachain-enabled Polkadot versions."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/halva-suite/halva"},"Halva")," - A Truffle-inspired local development environment\nfor Substrate."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork-off Substrate")," - Copies the state of an\nexisting chain into your local version and lets you further experiment on it."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://www.chevdor.com/tags/srtool/"},"srtool")," - A tool for verifying runtime versions against\non-chain proposal hashes."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nikvolf/sub-bench"},"sub-bench")," - A tool to spam your node with transactions for\nthe sake of benchmarking."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/danforbes/substrate-devhub-utils"},"substrate-devhub-utils")," - A set of\nJavaScript utilities making life with Substrate a little easier."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," - A tool to benchmark Substrate by flooding it\nwith requests."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Apillon"},"Apillon")," - A Web3 development platform with a complete toolbox and\naccess to Polkadot\u2019s technology stack.")),(0,i.kt)("h2",{id:"ides"},"IDEs"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://chainide.gitbook.io/chainide-english-1/ethereum-ide-1/13.-astar-ide"},"Astar IDE")," by\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/"},"Chain IDE")," is a tool for lightning-speed smart contracts and dApp\ndevelopment for ",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-wasm?language=en"},"Wasm")," and\n",(0,i.kt)("a",{parentName:"li",href:"https://chainide.com/s/createTempProject/astar-evm?language=en"},"EVM"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/sandoxio/sandox"},"Sandox IDE")," is an integrated development environment (IDE)\nwith tools for building in the Polkadot environment. Currently helpful for creating applications\nin JS.")),(0,i.kt)("h2",{id:"ui"},"UI"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/Swader/polkadash"},"Polkadash")," - VueJS-based starter kit for custom user\ninterfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/apps"},"Polkadot JS Apps UI")," - Repository of the\n",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps"},"polkadot.js.org/apps")," UI."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/substrate-front-end-template"},"Substrate Front-end Template")," -\nReactJS-based starter UI for custom user interfaces for Substrate chains."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/extension"},"Polkadot JS Browser Extension")," - Key management in a\nChrome extension."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot-ui.info/"},"Polkadot UI")," - A library and platform for developing and publishing\nassets for Polkadot dapps.")),(0,i.kt)("h2",{id:"libraries"},"Libraries"),(0,i.kt)("h3",{id:"polkadot-js-api"},"Polkadot-JS API"),(0,i.kt)("p",null,"The Polkadot-JS API provides various utility functions that are used across all projects in the\n",(0,i.kt)("inlineCode",{parentName:"p"},"@polkadot")," namespace and is split into a number of internal utility packages. The documentation and\nusage instructions are provided at ",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/docs/"},"Polkadot-JS API Documentation"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring"},"@polkadot/keyring")," This allows you to create and load\naccounts in JavaScript. It is helpful for creating wallets or any application that will require\nthe user to write to chain. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/create"},"Examples"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/keyring/start/install#other-dependencies"},"@polkadot/util")," Utility\nfunctions like checking if a string is hex-encoded."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/util-crypto/"},"@polkadot/util-crypto")," Useful cryptographic utilities\nfor developing with Polkadot.")),(0,i.kt)("h3",{id:"alternative-libraries"},"Alternative Libraries"),(0,i.kt)("p",null,"The following libraries/SDKs allow for interfacing with a Substrate node in other languages:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Library by Polkascan")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go Library by Centrifuge")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/strategyobject/substrate-client-java"},"Java Library by StrategyObject")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-iOS"},"Fearless Utils iOS Swift SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/nova-wallet/substrate-sdk-ios"},"Nova Wallet iOS/Swift Substrate SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/soramitsu/fearless-utils-Android"},"Kotlin SDK")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/leonardocustodio/polkadart"},"Dart/Flutter Library"))),(0,i.kt)("h3",{id:"cli-tools"},"CLI Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/api-cli"},"@polkadot/api-cli")," Command\nline interface for the polkadot API. ",(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/api/start"},"Documentation"),"."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/monitor-rpc"},"@polkadot/monitor-rpc")," An\nRPC monitor for Polkadot. See the RPC tools below for additional information."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/tools/tree/master/packages/signer-cli"},"@polkadot/signer-cli")," A\nTool to construct, sign, and broadcast transactions. Signing can be done offline."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"Polkadot API Cpp")," - A \u0421++ API for Polkadot, can\nbuild ",(0,i.kt)("inlineCode",{parentName:"li"},"clip"),", a command line tool."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://docs.substrate.io/reference/command-line-tools/subkey/"},"Subkey")," - Command line utility\nfor generating and inspecting key pairs.")),(0,i.kt)("h3",{id:"wasm"},"WASM"),(0,i.kt)("p",null,"WebAssembly related tools and projects."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/ink/"},"ink!")," - An eDSL to write WebAssembly based smart contracts\nusing the Rust programming language."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/parity-wasm"},"parity-wasm")," - Low-level WebAssembly format library."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasm-utils"},"wasm-utils")," - Collection of WebAssembly utilities used\nin pwasm-ethereum and substrate contract development."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/wasmi"},"wasmi")," - A WebAssembly interpreter conceived as a component\nof parity-ethereum (Ethereum-like contracts in Wasm) and Substrate.")),(0,i.kt)("h3",{id:"rpc-and-api-tools"},"RPC and API Tools"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkadot-js/api/tree/master/packages/rpc-provider"},"@polkadot/api/rpc-provider"),"\nDemonstrates how the JS tools interact with the node over RPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://polkadot.js.org/docs/substrate/rpc"},"RPC documentation")," - Documentation of Substrate RPC\nmethods."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/SimplyVC/polkadot_api_server"},"Polkadot API Server by SimplyVC")," - A wrapper\naround the Polkadot API which makes it easier to make Polkadot API calls from any programming\nlanguage."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/itering/substrate-api-rpc"},"Go: Subscan API")," - Go API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++ Polkadot API")," - \u0421++ API for Polkadot."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/ajuna-network/Ajuna.SDK"},".NET Toolchain for Polkadot/Substrate API")," -\nToolchain to generate Polkadot API & Service Layer for .NET (usable in Unity)."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".NET Polkadot API")," - Polkadot Substrate API\nfor .NET."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/polkascan/py-substrate-interface"},"Python Polkadot API")," - Polkadot library for\nPython."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/centrifuge/go-substrate-rpc-client/"},"GSRPC")," - Substrate RPC client in Go,\na.k.a. GSRPC."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar")," - An HTTP wrapper for\nSubstrate, abstracting some complex RPC calls into simple REST calls."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-subxt"},"Subxt")," - A Rust library to submit extrinsics to a\nSubstrate node via RPC.")),(0,i.kt)("h3",{id:"scale-codec"},"SCALE Codec"),(0,i.kt)("p",null,"The SCALE (Simple Concatenated Aggregate Little-Endian) Codec is a lightweight, efficient, binary\nserialization and deserialization codec."),(0,i.kt)("p",null,"It is designed for high-performance, copy-free encoding and decoding of data in resource-constrained\nexecution contexts, such as the Substrate runtime. It is not self-describing in any way and assumes\nthe decoding context has all type knowledge about the encoded data."),(0,i.kt)("p",null,"It is used in almost all communication to/from Substrate nodes, so implementations in different\nlanguages exist:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/substrate-developer-hub/awesome-substrate#scale-codec"},"Substrate Awesome"),"\nmaintains a list of SCALE codex implementations.")),(0,i.kt)("h2",{id:"data-crawling-and-conversion"},"Data Crawling and Conversion"),(0,i.kt)("p",null,"The following tools help you extract and structure data from a Substrate node."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate-archive"},"Parity's Substrate Archive")," - Can be run\nalongside a Substrate node to archive all blocks, state, and extrinsic data into PostgreSQL\ndatabase."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/squid-archive-setup"},"Subsquid Archives")," - Generate a GraphQL database\nfrom a Substrate chain's data with rich filtering and querying capabilities. The data (events,\nextrinsics, blocks) for most parachains is readily available though public archive GraphQL\nendpoints, kept in\n",(0,i.kt)("a",{parentName:"li",href:"https://github.com/subsquid/archive-registry/blob/main/archives.json"},"Squid Archive Registry")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/TheGoldenEye/polka-store"},"Polka-store")," - A tool which scans a Substrate chain\nand stores balance-relevant transactions in an SQLite database."),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("a",{parentName:"li",href:"https://github.com/playzero/substrate-graph"},"Substrate-graph")," - A compact indexer for Substrate\nbased nodes providing a GraphQL interface.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/db0b42b0.346ff64c.js b/assets/js/db0b42b0.106f625e.js similarity index 74% rename from assets/js/db0b42b0.346ff64c.js rename to assets/js/db0b42b0.106f625e.js index bd9fad246be6..63f64c1be39a 100644 --- a/assets/js/db0b42b0.346ff64c.js +++ b/assets/js/db0b42b0.106f625e.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2609],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,s(s({ref:t},p),{},{components:r})):n.createElement(m,s({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,s=new Array(a);s[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:o,s[1]=i;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(87462),o=r(63366),a=(r(67294),r(3905)),s=["components"],i={id:"learn-sassafras",title:"Polkadot Block Production: SASSAFRAS",sidebar_label:"SASSAFRAS",description:"The Consensus Mechanism of Polkadot.",keywords:["consensus","proof of stake","nominated proof of stake","hybrid consensus","block production","sassafras","babe"],slug:"../learn-sassafras"},c=void 0,l={unversionedId:"learn/learn-sassafras",id:"learn/learn-sassafras",title:"Polkadot Block Production: SASSAFRAS",description:"The Consensus Mechanism of Polkadot.",source:"@site/../docs/learn/learn-sassafras.md",sourceDirName:"learn",slug:"/learn-sassafras",permalink:"/docs/learn-sassafras",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-sassafras.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1695800641,formattedLastUpdatedAt:"Sep 27, 2023",frontMatter:{id:"learn-sassafras",title:"Polkadot Block Production: SASSAFRAS",sidebar_label:"SASSAFRAS",description:"The Consensus Mechanism of Polkadot.",keywords:["consensus","proof of stake","nominated proof of stake","hybrid consensus","block production","sassafras","babe"],slug:"../learn-sassafras"},sidebar:"docs",previous:{title:"Elastic Scaling",permalink:"/docs/learn-elastic-scaling"},next:{title:"Archive",permalink:"/docs/learn-archive"}},p={},u=[{value:"Resources",id:"resources",level:2}],d={toc:u},f="wrapper";function m(e){var t=e.components,r=(0,o.Z)(e,s);return(0,a.kt)(f,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"SASSAFRAS (Semi Anonymous Sortition of Staked Assignees For Fixed-time Rhythmic Assignment of Slots)\n(aka SASSY BABE or BADASS BABE), is an extension of BABE and acts as a constant-time block\nproduction protocol. This approach tries to address the shortcomings of\n",(0,a.kt)("a",{parentName:"p",href:"/docs/learn-consensus#block-production-babe"},"BABE")," by ensuring that exactly one block is produced\nwith time-constant intervals. The protocol utilizes zk-SNARKs to construct a\nring-",(0,a.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"VRF")," and is a work in progress."),(0,a.kt)("p",null,"This page will be updated as progress ensues."),(0,a.kt)("h2",{id:"resources"},"Resources"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://research.web3.foundation/Polkadot/protocols/block-production/SASSAFRAS"},"Web3 Foundation Research page"),"\nabout SASSAFRAS")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2609],{3905:(e,t,r)=>{r.d(t,{Zo:()=>p,kt:()=>m});var n=r(67294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function s(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),l=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},p=function(e){var t=l(e.components);return n.createElement(c.Provider,{value:t},e.children)},u="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),u=l(r),f=o,m=u["".concat(c,".").concat(f)]||u[f]||d[f]||a;return r?n.createElement(m,s(s({ref:t},p),{},{components:r})):n.createElement(m,s({ref:t},p))}));function m(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,s=new Array(a);s[0]=f;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i[u]="string"==typeof e?e:o,s[1]=i;for(var l=2;l{r.r(t),r.d(t,{assets:()=>p,contentTitle:()=>c,default:()=>m,frontMatter:()=>i,metadata:()=>l,toc:()=>u});var n=r(87462),o=r(63366),a=(r(67294),r(3905)),s=["components"],i={id:"learn-sassafras",title:"Polkadot Block Production: SASSAFRAS",sidebar_label:"SASSAFRAS",description:"The Consensus Mechanism of Polkadot.",keywords:["consensus","proof of stake","nominated proof of stake","hybrid consensus","block production","sassafras","babe"],slug:"../learn-sassafras"},c=void 0,l={unversionedId:"learn/learn-sassafras",id:"learn/learn-sassafras",title:"Polkadot Block Production: SASSAFRAS",description:"The Consensus Mechanism of Polkadot.",source:"@site/../docs/learn/learn-sassafras.md",sourceDirName:"learn",slug:"/learn-sassafras",permalink:"/docs/learn-sassafras",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-sassafras.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1695800641,formattedLastUpdatedAt:"Sep 27, 2023",frontMatter:{id:"learn-sassafras",title:"Polkadot Block Production: SASSAFRAS",sidebar_label:"SASSAFRAS",description:"The Consensus Mechanism of Polkadot.",keywords:["consensus","proof of stake","nominated proof of stake","hybrid consensus","block production","sassafras","babe"],slug:"../learn-sassafras"},sidebar:"docs",previous:{title:"Elastic Scaling",permalink:"/docs/learn-elastic-scaling"},next:{title:"JAM Chain",permalink:"/docs/learn-jam-chain"}},p={},u=[{value:"Resources",id:"resources",level:2}],d={toc:u},f="wrapper";function m(e){var t=e.components,r=(0,o.Z)(e,s);return(0,a.kt)(f,(0,n.Z)({},d,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("p",null,"SASSAFRAS (Semi Anonymous Sortition of Staked Assignees For Fixed-time Rhythmic Assignment of Slots)\n(aka SASSY BABE or BADASS BABE), is an extension of BABE and acts as a constant-time block\nproduction protocol. This approach tries to address the shortcomings of\n",(0,a.kt)("a",{parentName:"p",href:"/docs/learn-consensus#block-production-babe"},"BABE")," by ensuring that exactly one block is produced\nwith time-constant intervals. The protocol utilizes zk-SNARKs to construct a\nring-",(0,a.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"VRF")," and is a work in progress."),(0,a.kt)("p",null,"This page will be updated as progress ensues."),(0,a.kt)("h2",{id:"resources"},"Resources"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("a",{parentName:"li",href:"https://research.web3.foundation/Polkadot/protocols/block-production/SASSAFRAS"},"Web3 Foundation Research page"),"\nabout SASSAFRAS")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.0e16765f.js b/assets/js/main.0e16765f.js deleted file mode 100644 index 9b275068192f..000000000000 --- a/assets/js/main.0e16765f.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.0e16765f.js.LICENSE.txt */ -(self.webpackChunk=self.webpackChunk||[]).push([[179],{20830:(e,n,t)=>{"use strict";t.d(n,{W:()=>a});var r=t(67294);function a(){return r.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},r.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},11205:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,n=0,t={},r={util:{encode:function e(n){return n instanceof a?new a(n.type,e(n.content),n.alias):Array.isArray(n)?n.map(e):n.replace(/&/g,"&").replace(/=d.reach);E+=w.value.length,w=w.next){var _=w.value;if(n.length>e.length)return;if(!(_ instanceof a)){var S,C=1;if(v){if(!(S=o(k,E,e,b))||S.index>=e.length)break;var T=S.index,P=S.index+S[0].length,A=E;for(A+=w.value.length;T>=A;)A+=(w=w.next).value.length;if(E=A-=w.value.length,w.value instanceof a)continue;for(var O=w;O!==n.tail&&(Ad.reach&&(d.reach=R);var j=w.prev;if(N&&(j=c(n,j,N),E+=N.length),l(n,j,C),w=c(n,j,new a(f,g?r.tokenize(L,g):L,y,L)),I&&c(n,w,I),C>1){var M={cause:f+","+m,reach:R};i(e,n,t,w.prev,E,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},n={value:null,prev:e,next:null};e.next=n,this.head=e,this.tail=n,this.length=0}function c(e,n,t){var r=n.next,a={value:t,prev:n,next:r};return n.next=a,r.prev=a,e.length++,a}function l(e,n,t){for(var r=n.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,n){var t={};t["language-"+n]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[n]},t.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:t}};r["language-"+n]={pattern:/[\s\S]+/,inside:a.languages[n]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,n){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[n,"language-"+n],inside:a.languages[n]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var n="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",t={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:t,environment:{pattern:RegExp("\\$"+n),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+n),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+n),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:t}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+n),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},t.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var n=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,t=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return n.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return n.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:n,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return t}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var n=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+n.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+n.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+n.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:n,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var t=e.languages.markup;t&&(t.tag.addInlined("style","css"),t.tag.addAttribute("style","css"))}(a),function(e){var n,t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:n={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+t.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[t,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=n,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var n=/#(?!\{).+/,t={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:n,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:t}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:n,interpolation:t}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:t}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var n=/[*&][^\s[\]{},]+/,t=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+t.source+"(?:[ \t]+"+n.source+")?|"+n.source+"(?:[ \t]+"+t.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,n){n=(n||"").replace(/m/g,"")+"m";var t=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(t,n)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:t,important:n,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var n=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function t(e){return e=e.replace(//g,(function(){return n})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:t(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:t(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:t(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:t(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(n){["url","bold","italic","strike","code-snippet"].forEach((function(t){n!==t&&(e.languages.markdown[n].inside.content.inside[t]=e.languages.markdown[t])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(n){if(n&&"string"!=typeof n)for(var t=0,r=n.length;t",quot:'"'},c=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var n=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),t=0;t0)){var s=f(/^\{$/,/^\}$/);if(-1===s)continue;for(var c=t;c=0&&p(l,"variable-input")}}}}function u(e){return n[t+e]}function d(e,n){n=n||0;for(var t=0;t?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var n=e.languages.javascript["template-string"],t=n.pattern.source,r=n.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(n,r){if(e.languages[n])return{pattern:RegExp("((?:"+r+")\\s*)"+t),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:n}}}}function s(e,n){return"___"+n.toUpperCase()+"_"+e+"___"}function c(n,t,r){var a={code:n,grammar:t,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function l(n){var t={};t["interpolation-punctuation"]=a;var o=e.tokenize(n,t);if(3===o.length){var i=[1,1];i.push.apply(i,c(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,n)}function u(n,t,r){var a=e.tokenize(n,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=c(a.map((function(e){if("string"==typeof e)return e;for(var t,a=e.content;-1!==n.indexOf(t=s(i++,r)););return u[t]=a,t})).join(""),t,r),f=Object.keys(u);return i=0,function e(n){for(var t=0;t=f.length)return;var r=n[t];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,s=o.indexOf(a);if(-1!==s){++i;var c=o.substring(0,s),d=l(u[a]),p=o.substring(s+a.length),m=[];if(c&&m.push(c),m.push(d),p){var h=[p];e(h),m.push.apply(m,h)}"string"==typeof r?(n.splice.apply(n,[t,1].concat(m)),t+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,n)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),n].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(n){n.language in d&&function n(t){for(var r=0,a=t.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var n=e.languages.extend("typescript",{});delete n["class-name"],e.languages.typescript["class-name"].inside=n,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:n}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function n(e,n){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),n)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:n(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:n(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:n(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var t=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,n){return e=e.replace(//g,(function(){return t})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,n)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",n),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=n.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},s=function(n){for(var t=[],r=0;r0&&t[t.length-1].tagName===i(a.content[0].content[1])&&t.pop():"/>"===a.content[a.content.length-1].content||t.push({tagName:i(a.content[0].content[1]),openedBraces:0}):t.length>0&&"punctuation"===a.type&&"{"===a.content?t[t.length-1].openedBraces++:t.length>0&&t[t.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?t[t.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&t.length>0&&0===t[t.length-1].openedBraces){var c=i(a);r0&&("string"==typeof n[r-1]||"plain-text"===n[r-1].type)&&(c=i(n[r-1])+c,n.splice(r-1,1),r--),n[r]=new e.Token("plain-text",c,null,c)}a.content&&"string"!=typeof a.content&&s(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var n={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(n).forEach((function(t){var r=n[t],a=[];/^\w+$/.test(t)||a.push(/\w+/.exec(t)[0]),"diff"===t&&a.push("bold"),e.languages.diff[t]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(t)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:n})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function n(e,n){return"___"+e.toUpperCase()+n+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(t,r,a,o){if(t.language===r){var i=t.tokenStack=[];t.code=t.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==t.code.indexOf(a=n(r,s));)++s;return i[s]=e,a})),t.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(t,r){if(t.language===r&&t.tokenStack){t.grammar=e.languages[r];var a=0,o=Object.keys(t.tokenStack);!function i(s){for(var c=0;c=o.length);c++){var l=s[c];if("string"==typeof l||l.content&&"string"==typeof l.content){var u=o[a],d=t.tokenStack[u],f="string"==typeof l?l:l.content,p=n(r,u),m=f.indexOf(p);if(m>-1){++a;var h=f.substring(0,m),g=new e.Token(r,e.tokenize(d,t.grammar),"language-"+r,d),b=f.substring(m+p.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof l?s.splice.apply(s,[c,1].concat(v)):l.content=v}}else l.content&&i(l.content)}return s}(t.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(n){e.languages["markup-templating"].buildPlaceholders(n,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(n){e.languages["markup-templating"].tokenizePlaceholders(n,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var n=/\$[-\w]+|#\{\$[-\w]+\}/,t=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:n,operator:t}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:n,operator:t,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var n={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},t={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:n,number:t,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:n,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:t,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var n=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",n),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var t=e.languages.tsx.tag;t.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+t.pattern.source+")",t.pattern.flags),t.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},98934:(e,n,t)=>{"use strict";t.d(n,{_:()=>a,t:()=>o});var r=t(67294),a=r.createContext(!1);function o(e){var n=e.children,t=(0,r.useState)(!1),o=t[0],i=t[1];return(0,r.useEffect)((function(){i(!0)}),[]),r.createElement(a.Provider,{value:o},n)}},94926:(e,n,t)=>{"use strict";var r=t(67294),a=t(73935),o=t(73727),i=t(70405),s=t(10412);const c=[t(32497),t(3310),t(18320),t(39604),t(32104),t(70378)];var l=t(69204),u=t(16550),d=t(18790);function f(e){var n=e.children;return r.createElement(r.Fragment,null,n)}var p=t(87462),m=t(35742),h=t(52263),g=t(44996),b=t(86668),v=t(10833),y=t(94711),x=t(19727),k=t(43320),w=t(18780),E=t(90197);function _(){var e=(0,h.Z)().i18n,n=e.defaultLocale,t=e.localeConfigs,a=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((function(e){var n=e[0],t=e[1].htmlLang;return r.createElement("link",{key:n,rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:t})})),r.createElement("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}))}function S(e){var n=e.permalink,t=(0,h.Z)().siteConfig.url,a=function(){var e=(0,h.Z)().siteConfig,n=e.url,t=e.baseUrl,r=e.trailingSlash,a=(0,u.TH)().pathname;return n+(0,w.applyTrailingSlash)((0,g.Z)(a),{trailingSlash:r,baseUrl:t})}(),o=n?""+t+n:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){var e=(0,h.Z)().i18n.currentLocale,n=(0,b.L)(),t=n.metadata,a=n.image;return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:x.h})),a&&r.createElement(v.d,{image:a}),r.createElement(S,null),r.createElement(_,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map((function(e,n){return r.createElement("meta",(0,p.Z)({key:n},e))}))))}var T=new Map;function P(e){if(T.has(e.pathname))return Object.assign({},e,{pathname:T.get(e.pathname)});if((0,d.f)(l.Z,e.pathname).some((function(e){return!0===e.route.exact})))return T.set(e.pathname,e.pathname),e;var n=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,n),Object.assign({},e,{pathname:n})}var A=t(98934),O=t(49633),L=t(94578);function N(e){for(var n=arguments.length,t=new Array(n>1?n-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/{"use strict";t.d(n,{_:()=>u,M:()=>d});var r=t(67294),a=t(8618);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"general/getting-started","docs":[{"id":"build/build-client-side","path":"/docs/build-client-side","sidebar":"docs"},{"id":"build/build-dapp","path":"/docs/build-dapp"},{"id":"build/build-data","path":"/docs/build-data","sidebar":"docs"},{"id":"build/build-guide","path":"/docs/build-guide","sidebar":"docs"},{"id":"build/build-hackathon","path":"/docs/build-hackathon","sidebar":"docs"},{"id":"build/build-hrmp-channels","path":"/docs/build-hrmp-channels","sidebar":"docs"},{"id":"build/build-index","path":"/docs/build-index"},{"id":"build/build-integrate-assets","path":"/docs/build-integrate-assets","sidebar":"docs"},{"id":"build/build-integration","path":"/docs/build-integration","sidebar":"docs"},{"id":"build/build-light-clients","path":"/docs/build-light-clients","sidebar":"docs"},{"id":"build/build-network-overview","path":"/docs/build-network-overview","sidebar":"docs"},{"id":"build/build-node-interaction","path":"/docs/build-node-interaction","sidebar":"docs"},{"id":"build/build-node-management","path":"/docs/build-node-management","sidebar":"docs"},{"id":"build/build-open-source","path":"/docs/build-open-source","sidebar":"docs"},{"id":"build/build-oracle","path":"/docs/build-oracle"},{"id":"build/build-parachains","path":"/docs/build-pdk","sidebar":"docs"},{"id":"build/build-protocol-info","path":"/docs/build-protocol-info","sidebar":"docs"},{"id":"build/build-smart-contracts","path":"/docs/build-smart-contracts","sidebar":"docs"},{"id":"build/build-storage","path":"/docs/build-storage"},{"id":"build/build-tools-index","path":"/docs/build-tools-index","sidebar":"docs"},{"id":"build/build-transaction-construction","path":"/docs/build-transaction-construction","sidebar":"docs"},{"id":"general/alpha-program","path":"/docs/alpha-program","sidebar":"docs"},{"id":"general/ambassadors","path":"/docs/ambassadors","sidebar":"docs"},{"id":"general/bug-bounty","path":"/docs/bug-bounty","sidebar":"docs"},{"id":"general/community","path":"/docs/community","sidebar":"docs"},{"id":"general/contributing","path":"/docs/contributing","sidebar":"docs"},{"id":"general/contributors","path":"/docs/contributors","sidebar":"docs"},{"id":"general/decentralized-futures","path":"/docs/decentralized-futures","sidebar":"docs"},{"id":"general/decentralized-voices","path":"/docs/decentralized-voices","sidebar":"docs"},{"id":"general/dev-heroes","path":"/docs/dev-heroes","sidebar":"docs"},{"id":"general/doc-thousand-contributors","path":"/docs/thousand-contributors","sidebar":"docs"},{"id":"general/doc-thousand-validators","path":"/docs/thousand-validators","sidebar":"docs"},{"id":"general/faq","path":"/docs/faq","sidebar":"docs"},{"id":"general/getting-started","path":"/docs/getting-started","sidebar":"docs"},{"id":"general/glossary","path":"/docs/glossary","sidebar":"docs"},{"id":"general/governance-apps","path":"/docs/governance-apps","sidebar":"docs"},{"id":"general/grants","path":"/docs/grants","sidebar":"docs"},{"id":"general/how-to-dyor","path":"/docs/how-to-dyor","sidebar":"docs"},{"id":"general/kusama/kusama-adversarial-cheatsheet","path":"/docs/kusama-adversarial-cheatsheet"},{"id":"general/kusama/kusama-bug-bounty","path":"/docs/kusama-bug-bounty"},{"id":"general/kusama/kusama-claims","path":"/docs/kusama-claims"},{"id":"general/kusama/kusama-coc","path":"/docs/kusama-coc"},{"id":"general/kusama/kusama-community","path":"/docs/kusama-community"},{"id":"general/kusama/kusama-getting-started","path":"/docs/kusama-getting-started"},{"id":"general/kusama/kusama-index","path":"/docs/kusama-index"},{"id":"general/kusama/kusama-parameters","path":"/docs/kusama-parameters"},{"id":"general/kusama/kusama-social-recovery","path":"/docs/kusama-social-recovery"},{"id":"general/kusama/kusama-timeline","path":"/docs/kusama-timeline"},{"id":"general/ledger","path":"/docs/ledger","sidebar":"docs"},{"id":"general/metadata","path":"/docs/metadata","sidebar":"docs"},{"id":"general/multisig-apps","path":"/docs/multisig-apps","sidebar":"docs"},{"id":"general/parachains-apps","path":"/docs/parachains-apps","sidebar":"docs"},{"id":"general/polkadot-direction","path":"/docs/polkadot-direction","sidebar":"docs"},{"id":"general/polkadot-v1","path":"/docs/polkadot-v1","sidebar":"docs"},{"id":"general/polkadot-vault","path":"/docs/polkadot-vault","sidebar":"docs"},{"id":"general/polkadotjs","path":"/docs/polkadotjs","sidebar":"docs"},{"id":"general/polkadotjs-ui","path":"/docs/polkadotjs-ui","sidebar":"docs"},{"id":"general/research","path":"/docs/research","sidebar":"docs"},{"id":"general/scams","path":"/docs/learn-scams","sidebar":"docs"},{"id":"general/staking-apps","path":"/docs/staking-apps","sidebar":"docs"},{"id":"general/staking-dashboard","path":"/docs/staking-dashboard","sidebar":"docs"},{"id":"general/start-building","path":"/docs/start-building","sidebar":"docs"},{"id":"general/transaction-attacks","path":"/docs/transaction-attacks","sidebar":"docs"},{"id":"general/wallets-and-extensions","path":"/docs/wallets-and-extensions","sidebar":"docs"},{"id":"general/web3-and-polkadot","path":"/docs/web3-and-polkadot","sidebar":"docs"},{"id":"learn/archive/learn-controller","path":"/docs/learn/learn-controller","sidebar":"docs"},{"id":"learn/archive/learn-governance","path":"/docs/learn/learn-governance","sidebar":"docs"},{"id":"learn/archive/learn-launch","path":"/docs/learn/learn-launch","sidebar":"docs"},{"id":"learn/archive/learn-redenomination","path":"/docs/learn/learn-redenomination","sidebar":"docs"},{"id":"learn/archive/learn-treasury","path":"/docs/learn/learn-treasury","sidebar":"docs"},{"id":"learn/learn-account-abstraction","path":"/docs/learn-account-abstraction","sidebar":"docs"},{"id":"learn/learn-account-advanced","path":"/docs/learn-account-advanced","sidebar":"docs"},{"id":"learn/learn-account-multisig","path":"/docs/learn-account-multisig","sidebar":"docs"},{"id":"learn/learn-accounts","path":"/docs/learn-accounts","sidebar":"docs"},{"id":"learn/learn-agile-coretime","path":"/docs/learn-agile-coretime","sidebar":"docs"},{"id":"learn/learn-architecture","path":"/docs/learn-architecture","sidebar":"docs"},{"id":"learn/learn-archive","path":"/docs/learn-archive","sidebar":"docs"},{"id":"learn/learn-asset-conversion-assethub","path":"/docs/learn-asset-conversion-assethub","sidebar":"docs"},{"id":"learn/learn-assets","path":"/docs/learn-assets","sidebar":"docs"},{"id":"learn/learn-async-backing","path":"/docs/learn-async-backing","sidebar":"docs"},{"id":"learn/learn-auction","path":"/docs/learn-auction","sidebar":"docs"},{"id":"learn/learn-bridge-hub","path":"/docs/learn-bridge-hub","sidebar":"docs"},{"id":"learn/learn-bridges","path":"/docs/learn-bridges","sidebar":"docs"},{"id":"learn/learn-collator","path":"/docs/learn-collator","sidebar":"docs"},{"id":"learn/learn-comparisons","path":"/docs/learn-comparisons","sidebar":"docs"},{"id":"learn/learn-comparisons-avalanche","path":"/docs/learn-comparisons-avalanche","sidebar":"docs"},{"id":"learn/learn-comparisons-cosmos","path":"/docs/learn-comparisons-cosmos","sidebar":"docs"},{"id":"learn/learn-comparisons-ethereum-2","path":"/docs/learn-comparisons-ethereum-2","sidebar":"docs"},{"id":"learn/learn-comparisons-kusama","path":"/docs/learn-comparisons-kusama","sidebar":"docs"},{"id":"learn/learn-comparisons-rollups","path":"/docs/learn-comparisons-rollups","sidebar":"docs"},{"id":"learn/learn-consensus","path":"/docs/learn-consensus","sidebar":"docs"},{"id":"learn/learn-crowdloans","path":"/docs/learn-crowdloans","sidebar":"docs"},{"id":"learn/learn-cryptography","path":"/docs/learn-cryptography","sidebar":"docs"},{"id":"learn/learn-DOT","path":"/docs/learn-DOT","sidebar":"docs"},{"id":"learn/learn-dot-ksm-bridge","path":"/docs/learn-dot-ksm-bridge","sidebar":"docs"},{"id":"learn/learn-elastic-scaling","path":"/docs/learn-elastic-scaling","sidebar":"docs"},{"id":"learn/learn-guides-accounts","path":"/docs/learn-guides-accounts","sidebar":"docs"},{"id":"learn/learn-guides-accounts-multisig","path":"/docs/learn-guides-accounts-multisig","sidebar":"docs"},{"id":"learn/learn-guides-accounts-proxy","path":"/docs/learn-guides-accounts-proxy","sidebar":"docs"},{"id":"learn/learn-guides-accounts-proxy-pure","path":"/docs/learn-guides-accounts-proxy-pure","sidebar":"docs"},{"id":"learn/learn-guides-asset-conversion","path":"/docs/learn-guides-asset-conversion","sidebar":"docs"},{"id":"learn/learn-guides-assets","path":"/docs/learn-guides-assets","sidebar":"docs"},{"id":"learn/learn-guides-assets-create","path":"/docs/learn-guides-assets-create","sidebar":"docs"},{"id":"learn/learn-guides-assets-ledger","path":"/docs/learn-guides-assets-ledger","sidebar":"docs"},{"id":"learn/learn-guides-bounties","path":"/docs/learn-guides-bounties","sidebar":"docs"},{"id":"learn/learn-guides-coretime-marketplaces","path":"/docs/learn-guides-coretime-marketplaces","sidebar":"docs"},{"id":"learn/learn-guides-coretime-parachains","path":"/docs/learn-guides-coretime-parachains","sidebar":"docs"},{"id":"learn/learn-guides-dot-ksm-bridge","path":"/docs/learn-guides-dot-ksm-bridge","sidebar":"docs"},{"id":"learn/learn-guides-identity","path":"/docs/learn-guides-identity","sidebar":"docs"},{"id":"learn/learn-guides-ledger","path":"/docs/learn-guides-ledger","sidebar":"docs"},{"id":"learn/learn-guides-nominator","path":"/docs/learn-guides-nominator","sidebar":"docs"},{"id":"learn/learn-guides-polkadot-opengov","path":"/docs/learn-guides-polkadot-opengov","sidebar":"docs"},{"id":"learn/learn-guides-staking","path":"/docs/learn-guides-staking","sidebar":"docs"},{"id":"learn/learn-guides-staking-pools","path":"/docs/learn-guides-staking-pools","sidebar":"docs"},{"id":"learn/learn-guides-transfers","path":"/docs/learn-guides-transfers","sidebar":"docs"},{"id":"learn/learn-guides-treasury","path":"/docs/learn-guides-treasury","sidebar":"docs"},{"id":"learn/learn-guides-vault","path":"/docs/learn-guides-vault","sidebar":"docs"},{"id":"learn/learn-hyperbridge","path":"/docs/learn-hyperbridge","sidebar":"docs"},{"id":"learn/learn-identity","path":"/docs/learn-identity","sidebar":"docs"},{"id":"learn/learn-implementations","path":"/docs/learn-implementations"},{"id":"learn/learn-inflation","path":"/docs/learn-inflation","sidebar":"docs"},{"id":"learn/learn-nft","path":"/docs/learn-nft","sidebar":"docs"},{"id":"learn/learn-nft-pallets","path":"/docs/learn-nft-pallets","sidebar":"docs"},{"id":"learn/learn-nft-projects","path":"/docs/learn-nft-projects","sidebar":"docs"},{"id":"learn/learn-nomination-pools","path":"/docs/learn-nomination-pools","sidebar":"docs"},{"id":"learn/learn-nominator","path":"/docs/learn-nominator","sidebar":"docs"},{"id":"learn/learn-parachains","path":"/docs/learn-parachains","sidebar":"docs"},{"id":"learn/learn-parachains-faq","path":"/docs/learn-parachains-faq","sidebar":"docs"},{"id":"learn/learn-parachains-protocol","path":"/docs/learn-parachains-protocol","sidebar":"docs"},{"id":"learn/learn-parathreads","path":"/docs/learn-parathreads","sidebar":"docs"},{"id":"learn/learn-phragmen","path":"/docs/learn-phragmen","sidebar":"docs"},{"id":"learn/learn-polkadot-host","path":"/docs/learn-polkadot-host","sidebar":"docs"},{"id":"learn/learn-polkadot-js-guides","path":"/docs/learn-polkadot-js-guides","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov","path":"/docs/learn-polkadot-opengov","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov-origins","path":"/docs/learn-polkadot-opengov-origins","sidebar":"docs"},{"id":"learn/learn-polkadot-opengov-treasury","path":"/docs/learn-polkadot-opengov-treasury","sidebar":"docs"},{"id":"learn/learn-polkadot-technical-fellowship","path":"/docs/learn-polkadot-technical-fellowship","sidebar":"docs"},{"id":"learn/learn-polkadotjs","path":"/docs/learn-polkadotjs","sidebar":"docs"},{"id":"learn/learn-proxies","path":"/docs/learn-proxies","sidebar":"docs"},{"id":"learn/learn-proxies-pure","path":"/docs/learn-proxies-pure","sidebar":"docs"},{"id":"learn/learn-runtime-upgrades","path":"/docs/learn-runtime-upgrades","sidebar":"docs"},{"id":"learn/learn-sassafras","path":"/docs/learn-sassafras","sidebar":"docs"},{"id":"learn/learn-spree","path":"/docs/learn-spree","sidebar":"docs"},{"id":"learn/learn-staking","path":"/docs/learn-staking","sidebar":"docs"},{"id":"learn/learn-staking-advanced","path":"/docs/learn-staking-advanced","sidebar":"docs"},{"id":"learn/learn-system-chains","path":"/docs/learn-system-chains","sidebar":"docs"},{"id":"learn/learn-teleport","path":"/docs/learn-teleport","sidebar":"docs"},{"id":"learn/learn-transaction-fees","path":"/docs/learn-transaction-fees","sidebar":"docs"},{"id":"learn/learn-transactions","path":"/docs/learn-transactions","sidebar":"docs"},{"id":"learn/learn-validator","path":"/docs/learn-validator","sidebar":"docs"},{"id":"learn/learn-video-tutorials","path":"/docs/learn-video-tutorials","sidebar":"docs"},{"id":"learn/learn-wasm","path":"/docs/learn-wasm","sidebar":"docs"},{"id":"learn/learn-xcm","path":"/docs/learn-xcm","sidebar":"docs"},{"id":"learn/learn-xcm-instructions","path":"/docs/learn-xcm-instructions","sidebar":"docs"},{"id":"learn/learn-xcm-pallet","path":"/docs/learn-xcm-pallet","sidebar":"docs"},{"id":"learn/learn-xcm-transport","path":"/docs/learn-xcm-transport","sidebar":"docs"},{"id":"learn/learn-xcm-usecases","path":"/docs/learn-xcm-usecases","sidebar":"docs"},{"id":"learn/learn-xcvm","path":"/docs/learn-xcvm","sidebar":"docs"},{"id":"learn/xcm/executor_config/learn-xcm-docs-config-deep-dive","path":"/docs/learn/xcm/config-deep-dive","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-fees","path":"/docs/learn/xcm/fundamentals-fees","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-multiasset","path":"/docs/learn/xcm/fundamentals-multiasset","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-summary","path":"/docs/learn/xcm/fundamentals-summary","sidebar":"docs"},{"id":"learn/xcm/fundamentals/learn-xcm-docs-fundamentals-xcvm","path":"/docs/learn/xcm/fundamentals-xcvm","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-example","path":"/docs/learn/xcm/fundamentals/multilocation-example","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-junctions","path":"/docs/learn/xcm/fundamentals/multilocation-junctions","sidebar":"docs"},{"id":"learn/xcm/fundamentals/multilocation/learn-xcm-docs-multilocation-summary","path":"/docs/learn/xcm/fundamentals/multilocation-summary","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-assets","path":"/docs/learn/xcm/journey-assets","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-channels","path":"/docs/learn/xcm/journey-channels","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-expectations","path":"/docs/learn/xcm/journey-expectations","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-fees","path":"/docs/learn/xcm/journey-fees","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-holding","path":"/docs/learn/xcm/journey-holding","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-origin","path":"/docs/learn/xcm/journey-origin","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-queries","path":"/docs/learn/xcm/journey-queries","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-register","path":"/docs/learn/xcm/journey-register","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-summary","path":"/docs/learn/xcm/journey-summary","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-transact","path":"/docs/learn/xcm/journey-transact","sidebar":"docs"},{"id":"learn/xcm/journey/learn-xcm-docs-journey-version","path":"/docs/learn/xcm/journey-version","sidebar":"docs"},{"id":"learn/xcm/journey/locks/learn-xcm-docs-journey-locks","path":"/docs/learn/xcm/journey-locks","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-reserve","path":"/docs/learn/xcm/journey/transfers-reserve","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-summary","path":"/docs/learn/xcm/journey/transfers-summary","sidebar":"docs"},{"id":"learn/xcm/journey/transfers/learn-xcm-docs-transfers-teleport","path":"/docs/learn/xcm/journey/transfers-teleport","sidebar":"docs"},{"id":"learn/xcm/learn-xcm-docs-intro","path":"/docs/learn/xcm/introduction","sidebar":"docs"},{"id":"learn/xcm/learn-xcm-docs-testing","path":"/docs/learn/xcm/testing","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-architecture","path":"/docs/learn/xcm/overview-architecture","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-format","path":"/docs/learn/xcm/overview-format","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-intro","path":"/docs/learn/xcm/overview-intro","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-summary","path":"/docs/learn/xcm/overview-summary","sidebar":"docs"},{"id":"learn/xcm/overview/learn-xcm-docs-overview-xcvm","path":"/docs/learn/xcm/overview-xcvm","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-first-look","path":"/docs/learn/xcm/quickstart-first-look","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-simulator","path":"/docs/learn/xcm/quickstart-simulator","sidebar":"docs"},{"id":"learn/xcm/quickstart/learn-xcm-docs-quickstart-summary","path":"/docs/learn/xcm/quickstart-summary","sidebar":"docs"},{"id":"learn/xcm/reference/learn-xcm-docs-reference-glossary","path":"/docs/learn/xcm/reference-glossary","sidebar":"docs"},{"id":"learn/xcm/reference/learn-xcm-docs-reference-xcvm-registers","path":"/docs/learn/xcm/reference-xcvm-registers","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-democracy","path":"/docs/maintain/maintain-guides-democracy","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-how-to-join-council","path":"/docs/maintain/maintain-guides-how-to-join-council","sidebar":"docs"},{"id":"maintain/archive/maintain-guides-how-to-vote-councillor","path":"/docs/maintain/maintain-guides-how-to-vote-councillor","sidebar":"docs"},{"id":"maintain/doc-maintain-guides-validator-community","path":"/docs/maintain-guides-validator-community","sidebar":"docs"},{"id":"maintain/kusama/maintain-guides-how-to-validate-kusama","path":"/docs/maintain-guides-how-to-validate-kusama"},{"id":"maintain/kusama/maintain-guides-society-kusama","path":"/docs/maintain-guides-society-kusama"},{"id":"maintain/maintain-archive","path":"/docs/maintain-archive","sidebar":"docs"},{"id":"maintain/maintain-bootnode","path":"/docs/maintain-bootnode","sidebar":"docs"},{"id":"maintain/maintain-endpoints","path":"/docs/maintain-endpoints","sidebar":"docs"},{"id":"maintain/maintain-errors","path":"/docs/maintain-errors","sidebar":"docs"},{"id":"maintain/maintain-guides-async-backing","path":"/docs/maintain-guides-async-backing","sidebar":"docs"},{"id":"maintain/maintain-guides-avoid-slashing","path":"/docs/maintain-guides-avoid-slashing","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-chill","path":"/docs/maintain-guides-how-to-chill","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-monitor-your-node","path":"/docs/maintain-guides-how-to-monitor-your-node","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-stop-validating","path":"/docs/maintain-guides-how-to-stop-validating","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-systemd","path":"/docs/maintain-guides-how-to-systemd","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-upgrade","path":"/docs/maintain-guides-how-to-upgrade","sidebar":"docs"},{"id":"maintain/maintain-guides-how-to-validate-polkadot","path":"/docs/maintain-guides-how-to-validate-polkadot","sidebar":"docs"},{"id":"maintain/maintain-guides-secure-validator","path":"/docs/maintain-guides-secure-validator","sidebar":"docs"},{"id":"maintain/maintain-guides-validator-payout","path":"/docs/maintain-guides-validator-payout","sidebar":"docs"},{"id":"maintain/maintain-index","path":"/docs/maintain-index","sidebar":"docs"},{"id":"maintain/maintain-networks","path":"/docs/maintain-networks","sidebar":"docs"},{"id":"maintain/maintain-polkadot-parameters","path":"/docs/maintain-polkadot-parameters","sidebar":"docs"},{"id":"maintain/maintain-rpc","path":"/docs/maintain-rpc","sidebar":"docs"},{"id":"maintain/maintain-sync","path":"/docs/maintain-sync","sidebar":"docs"},{"id":"maintain/maintain-wss","path":"/docs/maintain-wss","sidebar":"docs"},{"id":"/explore-index","path":"/docs/explore-index","sidebar":"docs"},{"id":"/wallets-index","path":"/docs/wallets-index","sidebar":"docs"},{"id":"/apps-index","path":"/docs/apps-index","sidebar":"docs"},{"id":"/dashboards-index","path":"/docs/dashboards-index","sidebar":"docs"},{"id":"/community-index","path":"/docs/community-index","sidebar":"docs"},{"id":"/programs-index","path":"/docs/programs-index","sidebar":"docs"},{"id":"/learn-index","path":"/docs/learn-index","sidebar":"docs"},{"id":"/general-index","path":"/docs/general-index","sidebar":"docs"},{"id":"/polkadot-vision-index","path":"/docs/polkadot-vision-index","sidebar":"docs"},{"id":"/stay-safe-index","path":"/docs/stay-safe-index","sidebar":"docs"},{"id":"/learn-basics-index","path":"/docs/learn-basics-index","sidebar":"docs"},{"id":"/learn-staking-index","path":"/docs/learn-staking-index","sidebar":"docs"},{"id":"/learn-polkadot-opengov-index","path":"/docs/learn-polkadot-opengov-index","sidebar":"docs"},{"id":"/learn-assets-index","path":"/docs/learn-assets-index","sidebar":"docs"},{"id":"/learn-participants-index","path":"/docs/learn-participants-index","sidebar":"docs"},{"id":"/learn-components-index","path":"/docs/learn-components-index","sidebar":"docs"},{"id":"/learn-advanced-index","path":"/docs/learn-advanced-index","sidebar":"docs"},{"id":"/learn-guides-bridges","path":"/docs/learn-guides-bridges","sidebar":"docs"},{"id":"/learn-parachains-index","path":"/docs/learn-parachains-index","sidebar":"docs"},{"id":"/learn-agile-coretime-index","path":"/docs/learn-agile-coretime-index","sidebar":"docs"},{"id":"/learn-xcm-index","path":"/docs/learn-xcm-index","sidebar":"docs"},{"id":"learn/xcm","path":"/docs/learn/xcm","sidebar":"docs"},{"id":"/learn/xcm/overview","path":"/docs/learn/xcm/overview","sidebar":"docs"},{"id":"/learn/xcm/quickstart","path":"/docs/learn/xcm/quickstart","sidebar":"docs"},{"id":"/learn/xcm/fundamentals","path":"/docs/learn/xcm/fundamentals","sidebar":"docs"},{"id":"/learn/xcm/fundamentals/multilocation","path":"/docs/learn/xcm/fundamentals/multilocation","sidebar":"docs"},{"id":"/learn/xcm/journey","path":"/docs/learn/xcm/journey","sidebar":"docs"},{"id":"/learn/xcm/journey/transfers","path":"/docs/learn/xcm/journey/transfers","sidebar":"docs"},{"id":"/learn/xcm/references","path":"/docs/learn/xcm/references","sidebar":"docs"},{"id":"/learn-comparisons-index","path":"/docs/learn-comparisons-index","sidebar":"docs"},{"id":"/learn-future-implementations-index","path":"/docs/learn-future-implementations-index","sidebar":"docs"},{"id":"/build-client-index","path":"/docs/build-client-index","sidebar":"docs"},{"id":"/build-protocol-index","path":"/docs/build-protocol-index","sidebar":"docs"},{"id":"/build-archive-index","path":"/docs/build-archive-index","sidebar":"docs"},{"id":"/maintain-node-index","path":"/docs/maintain-node-index","sidebar":"docs"},{"id":"/maintain-collator-index","path":"/docs/maintain-collator-index","sidebar":"docs"},{"id":"/maintain-validator-index","path":"/docs/maintain-validator-index","sidebar":"docs"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/explore-index","label":"Explore"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=t(81465);const c=JSON.parse('{"docusaurusVersion":"2.4.3","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.3"},"undefined":{"type":"package","name":"remark-docusaurus-tabs","version":"0.2.0"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"2.4.3"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"2.4.3"}}}');var l={siteConfig:a.default,siteMetadata:c,globalData:o,i18n:i,codeTranslations:s},u=r.createContext(l);function d(e){var n=e.children;return r.createElement(u.Provider,{value:l},n)}},44763:(e,n,t)=>{"use strict";t.d(n,{Z:()=>p});var r=t(94578),a=t(67294),o=t(10412),i=t(35742),s=t(18780),c=t(34033);function l(e){var n=e.error,t=e.tryAgain;return a.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},a.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),a.createElement("button",{type:"button",onClick:t,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),a.createElement(u,{error:n}))}function u(e){var n=e.error,t=(0,s.getErrorCausalChain)(n).map((function(e){return e.message})).join("\n\nCause:\n");return a.createElement("p",{style:{whiteSpace:"pre-wrap"}},t)}function d(e){var n=e.error,t=e.tryAgain;return a.createElement(p,{fallback:function(){return a.createElement(l,{error:n,tryAgain:t})}},a.createElement(i.Z,null,a.createElement("title",null,"Page Error")),a.createElement(c.Z,null,a.createElement(l,{error:n,tryAgain:t})))}var f=function(e){return a.createElement(d,e)},p=function(e){function n(n){var t;return(t=e.call(this,n)||this).state={error:null},t}(0,r.Z)(n,e);var t=n.prototype;return t.componentDidCatch=function(e){o.Z.canUseDOM&&this.setState({error:e})},t.render=function(){var e=this,n=this.props.children,t=this.state.error;if(t){var r,a={error:t,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:f)(a)}return null!=n?n:null},n}(a.Component)},10412:(e,n,t)=>{"use strict";t.d(n,{Z:()=>a});var r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document;const a={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},35742:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(70405);function o(e){return r.createElement(a.ql,e)}},39960:(e,n,t)=>{"use strict";t.d(n,{Z:()=>h});var r=t(87462),a=t(63366),o=t(67294),i=t(73727),s=t(18780),c=t(52263),l=t(13919),u=t(10412),d=o.createContext({collectLink:function(){}});var f=t(44996),p=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,n){var t,m,h=e.isNavLink,g=e.to,b=e.href,v=e.activeClassName,y=e.isActive,x=e["data-noBrokenLinkCheck"],k=e.autoAddBaseUrl,w=void 0===k||k,E=(0,a.Z)(e,p),_=(0,c.Z)().siteConfig,S=_.trailingSlash,C=_.baseUrl,T=(0,f.C)().withBaseUrl,P=(0,o.useContext)(d),A=(0,o.useRef)(null);(0,o.useImperativeHandle)(n,(function(){return A.current}));var O=g||b;var L,N=(0,l.Z)(O),I=null==O?void 0:O.replace("pathname://",""),R=void 0!==I?(L=I,w&&function(e){return e.startsWith("/")}(L)?T(L):L):void 0;R&&N&&(R=(0,s.applyTrailingSlash)(R,{trailingSlash:S,baseUrl:C}));var j=(0,o.useRef)(!1),M=h?i.OL:i.rU,D=u.Z.canUseIntersectionObserver,F=(0,o.useRef)(),B=function(){j.current||null==R||(window.docusaurus.preload(R),j.current=!0)};(0,o.useEffect)((function(){return!D&&N&&null!=R&&window.docusaurus.prefetch(R),function(){D&&F.current&&F.current.disconnect()}}),[F,R,D,N]);var z=null!=(t=null==(m=R)?void 0:m.startsWith("#"))&&t,U=!R||!N||z;return U||x||P.collectLink(R),U?o.createElement("a",(0,r.Z)({ref:A,href:R},O&&!N&&{target:"_blank",rel:"noopener noreferrer"},E)):o.createElement(M,(0,r.Z)({},E,{onMouseEnter:B,onTouchStart:B,innerRef:function(e){A.current=e,D&&e&&N&&(F.current=new window.IntersectionObserver((function(n){n.forEach((function(n){e===n.target&&(n.isIntersecting||n.intersectionRatio>0)&&(F.current.unobserve(e),F.current.disconnect(),null!=R&&window.docusaurus.prefetch(R))}))})),F.current.observe(e))},to:R},h&&{isActive:y,activeClassName:v}))}const h=o.forwardRef(m)},95999:(e,n,t)=>{"use strict";t.d(n,{Z:()=>c,I:()=>s});var r=t(67294);function a(e,n){var t=e.split(/(\{\w+\})/).map((function(e,t){if(t%2==1){var r=null==n?void 0:n[e.slice(1,-1)];if(void 0!==r)return r}return e}));return t.some((function(e){return(0,r.isValidElement)(e)}))?t.map((function(e,n){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:n}):e})).filter((function(e){return""!==e})):t.join("")}var o=t(81465);function i(e){var n,t,r=e.id,a=e.message;if(void 0===r&&void 0===a)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return null!=(n=null!=(t=o[null!=r?r:a])?t:a)?n:r}function s(e,n){return a(i({message:e.message,id:e.id}),n)}function c(e){var n=e.children,t=e.id,o=e.values;if(n&&"string"!=typeof n)throw console.warn("Illegal children",n),new Error("The Docusaurus component only accept simple string values");var s=i({message:n,id:t});return r.createElement(r.Fragment,null,a(s,o))}},29935:(e,n,t)=>{"use strict";t.d(n,{m:()=>r});var r="default"},13919:(e,n,t)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}t.d(n,{Z:()=>a,b:()=>r})},44996:(e,n,t)=>{"use strict";t.d(n,{C:()=>i,Z:()=>s});var r=t(67294),a=t(52263),o=t(13919);function i(){var e=(0,a.Z)().siteConfig,n=e.baseUrl,t=e.url,i=(0,r.useCallback)((function(e,r){return function(e,n,t,r){var a=void 0===r?{}:r,i=a.forcePrependBaseUrl,s=void 0!==i&&i,c=a.absolute,l=void 0!==c&&c;if(!t||t.startsWith("#")||(0,o.b)(t))return t;if(s)return n+t.replace(/^\//,"");if(t===n.replace(/\/$/,""))return n;var u=t.startsWith(n)?t:n+t.replace(/^\//,"");return l?e+u:u}(t,n,e,r)}),[t,n]);return{withBaseUrl:i}}function s(e,n){return void 0===n&&(n={}),(0,i().withBaseUrl)(e,n)}},52263:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(49633);function o(){return(0,r.useContext)(a._)}},72389:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(98934);function o(){return(0,r.useContext)(a._)}},99670:(e,n,t)=>{"use strict";t.d(n,{Z:()=>a});var r=function(e){return"object"==typeof e&&!!e&&Object.keys(e).length>0};function a(e){var n={};return function e(t,a){Object.entries(t).forEach((function(t){var o=t[0],i=t[1],s=a?a+"."+o:o;r(i)?e(i,s):n[s]=i}))}(e),n}},30226:(e,n,t)=>{"use strict";t.d(n,{_:()=>a,z:()=>o});var r=t(67294),a=r.createContext(null);function o(e){var n=e.children,t=e.value,o=r.useContext(a),i=(0,r.useMemo)((function(){return function(e){var n=e.parent,t=e.value;if(!n){if(!t)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in t))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return t}var r=Object.assign({},n.data,null==t?void 0:t.data);return{plugin:n.plugin,data:r}}({parent:o,value:t})}),[o,t]);return r.createElement(a.Provider,{value:i},n)}},80143:(e,n,t)=>{"use strict";t.d(n,{Iw:()=>b,gA:()=>p,WS:()=>m,_r:()=>d,Jo:()=>v,zh:()=>f,yW:()=>g,gB:()=>h});var r=t(16550),a=t(52263),o=t(29935);function i(e,n){void 0===n&&(n={});var t=(0,a.Z)().globalData[e];if(!t&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return t}var s=function(e){return e.versions.find((function(e){return e.isLast}))};function c(e,n){var t=s(e);return[].concat(e.versions.filter((function(e){return e!==t})),[t]).find((function(e){return!!(0,r.LX)(n,{path:e.path,exact:!1,strict:!1})}))}function l(e,n){var t,a,o=c(e,n),i=null==o?void 0:o.docs.find((function(e){return!!(0,r.LX)(n,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(t=i.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(n){n.id===t&&(a[e.name]=n)}))})),a):{}}}var u={},d=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},f=function(e){return function(e,n,t){void 0===n&&(n=o.m),void 0===t&&(t={});var r=i(e),a=null==r?void 0:r[n];if(!a&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+n+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0})};function p(e){return void 0===e&&(e={}),function(e,n,t){void 0===t&&(t={});var a=Object.entries(e).sort((function(e,n){return n[1].path.localeCompare(e[1].path)})).find((function(e){var t=e[1];return!!(0,r.LX)(n,{path:t.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&t.failfast)throw new Error("Can't find active docs plugin for \""+n+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return o}(d(),(0,r.TH)().pathname,e)}function m(e){void 0===e&&(e={});var n=p(e),t=(0,r.TH)().pathname;if(n)return{activePlugin:n,activeVersion:c(n.pluginData,t)}}function h(e){return f(e).versions}function g(e){var n=f(e);return s(n)}function b(e){return l(f(e),(0,r.TH)().pathname)}function v(e){return function(e,n){var t=s(e);return{latestDocSuggestion:l(e,n).alternateDocVersions[t.name],latestVersionSuggestion:t}}(f(e),(0,r.TH)().pathname)}},18320:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>o});var r=t(74865),a=t.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var n=e.location,t=e.previousLocation;if(t&&n.pathname!==t.pathname){var r=window.setTimeout((function(){a().start()}),200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},3310:(e,n,t)=>{"use strict";t.r(n);var r,a,o=t(11205),i=t(8618);r=o.Z,a=i.default.themeConfig.prism.additionalLanguages,globalThis.Prism=r,a.forEach((function(e){t(54294)("./prism-"+e)})),delete globalThis.Prism},39471:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){var n=e.width,t=void 0===n?13.5:n,o=e.height,i=void 0===o?13.5:o;return r.createElement("svg",{width:t,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},34033:(e,n,t)=>{"use strict";t.d(n,{Z:()=>Qn});var r=t(67294),a=t(86010),o=t(44763),i=t(10833),s=t(87462),c=t(16550),l=t(95999),u=t(85936),d="__docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){var e=(0,r.useRef)(null),n=(0,c.k6)().action,t=(0,r.useCallback)((function(e){e.preventDefault();var n,t=null!=(n=document.querySelector("main:first-of-type"))?n:document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((function(t){var r=t.location;e.current&&!r.hash&&"PUSH"===n&&f(e.current)})),{containerRef:e,onClick:t}}var m=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function h(e){var n,t=null!=(n=e.children)?n:m,a=p(),o=a.containerRef,i=a.onClick;return r.createElement("div",{ref:o,role:"region","aria-label":m},r.createElement("a",(0,s.Z)({},e,{href:"#"+d,onClick:i}),t))}var g=t(35281),b=t(19727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var x=t(86668),k=t(59689),w=t(63366),E=["width","height","color","strokeWidth","className"];function _(e){var n=e.width,t=void 0===n?21:n,a=e.height,o=void 0===a?21:a,i=e.color,c=void 0===i?"currentColor":i,l=e.strokeWidth,u=void 0===l?1.2:l,d=(e.className,(0,w.Z)(e,E));return r.createElement("svg",(0,s.Z)({viewBox:"0 0 15 15",width:t,height:o},d),r.createElement("g",{stroke:c,strokeWidth:u},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function C(e){return r.createElement("button",(0,s.Z)({type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(_,{width:14,height:14,strokeWidth:3.1}))}const T={content:"content_knG7"};function P(e){var n=(0,x.L)().announcementBar.content;return r.createElement("div",(0,s.Z)({},e,{className:(0,a.Z)(T.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function O(){var e=(0,x.L)().announcementBar,n=(0,k.nT)(),t=n.isActive,a=n.close;if(!t)return null;var o=e.backgroundColor,i=e.textColor,s=e.isCloseable;return r.createElement("div",{className:A.announcementBar,style:{backgroundColor:o,color:i},role:"banner"},s&&r.createElement("div",{className:A.announcementBarPlaceholder}),r.createElement(P,{className:A.announcementBarContent}),s&&r.createElement(C,{onClick:a,className:A.announcementBarClose}))}var L=t(93163),N=t(12466);var I=t(69688),R=t(13102),j=r.createContext(null);function M(e){var n,t,a,o,i,s,c,l=e.children,u=(n=(0,L.e)(),t=(0,R.HY)(),a=(0,r.useState)(!1),o=a[0],i=a[1],s=null!==t.component,c=(0,I.D9)(s),(0,r.useEffect)((function(){s&&!c&&i(!0)}),[s,c]),(0,r.useEffect)((function(){s?n.shown||i(!0):i(!1)}),[n.shown,s]),(0,r.useMemo)((function(){return[o,i]}),[o]));return r.createElement(j.Provider,{value:u},l)}function D(e){if(e.component){var n=e.component;return r.createElement(n,e.props)}}function F(){var e=(0,r.useContext)(j);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");var n=e[0],t=e[1],a=(0,r.useCallback)((function(){return t(!1)}),[t]),o=(0,R.HY)();return(0,r.useMemo)((function(){return{shown:n,hide:a,content:D(o)}}),[a,o,n])}function B(e){var n=e.header,t=e.primaryMenu,o=e.secondaryMenu,i=F().shown;return r.createElement("div",{className:"navbar-sidebar"},n,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},t),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var z=t(92949),U=t(72389);function $(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function Z(e){return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const H={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function G(e){var n=e.className,t=e.buttonClassName,o=e.value,i=e.onChange,s=(0,U.Z)(),c=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===o?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(H.toggle,n)},r.createElement("button",{className:(0,a.Z)("clean-btn",H.toggleButton,!s&&H.toggleButtonDisabled,t),type:"button",onClick:function(){return i("dark"===o?"light":"dark")},disabled:!s,title:c,"aria-label":c,"aria-live":"polite"},r.createElement($,{className:(0,a.Z)(H.toggleIcon,H.lightToggleIcon)}),r.createElement(Z,{className:(0,a.Z)(H.toggleIcon,H.darkToggleIcon)})))}const V=r.memo(G),q={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function W(e){var n=e.className,t=(0,x.L)().navbar.style,a=(0,x.L)().colorMode.disableSwitch,o=(0,z.I)(),i=o.colorMode,s=o.setColorMode;return a?null:r.createElement(V,{className:n,buttonClassName:"dark"===t?q.darkNavbarColorModeToggle:void 0,value:i,onChange:s})}var Y=t(87846);function K(){return r.createElement(Y.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){var e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:function(){return e.toggle()}},r.createElement(_,{color:"var(--ifm-color-emphasis-600)"}))}function Q(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(K,null),r.createElement(W,{className:"margin-right--md"}),r.createElement(X,null))}var J=t(39960),ee=t(44996),ne=t(13919),te=t(98022),re=t(39471),ae=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function oe(e){var n=e.activeBasePath,t=e.activeBaseRegex,a=e.to,o=e.href,i=e.label,c=e.html,l=e.isDropdownLink,u=e.prependBaseUrlToHref,d=(0,w.Z)(e,ae),f=(0,ee.Z)(a),p=(0,ee.Z)(n),m=(0,ee.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,ne.Z)(o),g=c?{dangerouslySetInnerHTML:{__html:c}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(re.Z,l&&{width:12,height:12}))};return o?r.createElement(J.Z,(0,s.Z)({href:u?m:o},d,g)):r.createElement(J.Z,(0,s.Z)({to:f,isNavLink:!0},(n||t)&&{isActive:function(e,n){return t?(0,te.F)(t,n.pathname):n.pathname.startsWith(p)}},d,g))}var ie=["className","isDropdownItem"],se=["className","isDropdownItem"],ce=["mobile","position"];function le(e){var n=e.className,t=e.isDropdownItem,o=void 0!==t&&t,i=(0,w.Z)(e,ie),c=r.createElement(oe,(0,s.Z)({className:(0,a.Z)(o?"dropdown__link":"navbar__item navbar__link",n),isDropdownLink:o},i));return o?r.createElement("li",null,c):c}function ue(e){var n=e.className,t=(e.isDropdownItem,(0,w.Z)(e,se));return r.createElement("li",{className:"menu__list-item"},r.createElement(oe,(0,s.Z)({className:(0,a.Z)("menu__link",n)},t)))}function de(e){var n,t=e.mobile,a=void 0!==t&&t,o=(e.position,(0,w.Z)(e,ce)),i=a?ue:le;return r.createElement(i,(0,s.Z)({},o,{activeClassName:null!=(n=o.activeClassName)?n:a?"menu__link--active":"navbar__link--active"}))}var fe=t(86043),pe=t(48596),me=t(52263);var he=["items","position","className","onClick"],ge=["items","className","position","onClick"],be=["mobile"];function ve(e,n){return e.some((function(e){return function(e,n){return!!(0,pe.Mg)(e.to,n)||!!(0,te.F)(e.activeBaseRegex,n)||!(!e.activeBasePath||!n.startsWith(e.activeBasePath))}(e,n)}))}function ye(e){var n,t=e.items,o=e.position,i=e.className,c=(e.onClick,(0,w.Z)(e,he)),l=(0,r.useRef)(null),u=(0,r.useState)(!1),d=u[0],f=u[1];return(0,r.useEffect)((function(){var e=function(e){l.current&&!l.current.contains(e.target)&&f(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),r.createElement("div",{ref:l,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d})},r.createElement(oe,(0,s.Z)({"aria-haspopup":"true","aria-expanded":d,role:"button",href:c.to?void 0:"#",className:(0,a.Z)("navbar__link",i)},c,{onClick:c.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),f(!d))}}),null!=(n=c.children)?n:c.label),r.createElement("ul",{className:"dropdown__menu"},t.map((function(e,n){return r.createElement(sn,(0,s.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:n}))}))))}function xe(e){var n,t,o=e.items,i=e.className,l=(e.position,e.onClick),u=(0,w.Z)(e,ge),d=(t=(0,me.Z)().siteConfig.baseUrl,(0,c.TH)().pathname.replace(t,"/")),f=ve(o,d),p=(0,fe.u)({initialState:function(){return!f}}),m=p.collapsed,h=p.toggleCollapsed,g=p.setCollapsed;return(0,r.useEffect)((function(){f&&g(!f)}),[d,f,g]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":m})},r.createElement(oe,(0,s.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",i)},u,{onClick:function(e){e.preventDefault(),h()}}),null!=(n=u.children)?n:u.label),r.createElement(fe.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:m},o.map((function(e,n){return r.createElement(sn,(0,s.Z)({mobile:!0,isDropdownItem:!0,onClick:l,activeClassName:"menu__link--active"},e,{key:n}))}))))}function ke(e){var n=e.mobile,t=void 0!==n&&n,a=(0,w.Z)(e,be),o=t?xe:ye;return r.createElement(o,a)}var we=t(94711),Ee=["width","height"];function _e(e){var n=e.width,t=void 0===n?20:n,a=e.height,o=void 0===a?20:a,i=(0,w.Z)(e,Ee);return r.createElement("svg",(0,s.Z)({viewBox:"0 0 24 24",width:t,height:o,"aria-hidden":!0},i),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const Se="iconLanguage_nlXk";var Ce=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function Te(){return r.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},r.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var Pe=t(20830),Ae=["translations"];function Oe(){return Oe=Object.assign||function(e){for(var n=1;ne.length)&&(n=e.length);for(var t=0,r=new Array(n);t=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var Re="Ctrl";var je=r.forwardRef((function(e,n){var t=e.translations,a=void 0===t?{}:t,o=Ie(e,Ae),i=a.buttonText,s=void 0===i?"Search":i,c=a.buttonAriaLabel,l=void 0===c?"Search":c,u=Le((0,r.useState)(null),2),d=u[0],f=u[1];return(0,r.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?f("\u2318"):f(Re))}),[]),r.createElement("button",Oe({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},o,{ref:n}),r.createElement("span",{className:"DocSearch-Button-Container"},r.createElement(Pe.W,null),r.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),r.createElement("span",{className:"DocSearch-Button-Keys"},null!==d&&r.createElement(r.Fragment,null,r.createElement("kbd",{className:"DocSearch-Button-Key"},d===Re?r.createElement(Te,null):d),r.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),Me=t(35742),De=t(66177),Fe=t(239),Be=t(43320);var ze=t(73935);const Ue={button:{buttonText:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,l.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,l.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,l.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,l.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,l.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,l.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,l.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,l.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,l.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,l.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,l.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,l.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,l.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};var $e=["contextualSearch","externalUrlRegex"],Ze=null;function He(e){var n=e.hit,t=e.children;return r.createElement(J.Z,{to:n.url},t)}function Ge(e){var n=e.state,t=e.onClose,a=(0,De.M)();return r.createElement(J.Z,{to:a(n.query),onClick:t},r.createElement(l.Z,{id:"theme.SearchBar.seeAll",values:{count:n.context.nbHits}},"See all {count} results"))}function Ve(e){var n,a,o,i,l,u=e.contextualSearch,d=e.externalUrlRegex,f=(0,w.Z)(e,$e),p=(0,me.Z)().siteMetadata,m=(0,Fe.l)(),h=["language:"+(o=(0,Be._q)()).locale,o.tags.map((function(e){return"docusaurus_tag:"+e}))],g=null!=(n=null==(a=f.searchParameters)?void 0:a.facetFilters)?n:[],b=u?(i=g,[].concat((l=function(e){return"string"==typeof e?[e]:e})(h),l(i))):g,v=Object.assign({},f.searchParameters,{facetFilters:b}),y=(0,c.k6)(),x=(0,r.useRef)(null),k=(0,r.useRef)(null),E=(0,r.useState)(!1),_=E[0],S=E[1],C=(0,r.useState)(void 0),T=C[0],P=C[1],A=(0,r.useCallback)((function(){return Ze?Promise.resolve():Promise.all([t.e(1426).then(t.bind(t,61426)),Promise.all([t.e(532),t.e(6945)]).then(t.bind(t,46945)),Promise.all([t.e(532),t.e(8894)]).then(t.bind(t,18894))]).then((function(e){var n=e[0].DocSearchModal;Ze=n}))}),[]),O=(0,r.useCallback)((function(){A().then((function(){x.current=document.createElement("div"),document.body.insertBefore(x.current,document.body.firstChild),S(!0)}))}),[A,S]),L=(0,r.useCallback)((function(){var e;S(!1),null==(e=x.current)||e.remove()}),[S]),N=(0,r.useCallback)((function(e){A().then((function(){S(!0),P(e.key)}))}),[A,S,P]),I=(0,r.useRef)({navigate:function(e){var n=e.itemUrl;(0,te.F)(d,n)?window.location.href=n:y.push(n)}}).current,R=(0,r.useRef)((function(e){return f.transformItems?f.transformItems(e):e.map((function(e){return Object.assign({},e,{url:m(e.url)})}))})).current,j=(0,r.useMemo)((function(){return function(e){return r.createElement(Ge,(0,s.Z)({},e,{onClose:L}))}}),[L]),M=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",p.docusaurusVersion),e}),[p.docusaurusVersion]);return function(e){var n=e.isOpen,t=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&n||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var n=e.target,t=n.tagName;return n.isContentEditable||"INPUT"===t||"SELECT"===t||"TEXTAREA"===t}(e)&&"/"===e.key&&!n)&&(e.preventDefault(),n?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||t()),i&&i.current===document.activeElement&&o&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&o(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[n,t,a,o,i])}({isOpen:_,onOpen:O,onClose:L,onInput:N,searchButtonRef:k}),r.createElement(r.Fragment,null,r.createElement(Me.Z,null,r.createElement("link",{rel:"preconnect",href:"https://"+f.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),r.createElement(je,{onTouchStart:A,onFocus:A,onMouseOver:A,onClick:O,ref:k,translations:Ue.button}),_&&Ze&&x.current&&(0,ze.createPortal)(r.createElement(Ze,(0,s.Z)({onClose:L,initialScrollY:window.scrollY,initialQuery:T,navigator:I,transformItems:R,hitComponent:He,transformSearchClient:M},f.searchPagePath&&{resultsFooterComponent:j},f,{searchParameters:v,placeholder:Ue.placeholder,translations:Ue.modal})),x.current))}function qe(){var e=(0,me.Z)().siteConfig;return r.createElement(Ve,e.themeConfig.algolia)}const We={searchBox:"searchBox_ZlJk"};function Ye(e){var n=e.children,t=e.className;return r.createElement("div",{className:(0,a.Z)(t,We.searchBox)},n)}var Ke=t(80143),Xe=t(53438),Qe=["docId","label","docsPluginId"];var Je=["sidebarId","label","docsPluginId"];var en=["label","to","docsPluginId"];var nn=t(60373),tn=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],rn=function(e){return e.docs.find((function(n){return n.id===e.mainDocId}))};const an={default:de,localeDropdown:function(e){var n=e.mobile,t=e.dropdownItemsBefore,a=e.dropdownItemsAfter,o=(0,w.Z)(e,Ce),i=(0,me.Z)().i18n,u=i.currentLocale,d=i.locales,f=i.localeConfigs,p=(0,we.l)(),m=(0,c.TH)(),h=m.search,g=m.hash,b=d.map((function(e){var t=""+("pathname://"+p.createUrl({locale:e,fullyQualified:!1}))+h+g;return{label:f[e].label,lang:f[e].htmlLang,to:t,target:"_self",autoAddBaseUrl:!1,className:e===u?n?"menu__link--active":"dropdown__link--active":""}})),v=[].concat(t,b,a),y=n?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):f[u].label;return r.createElement(ke,(0,s.Z)({},o,{mobile:n,label:r.createElement(r.Fragment,null,r.createElement(_e,{className:Se}),y),items:v}))},search:function(e){var n=e.mobile,t=e.className;return n?null:r.createElement(Ye,{className:t},r.createElement(qe,null))},dropdown:ke,html:function(e){var n=e.value,t=e.className,o=e.mobile,i=void 0!==o&&o,s=e.isDropdownItem,c=void 0!==s&&s,l=c?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!i&&!c,"menu__list-item":i},t),dangerouslySetInnerHTML:{__html:n}})},doc:function(e){var n=e.docId,t=e.label,a=e.docsPluginId,o=(0,w.Z)(e,Qe),i=(0,Ke.Iw)(a).activeDoc,c=(0,Xe.vY)(n,a);return null===c?null:r.createElement(de,(0,s.Z)({exact:!0},o,{isActive:function(){return(null==i?void 0:i.path)===c.path||!(null==i||!i.sidebar)&&i.sidebar===c.sidebar},label:null!=t?t:c.id,to:c.path}))},docSidebar:function(e){var n=e.sidebarId,t=e.label,a=e.docsPluginId,o=(0,w.Z)(e,Je),i=(0,Ke.Iw)(a).activeDoc,c=(0,Xe.oz)(n,a).link;if(!c)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+n+"\" doesn't have anything to be linked to.");return r.createElement(de,(0,s.Z)({exact:!0},o,{isActive:function(){return(null==i?void 0:i.sidebar)===n},label:null!=t?t:c.label,to:c.path}))},docsVersion:function(e){var n=e.label,t=e.to,a=e.docsPluginId,o=(0,w.Z)(e,en),i=(0,Xe.lO)(a)[0],c=null!=n?n:i.label,l=null!=t?t:function(e){return e.docs.find((function(n){return n.id===e.mainDocId}))}(i).path;return r.createElement(de,(0,s.Z)({},o,{label:c,to:l}))},docsVersionDropdown:function(e){var n=e.mobile,t=e.docsPluginId,a=e.dropdownActiveClassDisabled,o=e.dropdownItemsBefore,i=e.dropdownItemsAfter,u=(0,w.Z)(e,tn),d=(0,c.TH)(),f=d.search,p=d.hash,m=(0,Ke.Iw)(t),h=(0,Ke.gB)(t),g=(0,nn.J)(t).savePreferredVersionName,b=h.map((function(e){var n,t=null!=(n=m.alternateDocVersions[e.name])?n:rn(e);return{label:e.label,to:""+t.path+f+p,isActive:function(){return e===m.activeVersion},onClick:function(){return g(e.name)}}})),v=[].concat(o,b,i),y=(0,Xe.lO)(t)[0],x=n&&v.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):y.label,k=n&&v.length>1?void 0:rn(y).path;return v.length<=1?r.createElement(de,(0,s.Z)({},u,{mobile:n,label:x,to:k,isActive:a?function(){return!1}:void 0})):r.createElement(ke,(0,s.Z)({},u,{mobile:n,label:x,to:k,items:v,isActive:a?function(){return!1}:void 0}))}};var on=["type"];function sn(e){var n=e.type,t=(0,w.Z)(e,on),a=function(e,n){return e&&"default"!==e?e:"items"in n?"dropdown":"default"}(n,t),o=an[a];if(!o)throw new Error('No NavbarItem component found for type "'+n+'".');return r.createElement(o,t)}function cn(){var e=(0,L.e)(),n=(0,x.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},n.map((function(n,t){return r.createElement(sn,(0,s.Z)({mobile:!0},n,{onClick:function(){return e.toggle()},key:t}))})))}function ln(e){return r.createElement("button",(0,s.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function un(){var e=0===(0,x.L)().navbar.items.length,n=F();return r.createElement(r.Fragment,null,!e&&r.createElement(ln,{onClick:function(){return n.hide()}}),n.content)}function dn(){var e,n=(0,L.e)();return void 0===(e=n.shown)&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e]),n.shouldRender?r.createElement(B,{header:r.createElement(Q,null),primaryMenu:r.createElement(cn,null),secondaryMenu:r.createElement(un,null)}):null}const fn={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function pn(e){return r.createElement("div",(0,s.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function mn(e){var n=e.children,t=(0,x.L)().navbar,o=t.hideOnScroll,i=t.style,s=(0,L.e)(),c=function(e){var n=(0,r.useState)(e),t=n[0],a=n[1],o=(0,r.useRef)(!1),i=(0,r.useRef)(0),s=(0,r.useCallback)((function(e){null!==e&&(i.current=e.getBoundingClientRect().height)}),[]);return(0,N.RF)((function(n,t){var r=n.scrollY;if(e)if(r=s?a(!1):r+l=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}const Hn=function(e){var n=e.title,t=e.titleId,a=Zn(e,Un);return r.createElement("svg",$n({id:"Content",xmlns:"http://www.w3.org/2000/svg",x:0,y:0,viewBox:"0 0 6593.8 1410.3",style:{enableBackground:"new 0 0 6593.8 1410.3"},xmlSpace:"preserve","aria-labelledby":t},a),n?r.createElement("title",{id:t},n):null,On||(On=r.createElement("style",null,".st0{fill:#fff}")),Ln||(Ln=r.createElement("path",{className:"st0",d:"M2047.8 210.4c-77.2 0-151.6 9.7-181.9 17.9-44.1 12.4-55.1 31.7-63.4 71.7l-175 807.5c-2.8 16.5-5.5 30.3-5.5 44.1 0 40 26.2 66.1 68.9 66.1 46.9 0 66.2-30.3 75.8-77.2l49.6-230.1c34.4 4.1 79.9 8.3 144.7 8.3 285.3 0 463-154.3 463-387.2 0-204-142-321.1-376.2-321.1zm-93.7 576c-44.1 0-78.6-1.4-110.2-5.5l92.3-428.6c28.9-4.1 71.7-9.7 115.8-9.7 151.6 0 228.8 71.7 228.8 190.2-.1 151.6-110.4 253.6-326.7 253.6zM6537.3 951.7c-23.4 0-38.6 13.8-67.5 45.5-51 52.4-82.7 81.3-122.6 81.3-35.8 0-55.1-28.9-55.1-75.8 0-26.2 5.5-57.9 12.4-92.3l51-239.8h153c48.2 0 77.2-27.6 77.2-77.2 0-27.6-17.9-48.2-59.2-48.2H6383l24.8-111.6c2.8-16.5 5.5-31.7 5.5-45.5 0-38.6-26.2-66.2-68.9-66.2-45.5 0-66.1 30.3-75.8 77.2l-31.7 146.1h-64.8c-49.6 0-78.5 27.6-78.5 77.2 0 27.6 19.3 48.2 60.6 48.2h56.5l-51 237c-5.5 26.2-12.4 68.9-12.4 113 0 111.6 57.9 192.9 181.9 192.9 71.7 0 135-35.8 183.3-78.6 46.9-41.3 81.3-92.3 81.3-125.4 0-31.6-24.8-57.8-56.5-57.8zM3367.9 291.7c0-40-27.6-66.2-70.3-66.2-45.5 0-66.1 30.3-75.8 77.2l-172.2 800.6c-4.1 16.5-6.9 30.3-6.9 44.1 0 40 27.6 66.1 68.9 66.1 46.9 0 67.5-30.3 77.2-77.2L3361 335.8c2.8-16.6 6.9-30.3 6.9-44.1zM5827.6 531.4c-220.5 0-370.7 219.1-370.7 427.2 0 3.9.1 7.8.2 11.6-34.6 52.5-78.8 106.9-109.1 106.9-22 0-30.3-20.7-30.3-52.4 0-38.6 11-103.4 23.4-159.9l114.4-529.2c2.8-16.5 5.5-30.3 5.5-44.1 0-40-26.2-66.2-68.9-66.2-46.9 0-66.1 30.3-75.8 77.2l-62 286.6c-33.1-34.4-81.4-57.9-154.4-57.9-146.4 0-293.7 112.7-351.1 285.6-63.2 163.4-119.7 260.1-164.3 260.1-16.5 0-26.2-13.8-26.2-37.2 0-68.9 38.6-237 55.1-318.3 5.5-30.3 8.3-42.7 8.3-60.6 0-60.6-100.6-132.3-231.5-132.3-151.4 0-288.5 95.9-357.2 238.3-102.1 180.4-195.8 310.1-242.2 310.1-20.7 0-27.6-26.2-33.1-51L3723.4 836l210.8-172.2c19.3-16.5 44.1-40 44.1-70.3 0-37.2-24.8-62-62-62-27.6 0-51 16.5-74.4 35.8L3525 829.1l106.1-493.3c2.8-16.5 6.9-30.3 6.9-44.1 0-40-27.6-66.2-70.3-66.2-45.5 0-66.1 30.3-75.8 77.2l-172.2 800.6c-4.1 16.5-6.9 30.3-6.9 44.1 0 40 27.6 66.1 68.9 66.1 46.9 0 67.5-30.3 77.2-77.2L3481 1033l129.5-104.7 31.7 159.8c12.4 63.4 45.5 125.4 130.9 125.4 85 0 151.9-77.6 218.9-182.5 20.3 109.9 98.5 182.5 207 182.5 108.9 0 183.3-64.8 231.5-151.6v2.8c0 89.6 45.5 148.8 125.4 148.8 72.3 0 132.3-43.6 185.9-136.2 30.4 80.7 98.4 136.2 193 136.2 111.6 0 191.5-67.5 242.5-161.2v8.3c0 99.2 49.6 153 130.9 153 71.8 0 132.8-41.7 184.9-109.5 39.6 67.8 110.6 109.5 206.5 109.5 220.5 0 370.7-219.1 370.7-428.6-.1-147.5-89.7-253.6-242.7-253.6zM4453.8 811.2c-40 172.2-125.4 270.1-221.9 270.1-64.8 0-100.6-49.6-100.6-124 0-146.1 106.1-303.2 248-303.2 42.7 0 75.8 12.4 104.7 30.3l-30.2 126.8zm767.5-73c-44.1 202.6-144.7 343.1-254.9 343.1-60.6 0-96.5-46.9-96.5-124 0-147.4 102-300.4 238.4-300.4 52.4 0 92.3 17.9 121.3 41.3l-8.3 40zm494.7 343.1c-79.9 0-113-57.9-113-130.9 0-133.7 92.3-286.6 208.1-286.6 79.9 0 113 57.9 113 130.9 0 135-92.3 286.6-208.1 286.6zM2767.1 531.4c-220.5 0-370.7 219.1-370.7 427.2 0 148.8 89.6 254.9 242.5 254.9 220.5 0 370.7-219.1 370.7-428.6 0-147.4-89.6-253.5-242.5-253.5zm-111.6 549.9c-79.9 0-113-57.9-113-130.9 0-133.7 92.3-286.6 208.1-286.6 79.9 0 113 57.9 113 130.9-.1 135-92.4 286.6-208.1 286.6z"})),Nn||(Nn=r.createElement("ellipse",{className:"st0",cx:663,cy:147.9,rx:254.3,ry:147.9})),In||(In=r.createElement("ellipse",{className:"st0",cx:663,cy:1262.3,rx:254.3,ry:147.9})),Rn||(Rn=r.createElement("ellipse",{transform:"rotate(-60 180.499 426.56)",className:"st0",cx:180.5,cy:426.5,rx:254.3,ry:148})),jn||(jn=r.createElement("ellipse",{transform:"rotate(-60 1145.575 983.768)",className:"st0",cx:1145.6,cy:983.7,rx:254.3,ry:147.9})),Mn||(Mn=r.createElement("ellipse",{transform:"rotate(-30 180.45 983.72)",className:"st0",cx:180.5,cy:983.7,rx:148,ry:254.3})),Dn||(Dn=r.createElement("ellipse",{transform:"rotate(-30 1145.522 426.601)",className:"st0",cx:1145.6,cy:426.6,rx:147.9,ry:254.3})))};function Gn(){var e=function(e){var n=e.href,t=e.className;return r.createElement("li",{className:"text-white mr-2 mr-lg-0 mr-xl-2"},r.createElement("a",{href:n,target:"_blank",rel:"noopener noreferrer"},r.createElement("i",{className:t})))},n=function(){return r.createElement("ul",{className:"list-social-links mt-5 mt-lg-0 justify-content-lg-end"},r.createElement(e,{href:"https://twitter.com/Polkadot",className:"socicon-twitter"}),r.createElement(e,{href:"https://www.reddit.com/r/polkadot",className:"socicon-reddit"}),r.createElement(e,{href:"https://github.com/paritytech/polkadot-sdk",className:"socicon-github"}),r.createElement(e,{href:"https://www.youtube.com/channel/UCB7PbjuZLEba_znc7mEGNgw",className:"socicon-youtube"}),r.createElement(e,{href:"https://dot.li/discord",className:"socicon-discord"}))};return r.createElement(zn.Z,{className:"px-lg-0"},r.createElement(n,null))}function Vn(e){var n=e.href,t=e.content;return r.createElement("li",null,r.createElement("a",{href:n,className:"text-white text-small",target:"_blank",rel:"noopener noreferrer"},t))}function qn(){var e=(0,me.Z)().siteConfig.themeConfig.footer;return r.createElement("footer",{className:"nav-footer spacer-y-4",id:"footer"},r.createElement(Fn.Z,{className:"container-custom"},r.createElement(Bn.Z,{className:"footer-legal align-items-end"},e&&r.createElement(zn.Z,{lg:2,className:"mb-2 mb-lg-0"},r.createElement("a",{className:"navbar-brand",href:"https://polkadot.network/",target:"_blank",rel:"noopener noreferrer"},r.createElement(Hn,{height:31,alt:"Polkadot Network"}))),r.createElement(zn.Z,{lg:6},r.createElement("ul",{className:"list-unstyled d-flex flex-wrap list-pipe-separator mt-2"},r.createElement(Vn,{content:e.copyright,href:"https://web3.foundation"}),r.createElement(Vn,{content:(0,l.I)({message:"Legal Disclosures",id:"footer.footerLegal.legal-diclosures",description:"Legal Disclosures Button Label in Footer Legal"}),href:"https://polkadot.network/legal-disclosures"}),r.createElement(Vn,{content:(0,l.I)({message:"Disclaimer",id:"footer.footerLegal.disclaimer",description:"Disclaimer Button Label in Footer Legal"}),href:"https://polkadot.network/disclaimer"}),r.createElement(Vn,{content:(0,l.I)({message:"Privacy",id:"footer.footerLegal.privacy",description:"Privacy Button Label in Footer Legal"}),href:"https://polkadot.network/privacy"}))),r.createElement(Gn,null))))}var Wn=(0,I.Qc)([z.S,k.pl,N.OC,nn.L5,i.VC,function(e){var n=e.children;return r.createElement(R.n2,null,r.createElement(L.M,null,r.createElement(M,null,n)))}]);function Yn(e){var n=e.children;return r.createElement(Wn,null,n)}function Kn(e){var n=e.error,t=e.tryAgain;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(vn,{onClick:t,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(yn,{error:n})))))}const Xn={mainWrapper:"mainWrapper_z2l0"};function Qn(e){var n=e.children,t=e.noFooter,s=e.wrapperClassName,c=e.title,l=e.description;return(0,b.t)(),r.createElement(Yn,null,r.createElement(i.d,{title:c,description:l}),r.createElement(y,null),r.createElement(O,null),r.createElement(An,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,Xn.mainWrapper,s)},r.createElement(o.Z,{fallback:function(e){return r.createElement(Kn,e)}},n)),!t&&r.createElement(qn,null))}},87846:(e,n,t)=>{"use strict";t.d(n,{Z:()=>v});var r=t(87462),a=t(63366),o=t(67294),i=t(39960),s=t(44996),c=t(52263),l=t(86668),u=t(86010),d=t(72389),f=t(92949);const p={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};var m=["sources","className","alt"];function h(e){var n=(0,d.Z)(),t=(0,f.I)().colorMode,i=e.sources,s=e.className,c=e.alt,l=(0,a.Z)(e,m),h=n?"dark"===t?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,h.map((function(e){return o.createElement("img",(0,r.Z)({key:e,src:i[e],alt:c,className:(0,u.Z)(p.themedImage,p["themedImage--"+e],s)},l))})))}var g=["imageClassName","titleClassName"];function b(e){var n=e.logo,t=e.alt,r=e.imageClassName,a={light:(0,s.Z)(n.src),dark:(0,s.Z)(n.srcDark||n.src)},i=o.createElement(h,{className:n.className,sources:a,height:n.height,width:n.width,alt:t,style:n.style});return r?o.createElement("div",{className:r},i):i}function v(e){var n,t=(0,c.Z)().siteConfig.title,u=(0,l.L)().navbar,d=u.title,f=u.logo,p=e.imageClassName,m=e.titleClassName,h=(0,a.Z)(e,g),v=(0,s.Z)((null==f?void 0:f.href)||"/"),y=d?"":t,x=null!=(n=null==f?void 0:f.alt)?n:y;return o.createElement(i.Z,(0,r.Z)({to:v},h,(null==f?void 0:f.target)&&{target:f.target}),f&&o.createElement(b,{logo:f,alt:x,imageClassName:p}),null!=d&&o.createElement("b",{className:m},d))}},90197:(e,n,t)=>{"use strict";t.d(n,{Z:()=>o});var r=t(67294),a=t(35742);function o(e){var n=e.locale,t=e.version,o=e.tag,i=n;return r.createElement(a.Z,null,n&&r.createElement("meta",{name:"docusaurus_locale",content:n}),t&&r.createElement("meta",{name:"docusaurus_version",content:t}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),t&&r.createElement("meta",{name:"docsearch:version",content:t}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},86043:(e,n,t)=>{"use strict";t.d(n,{u:()=>d,z:()=>y});var r=t(87462),a=t(63366),o=t(67294),i=t(10412),s=t(91442),c=["collapsed"],l=["lazy"],u="ease-in-out";function d(e){var n=e.initialState,t=(0,o.useState)(null!=n&&n),r=t[0],a=t[1],i=(0,o.useCallback)((function(){a((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:a,toggleCollapsed:i}}var f={display:"none",overflow:"hidden",height:"0px"},p={display:"block",overflow:"visible",height:"auto"};function m(e,n){var t=n?f:p;e.style.display=t.display,e.style.overflow=t.overflow,e.style.height=t.height}function h(e){var n=e.collapsibleRef,t=e.collapsed,r=e.animation,a=(0,o.useRef)(!1);(0,o.useEffect)((function(){var e,o=n.current;function i(){var e,n,t=o.scrollHeight,a=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,s.n)())return 1;var n=e/36;return Math.round(10*(4+15*Math.pow(n,.25)+n/5))}(t);return{transition:"height "+a+"ms "+(null!=(n=null==r?void 0:r.easing)?n:u),height:t+"px"}}function c(){var e=i();o.style.transition=e.transition,o.style.height=e.height}if(!a.current)return m(o,t),void(a.current=!0);return o.style.willChange="height",e=requestAnimationFrame((function(){t?(c(),requestAnimationFrame((function(){o.style.height=f.height,o.style.overflow=f.overflow}))):(o.style.display="block",requestAnimationFrame((function(){c()})))})),function(){return cancelAnimationFrame(e)}}),[n,t,r])}function g(e){if(!i.Z.canUseDOM)return e?f:p}function b(e){var n=e.as,t=void 0===n?"div":n,r=e.collapsed,a=e.children,i=e.animation,s=e.onCollapseTransitionEnd,c=e.className,l=e.disableSSRStyle,u=(0,o.useRef)(null);return h({collapsibleRef:u,collapsed:r,animation:i}),o.createElement(t,{ref:u,style:l?void 0:g(r),onTransitionEnd:function(e){"height"===e.propertyName&&(m(u.current,r),null==s||s(r))},className:c},a)}function v(e){var n=e.collapsed,t=(0,a.Z)(e,c),i=(0,o.useState)(!n),s=i[0],l=i[1],u=(0,o.useState)(n),d=u[0],f=u[1];return(0,o.useLayoutEffect)((function(){n||l(!0)}),[n]),(0,o.useLayoutEffect)((function(){s&&f(n)}),[s,n]),s?o.createElement(b,(0,r.Z)({},t,{collapsed:d})):null}function y(e){var n=e.lazy,t=(0,a.Z)(e,l),r=n?v:b;return o.createElement(r,t)}},59689:(e,n,t)=>{"use strict";t.d(n,{nT:()=>m,pl:()=>p});var r=t(67294),a=t(72389),o=t(50012),i=t(69688),s=t(86668),c=(0,o.WA)("docusaurus.announcement.dismiss"),l=(0,o.WA)("docusaurus.announcement.id"),u=function(){return"true"===c.get()},d=function(e){return c.set(String(e))},f=r.createContext(null);function p(e){var n=e.children,t=function(){var e=(0,s.L)().announcementBar,n=(0,a.Z)(),t=(0,r.useState)((function(){return!!n&&u()})),o=t[0],i=t[1];(0,r.useEffect)((function(){i(u())}),[]);var c=(0,r.useCallback)((function(){d(!0),i(!0)}),[]);return(0,r.useEffect)((function(){if(e){var n=e.id,t=l.get();"annoucement-bar"===t&&(t="announcement-bar");var r=n!==t;l.set(n),r&&d(!1),!r&&u()||i(!1)}}),[e]),(0,r.useMemo)((function(){return{isActive:!!e&&!o,close:c}}),[e,o,c])}();return r.createElement(f.Provider,{value:t},n)}function m(){var e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},92949:(e,n,t)=>{"use strict";t.d(n,{I:()=>g,S:()=>h});var r=t(67294),a=t(10412),o=t(69688),i=t(50012),s=t(86668),c=r.createContext(void 0),l="theme",u=(0,i.WA)(l),d={light:"light",dark:"dark"},f=function(e){return e===d.dark?d.dark:d.light},p=function(e){return a.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e)},m=function(e){u.set(f(e))};function h(e){var n=e.children,t=function(){var e=(0,s.L)().colorMode,n=e.defaultMode,t=e.disableSwitch,a=e.respectPrefersColorScheme,o=(0,r.useState)(p(n)),i=o[0],c=o[1];(0,r.useEffect)((function(){t&&u.del()}),[t]);var h=(0,r.useCallback)((function(e,t){void 0===t&&(t={});var r=t.persist,o=void 0===r||r;e?(c(e),o&&m(e)):(c(a?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:n),u.del())}),[a,n]);(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",f(i))}),[i]),(0,r.useEffect)((function(){if(!t){var e=function(e){if(e.key===l){var n=u.get();null!==n&&h(f(n))}};return window.addEventListener("storage",e),function(){return window.removeEventListener("storage",e)}}}),[t,h]);var g=(0,r.useRef)(!1);return(0,r.useEffect)((function(){if(!t||a){var e=window.matchMedia("(prefers-color-scheme: dark)"),n=function(){window.matchMedia("print").matches||g.current?g.current=window.matchMedia("print").matches:h(null)};return e.addListener(n),function(){return e.removeListener(n)}}}),[h,t,a]),(0,r.useMemo)((function(){return{colorMode:i,setColorMode:h,get isDarkTheme(){return i===d.dark},setLightTheme:function(){h(d.light)},setDarkTheme:function(){h(d.dark)}}}),[i,h])}();return r.createElement(c.Provider,{value:t},n)}function g(){var e=(0,r.useContext)(c);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},60373:(e,n,t)=>{"use strict";t.d(n,{J:()=>v,L5:()=>g,Oh:()=>y});var r=t(67294),a=t(80143),o=t(29935),i=t(86668),s=t(53438),c=t(69688),l=t(50012),u=function(e){return"docs-preferred-version-"+e},d={save:function(e,n,t){(0,l.WA)(u(e),{persistence:n}).set(t)},read:function(e,n){return(0,l.WA)(u(e),{persistence:n}).get()},clear:function(e,n){(0,l.WA)(u(e),{persistence:n}).del()}},f=function(e){return Object.fromEntries(e.map((function(e){return[e,{preferredVersionName:null}]})))};var p=r.createContext(null);function m(){var e=(0,a._r)(),n=(0,i.L)().docs.versionPersistence,t=(0,r.useMemo)((function(){return Object.keys(e)}),[e]),o=(0,r.useState)((function(){return f(t)})),s=o[0],c=o[1];return(0,r.useEffect)((function(){c(function(e){var n=e.pluginIds,t=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(n.map((function(e){return[e,(n=e,a=d.read(n,t),r[n].versions.some((function(e){return e.name===a}))?{preferredVersionName:a}:(d.clear(n,t),{preferredVersionName:null}))];var n,a})))}({allDocsData:e,versionPersistence:n,pluginIds:t}))}),[e,n,t]),[s,(0,r.useMemo)((function(){return{savePreferredVersion:function(e,t){d.save(e,n,t),c((function(n){var r;return Object.assign({},n,((r={})[e]={preferredVersionName:t},r))}))}}}),[n])]}function h(e){var n=e.children,t=m();return r.createElement(p.Provider,{value:t},n)}function g(e){var n=e.children;return s.cE?r.createElement(h,null,n):r.createElement(r.Fragment,null,n)}function b(){var e=(0,r.useContext)(p);if(!e)throw new c.i6("DocsPreferredVersionContextProvider");return e}function v(e){var n;void 0===e&&(e=o.m);var t=(0,a.zh)(e),i=b(),s=i[0],c=i[1],l=s[e].preferredVersionName;return{preferredVersion:null!=(n=t.versions.find((function(e){return e.name===l})))?n:null,savePreferredVersionName:(0,r.useCallback)((function(n){c.savePreferredVersion(e,n)}),[c,e])}}function y(){var e=(0,a._r)(),n=b()[0];var t=Object.keys(e);return Object.fromEntries(t.map((function(t){return[t,(r=t,o=e[r],i=n[r].preferredVersionName,null!=(a=o.versions.find((function(e){return e.name===i})))?a:null)];var r,a,o,i})))}},1116:(e,n,t)=>{"use strict";t.d(n,{V:()=>c,b:()=>s});var r=t(67294),a=t(69688),o=Symbol("EmptyContext"),i=r.createContext(o);function s(e){var n=e.children,t=e.name,a=e.items,o=(0,r.useMemo)((function(){return t&&a?{name:t,items:a}:null}),[t,a]);return r.createElement(i.Provider,{value:o},n)}function c(){var e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},74477:(e,n,t)=>{"use strict";t.d(n,{E:()=>s,q:()=>i});var r=t(67294),a=t(69688),o=r.createContext(null);function i(e){var n=e.children,t=e.version;return r.createElement(o.Provider,{value:t},n)}function s(){var e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},93163:(e,n,t)=>{"use strict";t.d(n,{M:()=>d,e:()=>f});var r=t(67294),a=t(13102),o=t(87524),i=t(91980),s=t(86668),c=t(69688),l=r.createContext(void 0);function u(){var e,n=(e=(0,a.HY)(),0===(0,s.L)().navbar.items.length&&!e.component),t=(0,o.i)(),c=!n&&"mobile"===t,l=(0,r.useState)(!1),u=l[0],d=l[1];(0,i.Rb)((function(){if(u)return d(!1),!1}));var f=(0,r.useCallback)((function(){d((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===t&&d(!1)}),[t]),(0,r.useMemo)((function(){return{disabled:n,shouldRender:c,toggle:f,shown:u}}),[n,c,f,u])}function d(e){var n=e.children,t=u();return r.createElement(l.Provider,{value:t},n)}function f(){var e=r.useContext(l);if(void 0===e)throw new c.i6("NavbarMobileSidebarProvider");return e}},13102:(e,n,t)=>{"use strict";t.d(n,{HY:()=>s,Zo:()=>c,n2:()=>i});var r=t(67294),a=t(69688),o=r.createContext(null);function i(e){var n=e.children,t=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:t},n)}function s(){var e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){var n=e.component,t=e.props,i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");var s=i[1],c=(0,a.Ql)(t);return(0,r.useEffect)((function(){s({component:n,props:c})}),[s,n,c]),(0,r.useEffect)((function(){return function(){return s({component:null,props:null})}}),[s]),null}},19727:(e,n,t)=>{"use strict";t.d(n,{h:()=>a,t:()=>o});var r=t(67294),a="navigation-with-keyboard";function o(){(0,r.useEffect)((function(){function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),function(){document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},66177:(e,n,t)=>{"use strict";t.d(n,{K:()=>s,M:()=>c});var r=t(67294),a=t(52263),o=t(91980),i="q";function s(){return(0,o.Nc)(i)}function c(){var e=(0,a.Z)().siteConfig,n=e.baseUrl,t=e.themeConfig.algolia.searchPagePath;return(0,r.useCallback)((function(e){return""+n+t+"?"+i+"="+encodeURIComponent(e)}),[n,t])}},87524:(e,n,t)=>{"use strict";t.d(n,{i:()=>l});var r=t(67294),a=t(10412),o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}var c=!1;function l(){var e=(0,r.useState)((function(){return c?"ssr":s()})),n=e[0],t=e[1];return(0,r.useEffect)((function(){function e(){t(s())}var n=c?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(n)}}),[]),n}},35281:(e,n,t)=>{"use strict";t.d(n,{k:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:function(e){return"theme-admonition-"+e}},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:function(e){return"theme-doc-sidebar-item-category-level-"+e},docSidebarItemLinkLevel:function(e){return"theme-doc-sidebar-item-link-level-"+e}},blog:{}}},91442:(e,n,t)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}t.d(n,{n:()=>r})},53438:(e,n,t)=>{"use strict";t.d(n,{MN:()=>C,Wl:()=>h,_F:()=>y,cE:()=>p,hI:()=>S,jA:()=>g,lO:()=>w,oz:()=>E,s1:()=>k,vY:()=>_,xz:()=>m});var r=t(67855),a=t(67294),o=t(16550),i=t(18790),s=t(80143),c=t(60373),l=t(74477),u=t(1116),d=t(67392),f=t(48596),p=!!s._r;function m(e){var n=(0,l.E)();if(e){var t=n.docs[e];if(!t)throw new Error("no version doc found by id="+e);return t}}function h(e){if(e.href)return e.href;for(var n,t=(0,r.Z)(e.items);!(n=t()).done;){var a=n.value;if("link"===a.type)return a.href;if("category"===a.type){var o=h(a);if(o)return o}}}function g(){var e=(0,o.TH)().pathname,n=(0,u.V)();if(!n)throw new Error("Unexpected: cant find current sidebar in context");var t=x({sidebarItems:n.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!t)throw new Error(e+" is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.");return t}var b=function(e,n){return void 0!==e&&(0,f.Mg)(e,n)},v=function(e,n){return e.some((function(e){return y(e,n)}))};function y(e,n){return"link"===e.type?b(e.href,n):"category"===e.type&&(b(e.href,n)||v(e.items,n))}function x(e){var n=e.sidebarItems,t=e.pathname,a=e.onlyCategories,o=void 0!==a&&a,i=[];return function e(n){for(var a,s=(0,r.Z)(n);!(a=s()).done;){var c=a.value;if("category"===c.type&&((0,f.Mg)(c.href,t)||e(c.items))||"link"===c.type&&(0,f.Mg)(c.href,t))return o&&"category"!==c.type||i.unshift(c),!0}return!1}(n),i}function k(){var e,n=(0,u.V)(),t=(0,o.TH)().pathname;return!1!==(null==(e=(0,s.gA)())?void 0:e.pluginData.breadcrumbs)&&n?x({sidebarItems:n.items,pathname:t}):null}function w(e){var n=(0,s.Iw)(e).activeVersion,t=(0,c.J)(e).preferredVersion,r=(0,s.yW)(e);return(0,a.useMemo)((function(){return(0,d.j)([n,t,r].filter(Boolean))}),[n,t,r])}function E(e,n){var t=w(n);return(0,a.useMemo)((function(){var n=t.flatMap((function(e){return e.sidebars?Object.entries(e.sidebars):[]})),r=n.find((function(n){return n[0]===e}));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(t.length>1?"s":"")+" "+t.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+n.map((function(e){return e[0]})).join("\n- "));return r[1]}),[e,t])}function _(e,n){var t=w(n);return(0,a.useMemo)((function(){var n=t.flatMap((function(e){return e.docs})),r=n.find((function(n){return n.id===e}));if(!r){if(t.flatMap((function(e){return e.draftIds})).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(t.length>1?"s":"")+' "'+t.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+(0,d.j)(n.map((function(e){return e.id}))).join("\n- "))}return r}),[e,t])}function S(e){var n=e.route,t=e.versionMetadata,r=(0,o.TH)(),a=n.routes,s=a.find((function(e){return(0,o.LX)(r.pathname,e)}));if(!s)return null;var c=s.sidebar,l=c?t.docsSidebars[c]:void 0;return{docElement:(0,i.H)(a),sidebarName:c,sidebarItems:l}}function C(e){return e.filter((function(e){return"category"!==e.type||!!h(e)}))}},82128:(e,n,t)=>{"use strict";t.d(n,{p:()=>a});var r=t(52263);function a(e){var n=(0,r.Z)().siteConfig,t=n.title,a=n.titleDelimiter;return null!=e&&e.trim().length?e.trim()+" "+a+" "+t:t}},91980:(e,n,t)=>{"use strict";t.d(n,{Nc:()=>l,Rb:()=>s,_X:()=>c});var r=t(67294),a=t(16550),o=t(61688),i=t(69688);function s(e){!function(e){var n=(0,a.k6)(),t=(0,i.zX)(e);(0,r.useEffect)((function(){return n.block((function(e,n){return t(e,n)}))}),[n,t])}((function(n,t){if("POP"===t)return e(n,t)}))}function c(e){return n=function(n){return null===e?null:new URLSearchParams(n.location.search).get(e)},t=(0,a.k6)(),(0,o.useSyncExternalStore)(t.listen,(function(){return n(t)}),(function(){return n(t)}));var n,t}function l(e){var n,t,o=null!=(n=c(e))?n:"",i=(t=(0,a.k6)(),(0,r.useCallback)((function(e,n,r){var a=new URLSearchParams(t.location.search);n?a.set(e,n):a.delete(e),(null!=r&&r.push?t.push:t.replace)({search:a.toString()})}),[t]));return[o,(0,r.useCallback)((function(n,t){i(e,n,t)}),[i,e])]}},67392:(e,n,t)=>{"use strict";function r(e,n){return void 0===n&&(n=function(e,n){return e===n}),e.filter((function(t,r){return e.findIndex((function(e){return n(e,t)}))!==r}))}function a(e){return Array.from(new Set(e))}t.d(n,{j:()=>a,l:()=>r})},10833:(e,n,t)=>{"use strict";t.d(n,{FG:()=>f,d:()=>u,VC:()=>p});var r=t(67294),a=t(86010),o=t(35742),i=t(30226);function s(){var e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var c=t(44996),l=t(82128);function u(e){var n=e.title,t=e.description,a=e.keywords,i=e.image,s=e.children,u=(0,l.p)(n),d=(0,c.C)().withBaseUrl,f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,n&&r.createElement("title",null,u),n&&r.createElement("meta",{property:"og:title",content:u}),t&&r.createElement("meta",{name:"description",content:t}),t&&r.createElement("meta",{property:"og:description",content:t}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),s)}var d=r.createContext(void 0);function f(e){var n=e.className,t=e.children,i=r.useContext(d),s=(0,a.Z)(i,n);return r.createElement(d.Provider,{value:s},r.createElement(o.Z,null,r.createElement("html",{className:s})),t)}function p(e){var n=e.children,t=s(),o="plugin-"+t.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),i="plugin-id-"+t.plugin.id;return r.createElement(f,{className:(0,a.Z)(o,i)},n)}},69688:(e,n,t)=>{"use strict";t.d(n,{i6:()=>p,Qc:()=>h,zX:()=>d,D9:()=>f,Ql:()=>m});var r=t(87099),a=t(94578);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=t(89611);function s(e,n,t){return s=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}()?Reflect.construct.bind():function(e,n,t){var r=[null];r.push.apply(r,n);var a=new(Function.bind.apply(e,r));return t&&(0,i.Z)(a,t.prototype),a},s.apply(null,arguments)}function c(e){var n="function"==typeof Map?new Map:void 0;return c=function(e){if(null===e||!function(e){try{return-1!==Function.toString.call(e).indexOf("[native code]")}catch(n){return"function"==typeof e}}(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==n){if(n.has(e))return n.get(e);n.set(e,t)}function t(){return s(e,arguments,o(this).constructor)}return t.prototype=Object.create(e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),(0,i.Z)(t,e)},c(e)}var l=t(67294),u=t(10412).Z.canUseDOM?l.useLayoutEffect:l.useEffect;function d(e){var n=(0,l.useRef)(e);return u((function(){n.current=e}),[e]),(0,l.useCallback)((function(){return n.current.apply(n,arguments)}),[])}function f(e){var n=(0,l.useRef)();return u((function(){n.current=e})),n.current}var p=function(e){function n(n,t){var a,o,i;return(i=e.call(this)||this).name="ReactContextError",i.message="Hook "+(null!=(a=null==(o=i.stack)||null==(o=o.split("\n")[1])||null==(o=o.match((0,r.Z)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:o.groups.name)?a:"")+" is called outside the <"+n+">. "+(null!=t?t:""),i}return(0,a.Z)(n,e),n}(c(Error));function m(e){var n=Object.entries(e);return n.sort((function(e,n){return e[0].localeCompare(n[0])})),(0,l.useMemo)((function(){return e}),n.flat())}function h(e){return function(n){var t=n.children;return l.createElement(l.Fragment,null,e.reduceRight((function(e,n){return l.createElement(n,null,e)}),t))}}},98022:(e,n,t)=>{"use strict";function r(e,n){return void 0!==e&&void 0!==n&&new RegExp(e,"gi").test(n)}t.d(n,{F:()=>r})},48596:(e,n,t)=>{"use strict";t.d(n,{Mg:()=>i,Ns:()=>s});var r=t(67294),a=t(69204),o=t(52263);function i(e,n){var t=function(e){var n;return null==(n=!e||e.endsWith("/")?e:e+"/")?void 0:n.toLowerCase()};return t(e)===t(n)}function s(){var e=(0,o.Z)().siteConfig.baseUrl;return(0,r.useMemo)((function(){return function(e){var n=e.baseUrl;function t(e){return e.path===n&&!0===e.exact}function r(e){return e.path===n&&!e.exact}return function e(n){if(0!==n.length)return n.find(t)||e(n.filter(r).flatMap((function(e){var n;return null!=(n=e.routes)?n:[]})))}(e.routes)}({routes:a.Z,baseUrl:e})}),[e])}},12466:(e,n,t)=>{"use strict";t.d(n,{Ct:()=>p,OC:()=>c,RF:()=>d,o5:()=>f});var r=t(67294),a=t(10412),o=t(72389),i=t(69688);var s=r.createContext(void 0);function c(e){var n,t=e.children,a=(n=(0,r.useRef)(!0),(0,r.useMemo)((function(){return{scrollEventsEnabledRef:n,enableScrollEvents:function(){n.current=!0},disableScrollEvents:function(){n.current=!1}}}),[]));return r.createElement(s.Provider,{value:a},t)}function l(){var e=(0,r.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}var u=function(){return a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function d(e,n){void 0===n&&(n=[]);var t=l().scrollEventsEnabledRef,a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((function(){var e=function(){if(t.current){var e=u();o(e,a.current),a.current=e}},n={passive:!0};return e(),window.addEventListener("scroll",e,n),function(){return window.removeEventListener("scroll",e,n)}}),[o,t].concat(n))}function f(){var e,n,t,a=l(),o=(e=(0,r.useRef)({elem:null,top:0}),n=(0,r.useCallback)((function(n){e.current={elem:n,top:n.getBoundingClientRect().top}}),[]),t=(0,r.useCallback)((function(){var n=e.current,t=n.elem,r=n.top;if(!t)return{restored:!1};var a=t.getBoundingClientRect().top-r;return a&&window.scrollBy({left:0,top:a}),e.current={elem:null,top:0},{restored:0!==a}}),[]),(0,r.useMemo)((function(){return{save:n,restore:t}}),[t,n])),i=(0,r.useRef)(void 0),s=(0,r.useCallback)((function(e){o.save(e),a.disableScrollEvents(),i.current=function(){var e=o.restore().restored;if(i.current=void 0,e){window.addEventListener("scroll",(function e(){a.enableScrollEvents(),window.removeEventListener("scroll",e)}))}else a.enableScrollEvents()}}),[a,o]);return(0,r.useLayoutEffect)((function(){queueMicrotask((function(){return null==i.current?void 0:i.current()}))})),{blockElementScrollPositionUntilNextRender:s}}function p(){var e=(0,r.useRef)(null),n=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(t){e.current=n?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(t):function(e){var n=null,t=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(t&&a>e||!t&&a{"use strict";t.d(n,{HX:()=>i,_q:()=>c,os:()=>s});var r=t(80143),a=t(52263),o=t(60373),i="default";function s(e,n){return"docs-"+e+"-"+n}function c(){var e=(0,a.Z)().i18n,n=(0,r._r)(),t=(0,r.WS)(),c=(0,o.Oh)();var l=[i].concat(Object.keys(n).map((function(e){var r,a=(null==t?void 0:t.activePlugin.pluginId)===e?t.activeVersion:void 0,o=c[e],i=n[e].versions.find((function(e){return e.isLast}));return s(e,(null!=(r=null!=a?a:o)?r:i).name)})));return{locale:e.currentLocale,tags:l}}},50012:(e,n,t)=>{"use strict";t.d(n,{Nk:()=>d,WA:()=>u});var r=t(67294),a=t(61688),o="localStorage";function i(e){var n=e.key,t=e.oldValue,r=e.newValue,a=e.storage;if(t!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,n,t,r,window.location.href,a),window.dispatchEvent(o)}}function s(e){if(void 0===e&&(e=o),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(t){return n=t,c||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",n),c=!0),null}var n}var c=!1;var l={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function u(e,n){if("undefined"==typeof window)return function(e){function n(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:n,set:n,del:n,listen:n}}(e);var t=s(null==n?void 0:n.persistence);return null===t?l:{get:function(){try{return t.getItem(e)}catch(n){return console.error("Docusaurus storage error, can't get key="+e,n),null}},set:function(n){try{var r=t.getItem(e);t.setItem(e,n),i({key:e,oldValue:r,newValue:n,storage:t})}catch(a){console.error("Docusaurus storage error, can't set "+e+"="+n,a)}},del:function(){try{var n=t.getItem(e);t.removeItem(e),i({key:e,oldValue:n,newValue:null,storage:t})}catch(r){console.error("Docusaurus storage error, can't delete key="+e,r)}},listen:function(n){try{var r=function(r){r.storageArea===t&&r.key===e&&n(r)};return window.addEventListener("storage",r),function(){return window.removeEventListener("storage",r)}}catch(a){return console.error("Docusaurus storage error, can't listen for changes of key="+e,a),function(){}}}}}function d(e,n){var t=(0,r.useRef)((function(){return null===e?l:u(e,n)})).current(),o=(0,r.useCallback)((function(e){return"undefined"==typeof window?function(){}:t.listen(e)}),[t]);return[(0,a.useSyncExternalStore)(o,(function(){return"undefined"==typeof window?null:t.get()}),(function(){return null})),t]}},94711:(e,n,t)=>{"use strict";t.d(n,{l:()=>i});var r=t(52263),a=t(16550),o=t(18780);function i(){var e=(0,r.Z)(),n=e.siteConfig,t=n.baseUrl,i=n.url,s=n.trailingSlash,c=e.i18n,l=c.defaultLocale,u=c.currentLocale,d=(0,a.TH)().pathname,f=(0,o.applyTrailingSlash)(d,{trailingSlash:s,baseUrl:t}),p=u===l?t:t.replace("/"+u+"/","/"),m=f.replace(t,"");return{createUrl:function(e){var n=e.locale;return""+(e.fullyQualified?i:"")+function(e){return e===l?""+p:""+p+e+"/"}(n)+m}}}},85936:(e,n,t)=>{"use strict";t.d(n,{S:()=>i});var r=t(67294),a=t(16550),o=t(69688);function i(e){var n=(0,a.TH)(),t=(0,o.D9)(n),i=(0,o.zX)(e);(0,r.useEffect)((function(){t&&n!==t&&i({location:n,previousLocation:t})}),[i,n,t])}},86668:(e,n,t)=>{"use strict";t.d(n,{L:()=>a});var r=t(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},6278:(e,n,t)=>{"use strict";t.d(n,{L:()=>a});var r=t(52263);function a(){return(0,r.Z)().siteConfig.themeConfig}},239:(e,n,t)=>{"use strict";t.d(n,{l:()=>s});var r=t(67294),a=t(98022),o=t(44996),i=t(6278);function s(){var e=(0,o.C)().withBaseUrl,n=(0,i.L)().algolia,t=n.externalUrlRegex,s=n.replaceSearchResultPathname;return(0,r.useCallback)((function(n){var r=new URL(n);if((0,a.F)(t,r.href))return n;var o=""+(r.pathname+r.hash);return e(function(e,n){return n?e.replaceAll(new RegExp(n.from,"g"),n.to):e}(o,s))}),[e,t,s])}},8802:(e,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){var t=n.trailingSlash,r=n.baseUrl;if(e.startsWith("#"))return e;if(void 0===t)return e;var a,o=e.split(/[#?]/)[0],i="/"===o||o===r?o:(a=o,t?function(e){return e.endsWith("/")?e:e+"/"}(a):function(e){return e.endsWith("/")?e.slice(0,-1):e}(a));return e.replace(o,i)}},54143:(e,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.getErrorCausalChain=void 0,n.getErrorCausalChain=function e(n){return n.cause?[n].concat(e(n.cause)):[n]}},18780:function(e,n,t){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.getErrorCausalChain=n.applyTrailingSlash=n.blogPostContainerID=void 0,n.blogPostContainerID="__blog-post-container";var a=t(8802);Object.defineProperty(n,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=t(54143);Object.defineProperty(n,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},69204:(e,n,t)=>{"use strict";t.d(n,{Z:()=>p});var r=t(67294),a=t(87462),o=t(68356),i=t.n(o),s=t(85345);const c={"06597bc8":[function(){return t.e(9856).then(t.bind(t,45401))},"@site/../docs/learn/archive/learn-treasury.md",45401],"06ea9e61":[function(){return t.e(4825).then(t.t.bind(t,82948,19))},"~docs/default/category-docs-docs-category-protocol-parachain-development-a87.json",82948],"078895e8":[function(){return t.e(740).then(t.bind(t,82681))},"@site/../docs/learn/archive/learn-controller.md",82681],"0a3f0c9b":[function(){return t.e(7837).then(t.bind(t,83388))},"@site/../docs/general/ledger.md",83388],"0b632434":[function(){return t.e(2635).then(t.bind(t,68173))},"@site/../docs/general/parachains-apps.md",68173],"0c68fb82":[function(){return t.e(5526).then(t.bind(t,81424))},"@site/../docs/general/kusama/kusama-claims.md",81424],"0cb62240":[function(){return t.e(1979).then(t.t.bind(t,74518,19))},"~docs/default/category-docs-docs-category-fundamentals-60b.json",74518],"0df78d26":[function(){return t.e(1723).then(t.bind(t,13449))},"@site/../docs/maintain/maintain-guides-secure-validator.md",13449],"0eeb7a68":[function(){return t.e(1713).then(t.bind(t,51846))},"@site/../docs/learn/learn-guides-DOT-KSM-bridge.md",51846],"113faa87":[function(){return Promise.all([t.e(532),t.e(7738)]).then(t.bind(t,30998))},"@site/../docs/learn/learn-guides-assets.md",30998],"12331e8b":[function(){return t.e(8270).then(t.bind(t,67881))},"@site/../docs/general/polkadotjs.md",67881],"131c7f55":[function(){return Promise.all([t.e(532),t.e(9323)]).then(t.bind(t,93928))},"@site/../docs/learn/learn-architecture.md",93928],"13b7bafa":[function(){return Promise.all([t.e(5424),t.e(6585)]).then(t.bind(t,89501))},"@site/../docs/learn/learn-auction.md",89501],"145746f5":[function(){return Promise.all([t.e(5424),t.e(691)]).then(t.bind(t,30536))},"@site/../docs/maintain/maintain-polkadot-parameters.md",30536],"14eb3368":[function(){return Promise.all([t.e(532),t.e(9817)]).then(t.bind(t,55541))},"@theme/DocCategoryGeneratedIndexPage",55541],15985664:[function(){return t.e(7830).then(t.bind(t,43394))},"@site/../docs/learn/xcm/journey/summary.md",43394],"1646726c":[function(){return Promise.all([t.e(5424),t.e(2169)]).then(t.bind(t,78381))},"@site/../docs/learn/learn-staking.md",78381],17896441:[function(){return Promise.all([t.e(532),t.e(7918)]).then(t.bind(t,91575))},"@theme/DocItem",91575],"1882e65d":[function(){return t.e(5492).then(t.t.bind(t,77274,19))},"/home/runner/work/polkadot-wiki/polkadot-wiki/polkadot-wiki/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",77274],"19ed4d4c":[function(){return t.e(4355).then(t.bind(t,51191))},"@site/../docs/learn/learn-comparisons-cosmos.md",51191],"1a4e3797":[function(){return Promise.all([t.e(532),t.e(7920)]).then(t.bind(t,56675))},"@theme/SearchPage",56675],"1ae2b102":[function(){return Promise.all([t.e(5424),t.e(4537)]).then(t.bind(t,1799))},"@site/../docs/build/build-protocol-info.md",1799],"1be78505":[function(){return Promise.all([t.e(532),t.e(9514)]).then(t.bind(t,19963))},"@theme/DocPage",19963],"1d6d4797":[function(){return t.e(12).then(t.bind(t,35290))},"@site/../docs/learn/xcm/journey/transact.md",35290],"1e15616a":[function(){return t.e(9802).then(t.bind(t,39420))},"@site/../docs/learn/learn-wasm.md",39420],"1ed3671a":[function(){return t.e(1953).then(t.bind(t,63092))},"@site/../docs/learn/xcm/journey/trap-and-claim.md",63092],"21877fa5":[function(){return Promise.all([t.e(5424),t.e(2117)]).then(t.bind(t,4381))},"@site/../docs/learn/learn-system-chains.md",4381],"21899dd2":[function(){return t.e(3599).then(t.bind(t,2741))},"@site/../docs/learn/learn-parachains.md",2741],"23498fd5":[function(){return t.e(810).then(t.bind(t,7551))},"@site/../docs/build/build-integrate-assets.md",7551],"2462cc91":[function(){return t.e(4885).then(t.bind(t,90351))},"@site/../docs/general/multisig-apps.md",90351],"25f2bd2a":[function(){return t.e(1213).then(t.bind(t,16769))},"@site/../docs/maintain/maintain-guides-how-to-stop-validating.md",16769],"279fb1d6":[function(){return Promise.all([t.e(5424),t.e(6827)]).then(t.bind(t,81807))},"@site/../docs/general/kusama/kusama-getting-started.md",81807],"28b84bbb":[function(){return t.e(8444).then(t.bind(t,50310))},"@site/../docs/build/build-network-overview.md",50310],"29a046f3":[function(){return t.e(6918).then(t.t.bind(t,59904,19))},"~docs/default/category-docs-docs-category-polkadot-comparisons-3b4.json",59904],"2be0d940":[function(){return Promise.all([t.e(5424),t.e(2914)]).then(t.bind(t,77078))},"@site/../docs/learn/learn-guides-identity.md",77078],"2d429218":[function(){return t.e(502).then(t.bind(t,20925))},"@site/../docs/learn/learn-consensus.md",20925],"2ea50c63":[function(){return t.e(2949).then(t.bind(t,84941))},"@site/../docs/learn/learn-xcm-usecases.md",84941],"2f3b630e":[function(){return Promise.all([t.e(5424),t.e(9226)]).then(t.bind(t,42569))},"@site/../docs/learn/learn-polkadot-opengov.md",42569],"3002ebf4":[function(){return Promise.all([t.e(532),t.e(6325)]).then(t.bind(t,64280))},"@site/../docs/build/build-dapp.md",64280],"30d868e8":[function(){return t.e(8215).then(t.t.bind(t,8578,19))},"~docs/default/category-docs-docs-category-multilocation-8c6.json",8578],"3104d5d8":[function(){return t.e(9977).then(t.t.bind(t,45050,19))},"~docs/default/category-docs-docs-category-programs-fa8.json",45050],"3184af97":[function(){return t.e(1125).then(t.bind(t,43335))},"@site/../docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",43335],"31bd35e0":[function(){return t.e(5281).then(t.bind(t,35660))},"@site/../docs/learn/xcm/overview/summary.md",35660],"31c99aa1":[function(){return t.e(8876).then(t.t.bind(t,45497,19))},"~docs/default/category-docs-docs-category-references-a4f.json",45497],"320c8a05":[function(){return t.e(5005).then(t.bind(t,76184))},"@site/../docs/maintain/maintain-networks.md",76184],"32c9742a":[function(){return t.e(9626).then(t.bind(t,84639))},"@site/../docs/learn/xcm/fundamentals/summary.md",84639],"32e8da05":[function(){return Promise.all([t.e(5424),t.e(6140)]).then(t.bind(t,65779))},"@site/../docs/learn/learn-crowdloans.md",65779],"333929a0":[function(){return t.e(2261).then(t.t.bind(t,61697,19))},"~docs/default/category-docs-docs-category-staking-on-polkadot-2c0.json",61697],"33b0bcab":[function(){return t.e(1585).then(t.bind(t,27281))},"@site/../docs/learn/xcm/reference/xcvm-registers.md",27281],"33bbe353":[function(){return t.e(7908).then(t.bind(t,46437))},"@site/../docs/maintain/kusama/maintain-guides-society-kusama.md",46437],"3497b7c6":[function(){return t.e(3332).then(t.t.bind(t,73834,19))},"~docs/default/category-docs-docs-category-quickstart-1e9.json",73834],"3829cf1d":[function(){return t.e(537).then(t.bind(t,77778))},"@site/../docs/maintain/maintain-guides-validator-community.md",77778],"386099fc":[function(){return Promise.all([t.e(5424),t.e(8139)]).then(t.bind(t,60283))},"@site/../docs/learn/learn-polkadot-opengov-treasury.md",60283],"386bfe51":[function(){return t.e(657).then(t.bind(t,35810))},"@site/../docs/general/contributing.md",35810],"387813b8":[function(){return t.e(660).then(t.bind(t,93487))},"@site/../docs/learn/learn-guides-coretime-parachains.md",93487],"390ca211":[function(){return t.e(9596).then(t.bind(t,5355))},"@site/../docs/learn/archive/learn-launch.md",5355],"3bd77df4":[function(){return Promise.all([t.e(532),t.e(8831)]).then(t.bind(t,94752))},"@site/../docs/learn/learn-bridges.md",94752],"3d1bf5db":[function(){return t.e(3452).then(t.bind(t,85453))},"@site/../docs/maintain/maintain-guides-async-backing.md",85453],"3e56470e":[function(){return t.e(4541).then(t.bind(t,80432))},"@site/../docs/maintain/maintain-wss.md",80432],"408829bd":[function(){return t.e(6).then(t.bind(t,11982))},"@site/../docs/learn/learn-transaction-fees.md",11982],"41871d53":[function(){return t.e(7778).then(t.t.bind(t,69713,19))},"/home/runner/work/polkadot-wiki/polkadot-wiki/polkadot-wiki/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",69713],"41b7b3e8":[function(){return Promise.all([t.e(5424),t.e(3513)]).then(t.bind(t,84358))},"@site/../docs/learn/learn-staking-advanced.md",84358],"41f7224c":[function(){return Promise.all([t.e(532),t.e(3274)]).then(t.bind(t,48659))},"@site/../docs/learn/learn-archive.md",48659],"43cda9e8":[function(){return t.e(6357).then(t.bind(t,96736))},"@site/../docs/learn/learn-guides-assets-ledger.md",96736],"43ee4f22":[function(){return Promise.all([t.e(532),t.e(8047),t.e(4672)]).then(t.bind(t,24567))},"@site/../docs/build/build-guide.md",24567],"452ad91d":[function(){return t.e(6255).then(t.bind(t,94100))},"@site/../docs/learn/xcm/overview/intro.md",94100],"4642ab5c":[function(){return t.e(6946).then(t.bind(t,75925))},"@site/../docs/learn/learn-cryptography.md",75925],"48074a08":[function(){return t.e(1825).then(t.t.bind(t,64515,19))},"~docs/default/category-docs-docs-category-advanced-concepts-637.json",64515],"482bfb5c":[function(){return t.e(9993).then(t.t.bind(t,59085,19))},"~docs/default/category-docs-docs-category-dashboards-ddd.json",59085],"48d75399":[function(){return Promise.all([t.e(5424),t.e(4620)]).then(t.bind(t,17384))},"@site/../docs/general/faq.md",17384],"493c7fdf":[function(){return Promise.all([t.e(5424),t.e(2354)]).then(t.bind(t,22703))},"@site/../docs/general/glossary.md",22703],49816380:[function(){return t.e(6482).then(t.t.bind(t,13302,19))},"~docs/default/category-docs-docs-category-polkadot-vision-2bc.json",13302],"4a8eb552":[function(){return Promise.all([t.e(5424),t.e(7202)]).then(t.bind(t,87149))},"@site/../docs/learn/learn-comparisons-kusama.md",87149],"4d76887f":[function(){return t.e(1415).then(t.bind(t,77799))},"@site/../docs/build/build-hackathon.md",77799],"4d9b9869":[function(){return t.e(4445).then(t.bind(t,56136))},"@site/../docs/learn/learn-parachains-protocol.md",56136],"4f031749":[function(){return Promise.all([t.e(5424),t.e(2008)]).then(t.bind(t,44002))},"@site/../docs/learn/learn-guides-staking-pools.md",44002],"5136ee31":[function(){return t.e(1446).then(t.bind(t,57904))},"@site/../docs/learn/xcm/journey/expects.md",57904],"51fbc2c9":[function(){return t.e(9806).then(t.bind(t,68114))},"@site/../docs/learn/learn-comparisons.md",68114],"5355b952":[function(){return Promise.all([t.e(5424),t.e(6495),t.e(4126)]).then(t.bind(t,40799))},"@site/../docs/learn/learn-polkadot-opengov-origins.md",40799],"54338ffb":[function(){return t.e(4634).then(t.bind(t,97765))},"@site/../docs/learn/learn-account-multisig.md",97765],"543610b9":[function(){return t.e(7022).then(t.t.bind(t,50491,19))},"~docs/default/category-docs-docs-category-community-contributors-548.json",50491],"591eca19":[function(){return t.e(7714).then(t.bind(t,32876))},"@site/../docs/general/polkadot-direction.md",32876],"59acd71c":[function(){return t.e(3518).then(t.t.bind(t,22903,19))},"~docs/default/category-docs-docs-category-archived-build-resources-463.json",22903],"5c90fc9b":[function(){return t.e(3484).then(t.bind(t,11213))},"@site/../docs/learn/xcm/executor_config/config.md",11213],"5d69d9d4":[function(){return t.e(2884).then(t.bind(t,48470))},"@site/../docs/maintain/maintain-guides-how-to-upgrade.md",48470],"5db34cd0":[function(){return t.e(1635).then(t.bind(t,61390))},"@site/../docs/general/decentralized-voices.md",61390],"5e9f5e1a":[function(){return Promise.resolve().then(t.bind(t,8618))},"@generated/docusaurus.config",8618],"5fee77ad":[function(){return t.e(2880).then(t.t.bind(t,27328,19))},"~docs/default/category-docs-docs-category-bridge-hub-guides-299.json",27328],"60738e36":[function(){return Promise.all([t.e(5424),t.e(9071)]).then(t.bind(t,71345))},"@site/../docs/general/metadata.md",71345],"6116139f":[function(){return t.e(5052).then(t.bind(t,1421))},"@site/../docs/learn/learn-elastic-scaling.md",1421],"6151e7ce":[function(){return Promise.all([t.e(5424),t.e(2194)]).then(t.bind(t,8417))},"@site/../docs/general/kusama/kusama-parameters.md",8417],"64c7e1cc":[function(){return t.e(9217).then(t.bind(t,45725))},"@site/../docs/build/build-integration.md",45725],"6544ec02":[function(){return t.e(3029).then(t.bind(t,58619))},"@site/../docs/general/alpha-program.md",58619],"694672cd":[function(){return Promise.all([t.e(532),t.e(8138)]).then(t.bind(t,29576))},"@site/../docs/learn/learn-guides-staking.md",29576],"694e7470":[function(){return t.e(4566).then(t.t.bind(t,6269,19))},"~docs/default/category-docs-docs-category-future-implementations-236.json",6269],"69b97ecd":[function(){return t.e(8067).then(t.bind(t,75217))},"@site/../docs/learn/learn-implementations.md",75217],"6a04f266":[function(){return t.e(4187).then(t.t.bind(t,60641,19))},"~docs/default/category-docs-docs-category-nodes-and-dapps-4fe.json",60641],"6d2ffbf3":[function(){return t.e(9315).then(t.bind(t,91599))},"@site/../docs/learn/xcm/quickstart/first-look.md",91599],"6d5c9a28":[function(){return t.e(2119).then(t.bind(t,94927))},"@site/../docs/general/staking-apps.md",94927],"6f1a81b8":[function(){return Promise.all([t.e(5424),t.e(7288)]).then(t.bind(t,15418))},"@site/../docs/maintain/maintain-guides-how-to-chill.md",15418],"702d5d94":[function(){return t.e(4105).then(t.t.bind(t,54229,19))},"~docs/default/category-docs-docs-category-wallets-bf2.json",54229],"71ed82b9":[function(){return t.e(8648).then(t.bind(t,4401))},"@site/../docs/general/start-building.md",4401],73617284:[function(){return t.e(6730).then(t.bind(t,71298))},"@site/../docs/learn/learn-hyperbridge.md",71298],"73a7060c":[function(){return Promise.all([t.e(5424),t.e(5752)]).then(t.bind(t,72523))},"@site/../docs/learn/learn-polkadot-technical-fellowship.md",72523],"73c3bebc":[function(){return t.e(1211).then(t.t.bind(t,47084,19))},"~docs/default/category-docs-docs-category-stay-safe-1ef.json",47084],"73d1b372":[function(){return t.e(3576).then(t.bind(t,93891))},"@site/../docs/learn/learn-agile-coretime.md",93891],74985360:[function(){return t.e(43).then(t.t.bind(t,62402,19))},"~docs/default/category-docs-docs-category-explore-8dc.json",62402],"74df6a22":[function(){return t.e(1299).then(t.bind(t,50223))},"@site/../docs/maintain/maintain-rpc.md",50223],"766a10e1":[function(){return t.e(8860).then(t.bind(t,83611))},"@site/../docs/learn/learn-comparisons-avalanche.md",83611],"77c23c97":[function(){return Promise.all([t.e(532),t.e(5424),t.e(150)]).then(t.bind(t,32465))},"@site/../docs/learn/learn-transactions.md",32465],"78868b16":[function(){return t.e(2754).then(t.bind(t,17134))},"@site/../docs/general/kusama/kusama-social-recovery.md",17134],"78e1e977":[function(){return t.e(1872).then(t.bind(t,3830))},"@site/../docs/learn/xcm/journey/holding-modifiers.md",3830],"797239df":[function(){return t.e(356).then(t.t.bind(t,13198,19))},"~docs/default/category-docs-docs-category-polkadot-opengov-2e8.json",13198],"7c78c461":[function(){return t.e(2507).then(t.bind(t,41962))},"@site/../docs/general/kusama/kusama-community.md",41962],"7ccc428f":[function(){return t.e(3348).then(t.t.bind(t,56705,19))},"~docs/default/category-docs-docs-category-learn-about-polkadot-534.json",56705],"7dcec981":[function(){return Promise.all([t.e(532),t.e(5969)]).then(t.bind(t,69185))},"@site/../docs/build/build-client-side.md",69185],"7e9389ad":[function(){return t.e(5011).then(t.t.bind(t,69074,19))},"~docs/default/category-docs-docs-category-participants-in-the-polkadot-ecosystem-e03.json",69074],"7fbac68a":[function(){return t.e(1598).then(t.bind(t,81475))},"@site/../docs/general/ambassadors.md",81475],"804b1e9f":[function(){return Promise.all([t.e(5424),t.e(230)]).then(t.bind(t,46494))},"@site/../docs/learn/learn-guides-nominator.md",46494],"824749c6":[function(){return t.e(8361).then(t.bind(t,94521))},"@site/../docs/build/build-node-interaction.md",94521],"8247eba8":[function(){return t.e(8115).then(t.bind(t,76785))},"@site/../docs/learn/xcm/journey/transfers/teleports.md",76785],"83d4859f":[function(){return t.e(8757).then(t.bind(t,25310))},"@site/../docs/learn/xcm/journey/transfers/summary.md",25310],"84ede15a":[function(){return Promise.all([t.e(532),t.e(5424),t.e(4338)]).then(t.bind(t,6555))},"@site/../docs/learn/learn-guides-transfers.md",6555],"84f79495":[function(){return t.e(2078).then(t.bind(t,96709))},"@site/../docs/learn/learn-parathreads.md",96709],"85afe03a":[function(){return t.e(3132).then(t.bind(t,31714))},"@site/../docs/maintain/maintain-errors.md",31714],"863c4753":[function(){return t.e(2552).then(t.bind(t,15719))},"@site/../docs/learn/xcm/journey/register-modifiers.md",15719],"899aadcc":[function(){return t.e(1083).then(t.bind(t,11422))},"@site/../docs/learn/xcm/overview/architecture.md",11422],"89a76fd2":[function(){return t.e(9771).then(t.bind(t,31703))},"@site/../docs/learn/archive/learn-redenomination.md",31703],"8a8a7d05":[function(){return t.e(3262).then(t.bind(t,34204))},"@site/../docs/build/build-parachains.md",34204],"8b670b2b":[function(){return t.e(7799).then(t.bind(t,12897))},"@site/../docs/build/build-index.md",12897],"8d3a1bf8":[function(){return Promise.all([t.e(5424),t.e(2399)]).then(t.bind(t,10209))},"@site/../docs/learn/learn-inflation.md",10209],"8dd7cee0":[function(){return t.e(1486).then(t.bind(t,63349))},"@site/../docs/general/thousand-validators.md",63349],"918b38b6":[function(){return Promise.all([t.e(5424),t.e(2508)]).then(t.bind(t,90594))},"@site/../docs/learn/learn-async-backing.md",90594],"935f2afb":[function(){return t.e(53).then(t.t.bind(t,22624,19))},"~docs/default/version-current-metadata-prop-751.json",22624],"9528ac88":[function(){return t.e(315).then(t.bind(t,85517))},"@site/../docs/learn/learn-xcm-transport.md",85517],"9662c81e":[function(){return t.e(2664).then(t.bind(t,52269))},"@site/../docs/maintain/archive/maintain-guides-how-to-join-council.md",52269],"967fa6d4":[function(){return Promise.all([t.e(5424),t.e(2581)]).then(t.bind(t,91430))},"@site/../docs/learn/learn-guides-accounts-multisig.md",91430],"987d08ef":[function(){return t.e(1748).then(t.bind(t,11732))},"@site/../docs/build/build-smart-contracts.md",11732],"98a30fd8":[function(){return t.e(8866).then(t.bind(t,94062))},"@site/../docs/learn/xcm/fundamentals/multiasset.md",94062],"98a431f4":[function(){return t.e(7584).then(t.bind(t,51240))},"@site/../docs/general/transaction-attacks.md",51240],"9913464d":[function(){return t.e(5341).then(t.bind(t,63009))},"@site/../docs/learn/archive/learn-governance.md",63009],"9a679a70":[function(){return t.e(8178).then(t.t.bind(t,92189,19))},"~docs/default/category-docs-docs-category-overview-c3c.json",92189],"9e2042f5":[function(){return t.e(5651).then(t.bind(t,99476))},"@site/../docs/learn/learn-collator.md",99476],"9e3f6a8a":[function(){return t.e(2758).then(t.bind(t,14865))},"@site/../docs/learn/learn-comparison-ethereum-2.md",14865],"9e6341e5":[function(){return t.e(1774).then(t.bind(t,61601))},"@site/../docs/learn/xcm/journey/transfers/reserve.md",61601],"9e76b49d":[function(){return t.e(7823).then(t.bind(t,85268))},"@site/../docs/learn/xcm/testing.md",85268],"9f319605":[function(){return t.e(63).then(t.bind(t,48442))},"@site/../docs/learn/xcm/journey/fees.md",48442],"9f804621":[function(){return Promise.all([t.e(532),t.e(5424),t.e(4143)]).then(t.bind(t,35426))},"@site/../docs/learn/learn-guides-accounts.md",35426],a2800a5b:[function(){return t.e(7961).then(t.bind(t,69595))},"@site/../docs/build/build-transaction-construction.md",69595],a29dc56e:[function(){return t.e(6253).then(t.bind(t,16898))},"@site/../docs/maintain/maintain-guides-how-to-monitor-your-node.md",16898],a4b71220:[function(){return t.e(9112).then(t.t.bind(t,68388,19))},"/home/runner/work/polkadot-wiki/polkadot-wiki/polkadot-wiki/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",68388],a4c751bb:[function(){return t.e(5132).then(t.bind(t,39051))},"@site/../docs/learn/learn-bridge-hub.md",39051],a5002e4a:[function(){return t.e(1703).then(t.bind(t,53714))},"@site/../docs/build/build-oracle.md",53714],a5b3561d:[function(){return t.e(7466).then(t.bind(t,75007))},"@site/../docs/general/kusama/kusama-coc.md",75007],a74a59a0:[function(){return Promise.all([t.e(5424),t.e(8702)]).then(t.bind(t,11300))},"@site/../docs/maintain/maintain-guides-how-to-validate-polkadot.md",11300],a7b37b86:[function(){return t.e(4507).then(t.bind(t,588))},"@site/../docs/general/scams.md",588],a7c27f4d:[function(){return t.e(4174).then(t.t.bind(t,39220,19))},"~docs/default/category-docs-docs-category-basic-concepts-about-polkadot-793.json",39220],a8f54fb1:[function(){return t.e(5806).then(t.bind(t,3446))},"@site/../docs/learn/learn-DOT-KSM-bridge.md",3446],ab138bf8:[function(){return Promise.all([t.e(5424),t.e(8791)]).then(t.bind(t,83433))},"@site/../docs/learn/learn-proxies.md",83433],ad762f86:[function(){return Promise.all([t.e(5424),t.e(7940)]).then(t.bind(t,79569))},"@site/../docs/learn/learn-account-advanced.md",79569],af3013e9:[function(){return t.e(6673).then(t.t.bind(t,70918,19))},"~docs/default/category-docs-docs-category-apps-8f2.json",70918],af40287e:[function(){return t.e(3066).then(t.t.bind(t,48292,19))},"~docs/default/category-docs-docs-category-transfers-b84.json",48292],afddde9d:[function(){return t.e(9009).then(t.bind(t,55228))},"@site/../docs/learn/learn-asset-conversion-assethub.md",55228],b0a48d97:[function(){return t.e(3091).then(t.bind(t,74789))},"@site/../docs/learn/learn-guides-ledger.md",74789],b0cb055f:[function(){return t.e(9905).then(t.bind(t,65959))},"@site/../docs/learn/xcm/fundamentals/xcvm.md",65959],b0cbc1d4:[function(){return Promise.all([t.e(5424),t.e(3667)]).then(t.bind(t,14374))},"@site/../docs/general/staking-dashboard.md",14374],b133b626:[function(){return t.e(8086).then(t.t.bind(t,45153,19))},"~docs/default/category-docs-docs-category-collator-guides-d67.json",45153],b21dd8a7:[function(){return t.e(1494).then(t.bind(t,7788))},"@site/../docs/learn/learn-comparison-rollups.md",7788],b225a2ce:[function(){return t.e(3668).then(t.bind(t,63021))},"@site/../docs/learn/xcm/fundamentals/multilocation/summary.md",63021],b3719d54:[function(){return t.e(5422).then(t.bind(t,64633))},"@site/../docs/general/polkadot-v1.md",64633],b38833d4:[function(){return Promise.all([t.e(5424),t.e(9062)]).then(t.bind(t,2774))},"@site/../docs/learn/learn-phragmen.md",2774],b48c599b:[function(){return t.e(8901).then(t.bind(t,99098))},"@site/../docs/general/kusama/kusama-bug-bounty.md",99098],b61f6dc7:[function(){return t.e(1372).then(t.bind(t,7678))},"@site/../docs/general/research.md",7678],b906f375:[function(){return t.e(2749).then(t.bind(t,61104))},"@site/../docs/build/build-light-clients.md",61104],b940de31:[function(){return Promise.all([t.e(5424),t.e(7633)]).then(t.bind(t,11427))},"@site/../docs/learn/learn-assets.md",11427],b9b4ec9e:[function(){return t.e(5704).then(t.bind(t,15137))},"@site/../docs/learn/xcm/reference/glossary.md",15137],bb8b1738:[function(){return Promise.all([t.e(5424),t.e(7368)]).then(t.bind(t,49175))},"@site/../docs/learn/learn-validator.md",49175],bbba852d:[function(){return t.e(6294).then(t.bind(t,33736))},"@site/../docs/general/kusama/kusama-adverserial-cheatsheet.md",33736],bd701914:[function(){return t.e(7388).then(t.bind(t,55965))},"@site/../docs/learn/learn-parachains-faq.md",55965],bea375d6:[function(){return t.e(3757).then(t.bind(t,86676))},"@site/../docs/general/grants.md",86676],c07c2447:[function(){return Promise.all([t.e(5424),t.e(7654)]).then(t.bind(t,40569))},"@site/../docs/learn/learn-guides-polkadot-opengov.md",40569],c1bbdb2a:[function(){return t.e(4916).then(t.bind(t,27122))},"@site/../docs/learn/learn-polkadot-host.md",27122],c2c6a3a6:[function(){return t.e(2712).then(t.bind(t,5812))},"@site/../docs/learn/learn-nft-projects.md",5812],c41801b5:[function(){return Promise.all([t.e(5424),t.e(5013)]).then(t.bind(t,63801))},"@site/../docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md",63801],c4f5d8e4:[function(){return t.e(4195).then(t.bind(t,75844))},"@site/src/pages/index.js",75844],c5d9e474:[function(){return t.e(6779).then(t.t.bind(t,40076,19))},"~docs/default/category-docs-docs-category-client-side-development-690.json",40076],c662f00a:[function(){return t.e(4379).then(t.bind(t,56021))},"@site/../docs/learn/xcm/journey/queries.md",56021],c7a044bb:[function(){return t.e(217).then(t.bind(t,47223))},"@site/../docs/learn/xcm/journey/channels-and-bridges.md",47223],c7a2145e:[function(){return t.e(9478).then(t.bind(t,25690))},"@site/../docs/general/how-to-dyor.md",25690],c7c5ba1a:[function(){return Promise.all([t.e(532),t.e(5424),t.e(6104)]).then(t.bind(t,63706))},"@site/../docs/learn/learn-accounts.md",63706],c8dd560b:[function(){return Promise.all([t.e(5424),t.e(3978)]).then(t.bind(t,82651))},"@site/../docs/learn/learn-guides-accounts-proxy-pure.md",82651],c91a9c06:[function(){return Promise.all([t.e(5424),t.e(8355)]).then(t.bind(t,48693))},"@site/../docs/learn/learn-identity.md",48693],c977dfe8:[function(){return Promise.all([t.e(5424),t.e(1506)]).then(t.bind(t,38948))},"@site/../docs/learn/learn-teleport.md",38948],ca9fe671:[function(){return t.e(6598).then(t.bind(t,37579))},"@site/../docs/learn/xcm/overview/xcvm.md",37579],cb9afd28:[function(){return Promise.all([t.e(532),t.e(5424),t.e(3643)]).then(t.bind(t,46301))},"@site/../docs/learn/learn-polkadot-js-guides.md",46301],cc44e8fd:[function(){return t.e(7683).then(t.bind(t,6005))},"@site/../docs/build/build-node-management.md",6005],ccc1222e:[function(){return t.e(6920).then(t.bind(t,60147))},"@site/../docs/build/build-open-source.md",60147],cd144357:[function(){return t.e(9779).then(t.t.bind(t,14423,19))},"~docs/default/category-docs-docs-category-polkadots-parachains-4b5.json",14423],cda87995:[function(){return t.e(3933).then(t.bind(t,27023))},"@site/../docs/build/build-tools-index.md",27023],ceaa29cb:[function(){return t.e(6373).then(t.bind(t,41230))},"@site/../docs/learn/xcm/journey/locks/locks.md",41230],cfd53ea4:[function(){return t.e(1090).then(t.bind(t,7007))},"@site/../docs/general/kusama/kusama-timeline.md",7007],d01f45b7:[function(){return t.e(6220).then(t.t.bind(t,73443,19))},"~docs/default/category-docs-docs-category-polkadots-xcm-416.json",73443],d27ae88d:[function(){return t.e(5157).then(t.bind(t,19994))},"@site/../docs/learn/learn-video-tutorials.md",19994],d3a753cf:[function(){return t.e(8855).then(t.bind(t,8032))},"@site/../docs/learn/xcm/fundamentals/multilocation/example.md",8032],d569989b:[function(){return t.e(609).then(t.bind(t,17340))},"@site/../docs/general/bug-bounty.md",17340],d5909206:[function(){return t.e(3554).then(t.bind(t,43543))},"@site/../docs/learn/xcm/fundamentals/multilocation/junction.md",43543],d6a97e7e:[function(){return t.e(7858).then(t.bind(t,55984))},"@site/../docs/learn/xcm/quickstart/xcm-simulator.md",55984],d6b0148d:[function(){return t.e(5548).then(t.bind(t,7926))},"@site/../docs/learn/xcm/journey/origins.md",7926],d9ef69a7:[function(){return t.e(1786).then(t.bind(t,4245))},"@site/../docs/general/contributors.md",4245],da9f79cb:[function(){return Promise.all([t.e(5424),t.e(2248)]).then(t.bind(t,92916))},"@site/../docs/learn/learn-nomination-pools.md",92916],db039c7f:[function(){return t.e(5103).then(t.bind(t,50740))},"@site/../docs/learn/xcm/overview/format.md",50740],db0b42b0:[function(){return t.e(2609).then(t.bind(t,64271))},"@site/../docs/learn/learn-sassafras.md",64271],db3d6c4d:[function(){return t.e(7313).then(t.bind(t,1171))},"@site/../docs/learn/learn-account-abstraction.md",1171],dbbd9e76:[function(){return t.e(3669).then(t.bind(t,69156))},"@site/../docs/learn/learn-guides-vault.md",69156],dbc4065c:[function(){return t.e(6312).then(t.t.bind(t,8654,19))},"~docs/default/category-docs-docs-category-tokens-and-assets-d90.json",8654],dc36d550:[function(){return Promise.all([t.e(532),t.e(4359)]).then(t.bind(t,62252))},"@site/../docs/maintain/maintain-archive.md",62252],dc776cbc:[function(){return t.e(9764).then(t.bind(t,8117))},"@site/../docs/general/thousand-contributors.md",8117],dd2fa029:[function(){return Promise.all([t.e(532),t.e(9962)]).then(t.bind(t,78209))},"@site/../docs/learn/learn-polkadotjs.md",78209],dd32e389:[function(){return t.e(2042).then(t.bind(t,63689))},"@site/../docs/general/polkadot-vault.md",63689],df154d69:[function(){return t.e(1957).then(t.bind(t,15474))},"@site/../docs/learn/learn-xcm.md",15474],e00ac272:[function(){return t.e(4385).then(t.bind(t,47526))},"@site/../docs/learn/learn-guides-coretime-marketplaces.md",47526],e2e89062:[function(){return t.e(2633).then(t.bind(t,81843))},"@site/../docs/learn/learn-proxies-pure.md",81843],e31fc461:[function(){return t.e(3330).then(t.bind(t,60682))},"@site/../docs/learn/xcm/learn-xcm-docs-intro.md",60682],e3d2722f:[function(){return t.e(5049).then(t.t.bind(t,7864,19))},"~docs/default/category-docs-docs-category-agile-coretime-69e.json",7864],e495ca4d:[function(){return t.e(8951).then(t.bind(t,14943))},"@site/../docs/maintain/archive/maintain-guides-democracy.md",14943],e5615b18:[function(){return t.e(3828).then(t.t.bind(t,97723,19))},"~docs/default/category-docs-docs-category-validator-guides-2eb.json",97723],ec3b6a32:[function(){return t.e(4004).then(t.bind(t,56794))},"@site/../docs/learn/learn-nft.md",56794],ecb495b7:[function(){return t.e(2136).then(t.bind(t,82956))},"@site/../docs/maintain/maintain-guides-how-to-systemd.md",82956],ece9fdae:[function(){return t.e(2677).then(t.bind(t,81862))},"@site/../docs/general/community.md",81862],ed3409b3:[function(){return Promise.all([t.e(5424),t.e(8609)]).then(t.bind(t,64539))},"@site/../docs/learn/learn-guides-bounties.md",64539],eef3f1dd:[function(){return Promise.all([t.e(5424),t.e(4097)]).then(t.bind(t,7522))},"@site/../docs/learn/learn-guides-treasury.md",7522],f0855ff9:[function(){return t.e(4909).then(t.bind(t,9012))},"@site/../docs/general/kusama/kusama-index.md",9012],f0ff685a:[function(){return Promise.all([t.e(5424),t.e(8191)]).then(t.bind(t,56870))},"@site/../docs/learn/learn-guides-accounts-proxy.md",56870],f137ce68:[function(){return Promise.all([t.e(532),t.e(3620)]).then(t.bind(t,2137))},"@site/../docs/learn/learn-xcm-instructions.md",2137],f14351c1:[function(){return t.e(3356).then(t.t.bind(t,2551,19))},"~docs/default/category-docs-docs-category-components-a98.json",2551],f1585bfb:[function(){return t.e(3665).then(t.bind(t,43507))},"@site/../docs/learn/xcm/quickstart/summary.md",43507],f189ca9f:[function(){return t.e(192).then(t.bind(t,20458))},"@site/../docs/learn/learn-spree.md",20458],f2521980:[function(){return Promise.all([t.e(5424),t.e(6689)]).then(t.bind(t,24595))},"@site/../docs/general/getting-started.md",24595],f2c21b54:[function(){return t.e(4363).then(t.bind(t,3011))},"@site/../docs/build/build-storage.md",3011],f3027c84:[function(){return t.e(2242).then(t.bind(t,3361))},"@site/../docs/general/polkadotjs-ui.md",3361],f359a251:[function(){return t.e(1239).then(t.bind(t,15759))},"@site/../docs/maintain/maintain-endpoints.md",15759],f3bde756:[function(){return t.e(2704).then(t.bind(t,84741))},"@site/../docs/maintain/maintain-bootnode.md",84741],f4130007:[function(){return t.e(2665).then(t.bind(t,86975))},"@site/../docs/general/wallets-and-extensions.md",86975],f41c4e9d:[function(){return t.e(4666).then(t.bind(t,32036))},"@site/../docs/learn/learn-xcm-pallet.md",32036],f4200fe5:[function(){return Promise.all([t.e(532),t.e(2909)]).then(t.bind(t,31101))},"@site/../docs/maintain/maintain-sync.md",31101],f44679e7:[function(){return t.e(1451).then(t.bind(t,70602))},"@site/../docs/general/governance-apps.md",70602],f44ed8f8:[function(){return t.e(7211).then(t.bind(t,71294))},"@site/../docs/build/build-hrmp-channels.md",71294],f47489cd:[function(){return t.e(1966).then(t.bind(t,11611))},"@site/../docs/learn/learn-runtime-upgrades.md",11611],f4fb6e9c:[function(){return t.e(1).then(t.t.bind(t,40132,19))},"~docs/default/category-docs-docs-category-a-journey-through-xcm-9f8.json",40132],f52abf29:[function(){return t.e(576).then(t.bind(t,20969))},"@site/../docs/general/decentralized-futures.md",20969],f7191335:[function(){return t.e(1686).then(t.t.bind(t,1691,19))},"~docs/default/category-docs-docs-category-general-cbc.json",1691],f750c690:[function(){return t.e(1419).then(t.bind(t,91251))},"@site/../docs/learn/learn-nft-pallets.md",91251],f7acb151:[function(){return Promise.all([t.e(5424),t.e(5483)]).then(t.bind(t,49736))},"@site/../docs/learn/learn-guides-assets-create.md",49736],f8518919:[function(){return t.e(3945).then(t.bind(t,51094))},"@site/../docs/general/web3-and-polkadot.md",51094],f90fa732:[function(){return t.e(1062).then(t.bind(t,71358))},"@site/../docs/build/build-data.md",71358],f95cee6f:[function(){return t.e(9548).then(t.bind(t,24195))},"@site/../docs/maintain/maintain-guides-best-practices-to-avoid-slashes.md",24195],fa343ad1:[function(){return t.e(1678).then(t.bind(t,42352))},"@site/../docs/learn/xcm/fundamentals/weight_and_fees.md",42352],fabebe44:[function(){return t.e(1288).then(t.bind(t,38993))},"@site/../docs/general/dev-heroes.md",38993],fbf58567:[function(){return t.e(5989).then(t.t.bind(t,46599,19))},"~docs/default/category-docs-docs-category-xcm-documentation-30c.json",46599],fda65b2b:[function(){return t.e(1975).then(t.bind(t,30742))},"@site/../docs/learn/learn-guides-asset-conversion.md",30742],fea93377:[function(){return Promise.all([t.e(5424),t.e(4674)]).then(t.bind(t,26029))},"@site/../docs/maintain/maintain-guides-validator-payout.md",26029],fecdcc34:[function(){return t.e(8034).then(t.bind(t,26269))},"@site/../docs/learn/xcm/journey/version.md",26269],feea648c:[function(){return t.e(7061).then(t.bind(t,39966))},"@site/../docs/learn/learn-xcvm.md",39966],ff6596ea:[function(){return Promise.all([t.e(5424),t.e(3842)]).then(t.bind(t,25398))},"@site/../docs/learn/learn-nominator.md",25398],ffd76171:[function(){return Promise.all([t.e(532),t.e(8236)]).then(t.bind(t,88559))},"@site/../docs/maintain/maintain-index.md",88559],ffe9c3c9:[function(){return Promise.all([t.e(5424),t.e(1529)]).then(t.bind(t,64204))},"@site/../docs/learn/learn-DOT.md",64204]};function l(e){var n=e.error,t=e.retry,a=e.pastDelay;return n?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(n)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:t},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=t(99670),d=t(30226);function f(e,n){if("*"===e)return i()({loading:l,loader:function(){return t.e(4972).then(t.bind(t,4972))},modules:["@theme/NotFound"],webpack:function(){return[4972]},render:function(e,n){var t=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(t,n))}});var o=s[e+"-"+n],f={},p=[],m=[],h=(0,u.Z)(o);return Object.entries(h).forEach((function(e){var n=e[0],t=e[1],r=c[t];r&&(f[n]=r[0],p.push(r[1]),m.push(r[2]))})),i().Map({loading:l,loader:f,modules:p,webpack:function(){return m},render:function(n,t){var i=JSON.parse(JSON.stringify(o));Object.entries(n).forEach((function(n){var t=n[0],r=n[1],a=r.default;if(!a)throw new Error("The page component at "+e+" doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.");"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((function(e){return"default"!==e})).forEach((function(e){a[e]=r[e]}));var o=i,s=t.split(".");s.slice(0,-1).forEach((function(e){o=o[e]})),o[s[s.length-1]]=a}));var s=i.__comp;delete i.__comp;var c=i.__context;return delete i.__context,r.createElement(d.z,{value:c},r.createElement(s,(0,a.Z)({},i,t)))}})}const p=[{path:"/search",component:f("/search","740"),exact:!0},{path:"/docs",component:f("/docs","385"),routes:[{path:"/docs/alpha-program",component:f("/docs/alpha-program","34d"),exact:!0,sidebar:"docs"},{path:"/docs/ambassadors",component:f("/docs/ambassadors","afd"),exact:!0,sidebar:"docs"},{path:"/docs/apps-index",component:f("/docs/apps-index","f93"),exact:!0,sidebar:"docs"},{path:"/docs/bug-bounty",component:f("/docs/bug-bounty","bab"),exact:!0,sidebar:"docs"},{path:"/docs/build-archive-index",component:f("/docs/build-archive-index","747"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-index",component:f("/docs/build-client-index","150"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-side",component:f("/docs/build-client-side","6ca"),exact:!0,sidebar:"docs"},{path:"/docs/build-dapp",component:f("/docs/build-dapp","dcc"),exact:!0},{path:"/docs/build-data",component:f("/docs/build-data","c63"),exact:!0,sidebar:"docs"},{path:"/docs/build-guide",component:f("/docs/build-guide","4c0"),exact:!0,sidebar:"docs"},{path:"/docs/build-hackathon",component:f("/docs/build-hackathon","170"),exact:!0,sidebar:"docs"},{path:"/docs/build-hrmp-channels",component:f("/docs/build-hrmp-channels","9d7"),exact:!0,sidebar:"docs"},{path:"/docs/build-index",component:f("/docs/build-index","fd5"),exact:!0},{path:"/docs/build-integrate-assets",component:f("/docs/build-integrate-assets","521"),exact:!0,sidebar:"docs"},{path:"/docs/build-integration",component:f("/docs/build-integration","0e9"),exact:!0,sidebar:"docs"},{path:"/docs/build-light-clients",component:f("/docs/build-light-clients","522"),exact:!0,sidebar:"docs"},{path:"/docs/build-network-overview",component:f("/docs/build-network-overview","92c"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-interaction",component:f("/docs/build-node-interaction","26d"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-management",component:f("/docs/build-node-management","033"),exact:!0,sidebar:"docs"},{path:"/docs/build-open-source",component:f("/docs/build-open-source","d93"),exact:!0,sidebar:"docs"},{path:"/docs/build-oracle",component:f("/docs/build-oracle","b28"),exact:!0},{path:"/docs/build-pdk",component:f("/docs/build-pdk","841"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-index",component:f("/docs/build-protocol-index","267"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-info",component:f("/docs/build-protocol-info","d4a"),exact:!0,sidebar:"docs"},{path:"/docs/build-smart-contracts",component:f("/docs/build-smart-contracts","4b8"),exact:!0,sidebar:"docs"},{path:"/docs/build-storage",component:f("/docs/build-storage","244"),exact:!0},{path:"/docs/build-tools-index",component:f("/docs/build-tools-index","410"),exact:!0,sidebar:"docs"},{path:"/docs/build-transaction-construction",component:f("/docs/build-transaction-construction","d68"),exact:!0,sidebar:"docs"},{path:"/docs/community",component:f("/docs/community","b89"),exact:!0,sidebar:"docs"},{path:"/docs/community-index",component:f("/docs/community-index","c5c"),exact:!0,sidebar:"docs"},{path:"/docs/contributing",component:f("/docs/contributing","677"),exact:!0,sidebar:"docs"},{path:"/docs/contributors",component:f("/docs/contributors","1e6"),exact:!0,sidebar:"docs"},{path:"/docs/dashboards-index",component:f("/docs/dashboards-index","d3f"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-futures",component:f("/docs/decentralized-futures","db1"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-voices",component:f("/docs/decentralized-voices","07a"),exact:!0,sidebar:"docs"},{path:"/docs/dev-heroes",component:f("/docs/dev-heroes","4e8"),exact:!0,sidebar:"docs"},{path:"/docs/explore-index",component:f("/docs/explore-index","37d"),exact:!0,sidebar:"docs"},{path:"/docs/faq",component:f("/docs/faq","e21"),exact:!0,sidebar:"docs"},{path:"/docs/general-index",component:f("/docs/general-index","84d"),exact:!0,sidebar:"docs"},{path:"/docs/getting-started",component:f("/docs/getting-started","6f8"),exact:!0,sidebar:"docs"},{path:"/docs/glossary",component:f("/docs/glossary","5f2"),exact:!0,sidebar:"docs"},{path:"/docs/governance-apps",component:f("/docs/governance-apps","cc0"),exact:!0,sidebar:"docs"},{path:"/docs/grants",component:f("/docs/grants","240"),exact:!0,sidebar:"docs"},{path:"/docs/how-to-dyor",component:f("/docs/how-to-dyor","3d9"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-adversarial-cheatsheet",component:f("/docs/kusama-adversarial-cheatsheet","ff3"),exact:!0},{path:"/docs/kusama-bug-bounty",component:f("/docs/kusama-bug-bounty","c07"),exact:!0},{path:"/docs/kusama-claims",component:f("/docs/kusama-claims","b28"),exact:!0},{path:"/docs/kusama-coc",component:f("/docs/kusama-coc","302"),exact:!0},{path:"/docs/kusama-community",component:f("/docs/kusama-community","c98"),exact:!0},{path:"/docs/kusama-getting-started",component:f("/docs/kusama-getting-started","bd7"),exact:!0},{path:"/docs/kusama-index",component:f("/docs/kusama-index","eeb"),exact:!0},{path:"/docs/kusama-parameters",component:f("/docs/kusama-parameters","a62"),exact:!0},{path:"/docs/kusama-social-recovery",component:f("/docs/kusama-social-recovery","62f"),exact:!0},{path:"/docs/kusama-timeline",component:f("/docs/kusama-timeline","288"),exact:!0},{path:"/docs/learn-account-abstraction",component:f("/docs/learn-account-abstraction","962"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-advanced",component:f("/docs/learn-account-advanced","c5d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-multisig",component:f("/docs/learn-account-multisig","f7c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-accounts",component:f("/docs/learn-accounts","9c2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-advanced-index",component:f("/docs/learn-advanced-index","66f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime",component:f("/docs/learn-agile-coretime","c36"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime-index",component:f("/docs/learn-agile-coretime-index","de8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-architecture",component:f("/docs/learn-architecture","fa2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-archive",component:f("/docs/learn-archive","668"),exact:!0,sidebar:"docs"},{path:"/docs/learn-asset-conversion-assethub",component:f("/docs/learn-asset-conversion-assethub","396"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets",component:f("/docs/learn-assets","71c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets-index",component:f("/docs/learn-assets-index","980"),exact:!0,sidebar:"docs"},{path:"/docs/learn-async-backing",component:f("/docs/learn-async-backing","8d8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-auction",component:f("/docs/learn-auction","5f7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-basics-index",component:f("/docs/learn-basics-index","90b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-bridge-hub",component:f("/docs/learn-bridge-hub","2aa"),exact:!0,sidebar:"docs"},{path:"/docs/learn-bridges",component:f("/docs/learn-bridges","fc1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-collator",component:f("/docs/learn-collator","8d9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons",component:f("/docs/learn-comparisons","ef1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-avalanche",component:f("/docs/learn-comparisons-avalanche","6f0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-cosmos",component:f("/docs/learn-comparisons-cosmos","72c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-ethereum-2",component:f("/docs/learn-comparisons-ethereum-2","af0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-index",component:f("/docs/learn-comparisons-index","3a8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-kusama",component:f("/docs/learn-comparisons-kusama","de0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons-rollups",component:f("/docs/learn-comparisons-rollups","656"),exact:!0,sidebar:"docs"},{path:"/docs/learn-components-index",component:f("/docs/learn-components-index","565"),exact:!0,sidebar:"docs"},{path:"/docs/learn-consensus",component:f("/docs/learn-consensus","c72"),exact:!0,sidebar:"docs"},{path:"/docs/learn-crowdloans",component:f("/docs/learn-crowdloans","98f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-cryptography",component:f("/docs/learn-cryptography","3de"),exact:!0,sidebar:"docs"},{path:"/docs/learn-DOT",component:f("/docs/learn-DOT","913"),exact:!0,sidebar:"docs"},{path:"/docs/learn-dot-ksm-bridge",component:f("/docs/learn-dot-ksm-bridge","d07"),exact:!0,sidebar:"docs"},{path:"/docs/learn-elastic-scaling",component:f("/docs/learn-elastic-scaling","9e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-future-implementations-index",component:f("/docs/learn-future-implementations-index","d18"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts",component:f("/docs/learn-guides-accounts","e6d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-multisig",component:f("/docs/learn-guides-accounts-multisig","701"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy",component:f("/docs/learn-guides-accounts-proxy","49c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy-pure",component:f("/docs/learn-guides-accounts-proxy-pure","295"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-asset-conversion",component:f("/docs/learn-guides-asset-conversion","fc7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets",component:f("/docs/learn-guides-assets","193"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets-create",component:f("/docs/learn-guides-assets-create","dd9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets-ledger",component:f("/docs/learn-guides-assets-ledger","1f0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bounties",component:f("/docs/learn-guides-bounties","2dc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bridges",component:f("/docs/learn-guides-bridges","b66"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-marketplaces",component:f("/docs/learn-guides-coretime-marketplaces","295"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-parachains",component:f("/docs/learn-guides-coretime-parachains","1f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-dot-ksm-bridge",component:f("/docs/learn-guides-dot-ksm-bridge","318"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-identity",component:f("/docs/learn-guides-identity","9f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-ledger",component:f("/docs/learn-guides-ledger","a52"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-nominator",component:f("/docs/learn-guides-nominator","292"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-polkadot-opengov",component:f("/docs/learn-guides-polkadot-opengov","097"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking",component:f("/docs/learn-guides-staking","e1a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking-pools",component:f("/docs/learn-guides-staking-pools","8e8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-transfers",component:f("/docs/learn-guides-transfers","d83"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-treasury",component:f("/docs/learn-guides-treasury","45a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-vault",component:f("/docs/learn-guides-vault","407"),exact:!0,sidebar:"docs"},{path:"/docs/learn-hyperbridge",component:f("/docs/learn-hyperbridge","315"),exact:!0,sidebar:"docs"},{path:"/docs/learn-identity",component:f("/docs/learn-identity","414"),exact:!0,sidebar:"docs"},{path:"/docs/learn-implementations",component:f("/docs/learn-implementations","a5b"),exact:!0},{path:"/docs/learn-index",component:f("/docs/learn-index","706"),exact:!0,sidebar:"docs"},{path:"/docs/learn-inflation",component:f("/docs/learn-inflation","5ea"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft",component:f("/docs/learn-nft","4b1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-pallets",component:f("/docs/learn-nft-pallets","8ea"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-projects",component:f("/docs/learn-nft-projects","18f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nomination-pools",component:f("/docs/learn-nomination-pools","964"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nominator",component:f("/docs/learn-nominator","5fc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains",component:f("/docs/learn-parachains","0d1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-faq",component:f("/docs/learn-parachains-faq","eed"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-index",component:f("/docs/learn-parachains-index","4e5"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-protocol",component:f("/docs/learn-parachains-protocol","f2b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parathreads",component:f("/docs/learn-parathreads","03d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-participants-index",component:f("/docs/learn-participants-index","b1a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-phragmen",component:f("/docs/learn-phragmen","c5c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-host",component:f("/docs/learn-polkadot-host","48e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-js-guides",component:f("/docs/learn-polkadot-js-guides","69c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov",component:f("/docs/learn-polkadot-opengov","ecc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-index",component:f("/docs/learn-polkadot-opengov-index","2be"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-origins",component:f("/docs/learn-polkadot-opengov-origins","3dc"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-treasury",component:f("/docs/learn-polkadot-opengov-treasury","582"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-technical-fellowship",component:f("/docs/learn-polkadot-technical-fellowship","7b7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadotjs",component:f("/docs/learn-polkadotjs","1e5"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies",component:f("/docs/learn-proxies","92e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies-pure",component:f("/docs/learn-proxies-pure","b02"),exact:!0,sidebar:"docs"},{path:"/docs/learn-runtime-upgrades",component:f("/docs/learn-runtime-upgrades","8e7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-sassafras",component:f("/docs/learn-sassafras","11d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-scams",component:f("/docs/learn-scams","f1c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-spree",component:f("/docs/learn-spree","14e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking",component:f("/docs/learn-staking","183"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-advanced",component:f("/docs/learn-staking-advanced","089"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-index",component:f("/docs/learn-staking-index","5df"),exact:!0,sidebar:"docs"},{path:"/docs/learn-system-chains",component:f("/docs/learn-system-chains","29d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-teleport",component:f("/docs/learn-teleport","814"),exact:!0,sidebar:"docs"},{path:"/docs/learn-transaction-fees",component:f("/docs/learn-transaction-fees","42e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-transactions",component:f("/docs/learn-transactions","1f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-validator",component:f("/docs/learn-validator","cae"),exact:!0,sidebar:"docs"},{path:"/docs/learn-video-tutorials",component:f("/docs/learn-video-tutorials","a9e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-wasm",component:f("/docs/learn-wasm","16e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm",component:f("/docs/learn-xcm","f30"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-index",component:f("/docs/learn-xcm-index","90a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-instructions",component:f("/docs/learn-xcm-instructions","82b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-pallet",component:f("/docs/learn-xcm-pallet","c28"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-transport",component:f("/docs/learn-xcm-transport","b2a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-usecases",component:f("/docs/learn-xcm-usecases","4fd"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcvm",component:f("/docs/learn-xcvm","db4"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-controller",component:f("/docs/learn/learn-controller","67e"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-governance",component:f("/docs/learn/learn-governance","1cb"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-launch",component:f("/docs/learn/learn-launch","6ec"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-redenomination",component:f("/docs/learn/learn-redenomination","136"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-treasury",component:f("/docs/learn/learn-treasury","3dc"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm",component:f("/docs/learn/xcm","b7a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/config-deep-dive",component:f("/docs/learn/xcm/config-deep-dive","e68"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals",component:f("/docs/learn/xcm/fundamentals","e35"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-fees",component:f("/docs/learn/xcm/fundamentals-fees","80a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-multiasset",component:f("/docs/learn/xcm/fundamentals-multiasset","ead"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-summary",component:f("/docs/learn/xcm/fundamentals-summary","1e3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-xcvm",component:f("/docs/learn/xcm/fundamentals-xcvm","752"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation",component:f("/docs/learn/xcm/fundamentals/multilocation","f7c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-example",component:f("/docs/learn/xcm/fundamentals/multilocation-example","9c5"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-junctions",component:f("/docs/learn/xcm/fundamentals/multilocation-junctions","776"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-summary",component:f("/docs/learn/xcm/fundamentals/multilocation-summary","6f7"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/introduction",component:f("/docs/learn/xcm/introduction","e34"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey",component:f("/docs/learn/xcm/journey","ac5"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-assets",component:f("/docs/learn/xcm/journey-assets","f26"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-channels",component:f("/docs/learn/xcm/journey-channels","ae8"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-expectations",component:f("/docs/learn/xcm/journey-expectations","a11"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-fees",component:f("/docs/learn/xcm/journey-fees","1e0"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-holding",component:f("/docs/learn/xcm/journey-holding","914"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-locks",component:f("/docs/learn/xcm/journey-locks","f94"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-origin",component:f("/docs/learn/xcm/journey-origin","4f3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-queries",component:f("/docs/learn/xcm/journey-queries","3fb"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-register",component:f("/docs/learn/xcm/journey-register","e9c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-summary",component:f("/docs/learn/xcm/journey-summary","2a4"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-transact",component:f("/docs/learn/xcm/journey-transact","283"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-version",component:f("/docs/learn/xcm/journey-version","c0d"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers",component:f("/docs/learn/xcm/journey/transfers","454"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-reserve",component:f("/docs/learn/xcm/journey/transfers-reserve","5ce"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-summary",component:f("/docs/learn/xcm/journey/transfers-summary","e08"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-teleport",component:f("/docs/learn/xcm/journey/transfers-teleport","85b"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview",component:f("/docs/learn/xcm/overview","c0f"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-architecture",component:f("/docs/learn/xcm/overview-architecture","7ec"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-format",component:f("/docs/learn/xcm/overview-format","d5c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-intro",component:f("/docs/learn/xcm/overview-intro","529"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-summary",component:f("/docs/learn/xcm/overview-summary","ffd"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-xcvm",component:f("/docs/learn/xcm/overview-xcvm","9ad"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart",component:f("/docs/learn/xcm/quickstart","c96"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-first-look",component:f("/docs/learn/xcm/quickstart-first-look","c89"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-simulator",component:f("/docs/learn/xcm/quickstart-simulator","d3a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-summary",component:f("/docs/learn/xcm/quickstart-summary","e79"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-glossary",component:f("/docs/learn/xcm/reference-glossary","e83"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-xcvm-registers",component:f("/docs/learn/xcm/reference-xcvm-registers","ceb"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/references",component:f("/docs/learn/xcm/references","103"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/testing",component:f("/docs/learn/xcm/testing","0a7"),exact:!0,sidebar:"docs"},{path:"/docs/ledger",component:f("/docs/ledger","50e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-archive",component:f("/docs/maintain-archive","779"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-bootnode",component:f("/docs/maintain-bootnode","294"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-collator-index",component:f("/docs/maintain-collator-index","5ad"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-endpoints",component:f("/docs/maintain-endpoints","31b"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-errors",component:f("/docs/maintain-errors","92e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-async-backing",component:f("/docs/maintain-guides-async-backing","232"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-avoid-slashing",component:f("/docs/maintain-guides-avoid-slashing","578"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-chill",component:f("/docs/maintain-guides-how-to-chill","668"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-monitor-your-node",component:f("/docs/maintain-guides-how-to-monitor-your-node","bdd"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-stop-validating",component:f("/docs/maintain-guides-how-to-stop-validating","993"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-systemd",component:f("/docs/maintain-guides-how-to-systemd","3e8"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-upgrade",component:f("/docs/maintain-guides-how-to-upgrade","f9d"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-validate-kusama",component:f("/docs/maintain-guides-how-to-validate-kusama","eb0"),exact:!0},{path:"/docs/maintain-guides-how-to-validate-polkadot",component:f("/docs/maintain-guides-how-to-validate-polkadot","e43"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-secure-validator",component:f("/docs/maintain-guides-secure-validator","310"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-society-kusama",component:f("/docs/maintain-guides-society-kusama","6d3"),exact:!0},{path:"/docs/maintain-guides-validator-community",component:f("/docs/maintain-guides-validator-community","18d"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-validator-payout",component:f("/docs/maintain-guides-validator-payout","712"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-index",component:f("/docs/maintain-index","d6e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-networks",component:f("/docs/maintain-networks","234"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-node-index",component:f("/docs/maintain-node-index","5c6"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-polkadot-parameters",component:f("/docs/maintain-polkadot-parameters","5d7"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-rpc",component:f("/docs/maintain-rpc","f10"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-sync",component:f("/docs/maintain-sync","fd0"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-validator-index",component:f("/docs/maintain-validator-index","ae9"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-wss",component:f("/docs/maintain-wss","7f4"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-democracy",component:f("/docs/maintain/maintain-guides-democracy","806"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-join-council",component:f("/docs/maintain/maintain-guides-how-to-join-council","590"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-vote-councillor",component:f("/docs/maintain/maintain-guides-how-to-vote-councillor","ebd"),exact:!0,sidebar:"docs"},{path:"/docs/metadata",component:f("/docs/metadata","ba9"),exact:!0,sidebar:"docs"},{path:"/docs/multisig-apps",component:f("/docs/multisig-apps","72e"),exact:!0,sidebar:"docs"},{path:"/docs/parachains-apps",component:f("/docs/parachains-apps","196"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-direction",component:f("/docs/polkadot-direction","2f6"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-v1",component:f("/docs/polkadot-v1","770"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vault",component:f("/docs/polkadot-vault","d52"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vision-index",component:f("/docs/polkadot-vision-index","3c3"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs",component:f("/docs/polkadotjs","516"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs-ui",component:f("/docs/polkadotjs-ui","884"),exact:!0,sidebar:"docs"},{path:"/docs/programs-index",component:f("/docs/programs-index","98f"),exact:!0,sidebar:"docs"},{path:"/docs/research",component:f("/docs/research","5f7"),exact:!0,sidebar:"docs"},{path:"/docs/staking-apps",component:f("/docs/staking-apps","ca0"),exact:!0,sidebar:"docs"},{path:"/docs/staking-dashboard",component:f("/docs/staking-dashboard","a9a"),exact:!0,sidebar:"docs"},{path:"/docs/start-building",component:f("/docs/start-building","16a"),exact:!0,sidebar:"docs"},{path:"/docs/stay-safe-index",component:f("/docs/stay-safe-index","580"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-contributors",component:f("/docs/thousand-contributors","9ba"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-validators",component:f("/docs/thousand-validators","053"),exact:!0,sidebar:"docs"},{path:"/docs/transaction-attacks",component:f("/docs/transaction-attacks","937"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-and-extensions",component:f("/docs/wallets-and-extensions","e5f"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-index",component:f("/docs/wallets-index","656"),exact:!0,sidebar:"docs"},{path:"/docs/web3-and-polkadot",component:f("/docs/web3-and-polkadot","85e"),exact:!0,sidebar:"docs"}]},{path:"/",component:f("/","7cb"),exact:!0},{path:"*",component:f("*")}]},94184:(e,n)=>{var t;!function(){"use strict";var r={}.hasOwnProperty;function a(){for(var e=[],n=0;n{"use strict";function r(e){var n,t,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;na});const a=function(){for(var e,n,t=0,a="";t{"use strict";t.d(n,{lX:()=>x,q_:()=>C,ob:()=>p,PP:()=>P,Ep:()=>f});var r=t(87462);function a(e){return"/"===e.charAt(0)}function o(e,n){for(var t=n,r=t+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!l)for(;d--;d)i.unshift("..");!l||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return t&&"/"!==m.substr(-1)&&(m+="/"),m};var s=t(38776);function c(e){return"/"===e.charAt(0)?e:"/"+e}function l(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,n){return function(e,n){return 0===e.toLowerCase().indexOf(n.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(n.length))}(e,n)?e.substr(n.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var n=e.pathname,t=e.search,r=e.hash,a=n||"/";return t&&"?"!==t&&(a+="?"===t.charAt(0)?t:"?"+t),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,n,t,a){var o;"string"==typeof e?(o=function(e){var n=e||"/",t="",r="",a=n.indexOf("#");-1!==a&&(r=n.substr(a),n=n.substr(0,a));var o=n.indexOf("?");return-1!==o&&(t=n.substr(o),n=n.substr(0,o)),{pathname:n,search:"?"===t?"":t,hash:"#"===r?"":r}}(e),o.state=n):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==n&&void 0===o.state&&(o.state=n));try{o.pathname=decodeURI(o.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return t&&(o.key=t),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var n=[];return{setPrompt:function(n){return e=n,function(){e===n&&(e=null)}},confirmTransitionTo:function(n,t,r,a){if(null!=e){var o="function"==typeof e?e(n,t):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var t=!0;function r(){t&&e.apply(void 0,arguments)}return n.push(r),function(){t=!1,n=n.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,t=new Array(e),r=0;rn?t.splice(n,t.length-n,a):t.push(a),d({action:r,location:a,index:n,entries:t})}}))},replace:function(e,n){var r="REPLACE",a=p(e,n,h(),x.location);u.confirmTransitionTo(a,r,t,(function(e){e&&(x.entries[x.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var n=x.index+e;return n>=0&&n{"use strict";var r=t(59864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function c(e){return r.isMemo(e)?i:s[e.$$typeof]||a}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var l=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,f=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(n,t,r){if("string"!=typeof t){if(m){var a=p(t);a&&a!==m&&e(n,a,r)}var i=u(t);d&&(i=i.concat(d(t)));for(var s=c(n),h=c(t),g=0;g{"use strict";e.exports=function(e,n,t,r,a,o,i,s){if(!e){var c;if(void 0===n)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[t,r,a,o,i,s],u=0;(c=new Error(n.replace(/%s/g,(function(){return l[u++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},32497:(e,n,t)=>{"use strict";t.r(n)},32104:(e,n,t)=>{"use strict";t.r(n)},39604:(e,n,t)=>{"use strict";t.r(n)},70378:(e,n,t)=>{"use strict";t.r(n)},74865:function(e,n,t){var r,a;r=function(){var e,n,t={version:"0.2.0"},r=t.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function a(e,n,t){return et?t:e}function o(e){return 100*(-1+e)}function i(e,n,t){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+n+"ms "+t,a}t.configure=function(e){var n,t;for(n in e)void 0!==(t=e[n])&&e.hasOwnProperty(n)&&(r[n]=t);return this},t.status=null,t.set=function(e){var n=t.isStarted();e=a(e,r.minimum,1),t.status=1===e?null:e;var o=t.render(!n),l=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(n){""===r.positionUsing&&(r.positionUsing=t.getPositioningCSS()),c(l,i(e,u,d)),1===e?(c(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){c(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){t.remove(),n()}),u)}),u)):setTimeout(n,u)})),this},t.isStarted=function(){return"number"==typeof t.status},t.start=function(){t.status||t.set(0);var e=function(){setTimeout((function(){t.status&&(t.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},t.done=function(e){return e||t.status?t.inc(.3+.5*Math.random()).set(1):this},t.inc=function(e){var n=t.status;return n?("number"!=typeof e&&(e=(1-n)*a(Math.random()*n,.1,.95)),n=a(n+e,0,.994),t.set(n)):t.start()},t.trickle=function(){return t.inc(Math.random()*r.trickleRate)},e=0,n=0,t.promise=function(r){return r&&"resolved"!==r.state()?(0===n&&t.start(),e++,n++,r.always((function(){0==--n?(e=0,t.done()):t.set((e-n)/e)})),this):this},t.render=function(e){if(t.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var n=document.createElement("div");n.id="nprogress",n.innerHTML=r.template;var a,i=n.querySelector(r.barSelector),s=e?"-100":o(t.status||0),l=document.querySelector(r.parent);return c(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=n.querySelector(r.spinnerSelector))&&p(a),l!=document.body&&u(l,"nprogress-custom-parent"),l.appendChild(n),n},t.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},t.isRendered=function(){return!!document.getElementById("nprogress")},t.getPositioningCSS=function(){var e=document.body.style,n="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return n+"Perspective"in e?"translate3d":n+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function n(){var t=e.shift();t&&t(n)}return function(t){e.push(t),1==e.length&&n()}}(),c=function(){var e=["Webkit","O","Moz","ms"],n={};function t(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,n){return n.toUpperCase()}))}function r(n){var t=document.body.style;if(n in t)return n;for(var r,a=e.length,o=n.charAt(0).toUpperCase()+n.slice(1);a--;)if((r=e[a]+o)in t)return r;return n}function a(e){return e=t(e),n[e]||(n[e]=r(e))}function o(e,n,t){n=a(n),e.style[n]=t}return function(e,n){var t,r,a=arguments;if(2==a.length)for(t in n)void 0!==(r=n[t])&&n.hasOwnProperty(t)&&o(e,t,r);else o(e,a[1],a[2])}}();function l(e,n){return("string"==typeof e?e:f(e)).indexOf(" "+n+" ")>=0}function u(e,n){var t=f(e),r=t+n;l(t,n)||(e.className=r.substring(1))}function d(e,n){var t,r=f(e);l(e,n)&&(t=r.replace(" "+n+" "," "),e.className=t.substring(1,t.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return t},void 0===(a="function"==typeof r?r.call(n,t,n,e):r)||(e.exports=a)},27418:e=>{"use strict";var n=Object.getOwnPropertySymbols,t=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var n={},t=0;t<10;t++)n["_"+String.fromCharCode(t)]=t;if("0123456789"!==Object.getOwnPropertyNames(n).map((function(e){return n[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,s=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),c=1;c{!function(e){for(var n=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,t=0;t<2;t++)n=n.replace(//g,(function(){return n}));n=n.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+n),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},54294:(e,n,t)=>{var r={"./prism-rust":70767};function a(e){var n=o(e);return t(n)}function o(e){if(!t.o(r,e)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=54294},92703:(e,n,t)=>{"use strict";var r=t(50414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,n,t,a,o,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function n(){return e}e.isRequired=e;var t={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:n,element:e,elementType:e,instanceOf:n,node:e,objectOf:n,oneOf:n,oneOfType:n,shape:n,exact:n,checkPropTypes:o,resetWarningCache:a};return t.PropTypes=t,t}},45697:(e,n,t)=>{e.exports=t(92703)()},50414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},31555:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});var r=t(94184),a=t.n(r),o=t(67294),i=t(76792),s=t(85893);const c=o.forwardRef(((e,n)=>{const[{className:t,...r},{as:o="div",bsPrefix:c,spans:l}]=function({as:e,bsPrefix:n,className:t,...r}){n=(0,i.vE)(n,"col");const o=(0,i.pi)(),s=(0,i.zG)(),c=[],l=[];return o.forEach((e=>{const t=r[e];let a,o,i;delete r[e],"object"==typeof t&&null!=t?({span:a,offset:o,order:i}=t):a=t;const u=e!==s?`-${e}`:"";a&&c.push(!0===a?`${n}${u}`:`${n}${u}-${a}`),null!=i&&l.push(`order${u}-${i}`),null!=o&&l.push(`offset${u}-${o}`)})),[{...r,className:a()(t,...c,...l)},{as:e,bsPrefix:n,spans:c}]}(e);return(0,s.jsx)(o,{...r,ref:n,className:a()(t,!l.length&&c)})}));c.displayName="Col";const l=c},10682:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});var r=t(94184),a=t.n(r),o=t(67294),i=t(76792),s=t(85893);const c=o.forwardRef((({bsPrefix:e,fluid:n=!1,as:t="div",className:r,...o},c)=>{const l=(0,i.vE)(e,"container"),u="string"==typeof n?`-${n}`:"-fluid";return(0,s.jsx)(t,{ref:c,...o,className:a()(r,n?`${l}${u}`:l)})}));c.displayName="Container";const l=c},34051:(e,n,t)=>{"use strict";t.d(n,{Z:()=>l});var r=t(94184),a=t.n(r),o=t(67294),i=t(76792),s=t(85893);const c=o.forwardRef((({bsPrefix:e,className:n,as:t="div",...r},o)=>{const c=(0,i.vE)(e,"row"),l=(0,i.pi)(),u=(0,i.zG)(),d=`${c}-cols`,f=[];return l.forEach((e=>{const n=r[e];let t;delete r[e],null!=n&&"object"==typeof n?({cols:t}=n):t=n;const a=e!==u?`-${e}`:"";null!=t&&f.push(`${d}${a}-${t}`)})),(0,s.jsx)(t,{ref:o,...r,className:a()(n,c,...f)})}));c.displayName="Row";const l=c},76792:(e,n,t)=>{"use strict";t.d(n,{pi:()=>l,vE:()=>c,zG:()=>u});var r=t(67294);t(85893);const a=["xxl","xl","lg","md","sm","xs"],o=r.createContext({prefixes:{},breakpoints:a,minBreakpoint:"xs"}),{Consumer:i,Provider:s}=o;function c(e,n){const{prefixes:t}=(0,r.useContext)(o);return e||t[n]||n}function l(){const{breakpoints:e}=(0,r.useContext)(o);return e}function u(){const{minBreakpoint:e}=(0,r.useContext)(o);return e}},64448:(e,n,t)=>{"use strict";var r=t(67294),a=t(27418),o=t(63840);function i(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,t=1;t