diff --git a/404.html b/404.html index 0ab542ccb5..1c75a3a758 100644 --- a/404.html +++ b/404.html @@ -15,8 +15,8 @@ - - + +
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.

diff --git a/assets/js/320c8a05.5d808ffd.js b/assets/js/320c8a05.5d808ffd.js deleted file mode 100644 index 3700f64586..0000000000 --- a/assets/js/320c8a05.5d808ffd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4479],{98368:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var o=n(74848),s=n(28453);const a={id:"maintain-networks",title:"Networks",sidebar_label:"Networks",description:"Information about the different networks of the Polkadot ecosystem.",keywords:["networks","mainnet","testnet","canary","substrate"],slug:"../maintain-networks"},i=void 0,r={id:"maintain/maintain-networks",title:"Networks",description:"Information about the different networks of the Polkadot ecosystem.",source:"@site/../docs/maintain/maintain-networks.md",sourceDirName:"maintain",slug:"/maintain-networks",permalink:"/docs/maintain-networks",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Pierre Besson",lastUpdatedAt:1728903925e3,frontMatter:{id:"maintain-networks",title:"Networks",sidebar_label:"Networks",description:"Information about the different networks of the Polkadot ecosystem.",keywords:["networks","mainnet","testnet","canary","substrate"],slug:"../maintain-networks"}},d={},c=[{value:"Main networks",id:"main-networks",level:2},{value:"Polkadot Mainnet",id:"polkadot-mainnet",level:3},{value:"Kusama Canary Network",id:"kusama-canary-network",level:3},{value:"Test Networks",id:"test-networks",level:2},{value:"Westend Test Network",id:"westend-test-network",level:3},{value:"Westend Faucet",id:"westend-faucet",level:4},{value:"Westend Asset Hub",id:"westend-asset-hub",level:3},{value:"Westend Asset Hub Faucet",id:"westend-asset-hub-faucet",level:4},{value:"Rococo Test Network",id:"rococo-test-network",level:3},{value:"Paseo Test Network",id:"paseo-test-network",level:3},{value:"Paseo Faucet",id:"paseo-faucet",level:4},{value:"Wococo Test Network (inactive)",id:"wococo-test-network-inactive",level:3},{value:"Differences",id:"differences",level:2},{value:"Telemetry Dashboard",id:"telemetry-dashboard",level:2}];function l(e){const t={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"Polkadot is built on top of Substrate, a modular framework for blockchains. One feature of Substrate\nis to allow for connection to different networks using a single executable and configuring it with a\nstart-up flag. Here are some of the networks associated with Polkadot or Substrate that you may want\nto connect to and join."}),"\n",(0,o.jsx)(t.h2,{id:"main-networks",children:"Main networks"}),"\n",(0,o.jsxs)(t.p,{children:["To connect to a Polkadot network please follow the ",(0,o.jsx)(t.a,{href:"/docs/maintain-sync",children:"instructions"})," for installing\nthe Polkadot executable."]}),"\n",(0,o.jsx)(t.h3,{id:"polkadot-mainnet",children:"Polkadot Mainnet"}),"\n",(0,o.jsx)(t.p,{children:"Connecting to the Polkadot network is the default option when starting a node."}),"\n",(0,o.jsx)(t.p,{children:"To start a Polkadot node, run the Polkadot binary:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"polkadot\n"})}),"\n",(0,o.jsx)(t.p,{children:"and you will connect and start syncing to Polkadot."}),"\n",(0,o.jsxs)(t.p,{children:["Check your node is connected by viewing it on\n",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/#list/0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",children:"Telemetry"}),"\n(you can set a custom node name by specifying ",(0,o.jsx)(t.code,{children:'--name "my-custom-node-name"'}),")"]}),"\n",(0,o.jsx)(t.h3,{id:"kusama-canary-network",children:"Kusama Canary Network"}),"\n",(0,o.jsx)(t.p,{children:"Kusama is a canary network and holds real economic value."}),"\n",(0,o.jsxs)(t.p,{children:["Run the Polkadot binary and specify ",(0,o.jsx)(t.code,{children:"kusama"})," as the chain:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"polkadot --chain=kusama\n"})}),"\n",(0,o.jsx)(t.p,{children:"and you will connect and start syncing to Kusama."}),"\n",(0,o.jsxs)(t.p,{children:["Check your node is connected by viewing it on\n",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/#list/0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",children:"Kusama Telemetry"}),"\n(you can set a custom node name by specifying ",(0,o.jsx)(t.code,{children:'--name "my-custom-node-name"'}),")"]}),"\n",(0,o.jsx)(t.h2,{id:"test-networks",children:"Test Networks"}),"\n",(0,o.jsx)(t.h3,{id:"westend-test-network",children:"Westend Test Network"}),"\n",(0,o.jsxs)(t.p,{children:["Westend is the primary test network of Polkadot. The tokens on this network are called ",(0,o.jsx)(t.em,{children:"Westies"}),"\n(WND) and they purposefully hold no economic value."]}),"\n",(0,o.jsxs)(t.p,{children:["Run the Polkadot binary and specify ",(0,o.jsx)(t.code,{children:"westend"})," as the chain:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"polkadot --chain=westend\n"})}),"\n",(0,o.jsx)(t.p,{children:"and you will connect and start syncing to Westend."}),"\n",(0,o.jsxs)(t.p,{children:["Check that your node is connected by viewing it on\n",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/#list/0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e",children:"Westend Telemetry"}),"\n(you can set a custom node name by specifying ",(0,o.jsx)(t.code,{children:'--name "my-custom-node-name"'}),")."]}),"\n",(0,o.jsx)(t.h4,{id:"westend-faucet",children:"Westend Faucet"}),"\n",(0,o.jsxs)(t.p,{children:["Follow the instruction ",(0,o.jsx)(t.a,{href:"/docs/learn-DOT#getting-tokens-on-the-westend-testnet",children:"here"})," to get\nWesties (WND) tokens."]}),"\n",(0,o.jsx)(t.h3,{id:"westend-asset-hub",children:"Westend Asset Hub"}),"\n",(0,o.jsxs)(t.p,{children:["The Westend\n",(0,o.jsx)(t.a,{href:"https://wiki.polkadot.network/docs/learn-guides-assets-create#creating-assets-on-the-asset-hub",children:"Asset Hub"}),"\nis a system parachain on Westend network."]}),"\n",(0,o.jsx)(t.h4,{id:"westend-asset-hub-faucet",children:"Westend Asset Hub Faucet"}),"\n",(0,o.jsxs)(t.p,{children:["Claim WND tokens from the ",(0,o.jsx)(t.a,{href:"https://faucet.polkadot.io/westend",children:"faucet"})," on Westend and teleport them\nto Westend Asset Hub."]}),"\n",(0,o.jsx)(t.h3,{id:"rococo-test-network",children:"Rococo Test Network"}),"\n",(0,o.jsx)(t.p,{children:"Rococo used to be a Polkadot test network for parachains. The network was shut down following its replacement by Paseo."}),"\n",(0,o.jsx)(t.h3,{id:"paseo-test-network",children:"Paseo Test Network"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://github.com/paseo-network/",children:"Paseo"})," is a test network built for parachains.\nThe native token of this network (PAS) holds no economic value."]}),"\n",(0,o.jsx)(t.h4,{id:"paseo-faucet",children:"Paseo Faucet"}),"\n",(0,o.jsxs)(t.p,{children:["Follow the instruction ",(0,o.jsx)(t.a,{href:"/docs/learn-DOT#getting-tokens-on-the-paseo-testnet",children:"here"})," to get PAS tokens."]}),"\n",(0,o.jsx)(t.h3,{id:"wococo-test-network-inactive",children:"Wococo Test Network (inactive)"}),"\n",(0,o.jsx)(t.p,{children:"Wococo used to be a Polkadot test network for testing bridges. The network was shut down following\nthe bridge between Westend and Rococo deployment."}),"\n",(0,o.jsx)(t.h2,{id:"differences",children:"Differences"}),"\n",(0,o.jsxs)(t.p,{children:["Runtime differences (e.g. existential and multisignature deposit sizes) between the different\nnetworks can be found by doing a ",(0,o.jsx)(t.code,{children:"diff"})," between the ",(0,o.jsx)(t.code,{children:"src/lib.rs"})," of the repositories. For example,\nto compare the Polkadot and Kusama runtimes:"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.code,{children:"git clone https://github.com/polkadot-fellows/runtimes && cd runtimes/relay"})}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"ls"})," - show the available runtimes"]}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.code,{children:"diff polkadot/src/lib.rs kusama/src/lib.rs"})}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["You can also paste the runtimes\n(",(0,o.jsx)(t.a,{href:"https://github.com/polkadot-fellows/runtimes/blob/main/relay/polkadot/src/lib.rs",children:"Polkadot"}),",\n",(0,o.jsx)(t.a,{href:"https://github.com/polkadot-fellows/runtimes/blob/main/relay/kusama/src/lib.rs",children:"Kusama"}),") into a\nweb-based diff tool like ",(0,o.jsx)(t.a,{href:"https://www.diffchecker.com/",children:"Diffchecker"})," if you're not comfortable with\nthe CLI."]}),"\n",(0,o.jsx)(t.h2,{id:"telemetry-dashboard",children:"Telemetry Dashboard"}),"\n",(0,o.jsxs)(t.p,{children:["If you connect to the public networks, the default configuration for your node will connect it to\nthe public ",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/",children:"Telemetry"})," service."]}),"\n",(0,o.jsx)(t.p,{children:"You can verify that your node is connected by navigating to the correct network on the dashboard and\nfinding the name of your node."}),"\n",(0,o.jsx)(t.p,{children:"There is a built-in search function on the nodes page. Simply start typing keystrokes in the main\nwindow to make it available."})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var o=n(96540);const s={},a=o.createContext(s);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/320c8a05.d614270d.js b/assets/js/320c8a05.d614270d.js new file mode 100644 index 0000000000..bcc6e77c45 --- /dev/null +++ b/assets/js/320c8a05.d614270d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4479],{98368:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>a,metadata:()=>r,toc:()=>c});var o=n(74848),s=n(28453);const a={id:"maintain-networks",title:"Networks",sidebar_label:"Networks",description:"Information about the different networks of the Polkadot ecosystem.",keywords:["networks","mainnet","testnet","canary","substrate"],slug:"../maintain-networks"},i=void 0,r={id:"maintain/maintain-networks",title:"Networks",description:"Information about the different networks of the Polkadot ecosystem.",source:"@site/../docs/maintain/maintain-networks.md",sourceDirName:"maintain",slug:"/maintain-networks",permalink:"/docs/maintain-networks",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1729496727e3,frontMatter:{id:"maintain-networks",title:"Networks",sidebar_label:"Networks",description:"Information about the different networks of the Polkadot ecosystem.",keywords:["networks","mainnet","testnet","canary","substrate"],slug:"../maintain-networks"}},d={},c=[{value:"Main networks",id:"main-networks",level:2},{value:"Polkadot Mainnet",id:"polkadot-mainnet",level:3},{value:"Kusama Canary Network",id:"kusama-canary-network",level:3},{value:"Test Networks",id:"test-networks",level:2},{value:"Westend Test Network",id:"westend-test-network",level:3},{value:"Westend Faucet",id:"westend-faucet",level:4},{value:"Westend Asset Hub",id:"westend-asset-hub",level:3},{value:"Westend Asset Hub Faucet",id:"westend-asset-hub-faucet",level:4},{value:"Rococo Test Network",id:"rococo-test-network",level:3},{value:"Paseo Test Network",id:"paseo-test-network",level:3},{value:"Paseo Faucet",id:"paseo-faucet",level:4},{value:"Wococo Test Network (inactive)",id:"wococo-test-network-inactive",level:3},{value:"Differences",id:"differences",level:2},{value:"Telemetry Dashboard",id:"telemetry-dashboard",level:2}];function l(e){const t={a:"a",code:"code",em:"em",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",pre:"pre",ul:"ul",...(0,s.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(t.p,{children:"Polkadot is built on top of Substrate, a modular framework for blockchains. One feature of Substrate\nis to allow for connection to different networks using a single executable and configuring it with a\nstart-up flag. Here are some of the networks associated with Polkadot or Substrate that you may want\nto connect to and join."}),"\n",(0,o.jsx)(t.h2,{id:"main-networks",children:"Main networks"}),"\n",(0,o.jsxs)(t.p,{children:["To connect to a Polkadot network please follow the ",(0,o.jsx)(t.a,{href:"/docs/maintain-sync",children:"instructions"})," for installing\nthe Polkadot executable."]}),"\n",(0,o.jsx)(t.h3,{id:"polkadot-mainnet",children:"Polkadot Mainnet"}),"\n",(0,o.jsx)(t.p,{children:"Connecting to the Polkadot network is the default option when starting a node."}),"\n",(0,o.jsx)(t.p,{children:"To start a Polkadot node, run the Polkadot binary:"}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"polkadot\n"})}),"\n",(0,o.jsx)(t.p,{children:"and you will connect and start syncing to Polkadot."}),"\n",(0,o.jsxs)(t.p,{children:["Check your node is connected by viewing it on\n",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/#list/0x91b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3",children:"Telemetry"}),"\n(you can set a custom node name by specifying ",(0,o.jsx)(t.code,{children:'--name "my-custom-node-name"'}),")"]}),"\n",(0,o.jsx)(t.h3,{id:"kusama-canary-network",children:"Kusama Canary Network"}),"\n",(0,o.jsx)(t.p,{children:"Kusama is a canary network and holds real economic value."}),"\n",(0,o.jsxs)(t.p,{children:["Run the Polkadot binary and specify ",(0,o.jsx)(t.code,{children:"kusama"})," as the chain:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"polkadot --chain=kusama\n"})}),"\n",(0,o.jsx)(t.p,{children:"and you will connect and start syncing to Kusama."}),"\n",(0,o.jsxs)(t.p,{children:["Check your node is connected by viewing it on\n",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/#list/0xb0a8d493285c2df73290dfb7e61f870f17b41801197a149ca93654499ea3dafe",children:"Kusama Telemetry"}),"\n(you can set a custom node name by specifying ",(0,o.jsx)(t.code,{children:'--name "my-custom-node-name"'}),")"]}),"\n",(0,o.jsx)(t.h2,{id:"test-networks",children:"Test Networks"}),"\n",(0,o.jsx)(t.h3,{id:"westend-test-network",children:"Westend Test Network"}),"\n",(0,o.jsxs)(t.p,{children:["Westend is the primary test network of Polkadot. The tokens on this network are called ",(0,o.jsx)(t.em,{children:"Westies"}),"\n(WND) and they purposefully hold no economic value."]}),"\n",(0,o.jsxs)(t.p,{children:["Run the Polkadot binary and specify ",(0,o.jsx)(t.code,{children:"westend"})," as the chain:"]}),"\n",(0,o.jsx)(t.pre,{children:(0,o.jsx)(t.code,{className:"language-bash",children:"polkadot --chain=westend\n"})}),"\n",(0,o.jsx)(t.p,{children:"and you will connect and start syncing to Westend."}),"\n",(0,o.jsxs)(t.p,{children:["Check that your node is connected by viewing it on\n",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/#list/0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e",children:"Westend Telemetry"}),"\n(you can set a custom node name by specifying ",(0,o.jsx)(t.code,{children:'--name "my-custom-node-name"'}),")."]}),"\n",(0,o.jsx)(t.h4,{id:"westend-faucet",children:"Westend Faucet"}),"\n",(0,o.jsxs)(t.p,{children:["Follow the instruction ",(0,o.jsx)(t.a,{href:"/docs/learn-DOT#getting-tokens-on-the-westend-testnet",children:"here"})," to get\nWesties (WND) tokens."]}),"\n",(0,o.jsx)(t.h3,{id:"westend-asset-hub",children:"Westend Asset Hub"}),"\n",(0,o.jsxs)(t.p,{children:["The Westend\n",(0,o.jsx)(t.a,{href:"https://wiki.polkadot.network/docs/learn-guides-assets-create#creating-assets-on-the-asset-hub",children:"Asset Hub"}),"\nis a system parachain on Westend network."]}),"\n",(0,o.jsx)(t.h4,{id:"westend-asset-hub-faucet",children:"Westend Asset Hub Faucet"}),"\n",(0,o.jsxs)(t.p,{children:["Claim WND tokens from the ",(0,o.jsx)(t.a,{href:"https://faucet.polkadot.io/westend",children:"faucet"})," on Westend and teleport them\nto Westend Asset Hub."]}),"\n",(0,o.jsx)(t.h3,{id:"rococo-test-network",children:"Rococo Test Network"}),"\n",(0,o.jsx)(t.p,{children:"Rococo used to be a Polkadot test network for parachains. The network was shut down following its\nreplacement by Paseo."}),"\n",(0,o.jsx)(t.h3,{id:"paseo-test-network",children:"Paseo Test Network"}),"\n",(0,o.jsxs)(t.p,{children:[(0,o.jsx)(t.a,{href:"https://github.com/paseo-network/",children:"Paseo"})," is a test network built for parachains. The native token\nof this network (PAS) holds no economic value."]}),"\n",(0,o.jsx)(t.h4,{id:"paseo-faucet",children:"Paseo Faucet"}),"\n",(0,o.jsxs)(t.p,{children:["Follow the instruction ",(0,o.jsx)(t.a,{href:"/docs/learn-DOT#getting-tokens-on-the-paseo-testnet",children:"here"})," to get PAS\ntokens."]}),"\n",(0,o.jsx)(t.h3,{id:"wococo-test-network-inactive",children:"Wococo Test Network (inactive)"}),"\n",(0,o.jsx)(t.p,{children:"Wococo used to be a Polkadot test network for testing bridges. The network was shut down following\nthe bridge between Westend and Rococo deployment."}),"\n",(0,o.jsx)(t.h2,{id:"differences",children:"Differences"}),"\n",(0,o.jsxs)(t.p,{children:["Runtime differences (e.g. existential and multisignature deposit sizes) between the different\nnetworks can be found by doing a ",(0,o.jsx)(t.code,{children:"diff"})," between the ",(0,o.jsx)(t.code,{children:"src/lib.rs"})," of the repositories. For example,\nto compare the Polkadot and Kusama runtimes:"]}),"\n",(0,o.jsxs)(t.ul,{children:["\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.code,{children:"git clone https://github.com/polkadot-fellows/runtimes && cd runtimes/relay"})}),"\n",(0,o.jsxs)(t.li,{children:[(0,o.jsx)(t.code,{children:"ls"})," - show the available runtimes"]}),"\n",(0,o.jsx)(t.li,{children:(0,o.jsx)(t.code,{children:"diff polkadot/src/lib.rs kusama/src/lib.rs"})}),"\n"]}),"\n",(0,o.jsxs)(t.p,{children:["You can also paste the runtimes\n(",(0,o.jsx)(t.a,{href:"https://github.com/polkadot-fellows/runtimes/blob/main/relay/polkadot/src/lib.rs",children:"Polkadot"}),",\n",(0,o.jsx)(t.a,{href:"https://github.com/polkadot-fellows/runtimes/blob/main/relay/kusama/src/lib.rs",children:"Kusama"}),") into a\nweb-based diff tool like ",(0,o.jsx)(t.a,{href:"https://www.diffchecker.com/",children:"Diffchecker"})," if you're not comfortable with\nthe CLI."]}),"\n",(0,o.jsx)(t.h2,{id:"telemetry-dashboard",children:"Telemetry Dashboard"}),"\n",(0,o.jsxs)(t.p,{children:["If you connect to the public networks, the default configuration for your node will connect it to\nthe public ",(0,o.jsx)(t.a,{href:"https://telemetry.polkadot.io/",children:"Telemetry"})," service."]}),"\n",(0,o.jsx)(t.p,{children:"You can verify that your node is connected by navigating to the correct network on the dashboard and\nfinding the name of your node."}),"\n",(0,o.jsx)(t.p,{children:"There is a built-in search function on the nodes page. Simply start typing keystrokes in the main\nwindow to make it available."})]})}function h(e={}){const{wrapper:t}={...(0,s.R)(),...e.components};return t?(0,o.jsx)(t,{...e,children:(0,o.jsx)(l,{...e})}):l(e)}},28453:(e,t,n)=>{n.d(t,{R:()=>i,x:()=>r});var o=n(96540);const s={},a=o.createContext(s);function i(e){const t=o.useContext(a);return o.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function r(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),o.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/591eca19.f925ffc1.js b/assets/js/591eca19.43b951dd.js similarity index 60% rename from assets/js/591eca19.f925ffc1.js rename to assets/js/591eca19.43b951dd.js index 5e3eaeaabd..9922d4c8ac 100644 --- a/assets/js/591eca19.f925ffc1.js +++ b/assets/js/591eca19.43b951dd.js @@ -1 +1 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2493],{53458:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>t,metadata:()=>r,toc:()=>l});var a=i(74848),o=i(28453);const t={id:"polkadot-direction",title:"Polkadot Direction",sidebar_label:"Polkadot Direction",description:"Polkadot as a Decentralized and Secure Ubiquitous Computer.",keywords:["polkadot vision","decentralization","ubiquitous computer","coretime","blockspace","cores"],slug:"../polkadot-direction"},s=void 0,r={id:"general/polkadot-direction",title:"Polkadot Direction",description:"Polkadot as a Decentralized and Secure Ubiquitous Computer.",source:"@site/../docs/general/polkadot-direction.md",sourceDirName:"general",slug:"/polkadot-direction",permalink:"/docs/polkadot-direction",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1727991122e3,frontMatter:{id:"polkadot-direction",title:"Polkadot Direction",sidebar_label:"Polkadot Direction",description:"Polkadot as a Decentralized and Secure Ubiquitous Computer.",keywords:["polkadot vision","decentralization","ubiquitous computer","coretime","blockspace","cores"],slug:"../polkadot-direction"},sidebar:"docs",previous:{title:"Polkadot 1.0",permalink:"/docs/polkadot-v1"},next:{title:"Stay Safe",permalink:"/docs/stay-safe-index"}},c={},l=[{value:"Polkadot as a Computational Resource",id:"polkadot-as-a-computational-resource",level:2},{value:"Summary",id:"summary",level:2},{value:"From Slot Auctions to Coretime Marketplace",id:"from-slot-auctions-to-coretime-marketplace",level:2},{value:"From Chain-centricity to Application-centricity",id:"from-chain-centricity-to-application-centricity",level:2},{value:"XCM and Accords",id:"xcm-and-accords",level:3},{value:"Core Usage in Polkadot 1.0",id:"core-usage-in-polkadot-10",level:2},{value:"Agile Coretime Allocation",id:"agile-coretime-allocation",level:2},{value:"Split Coretime",id:"split-coretime",level:3},{value:"Strided Coretime",id:"strided-coretime",level:3},{value:"Combined Coretime",id:"combined-coretime",level:3},{value:"Agile Core Usage",id:"agile-core-usage",level:2},{value:"Compressed Cores",id:"compressed-cores",level:3},{value:"Shared Cores",id:"shared-cores",level:3},{value:"Agile Composable Computer",id:"agile-composable-computer",level:2},{value:"Polkadot's Resilience",id:"polkadots-resilience",level:2}];function d(e){const n={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["The material on this page is based on\n",(0,a.jsx)(n.a,{href:"https://www.youtube.com/watch?v=GIB1WeVuJD0",children:"Gavin Wood's talk at Polkadot Decoded 2023"}),"."]})}),"\n",(0,a.jsxs)(n.p,{children:["Understanding what ",(0,a.jsx)(n.a,{href:"/docs/polkadot-v1",children:"Polkadot 1.0"})," is about and the philosophy behind it will help\nus to envision the future direction of the Polkadot ecosystem toward abstraction and generalization."]}),"\n",(0,a.jsx)(n.h2,{id:"polkadot-as-a-computational-resource",children:"Polkadot as a Computational Resource"}),"\n",(0,a.jsxs)(n.p,{children:["Polkadot has been abstracted and generalized beyond what was originally proposed and envisioned in\nthe ",(0,a.jsx)(n.a,{href:"https://polkadot.network/whitepaper/",children:"whitepaper"}),". Polkadot is:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["About ",(0,a.jsx)(n.a,{href:"/docs/polkadot-v1#polkadots-blockspace",children:(0,a.jsx)(n.strong,{children:"Blockspace"})})," (the underlying resources that\nchains need), not chains."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"A platform to build applications"})," rather than chains and for people to use those applications.\nFundamentally, Polkadot is not a platform to host chains, and so far, chains happened to be one\nway to build applications and grow Polkadot's utility."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"A provider of resilient general-purpose continuation computation"}),", where the term\n",(0,a.jsx)(n.em,{children:"continuation"})," refers to a broad, long-running task that can do something, pause, continue (or do\nsomething else) later."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"A multicore computer"})," where chains that continuously operate in parallel on different cores are\ncalled ",(0,a.jsx)(n.a,{href:"/docs/learn-parachains",children:"parachains"}),". One core can be reserved for one single chain\nin-bulk or on-demand. On-demand cores can be accessed by multiple chains at different periods (see\nthe ",(0,a.jsx)(n.a,{href:"/docs/learn-agile-coretime",children:"Agile Coretime page"}),"). At the time of writing (2024), there\nare around 50 cores independently operating in parallel on Polkadot."]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["From now on ",(0,a.jsx)(n.em,{children:"application"})," will be used as a general term to describe anything that can use a\nPolkadot core to access secure and decentralized computation."]}),"\n",(0,a.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,a.jsx)(n.p,{children:"If we see Polkadot as a service provider of trustless and resilient computation through cores as\nwell as secure interoperability between core-powered applications, the future development of\nPolkadot can be directed towards the following main changes."}),"\n",(0,a.jsx)(n.p,{children:"A paradigm shift from:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"being a chain-focused ecosystem where each parachain owned an execution core at all times\n(acquired through fixed parachain auction), which allowed a simple and secure, sharded execution\nenvironment"}),"\n",(0,a.jsx)(n.li,{children:"to being an application-focused ecosystem where we remove the assumption that each application\nowns a core, and instead that all cores are a resource to be consumed and used as needed by all\napplications."}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["Previously, securing a core was a competitive process through an\n",(0,a.jsx)(n.a,{href:"/docs/learn/learn-auction",children:"auction mechanism"}),". With Agile Coretime, there is no need for\nauctions anymore. Teams can purchase on-demand coretime or reserve bulk coretime as required. This\ngreatly decreases the barrier-to-entry for software tinkerers and parachain teams."]}),"\n",(0,a.jsxs)(n.p,{children:["On top of those main changes, ",(0,a.jsx)(n.a,{href:"#agile-core-usage",children:"agile core usage"})," and\n",(0,a.jsx)(n.a,{href:"#agile-coretime-allocation",children:"coretime allocation"})," will allow any application to access Polkadot's\ncomputation based on their needs without wasting valuable blockspace. ",(0,a.jsx)(n.a,{href:"#xcm-and-accords",children:"Accords"}),"\nwill improve cross-chain communication and the security guarantees of XCM messages. Finally,\nPolkadot will scale by moving on-chain logic into its system parachains, allowing it to have more\nbandwidth for the ",(0,a.jsx)(n.a,{href:"/docs/learn-parachains-protocol",children:"parachains protocol"})," and accords."]}),"\n",(0,a.jsx)(n.h2,{id:"from-slot-auctions-to-coretime-marketplace",children:"From Slot Auctions to Coretime Marketplace"}),"\n",(0,a.jsxs)(n.p,{children:["The end product of blockchains is ",(0,a.jsx)(n.a,{href:"/docs/polkadot-v1#polkadots-blockspace",children:(0,a.jsx)(n.strong,{children:"Blockspace"})}),".\nApplications need to access Polkadot's blockspace, and the entry points to blockspace are the cores.\nThus, applications will need to reserve some time on cores or ",(0,a.jsx)(n.strong,{children:"Coretime"})," to gain the right to\naccess Polkadot's secure blockspace and interoperability for a finite period."]}),"\n",(0,a.jsx)(n.p,{children:"Cores must be agile and general: they can change what job they run as easily as a modern CPU. It\nfollows that the procurement of those cores must be agile as well."}),"\n",(0,a.jsx)(n.p,{children:"The auction mechanism is not agile, creates high entry barriers, and is designed for long-running\nsingle applications (i.e., the original Polkadot vision proposed in the whitepaper)."}),"\n",(0,a.jsxs)(n.p,{children:["We depart from the classic lease auctions and propose an agile marketplace for coretime, where\nessentially ",(0,a.jsx)(n.strong,{children:"coretime becomes a commodity that can be tokenized, sold, and traded"}),". This setup\nmaximizes the agility of Polkadot and lets the market figure out the best solution needed for\napplications to be successful."]}),"\n",(0,a.jsxs)(n.p,{children:["Applications can reserve ",(0,a.jsx)(n.strong,{children:"bulk coretime"})," and ",(0,a.jsx)(n.strong,{children:"on-demand coretime"})," depending on their needs. Bulk\ncoretime rental will be a standard rental of coretime through a broker system parachain at a fixed\nprice for a fixed period of time. On-demand coretime rental will be available through ongoing sale\nof coretime for immediate use at a spot price. This system lowers the barrier to entry for\nprospective builders."]}),"\n",(0,a.jsxs)(n.p,{children:["For example, revenues from coretime sales can be burnt, used to fund the Treasury, or used for a mix\nof those options. The topic is currently under discussion. For more information, see\n",(0,a.jsx)(n.a,{href:"https://github.com/polkadot-fellows/RFCs/pull/10",children:"RFC-0010"})," and\n",(0,a.jsx)(n.a,{href:"https://github.com/polkadot-fellows/RFCs/pull/17/files",children:"RFC-0015"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"from-chain-centricity-to-application-centricity",children:"From Chain-centricity to Application-centricity"}),"\n",(0,a.jsxs)(n.p,{children:["Polkadot 1.0 was a chain-centric paradigm consisting of isolated chains able to exchange messages.\nThis was not fundamentally different from having completely different chains connected to bridges,\nwith the only difference of having the relay chain securing the network, providing message-passing\ncapability, and doing some extra tasks such as ",(0,a.jsx)(n.a,{href:"/docs/learn-staking",children:"staking"}),",\n",(0,a.jsx)(n.a,{href:"./learn-accounts-index",children:"accounts"}),", ",(0,a.jsx)(n.a,{href:"/docs/learn-transactions#balance-transfers",children:"balances"}),",\nand ",(0,a.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:"governance"}),". Having a chain-centric system will ultimately\nend in chain-centric application and UX."]}),"\n",(0,a.jsx)(n.p,{children:"The true innovation of Polkadot is about leveraging the unique value proposition offered by\ndifferent chains and using those chains\u2019 collaborative potential to build inter-chain applications\nto solve real-world problems. Those applications will thus need to span across chains."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Increasingly fewer tasks will be handled by the relay chain"})," that will focus efforts only on\nprimary tasks: securing the network and providing secure message-passing capability.\n",(0,a.jsx)(n.a,{href:"/docs/learn-system-chains",children:"System parachains"})," will be used to take over secondary relay chain\ntasks such as staking, governance, etc."]}),"\n",(0,a.jsx)(n.h3,{id:"xcm-and-accords",children:"XCM and Accords"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"/docs/learn-xcm",children:"XCMP"})," is the transport layer for delivering XCM messages. It gives the\ntransportation method and a secure route but not a framework for binding agreements."]}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"/docs/learn-xcm-transport",children:"XCM"})," is a format, a language of intention abstract over\nfunctionality common within chains. It creates an expressive language of what you intend to do or\nwant to happen. XCM messages are transported between different chains using XCMP. Ideally, in a\nfully trustless environment, strong guarantees ensure chains faithfully interpret XCM messages. We\ncan have a secure mode of delivering messages that can be interpreted across protocols, but still\nmessages might be misinterpreted. These guarantees can be achieved with accords."]}),"\n",(0,a.jsxs)(n.p,{children:["An ",(0,a.jsx)(n.strong,{children:"Accord"})," is an ",(0,a.jsx)(n.em,{children:"opt-in"})," treaty across many chains, where treaty logic cannot be changed or\nundermined by one or more of those chains, and Polkadot guarantees faithful execution of this logic.\nAccords will be specific to a particular function, and any chain that enters the accord will be held\nto it and will service that particular function. To lower the entry barrier, accords can be proposed\npermissionlessly, but because they are opt-in, the accord proposal will take effect until chains\nagree and sign up."]}),"\n",(0,a.jsx)(n.p,{children:"To sum up, accords ensure that the receiver faithfully interprets XCM messages securely sent via\nXCMP channels. Accords are the missing piece of the puzzle to achieve a fully trustless and\ncollaborative environment between applications."}),"\n",(0,a.jsx)(n.p,{children:"Polkadot is the only ecosystem where accords can properly exist because it has a homogenous security\nlayer that provides a specific state transition function for each logic component. This allows\npatterns of cooperation between multiple logic components (i.e., trans-applications) that would not\nbe possible to achieve over bridges."}),"\n",(0,a.jsxs)(n.p,{children:["Accords will be implemented using ",(0,a.jsx)(n.a,{href:"/docs/learn-spree",children:"SPREE technology"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"core-usage-in-polkadot-10",children:"Core Usage in Polkadot 1.0"}),"\n",(0,a.jsx)(n.p,{children:"In Polkadot 1.0, applications produced blocks at a fixed rate of 12 seconds, whether needed or not.\nThis led to inefficient energy allocation and economic incentives for producing full blocks under\nheavy traffic and empty blocks under light traffic."}),"\n",(0,a.jsx)(n.p,{children:"The figure below shows the core usage for Polkadot 1.0, where the horizontal axis is time, and each\nrow represents a core. Colors show different parachains, each using one core (i.e., one parachain,\none core formula)."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-dumb",src:i(32550).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsxs)(n.p,{children:["The above setup allowed a ",(0,a.jsx)(n.strong,{children:"simple and secure, sharded execution environment"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"However, to achieve full efficiency, blocks must be produced when needed, and the system must target\nfull block capacity, lowering the probability of incentivizing validators to build blocks half full\nor, worse, empty."}),"\n",(0,a.jsx)(n.h2,{id:"agile-coretime-allocation",children:"Agile Coretime Allocation"}),"\n",(0,a.jsx)(n.p,{children:"In Polkadot 1.0, coretime is a fixed two-year period on one specific core. Here, we remove this\nlimitation and generalize coretime usage to meet different application needs."}),"\n",(0,a.jsx)(n.h3,{id:"split-coretime",children:"Split Coretime"}),"\n",(0,a.jsx)(n.p,{children:"Owners of coretime can split or trade it. An application A1 can run on core C1 for a finite period\nand then another application A2 can run on that core, or application A1 can continue running on\nanother core C2. Some applications might stop running for some time and resume later on."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-rangeSplit",src:i(67150).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h3,{id:"strided-coretime",children:"Strided Coretime"}),"\n",(0,a.jsx)(n.p,{children:"Ranges can be strided (i.e., applications can take turns on a core) to share costs or decrease block\nproduction rate, for example."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-rangeStrided",src:i(6923).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h3,{id:"combined-coretime",children:"Combined Coretime"}),"\n",(0,a.jsx)(n.p,{children:"An application can be assigned to multiple cores simultaneously. Some applications can have a\npermanent core assignment and an intermittent one, for example, in a period of high demand to send\nmultiple blocks to multiple cores at the same time slot to reduce latency."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-combined",src:i(41938).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h2,{id:"agile-core-usage",children:"Agile Core Usage"}),"\n",(0,a.jsx)(n.p,{children:"In Polkadot 1.0, one core is assigned to one application (in this case, equivalent to a parachain).\nIdeally, core affinity (i.e., which application operates on which core) is unimportant (see below).\nCores do not have any higher friendliness to one application than another."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-dumb-noAffinity",src:i(7960).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.p,{children:"Here, we remove the assumption that each application owns a core and instead that all cores are a\nresource to be consumed and used as needed by all applications in the ecosystem."}),"\n",(0,a.jsx)(n.h3,{id:"compressed-cores",children:"Compressed Cores"}),"\n",(0,a.jsx)(n.p,{children:"The same core can secure multiple blocks of the same application simultaneously. Combining multiple\napplication blocks in the same relay chain core will reduce latency at the expense of increased\nbandwidth for the fixed price of opening and closing a block."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-compressed",src:i(62720).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h3,{id:"shared-cores",children:"Shared Cores"}),"\n",(0,a.jsxs)(n.p,{children:["Sharing cores with other applications to share costs but with no reduction in latency. Note that\nthis is different from the ",(0,a.jsx)(n.a,{href:"#split-coretime",children:"split coretime"})," where one core is used by multiple\napplication at different times to share costs at the expense of higher latency."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-shared",src:i(49984).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h2,{id:"agile-composable-computer",children:"Agile Composable Computer"}),"\n",(0,a.jsxs)(n.p,{children:["All the above options of agile ",(0,a.jsx)(n.a,{href:"#agile-coretime-allocation",children:"coretime allocation"})," and\n",(0,a.jsx)(n.a,{href:"#agile-core-usage",children:"core usage"})," can be composable and enable the creation of an agile decentralized\nglobal computing system."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-composable",src:i(8420).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.p,{children:"Thus, this new vision is focused on Polkadot\u2019s resource, which is secure, flexible, and available\nblockspace that can be accessed by reserving some time on a core. Agility in allocating coretime and\nusing cores allows for maximized network efficiency and blockspace usage."}),"\n",(0,a.jsx)(n.h2,{id:"polkadots-resilience",children:"Polkadot's Resilience"}),"\n",(0,a.jsx)(n.p,{children:"Systems that have yet to be engineered with decentralization, cryptography, and game theory in mind,\nare breakable and prone to cyber-attacks. Polkadot is basing its resilience on different pillars:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Preponderance of light-client usage:"})," Centralized RPC servers are common but susceptible to\nattack and not trustless decentralized entry points to using blockchain-based applications. Light\nclient usage on Polkadot is possible through\n",(0,a.jsx)(n.a,{href:"/docs/build-light-clients#how-to-use-substrate-connect",children:"Smoldot"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Zero-Knowledge (ZK) Primitives:"})," They can have a problematic effect on censorship and\ncentralization as having a big state transition function boiled down to a single proof of correct\nexecution is not currently a scaling solution to build resilient systems. However, a library of\nrichly featured and high-performance ZK primitives ready for specific use cases is being built.\nThe first use-case will be used to improve privacy for on-chain collectives such as\n",(0,a.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"the Polkadot Technical Fellowship"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsxs)(n.strong,{children:[(0,a.jsx)(n.a,{href:"/docs/learn-safrole",children:"SAFROLE"})," consensus:"]})," New forkless block-production consensus\nalgorithm replacing ",(0,a.jsx)(n.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"})," and where block are\nnot produced unless they are expected to be finalized. This will provide several benefits, such\nas:","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Improved security, parachain performance, and UX from being forkless"}),"\n",(0,a.jsx)(n.li,{children:"Preventing front-running attacks through high-performance transaction routing where transactions\nare included in blocks in one hop instead of being gossiped, and transaction encryption."}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Internode Mixnet:"})," Shielded transport for short messages that","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"avoids leaking IP information for transactions, and"}),"\n",(0,a.jsx)(n.li,{children:"introduces a general messaging system allowing users, chains and off-chain workers, smart\ncontracts, pallets, and anything else existing within a chain to exchange messages containing\nsignatures, intentions, etc."}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Social Decentralization:"})," Resilience is achieved by including many participants contributing to\nthe system and coming to decisions through on-chain governance. Involving as many people as\npossible ensures resilience against spending becoming systemically misjudged and appropriately\ndirects wealth for spending treasury funds, salaries, and grants. Another crucial way of\ndecentralizing the network is ensuring experts on which the maintenance of the system relies upon\nare incentivized and recruited over time by the Polkadot network and not by organizations within\nthe Polkadot ecosystem."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},41938:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-combined-4ef969fb72931430cf067bccc10c1a73.png"},8420:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-composable-ee626ebd055fdf3bbd6d88d70bc2c110.png"},62720:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-compressed-db4821b411e6f4be0c12167d89ee022e.png"},67150:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-rangeSplit-d8511cbb8658052ac0a639bd6a722982.png"},6923:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-rangeStrided-605254487f94721806beca92707cfaf3.png"},49984:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-shared-f395560cce9a4fd4976c5259ce8c67c4.png"},7960:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-dumb-noAffinity-8d86655d36adc7c8de32114821a1764a.png"},32550:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-dumb-6419ee60a3606e10d89a1c91dbf24e20.png"},28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>r});var a=i(96540);const o={},t=a.createContext(o);function s(e){const n=a.useContext(t);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2493],{53458:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>c,contentTitle:()=>s,default:()=>h,frontMatter:()=>t,metadata:()=>r,toc:()=>l});var a=i(74848),o=i(28453);const t={id:"polkadot-direction",title:"Polkadot Direction",sidebar_label:"Polkadot Direction",description:"Polkadot as a Decentralized and Secure Ubiquitous Computer.",keywords:["polkadot vision","decentralization","ubiquitous computer","coretime","blockspace","cores"],slug:"../polkadot-direction"},s=void 0,r={id:"general/polkadot-direction",title:"Polkadot Direction",description:"Polkadot as a Decentralized and Secure Ubiquitous Computer.",source:"@site/../docs/general/polkadot-direction.md",sourceDirName:"general",slug:"/polkadot-direction",permalink:"/docs/polkadot-direction",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729513096e3,frontMatter:{id:"polkadot-direction",title:"Polkadot Direction",sidebar_label:"Polkadot Direction",description:"Polkadot as a Decentralized and Secure Ubiquitous Computer.",keywords:["polkadot vision","decentralization","ubiquitous computer","coretime","blockspace","cores"],slug:"../polkadot-direction"},sidebar:"docs",previous:{title:"Polkadot 1.0",permalink:"/docs/polkadot-v1"},next:{title:"Stay Safe",permalink:"/docs/stay-safe-index"}},c={},l=[{value:"Polkadot as a Computational Resource",id:"polkadot-as-a-computational-resource",level:2},{value:"Summary",id:"summary",level:2},{value:"From Slot Auctions to Coretime Marketplace",id:"from-slot-auctions-to-coretime-marketplace",level:2},{value:"From Chain-centricity to Application-centricity",id:"from-chain-centricity-to-application-centricity",level:2},{value:"XCM and Accords",id:"xcm-and-accords",level:3},{value:"Core Usage in Polkadot 1.0",id:"core-usage-in-polkadot-10",level:2},{value:"Agile Coretime Allocation",id:"agile-coretime-allocation",level:2},{value:"Split Coretime",id:"split-coretime",level:3},{value:"Strided Coretime",id:"strided-coretime",level:3},{value:"Combined Coretime",id:"combined-coretime",level:3},{value:"Agile Core Usage",id:"agile-core-usage",level:2},{value:"Compressed Cores",id:"compressed-cores",level:3},{value:"Shared Cores",id:"shared-cores",level:3},{value:"Agile Composable Computer",id:"agile-composable-computer",level:2},{value:"Polkadot's Resilience",id:"polkadots-resilience",level:2}];function d(e){const n={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...e.components};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(n.admonition,{type:"info",children:(0,a.jsxs)(n.p,{children:["The material on this page is based on\n",(0,a.jsx)(n.a,{href:"https://www.youtube.com/watch?v=GIB1WeVuJD0",children:"Gavin Wood's talk at Polkadot Decoded 2023"}),"."]})}),"\n",(0,a.jsxs)(n.p,{children:["Understanding what ",(0,a.jsx)(n.a,{href:"/docs/polkadot-v1",children:"Polkadot 1.0"})," is about and the philosophy behind it will help\nus to envision the future direction of the Polkadot ecosystem toward abstraction and generalization."]}),"\n",(0,a.jsx)(n.h2,{id:"polkadot-as-a-computational-resource",children:"Polkadot as a Computational Resource"}),"\n",(0,a.jsxs)(n.p,{children:["Polkadot has been abstracted and generalized beyond what was originally proposed and envisioned in\nthe ",(0,a.jsx)(n.a,{href:"https://polkadot.network/whitepaper/",children:"whitepaper"}),". Polkadot is:"]}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:["About ",(0,a.jsx)(n.a,{href:"/docs/polkadot-v1#polkadots-blockspace",children:(0,a.jsx)(n.strong,{children:"Blockspace"})})," (the underlying resources that\nchains need), not chains."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"A platform to build applications"})," rather than chains and for people to use those applications.\nFundamentally, Polkadot is not a platform to host chains, and so far, chains happened to be one\nway to build applications and grow Polkadot's utility."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"A provider of resilient general-purpose continuation computation"}),", where the term\n",(0,a.jsx)(n.em,{children:"continuation"})," refers to a broad, long-running task that can do something, pause, continue (or do\nsomething else) later."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"A multicore computer"})," where chains that continuously operate in parallel on different cores are\ncalled ",(0,a.jsx)(n.a,{href:"/docs/learn-parachains",children:"parachains"}),". One core can be reserved for one single chain\nin-bulk or on-demand. On-demand cores can be accessed by multiple chains at different periods (see\nthe ",(0,a.jsx)(n.a,{href:"/docs/learn-agile-coretime",children:"Agile Coretime page"}),"). At the time of writing (2024), there\nare around 50 cores independently operating in parallel on Polkadot."]}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["From now on ",(0,a.jsx)(n.em,{children:"application"})," will be used as a general term to describe anything that can use a\nPolkadot core to access secure and decentralized computation."]}),"\n",(0,a.jsx)(n.h2,{id:"summary",children:"Summary"}),"\n",(0,a.jsx)(n.p,{children:"If we see Polkadot as a service provider of trustless and resilient computation through cores as\nwell as secure interoperability between core-powered applications, the future development of\nPolkadot can be directed towards the following main changes."}),"\n",(0,a.jsx)(n.p,{children:"A paradigm shift from:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"being a chain-focused ecosystem where each parachain owned an execution core at all times\n(acquired through fixed parachain auction), which allowed a simple and secure, sharded execution\nenvironment"}),"\n",(0,a.jsx)(n.li,{children:"to being an application-focused ecosystem where we remove the assumption that each application\nowns a core, and instead that all cores are a resource to be consumed and used as needed by all\napplications."}),"\n"]}),"\n",(0,a.jsxs)(n.p,{children:["Previously, securing a core was a competitive process through an\n",(0,a.jsx)(n.a,{href:"/docs/learn/learn-auction",children:"auction mechanism"}),". With Agile Coretime, there is no need for\nauctions anymore. Teams can purchase on-demand coretime or reserve bulk coretime as required. This\ngreatly decreases the barrier-to-entry for software tinkerers and parachain teams."]}),"\n",(0,a.jsxs)(n.p,{children:["On top of those main changes, ",(0,a.jsx)(n.a,{href:"#agile-core-usage",children:"agile core usage"})," and\n",(0,a.jsx)(n.a,{href:"#agile-coretime-allocation",children:"coretime allocation"})," will allow any application to access Polkadot's\ncomputation based on their needs without wasting valuable blockspace. ",(0,a.jsx)(n.a,{href:"#xcm-and-accords",children:"Accords"}),"\nwill improve cross-chain communication and the security guarantees of XCM messages. Finally,\nPolkadot will scale by moving on-chain logic into its system parachains, allowing it to have more\nbandwidth for the ",(0,a.jsx)(n.a,{href:"/docs/learn-parachains-protocol",children:"parachains protocol"})," and accords."]}),"\n",(0,a.jsx)(n.h2,{id:"from-slot-auctions-to-coretime-marketplace",children:"From Slot Auctions to Coretime Marketplace"}),"\n",(0,a.jsxs)(n.p,{children:["The end product of blockchains is ",(0,a.jsx)(n.a,{href:"/docs/polkadot-v1#polkadots-blockspace",children:(0,a.jsx)(n.strong,{children:"Blockspace"})}),".\nApplications need to access Polkadot's blockspace, and the entry points to blockspace are the cores.\nThus, applications will need to reserve some time on cores or ",(0,a.jsx)(n.strong,{children:"Coretime"})," to gain the right to\naccess Polkadot's secure blockspace and interoperability for a finite period."]}),"\n",(0,a.jsx)(n.p,{children:"Cores must be agile and general: they can change what job they run as easily as a modern CPU. It\nfollows that the procurement of those cores must be agile as well."}),"\n",(0,a.jsx)(n.p,{children:"The auction mechanism is not agile, creates high entry barriers, and is designed for long-running\nsingle applications (i.e., the original Polkadot vision proposed in the whitepaper)."}),"\n",(0,a.jsxs)(n.p,{children:["We depart from the classic lease auctions and propose an agile marketplace for coretime, where\nessentially ",(0,a.jsx)(n.strong,{children:"coretime becomes a commodity that can be tokenized, sold, and traded"}),". This setup\nmaximizes the agility of Polkadot and lets the market figure out the best solution needed for\napplications to be successful."]}),"\n",(0,a.jsxs)(n.p,{children:["Applications can reserve ",(0,a.jsx)(n.strong,{children:"bulk coretime"})," and ",(0,a.jsx)(n.strong,{children:"on-demand coretime"})," depending on their needs. Bulk\ncoretime rental will be a standard rental of coretime through a broker system parachain at a fixed\nprice for a fixed period of time. On-demand coretime rental will be available through ongoing sale\nof coretime for immediate use at a spot price. This system lowers the barrier to entry for\nprospective builders."]}),"\n",(0,a.jsxs)(n.p,{children:["For example, revenues from coretime sales can be burnt, used to fund the Treasury, or used for a mix\nof those options. The topic is currently under discussion. For more information, see\n",(0,a.jsx)(n.a,{href:"https://github.com/polkadot-fellows/RFCs/pull/10",children:"RFC-0010"})," and\n",(0,a.jsx)(n.a,{href:"https://github.com/polkadot-fellows/RFCs/pull/17/files",children:"RFC-0015"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"from-chain-centricity-to-application-centricity",children:"From Chain-centricity to Application-centricity"}),"\n",(0,a.jsxs)(n.p,{children:["Polkadot 1.0 was a chain-centric paradigm consisting of isolated chains able to exchange messages.\nThis was not fundamentally different from having completely different chains connected to bridges,\nwith the only difference of having the relay chain securing the network, providing message-passing\ncapability, and doing some extra tasks such as ",(0,a.jsx)(n.a,{href:"/docs/learn-staking",children:"staking"}),",\n",(0,a.jsx)(n.a,{href:"./learn-accounts-index",children:"accounts"}),", ",(0,a.jsx)(n.a,{href:"/docs/learn-transactions#balance-transfers",children:"balances"}),",\nand ",(0,a.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:"governance"}),". Having a chain-centric system will ultimately\nend in chain-centric application and UX."]}),"\n",(0,a.jsx)(n.p,{children:"The true innovation of Polkadot is about leveraging the unique value proposition offered by\ndifferent chains and using those chains\u2019 collaborative potential to build inter-chain applications\nto solve real-world problems. Those applications will thus need to span across chains."}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.strong,{children:"Increasingly fewer tasks will be handled by the relay chain"})," that will focus efforts only on\nprimary tasks: securing the network and providing secure message-passing capability.\n",(0,a.jsx)(n.a,{href:"/docs/learn-system-chains",children:"System parachains"})," will be used to take over secondary relay chain\ntasks such as staking, governance, etc."]}),"\n",(0,a.jsx)(n.h3,{id:"xcm-and-accords",children:"XCM and Accords"}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"/docs/learn-xcm",children:"XCMP"})," is the transport layer for delivering XCM messages. It gives the\ntransportation method and a secure route but not a framework for binding agreements."]}),"\n",(0,a.jsxs)(n.p,{children:[(0,a.jsx)(n.a,{href:"/docs/learn-xcm-transport",children:"XCM"})," is a format, a language of intention abstract over\nfunctionality common within chains. It creates an expressive language of what you intend to do or\nwant to happen. XCM messages are transported between different chains using XCMP. Ideally, in a\nfully trustless environment, strong guarantees ensure chains faithfully interpret XCM messages. We\ncan have a secure mode of delivering messages that can be interpreted across protocols, but still\nmessages might be misinterpreted. These guarantees can be achieved with accords."]}),"\n",(0,a.jsxs)(n.p,{children:["An ",(0,a.jsx)(n.strong,{children:"Accord"})," is an ",(0,a.jsx)(n.em,{children:"opt-in"})," treaty across many chains, where treaty logic cannot be changed or\nundermined by one or more of those chains, and Polkadot guarantees faithful execution of this logic.\nAccords will be specific to a particular function, and any chain that enters the accord will be held\nto it and will service that particular function. To lower the entry barrier, accords can be proposed\npermissionlessly, but because they are opt-in, the accord proposal will take effect until chains\nagree and sign up."]}),"\n",(0,a.jsx)(n.p,{children:"To sum up, accords ensure that the receiver faithfully interprets XCM messages securely sent via\nXCMP channels. Accords are the missing piece of the puzzle to achieve a fully trustless and\ncollaborative environment between applications."}),"\n",(0,a.jsx)(n.p,{children:"Polkadot is the only ecosystem where accords can properly exist because it has a homogenous security\nlayer that provides a specific state transition function for each logic component. This allows\npatterns of cooperation between multiple logic components (i.e., trans-applications) that would not\nbe possible to achieve over bridges."}),"\n",(0,a.jsxs)(n.p,{children:["Accords will be implemented using ",(0,a.jsx)(n.a,{href:"/docs/learn-spree",children:"SPREE technology"}),"."]}),"\n",(0,a.jsx)(n.h2,{id:"core-usage-in-polkadot-10",children:"Core Usage in Polkadot 1.0"}),"\n",(0,a.jsx)(n.p,{children:"In Polkadot 1.0, applications produced blocks at a fixed rate of 12 seconds, whether needed or not.\nThis led to inefficient energy allocation and economic incentives for producing full blocks under\nheavy traffic and empty blocks under light traffic."}),"\n",(0,a.jsx)(n.p,{children:"The figure below shows the core usage for Polkadot 1.0, where the horizontal axis is time, and each\nrow represents a core. Colors show different parachains, each using one core (i.e., one parachain,\none core formula)."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-dumb",src:i(32550).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsxs)(n.p,{children:["The above setup allowed a ",(0,a.jsx)(n.strong,{children:"simple and secure, sharded execution environment"}),"."]}),"\n",(0,a.jsx)(n.p,{children:"However, to achieve full efficiency, blocks must be produced when needed, and the system must target\nfull block capacity, lowering the probability of incentivizing validators to build blocks half full\nor, worse, empty."}),"\n",(0,a.jsx)(n.h2,{id:"agile-coretime-allocation",children:"Agile Coretime Allocation"}),"\n",(0,a.jsxs)(n.p,{children:["In Polkadot 1.0, coretime is a fixed two-year period on one specific core. Here, we remove this\nlimitation and generalize coretime usage to meet different application needs. For more information,\nsee the ",(0,a.jsx)(n.a,{href:"/docs/learn-agile-coretime",children:"agile coretime documentation"}),"."]}),"\n",(0,a.jsx)(n.h3,{id:"split-coretime",children:"Split Coretime"}),"\n",(0,a.jsx)(n.p,{children:"Owners of coretime can split or trade it. An application A1 can run on core C1 for a finite period\nand then another application A2 can run on that core, or application A1 can continue running on\nanother core C2. Some applications might stop running for some time and resume later on."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-rangeSplit",src:i(67150).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h3,{id:"strided-coretime",children:"Strided Coretime"}),"\n",(0,a.jsx)(n.p,{children:"Ranges can be strided (i.e., applications can take turns on a core) to share costs or decrease block\nproduction rate, for example."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-rangeStrided",src:i(6923).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h3,{id:"combined-coretime",children:"Combined Coretime"}),"\n",(0,a.jsxs)(n.p,{children:["An application can be assigned to multiple cores simultaneously. Some applications can have a\npermanent core assignment and an intermittent one, for example, in a period of high demand to send\nmultiple blocks to multiple cores at the same time slot to reduce latency. Combining coretime in this manner is\nachieved through ",(0,a.jsx)(n.a,{href:"/docs/learn-elastic-scaling",children:"elastic scaling"}),"."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-combined",src:i(41938).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h2,{id:"agile-core-usage",children:"Agile Core Usage"}),"\n",(0,a.jsx)(n.p,{children:"In Polkadot 1.0, one core is assigned to one application (in this case, equivalent to a parachain).\nIdeally, core affinity (i.e., which application operates on which core) is unimportant (see below).\nCores do not have any higher friendliness to one application than another."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-dumb-noAffinity",src:i(7960).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.p,{children:"Here, we remove the assumption that each application owns a core and instead that all cores are a\nresource to be consumed and used as needed by all applications in the ecosystem."}),"\n",(0,a.jsx)(n.h3,{id:"compressed-cores",children:"Compressed Cores"}),"\n",(0,a.jsx)(n.p,{children:"The same core can secure multiple blocks of the same application simultaneously. Combining multiple\napplication blocks in the same relay chain core will reduce latency at the expense of increased\nbandwidth for the fixed price of opening and closing a block."}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-compressed",src:i(62720).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h3,{id:"shared-cores",children:"Shared Cores"}),"\n",(0,a.jsxs)(n.p,{children:["Sharing cores with other applications to share costs but with no reduction in latency. Note that\nthis is different from the ",(0,a.jsx)(n.a,{href:"#split-coretime",children:"split coretime"})," where one core is used by multiple\napplication at different times to share costs at the expense of higher latency. Shared cores will be\nenabled with ",(0,a.jsx)(n.a,{href:"/docs/learn-jam-chain",children:"JAM"}),", a semi-coherent system in which data from\ndifferent shards can be scheduled within the same core."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-shared",src:i(49984).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.h2,{id:"agile-composable-computer",children:"Agile Composable Computer"}),"\n",(0,a.jsxs)(n.p,{children:["All the above options of agile ",(0,a.jsx)(n.a,{href:"#agile-coretime-allocation",children:"coretime allocation"})," and\n",(0,a.jsx)(n.a,{href:"#agile-core-usage",children:"core usage"})," can be composable and enable the creation of an agile decentralized\nglobal computing system."]}),"\n",(0,a.jsx)(n.p,{children:(0,a.jsx)(n.img,{alt:"core-usage-agile-composable",src:i(8420).A+"",width:"1920",height:"800"})}),"\n",(0,a.jsx)(n.p,{children:"Thus, this new vision is focused on Polkadot\u2019s resource, which is secure, flexible, and available\nblockspace that can be accessed by reserving some time on a core. Agility in allocating coretime and\nusing cores allows for maximized network efficiency and blockspace usage."}),"\n",(0,a.jsx)(n.h2,{id:"polkadots-resilience",children:"Polkadot's Resilience"}),"\n",(0,a.jsx)(n.p,{children:"Systems that have yet to be engineered with decentralization, cryptography, and game theory in mind,\nare breakable and prone to cyber-attacks. Polkadot is basing its resilience on different pillars:"}),"\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Preponderance of light-client usage:"})," Centralized RPC servers are common but susceptible to\nattack and not trustless decentralized entry points to using blockchain-based applications. Light\nclient usage on Polkadot is possible through\n",(0,a.jsx)(n.a,{href:"/docs/build-light-clients#how-to-use-substrate-connect",children:"Smoldot"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Zero-Knowledge (ZK) Primitives:"})," They can have a problematic effect on censorship and\ncentralization as having a big state transition function boiled down to a single proof of correct\nexecution is not currently a scaling solution to build resilient systems. However, a library of\nrichly featured and high-performance ZK primitives ready for specific use cases is being built.\nThe first use-case will be used to improve privacy for on-chain collectives such as\n",(0,a.jsx)(n.a,{href:"/docs/learn-polkadot-technical-fellowship",children:"the Polkadot Technical Fellowship"}),"."]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsxs)(n.strong,{children:[(0,a.jsx)(n.a,{href:"/docs/learn-safrole",children:"SAFROLE"})," consensus:"]})," New forkless block-production consensus\nalgorithm replacing ",(0,a.jsx)(n.a,{href:"/docs/learn-consensus#block-production-babe",children:"BABE"})," and where block are\nnot produced unless they are expected to be finalized. This will provide several benefits, such\nas:","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"Improved security, parachain performance, and UX from being forkless"}),"\n",(0,a.jsx)(n.li,{children:"Preventing front-running attacks through high-performance transaction routing where transactions\nare included in blocks in one hop instead of being gossiped, and transaction encryption."}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Internode Mixnet:"})," Shielded transport for short messages that","\n",(0,a.jsxs)(n.ul,{children:["\n",(0,a.jsx)(n.li,{children:"avoids leaking IP information for transactions, and"}),"\n",(0,a.jsx)(n.li,{children:"introduces a general messaging system allowing users, chains and off-chain workers, smart\ncontracts, pallets, and anything else existing within a chain to exchange messages containing\nsignatures, intentions, etc."}),"\n"]}),"\n"]}),"\n",(0,a.jsxs)(n.li,{children:[(0,a.jsx)(n.strong,{children:"Social Decentralization:"})," Resilience is achieved by including many participants contributing to\nthe system and coming to decisions through on-chain governance. Involving as many people as\npossible ensures resilience against spending becoming systemically misjudged and appropriately\ndirects wealth for spending treasury funds, salaries, and grants. Another crucial way of\ndecentralizing the network is ensuring experts on which the maintenance of the system relies upon\nare incentivized and recruited over time by the Polkadot network and not by organizations within\nthe Polkadot ecosystem."]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,o.R)(),...e.components};return n?(0,a.jsx)(n,{...e,children:(0,a.jsx)(d,{...e})}):d(e)}},41938:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-combined-4ef969fb72931430cf067bccc10c1a73.png"},8420:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-composable-ee626ebd055fdf3bbd6d88d70bc2c110.png"},62720:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-compressed-db4821b411e6f4be0c12167d89ee022e.png"},67150:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-rangeSplit-d8511cbb8658052ac0a639bd6a722982.png"},6923:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-rangeStrided-605254487f94721806beca92707cfaf3.png"},49984:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-agile-shared-f395560cce9a4fd4976c5259ce8c67c4.png"},7960:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-dumb-noAffinity-8d86655d36adc7c8de32114821a1764a.png"},32550:(e,n,i)=>{i.d(n,{A:()=>a});const a=i.p+"assets/images/core-usage-dumb-6419ee60a3606e10d89a1c91dbf24e20.png"},28453:(e,n,i)=>{i.d(n,{R:()=>s,x:()=>r});var a=i(96540);const o={},t=a.createContext(o);function s(e){const n=a.useContext(t);return a.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:s(e.components),a.createElement(t.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/85afe03a.041a0cb6.js b/assets/js/85afe03a.041a0cb6.js deleted file mode 100644 index 3ab052c815..0000000000 --- a/assets/js/85afe03a.041a0cb6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1628],{80396:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var d=s(74848),n=s(28453);const r={id:"maintain-errors",title:"Errors and How to Resolve Them",sidebar_label:"Resolving Errors",description:"Common errors you might encounter and how they can be resolved.",keywords:["errors","common errors","fix errors"],slug:"../maintain-errors"},i=void 0,l={id:"maintain/maintain-errors",title:"Errors and How to Resolve Them",description:"Common errors you might encounter and how they can be resolved.",source:"@site/../docs/maintain/maintain-errors.md",sourceDirName:"maintain",slug:"/maintain-errors",permalink:"/docs/maintain-errors",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1727777184e3,frontMatter:{id:"maintain-errors",title:"Errors and How to Resolve Them",sidebar_label:"Resolving Errors",description:"Common errors you might encounter and how they can be resolved.",keywords:["errors","common errors","fix errors"],slug:"../maintain-errors"},sidebar:"docs",previous:{title:"Hackathons",permalink:"/docs/build-hackathon"},next:{title:"Bug Bounty",permalink:"/docs/kusama-bug-bounty"}},o={},c=[{value:"Polkadot-JS Apps Explorer",id:"polkadot-js-apps-explorer",level:2},{value:"Subscan",id:"subscan",level:2},{value:"Common Errors",id:"common-errors",level:2},{value:"Error Table",id:"error-table",level:2}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(t.p,{children:["Errors in Substrate-based chains are usually accompanied by descriptive messages. However, to read\nthese messages, a tool parsing the blockchain data needs to request ",(0,d.jsx)(t.em,{children:"chain metadata"})," from a node.\nThat metadata explains how to read the messages. One such tool with a built-in parser for chain\nmetadata is the ",(0,d.jsx)(t.a,{href:"https://polkadot.js.org/apps",children:"Polkadot-JS Apps UI"}),"."]}),"\n",(0,d.jsxs)(t.p,{children:["If this page does not answer your question, try searching for your problem at the\n",(0,d.jsx)(t.a,{href:"https://support.polkadot.network/",children:"Polkadot Knowledge Base"})," for more information on troubleshooting\nyour issue."]}),"\n",(0,d.jsx)(t.h2,{id:"polkadot-js-apps-explorer",children:"Polkadot-JS Apps Explorer"}),"\n",(0,d.jsx)(t.p,{children:"Here's how to find out the detailed error description through Polkadot-JS Apps."}),"\n",(0,d.jsx)(t.p,{children:"A typical failed transactions looks something like this:"}),"\n",(0,d.jsx)(t.p,{children:(0,d.jsx)(t.img,{alt:"Error while sending a transaction",src:s(58691).A+"",width:"347",height:"291"})}),"\n",(0,d.jsx)(t.p,{children:"The image displays only the error name as defined in the code, not its error message. Despite this\nerror being rather self-explanatory, let's find its details."}),"\n",(0,d.jsxs)(t.p,{children:["In the ",(0,d.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/explorer",children:"explorer tab"}),", find the block in which this failure\noccurred. Then, expand the ",(0,d.jsx)(t.code,{children:"system.ExtrinsicFailed"})," frame:"]}),"\n",(0,d.jsx)(t.p,{children:(0,d.jsx)(t.img,{alt:"Error described",src:s(64212).A+"",width:"627",height:"362"})}),"\n",(0,d.jsxs)(t.p,{children:["Notice how the ",(0,d.jsx)(t.code,{children:"details"})," field contains a human-readable description of the error. Most errors will\nhave this, if looked up this way."]}),"\n",(0,d.jsxs)(t.p,{children:[(0,d.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/explorer/query/0xa10104ed21dfe409c7871a975155766c5dd97e1e2ac7faf3c90f1f8dca89104b",children:"This block"}),"\nis a live example of the above."]}),"\n",(0,d.jsxs)(t.p,{children:["If you cannot look up the error this way, or there is no message in the ",(0,d.jsx)(t.code,{children:"details"})," field, consult the\ntable below."]}),"\n",(0,d.jsx)(t.h2,{id:"subscan",children:"Subscan"}),"\n",(0,d.jsxs)(t.p,{children:["The ",(0,d.jsx)(t.code,{children:"ExtrinsicFailed"})," event indicates when a transaction does not succeed\n(",(0,d.jsx)(t.a,{href:"https://polkadot.subscan.io/extrinsic/19983878-2?event=19983878-53",children:"example"}),"). This event gives us\nthe ",(0,d.jsx)(t.code,{children:"error"})," and ",(0,d.jsx)(t.code,{children:"index"})," (as seen in the table of the event, in the ",(0,d.jsx)(t.code,{children:"dispatch_error"})," row) indices of\nthe error but does not give us a nice message to understand what it means. We will look up the error\nin the codebase ourselves to understand what went wrong."]}),"\n",(0,d.jsxs)(t.p,{children:["First, we should understand that the ",(0,d.jsx)(t.code,{children:"index"})," number is the index of the pallet in the runtime from\nwhich the error originated. The ",(0,d.jsx)(t.code,{children:"error"})," is likewise the index of that pallet's errors which is the\nexact one we're looking for. Both of these indices start counting from 0."]}),"\n",(0,d.jsxs)(t.p,{children:["For example, if ",(0,d.jsx)(t.code,{children:"index"})," is 5 and ",(0,d.jsx)(t.code,{children:"error"})," is 3, as in the example linked above, we need to look at\nthe runtime for the fourth error (index 3) in the sixth pallet (index 5)."]}),"\n",(0,d.jsxs)(t.p,{children:["By looking at the\n",(0,d.jsx)(t.a,{href:"https://github.com/polkadot-fellows/runtimes/blob/main/relay/polkadot/src/lib.rs",children:"runtime code"})," we\nsee that the pallet at index 5 is ",(0,d.jsx)(t.code,{children:"Balances"}),". Now we will check the Balances pallet's code which is\nhosted in the Substrate repository, and look for the fourth error in the ",(0,d.jsx)(t.code,{children:"Error enum"}),". According to\nits source the error that we got is ",(0,d.jsx)(t.code,{children:"InsufficientBalance"}),', or in other words, "Balance too low to\nsend value".']}),"\n",(0,d.jsx)(t.h2,{id:"common-errors",children:"Common Errors"}),"\n",(0,d.jsx)(t.p,{children:"The table below lists the most commonly encountered errors and ways to resolve them."}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Error"}),(0,d.jsx)(t.th,{children:"Description"}),(0,d.jsx)(t.th,{children:"Solution"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"BadOrigin"}),(0,d.jsx)(t.td,{children:"You are not allowed to do this operation, e.g. trying to create a council motion with a non-council account."}),(0,d.jsxs)(t.td,{children:["Either switch to an account that has the necessary permissions, or check if the operation you're trying to execute is permitted at all (e.g. calling ",(0,d.jsx)(t.code,{children:"system.setCode"})," to do a runtime upgrade directly, without voting)."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"BadProof"}),(0,d.jsx)(t.td,{children:"The transaction's signature seems invalid."}),(0,d.jsx)(t.td,{children:"It's possible that the node you're connected to is following an obsolete fork - trying again after it catches up usually resolves the issue. To check for bigger problems, inspect the last finalized and current best block of the node you're connected to and compare the values to chain stats exposed by other nodes - are they in sync? If not, try connecting to a different node."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Future"}),(0,d.jsxs)(t.td,{children:['Transaction nonce too high, i.e. it\'s "from the future", ',(0,d.jsx)(t.strong,{children:"see note below"}),"."]}),(0,d.jsx)(t.td,{children:"Reduce the nonce to +1 of current nonce. Check current nonce by inspecting the address you're using to send the transaction."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Stale"}),(0,d.jsx)(t.td,{children:"Transaction nonce too low."}),(0,d.jsx)(t.td,{children:"Increase the nonce to +1 of current nonce. Check current nonce by inspecting the address you're using to send the transaction."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"ExhaustsResources"}),(0,d.jsx)(t.td,{children:"There aren't enough resources left in the current block to submit this transaction."}),(0,d.jsx)(t.td,{children:"Try again in the next block."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Payment"}),(0,d.jsx)(t.td,{children:"Unable to pay for TX fee."}),(0,d.jsx)(t.td,{children:"You might not have enough free balance to cover the fee this transaction would incur."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Temporarily banned"}),(0,d.jsx)(t.td,{children:"The transaction is temporarily banned."}),(0,d.jsx)(t.td,{children:"The tx is already in pool. Either try on a different node, or wait to see if the initial transaction goes through."})]})]})]}),"\n",(0,d.jsx)(t.admonition,{title:"Future Error",type:"note",children:(0,d.jsxs)(t.p,{children:["This error will not cause the TX to be discarded immediately. Instead, it will be sent to the\n",(0,d.jsx)(t.a,{href:"https://docs.substrate.io/main-docs/fundamentals/transaction-lifecycle/",children:"futures queue"}),", where it\nwill wait to be executed at the correct place in the nonce sequence OR it will get discarded due to\nsome other error (ex. the validity period expires).*"]})}),"\n",(0,d.jsx)(t.h2,{id:"error-table",children:"Error Table"}),"\n",(0,d.jsx)(t.p,{children:"The below table is a reference to the errors that exists in Polkadot. It is generated from the\nruntime's metadata."}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Pallet"}),(0,d.jsx)(t.th,{children:"Error"}),(0,d.jsx)(t.th,{children:"Documentation"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"System (0)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidSpecName (0)"}),(0,d.jsx)(t.td,{children:"The name of specification does not match between the current runtime and the new runtime."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SpecVersionNeedsToIncrease (1)"}),(0,d.jsx)(t.td,{children:"The specification version is not allowed to decrease between the current runtime and the new runtime."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FailedToExtractRuntimeVersion (2)"}),(0,d.jsxs)(t.td,{children:["Failed to extract the runtime version from the new runtime. Either calling ",(0,d.jsx)(t.code,{children:"Core_version"})," or decoding ",(0,d.jsx)(t.code,{children:"RuntimeVersion"})," failed."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NonDefaultComposite (3)"}),(0,d.jsx)(t.td,{children:"Suicide called when the account has non-default composite data."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NonZeroRefCount (4)"}),(0,d.jsx)(t.td,{children:"There is a non-zero reference count preventing the account from being purged."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Scheduler (1)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FailedToSchedule (0)"}),(0,d.jsx)(t.td,{children:"Failed to schedule a call"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (1)"}),(0,d.jsx)(t.td,{children:"Cannot find the scheduled call."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TargetBlockNumberInPast (2)"}),(0,d.jsx)(t.td,{children:"Given target block number is in the past."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"RescheduleNoChange (3)"}),(0,d.jsx)(t.td,{children:"Reschedule failed because it does not change scheduled time."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Balances (5)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"VestingBalance (0)"}),(0,d.jsx)(t.td,{children:"Vesting balance too high to send value"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"LiquidityRestrictions (1)"}),(0,d.jsx)(t.td,{children:"Account liquidity restrictions prevent withdrawal"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Overflow (2)"}),(0,d.jsx)(t.td,{children:"Got an overflow after adding"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientBalance (3)"}),(0,d.jsx)(t.td,{children:"Balance too low to send value"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ExistentialDeposit (4)"}),(0,d.jsx)(t.td,{children:"Value too low to create account due to existential deposit"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"KeepAlive (5)"}),(0,d.jsx)(t.td,{children:"Transfer/payment would kill account"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ExistingVestingSchedule (6)"}),(0,d.jsx)(t.td,{children:"A vesting schedule already exists for this account"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DeadAccount (7)"}),(0,d.jsx)(t.td,{children:"Beneficiary account must pre-exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Authorship (6)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidUncleParent (0)"}),(0,d.jsx)(t.td,{children:"The uncle parent not in the chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnclesAlreadySet (1)"}),(0,d.jsx)(t.td,{children:"Uncles already set in the block."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyUncles (2)"}),(0,d.jsx)(t.td,{children:"Too many uncles."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"GenesisUncle (3)"}),(0,d.jsx)(t.td,{children:"The uncle is genesis."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooHighUncle (4)"}),(0,d.jsx)(t.td,{children:"The uncle is too high in chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UncleAlreadyIncluded (5)"}),(0,d.jsx)(t.td,{children:"The uncle is already included."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OldUncle (6)"}),(0,d.jsx)(t.td,{children:"The uncle isn't recent enough to be included."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Staking (7)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotController (0)"}),(0,d.jsx)(t.td,{children:"Not a controller account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotStash (1)"}),(0,d.jsx)(t.td,{children:"Not a stash account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyBonded (2)"}),(0,d.jsx)(t.td,{children:"Stash is already bonded."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyPaired (3)"}),(0,d.jsx)(t.td,{children:"Controller is already paired."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"EmptyTargets (4)"}),(0,d.jsx)(t.td,{children:"Targets cannot be empty."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateIndex (5)"}),(0,d.jsx)(t.td,{children:"Duplicate index."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidSlashIndex (6)"}),(0,d.jsx)(t.td,{children:"Slash record index out of bounds."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientValue (7)"}),(0,d.jsx)(t.td,{children:"Can not bond with value less than minimum balance."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoMoreChunks (8)"}),(0,d.jsx)(t.td,{children:"Can not schedule more unlock chunks."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoUnlockChunk (9)"}),(0,d.jsx)(t.td,{children:"Can not rebond without unlocking chunks."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FundedTarget (10)"}),(0,d.jsx)(t.td,{children:"Attempting to target a stash that still has funds."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidEraToReward (11)"}),(0,d.jsx)(t.td,{children:"Invalid era to reward."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidNumberOfNominations (12)"}),(0,d.jsx)(t.td,{children:"Invalid number of nominations."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotSortedAndUnique (13)"}),(0,d.jsx)(t.td,{children:"Items are not sorted and unique."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyClaimed (14)"}),(0,d.jsx)(t.td,{children:"Rewards for this era have already been claimed for this validator."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionEarlySubmission (15)"}),(0,d.jsx)(t.td,{children:"The submitted result is received out of the open window."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionWeakSubmission (16)"}),(0,d.jsx)(t.td,{children:"The submitted result is not as good as the one stored on chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SnapshotUnavailable (17)"}),(0,d.jsx)(t.td,{children:"The snapshot data of the current window is missing."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusWinnerCount (18)"}),(0,d.jsx)(t.td,{children:"Incorrect number of winners were presented."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusWinner (19)"}),(0,d.jsx)(t.td,{children:"One of the submitted winners is not an active candidate on chain (index is out of range in snapshot)."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusCompact (20)"}),(0,d.jsxs)(t.td,{children:["Error while building the assignment type from the compact. This can happen if an index is invalid, or if the weights ",(0,d.jsx)(t.em,{children:"overflow"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusNominator (21)"}),(0,d.jsx)(t.td,{children:"One of the submitted nominators is not an active nominator on chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusNomination (22)"}),(0,d.jsx)(t.td,{children:"One of the submitted nominators has an edge to which they have not voted on chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionSlashedNomination (23)"}),(0,d.jsx)(t.td,{children:"One of the submitted nominators has an edge which is submitted before the last non-zero slash of the target."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusSelfVote (24)"}),(0,d.jsx)(t.td,{children:"A self vote must only be originated from a validator to ONLY themselves."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusEdge (25)"}),(0,d.jsx)(t.td,{children:"The submitted result has unknown edges that are not among the presented winners."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusScore (26)"}),(0,d.jsx)(t.td,{children:"The claimed score does not match with the one computed from the data."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusElectionSize (27)"}),(0,d.jsx)(t.td,{children:"The election size is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"CallNotAllowed (28)"}),(0,d.jsx)(t.td,{children:"The call is not allowed at the given time due to restrictions of election period."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"IncorrectHistoryDepth (29)"}),(0,d.jsx)(t.td,{children:"Incorrect previous history depth input provided."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"IncorrectSlashingSpans (30)"}),(0,d.jsx)(t.td,{children:"Incorrect number of slashing spans provided."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Session (9)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidProof (0)"}),(0,d.jsx)(t.td,{children:"Invalid ownership proof."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoAssociatedValidatorId (1)"}),(0,d.jsx)(t.td,{children:"No associated validator ID for account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicatedKey (2)"}),(0,d.jsx)(t.td,{children:"Registered duplicate key."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoKeys (3)"}),(0,d.jsx)(t.td,{children:"No keys are associated with this account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Grandpa (11)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PauseFailed (0)"}),(0,d.jsx)(t.td,{children:"Attempt to signal GRANDPA pause when the authority set isn't live (either paused or already pending pause)."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ResumeFailed (1)"}),(0,d.jsx)(t.td,{children:"Attempt to signal GRANDPA resume when the authority set isn't paused (either live or already pending resume)."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ChangePending (2)"}),(0,d.jsx)(t.td,{children:"Attempt to signal GRANDPA change with one already pending."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooSoon (3)"}),(0,d.jsx)(t.td,{children:"Cannot signal forced change so soon after last."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidKeyOwnershipProof (4)"}),(0,d.jsx)(t.td,{children:"A key ownership proof provided as part of an equivocation report is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidEquivocationProof (5)"}),(0,d.jsx)(t.td,{children:"An equivocation proof provided as part of an equivocation report is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateOffenceReport (6)"}),(0,d.jsx)(t.td,{children:"A given equivocation report is valid but already previously reported."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Democracy (14)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ValueLow (0)"}),(0,d.jsx)(t.td,{children:"Value too low"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalMissing (1)"}),(0,d.jsx)(t.td,{children:"Proposal does not exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"BadIndex (2)"}),(0,d.jsx)(t.td,{children:"Unknown index"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyCanceled (3)"}),(0,d.jsx)(t.td,{children:"Cannot cancel the same proposal twice"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateProposal (4)"}),(0,d.jsx)(t.td,{children:"Proposal already made"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalBlacklisted (5)"}),(0,d.jsx)(t.td,{children:"Proposal still blacklisted"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotSimpleMajority (6)"}),(0,d.jsx)(t.td,{children:"Next external proposal not simple majority"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidHash (7)"}),(0,d.jsx)(t.td,{children:"Invalid hash"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoProposal (8)"}),(0,d.jsx)(t.td,{children:"No external proposal"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyVetoed (9)"}),(0,d.jsx)(t.td,{children:"Identity may not veto a proposal twice"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotDelegated (10)"}),(0,d.jsx)(t.td,{children:"Not delegated"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicatePreimage (11)"}),(0,d.jsx)(t.td,{children:"Preimage already noted"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotImminent (12)"}),(0,d.jsx)(t.td,{children:"Not imminent"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooEarly (13)"}),(0,d.jsx)(t.td,{children:"Too early"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Imminent (14)"}),(0,d.jsx)(t.td,{children:"Imminent"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PreimageMissing (15)"}),(0,d.jsx)(t.td,{children:"Preimage not found"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ReferendumInvalid (16)"}),(0,d.jsx)(t.td,{children:"Vote given for invalid referendum"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PreimageInvalid (17)"}),(0,d.jsx)(t.td,{children:"Invalid preimage"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoneWaiting (18)"}),(0,d.jsx)(t.td,{children:"No proposals waiting"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotLocked (19)"}),(0,d.jsx)(t.td,{children:"The target account does not have a lock."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotExpired (20)"}),(0,d.jsx)(t.td,{children:"The lock on the account to be unlocked has not yet expired."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotVoter (21)"}),(0,d.jsx)(t.td,{children:"The given account did not vote on the referendum."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoPermission (22)"}),(0,d.jsx)(t.td,{children:"The actor has no permission to conduct the action."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyDelegating (23)"}),(0,d.jsx)(t.td,{children:"The account is already delegating."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Overflow (24)"}),(0,d.jsx)(t.td,{children:"An unexpected integer overflow occurred."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Underflow (25)"}),(0,d.jsx)(t.td,{children:"An unexpected integer underflow occurred."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientFunds (26)"}),(0,d.jsx)(t.td,{children:"Too high a balance was provided that the account cannot afford."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotDelegating (27)"}),(0,d.jsx)(t.td,{children:"The account is not currently delegating."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"VotesExist (28)"}),(0,d.jsxs)(t.td,{children:["The account currently has votes attached to it and the operation cannot succeed until these are removed, either through ",(0,d.jsx)(t.code,{children:"unvote"})," or ",(0,d.jsx)(t.code,{children:"reap_vote"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InstantNotAllowed (29)"}),(0,d.jsx)(t.td,{children:"The instant referendum origin is currently disallowed."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Nonsense (30)"}),(0,d.jsx)(t.td,{children:"Delegation to oneself makes no sense."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongUpperBound (31)"}),(0,d.jsx)(t.td,{children:"Invalid upper bound."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MaxVotesReached (32)"}),(0,d.jsx)(t.td,{children:"Maximum number of votes reached."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidWitness (33)"}),(0,d.jsx)(t.td,{children:"The provided witness data is wrong."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyProposals (34)"}),(0,d.jsx)(t.td,{children:"Maximum number of proposals reached."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Council (15)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotMember (0)"}),(0,d.jsx)(t.td,{children:"Account is not a member"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateProposal (1)"}),(0,d.jsx)(t.td,{children:"Duplicate proposals not allowed"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalMissing (2)"}),(0,d.jsx)(t.td,{children:"Proposal must exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongIndex (3)"}),(0,d.jsx)(t.td,{children:"Mismatched index"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateVote (4)"}),(0,d.jsx)(t.td,{children:"Duplicate vote ignored"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyInitialized (5)"}),(0,d.jsx)(t.td,{children:"Members are already initialized!"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooEarly (6)"}),(0,d.jsx)(t.td,{children:"The close call was made too early, before the end of the voting."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyProposals (7)"}),(0,d.jsxs)(t.td,{children:["There can only be a maximum of ",(0,d.jsx)(t.code,{children:"MaxProposals"})," active proposals."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalWeight (8)"}),(0,d.jsx)(t.td,{children:"The given weight bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalLength (9)"}),(0,d.jsx)(t.td,{children:"The given length bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"TechnicalCommittee (16)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotMember (0)"}),(0,d.jsx)(t.td,{children:"Account is not a member"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateProposal (1)"}),(0,d.jsx)(t.td,{children:"Duplicate proposals not allowed"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalMissing (2)"}),(0,d.jsx)(t.td,{children:"Proposal must exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongIndex (3)"}),(0,d.jsx)(t.td,{children:"Mismatched index"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateVote (4)"}),(0,d.jsx)(t.td,{children:"Duplicate vote ignored"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyInitialized (5)"}),(0,d.jsx)(t.td,{children:"Members are already initialized!"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooEarly (6)"}),(0,d.jsx)(t.td,{children:"The close call was made too early, before the end of the voting."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyProposals (7)"}),(0,d.jsxs)(t.td,{children:["There can only be a maximum of ",(0,d.jsx)(t.code,{children:"MaxProposals"})," active proposals."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalWeight (8)"}),(0,d.jsx)(t.td,{children:"The given weight bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalLength (9)"}),(0,d.jsx)(t.td,{children:"The given length bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"ElectionsPhragmen (17)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnableToVote (0)"}),(0,d.jsx)(t.td,{children:"Cannot vote when no candidates or members exist."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoVotes (1)"}),(0,d.jsx)(t.td,{children:"Must vote for at least one candidate."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyVotes (2)"}),(0,d.jsx)(t.td,{children:"Cannot vote more than candidates."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MaximumVotesExceeded (3)"}),(0,d.jsx)(t.td,{children:"Cannot vote more than maximum allowed."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"LowBalance (4)"}),(0,d.jsx)(t.td,{children:"Cannot vote with stake less than minimum balance."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnableToPayBond (5)"}),(0,d.jsx)(t.td,{children:"Voter can not pay voting bond."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MustBeVoter (6)"}),(0,d.jsx)(t.td,{children:"Must be a voter."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ReportSelf (7)"}),(0,d.jsx)(t.td,{children:"Cannot report self."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicatedCandidate (8)"}),(0,d.jsx)(t.td,{children:"Duplicated candidate submission."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MemberSubmit (9)"}),(0,d.jsx)(t.td,{children:"Member cannot re-submit candidacy."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"RunnerSubmit (10)"}),(0,d.jsx)(t.td,{children:"Runner cannot re-submit candidacy."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientCandidateFunds (11)"}),(0,d.jsx)(t.td,{children:"Candidate does not have enough funds."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotMember (12)"}),(0,d.jsx)(t.td,{children:"Not a member."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidCandidateCount (13)"}),(0,d.jsx)(t.td,{children:"The provided count of number of candidates is incorrect."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidVoteCount (14)"}),(0,d.jsx)(t.td,{children:"The provided count of number of votes is incorrect."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidRenouncing (15)"}),(0,d.jsxs)(t.td,{children:["The renouncing origin presented a wrong ",(0,d.jsx)(t.code,{children:"Renouncing"})," parameter."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidReplacement (16)"}),(0,d.jsx)(t.td,{children:"Prediction regarding replacement after member removal is wrong."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Treasury (19)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientProposersBalance (0)"}),(0,d.jsx)(t.td,{children:"Proposer's balance is too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidIndex (1)"}),(0,d.jsx)(t.td,{children:"No proposal or bounty at that index."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ReasonTooBig (2)"}),(0,d.jsx)(t.td,{children:"The reason given is just too big."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyKnown (3)"}),(0,d.jsx)(t.td,{children:"The tip was already found/started."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnknownTip (4)"}),(0,d.jsx)(t.td,{children:"The tip hash is unknown."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFinder (5)"}),(0,d.jsx)(t.td,{children:"The account attempting to retract the tip is not the finder of the tip."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"StillOpen (6)"}),(0,d.jsx)(t.td,{children:"The tip cannot be claimed/closed because there are not enough tippers yet."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Premature (7)"}),(0,d.jsx)(t.td,{children:"The tip cannot be claimed/closed because it's still in the countdown period."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnexpectedStatus (8)"}),(0,d.jsx)(t.td,{children:"The bounty status is unexpected."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"RequireCurator (9)"}),(0,d.jsx)(t.td,{children:"Require bounty curator."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidValue (10)"}),(0,d.jsx)(t.td,{children:"Invalid bounty value."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidFee (11)"}),(0,d.jsx)(t.td,{children:"Invalid bounty fee."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PendingPayout (12)"}),(0,d.jsx)(t.td,{children:"A bounty payout is pending. To cancel the bounty, you must unassign and slash the curator."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Claims (24)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidEthereumSignature (0)"}),(0,d.jsx)(t.td,{children:"Invalid Ethereum signature."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SignerHasNoClaim (1)"}),(0,d.jsx)(t.td,{children:"Ethereum address has no claim."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SenderHasNoClaim (2)"}),(0,d.jsx)(t.td,{children:"Account ID sending tx has no claim."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PotUnderflow (3)"}),(0,d.jsx)(t.td,{children:"There's not enough in the pot to pay out some unvested amount. Generally implies a logic error."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidStatement (4)"}),(0,d.jsx)(t.td,{children:"A needed statement was not included."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"VestedBalanceExists (5)"}),(0,d.jsx)(t.td,{children:"The account already has a vested balance."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Vesting (25)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotVesting (0)"}),(0,d.jsx)(t.td,{children:"The account given is not vesting."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ExistingVestingSchedule (1)"}),(0,d.jsx)(t.td,{children:"An existing vesting schedule already exists for this account that cannot be clobbered."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AmountLow (2)"}),(0,d.jsx)(t.td,{children:"Amount being transferred is too low to create a vesting schedule."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Identity (28)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManySubAccounts (0)"}),(0,d.jsx)(t.td,{children:"Too many subs-accounts."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (1)"}),(0,d.jsx)(t.td,{children:"Account isn't found."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotNamed (2)"}),(0,d.jsx)(t.td,{children:"Account isn't named."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"EmptyIndex (3)"}),(0,d.jsx)(t.td,{children:"Empty index."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FeeChanged (4)"}),(0,d.jsx)(t.td,{children:"Fee is changed."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoIdentity (5)"}),(0,d.jsx)(t.td,{children:"No identity found."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"StickyJudgement (6)"}),(0,d.jsx)(t.td,{children:"Sticky judgement."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"JudgementGiven (7)"}),(0,d.jsx)(t.td,{children:"Judgement given."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidJudgement (8)"}),(0,d.jsx)(t.td,{children:"Invalid judgement."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidIndex (9)"}),(0,d.jsx)(t.td,{children:"The index is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidTarget (10)"}),(0,d.jsx)(t.td,{children:"The target is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyFields (11)"}),(0,d.jsx)(t.td,{children:"Too many additional fields."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyRegistrars (12)"}),(0,d.jsx)(t.td,{children:"Maximum amount of registrars reached. Cannot add any more."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyClaimed (13)"}),(0,d.jsx)(t.td,{children:"Account ID is already named."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotSub (14)"}),(0,d.jsx)(t.td,{children:"Sender is not a sub-account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotOwned (15)"}),(0,d.jsx)(t.td,{children:"Sub-account isn't owned by sender."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Proxy (29)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooMany (0)"}),(0,d.jsx)(t.td,{children:"There are too many proxies registered or too many announcements pending."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (1)"}),(0,d.jsx)(t.td,{children:"Proxy registration not found."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotProxy (2)"}),(0,d.jsx)(t.td,{children:"Sender is not a proxy of the account to be proxied."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Unproxyable (3)"}),(0,d.jsx)(t.td,{children:"A call which is incompatible with the proxy type's filter was attempted."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Duplicate (4)"}),(0,d.jsx)(t.td,{children:"Account is already a proxy."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoPermission (5)"}),(0,d.jsx)(t.td,{children:"Call may not be made by proxy because it may escalate its privileges."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Unannounced (6)"}),(0,d.jsx)(t.td,{children:"Announcement, if made at all, was made too recently."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Multisig (30)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MinimumThreshold (0)"}),(0,d.jsx)(t.td,{children:"Threshold must be 2 or greater."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyApproved (1)"}),(0,d.jsx)(t.td,{children:"Call is already approved by this signatory."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoApprovalsNeeded (2)"}),(0,d.jsx)(t.td,{children:"Call doesn't need any (more) approvals."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooFewSignatories (3)"}),(0,d.jsx)(t.td,{children:"There are too few signatories in the list."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManySignatories (4)"}),(0,d.jsx)(t.td,{children:"There are too many signatories in the list."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SignatoriesOutOfOrder (5)"}),(0,d.jsx)(t.td,{children:"The signatories were provided out of order; they should be ordered."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SenderInSignatories (6)"}),(0,d.jsx)(t.td,{children:"The sender was contained in the other signatories; it shouldn't be."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (7)"}),(0,d.jsx)(t.td,{children:"Multisig operation not found when attempting to cancel."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotOwner (8)"}),(0,d.jsx)(t.td,{children:"Only the account that originally created the multisig is able to cancel it."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoTimepoint (9)"}),(0,d.jsx)(t.td,{children:"No timepoint was given, yet the multisig operation is already underway."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongTimepoint (10)"}),(0,d.jsx)(t.td,{children:"A different timepoint was given to the multisig operation that is underway."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnexpectedTimepoint (11)"}),(0,d.jsx)(t.td,{children:"A timepoint was given, yet no multisig operation is underway."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WeightTooLow (12)"}),(0,d.jsx)(t.td,{children:"The maximum weight information provided was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyStored (13)"}),(0,d.jsx)(t.td,{children:"The data to be stored is already stored."})]})]})]})]})}function a(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}},58691:(e,t,s)=>{s.d(t,{A:()=>d});const d=s.p+"assets/images/01-44e982847dc13a68b04abbc5757fae86.jpg"},64212:(e,t,s)=>{s.d(t,{A:()=>d});const d=s.p+"assets/images/02-eb569cd528fa9b5a6d990c6a10ec2b43.jpg"},28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>l});var d=s(96540);const n={},r=d.createContext(n);function i(e){const t=d.useContext(r);return d.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),d.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/85afe03a.325592d3.js b/assets/js/85afe03a.325592d3.js new file mode 100644 index 0000000000..2509dd3ca4 --- /dev/null +++ b/assets/js/85afe03a.325592d3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1628],{80396:(e,t,s)=>{s.r(t),s.d(t,{assets:()=>o,contentTitle:()=>i,default:()=>a,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var d=s(74848),n=s(28453);const r={id:"maintain-errors",title:"Errors and How to Resolve Them",sidebar_label:"Resolving Errors",description:"Common errors you might encounter and how they can be resolved.",keywords:["errors","common errors","fix errors"],slug:"../maintain-errors"},i=void 0,l={id:"maintain/maintain-errors",title:"Errors and How to Resolve Them",description:"Common errors you might encounter and how they can be resolved.",source:"@site/../docs/maintain/maintain-errors.md",sourceDirName:"maintain",slug:"/maintain-errors",permalink:"/docs/maintain-errors",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729504323e3,frontMatter:{id:"maintain-errors",title:"Errors and How to Resolve Them",sidebar_label:"Resolving Errors",description:"Common errors you might encounter and how they can be resolved.",keywords:["errors","common errors","fix errors"],slug:"../maintain-errors"},sidebar:"docs",previous:{title:"Hackathons",permalink:"/docs/build-hackathon"},next:{title:"Bug Bounty",permalink:"/docs/kusama-bug-bounty"}},o={},c=[{value:"Polkadot-JS Apps Explorer",id:"polkadot-js-apps-explorer",level:2},{value:"Subscan",id:"subscan",level:2},{value:"Common Errors",id:"common-errors",level:2},{value:"Error Table",id:"error-table",level:2},{value:"Errors from Current Pallets on Polkadot",id:"errors-from-current-pallets-on-polkadot",level:3},{value:"Errors from Deprecated Pallets on Polkadot",id:"errors-from-deprecated-pallets-on-polkadot",level:3}];function h(e){const t={a:"a",admonition:"admonition",code:"code",em:"em",h2:"h2",h3:"h3",img:"img",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...(0,n.R)(),...e.components};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(t.p,{children:["Errors in Substrate-based chains are usually accompanied by descriptive messages. However, to read\nthese messages, a tool parsing the blockchain data needs to request ",(0,d.jsx)(t.em,{children:"chain metadata"})," from a node.\nThat metadata explains how to read the messages. One such tool with a built-in parser for chain\nmetadata is the ",(0,d.jsx)(t.a,{href:"https://polkadot.js.org/apps",children:"Polkadot-JS Apps UI"}),"."]}),"\n",(0,d.jsxs)(t.p,{children:["If this page does not answer your question, try searching for your problem at the\n",(0,d.jsx)(t.a,{href:"https://support.polkadot.network/",children:"Polkadot Knowledge Base"})," for more information on troubleshooting\nyour issue."]}),"\n",(0,d.jsx)(t.h2,{id:"polkadot-js-apps-explorer",children:"Polkadot-JS Apps Explorer"}),"\n",(0,d.jsx)(t.p,{children:"Here's how to find out the detailed error description through Polkadot-JS Apps."}),"\n",(0,d.jsx)(t.p,{children:"A typical failed transactions looks something like this:"}),"\n",(0,d.jsx)(t.p,{children:(0,d.jsx)(t.img,{alt:"Error while sending a transaction",src:s(58691).A+"",width:"347",height:"291"})}),"\n",(0,d.jsx)(t.p,{children:"The image displays only the error name as defined in the code, not its error message. Despite this\nerror being rather self-explanatory, let's find its details."}),"\n",(0,d.jsxs)(t.p,{children:["In the ",(0,d.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/explorer",children:"explorer tab"}),", find the block in which this failure\noccurred. Then, expand the ",(0,d.jsx)(t.code,{children:"system.ExtrinsicFailed"})," frame:"]}),"\n",(0,d.jsx)(t.p,{children:(0,d.jsx)(t.img,{alt:"Error described",src:s(64212).A+"",width:"627",height:"362"})}),"\n",(0,d.jsxs)(t.p,{children:["Notice how the ",(0,d.jsx)(t.code,{children:"details"})," field contains a human-readable description of the error. Most errors will\nhave this, if looked up this way."]}),"\n",(0,d.jsxs)(t.p,{children:[(0,d.jsx)(t.a,{href:"https://polkadot.js.org/apps/#/explorer/query/0xa10104ed21dfe409c7871a975155766c5dd97e1e2ac7faf3c90f1f8dca89104b",children:"This block"}),"\nis a live example of the above."]}),"\n",(0,d.jsxs)(t.p,{children:["If you cannot look up the error this way, or there is no message in the ",(0,d.jsx)(t.code,{children:"details"})," field, consult the\ntable below."]}),"\n",(0,d.jsx)(t.h2,{id:"subscan",children:"Subscan"}),"\n",(0,d.jsxs)(t.p,{children:["The ",(0,d.jsx)(t.code,{children:"ExtrinsicFailed"})," event indicates when a transaction does not succeed\n(",(0,d.jsx)(t.a,{href:"https://polkadot.subscan.io/extrinsic/19983878-2?event=19983878-53",children:"example"}),"). This event gives us\nthe ",(0,d.jsx)(t.code,{children:"error"})," and ",(0,d.jsx)(t.code,{children:"index"})," (as seen in the table of the event, in the ",(0,d.jsx)(t.code,{children:"dispatch_error"})," row) indices of\nthe error but does not give us a nice message to understand what it means. We will look up the error\nin the codebase ourselves to understand what went wrong."]}),"\n",(0,d.jsxs)(t.p,{children:["First, we should understand that the ",(0,d.jsx)(t.code,{children:"index"})," number is the index of the pallet in the runtime from\nwhich the error originated. The ",(0,d.jsx)(t.code,{children:"error"})," is likewise the index of that pallet's errors which is the\nexact one we're looking for. Both of these indices start counting from 0."]}),"\n",(0,d.jsxs)(t.p,{children:["For example, if ",(0,d.jsx)(t.code,{children:"index"})," is 5 and ",(0,d.jsx)(t.code,{children:"error"})," is 3, as in the example linked above, we need to look at\nthe runtime for the fourth error (index 3) in the sixth pallet (index 5)."]}),"\n",(0,d.jsxs)(t.p,{children:["By looking at the\n",(0,d.jsx)(t.a,{href:"https://github.com/polkadot-fellows/runtimes/blob/main/relay/polkadot/src/lib.rs",children:"runtime code"})," we\nsee that the pallet at index 5 is ",(0,d.jsx)(t.code,{children:"Balances"}),". Now we will check the Balances pallet's code which is\nhosted in the Substrate repository, and look for the fourth error in the ",(0,d.jsx)(t.code,{children:"Error enum"}),". According to\nits source the error that we got is ",(0,d.jsx)(t.code,{children:"InsufficientBalance"}),', or in other words, "Balance too low to\nsend value".']}),"\n",(0,d.jsx)(t.h2,{id:"common-errors",children:"Common Errors"}),"\n",(0,d.jsx)(t.p,{children:"The table below lists the most commonly encountered errors and ways to resolve them."}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Error"}),(0,d.jsx)(t.th,{children:"Description"}),(0,d.jsx)(t.th,{children:"Solution"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"BadOrigin"}),(0,d.jsx)(t.td,{children:"You are not allowed to do this operation, e.g. trying to create a council motion with a non-council account."}),(0,d.jsxs)(t.td,{children:["Either switch to an account that has the necessary permissions, or check if the operation you're trying to execute is permitted at all (e.g. calling ",(0,d.jsx)(t.code,{children:"system.setCode"})," to do a runtime upgrade directly, without voting)."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"BadProof"}),(0,d.jsx)(t.td,{children:"The transaction's signature seems invalid."}),(0,d.jsx)(t.td,{children:"It's possible that the node you're connected to is following an obsolete fork - trying again after it catches up usually resolves the issue. To check for bigger problems, inspect the last finalized and current best block of the node you're connected to and compare the values to chain stats exposed by other nodes - are they in sync? If not, try connecting to a different node."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Future"}),(0,d.jsxs)(t.td,{children:['Transaction nonce too high, i.e. it\'s "from the future", ',(0,d.jsx)(t.strong,{children:"see note below"}),"."]}),(0,d.jsx)(t.td,{children:"Reduce the nonce to +1 of current nonce. Check current nonce by inspecting the address you're using to send the transaction."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Stale"}),(0,d.jsx)(t.td,{children:"Transaction nonce too low."}),(0,d.jsx)(t.td,{children:"Increase the nonce to +1 of current nonce. Check current nonce by inspecting the address you're using to send the transaction."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"ExhaustsResources"}),(0,d.jsx)(t.td,{children:"There aren't enough resources left in the current block to submit this transaction."}),(0,d.jsx)(t.td,{children:"Try again in the next block."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Payment"}),(0,d.jsx)(t.td,{children:"Unable to pay for TX fee."}),(0,d.jsx)(t.td,{children:"You might not have enough free balance to cover the fee this transaction would incur."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Temporarily banned"}),(0,d.jsx)(t.td,{children:"The transaction is temporarily banned."}),(0,d.jsx)(t.td,{children:"The tx is already in pool. Either try on a different node, or wait to see if the initial transaction goes through."})]})]})]}),"\n",(0,d.jsx)(t.admonition,{title:"Future Error",type:"note",children:(0,d.jsxs)(t.p,{children:["This error will not cause the TX to be discarded immediately. Instead, it will be sent to the\n",(0,d.jsx)(t.a,{href:"https://docs.substrate.io/main-docs/fundamentals/transaction-lifecycle/",children:"futures queue"}),", where it\nwill wait to be executed at the correct place in the nonce sequence OR it will get discarded due to\nsome other error (ex. the validity period expires).*"]})}),"\n",(0,d.jsx)(t.h2,{id:"error-table",children:"Error Table"}),"\n",(0,d.jsx)(t.p,{children:"The below table is a reference to the errors that exists in Polkadot. It is generated from the\nruntime's metadata."}),"\n",(0,d.jsx)(t.h3,{id:"errors-from-current-pallets-on-polkadot",children:"Errors from Current Pallets on Polkadot"}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Pallet"}),(0,d.jsx)(t.th,{children:"Error"}),(0,d.jsx)(t.th,{children:"Documentation"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"System (0)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidSpecName (0)"}),(0,d.jsx)(t.td,{children:"The name of specification does not match between the current runtime and the new runtime."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SpecVersionNeedsToIncrease (1)"}),(0,d.jsx)(t.td,{children:"The specification version is not allowed to decrease between the current runtime and the new runtime."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FailedToExtractRuntimeVersion (2)"}),(0,d.jsxs)(t.td,{children:["Failed to extract the runtime version from the new runtime. Either calling ",(0,d.jsx)(t.code,{children:"Core_version"})," or decoding ",(0,d.jsx)(t.code,{children:"RuntimeVersion"})," failed."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NonDefaultComposite (3)"}),(0,d.jsx)(t.td,{children:"Suicide called when the account has non-default composite data."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NonZeroRefCount (4)"}),(0,d.jsx)(t.td,{children:"There is a non-zero reference count preventing the account from being purged."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Scheduler (1)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FailedToSchedule (0)"}),(0,d.jsx)(t.td,{children:"Failed to schedule a call"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (1)"}),(0,d.jsx)(t.td,{children:"Cannot find the scheduled call."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TargetBlockNumberInPast (2)"}),(0,d.jsx)(t.td,{children:"Given target block number is in the past."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"RescheduleNoChange (3)"}),(0,d.jsx)(t.td,{children:"Reschedule failed because it does not change scheduled time."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Balances (5)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"VestingBalance (0)"}),(0,d.jsx)(t.td,{children:"Vesting balance too high to send value"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"LiquidityRestrictions (1)"}),(0,d.jsx)(t.td,{children:"Account liquidity restrictions prevent withdrawal"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Overflow (2)"}),(0,d.jsx)(t.td,{children:"Got an overflow after adding"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientBalance (3)"}),(0,d.jsx)(t.td,{children:"Balance too low to send value"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ExistentialDeposit (4)"}),(0,d.jsx)(t.td,{children:"Value too low to create account due to existential deposit"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"KeepAlive (5)"}),(0,d.jsx)(t.td,{children:"Transfer/payment would kill account"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ExistingVestingSchedule (6)"}),(0,d.jsx)(t.td,{children:"A vesting schedule already exists for this account"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DeadAccount (7)"}),(0,d.jsx)(t.td,{children:"Beneficiary account must pre-exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Authorship (6)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidUncleParent (0)"}),(0,d.jsx)(t.td,{children:"The uncle parent not in the chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnclesAlreadySet (1)"}),(0,d.jsx)(t.td,{children:"Uncles already set in the block."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyUncles (2)"}),(0,d.jsx)(t.td,{children:"Too many uncles."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"GenesisUncle (3)"}),(0,d.jsx)(t.td,{children:"The uncle is genesis."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooHighUncle (4)"}),(0,d.jsx)(t.td,{children:"The uncle is too high in chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UncleAlreadyIncluded (5)"}),(0,d.jsx)(t.td,{children:"The uncle is already included."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OldUncle (6)"}),(0,d.jsx)(t.td,{children:"The uncle isn't recent enough to be included."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Staking (7)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotController (0)"}),(0,d.jsx)(t.td,{children:"Not a controller account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotStash (1)"}),(0,d.jsx)(t.td,{children:"Not a stash account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyBonded (2)"}),(0,d.jsx)(t.td,{children:"Stash is already bonded."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyPaired (3)"}),(0,d.jsx)(t.td,{children:"Controller is already paired."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"EmptyTargets (4)"}),(0,d.jsx)(t.td,{children:"Targets cannot be empty."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateIndex (5)"}),(0,d.jsx)(t.td,{children:"Duplicate index."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidSlashIndex (6)"}),(0,d.jsx)(t.td,{children:"Slash record index out of bounds."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientValue (7)"}),(0,d.jsx)(t.td,{children:"Can not bond with value less than minimum balance."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoMoreChunks (8)"}),(0,d.jsx)(t.td,{children:"Can not schedule more unlock chunks."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoUnlockChunk (9)"}),(0,d.jsx)(t.td,{children:"Can not rebond without unlocking chunks."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FundedTarget (10)"}),(0,d.jsx)(t.td,{children:"Attempting to target a stash that still has funds."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidEraToReward (11)"}),(0,d.jsx)(t.td,{children:"Invalid era to reward."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidNumberOfNominations (12)"}),(0,d.jsx)(t.td,{children:"Invalid number of nominations."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotSortedAndUnique (13)"}),(0,d.jsx)(t.td,{children:"Items are not sorted and unique."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyClaimed (14)"}),(0,d.jsx)(t.td,{children:"Rewards for this era have already been claimed for this validator."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionEarlySubmission (15)"}),(0,d.jsx)(t.td,{children:"The submitted result is received out of the open window."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionWeakSubmission (16)"}),(0,d.jsx)(t.td,{children:"The submitted result is not as good as the one stored on chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SnapshotUnavailable (17)"}),(0,d.jsx)(t.td,{children:"The snapshot data of the current window is missing."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusWinnerCount (18)"}),(0,d.jsx)(t.td,{children:"Incorrect number of winners were presented."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusWinner (19)"}),(0,d.jsx)(t.td,{children:"One of the submitted winners is not an active candidate on chain (index is out of range in snapshot)."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusCompact (20)"}),(0,d.jsxs)(t.td,{children:["Error while building the assignment type from the compact. This can happen if an index is invalid, or if the weights ",(0,d.jsx)(t.em,{children:"overflow"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusNominator (21)"}),(0,d.jsx)(t.td,{children:"One of the submitted nominators is not an active nominator on chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusNomination (22)"}),(0,d.jsx)(t.td,{children:"One of the submitted nominators has an edge to which they have not voted on chain."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionSlashedNomination (23)"}),(0,d.jsx)(t.td,{children:"One of the submitted nominators has an edge which is submitted before the last non-zero slash of the target."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusSelfVote (24)"}),(0,d.jsx)(t.td,{children:"A self vote must only be originated from a validator to ONLY themselves."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusEdge (25)"}),(0,d.jsx)(t.td,{children:"The submitted result has unknown edges that are not among the presented winners."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusScore (26)"}),(0,d.jsx)(t.td,{children:"The claimed score does not match with the one computed from the data."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"OffchainElectionBogusElectionSize (27)"}),(0,d.jsx)(t.td,{children:"The election size is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"CallNotAllowed (28)"}),(0,d.jsx)(t.td,{children:"The call is not allowed at the given time due to restrictions of election period."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"IncorrectHistoryDepth (29)"}),(0,d.jsx)(t.td,{children:"Incorrect previous history depth input provided."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"IncorrectSlashingSpans (30)"}),(0,d.jsx)(t.td,{children:"Incorrect number of slashing spans provided."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Session (9)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidProof (0)"}),(0,d.jsx)(t.td,{children:"Invalid ownership proof."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoAssociatedValidatorId (1)"}),(0,d.jsx)(t.td,{children:"No associated validator ID for account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicatedKey (2)"}),(0,d.jsx)(t.td,{children:"Registered duplicate key."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoKeys (3)"}),(0,d.jsx)(t.td,{children:"No keys are associated with this account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Grandpa (11)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PauseFailed (0)"}),(0,d.jsx)(t.td,{children:"Attempt to signal GRANDPA pause when the authority set isn't live (either paused or already pending pause)."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ResumeFailed (1)"}),(0,d.jsx)(t.td,{children:"Attempt to signal GRANDPA resume when the authority set isn't paused (either live or already pending resume)."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ChangePending (2)"}),(0,d.jsx)(t.td,{children:"Attempt to signal GRANDPA change with one already pending."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooSoon (3)"}),(0,d.jsx)(t.td,{children:"Cannot signal forced change so soon after last."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidKeyOwnershipProof (4)"}),(0,d.jsx)(t.td,{children:"A key ownership proof provided as part of an equivocation report is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidEquivocationProof (5)"}),(0,d.jsx)(t.td,{children:"An equivocation proof provided as part of an equivocation report is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateOffenceReport (6)"}),(0,d.jsx)(t.td,{children:"A given equivocation report is valid but already previously reported."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"ElectionsPhragmen (17)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnableToVote (0)"}),(0,d.jsx)(t.td,{children:"Cannot vote when no candidates or members exist."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoVotes (1)"}),(0,d.jsx)(t.td,{children:"Must vote for at least one candidate."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyVotes (2)"}),(0,d.jsx)(t.td,{children:"Cannot vote more than candidates."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MaximumVotesExceeded (3)"}),(0,d.jsx)(t.td,{children:"Cannot vote more than maximum allowed."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"LowBalance (4)"}),(0,d.jsx)(t.td,{children:"Cannot vote with stake less than minimum balance."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnableToPayBond (5)"}),(0,d.jsx)(t.td,{children:"Voter can not pay voting bond."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MustBeVoter (6)"}),(0,d.jsx)(t.td,{children:"Must be a voter."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ReportSelf (7)"}),(0,d.jsx)(t.td,{children:"Cannot report self."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicatedCandidate (8)"}),(0,d.jsx)(t.td,{children:"Duplicated candidate submission."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MemberSubmit (9)"}),(0,d.jsx)(t.td,{children:"Member cannot re-submit candidacy."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"RunnerSubmit (10)"}),(0,d.jsx)(t.td,{children:"Runner cannot re-submit candidacy."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientCandidateFunds (11)"}),(0,d.jsx)(t.td,{children:"Candidate does not have enough funds."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotMember (12)"}),(0,d.jsx)(t.td,{children:"Not a member."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidCandidateCount (13)"}),(0,d.jsx)(t.td,{children:"The provided count of number of candidates is incorrect."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidVoteCount (14)"}),(0,d.jsx)(t.td,{children:"The provided count of number of votes is incorrect."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidRenouncing (15)"}),(0,d.jsxs)(t.td,{children:["The renouncing origin presented a wrong ",(0,d.jsx)(t.code,{children:"Renouncing"})," parameter."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidReplacement (16)"}),(0,d.jsx)(t.td,{children:"Prediction regarding replacement after member removal is wrong."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Treasury (19)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientProposersBalance (0)"}),(0,d.jsx)(t.td,{children:"Proposer's balance is too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidIndex (1)"}),(0,d.jsx)(t.td,{children:"No proposal or bounty at that index."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ReasonTooBig (2)"}),(0,d.jsx)(t.td,{children:"The reason given is just too big."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyKnown (3)"}),(0,d.jsx)(t.td,{children:"The tip was already found/started."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnknownTip (4)"}),(0,d.jsx)(t.td,{children:"The tip hash is unknown."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFinder (5)"}),(0,d.jsx)(t.td,{children:"The account attempting to retract the tip is not the finder of the tip."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"StillOpen (6)"}),(0,d.jsx)(t.td,{children:"The tip cannot be claimed/closed because there are not enough tippers yet."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Premature (7)"}),(0,d.jsx)(t.td,{children:"The tip cannot be claimed/closed because it's still in the countdown period."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnexpectedStatus (8)"}),(0,d.jsx)(t.td,{children:"The bounty status is unexpected."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"RequireCurator (9)"}),(0,d.jsx)(t.td,{children:"Require bounty curator."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidValue (10)"}),(0,d.jsx)(t.td,{children:"Invalid bounty value."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidFee (11)"}),(0,d.jsx)(t.td,{children:"Invalid bounty fee."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PendingPayout (12)"}),(0,d.jsx)(t.td,{children:"A bounty payout is pending. To cancel the bounty, you must unassign and slash the curator."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Claims (24)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidEthereumSignature (0)"}),(0,d.jsx)(t.td,{children:"Invalid Ethereum signature."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SignerHasNoClaim (1)"}),(0,d.jsx)(t.td,{children:"Ethereum address has no claim."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SenderHasNoClaim (2)"}),(0,d.jsx)(t.td,{children:"Account ID sending tx has no claim."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PotUnderflow (3)"}),(0,d.jsx)(t.td,{children:"There's not enough in the pot to pay out some unvested amount. Generally implies a logic error."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidStatement (4)"}),(0,d.jsx)(t.td,{children:"A needed statement was not included."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"VestedBalanceExists (5)"}),(0,d.jsx)(t.td,{children:"The account already has a vested balance."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Vesting (25)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotVesting (0)"}),(0,d.jsx)(t.td,{children:"The account given is not vesting."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ExistingVestingSchedule (1)"}),(0,d.jsx)(t.td,{children:"An existing vesting schedule already exists for this account that cannot be clobbered."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AmountLow (2)"}),(0,d.jsx)(t.td,{children:"Amount being transferred is too low to create a vesting schedule."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Identity (28)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManySubAccounts (0)"}),(0,d.jsx)(t.td,{children:"Too many subs-accounts."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (1)"}),(0,d.jsx)(t.td,{children:"Account isn't found."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotNamed (2)"}),(0,d.jsx)(t.td,{children:"Account isn't named."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"EmptyIndex (3)"}),(0,d.jsx)(t.td,{children:"Empty index."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"FeeChanged (4)"}),(0,d.jsx)(t.td,{children:"Fee is changed."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoIdentity (5)"}),(0,d.jsx)(t.td,{children:"No identity found."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"StickyJudgement (6)"}),(0,d.jsx)(t.td,{children:"Sticky judgement."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"JudgementGiven (7)"}),(0,d.jsx)(t.td,{children:"Judgement given."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidJudgement (8)"}),(0,d.jsx)(t.td,{children:"Invalid judgement."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidIndex (9)"}),(0,d.jsx)(t.td,{children:"The index is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidTarget (10)"}),(0,d.jsx)(t.td,{children:"The target is invalid."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyFields (11)"}),(0,d.jsx)(t.td,{children:"Too many additional fields."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyRegistrars (12)"}),(0,d.jsx)(t.td,{children:"Maximum amount of registrars reached. Cannot add any more."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyClaimed (13)"}),(0,d.jsx)(t.td,{children:"Account ID is already named."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotSub (14)"}),(0,d.jsx)(t.td,{children:"Sender is not a sub-account."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotOwned (15)"}),(0,d.jsx)(t.td,{children:"Sub-account isn't owned by sender."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Proxy (29)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooMany (0)"}),(0,d.jsx)(t.td,{children:"There are too many proxies registered or too many announcements pending."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (1)"}),(0,d.jsx)(t.td,{children:"Proxy registration not found."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotProxy (2)"}),(0,d.jsx)(t.td,{children:"Sender is not a proxy of the account to be proxied."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Unproxyable (3)"}),(0,d.jsx)(t.td,{children:"A call which is incompatible with the proxy type's filter was attempted."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Duplicate (4)"}),(0,d.jsx)(t.td,{children:"Account is already a proxy."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoPermission (5)"}),(0,d.jsx)(t.td,{children:"Call may not be made by proxy because it may escalate its privileges."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Unannounced (6)"}),(0,d.jsx)(t.td,{children:"Announcement, if made at all, was made too recently."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Multisig (30)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MinimumThreshold (0)"}),(0,d.jsx)(t.td,{children:"Threshold must be 2 or greater."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyApproved (1)"}),(0,d.jsx)(t.td,{children:"Call is already approved by this signatory."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoApprovalsNeeded (2)"}),(0,d.jsx)(t.td,{children:"Call doesn't need any (more) approvals."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooFewSignatories (3)"}),(0,d.jsx)(t.td,{children:"There are too few signatories in the list."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManySignatories (4)"}),(0,d.jsx)(t.td,{children:"There are too many signatories in the list."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SignatoriesOutOfOrder (5)"}),(0,d.jsx)(t.td,{children:"The signatories were provided out of order; they should be ordered."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"SenderInSignatories (6)"}),(0,d.jsx)(t.td,{children:"The sender was contained in the other signatories; it shouldn't be."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotFound (7)"}),(0,d.jsx)(t.td,{children:"Multisig operation not found when attempting to cancel."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotOwner (8)"}),(0,d.jsx)(t.td,{children:"Only the account that originally created the multisig is able to cancel it."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoTimepoint (9)"}),(0,d.jsx)(t.td,{children:"No timepoint was given, yet the multisig operation is already underway."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongTimepoint (10)"}),(0,d.jsx)(t.td,{children:"A different timepoint was given to the multisig operation that is underway."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"UnexpectedTimepoint (11)"}),(0,d.jsx)(t.td,{children:"A timepoint was given, yet no multisig operation is underway."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WeightTooLow (12)"}),(0,d.jsx)(t.td,{children:"The maximum weight information provided was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyStored (13)"}),(0,d.jsx)(t.td,{children:"The data to be stored is already stored."})]})]})]}),"\n",(0,d.jsx)(t.h3,{id:"errors-from-deprecated-pallets-on-polkadot",children:"Errors from Deprecated Pallets on Polkadot"}),"\n",(0,d.jsxs)(t.table,{children:[(0,d.jsx)(t.thead,{children:(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.th,{children:"Pallet"}),(0,d.jsx)(t.th,{children:"Error"}),(0,d.jsx)(t.th,{children:"Documentation"})]})}),(0,d.jsxs)(t.tbody,{children:[(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Council (15)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotMember (0)"}),(0,d.jsx)(t.td,{children:"Account is not a member"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateProposal (1)"}),(0,d.jsx)(t.td,{children:"Duplicate proposals not allowed"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalMissing (2)"}),(0,d.jsx)(t.td,{children:"Proposal must exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongIndex (3)"}),(0,d.jsx)(t.td,{children:"Mismatched index"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateVote (4)"}),(0,d.jsx)(t.td,{children:"Duplicate vote ignored"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyInitialized (5)"}),(0,d.jsx)(t.td,{children:"Members are already initialized!"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooEarly (6)"}),(0,d.jsx)(t.td,{children:"The close call was made too early, before the end of the voting."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyProposals (7)"}),(0,d.jsxs)(t.td,{children:["There can only be a maximum of ",(0,d.jsx)(t.code,{children:"MaxProposals"})," active proposals."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalWeight (8)"}),(0,d.jsx)(t.td,{children:"The given weight bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalLength (9)"}),(0,d.jsx)(t.td,{children:"The given length bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"TechnicalCommittee (16)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotMember (0)"}),(0,d.jsx)(t.td,{children:"Account is not a member"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateProposal (1)"}),(0,d.jsx)(t.td,{children:"Duplicate proposals not allowed"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalMissing (2)"}),(0,d.jsx)(t.td,{children:"Proposal must exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongIndex (3)"}),(0,d.jsx)(t.td,{children:"Mismatched index"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateVote (4)"}),(0,d.jsx)(t.td,{children:"Duplicate vote ignored"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyInitialized (5)"}),(0,d.jsx)(t.td,{children:"Members are already initialized!"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooEarly (6)"}),(0,d.jsx)(t.td,{children:"The close call was made too early, before the end of the voting."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyProposals (7)"}),(0,d.jsxs)(t.td,{children:["There can only be a maximum of ",(0,d.jsx)(t.code,{children:"MaxProposals"})," active proposals."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalWeight (8)"}),(0,d.jsx)(t.td,{children:"The given weight bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongProposalLength (9)"}),(0,d.jsx)(t.td,{children:"The given length bound for the proposal was too low."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{children:"Democracy (14)"}),(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ValueLow (0)"}),(0,d.jsx)(t.td,{children:"Value too low"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalMissing (1)"}),(0,d.jsx)(t.td,{children:"Proposal does not exist"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"BadIndex (2)"}),(0,d.jsx)(t.td,{children:"Unknown index"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyCanceled (3)"}),(0,d.jsx)(t.td,{children:"Cannot cancel the same proposal twice"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicateProposal (4)"}),(0,d.jsx)(t.td,{children:"Proposal already made"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ProposalBlacklisted (5)"}),(0,d.jsx)(t.td,{children:"Proposal still blacklisted"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotSimpleMajority (6)"}),(0,d.jsx)(t.td,{children:"Next external proposal not simple majority"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidHash (7)"}),(0,d.jsx)(t.td,{children:"Invalid hash"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoProposal (8)"}),(0,d.jsx)(t.td,{children:"No external proposal"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyVetoed (9)"}),(0,d.jsx)(t.td,{children:"Identity may not veto a proposal twice"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotDelegated (10)"}),(0,d.jsx)(t.td,{children:"Not delegated"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"DuplicatePreimage (11)"}),(0,d.jsx)(t.td,{children:"Preimage already noted"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotImminent (12)"}),(0,d.jsx)(t.td,{children:"Not imminent"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooEarly (13)"}),(0,d.jsx)(t.td,{children:"Too early"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Imminent (14)"}),(0,d.jsx)(t.td,{children:"Imminent"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PreimageMissing (15)"}),(0,d.jsx)(t.td,{children:"Preimage not found"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"ReferendumInvalid (16)"}),(0,d.jsx)(t.td,{children:"Vote given for invalid referendum"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"PreimageInvalid (17)"}),(0,d.jsx)(t.td,{children:"Invalid preimage"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoneWaiting (18)"}),(0,d.jsx)(t.td,{children:"No proposals waiting"})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotLocked (19)"}),(0,d.jsx)(t.td,{children:"The target account does not have a lock."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotExpired (20)"}),(0,d.jsx)(t.td,{children:"The lock on the account to be unlocked has not yet expired."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotVoter (21)"}),(0,d.jsx)(t.td,{children:"The given account did not vote on the referendum."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NoPermission (22)"}),(0,d.jsx)(t.td,{children:"The actor has no permission to conduct the action."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"AlreadyDelegating (23)"}),(0,d.jsx)(t.td,{children:"The account is already delegating."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Overflow (24)"}),(0,d.jsx)(t.td,{children:"An unexpected integer overflow occurred."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Underflow (25)"}),(0,d.jsx)(t.td,{children:"An unexpected integer underflow occurred."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InsufficientFunds (26)"}),(0,d.jsx)(t.td,{children:"Too high a balance was provided that the account cannot afford."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"NotDelegating (27)"}),(0,d.jsx)(t.td,{children:"The account is not currently delegating."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"VotesExist (28)"}),(0,d.jsxs)(t.td,{children:["The account currently has votes attached to it and the operation cannot succeed until these are removed, either through ",(0,d.jsx)(t.code,{children:"unvote"})," or ",(0,d.jsx)(t.code,{children:"reap_vote"}),"."]})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InstantNotAllowed (29)"}),(0,d.jsx)(t.td,{children:"The instant referendum origin is currently disallowed."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"Nonsense (30)"}),(0,d.jsx)(t.td,{children:"Delegation to oneself makes no sense."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"WrongUpperBound (31)"}),(0,d.jsx)(t.td,{children:"Invalid upper bound."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"MaxVotesReached (32)"}),(0,d.jsx)(t.td,{children:"Maximum number of votes reached."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"InvalidWitness (33)"}),(0,d.jsx)(t.td,{children:"The provided witness data is wrong."})]}),(0,d.jsxs)(t.tr,{children:[(0,d.jsx)(t.td,{}),(0,d.jsx)(t.td,{children:"TooManyProposals (34)"}),(0,d.jsx)(t.td,{children:"Maximum number of proposals reached."})]})]})]})]})}function a(e={}){const{wrapper:t}={...(0,n.R)(),...e.components};return t?(0,d.jsx)(t,{...e,children:(0,d.jsx)(h,{...e})}):h(e)}},58691:(e,t,s)=>{s.d(t,{A:()=>d});const d=s.p+"assets/images/01-44e982847dc13a68b04abbc5757fae86.jpg"},64212:(e,t,s)=>{s.d(t,{A:()=>d});const d=s.p+"assets/images/02-eb569cd528fa9b5a6d990c6a10ec2b43.jpg"},28453:(e,t,s)=>{s.d(t,{R:()=>i,x:()=>l});var d=s(96540);const n={},r=d.createContext(n);function i(e){const t=d.useContext(r);return d.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),d.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e2042f5.1b878725.js b/assets/js/9e2042f5.1b878725.js new file mode 100644 index 0000000000..e63bb87906 --- /dev/null +++ b/assets/js/9e2042f5.1b878725.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3086],{70225:(a,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>i,metadata:()=>r,toc:()=>c});var t=n(74848),o=n(28453);const i={id:"learn-collator",title:"Collator",sidebar_label:"Collator",description:"Role of Collators within the Polkadot Ecosystem.",keywords:["collator","maintain","full node","block candidate"],slug:"../learn-collator"},s=void 0,r={id:"learn/learn-collator",title:"Collator",description:"Role of Collators within the Polkadot Ecosystem.",source:"@site/../docs/learn/learn-collator.md",sourceDirName:"learn",slug:"/learn-collator",permalink:"/docs/learn-collator",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1729496727e3,frontMatter:{id:"learn-collator",title:"Collator",sidebar_label:"Collator",description:"Role of Collators within the Polkadot Ecosystem.",keywords:["collator","maintain","full node","block candidate"],slug:"../learn-collator"},sidebar:"docs",previous:{title:"Network Participants",permalink:"/docs/learn-participants-index"},next:{title:"Nominator",permalink:"/docs/learn-nominator"}},l={},c=[{value:"Collators' Role",id:"collators-role",level:2},{value:"XCM",id:"xcm",level:2},{value:"Taking the Case for One Parachain",id:"taking-the-case-for-one-parachain",level:2},{value:"Collators in the Wild",id:"collators-in-the-wild",level:2},{value:"Guides and Tools",id:"guides-and-tools",level:2}];function d(a){const e={a:"a",admonition:"admonition",em:"em",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...a.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.admonition,{type:"info",children:(0,t.jsxs)(e.p,{children:["This page provides a general overview of the role of collators' in the Polkadot ecosystem. For more\ndetailed information you can read the ",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol",children:"Parachain Protocol Overview"}),"."]})}),"\n",(0,t.jsx)(e.h2,{id:"collators-role",children:"Collators' Role"}),"\n",(0,t.jsx)(e.p,{children:"Collators maintain parachains by collecting parachain transactions from users and producing state\ntransition proofs for relay chain validators. In other words, collators maintain parachains by\naggregating parachain transactions into parachain block candidates and producing state transition\nproofs (Proof-of-Validity, PoV) for validators."}),"\n",(0,t.jsx)(e.p,{children:"Collators maintain a full node for the relay chain and a full node for their particular parachain;\nmeaning they retain all necessary information to be able to author new blocks and execute\ntransactions in much the same way as miners do on PoW blockchains. Under normal circumstances, they\nwill collate and execute transactions to create an unsealed block and provide it, together with a\nPoV, to one or more validators responsible for proposing a parachain block."}),"\n",(0,t.jsxs)(e.p,{children:["Collators are similar to validators on any other blockchain but they do not need to provide security\nguarantees because the relay chain provides those. If a parachain block is invalid, it will get\nrejected by validators. The validators are required to check the validity of submitted candidates,\nfollowed by issuing and collecting statements about the validity of candidates to other validators.\nThis process is known as ",(0,t.jsx)(e.strong,{children:"candidate backing"}),". Validators receive an arbitrary number of parachain\ncandidates with associated PoV from untrusted collators. A candidate is considered ",(0,t.jsx)(e.em,{children:"backable"})," when\nat least 2/3 of all assigned validators have issued a valid statement about that candidate."]}),"\n",(0,t.jsx)(e.p,{children:"The validator must successfully verify the following conditions in the following order:"}),"\n",(0,t.jsxs)(e.ol,{children:["\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"The candidate does not exceed any parameters in the persisted validation data."}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"The signature of the collator is valid."}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"Validate the candidate by executing the parachain Runtime."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(e.p,{children:["Once a candidate meets a specified criteria for inclusion, the selected relay chain block author\nthen chooses any of the backable candidates for each parachain and includes those into the relay\nchain block. We say the candidate blocks are ",(0,t.jsx)(e.em,{children:"backed"}),"."]}),"\n",(0,t.jsx)(e.p,{children:"The assumption that having more collators is better or more secure is not correct. On the contrary,\ntoo many collators may slow down the network. The only nefarious power collators have is transaction\ncensorship. To prevent censorship, a parachain only needs to ensure that there are some neutral\ncollators - but not necessarily a majority. Theoretically, the censorship problem is solved by\nhaving just one honest collator."}),"\n",(0,t.jsx)(e.h2,{id:"xcm",children:"XCM"}),"\n",(0,t.jsxs)(e.p,{children:["Collators are a key element of the ",(0,t.jsx)(e.a,{href:"/docs/learn-xcm",children:"XCM (Cross-Consensus Message Passing Format)"}),". By\nbeing full nodes of the relay chain, they are all aware of each other as peers. This makes it\npossible for them to send messages from parachain A to parachain B."]}),"\n",(0,t.jsx)(e.h2,{id:"taking-the-case-for-one-parachain",children:"Taking the Case for One Parachain"}),"\n",(0,t.jsxs)(e.p,{children:["A start of a new block candidate is initiated with a block creation time. The collator aggregates\nall new transactions at the end of the process. When doing so, the collator signs the ",(0,t.jsx)(e.em,{children:"parachain\nblock candidate"})," and produces state transition proofs (Proof-of-Validity, PoV), which are a summary\nof the final account balances caused by the transactions in the candidate block. The collator sends\nthe candidate block and PoV to the parachain validators, so-called para-validators. The\npara-validators verify the transactions within the parachain block candidate. Upon verification, and\nif all is well, the candidate becomes ",(0,t.jsx)(e.em,{children:"backable"})," and a para-validator shares the candidate block\nwith the relay chain."]}),"\n",(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{alt:"parachain candidate block diagram",src:n(8891).A+"",width:"413",height:"298"})}),"\n",(0,t.jsx)(e.p,{children:"The validators on the relay chain will try to reach a consensus on the block candidate. Upon\nreaching consensus, the now validated block candidate is shared with the validators and collators,\nand the process repeats for new transactions. A collator cannot continue building blocks on a\nparachain until the block candidate they proposed to the relay chain validators have been validated.\nA block is produced every 6 seconds."}),"\n",(0,t.jsx)(e.h2,{id:"collators-in-the-wild",children:"Collators in the Wild"}),"\n",(0,t.jsxs)(e.p,{children:["Blockchains that are built using Substrate are unable to hook onto the relay chain on their own. The\nParity team built the\n",(0,t.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/",children:"Cumulus library"})," to address this.\nCollators are being used on the ",(0,t.jsx)(e.a,{href:"/docs/build-pdk#testing-a-parachain",children:"Paseo"})," testnet,\nand you can learn more about how they are used with Cumulus via the\n",(0,t.jsx)(e.a,{href:"hhttps://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/cumulus/index.html",children:"Cumulus"}),"\nRust documentation. More information can be found under the\n",(0,t.jsx)(e.a,{href:"/docs/build-pdk###cumulus",children:"Cumulus section"})," on the build parachain page."]}),"\n",(0,t.jsx)(e.h2,{id:"guides-and-tools",children:"Guides and Tools"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://docs.substrate.io/reference/how-to-guides/parachains/connect-to-a-relay-chain/",children:"Tutorial covering Cumulus and Collators"})}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"/docs/build-pdk#testing-a-parachain",children:"Paseo testnet guide"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://github.com/shawntabrizi/polkadot-launch",children:"polkadot-launch"})," - a tool to quickly spin up a\nlocal Polkadot testnet based on some parameters like number of parachains, collator setup, etc."]}),"\n"]})]})}function h(a={}){const{wrapper:e}={...(0,o.R)(),...a.components};return e?(0,t.jsx)(e,{...a,children:(0,t.jsx)(d,{...a})}):d(a)}},8891:(a,e,n)=>{n.d(e,{A:()=>t});const t=n.p+"assets/images/polkadot-consensus-example-1-b4a05f2e5a4b991594612da57e1d6dfd.png"},28453:(a,e,n)=>{n.d(e,{R:()=>s,x:()=>r});var t=n(96540);const o={},i=t.createContext(o);function s(a){const e=t.useContext(i);return t.useMemo((function(){return"function"==typeof a?a(e):{...e,...a}}),[e,a])}function r(a){let e;return e=a.disableParentContext?"function"==typeof a.components?a.components(o):a.components||o:s(a.components),t.createElement(i.Provider,{value:e},a.children)}}}]); \ No newline at end of file diff --git a/assets/js/9e2042f5.d55fadcc.js b/assets/js/9e2042f5.d55fadcc.js deleted file mode 100644 index 1358ef54b1..0000000000 --- a/assets/js/9e2042f5.d55fadcc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[3086],{70225:(a,e,n)=>{n.r(e),n.d(e,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var t=n(74848),o=n(28453);const i={id:"learn-collator",title:"Collator",sidebar_label:"Collator",description:"Role of Collators within the Polkadot Ecosystem.",keywords:["collator","maintain","full node","block candidate"],slug:"../learn-collator"},r=void 0,s={id:"learn/learn-collator",title:"Collator",description:"Role of Collators within the Polkadot Ecosystem.",source:"@site/../docs/learn/learn-collator.md",sourceDirName:"learn",slug:"/learn-collator",permalink:"/docs/learn-collator",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729152709e3,frontMatter:{id:"learn-collator",title:"Collator",sidebar_label:"Collator",description:"Role of Collators within the Polkadot Ecosystem.",keywords:["collator","maintain","full node","block candidate"],slug:"../learn-collator"},sidebar:"docs",previous:{title:"Network Participants",permalink:"/docs/learn-participants-index"},next:{title:"Nominator",permalink:"/docs/learn-nominator"}},l={},c=[{value:"Collators' Role",id:"collators-role",level:2},{value:"XCM",id:"xcm",level:2},{value:"Taking the Case for One Parachain",id:"taking-the-case-for-one-parachain",level:2},{value:"Collators in the Wild",id:"collators-in-the-wild",level:2},{value:"Guides and Tools",id:"guides-and-tools",level:2}];function d(a){const e={a:"a",admonition:"admonition",em:"em",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,o.R)(),...a.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(e.admonition,{type:"info",children:(0,t.jsxs)(e.p,{children:["This page provides a general overview of the role of collators' in the Polkadot ecosystem. For more\ndetailed information you can read the ",(0,t.jsx)(e.a,{href:"/docs/learn-parachains-protocol",children:"Parachain Protocol Overview"}),"."]})}),"\n",(0,t.jsx)(e.h2,{id:"collators-role",children:"Collators' Role"}),"\n",(0,t.jsx)(e.p,{children:"Collators maintain parachains by collecting parachain transactions from users and producing state\ntransition proofs for relay chain validators. In other words, collators maintain parachains by\naggregating parachain transactions into parachain block candidates and producing state transition\nproofs (Proof-of-Validity, PoV) for validators."}),"\n",(0,t.jsx)(e.p,{children:"Collators maintain a full node for the relay chain and a full node for their particular parachain;\nmeaning they retain all necessary information to be able to author new blocks and execute\ntransactions in much the same way as miners do on PoW blockchains. Under normal circumstances, they\nwill collate and execute transactions to create an unsealed block and provide it, together with a\nPoV, to one or more validators responsible for proposing a parachain block."}),"\n",(0,t.jsxs)(e.p,{children:["Collators are similar to validators on any other blockchain but they do not need to provide security\nguarantees because the relay chain provides those. If a parachain block is invalid, it will get\nrejected by validators. The validators are required to check the validity of submitted candidates,\nfollowed by issuing and collecting statements about the validity of candidates to other validators.\nThis process is known as ",(0,t.jsx)(e.strong,{children:"candidate backing"}),". Validators receive an arbitrary number of parachain\ncandidates with associated PoV from untrusted collators. A candidate is considered ",(0,t.jsx)(e.em,{children:"backable"})," when\nat least 2/3 of all assigned validators have issued a valid statement about that candidate."]}),"\n",(0,t.jsx)(e.p,{children:"The validator must successfully verify the following conditions in the following order:"}),"\n",(0,t.jsxs)(e.ol,{children:["\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"The candidate does not exceed any parameters in the persisted validation data."}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"The signature of the collator is valid."}),"\n"]}),"\n",(0,t.jsxs)(e.li,{children:["\n",(0,t.jsx)(e.p,{children:"Validate the candidate by executing the parachain Runtime."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(e.p,{children:["Once a candidate meets a specified criteria for inclusion, the selected relay chain block author\nthen chooses any of the backable candidates for each parachain and includes those into the relay\nchain block. We say the candidate blocks are ",(0,t.jsx)(e.em,{children:"backed"}),"."]}),"\n",(0,t.jsx)(e.p,{children:"The assumption that having more collators is better or more secure is not correct. On the contrary,\ntoo many collators may slow down the network. The only nefarious power collators have is transaction\ncensorship. To prevent censorship, a parachain only needs to ensure that there are some neutral\ncollators - but not necessarily a majority. Theoretically, the censorship problem is solved by\nhaving just one honest collator."}),"\n",(0,t.jsx)(e.h2,{id:"xcm",children:"XCM"}),"\n",(0,t.jsxs)(e.p,{children:["Collators are a key element of the ",(0,t.jsx)(e.a,{href:"/docs/learn-xcm",children:"XCM (Cross-Consensus Message Passing Format)"}),". By\nbeing full nodes of the relay chain, they are all aware of each other as peers. This makes it\npossible for them to send messages from parachain A to parachain B."]}),"\n",(0,t.jsx)(e.h2,{id:"taking-the-case-for-one-parachain",children:"Taking the Case for One Parachain"}),"\n",(0,t.jsxs)(e.p,{children:["A start of a new block candidate is initiated with a block creation time. The collator aggregates\nall new transactions at the end of the process. When doing so, the collator signs the ",(0,t.jsx)(e.em,{children:"parachain\nblock candidate"})," and produces state transition proofs (Proof-of-Validity, PoV), which are a summary\nof the final account balances caused by the transactions in the candidate block. The collator sends\nthe candidate block and PoV to the parachain validators, so-called para-validators. The\npara-validators verify the transactions within the parachain block candidate. Upon verification, and\nif all is well, the candidate becomes ",(0,t.jsx)(e.em,{children:"backable"})," and a para-validator shares the candidate block\nwith the relay chain."]}),"\n",(0,t.jsx)(e.p,{children:(0,t.jsx)(e.img,{alt:"parachain candidate block diagram",src:n(8891).A+"",width:"413",height:"298"})}),"\n",(0,t.jsx)(e.p,{children:"The validators on the relay chain will try to reach a consensus on the block candidate. Upon\nreaching consensus, the now validated block candidate is shared with the validators and collators,\nand the process repeats for new transactions. A collator cannot continue building blocks on a\nparachain until the block candidate they proposed to the relay chain validators have been validated.\nA block is produced every 6 seconds."}),"\n",(0,t.jsx)(e.h2,{id:"collators-in-the-wild",children:"Collators in the Wild"}),"\n",(0,t.jsxs)(e.p,{children:["Blockchains that are built using Substrate are unable to hook onto the relay chain on their own. The\nParity team built the\n",(0,t.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus/",children:"Cumulus library"})," to address this.\nCollators are being used on the ",(0,t.jsx)(e.a,{href:"/docs/build-pdk#testing-a-parachain",children:"Paseo"})," testnet,\nand you can learn more about how they are used with Cumulus via the\n",(0,t.jsx)(e.a,{href:"hhttps://paritytech.github.io/polkadot-sdk/master/polkadot_sdk_docs/polkadot_sdk/cumulus/index.html",children:"Cumulus"})," Rust documentation. More\ninformation can be found under the ",(0,t.jsx)(e.a,{href:"/docs/build-pdk###cumulus",children:"Cumulus section"})," on the\nbuild parachain page."]}),"\n",(0,t.jsx)(e.h2,{id:"guides-and-tools",children:"Guides and Tools"}),"\n",(0,t.jsxs)(e.ul,{children:["\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"https://docs.substrate.io/reference/how-to-guides/parachains/connect-to-a-relay-chain/",children:"Tutorial covering Cumulus and Collators"})}),"\n",(0,t.jsx)(e.li,{children:(0,t.jsx)(e.a,{href:"/docs/build-pdk#testing-a-parachain",children:"Paseo testnet guide"})}),"\n",(0,t.jsxs)(e.li,{children:[(0,t.jsx)(e.a,{href:"https://github.com/shawntabrizi/polkadot-launch",children:"polkadot-launch"})," - a tool to quickly spin up a\nlocal Polkadot testnet based on some parameters like number of parachains, collator setup, etc."]}),"\n"]})]})}function h(a={}){const{wrapper:e}={...(0,o.R)(),...a.components};return e?(0,t.jsx)(e,{...a,children:(0,t.jsx)(d,{...a})}):d(a)}},8891:(a,e,n)=>{n.d(e,{A:()=>t});const t=n.p+"assets/images/polkadot-consensus-example-1-b4a05f2e5a4b991594612da57e1d6dfd.png"},28453:(a,e,n)=>{n.d(e,{R:()=>r,x:()=>s});var t=n(96540);const o={},i=t.createContext(o);function r(a){const e=t.useContext(i);return t.useMemo((function(){return"function"==typeof a?a(e):{...e,...a}}),[e,a])}function s(a){let e;return e=a.disableParentContext?"function"==typeof a.components?a.components(o):a.components||o:r(a.components),t.createElement(i.Provider,{value:e},a.children)}}}]); \ No newline at end of file diff --git a/assets/js/c110e322.a4d8148d.js b/assets/js/c110e322.a4d8148d.js new file mode 100644 index 0000000000..edb1f12d45 --- /dev/null +++ b/assets/js/c110e322.a4d8148d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1592],{37917:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>h});var t=n(74848),i=n(28453);const r={id:"learn-guides-coretime-swap",title:"Coretime Lease Swap",sidebar_label:"Coretime Swap",description:"A guide to leverage the swap lease functionality for different parachains",keywords:["coretime","blockspace","parachain","cores","lease"],slug:"../learn-guides-coretime-swap"},s=void 0,o={id:"learn/learn-guides-coretime-swap",title:"Coretime Lease Swap",description:"A guide to leverage the swap lease functionality for different parachains",source:"@site/../docs/learn/learn-guides-coretime-swap.md",sourceDirName:"learn",slug:"/learn-guides-coretime-swap",permalink:"/docs/learn-guides-coretime-swap",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Santi Balaguer",lastUpdatedAt:1729503414e3,frontMatter:{id:"learn-guides-coretime-swap",title:"Coretime Lease Swap",sidebar_label:"Coretime Swap",description:"A guide to leverage the swap lease functionality for different parachains",keywords:["coretime","blockspace","parachain","cores","lease"],slug:"../learn-guides-coretime-swap"}},c={},h=[{value:"Initiate Swap from the Parachain",id:"initiate-swap-from-the-parachain",level:2},{value:"Perform Swap on the Relay chain for an unlocked Parachain",id:"perform-swap-on-the-relay-chain-for-an-unlocked-parachain",level:2},{value:"Coretime Swap Prerequisites",id:"coretime-swap-prerequisites",level:2},{value:"Swap through an OnDemand Core",id:"swap-through-an-ondemand-core",level:3},{value:"Core Swap Execution Steps",id:"core-swap-execution-steps",level:3},{value:"Coretime Swap - Time for Effect",id:"coretime-swap---time-for-effect",level:3}];function l(e){const a={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(a.p,{children:"The following is a guide to leverage the swap functionality to change leases between different\nparaIDs. This allows parachain teams to swap existing leases."}),"\n",(0,t.jsxs)(a.p,{children:["Coretime swapping requires two chains to send a ",(0,t.jsx)(a.code,{children:"swap"})," instruction from an origin with Root\nprivileges. Depending on whether the parachain is locked or not, this can either be the manager\naccount of the parachain on the relay chain (if parachain is not locked), or the governance system\nin place for the parachain (can be sudo) if the parachain is locked."]}),"\n",(0,t.jsxs)(a.p,{children:["In order to check if a parachain is locked or not, teams need to query ",(0,t.jsx)(a.code,{children:"registrar.paras"})," with the\ncorresponding paraID on the relay chain. It's important to note that since\n",(0,t.jsx)(a.a,{href:"https://github.com/polkadot-fellows/RFCs/pull/14",children:"RFC #14"}),", if a parachain never produced a block\nthe it's by default unlocked."]}),"\n",(0,t.jsx)(a.h2,{id:"initiate-swap-from-the-parachain",children:"Initiate Swap from the Parachain"}),"\n",(0,t.jsxs)(a.p,{children:["To swap from a parachain, an XCM message needs to be sent from the parachain to the relay chain.\nThis XCM message must be a send instruction that wraps the ",(0,t.jsx)(a.code,{children:"registrar.swap"})," extrinsic that needs to\nbe executed on the relay chain."]}),"\n",(0,t.jsx)(a.p,{children:"Below, you can find an example hex encoded call for Composable Finance, assuming the team is still\noperating under SUDO."}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fcomposable-rpc.dwellir.com#/extrinsics/decode/0x0200290003010003140004000000000700e876481713000000000700e87648170006000700e40b540282380100284603e3070000320d0000140d01000001008d1f",children:"0x0200290003010003140004000000000700e876481713000000000700e87648170006000700e40b540282380100284603e3070000320d0000140d01000001008d1f"})}),"\n",(0,t.jsx)(a.p,{children:"As for weights (size and time), we use an overestimate compared with those returned by the Polkadot\nRelay Runtime API."}),"\n",(0,t.jsxs)(a.p,{children:["To check the exact weights, you can navigate to Polkadot JS UI > Developer > Runtime Calls and then\nselect ",(0,t.jsx)(a.code,{children:"transactionPaymentCallInfo"})," and ",(0,t.jsx)(a.code,{children:"queryCallInfo"})," and include the extrinsic being sent in the\n",(0,t.jsx)(a.code,{children:"send"})," instruction of the XCM message:\n",(0,t.jsx)(a.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.ibp.network%2Fpolkadot#/extrinsics/decode/0x4603e3070000320d0000",children:"0x4603e3070000320d0000"})]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"TX-payment-API-Lease-Swap",src:n(65066).A+"",width:"1962",height:"1165"})}),"\n",(0,t.jsx)(a.h2,{id:"perform-swap-on-the-relay-chain-for-an-unlocked-parachain",children:"Perform Swap on the Relay chain for an unlocked Parachain"}),"\n",(0,t.jsx)(a.p,{children:"In the case a parachain is unlocked, then the manager of the parachain on the relaychain must send\nthe extrinsic directly on the relaychain."}),"\n",(0,t.jsxs)(a.p,{children:["In the case of paraID 3378 wanting to swap with Composable Finance, the extrinsic to send from its\nmanager account ",(0,t.jsx)(a.code,{children:"13B8Tdhi4EuruwzVt3gdcTopXpqbUzmncutiQKKNbd8cpU91"})," is:"]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.ibp.network%2Fpolkadot#/extrinsics/decode/0x4603320d0000e3070000",children:"0x4603320d0000e3070000"})}),"\n",(0,t.jsx)(a.h2,{id:"coretime-swap-prerequisites",children:"Coretime Swap Prerequisites"}),"\n",(0,t.jsxs)(a.p,{children:["We need to ensure the parachains have a valid cores to execute the swap instruction. This can be\nachieved either by getting a core in bulk from the coretime system chain, or by leveraging the\nonDemand functionality on relay chain. Assuming that teams have a working parachain (with a valid\ncore) and a stalled parachain, the following instructions explain how to get a core ",(0,t.jsx)(a.code,{children:"onDemand"})," for\nthe stalled parachain."]}),"\n",(0,t.jsx)(a.h3,{id:"swap-through-an-ondemand-core",children:"Swap through an OnDemand Core"}),"\n",(0,t.jsxs)(a.p,{children:["This functionality exists on the relay chain and allows users to request for 1 block of validation\nof their parachain. In order to place an order for on demand, any account must call the\n",(0,t.jsx)(a.code,{children:"onDemand.placeOrderAllowDeath"})," extrinsic."]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"onDemand-block-production",src:n(9621).A+"",width:"2017",height:"1045"})}),"\n",(0,t.jsx)(a.p,{children:"This extrinsic takes two parameters:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:["\n",(0,t.jsx)(a.p,{children:"Amount: the amount the user is willing to pay for the parachain block to be validated by a core.\nThe minimum amount the system allows is 250,000,000 planckDOT (0.025 DOT) and the actual amount is\ndynamic as it depends on the on-demand block production requests queued."}),"\n"]}),"\n",(0,t.jsxs)(a.li,{children:["\n",(0,t.jsxs)(a.p,{children:["paraID: This refers to the ",(0,t.jsx)(a.code,{children:"paraID"})," of the on-demand Parachain whose block must be",(0,t.jsx)(a.br,{}),"\n","validated by a core."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(a.h3,{id:"core-swap-execution-steps",children:"Core Swap Execution Steps"}),"\n",(0,t.jsx)(a.p,{children:"If you are a team with two parachains, one that has a lease with a fresh paraID, and an old one that\ndoesn't have a lease but contains the history of the chain then below is a list of steps to execute\nto swap these leases."}),"\n",(0,t.jsx)(a.p,{children:"Assumptions"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Your new paraID is unlocked and your old paraID is locked."}),"\n",(0,t.jsx)(a.li,{children:"You have access to the manager account on the relay chain for the new paraID"}),"\n",(0,t.jsx)(a.li,{children:"You have your collators running on your old paraID and you can execute upward XCM messages from\nthat parachain."}),"\n",(0,t.jsx)(a.li,{children:"The sovereign account for the locked paraID has enough available funds to execute transactions on\nthe relay chain."}),"\n",(0,t.jsx)(a.li,{children:"The account that owns the unlocked paraID has enough available funds to execute transactions on\nthe relay chain. transactions on the relay chain."}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"Steps"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Have the collator running for your original paraID."}),"\n",(0,t.jsxs)(a.li,{children:["Send the ",(0,t.jsx)(a.a,{href:"#initiate-swap-from-the-parachain",children:"XCM instruction detailed before"}),"."]}),"\n",(0,t.jsx)(a.li,{children:"Get a onDemandCore for your original paraID. Once this gets executed, your XCM message should be\ndispatched to the relay chain and you should see a pending swap."}),"\n",(0,t.jsxs)(a.li,{children:["Use the manager account on your new paraID to send the\n",(0,t.jsx)(a.a,{href:"#perform-swap-on-the-relay-chain-for-an-unlocked-parachain",children:"swap instruction"})," directly on the\nrelay chain."]}),"\n"]}),"\n",(0,t.jsx)(a.h3,{id:"coretime-swap---time-for-effect",children:"Coretime Swap - Time for Effect"}),"\n",(0,t.jsxs)(a.p,{children:["The swap of leases is effective immediately, however the Coretime chain communicates the changes of these leases to the relay chain with every new coretime cycle. Thus, the change will come into effect in the following coretime cycle. For information on when the new coretime cycle, you can view the ",(0,t.jsx)(a.a,{href:"https://coretime-polkadot.subscan.io/coretime_dashboard",children:"coretime sales"})," page."]})]})}function d(e={}){const{wrapper:a}={...(0,i.R)(),...e.components};return a?(0,t.jsx)(a,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},9621:(e,a,n)=>{n.d(a,{A:()=>t});const t=n.p+"assets/images/onDemand-block-production-ba682c530332d798721a8f87934bccfc.png"},65066:(e,a,n)=>{n.d(a,{A:()=>t});const t=n.p+"assets/images/tx-payment-api-weights-lease-swap-d1c125d22aa51ad58c980c890050d1e9.png"},28453:(e,a,n)=>{n.d(a,{R:()=>s,x:()=>o});var t=n(96540);const i={},r=t.createContext(i);function s(e){const a=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function o(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(r.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/c110e322.c2ec6b3d.js b/assets/js/c110e322.c2ec6b3d.js deleted file mode 100644 index 28a55b2c54..0000000000 --- a/assets/js/c110e322.c2ec6b3d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1592],{37917:(e,a,n)=>{n.r(a),n.d(a,{assets:()=>c,contentTitle:()=>s,default:()=>d,frontMatter:()=>r,metadata:()=>o,toc:()=>h});var t=n(74848),i=n(28453);const r={id:"learn-guides-coretime-swap",title:"Coretime Lease Swap",sidebar_label:"Coretime Swap",description:"A guide to leverage the swap lease functionality for different parachains",keywords:["coretime","blockspace","parachain","cores","lease"],slug:"../learn-guides-coretime-swap"},s=void 0,o={id:"learn/learn-guides-coretime-swap",title:"Coretime Lease Swap",description:"A guide to leverage the swap lease functionality for different parachains",source:"@site/../docs/learn/learn-guides-coretime-swap.md",sourceDirName:"learn",slug:"/learn-guides-coretime-swap",permalink:"/docs/learn-guides-coretime-swap",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1729247805e3,frontMatter:{id:"learn-guides-coretime-swap",title:"Coretime Lease Swap",sidebar_label:"Coretime Swap",description:"A guide to leverage the swap lease functionality for different parachains",keywords:["coretime","blockspace","parachain","cores","lease"],slug:"../learn-guides-coretime-swap"}},c={},h=[{value:"Initiate Swap from the Parachain",id:"initiate-swap-from-the-parachain",level:2},{value:"Perform Swap on the Relay chain for an unlocked Parachain",id:"perform-swap-on-the-relay-chain-for-an-unlocked-parachain",level:2},{value:"Coretime Swap Prerequisites",id:"coretime-swap-prerequisites",level:2},{value:"Swap through an OnDemand Core",id:"swap-through-an-ondemand-core",level:3},{value:"Core Swap Execution Steps",id:"core-swap-execution-steps",level:3}];function l(e){const a={a:"a",br:"br",code:"code",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",ul:"ul",...(0,i.R)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(a.p,{children:"The following is a guide to leverage the swap functionality to change leases between different\nparaIDs. This allows parachain teams to swap existing leases."}),"\n",(0,t.jsxs)(a.p,{children:["Coretime swapping requires two chains to send a ",(0,t.jsx)(a.code,{children:"swap"})," instruction from an origin with Root\nprivileges. Depending on whether the parachain is locked or not, this can either be the manager\naccount of the parachain on the relay chain (if parachain is not locked), or the governance system\nin place for the parachain (can be sudo) if the parachain is locked."]}),"\n",(0,t.jsxs)(a.p,{children:["In order to check if a parachain is locked or not, teams need to query ",(0,t.jsx)(a.code,{children:"registrar.paras"})," with the\ncorresponding paraID on the relay chain. It's important to note that since\n",(0,t.jsx)(a.a,{href:"https://github.com/polkadot-fellows/RFCs/pull/14",children:"RFC #14"}),", if a parachain never produced a block\nthe it's by default unlocked."]}),"\n",(0,t.jsx)(a.h2,{id:"initiate-swap-from-the-parachain",children:"Initiate Swap from the Parachain"}),"\n",(0,t.jsxs)(a.p,{children:["To swap from a parachain, an XCM message needs to be sent from the parachain to the relay chain.\nThis XCM message must be a send instruction that wraps the ",(0,t.jsx)(a.code,{children:"registrar.swap"})," extrinsic that needs to\nbe executed on the relay chain."]}),"\n",(0,t.jsx)(a.p,{children:"Below, you can find an example hex encoded call for Composable Finance, assuming the team is still\noperating under SUDO."}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fcomposable-rpc.dwellir.com#/extrinsics/decode/0x0200290003010003140004000000000700e876481713000000000700e87648170006000700e40b540282380100284603e3070000320d0000140d01000001008d1f",children:"0x0200290003010003140004000000000700e876481713000000000700e87648170006000700e40b540282380100284603e3070000320d0000140d01000001008d1f"})}),"\n",(0,t.jsx)(a.p,{children:"As for weights (size and time), we use an overestimate compared with those returned by the Polkadot\nRelay Runtime API."}),"\n",(0,t.jsxs)(a.p,{children:["To check the exact weights, you can navigate to Polkadot JS UI > Developer > Runtime Calls and then\nselect ",(0,t.jsx)(a.code,{children:"transactionPaymentCallInfo"})," and ",(0,t.jsx)(a.code,{children:"queryCallInfo"})," and include the extrinsic being sent in the\n",(0,t.jsx)(a.code,{children:"send"})," instruction of the XCM message:\n",(0,t.jsx)(a.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.ibp.network%2Fpolkadot#/extrinsics/decode/0x4603e3070000320d0000",children:"0x4603e3070000320d0000"})]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"TX-payment-API-Lease-Swap",src:n(65066).A+"",width:"1962",height:"1165"})}),"\n",(0,t.jsx)(a.h2,{id:"perform-swap-on-the-relay-chain-for-an-unlocked-parachain",children:"Perform Swap on the Relay chain for an unlocked Parachain"}),"\n",(0,t.jsx)(a.p,{children:"In the case a parachain is unlocked, then the manager of the parachain on the relaychain must send\nthe extrinsic directly on the relaychain."}),"\n",(0,t.jsxs)(a.p,{children:["In the case of paraID 3378 wanting to swap with Composable Finance, the extrinsic to send from its\nmanager account ",(0,t.jsx)(a.code,{children:"13B8Tdhi4EuruwzVt3gdcTopXpqbUzmncutiQKKNbd8cpU91"})," is:"]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.a,{href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.ibp.network%2Fpolkadot#/extrinsics/decode/0x4603320d0000e3070000",children:"0x4603320d0000e3070000"})}),"\n",(0,t.jsx)(a.h2,{id:"coretime-swap-prerequisites",children:"Coretime Swap Prerequisites"}),"\n",(0,t.jsxs)(a.p,{children:["We need to ensure the parachains have a valid cores to execute the swap instruction. This can be\nachieved either by getting a core in bulk from the coretime system chain, or by leveraging the\nonDemand functionality on relay chain. Assuming that teams have a working parachain (with a valid\ncore) and a stalled parachain, the following instructions explain how to get a core ",(0,t.jsx)(a.code,{children:"onDemand"})," for\nthe stalled parachain."]}),"\n",(0,t.jsx)(a.h3,{id:"swap-through-an-ondemand-core",children:"Swap through an OnDemand Core"}),"\n",(0,t.jsxs)(a.p,{children:["This functionality exists on the relay chain and allows users to request for 1 block of validation\nof their parachain. In order to place an order for on demand, any account must call the\n",(0,t.jsx)(a.code,{children:"onDemand.placeOrderAllowDeath"})," extrinsic."]}),"\n",(0,t.jsx)(a.p,{children:(0,t.jsx)(a.img,{alt:"onDemand-block-production",src:n(9621).A+"",width:"2017",height:"1045"})}),"\n",(0,t.jsx)(a.p,{children:"This extrinsic takes two parameters:"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsxs)(a.li,{children:["\n",(0,t.jsx)(a.p,{children:"Amount: the amount the user is willing to pay for the parachain block to be validated by a core.\nThe minimum amount the system allows is 250,000,000 planckDOT (0.025 DOT) and the actual amount is\ndynamic as it depends on the on-demand block production requests queued."}),"\n"]}),"\n",(0,t.jsxs)(a.li,{children:["\n",(0,t.jsxs)(a.p,{children:["paraID: This refers to the ",(0,t.jsx)(a.code,{children:"paraID"})," of the on-demand Parachain whose block must be",(0,t.jsx)(a.br,{}),"\n","validated by a core."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(a.h3,{id:"core-swap-execution-steps",children:"Core Swap Execution Steps"}),"\n",(0,t.jsx)(a.p,{children:"If you are a team with two parachains, one that has a lease with a fresh paraID, and an old one that\ndoesn't have a lease but contains the history of the chain then below is a list of steps to execute\nto swap these leases."}),"\n",(0,t.jsx)(a.p,{children:"Assumptions"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Your new paraID is unlocked and your old paraID is locked."}),"\n",(0,t.jsx)(a.li,{children:"You have access to the manager account on the relay chain for the new paraID"}),"\n",(0,t.jsx)(a.li,{children:"You have your collators running on your old paraID and you can execute upward XCM messages from\nthat parachain."}),"\n",(0,t.jsx)(a.li,{children:"The sovereign account for the locked paraID has enough available funds to execute transactions on\nthe relay chain."}),"\n",(0,t.jsx)(a.li,{children:"The account that owns the unlocked paraID has enough available funds to execute transactions on\nthe relay chain. transactions on the relay chain."}),"\n"]}),"\n",(0,t.jsx)(a.p,{children:"Steps"}),"\n",(0,t.jsxs)(a.ul,{children:["\n",(0,t.jsx)(a.li,{children:"Have the collator running for your original paraID."}),"\n",(0,t.jsxs)(a.li,{children:["Send the ",(0,t.jsx)(a.a,{href:"#initiate-swap-from-the-parachain",children:"XCM instruction detailed before"}),"."]}),"\n",(0,t.jsx)(a.li,{children:"Get a onDemandCore for your original paraID. Once this gets executed, your XCM message should be\ndispatched to the relay chain and you should see a pending swap."}),"\n",(0,t.jsxs)(a.li,{children:["Use the manager account on your new paraID to send the\n",(0,t.jsx)(a.a,{href:"#perform-swap-on-the-relay-chain-for-an-unlocked-parachain",children:"swap instruction"})," directly on the\nrelay chain."]}),"\n"]})]})}function d(e={}){const{wrapper:a}={...(0,i.R)(),...e.components};return a?(0,t.jsx)(a,{...e,children:(0,t.jsx)(l,{...e})}):l(e)}},9621:(e,a,n)=>{n.d(a,{A:()=>t});const t=n.p+"assets/images/onDemand-block-production-ba682c530332d798721a8f87934bccfc.png"},65066:(e,a,n)=>{n.d(a,{A:()=>t});const t=n.p+"assets/images/tx-payment-api-weights-lease-swap-d1c125d22aa51ad58c980c890050d1e9.png"},28453:(e,a,n)=>{n.d(a,{R:()=>s,x:()=>o});var t=n(96540);const i={},r=t.createContext(i);function s(e){const a=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(a):{...a,...e}}),[a,e])}function o(e){let a;return a=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(r.Provider,{value:a},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ccc1222e.05fa80b9.js b/assets/js/ccc1222e.05fa80b9.js new file mode 100644 index 0000000000..bf1344266d --- /dev/null +++ b/assets/js/ccc1222e.05fa80b9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5702],{47765:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>o});var r=s(74848),h=s(28453);const i={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"},a="Open Source Polkadot Stack ",n={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,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1729496706e3,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"}},c={},o=[{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}];function l(t){const e={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,h.R)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.header,{children:(0,r.jsx)(e.h1,{id:"open-source-polkadot-stack-",children:"Open Source Polkadot Stack "})}),"\n",(0,r.jsx)(e.admonition,{title:"Do your research before using open-source tools",type:"caution",children:(0,r.jsxs)(e.p,{children:["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,r.jsx)(e.a,{href:"/docs/how-to-dyor",children:"do your research"})," and be aware of ",(0,r.jsx)(e.a,{href:"/docs/learn-scams",children:"scams"}),"."]})}),"\n",(0,r.jsx)(e.p,{children:"This page aims to provide an overview of the open-source Polkadot Tech Stack."}),"\n",(0,r.jsxs)(e.p,{children:["This is a living document, and we rely on everyone to contribute and help maintain\nit. ",(0,r.jsx)(e.a,{href:"#contributing",children:(0,r.jsx)(e.strong,{children:"Please feel free to make edits and additions via pull requests"})}),". We\napologize if we missed your project!"]}),"\n",(0,r.jsx)(e.hr,{}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#about",children:"About"})}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.a,{href:"#layers-of-polkadot-stack",children:"Layers of Polkadot Stack"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#wallets",children:"Wallets"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#user-interface",children:"User Interface"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#tools-apis-and-languages",children:"Tools, APIs, and Languages"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#ink-smart-contracts",children:"ink! Smart Contracts"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#chains-and-pallets",children:"Chains and Pallets"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#host",children:"Host"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#network-maintenance-tools",children:"Network Maintenance Tools"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#signatures",children:"Signatures"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#consensus",children:"Consensus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#networking",children:"Networking"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#primitives",children:"Primitives"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#contributing",children:"Contributing"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"about",children:"About"}),"\n",(0,r.jsxs)(e.p,{children:["The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the ",(0,r.jsx)(e.strong,{children:"open-source"}),"\ntechnologies contributing to and relying on ",(0,r.jsx)(e.a,{href:"https://polkadot.network/",children:"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."]}),"\n",(0,r.jsx)(e.pre,{children:(0,r.jsx)(e.code,{children:"|------|--------|------------|\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"})}),"\n",(0,r.jsx)(e.h2,{id:"layers-of-polkadot-stack",children:"Layers of Polkadot Stack"}),"\n",(0,r.jsx)(e.p,{children:"In the below sections, you can find a list of different layers of the Polkadot Stack."}),"\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.strong,{children:"Maintenance Status"}),":"]}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:"\ud83d\udfe2 Actively maintained"}),"\n",(0,r.jsx)(e.li,{children:"\ud83d\udfe1 Stale (no activity on the main branch for one month)"}),"\n",(0,r.jsx)(e.li,{children:"\u26aa Unmaintained (no activity on the main branch for more than three months)"}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"wallets",children:"Wallets"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Web Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/Multix",children:"Multix"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkasafe/polkasafe-ui",children:"Polkasafe"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/apps",children:"polkadot-js/apps"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/TalismanSociety/talisman-web",children:"Talisman Web Application"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/enkryptcom/mydotwallet",children:"mydotwallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dappforce/subid",children:"Sub ID"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Primis-Labs/client",children:"Primis"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3finance/sakura",children:"Sakura"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/Web3Box-apps",children:"Web3Box"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CoongCrafts/coong-wallet",children:"Coong Wallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/subscan-multisig-react",children:"Subscan Multisig UI - React"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/subscan-multisig-ui",children:"Subscan Multisig UI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DoraFactory/dorafactory-multisig",children:"Dorafactory-Multisig"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/capi-multisig-app",children:"Capi Multisig App"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:["User-friendly Wallet based on the ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/recovery",children:"Recovery Pallet"}),", Web wallets focused on user-onboarding (e.g. using ",(0,r.jsx)(e.a,{href:"https://github.com/near/near-wallet",children:"localStorage"}),")"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Desktop Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/nova-spektr",children:"nova-spektr"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/omni-desktop-prototype",children:"Omni desktop"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"Enterprise Wallets"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Browser Extensions"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/TalismanSociety/talisman",children:"Talisman-Extension"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Koniverse/SubWallet-Extension",children:"SubWallet-Extension"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/enkryptcom/enKrypt",children:"Enkrypt"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/extension",children:"Polkadot-JS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/PolkaGate/polkagate-extension",children:"PolkaGate"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/trustwallet",children:"Trust Wallet Extension"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainBridgeNetworkTeam/Doter",children:"Doter"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/GetSpeckle/speckle-browser-extension",children:"Speckle OS"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockcoders/kuma-wallet",children:"Kuma Cross-chain Wallet"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"Sign-in with your Polkadot, Kusama, etc. account."})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Mobile Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/nova-wallet-ios",children:"Nova Wallet iOS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/nova-wallet-android",children:"Nova Wallet Android"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-signer",children:"Polkadot Vault"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/fearless-Android",children:"Fearless Wallet Android"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/fearless-iOS",children:"Fearless Wallet iOS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/trustwallet",children:"Trust Wallet"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Koniverse/SubWallet-Mobile",children:"SubWallet-Mobile"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Kalapaja/kampela-firmware",children:"Kampela"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/airgap-it/airgap-wallet",children:"AirGap"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Interstellar-Network/wallet-app",children:"Interstellar Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/luniehq/lunie",children:"Lunie"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkawallet-io/polkawallet-flutter",children:"Polkawallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/consenlabs/token-core",children:"imToken"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/stylo-app/stylo",children:"Stylo"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/fractapp/fractapp/",children:"Fractapp"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hypha-dao/hashed-wallet",children:"Hashed Wallet"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Burner Wallets/Faucet/Gifts"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/hamidra/dotdrop",children:"dotdrop"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/vue-polkadot/apps",children:"KodaDot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/astar-faucet-bot",children:"Astar Faucet Bot"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/karooolis/sybil-resistant-substrate-faucet",children:"Generic sybil-resistant faucet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/StringNick/sybil-resistant-chat-bot-substrate-faucet",children:"sybil-resistant Chat Bot Faucet"})," ","\u2754"]}),(0,r.jsx)(e.td,{children:"Faucet (a sybil-resistant way to receive free tokens)"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Wallet Plugins"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/metamask-snap-polkadot",children:"Metamask-Snap by Chainsafe"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"CLI Wallet"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/yxf/subwallet",children:"Subwallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/canontech/proxy-hot-wallet",children:"Proxy-hot-wallet"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Hardware Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ZondaX/ledger-polkadot",children:"Ledger Polkadot"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/ledger-kusama",children:"Ledger Kusama"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/ledger-statemint",children:"Ledger Statemint"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/ledger-statemine",children:"Ledger Statemine"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"Trezor"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"OAuth2-compatible Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/singkeo/dot-login",children:"DOT Login"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"user-interface",children:"User Interface"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Block Explorers"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/topmonks/calamar",children:"Calamar"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkascan/explorer-api",children:"Polkascan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Colm3na/polkastats-backend",children:"Polkastats"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/subscan",children:"Subscan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/statescan-v2",children:"Statescan"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/edgeware-builders/edgscan",children:"Edgscan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/web3labs/epirus-substrate",children:"Sirato"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockcoders/ink-substrate-explorer-api",children:"ink! Explorer API"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/substats",children:"Substats"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hybrid-explorer/hybrid-dapp",children:"Hybrid Block Explorer"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"Mempool focused explorer (including parachain transaction)"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator Dashboards"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-telemetry",children:"Polkadot Telemetry"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/hashquark-io/polkacube-frontend",children:"Polkacube"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/buidl-labs/YieldScan",children:"YieldScan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot",children:"Hubble"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ArthurHoeke/cyclops",children:"Cyclops"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/web3go-xyz/web3go-xyz-v2",children:"Web3Go"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/MathCryptoDoc/insights-1kv",children:"1kv insights"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Node Explorers"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/protos-research/polkadot-node-explorer",children:"Polkadot Node Explorer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"NFT Explorer"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/kodadot/nft-gallery",children:"NFT Explorer for Kusama & Polkadot"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Governance Dashboards"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/governance-ui",children:"Polkadot Delegation Dashboard"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/premiurly/polkassembly",children:"Polkassembly"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/dotreasury",children:"dotreasury"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/bright/bright-tresury",children:"Bright Treasury"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/collaboration",children:"OpenSquare offchain voting"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/wpank/open-gov-insights",children:"OpenGov Insights"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/stake-plus/treasury-tracker",children:"Treasury Tracker"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/joepetrowski/opengov-cli",children:"OpenGov CLI"})," \ud83d\udfe1"]}),(0,r.jsxs)(e.td,{children:["UI for the Kusama and/or Polkadot treasury (see ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate/pull/5715",children:"bounty module"}),"), UI for Parachain Lease Offering (PLO)"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Staking"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/w3f/staking-rewards-collector",children:"Staking Rewards Collector"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/jackson-harris-iii/staking-rewards-viewer",children:"Staking Rewards Viewer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/cryptolab-network/polkadot-staking-site",children:"Polkadot Staking Site"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-staking-dashboard",children:"Polkadot Staking Dashboard"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/James-Sangalli/dot-validator-selector",children:"Polkadot/Kusama Validator Selector"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/James-Sangalli/dot-staking-income",children:"Staking Income CSV Generator"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Bridge UI"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-bridges-ui",children:"Parity Bridges UI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nutbox-dao/donut-interface",children:"Donut Interface (Steem - Dot)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RostislavLitovkin/PlutonicationServer",children:"Plutonication"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Parachain/Crowdloan"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/jhonalino/parachains.network",children:"Parachains.Network"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/CrommVardek/polk-auction-ui",children:"PolkAuction"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/10clouds/crowdloan-template",children:"Crowdloan Front End Template"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hack-ink/slothunter/",children:"Slothunter"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Identicon"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://polkadot.cloud/polkicon",children:"Polkicon"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/RidOne-technologies/polkadot-web-identicon",children:"PolkadotWebIdenticon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RidOne-technologies/polkadot-angular-identicon",children:"Polkadot Angular IdentIcon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Noc2/Bird-Identicon",children:"Bird Identicon"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Coretime"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LasticXYZ/LasticUI",children:"Lastic"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/RegionX-Labs/RegionX-Node",children:"RegionX"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://polkadot.cloud",children:"Polkadot Cloud"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tien/dot-console",children:"\u0110\xd3TConsole"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/KappaSigmaMu/ksm-app",children:"KappaSigmaMu Fratority"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/OAK-Foundation/quadratic-funding-webapp",children:"Quadratic Funding Webapp"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://gitlab.com/polkawatch/polkawatch",children:"Polkawatch"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/bytepayment/bytepay",children:"Bytepay"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Delmonicos/charging-management-platform",children:"charging-management-platform"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/TDSoftware/subidentity-webapp",children:"subidentity-webapp"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/paid-qa/",children:"OpenSquare Paid QA"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CrossChainLabs-DOT/dotpulse-api",children:"DotPulse"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bsn-si/rubeus-smartcontract",children:"Rubeus Keeper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/justmert/eco-flow-frontend",children:"Polkaflow"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/helikon-labs/chainviz",children:"ChainViz"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/fidi-tech/dotsight",children:"Dotsight"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://docs.sui.io/build/zk_login",children:"zkLogin"}),", Portfolio Viewer like Zapper or Zerion"]})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"tools-apis-and-languages",children:"Tools, APIs, and Languages"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Runtime/Parachain frameworks"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk",children:"Polkadot Blockchain SDK"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/gosemble",children:"Gosemble"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/subsembly",children:"Subsembly"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/parachain-utilities",children:"Parachain utilities"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gantree-io/gantree-core",children:"Gantree"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ideal-lab5",children:"Cryptex"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:["Tools to create parachains with other frameworks, like the ",(0,r.jsx)(e.a,{href:"https://github.com/cosmos/cosmos-sdk",children:"Cosmos SDK"})," or ",(0,r.jsx)(e.a,{href:"https://github.com/0xPolygon/cdk-validium-node",children:"Polygon CDK"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Client Libraries"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/polkadot-api/polkadot-api",children:"Polkadot-API - Typescript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tien/reactive-dot",children:"Reactive DOT - Typescript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/capi",children:"Capi - Typescript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kodadot/packages/tree/main/sub-api",children:"sub-api"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/centrifuge/go-substrate-rpc-client",children:"Go"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/polkadot_api_dotnet",children:".Net"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SubstrateGaming/Substrate.NET.API",children:".NET Standard 2.0"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain",children:"Substrate .NET Toolchain"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/polkadot_api_cpp",children:"C++"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/finoabanking/substrate-c-tool",children:"C"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/airalab/hs-web3",children:"Haskell"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/api",children:"Javascript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-api-sidecar",children:"Substrate API Sidecar - TypeScript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkascan/py-substrate-interface",children:"Python"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/emeraldpay/polkaj",children:"Java (+ Android)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/strategyobject/substrate-client-java",children:"Substrate Client Java"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/scs/substrate-api-client",children:"Rust SCS"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/subxt",children:"Rust Parity (subxt)"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/philoniare/subxtpy",children:"subxtpy"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/trevor-crypto",children:"Rust pdotc"})," ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/php-substrate-api",children:"PHP (gmajor-encrypt)"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/neha0921/substrate-interface-package",children:"PHP (neha0921)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/frontier",children:"RPC-Ethereum"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tesseract-one/Substrate.swift",children:"Swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NodleCode/substrate-client-kotlin",children:"Kotlin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/substrate-client-kotlin",children:"substrate-client-kotlin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/substrate-client-swift",children:"substrate-client-swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rankanizer/polkadart",children:"Dart"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polywrap/integrations",children:"Substrate Core Polywrapper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/substrate-sdk-ios",children:"Substrate SDK iOS"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/substrate-sdk-android",children:"Substrate SDK Android"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dedotdev/dedot",children:"Dedot - Typescript"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"RPC Gateway"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/subway",children:"Subway"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Substrate Contract clients"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/go-patract",children:"PatractGo"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Easy Runtime Development"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/hack-ink/subalfred",children:"Subalfred"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/kaichaosun/substrate-stencil",children:"substrate-stencil"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kaichaosun/play-substrate",children:"Play Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/substrate-developer-hub/substrate-node-template",children:"substrate-node-template"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-playground",children:"Substrate Playground"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/as-substrate-runtime",children:"AssemblyScript Runtime Generation"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/clearloop/sup",children:"Substrate Package Manager"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/subsembly",children:"Subsembly: Framework for developing AssemblyScript Substrate Runtimes"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bkchr/diener",children:"dependency diener"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"IDE Plugins"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/vscode-substrate",children:"Substrate Marketplace VS Code Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/everstake/vscode-plugin-substrate",children:"VS Code Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/everstake/atom-plugin-substrate",children:"Atom Code Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/zombienet-vscode-extension",children:"zombienet extension"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Runtime/Pallet Security"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/srlabs/substrate-runtime-fuzzer",children:"Substrate Runtime Fuzzer"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/shawntabrizi/substrate-toml-lint",children:"Substrate Toml Lint"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kframework/wasm-semantics",children:"K specifications"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSecurity/polpatrol",children:"PolPatrol - Polkadot Runtime Checker"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:["Automated Runtime checking tools, economic audit simulator such as ",(0,r.jsx)(e.a,{href:"https://gauntlet.network/",children:"gauntlet.network"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Smart Contract Languages"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"#ink-smart-contracts",children:"ink!"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ask-lang/ask",children:"Ask!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/slickup/subscript",children:"Subscript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hyperledger-labs/solang",children:"Solang"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/eigerco/pallet-move",children:"pallet-move"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/pontem-network/sp-move",children:"Move VM Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/neatcoin/neatcoin",children:"Move smart contract by Neatcoin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/pepyakin/substrate-seal-ebpf",children:"eBPF Contracts Hackathon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/koute/polkavm",children:"PolkaVM"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"Functional Programming Languages, other languages with developed toolchains"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Testing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-introspector",children:"Polkadot introspector"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/subdirectory/subshell",children:"Subshell"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polytope-labs/sc-simnode",children:"substrate-simnode"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/halva-suite/halva",children:"Halva"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/redspot",children:"Redspot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/mixbytes/tank",children:"MixBytes Tank"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NikVolf/sub-flood",children:"sub-flood"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-debug-kit",children:"Substrate debug-kit"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/JesseAbram/asset_cli_tool",children:"Asset CLI tool"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/JesseAbram/unfinished_testing_tool",children:"sub_crash"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chevdor/subwasm",children:"subwasm"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/ascjones/subsee",children:"subsee"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-lab",children:"polkadot-lab"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dwellir-public/rpc-perf/",children:"RPC-perf"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Static Analysis"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/KaiserKarel/substrace",children:"Substrace"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/simon-perriard/saft",children:"Static analyzer for Substrate FRAME's pallets"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CoinFabrik/scout",children:"CoinFabrik Scout"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Testnet"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/zombienet",children:"Zombienet"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/chopsticks",children:"Chopsticks"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-launch",children:"Polkadot Launch"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/koute/polkadot-starship",children:"polkadot-starship"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/maxsam4/fork-off-substrate",children:"Fork off Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/try-runtime-cli",children:"try-runtime-cli"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/parachain-launch",children:"Parachain Launch"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Zeeve-App/larch",children:"Larch Zombienet GUI"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Benchmarking"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/utils/frame/benchmarking-cli",children:"Benchmarking CLI"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-stps",children:"Polkadot sTPS"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/0xekez/clockchain",children:"Clockchain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/shawntabrizi/substrate-graph-benchmarks",children:"Substrate Graph Benchmarks"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking",children:"ink! & pallet benchmarking template"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/smart-bench",children:"smart-bench"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Blockchain Indexing Engine"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/subsquid/squid-sdk",children:"Squid SDK"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/hybrid-explorer/hybrid-indexer",children:"Hybrid Indexer"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-archive",children:"Substrate Archive"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/polkadot_psql_indexer",children:"PSQL Indexer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/playzero/substrate-graph",children:"Substrate Graph"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OnFinality-io/subql",children:"Subquery"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/p2p-org/polkadot-profit-transformer",children:"MBELT3"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/kodadot/stick",children:"stick"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Infra3-Network/hyperdot",children:"Hyperdot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Blockchain/Event Monitoring"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/guardian",children:"Web3 Guardian"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/HugoByte/aurras-event-manager",children:"Aurras Event Manager"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hicommonwealth/chain-events",children:"@commonwealth/chain-events"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/massbitchain",children:"Massbit"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kianenigma/polkadot-basic-notification",children:"Polkadot Basic Notifications"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sodazone/ocelloids",children:"Ocelloids"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/TrackingChains/TrackingChain",children:"Tracking Chain"})," \u26aa,"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Gaming"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/PolkadotPlay/Polkadot.Unity.SDK",children:"Polkadot SDK for Unity"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/dodorare/crossbow",children:"Crossbow"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://assetstore.unity.com/packages/decentralization/infrastructure/polkadot-sdk-for-unity-273535",children:"Unity Asset Store"}),", ",(0,r.jsx)(e.a,{href:"https://amethyst.rs/",children:"Amethyst"})," + ",(0,r.jsx)(e.a,{href:"https://substrate.dev/",children:"Substrate"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"No-code Platforms"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js",children:"EzCode's Polkadot.js plugin on Bubble.io"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Blackprint/nodes-polkadot.js",children:"Blackprint Visual Programming Polkadot.js module"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/subrelay/interface",children:"SubRelay"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/tien/dot-connect",children:"DOT Connect"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/TalismanSociety/talisman-connect",children:"Talisman Connect"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Koniverse/SubConnect",children:"SubWallet-SubConnect"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nova-wallet/metadata-portal",children:"Metadata Portal"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tesseract-one/Tesseract.rs",children:"Tesseract"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/walletconnect-v2-monorepo",children:"WalletConnect"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/BitGo/BitGoJS/tree/master",children:"BitGoJS"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"XCM"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/trappist",children:"Trappist"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Moonsong-Labs/xcm-tools",children:"XCM-tools"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/substrate-api-rpc",children:"XCM-tools Golang"})," \ud83d\udfe1,",(0,r.jsx)(e.a,{href:"https://github.com/paraspell/ui-v2",children:"ParaSpell"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/t3rn/xbi",children:"XBI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockcoders/xcm-sdk",children:"XCM TS/JS SDK"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/XcmSend/app",children:"XCMSend"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/sodazone/xcm-monitoring/",children:"XCM Monitoring Server"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/moonbeam-foundation/xcm-sdk",children:"Moonbeam Foundation XCM-SDK"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/asset-transfer-api",children:"asset-transfer-api"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/txwrapper-core",children:"txwrapper-core"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/open-web3.js",children:"open-web3 JS library"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CycanTech/GVM-Bridge",children:"VM-Bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/srtool",children:"srtool"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/chevdor/srtool-cli",children:"srtool-cli"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-tip-bot",children:"Substrate Tip Bot"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/syntifi/ori",children:"ORI (Onchain Risk Intelligence)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/albertov19/PolkaTools",children:"PolkaTools"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-scripts",children:"polkadot-scripts"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/virto-network/sube",children:"Sube"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/data-store-sidecar",children:"data-store-sidecar"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SugarFunge/sugarfunge-node",children:"SugarFunge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/second-state/substrate-wasmedge",children:"substrate-wasmedge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/eightfish-org/eightfish",children:"EightFish"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/sandoxio/sandox",children:"Sandox"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/darwinia-network/apk-verifier/",children:"APK verifier"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"ink-smart-contracts",children:"ink! Smart Contracts"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Core Libraries"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/ink",children:"ink!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/cargo-contract",children:"cargo-contract"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts",children:"pallet-contracts"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Local Nodes"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-contracts-node",children:"substrate-contracts-node"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/swankyhub/swanky-cli",children:"Swanky"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Smart Contract Development"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/drink",children:"DRink!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/contracts-ui",children:"contracts-ui"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Smart-Beaver",children:"SmartBeaver"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/h4nsu/openbrush-contracts",children:"OpenBrush"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/727-Ventures/sol2ink",children:"Sol2Ink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/protofire/polkadot-contract-wizard",children:"Polkadot Contract Wizard"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/ink-wrapper",children:"ink-wrapper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/ink-playground",children:"ink-playground"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockchain-it-hr/ink-remix-plugin",children:"ink! Remix Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/standardweb3/signac/",children:"Signac"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/avirajkhare00/ink-boxes/",children:"ink!-boxes"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/avirajkhare00/ink-wizard",children:"ink!-smart-contract-wizard"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Security & Testing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/ink-waterfall",children:"ink! Waterfall"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/web3labs/ink-verifier-image",children:"Verifier Image for ink!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Brushfam/patron-backend/",children:"Patron"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/inkscopexyz/inkscope-fuzzer",children:"Inkscope Fuzzer"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Frontend Development"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/scio-labs/inkathon",children:"ink!athon Boilerplate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/useink",children:"useink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/scio-labs/use-inkathon",children:"useInkathon"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/subsquid/squid-sdk/tree/master/substrate/ink-typegen",children:"ink-typegen"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Brushfam/typechain-polkadot",children:"Typechain Polkadot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"IDE Plugins"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ink-analyzer/ink-analyzer",children:"ink! Analyzer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Bridges"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/dantenetwork/protocol-stack-for-ink",children:"Dante Protocol"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DeFi"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/pendulum-chain/pendulum-ink-wrapper",children:"Pendulum-Ink-Wrapper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RottenKiwi/Panorama-Swap-INK-SC",children:"Panorama Swap"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Juminstock/ink_bank",children:"ink_bank"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/realnimish/polkadot-amm",children:"Polkadot AMM"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/veradefi/defi",children:"Vera"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nsure-tech/dot-contract",children:"Nsure Insurance"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/CycanTech/ELC",children:"Everlasting Cash"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Coinversation/coinpro",children:"Coinversation"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zenlinkpro/zenlink-dex-contract",children:"zenlink-dex-contract"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ReserveLabs/AlgoCash",children:"AlgoCash"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"New seigniorage-style stable coins"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Gaming"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/OpenEmojiBattler/open-emoji-battler",children:"Open Emoji Battler"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs",children:"NewOmega"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DAO"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/SyncraDAO/modular-dao",children:"SyncraDAO"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/subDAO-contracts",children:"subDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1",children:"RainbowDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Mangoboxlabs/Mangoboxink",children:"MangoBox"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Mangoboxlabs/MangoSaleV2",children:"MangoSale"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Identity/DID"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/TheDotflow",children:"Dotflow"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Oracles"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/diadata-org/dia-wasm-oracle",children:"DIA WASM Oracle"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Spam Protection"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/prosopo/captcha",children:"Prosopo"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Governance"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/AbaxFinance/Governance",children:"Abax Governance"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"NFT"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ArtZero-io/Contracts",children:"ArtZero"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/pnsproject/ink-aa",children:"Polkadot Smart Account"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/swankyhub/magink-dapp",children:"magink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/ink-test-contracts",children:"ink-test-contracts"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/agryaznov/candle-auction-ink",children:"Candle Auctions"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SubDAO-Network/polkasign-contract",children:"polkasign-contract"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bsn-si/ocex-cli",children:"OCEX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RoloiMoney/roloi-polkadot-w3f-grant",children:"Roloi"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadrys/openPayroll",children:"OpenPayroll"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/InkSmartContract/BlockchainFoodOrder",children:"BlockchainFoodOrder"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"chains-and-pallets",children:"Chains and Pallets"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Scalable Transactions"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/perun-network/perun-polkadot-pallet",children:"Perun channels"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/perun-network/perun-polkadot-demo",children:"CLI demo of Perun"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/Astar",children:"Astar"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/celer-network/cChannel-substrate",children:"Celer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/GunClear/Gunero",children:"Gunclear"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/BCS-Labs/tpscore-etl-system",children:"TPScore"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/auguth/pocs",children:"proof-of-contract-stake"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"roll-ups, DAG-based consensus mechanisms, side chains"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Bridges"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/interlay/interbtc",children:"interBTC"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/webb-tools/dkg-substrate",children:"DKG Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sygmaprotocol/sygma-substrate-pallets",children:"Sygma"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/bifrost-finance/bifrost-eos-relay",children:"EOS by Bifrost"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-bridge",children:"POA - Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/akropolisio/POC-polkadai-bridge",children:"Substrate - Ethereum DAI Bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-bridge-relay",children:"Substrate - Substrate Bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chainx-org/ChainX",children:"BTC by ChainX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ChorusOne/wormhole-bridge",children:"Cosmos-Substrate bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/octopus-network/substrate-ibc",children:"Substrate IBC Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Snowfork/polkadot-ethereum",children:"Polkadot Ethereum Bridge"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/darwinia-network/darwinia",children:"Darwinia"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/pendulum-chain/spacewalk",children:"Spacewalk: a Stellar bridge"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/filecoindot",children:"Filecoindot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/centrifuge/axelar-cgp-substrate/tree/main",children:"Axelar-Substrate"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"ZCash"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Privacy"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LayerXcom/zero-chain",children:"ZeroChain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/xx-labs/xxchain",children:"xx network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Phala-Network/phala-blockchain",children:"pLibra (Phala Network)"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/automata-network/automata",children:"Automata Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zero-network/zero",children:"Zero Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/appliedblockchain/silentdata-polkadot",children:"Silent Data"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/anoma/masp",children:"Multi-Asset Shielded Pool (MASP)"})," , ",(0,r.jsx)(e.a,{href:"https://arxiv.org/pdf/2009.01020.pdf",children:"Zkay"}),", ",(0,r.jsx)(e.a,{href:"https://eprint.iacr.org/2018/962.pdf",children:"Zexe"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"ZKP"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example",children:"ZeroPool"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/megaclite",children:"Megaclite"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/zkmega",children:"zkMega"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/plonk",children:"PLONK for Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/webb-tools/protocol-substrate",children:"Webb Anchor Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bright/zk-snarks-with-substrate/",children:"zk-SNARKs tutorial"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Zkvers/substrate-zk",children:"substrate-zk"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/hyperfridge-r0",children:"hyperfridge-r0"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Cyborg-Network/cyborg-parachain/tree/master",children:"Cyborg Network"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"TEE"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Acurast/acurast-core",children:"Acurast"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/integritee-network/worker",children:"Integritee"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/scs/substraTEE",children:"substraTEE"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/wetee-dao/chain",children:"WeTEE"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/keysafe-protocol/keysafe-app",children:"Keysafe Protocol"})," \u26aa"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DeFi"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/kapilsinha/privadex",children:"PrivaDEX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/uinb/fusotao",children:"Fusotao"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/reef-defi/reef-chain",children:"Reef"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Diora-Network/Diora",children:"Diora"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/pendulum-chain/pendulum",children:"Pendulum Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/compound-finance/gateway",children:"Compound Gateway"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/parallel-finance/parallel",children:"Parallel Finance"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/PINT",children:"PINT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/laminar-protocol/laminar-chain",children:"Laminar Chain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/Acala",children:"Acala"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/centrifuge/centrifuge-chain",children:"Centrifuge"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/stafiprotocol/stafi-node",children:"Stafi"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/y2labs-0sh/definex",children:"Definex"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OAXFoundation/parrot",children:"OAX Foundation"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/alexxuyang/substrate-dex",children:"Cybex"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zenlinkpro/pallet-zenlink",children:"Zenlink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/lsaether/pallet-swaps",children:"Swaps Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Polkadex-Substrate/Polkadex/tree/master",children:"Polkadex"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/subdarkdex/subdex-parachain",children:"SubDEX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/hack.HydraDX-node",children:"HydraDX"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/apopiak/stablecoin",children:"Substrate Stablecoin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/digitalnativeinc/standard-substrate",children:"Standard protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sora-xor/sora2-network",children:"Polkaswap"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/equilibrium-eosdt/equilibrium-curve-amm",children:"Curve AMM"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/konomi-network/cumulus/",children:"Konomi Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nutsfinance/stable-asset",children:"Stable Asset"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/atscaletech/libra",children:"Libra Payment"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/mangata-finance/mangata-node",children:"Mangata"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tidelabs/tidechain",children:"Tidechain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/Basilisk-node",children:"Basilisk"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/PolymeshAssociation/Polymesh",children:"Polymesh"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:["DEX with privacy and confidentiality features such as those found in a ",(0,r.jsx)(e.a,{href:"https://en.wikipedia.org/wiki/Dark_pool",children:"dark pool"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Smart contract chains"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/PureStake/moonbeam",children:"moonbeam"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Magport/Magnet",children:"Magnet"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/aleph-node",children:"Aleph-node"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/hicommonwealth/edgeware-node",children:"Edgeware"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ParaState/substrate-ssvm-node",children:"ParaState"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gear-tech/gear",children:"gear"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/cennznet/cennznet",children:"CENNZnet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/skyekiwi/skyekiwi-network",children:"SkyeKiwi"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OAK-Foundation/OAK-blockchain",children:"OAK-blockchain"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/web3labs/ice-substrate",children:"ICE Blockchain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OmniBTC/PSC",children:"Polkadot Smart Chain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/keep-starknet-strange/madara",children:"Madara - Cairo/Starknet"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{children:"smart contract chains with novel security approaches, smart contract chains based on existing toolchains"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Oracle"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/tellor-io/tellor-pallet",children:"Tellor"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle",children:"Laminar"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/smartcontractkit/chainlink-polkadot",children:"Chainlink-polkadot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/aresprotocols/ares",children:"Ares Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Kylin-Network/kylin-node",children:"Kylin Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/interlay/interbtc-clients/tree/master/oracle",children:"interbtc-clients oracle"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/webb-tools/anonima",children:"Anonima"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SaaS3-Foundation/dRuntime-fat",children:"SaaS3"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tellor-io/tellor-parachain-contracts",children:"Tellor"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/diadata-org/bridgestate-ocw",children:"Bridgestate Oracle"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Identity/DID"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/parami-foundation/parami-blockchain",children:"Parami"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/litentry/litentry-parachain",children:"Litentry"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/substrate-developer-hub/pallet-did",children:"pallet-did"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/prasad-kumkar/dot-id",children:"dot-id"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"IoT"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/NodleCode/chain",children:"Nodle"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/DataHighway-DHX/node",children:"MXC/DataHighway"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/peaqnetwork/peaq-network-node",children:"peaq-network-node"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Verifiable Claims"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/KILTprotocol/kilt-node",children:"KILT"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/docknetwork/dock-substrate",children:"Dock"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Supply chain"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/digicatapult/dscp-node",children:"DSCP Node"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Health care"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Music Industry"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Allfeat/Allfeat",children:"Allfeat Network"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Data Availability"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/availproject/avail",children:"Avail"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ZeroDAO/melodot",children:"Melodot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Social Networking"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/frequency-chain/frequency",children:"Frequency"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/social-network/blockchain",children:"Social Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dappforce/subsocial-parachain",children:"SubSocial"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ZeroDAO/ZeroDAO-node",children:"ZeroDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/myriadsocial/myriad-node",children:"Myriad Node"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/randombishop/wika_etl",children:"Wika Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/listenofficial/listen-parachain",children:"Listen"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tribal-protocol/tribal_contract",children:"Tribal Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rust-0x0/hex-space-protocol-substrate",children:"Five Degrees on Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/acuity-social/acuity-substrate",children:"Acuity Social"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"Private instant messenger that uses on-chain identity"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Governance/DAO"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/aisland-dao/aisland-node/tree/main",children:"Aisland Node"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hashed-io/hashed-substrate",children:"Hashed Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sunshine-protocol/sunshine-bounty",children:"Sunshine DAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NucleiStudio/governance-os",children:"Governance OS"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/idavollnetwork/idavoll",children:"Idavoll Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DoraFactory/Substrate-Moloch-V2",children:"Substrate Moloch"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Qrucial/QRUCIAL-DAO",children:"QRUCIAL-DAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sctllabs/societal-node",children:"Societal"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/daos-org/daos",children:"DAOs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/amiyatulu/shivarthu/",children:"Shivarthu"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/faterium",children:"Faterium"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/decentration/apps",children:"Supersig"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/deep-ink-ventures/genesis-dao-node",children:"GenesisDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dao-entrance/dao-entrance-node",children:"DAO Entrance"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/liberland/liberland_substrate",children:"Liberland"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/consul/consul",children:"Consul"})," - Open Government and E-Participation Web Software"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Prediction Markets and Futarchy"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/zeitgeistpm/zeitgeist",children:"Zeitgeist"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/XPredictMarket/NodePredict",children:"X Predict Market"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Messaging"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/validitylabs/HOPR-PL-Substrate",children:"HOPR"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chainify/nolik",children:"Nolik"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Uke-Messaging/uke-pallet",children:"Uke"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Belsoft-rs/diffychat-pallet",children:"Diffy Chat"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/fennelLabs/Fennel-Protocol",children:"Fennel Protocol"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"File Storage, Cloud"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/dappforce/subsocial-offchain",children:"Subsocial-Offchain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/playproject-io/datdot",children:"DatDot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/crustio/crust",children:"Crust Network"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/rs-ipfs/offchain-ipfs-manual",children:"offchain::ipfs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/canyon-network/canyon",children:"Canyon Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Cumulus2021/cess",children:"CESS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/cess-proving-system",children:"CESS Proving Subsystem"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/ideal-lab5/iris",children:"Iris"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/fmd-cess",children:"fmd-cess"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw",children:"IPFS Frame V3"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/threefoldtech/tfchain",children:"Threefold Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Apron-Network/apron-node",children:"Apron"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/TDSoftware/substrate-ipfs",children:"IPFS Utilities"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://gitlab.com/dinfra/dinfra",children:"DINFRA"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Name Service"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/xaya/substrate-names",children:"Substrate Names"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hskang9/substrate-name-service",children:"ENS on Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/pnsproject/pns-pallets",children:"PNS-Pallets"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/HeisenbergLin22/Faceless_milestone2_delivery",children:"Faceless"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ff13dfly/Anchor",children:"Anchor"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Gaming"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/bit-country/Bit-Country-Blockchain",children:"Bit.country"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SubGame-Network/subgame-network",children:"SubGame"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/playzero/subzero",children:"subzero"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/web3gamesofficial/web3games-blockchain",children:"Web3Games"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ajuna-network/ajuna-pallets",children:"Ajuna Pallets"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/cryptoviet/gafi",children:"Gafi Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://gitlab.com/asylum-space/asylum-item-nft",children:"Asylum"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/3Dpass/3DP",children:"3DPass"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/polketio/toearnfun_flutter_app",children:"Polket"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Computation/AI"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Deitos-Network/deitos-ip",children:"Deitos Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DeepBrainChain/DeepBrainChain-MainChain",children:"DeepBrain Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/anudit/cerebrum",children:"AI Infrastructure on Blockchain"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Enable specific use-cases"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/deep-ink-ventures/pallet_hookpoints",children:"pallet-hookpoints"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/airalab/substrate-node-robonomics",children:"Robonomics"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/UniversalDot/pallets",children:"UniversalDOT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/EvercityEcosystem/evercity-chain",children:"Evercity Sustainable Finance Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/logion-network/logion-node",children:"logion"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Me-Protocol/rusty-protocol-v0.1/",children:"Me Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/QSTN-US/Polkadot-QSTN-v1/",children:"QSTN"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/subcoin-project/subcoin",children:"Subcoin"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"NFT"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/capsule-corp-ternoa/chain",children:"ternoa"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/danforbes/pallet-nft",children:"FRAME Pallet: NFTs for Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/UniqueNetwork/unique-chain",children:"Unique NFT Parachain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets",children:"DNFT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rmrk-team/rmrk-substrate",children:"RMRK-Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Popular-Coding/nt-nft",children:"NT-NFTs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/GreenLemonProtocol/dksap-polkadot",children:"Green Lemon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/Basilisk-node",children:"Basilisk"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Randomness"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon",children:"DKG and Randomness Beacon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/random-meat/drand-substrate-client",children:"drand-substrate-client"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Licensing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/anagolay/anagolay-chain",children:"Anagolay Network"})," ","\u2754"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Banking Integration"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/element36-io/ebics-java-service",children:"FIAT on-off-ramp"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Crowdfunding"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ImbueNetwork/imbue",children:"Imbue Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zhangjiannan/QFgrant",children:"Quadratic Funding pallet by Dora"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OAK-Foundation/quadratic-funding-pallet/tree/master",children:"Quadratic Funding pallet by OAK"})," \u26aa"]}),(0,r.jsx)(e.td,{children:(0,r.jsx)(e.a,{href:"https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413",children:"Minimum Anti-Collusion Infrastructure (MACI)"})})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Collection of Pallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/open-runtime-module-library",children:"Substrate Open Runtime Module Library"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/warehouse",children:"warehouse"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/InvArch/InvArch-Frames",children:"InvArch FRAME Pallet Library"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Marketplaces"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/WowLabz/dot-marketplace-v2/tree/Phase3_Milestone3",children:"Dot Marketplace"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace",children:"Gated Marketplace"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Popular-Coding/ventur",children:"Ventur"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RELAI-Network/futur-protocol",children:"Futur Protocol"})," ","\u2754"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Carbon Credits"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/bitgreen/bitg-node",children:"BitGreen"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/EvercityEcosystem/carbon-assets",children:"Carbon Assets Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SequesterChain/pallets",children:"Sequester Pallets"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"UTXO"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Off-Narrative-Labs/Tuxedo",children:"Tuxedo"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Moonsong-Labs/moonkit",children:"Moonkit"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/gautamdhameja/substrate-account-filter",children:"Substrate Account Filter"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opentensor/subtensor",children:"Subtensor"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/AdMetaNetwork/admeta",children:"AdMeta"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chocolatenetwork/chocolate-node",children:"Chocolate Node"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/virto-network/virto-node",children:"Virto Network"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/gautamdhameja/substrate-validator-set",children:"Substrate Validator Set"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DEIPworld/deip-node",children:"DEIP"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/debionetwork/debio-node",children:"DeBio"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/mathwallet/MathChain",children:"MathChain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/encointer/encointer-node",children:"encointer"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/grasslandnetwork/substrate_node",children:"Grassland"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rusty-crewmates/substrate-tutorials",children:"Substrate-Tutorials"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Fair-Squares/fair-squares",children:"Fair Squares"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/totem-tech/totem",children:"Totem Live Accounting"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/herou/EscrowPallet",children:"Escrow Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NexTokenTech/TREX",children:"TREX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/relationlabs/Relation-Graph",children:"Relation Graph"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gertt/Invoice",children:"Decentralized Invoice"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/redstone-network/redstone-node",children:"Redstone Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/WunderbarNetwork/access-control",children:"Access Control Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/web3-grant",children:"Omniverse DLT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polytope-labs/substrate-ismp",children:"ISMP"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/xcmp_prototype_playground",children:"XCMP"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dhiway/cord",children:"CORD Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/educhain",children:"Educhain"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"Decentralized review/reputation system"})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"host",children:"Host"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Rust"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate",children:"Substrate"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus",children:"Cumulus"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"C++"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/kagome",children:"Kagome"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/mayon",children:"Mayon"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Go"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/gossamer",children:"Gossamer"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Java"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/Fruzhin",children:"Fruzhin"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/java-host-research",children:"Java Host Research"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"AssemblyScript"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Light Client"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/smol-dot/smoldot",children:"smoldot"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-connect",children:"Substrate Connect"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/eqlabs/polkadot-light-client",children:"C++ Polkadot Light Client"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Testing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/polkadot-conformance",children:"Polkadot Conformance"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sigp/polkafuzz",children:"Polkafuzz"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"network-maintenance-tools",children:"Network Maintenance Tools"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Secure validator setup"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/polkachu/polkadot-validator",children:"Polkadot Validation Node Ansible Setup"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-validator-setup",children:"W3F Polkadot Validator Setup"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Nexus2k/polkadot-ansible",children:"polkadot-ansible"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"High availability setup"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/luguslabs/archipel",children:"Archipel"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/protofire/polkadot-failover-mechanism",children:"Polkadot Failover Mechanism"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Datagen-Project/Datagen-Substrate-Grant",children:"Datagen"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bright/substrate-raft",children:"High Availability Validator Setup"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Load Balanced Endpoints"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/insight-w3f/terragrunt-polkadot",children:"terragrunt-polkadot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sudoblockio/substrate-meta",children:"Geometry Labs' Substrate Meta repo"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Deployment Tools"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Blockdaemon/bpm-sdk",children:"Polkadot Package Manager"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/akropolisio/polkahub-monorepo",children:"PolkaHub"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom",children:"Avado"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-deployer",children:"Polkadot Deployer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/for-parity-with-love/unified-collator-node-deployment",children:"Unified Collator Deployment"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator monitoring"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/turboflakes/one-t",children:"ONE-T"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/helikon-labs/subvt-backend",children:"SubVT"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/SimplyVC/panic",children:"P.A.N.I.C."})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/polkalert",children:"Polkalert"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3",children:"B-Harvest"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/stakezone/nmonpolkadot",children:"nmonpolkadot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ironoa/polkadot-k8s-monitor",children:"Polkadot-K8s-Monitor"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-watcher",children:"Polkadot-Watcher"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot",children:"1KV Telegram Bot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator payout management"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Colm3na/substrate-auto-payout",children:"Substrate validator auto payout"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-payouts",children:"Polkadot Payouts"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/emostov/staking-payouts",children:"staking-payouts CLI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/stakelink/substrate-payctl",children:"Payctl"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/turboflakes/crunch",children:"crunch"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Staking Miner"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/staking-miner-v2",children:"Staking Miner v2"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Nominator Tools"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/miepsik/validators_selection",children:"Validator Selection"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/filippoweb3/polkanalyzer",children:"Polkanalyzer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/filippoweb3/polkanalyzer-app",children:"Polkanalyzer-app"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"signatures",children:"Signatures"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"SR25519"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/w3f/schnorrkel",children:"rust"})," \u26aa(contains partial bindings for C, JavaScript, and Python), ",(0,r.jsx)(e.a,{href:"https://github.com/gautamdhameja/sr25519-dotnet",children:".Net bindings"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/sr25519",children:"C"})," \u26aa",(0,r.jsx)(e.em,{children:"(old)"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/TerenceGe/sr25519-donna",children:"C"})," \u26aa",(0,r.jsx)(e.em,{children:"(new)"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/soramitsu-sr25519-crust",children:"C/C++"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/sr25519_dotnet",children:"C#"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/go-schnorrkel",children:"Go"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/debuggor/schnorrkel-java",children:"java"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/sr25519-bindings",children:"PHP"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Signature Aggregation"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/w3f/apk-proofs",children:"apk-proofs"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Distributed key generation (DKG) or management"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/isislovecruft/frost-dalek",children:"keygen.rs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/sword",children:"Secure Wallet Origin Distribution (SWORD)"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator HSMs"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Zondax/buildroot-zondax",children:"Zondax Remote Signer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"MPC"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/orochi-network/orochi-network.github.io",children:"Orochi Network"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"consensus",children:"Consensus"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"PoC"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/subspace/substrate",children:"Spartan"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"PoW"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/pow",children:"PoW consensus for Substrate"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/kulupu/kulupu/tree/master/pow",children:"RandomX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow",children:"Sha3 PoW"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Block production"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/babe",children:"BABE"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/aura",children:"Aura"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Finality"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/grandpa",children:"GRANDPA"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/AlephBFT",children:"AlephBFT"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/PureStake/nimbus",children:"Nimbus: Upgradeable consensus framework"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"networking",children:"Networking"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"SCALE Codec"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-scale-codec",children:"Rust"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-scale-codec-ts",children:"TypeScript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkascan/py-scale-codec",children:"Python"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/",children:"Golang Chainsafe"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/scale.go",children:"Golang Itering"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/MatthewDarnell/cScale",children:"C"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/scale-codec-cpp",children:"C++"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/api",children:"JavaScript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/as-scale-codec",children:"AssemblyScript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec",children:"Haskell"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/emeraldpay/polkaj",children:"Java"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/scale.rb",children:"Ruby"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nbltrust/dart-scale-codec",children:"Dart"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tesseract-one/swift-scale-codec",children:"Swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/scale-codec-swift",children:"scale-codec-swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/scale-codec-kotlin",children:"scale-codec-kotlin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/php-scale-codec",children:"PHP"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/scale-codec-js-library",children:"JavaScript by Soramitsu"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/scale-codec-comparator",children:"Scale Codec Comparator"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/darwinia-network/darwinia-messages-sol/blob/master/contracts/utils/contracts/ScaleCodec.sol",children:"ScaleCodec.sol by Darwinia"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Snowfork/snowbridge/blob/main/core/packages/contracts/contracts/ScaleCodec.sol",children:"ScaleCodec.sol by Snowfork"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/arijitAD/dotscale",children:"Dotscale"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Networking Framework"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/libp2p/libp2p",children:"libp2p"})," \ud83d\udfe1",(0,r.jsx)(e.a,{href:"https://github.com/algorealmInc/SwarmNL",children:"SwarmNL"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DHT Crawler"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/atredispartners/dht-crawler-polkadot",children:"Go"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/emeraldpay/polkabot",children:"Kotlin"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"RPC Tor-like access"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Evanesco-Labs/WhiteNoise.rs",children:"WhiteNoise"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"primitives",children:"Primitives"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Storage"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/frisitano/merkle-tree-db",children:"Merkle Tree DB"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Merkle Proofs"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/polytope-labs/solidity-merkle-trees",children:"Solidity Trie Verifier"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h2,{id:"contributing",children:"Contributing"}),"\n",(0,r.jsx)(e.p,{children:"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."}),"\n",(0,r.jsx)(e.p,{children:":heavy_exclamation_mark: All technologies listed above need to be open-source. Ideally, the links\nlead directly to the code."}),"\n",(0,r.jsx)(e.p,{children:(0,r.jsxs)(e.em,{children:["Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you\nmay ",(0,r.jsx)(e.a,{href:"https://github.com/join",children:"sign up for free"}),"."]})})]})}function d(t={}){const{wrapper:e}={...(0,h.R)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(l,{...t})}):l(t)}},28453:(t,e,s)=>{s.d(e,{R:()=>a,x:()=>n});var r=s(96540);const h={},i=r.createContext(h);function a(t){const e=r.useContext(i);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function n(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(h):t.components||h:a(t.components),r.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/ccc1222e.74657bed.js b/assets/js/ccc1222e.74657bed.js deleted file mode 100644 index d8ce6c95fd..0000000000 --- a/assets/js/ccc1222e.74657bed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5702],{47765:(t,e,s)=>{s.r(e),s.d(e,{assets:()=>c,contentTitle:()=>a,default:()=>d,frontMatter:()=>i,metadata:()=>n,toc:()=>o});var r=s(74848),h=s(28453);const i={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"},a="Open Source Polkadot Stack ",n={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,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1727681023e3,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"}},c={},o=[{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}];function l(t){const e={a:"a",admonition:"admonition",code:"code",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,h.R)(),...t.components};return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(e.header,{children:(0,r.jsx)(e.h1,{id:"open-source-polkadot-stack-",children:"Open Source Polkadot Stack "})}),"\n",(0,r.jsx)(e.admonition,{title:"Do your research before using open-source tools",type:"caution",children:(0,r.jsxs)(e.p,{children:["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,r.jsx)(e.a,{href:"/docs/how-to-dyor",children:"do your research"})," and be aware of ",(0,r.jsx)(e.a,{href:"/docs/learn-scams",children:"scams"}),"."]})}),"\n",(0,r.jsx)(e.p,{children:"This page aims to provide an overview of the open-source Polkadot Tech Stack."}),"\n",(0,r.jsxs)(e.p,{children:["This is a living document, and we rely on everyone to contribute and help maintain\nit. ",(0,r.jsx)(e.a,{href:"#contributing",children:(0,r.jsx)(e.strong,{children:"Please feel free to make edits and additions via pull requests"})}),". We\napologize if we missed your project!"]}),"\n",(0,r.jsx)(e.hr,{}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#about",children:"About"})}),"\n",(0,r.jsxs)(e.li,{children:[(0,r.jsx)(e.a,{href:"#layers-of-polkadot-stack",children:"Layers of Polkadot Stack"}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#wallets",children:"Wallets"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#user-interface",children:"User Interface"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#tools-apis-and-languages",children:"Tools, APIs, and Languages"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#ink-smart-contracts",children:"ink! Smart Contracts"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#chains-and-pallets",children:"Chains and Pallets"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#host",children:"Host"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#network-maintenance-tools",children:"Network Maintenance Tools"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#signatures",children:"Signatures"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#consensus",children:"Consensus"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#networking",children:"Networking"})}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#primitives",children:"Primitives"})}),"\n"]}),"\n"]}),"\n",(0,r.jsx)(e.li,{children:(0,r.jsx)(e.a,{href:"#contributing",children:"Contributing"})}),"\n"]}),"\n",(0,r.jsx)(e.h2,{id:"about",children:"About"}),"\n",(0,r.jsxs)(e.p,{children:["The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the ",(0,r.jsx)(e.strong,{children:"open-source"}),"\ntechnologies contributing to and relying on ",(0,r.jsx)(e.a,{href:"https://polkadot.network/",children:"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."]}),"\n",(0,r.jsx)(e.pre,{children:(0,r.jsx)(e.code,{children:"|------|--------|------------|\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"})}),"\n",(0,r.jsx)(e.h2,{id:"layers-of-polkadot-stack",children:"Layers of Polkadot Stack"}),"\n",(0,r.jsx)(e.p,{children:"In the below sections, you can find a list of different layers of the Polkadot Stack."}),"\n",(0,r.jsxs)(e.p,{children:[(0,r.jsx)(e.strong,{children:"Maintenance Status"}),":"]}),"\n",(0,r.jsxs)(e.ul,{children:["\n",(0,r.jsx)(e.li,{children:"\ud83d\udfe2 Actively maintained"}),"\n",(0,r.jsx)(e.li,{children:"\ud83d\udfe1 Stale (no activity on the main branch for one month)"}),"\n",(0,r.jsx)(e.li,{children:"\u26aa Unmaintained (no activity on the main branch for more than three months)"}),"\n"]}),"\n",(0,r.jsx)(e.h3,{id:"wallets",children:"Wallets"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Web Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/Multix",children:"Multix"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkasafe/polkasafe-ui",children:"Polkasafe"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/apps",children:"polkadot-js/apps"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/TalismanSociety/talisman-web",children:"Talisman Web Application"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/enkryptcom/mydotwallet",children:"mydotwallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dappforce/subid",children:"Sub ID"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Primis-Labs/client",children:"Primis"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3finance/sakura",children:"Sakura"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/Web3Box-apps",children:"Web3Box"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CoongCrafts/coong-wallet",children:"Coong Wallet"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/subscan-multisig-react",children:"Subscan Multisig UI - React"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/subscan-multisig-ui",children:"Subscan Multisig UI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DoraFactory/dorafactory-multisig",children:"Dorafactory-Multisig"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/capi-multisig-app",children:"Capi Multisig App"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:["User-friendly Wallet based on the ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/recovery",children:"Recovery Pallet"}),", Web wallets focused on user-onboarding (e.g. using ",(0,r.jsx)(e.a,{href:"https://github.com/near/near-wallet",children:"localStorage"}),")"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Desktop Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/nova-spektr",children:"nova-spektr"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/omni-desktop-prototype",children:"Omni desktop"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"Enterprise Wallets"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Browser Extensions"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/TalismanSociety/talisman",children:"Talisman-Extension"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Koniverse/SubWallet-Extension",children:"SubWallet-Extension"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/enkryptcom/enKrypt",children:"Enkrypt"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/extension",children:"Polkadot-JS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/PolkaGate/polkagate-extension",children:"PolkaGate"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/trustwallet",children:"Trust Wallet Extension"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainBridgeNetworkTeam/Doter",children:"Doter"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/GetSpeckle/speckle-browser-extension",children:"Speckle OS"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockcoders/kuma-wallet",children:"Kuma Cross-chain Wallet"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"Sign-in with your Polkadot, Kusama, etc. account."})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Mobile Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/nova-wallet-ios",children:"Nova Wallet iOS"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/nova-wallet-android",children:"Nova Wallet Android"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-signer",children:"Polkadot Vault"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/fearless-Android",children:"Fearless Wallet Android"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/fearless-iOS",children:"Fearless Wallet iOS"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/trustwallet",children:"Trust Wallet"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Koniverse/SubWallet-Mobile",children:"SubWallet-Mobile"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Kalapaja/kampela-firmware",children:"Kampela"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/airgap-it/airgap-wallet",children:"AirGap"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Interstellar-Network/wallet-app",children:"Interstellar Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/luniehq/lunie",children:"Lunie"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkawallet-io/polkawallet-flutter",children:"Polkawallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/consenlabs/token-core",children:"imToken"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/stylo-app/stylo",children:"Stylo"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/fractapp/fractapp/",children:"Fractapp"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hypha-dao/hashed-wallet",children:"Hashed Wallet"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Burner Wallets/Faucet/Gifts"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/hamidra/dotdrop",children:"dotdrop"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/vue-polkadot/apps",children:"KodaDot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/astar-faucet-bot",children:"Astar Faucet Bot"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/karooolis/sybil-resistant-substrate-faucet",children:"Generic sybil-resistant faucet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/StringNick/sybil-resistant-chat-bot-substrate-faucet",children:"sybil-resistant Chat Bot Faucet"})," ","\u2754"]}),(0,r.jsx)(e.td,{children:"Faucet (a sybil-resistant way to receive free tokens)"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Wallet Plugins"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/metamask-snap-polkadot",children:"Metamask-Snap by Chainsafe"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"CLI Wallet"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/yxf/subwallet",children:"Subwallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/canontech/proxy-hot-wallet",children:"Proxy-hot-wallet"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Hardware Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ZondaX/ledger-polkadot",children:"Ledger Polkadot"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/ledger-kusama",children:"Ledger Kusama"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/ledger-statemint",children:"Ledger Statemint"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/ledger-statemine",children:"Ledger Statemine"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"Trezor"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"OAuth2-compatible Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/singkeo/dot-login",children:"DOT Login"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"user-interface",children:"User Interface"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Block Explorers"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/topmonks/calamar",children:"Calamar"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkascan/explorer-api",children:"Polkascan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Colm3na/polkastats-backend",children:"Polkastats"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/subscan",children:"Subscan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/statescan-v2",children:"Statescan"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/edgeware-builders/edgscan",children:"Edgscan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/web3labs/epirus-substrate",children:"Sirato"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockcoders/ink-substrate-explorer-api",children:"ink! Explorer API"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/substats",children:"Substats"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hybrid-explorer/hybrid-dapp",children:"Hybrid Block Explorer"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"Mempool focused explorer (including parachain transaction)"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator Dashboards"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-telemetry",children:"Polkadot Telemetry"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/hashquark-io/polkacube-frontend",children:"Polkacube"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/buidl-labs/YieldScan",children:"YieldScan"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot",children:"Hubble"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ArthurHoeke/cyclops",children:"Cyclops"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/web3go-xyz/web3go-xyz-v2",children:"Web3Go"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/MathCryptoDoc/insights-1kv",children:"1kv insights"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Node Explorers"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/protos-research/polkadot-node-explorer",children:"Polkadot Node Explorer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"NFT Explorer"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/kodadot/nft-gallery",children:"NFT Explorer for Kusama & Polkadot"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Governance Dashboards"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/governance-ui",children:"Polkadot Delegation Dashboard"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/premiurly/polkassembly",children:"Polkassembly"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/dotreasury",children:"dotreasury"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/bright/bright-tresury",children:"Bright Treasury"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/collaboration",children:"OpenSquare offchain voting"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/wpank/open-gov-insights",children:"OpenGov Insights"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/stake-plus/treasury-tracker",children:"Treasury Tracker"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/joepetrowski/opengov-cli",children:"OpenGov CLI"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:["UI for the Kusama and/or Polkadot treasury (see ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate/pull/5715",children:"bounty module"}),"), UI for Parachain Lease Offering (PLO)"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Staking"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/w3f/staking-rewards-collector",children:"Staking Rewards Collector"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/jackson-harris-iii/staking-rewards-viewer",children:"Staking Rewards Viewer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/cryptolab-network/polkadot-staking-site",children:"Polkadot Staking Site"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-staking-dashboard",children:"Polkadot Staking Dashboard"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/James-Sangalli/dot-validator-selector",children:"Polkadot/Kusama Validator Selector"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/James-Sangalli/dot-staking-income",children:"Staking Income CSV Generator"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Bridge UI"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-bridges-ui",children:"Parity Bridges UI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nutbox-dao/donut-interface",children:"Donut Interface (Steem - Dot)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RostislavLitovkin/PlutonicationServer",children:"Plutonication"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Parachain/Crowdloan"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/jhonalino/parachains.network",children:"Parachains.Network"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/CrommVardek/polk-auction-ui",children:"PolkAuction"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/10clouds/crowdloan-template",children:"Crowdloan Front End Template"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hack-ink/slothunter/",children:"Slothunter"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Identicon"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://polkadot.cloud/polkicon",children:"Polkicon"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/RidOne-technologies/polkadot-web-identicon",children:"PolkadotWebIdenticon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RidOne-technologies/polkadot-angular-identicon",children:"Polkadot Angular IdentIcon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Noc2/Bird-Identicon",children:"Bird Identicon"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Coretime"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LasticXYZ/LasticUI",children:"Lastic"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/RegionX-Labs/RegionX-Node",children:"RegionX"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://polkadot.cloud",children:"Polkadot Cloud"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tien/dot-console",children:"\u0110\xd3TConsole"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/KappaSigmaMu/ksm-app",children:"KappaSigmaMu Fratority"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/OAK-Foundation/quadratic-funding-webapp",children:"Quadratic Funding Webapp"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://gitlab.com/polkawatch/polkawatch",children:"Polkawatch"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/bytepayment/bytepay",children:"Bytepay"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Delmonicos/charging-management-platform",children:"charging-management-platform"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/TDSoftware/subidentity-webapp",children:"subidentity-webapp"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opensquare-network/paid-qa/",children:"OpenSquare Paid QA"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CrossChainLabs-DOT/dotpulse-api",children:"DotPulse"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bsn-si/rubeus-smartcontract",children:"Rubeus Keeper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/justmert/eco-flow-frontend",children:"Polkaflow"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/helikon-labs/chainviz",children:"ChainViz"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/fidi-tech/dotsight",children:"Dotsight"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://docs.sui.io/build/zk_login",children:"zkLogin"}),", Portfolio Viewer like Zapper or Zerion"]})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"tools-apis-and-languages",children:"Tools, APIs, and Languages"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Runtime/Parachain frameworks"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk",children:"Polkadot Blockchain SDK"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/gosemble",children:"Gosemble"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/subsembly",children:"Subsembly"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/parachain-utilities",children:"Parachain utilities"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gantree-io/gantree-core",children:"Gantree"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ideal-lab5",children:"Cryptex"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:["Tools to create parachains with other frameworks, like the ",(0,r.jsx)(e.a,{href:"https://github.com/cosmos/cosmos-sdk",children:"Cosmos SDK"})," or ",(0,r.jsx)(e.a,{href:"https://github.com/0xPolygon/cdk-validium-node",children:"Polygon CDK"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Client Libraries"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/polkadot-api/polkadot-api",children:"Polkadot-API - Typescript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tien/reactive-dot",children:"Reactive DOT - Typescript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/capi",children:"Capi - Typescript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kodadot/packages/tree/main/sub-api",children:"sub-api"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/centrifuge/go-substrate-rpc-client",children:"Go"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/polkadot_api_dotnet",children:".Net"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SubstrateGaming/Substrate.NET.API",children:".NET Standard 2.0"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain",children:"Substrate .NET Toolchain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/polkadot_api_cpp",children:"C++"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/finoabanking/substrate-c-tool",children:"C"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/airalab/hs-web3",children:"Haskell"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/api",children:"Javascript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-api-sidecar",children:"Substrate API Sidecar - TypeScript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polkascan/py-substrate-interface",children:"Python"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/emeraldpay/polkaj",children:"Java (+ Android)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/strategyobject/substrate-client-java",children:"Substrate Client Java"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/scs/substrate-api-client",children:"Rust SCS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/subxt",children:"Rust Parity (subxt)"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/philoniare/subxtpy",children:"subxtpy"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/trevor-crypto",children:"Rust pdotc"})," ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/php-substrate-api",children:"PHP (gmajor-encrypt)"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/neha0921/substrate-interface-package",children:"PHP (neha0921)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/frontier",children:"RPC-Ethereum"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tesseract-one/Substrate.swift",children:"Swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NodleCode/substrate-client-kotlin",children:"Kotlin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/substrate-client-kotlin",children:"substrate-client-kotlin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/substrate-client-swift",children:"substrate-client-swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rankanizer/polkadart",children:"Dart"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/polywrap/integrations",children:"Substrate Core Polywrapper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/substrate-sdk-ios",children:"Substrate SDK iOS"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/novasamatech/substrate-sdk-android",children:"Substrate SDK Android"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dedotdev/dedot",children:"Dedot - Typescript"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"RPC Gateway"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/subway",children:"Subway"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Substrate Contract clients"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/go-patract",children:"PatractGo"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Easy Runtime Development"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/hack-ink/subalfred",children:"Subalfred"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/kaichaosun/substrate-stencil",children:"substrate-stencil"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kaichaosun/play-substrate",children:"Play Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/substrate-developer-hub/substrate-node-template",children:"substrate-node-template"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-playground",children:"Substrate Playground"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/as-substrate-runtime",children:"AssemblyScript Runtime Generation"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/clearloop/sup",children:"Substrate Package Manager"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/subsembly",children:"Subsembly: Framework for developing AssemblyScript Substrate Runtimes"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bkchr/diener",children:"dependency diener"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"IDE Plugins"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/vscode-substrate",children:"Substrate Marketplace VS Code Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/everstake/vscode-plugin-substrate",children:"VS Code Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/everstake/atom-plugin-substrate",children:"Atom Code Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/zombienet-vscode-extension",children:"zombienet extension"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Runtime/Pallet Security"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/srlabs/substrate-runtime-fuzzer",children:"Substrate Runtime Fuzzer"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/shawntabrizi/substrate-toml-lint",children:"Substrate Toml Lint"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kframework/wasm-semantics",children:"K specifications"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSecurity/polpatrol",children:"PolPatrol - Polkadot Runtime Checker"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:["Automated Runtime checking tools, economic audit simulator such as ",(0,r.jsx)(e.a,{href:"https://gauntlet.network/",children:"gauntlet.network"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Smart Contract Languages"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"#ink-smart-contracts",children:"ink!"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ask-lang/ask",children:"Ask!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/slickup/subscript",children:"Subscript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hyperledger-labs/solang",children:"Solang"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/eigerco/pallet-move",children:"pallet-move"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/pontem-network/sp-move",children:"Move VM Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/neatcoin/neatcoin",children:"Move smart contract by Neatcoin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/pepyakin/substrate-seal-ebpf",children:"eBPF Contracts Hackathon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/koute/polkavm",children:"PolkaVM"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{children:"Functional Programming Languages, other languages with developed toolchains"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Testing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-introspector",children:"Polkadot introspector"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/subdirectory/subshell",children:"Subshell"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polytope-labs/sc-simnode",children:"substrate-simnode"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/halva-suite/halva",children:"Halva"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/redspot",children:"Redspot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/mixbytes/tank",children:"MixBytes Tank"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NikVolf/sub-flood",children:"sub-flood"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-debug-kit",children:"Substrate debug-kit"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/JesseAbram/asset_cli_tool",children:"Asset CLI tool"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/JesseAbram/unfinished_testing_tool",children:"sub_crash"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chevdor/subwasm",children:"subwasm"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ascjones/subsee",children:"subsee"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-lab",children:"polkadot-lab"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dwellir-public/rpc-perf/",children:"RPC-perf"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Static Analysis"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/KaiserKarel/substrace",children:"Substrace"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/simon-perriard/saft",children:"Static analyzer for Substrate FRAME's pallets"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CoinFabrik/scout",children:"CoinFabrik Scout"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Testnet"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/zombienet",children:"Zombienet"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/chopsticks",children:"Chopsticks"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-launch",children:"Polkadot Launch"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/koute/polkadot-starship",children:"polkadot-starship"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/maxsam4/fork-off-substrate",children:"Fork off Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/try-runtime-cli",children:"try-runtime-cli"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/parachain-launch",children:"Parachain Launch"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Zeeve-App/larch",children:"Larch Zombienet GUI"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Benchmarking"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/utils/frame/benchmarking-cli",children:"Benchmarking CLI"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-stps",children:"Polkadot sTPS"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/0xekez/clockchain",children:"Clockchain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/shawntabrizi/substrate-graph-benchmarks",children:"Substrate Graph Benchmarks"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking",children:"ink! & pallet benchmarking template"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/smart-bench",children:"smart-bench"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Blockchain Indexing Engine"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/subsquid/squid-sdk",children:"Squid SDK"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/hybrid-explorer/hybrid-indexer",children:"Hybrid Indexer"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-archive",children:"Substrate Archive"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/polkadot_psql_indexer",children:"PSQL Indexer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/playzero/substrate-graph",children:"Substrate Graph"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OnFinality-io/subql",children:"Subquery"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/p2p-org/polkadot-profit-transformer",children:"MBELT3"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/kodadot/stick",children:"stick"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Infra3-Network/hyperdot",children:"Hyperdot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Blockchain/Event Monitoring"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/guardian",children:"Web3 Guardian"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/HugoByte/aurras-event-manager",children:"Aurras Event Manager"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hicommonwealth/chain-events",children:"@commonwealth/chain-events"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/massbitchain",children:"Massbit"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/kianenigma/polkadot-basic-notification",children:"Polkadot Basic Notifications"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sodazone/ocelloids",children:"Ocelloids"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/TrackingChains/TrackingChain",children:"Tracking Chain"})," \u26aa,"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Gaming"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/PolkadotPlay/Polkadot.Unity.SDK",children:"Polkadot SDK for Unity"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/dodorare/crossbow",children:"Crossbow"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://assetstore.unity.com/packages/decentralization/infrastructure/polkadot-sdk-for-unity-273535",children:"Unity Asset Store"}),", ",(0,r.jsx)(e.a,{href:"https://amethyst.rs/",children:"Amethyst"})," + ",(0,r.jsx)(e.a,{href:"https://substrate.dev/",children:"Substrate"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"No-code Platforms"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js",children:"EzCode's Polkadot.js plugin on Bubble.io"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Blackprint/nodes-polkadot.js",children:"Blackprint Visual Programming Polkadot.js module"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/subrelay/interface",children:"SubRelay"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Wallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/tien/dot-connect",children:"DOT Connect"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/TalismanSociety/talisman-connect",children:"Talisman Connect"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Koniverse/SubConnect",children:"SubWallet-SubConnect"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nova-wallet/metadata-portal",children:"Metadata Portal"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/tesseract-one/Tesseract.rs",children:"Tesseract"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/walletconnect-v2-monorepo",children:"WalletConnect"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/BitGo/BitGoJS/tree/master",children:"BitGoJS"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"XCM"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/trappist",children:"Trappist"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Moonsong-Labs/xcm-tools",children:"XCM-tools"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/substrate-api-rpc",children:"XCM-tools Golang"})," \ud83d\udfe1,",(0,r.jsx)(e.a,{href:"https://github.com/paraspell/ui-v2",children:"ParaSpell"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/t3rn/xbi",children:"XBI"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockcoders/xcm-sdk",children:"XCM TS/JS SDK"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/XcmSend/app",children:"XCMSend"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/sodazone/xcm-monitoring/",children:"XCM Monitoring Server"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/moonbeam-foundation/xcm-sdk",children:"Moonbeam Foundation XCM-SDK"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/asset-transfer-api",children:"asset-transfer-api"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/txwrapper-core",children:"txwrapper-core"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/open-web3.js",children:"open-web3 JS library"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CycanTech/GVM-Bridge",children:"VM-Bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/srtool",children:"srtool"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chevdor/srtool-cli",children:"srtool-cli"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-tip-bot",children:"Substrate Tip Bot"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/syntifi/ori",children:"ORI (Onchain Risk Intelligence)"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/albertov19/PolkaTools",children:"PolkaTools"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-scripts",children:"polkadot-scripts"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/virto-network/sube",children:"Sube"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/data-store-sidecar",children:"data-store-sidecar"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SugarFunge/sugarfunge-node",children:"SugarFunge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/second-state/substrate-wasmedge",children:"substrate-wasmedge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/eightfish-org/eightfish",children:"EightFish"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/sandoxio/sandox",children:"Sandox"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/darwinia-network/apk-verifier/",children:"APK verifier"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"ink-smart-contracts",children:"ink! Smart Contracts"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Core Libraries"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/ink",children:"ink!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/cargo-contract",children:"cargo-contract"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts",children:"pallet-contracts"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Local Nodes"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-contracts-node",children:"substrate-contracts-node"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/swankyhub/swanky-cli",children:"Swanky"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Smart Contract Development"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/drink",children:"DRink!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/contracts-ui",children:"contracts-ui"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Smart-Beaver",children:"SmartBeaver"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/h4nsu/openbrush-contracts",children:"OpenBrush"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/727-Ventures/sol2ink",children:"Sol2Ink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/protofire/polkadot-contract-wizard",children:"Polkadot Contract Wizard"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/ink-wrapper",children:"ink-wrapper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/ink-playground",children:"ink-playground"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/blockchain-it-hr/ink-remix-plugin",children:"ink! Remix Plugin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/standardweb3/signac/",children:"Signac"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/avirajkhare00/ink-boxes/",children:"ink!-boxes"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/avirajkhare00/ink-wizard",children:"ink!-smart-contract-wizard"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Security & Testing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/ink-waterfall",children:"ink! Waterfall"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/web3labs/ink-verifier-image",children:"Verifier Image for ink!"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Brushfam/patron-backend/",children:"Patron"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/inkscopexyz/inkscope-fuzzer",children:"Inkscope Fuzzer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Frontend Development"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/scio-labs/inkathon",children:"ink!athon Boilerplate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/useink",children:"useink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/scio-labs/use-inkathon",children:"useInkathon"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/subsquid/squid-sdk/tree/master/substrate/ink-typegen",children:"ink-typegen"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Brushfam/typechain-polkadot",children:"Typechain Polkadot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"IDE Plugins"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ink-analyzer/ink-analyzer",children:"ink! Analyzer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Bridges"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/dantenetwork/protocol-stack-for-ink",children:"Dante Protocol"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DeFi"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/pendulum-chain/pendulum-ink-wrapper",children:"Pendulum-Ink-Wrapper"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RottenKiwi/Panorama-Swap-INK-SC",children:"Panorama Swap"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Juminstock/ink_bank",children:"ink_bank"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/realnimish/polkadot-amm",children:"Polkadot AMM"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/veradefi/defi",children:"Vera"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nsure-tech/dot-contract",children:"Nsure Insurance"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/CycanTech/ELC",children:"Everlasting Cash"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Coinversation/coinpro",children:"Coinversation"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zenlinkpro/zenlink-dex-contract",children:"zenlink-dex-contract"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ReserveLabs/AlgoCash",children:"AlgoCash"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"New seigniorage-style stable coins"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Gaming"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/OpenEmojiBattler/open-emoji-battler",children:"Open Emoji Battler"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs",children:"NewOmega"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DAO"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/SyncraDAO/modular-dao",children:"SyncraDAO"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/subDAO-contracts",children:"subDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1",children:"RainbowDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Mangoboxlabs/Mangoboxink",children:"MangoBox"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Mangoboxlabs/MangoSaleV2",children:"MangoSale"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Identity/DID"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/TheDotflow",children:"Dotflow"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Oracles"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/diadata-org/dia-wasm-oracle",children:"DIA WASM Oracle"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Spam Protection"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/prosopo/captcha",children:"Prosopo"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Governance"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/AbaxFinance/Governance",children:"Abax Governance"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"NFT"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ArtZero-io/Contracts",children:"ArtZero"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/pnsproject/ink-aa",children:"Polkadot Smart Account"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/swankyhub/magink-dapp",children:"magink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/ink-test-contracts",children:"ink-test-contracts"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/agryaznov/candle-auction-ink",children:"Candle Auctions"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SubDAO-Network/polkasign-contract",children:"polkasign-contract"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bsn-si/ocex-cli",children:"OCEX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RoloiMoney/roloi-polkadot-w3f-grant",children:"Roloi"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadrys/openPayroll",children:"OpenPayroll"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/InkSmartContract/BlockchainFoodOrder",children:"BlockchainFoodOrder"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"chains-and-pallets",children:"Chains and Pallets"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Scalable Transactions"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/perun-network/perun-polkadot-pallet",children:"Perun channels"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/perun-network/perun-polkadot-demo",children:"CLI demo of Perun"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/Astar",children:"Astar"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/celer-network/cChannel-substrate",children:"Celer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/GunClear/Gunero",children:"Gunclear"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/BCS-Labs/tpscore-etl-system",children:"TPScore"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/auguth/pocs",children:"proof-of-contract-stake"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"roll-ups, DAG-based consensus mechanisms, side chains"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Bridges"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/interlay/interbtc",children:"interBTC"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/webb-tools/dkg-substrate",children:"DKG Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sygmaprotocol/sygma-substrate-pallets",children:"Sygma"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/bifrost-finance/bifrost-eos-relay",children:"EOS by Bifrost"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-bridge",children:"POA - Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/akropolisio/POC-polkadai-bridge",children:"Substrate - Ethereum DAI Bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-bridge-relay",children:"Substrate - Substrate Bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chainx-org/ChainX",children:"BTC by ChainX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ChorusOne/wormhole-bridge",children:"Cosmos-Substrate bridge"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/octopus-network/substrate-ibc",children:"Substrate IBC Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Snowfork/polkadot-ethereum",children:"Polkadot Ethereum Bridge"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/darwinia-network/darwinia",children:"Darwinia"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/pendulum-chain/spacewalk",children:"Spacewalk: a Stellar bridge"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/filecoindot",children:"Filecoindot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/centrifuge/axelar-cgp-substrate/tree/main",children:"Axelar-Substrate"})," \u26aa"]}),(0,r.jsx)(e.td,{children:"ZCash"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Privacy"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LayerXcom/zero-chain",children:"ZeroChain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/xx-labs/xxchain",children:"xx network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Phala-Network/phala-blockchain",children:"pLibra (Phala Network)"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/automata-network/automata",children:"Automata Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zero-network/zero",children:"Zero Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/appliedblockchain/silentdata-polkadot",children:"Silent Data"})," \u26aa"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/anoma/masp",children:"Multi-Asset Shielded Pool (MASP)"})," , ",(0,r.jsx)(e.a,{href:"https://arxiv.org/pdf/2009.01020.pdf",children:"Zkay"}),", ",(0,r.jsx)(e.a,{href:"https://eprint.iacr.org/2018/962.pdf",children:"Zexe"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"ZKP"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example",children:"ZeroPool"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/megaclite",children:"Megaclite"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/patractlabs/zkmega",children:"zkMega"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AstarNetwork/plonk",children:"PLONK for Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/webb-tools/protocol-substrate",children:"Webb Anchor Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bright/zk-snarks-with-substrate/",children:"zk-SNARKs tutorial"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Zkvers/substrate-zk",children:"substrate-zk"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/hyperfridge-r0",children:"hyperfridge-r0"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Cyborg-Network/cyborg-parachain/tree/master",children:"Cyborg Network"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"TEE"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Acurast/acurast-core",children:"Acurast"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/integritee-network/worker",children:"Integritee"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/scs/substraTEE",children:"substraTEE"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/wetee-dao/chain",children:"WeTEE"})," \ud83d\udfe1"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/keysafe-protocol/keysafe-app",children:"Keysafe Protocol"})," \u26aa"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DeFi"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/kapilsinha/privadex",children:"PrivaDEX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/uinb/fusotao",children:"Fusotao"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/reef-defi/reef-chain",children:"Reef"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Diora-Network/Diora",children:"Diora"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/pendulum-chain/pendulum",children:"Pendulum Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/compound-finance/gateway",children:"Compound Gateway"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/parallel-finance/parallel",children:"Parallel Finance"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/PINT",children:"PINT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/laminar-protocol/laminar-chain",children:"Laminar Chain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AcalaNetwork/Acala",children:"Acala"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/centrifuge/centrifuge-chain",children:"Centrifuge"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/stafiprotocol/stafi-node",children:"Stafi"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/y2labs-0sh/definex",children:"Definex"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OAXFoundation/parrot",children:"OAX Foundation"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/alexxuyang/substrate-dex",children:"Cybex"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zenlinkpro/pallet-zenlink",children:"Zenlink"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/lsaether/pallet-swaps",children:"Swaps Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Polkadex-Substrate/Polkadex/tree/master",children:"Polkadex"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/subdarkdex/subdex-parachain",children:"SubDEX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/hack.HydraDX-node",children:"HydraDX"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/apopiak/stablecoin",children:"Substrate Stablecoin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/digitalnativeinc/standard-substrate",children:"Standard protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sora-xor/sora2-network",children:"Polkaswap"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/equilibrium-eosdt/equilibrium-curve-amm",children:"Curve AMM"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/konomi-network/cumulus/",children:"Konomi Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nutsfinance/stable-asset",children:"Stable Asset"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/atscaletech/libra",children:"Libra Payment"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/mangata-finance/mangata-node",children:"Mangata"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/tidelabs/tidechain",children:"Tidechain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/Basilisk-node",children:"Basilisk"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/PolymeshAssociation/Polymesh",children:"Polymesh"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:["DEX with privacy and confidentiality features such as those found in a ",(0,r.jsx)(e.a,{href:"https://en.wikipedia.org/wiki/Dark_pool",children:"dark pool"})]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Smart contract chains"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/PureStake/moonbeam",children:"moonbeam"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Magport/Magnet",children:"Magnet"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/aleph-node",children:"Aleph-node"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/hicommonwealth/edgeware-node",children:"Edgeware"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ParaState/substrate-ssvm-node",children:"ParaState"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gear-tech/gear",children:"gear"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/cennznet/cennznet",children:"CENNZnet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/skyekiwi/skyekiwi-network",children:"SkyeKiwi"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OAK-Foundation/OAK-blockchain",children:"OAK-blockchain"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/web3labs/ice-substrate",children:"ICE Blockchain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OmniBTC/PSC",children:"Polkadot Smart Chain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/keep-starknet-strange/madara",children:"Madara - Cairo/Starknet"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{children:"smart contract chains with novel security approaches, smart contract chains based on existing toolchains"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Oracle"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/tellor-io/tellor-pallet",children:"Tellor"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle",children:"Laminar"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/smartcontractkit/chainlink-polkadot",children:"Chainlink-polkadot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/aresprotocols/ares",children:"Ares Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Kylin-Network/kylin-node",children:"Kylin Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/interlay/interbtc-clients/tree/master/oracle",children:"interbtc-clients oracle"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/webb-tools/anonima",children:"Anonima"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SaaS3-Foundation/dRuntime-fat",children:"SaaS3"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tellor-io/tellor-parachain-contracts",children:"Tellor"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/diadata-org/bridgestate-ocw",children:"Bridgestate Oracle"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Identity/DID"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/parami-foundation/parami-blockchain",children:"Parami"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/litentry/litentry-parachain",children:"Litentry"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/substrate-developer-hub/pallet-did",children:"pallet-did"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/prasad-kumkar/dot-id",children:"dot-id"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"IoT"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/NodleCode/chain",children:"Nodle"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/DataHighway-DHX/node",children:"MXC/DataHighway"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/peaqnetwork/peaq-network-node",children:"peaq-network-node"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Verifiable Claims"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/KILTprotocol/kilt-node",children:"KILT"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/docknetwork/dock-substrate",children:"Dock"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Supply chain"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/digicatapult/dscp-node",children:"DSCP Node"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Health care"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Music Industry"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Allfeat/Allfeat",children:"Allfeat Network"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Data Availability"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/availproject/avail",children:"Avail"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/ZeroDAO/melodot",children:"Melodot"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Social Networking"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/frequency-chain/frequency",children:"Frequency"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/social-network/blockchain",children:"Social Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dappforce/subsocial-parachain",children:"SubSocial"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ZeroDAO/ZeroDAO-node",children:"ZeroDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/myriadsocial/myriad-node",children:"Myriad Node"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/randombishop/wika_etl",children:"Wika Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/listenofficial/listen-parachain",children:"Listen"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tribal-protocol/tribal_contract",children:"Tribal Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rust-0x0/hex-space-protocol-substrate",children:"Five Degrees on Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/acuity-social/acuity-substrate",children:"Acuity Social"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{children:"Private instant messenger that uses on-chain identity"})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Governance/DAO"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/aisland-dao/aisland-node/tree/main",children:"Aisland Node"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hashed-io/hashed-substrate",children:"Hashed Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sunshine-protocol/sunshine-bounty",children:"Sunshine DAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NucleiStudio/governance-os",children:"Governance OS"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/idavollnetwork/idavoll",children:"Idavoll Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DoraFactory/Substrate-Moloch-V2",children:"Substrate Moloch"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Qrucial/QRUCIAL-DAO",children:"QRUCIAL-DAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sctllabs/societal-node",children:"Societal"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/daos-org/daos",children:"DAOs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/amiyatulu/shivarthu/",children:"Shivarthu"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/faterium",children:"Faterium"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/decentration/apps",children:"Supersig"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/deep-ink-ventures/genesis-dao-node",children:"GenesisDAO"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dao-entrance/dao-entrance-node",children:"DAO Entrance"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/liberland/liberland_substrate",children:"Liberland"})," \ud83d\udfe2"]}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/consul/consul",children:"Consul"})," - Open Government and E-Participation Web Software"]})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Prediction Markets and Futarchy"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/zeitgeistpm/zeitgeist",children:"Zeitgeist"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/XPredictMarket/NodePredict",children:"X Predict Market"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Messaging"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/validitylabs/HOPR-PL-Substrate",children:"HOPR"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chainify/nolik",children:"Nolik"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Uke-Messaging/uke-pallet",children:"Uke"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Belsoft-rs/diffychat-pallet",children:"Diffy Chat"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/fennelLabs/Fennel-Protocol",children:"Fennel Protocol"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"File Storage, Cloud"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/dappforce/subsocial-offchain",children:"Subsocial-Offchain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/playproject-io/datdot",children:"DatDot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/crustio/crust",children:"Crust Network"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/rs-ipfs/offchain-ipfs-manual",children:"offchain::ipfs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/canyon-network/canyon",children:"Canyon Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Cumulus2021/cess",children:"CESS"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/cess-proving-system",children:"CESS Proving Subsystem"})," ","\u2754",", ",(0,r.jsx)(e.a,{href:"https://github.com/ideal-lab5/iris",children:"Iris"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/CESSProject/fmd-cess",children:"fmd-cess"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw",children:"IPFS Frame V3"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/threefoldtech/tfchain",children:"Threefold Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Apron-Network/apron-node",children:"Apron"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/TDSoftware/substrate-ipfs",children:"IPFS Utilities"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://gitlab.com/dinfra/dinfra",children:"DINFRA"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Name Service"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/xaya/substrate-names",children:"Substrate Names"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hskang9/substrate-name-service",children:"ENS on Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/pnsproject/pns-pallets",children:"PNS-Pallets"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/HeisenbergLin22/Faceless_milestone2_delivery",children:"Faceless"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ff13dfly/Anchor",children:"Anchor"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Gaming"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/bit-country/Bit-Country-Blockchain",children:"Bit.country"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/SubGame-Network/subgame-network",children:"SubGame"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/playzero/subzero",children:"subzero"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/web3gamesofficial/web3games-blockchain",children:"Web3Games"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ajuna-network/ajuna-pallets",children:"Ajuna Pallets"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/cryptoviet/gafi",children:"Gafi Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://gitlab.com/asylum-space/asylum-item-nft",children:"Asylum"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/3Dpass/3DP",children:"3DPass"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/polketio/toearnfun_flutter_app",children:"Polket"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Computation/AI"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Deitos-Network/deitos-ip",children:"Deitos Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DeepBrainChain/DeepBrainChain-MainChain",children:"DeepBrain Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/anudit/cerebrum",children:"AI Infrastructure on Blockchain"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Enable specific use-cases"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/deep-ink-ventures/pallet_hookpoints",children:"pallet-hookpoints"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/airalab/substrate-node-robonomics",children:"Robonomics"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/UniversalDot/pallets",children:"UniversalDOT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/EvercityEcosystem/evercity-chain",children:"Evercity Sustainable Finance Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/logion-network/logion-node",children:"logion"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Me-Protocol/rusty-protocol-v0.1/",children:"Me Protocol"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/QSTN-US/Polkadot-QSTN-v1/",children:"QSTN"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/subcoin-project/subcoin",children:"Subcoin"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"NFT"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/capsule-corp-ternoa/chain",children:"ternoa"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/danforbes/pallet-nft",children:"FRAME Pallet: NFTs for Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/UniqueNetwork/unique-chain",children:"Unique NFT Parachain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets",children:"DNFT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rmrk-team/rmrk-substrate",children:"RMRK-Substrate"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Popular-Coding/nt-nft",children:"NT-NFTs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/GreenLemonProtocol/dksap-polkadot",children:"Green Lemon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/Basilisk-node",children:"Basilisk"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Randomness"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon",children:"DKG and Randomness Beacon"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/random-meat/drand-substrate-client",children:"drand-substrate-client"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Licensing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/anagolay/anagolay-chain",children:"Anagolay Network"})," ","\u2754"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Banking Integration"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/element36-io/ebics-java-service",children:"FIAT on-off-ramp"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Crowdfunding"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ImbueNetwork/imbue",children:"Imbue Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/zhangjiannan/QFgrant",children:"Quadratic Funding pallet by Dora"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/OAK-Foundation/quadratic-funding-pallet/tree/master",children:"Quadratic Funding pallet by OAK"})," \u26aa"]}),(0,r.jsx)(e.td,{children:(0,r.jsx)(e.a,{href:"https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413",children:"Minimum Anti-Collusion Infrastructure (MACI)"})})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Collection of Pallets"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/open-web3-stack/open-runtime-module-library",children:"Substrate Open Runtime Module Library"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/warehouse",children:"warehouse"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/InvArch/InvArch-Frames",children:"InvArch FRAME Pallet Library"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Marketplaces"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/WowLabz/dot-marketplace-v2/tree/Phase3_Milestone3",children:"Dot Marketplace"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace",children:"Gated Marketplace"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Popular-Coding/ventur",children:"Ventur"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/RELAI-Network/futur-protocol",children:"Futur Protocol"})," ","\u2754"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Carbon Credits"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/bitgreen/bitg-node",children:"BitGreen"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/EvercityEcosystem/carbon-assets",children:"Carbon Assets Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/SequesterChain/pallets",children:"Sequester Pallets"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"UTXO"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Off-Narrative-Labs/Tuxedo",children:"Tuxedo"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Moonsong-Labs/moonkit",children:"Moonkit"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/gautamdhameja/substrate-account-filter",children:"Substrate Account Filter"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/opentensor/subtensor",children:"Subtensor"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/AdMetaNetwork/admeta",children:"AdMeta"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/chocolatenetwork/chocolate-node",children:"Chocolate Node"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/virto-network/virto-node",children:"Virto Network"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/gautamdhameja/substrate-validator-set",children:"Substrate Validator Set"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/DEIPworld/deip-node",children:"DEIP"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/debionetwork/debio-node",children:"DeBio"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/mathwallet/MathChain",children:"MathChain"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/encointer/encointer-node",children:"encointer"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/grasslandnetwork/substrate_node",children:"Grassland"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/rusty-crewmates/substrate-tutorials",children:"Substrate-Tutorials"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Fair-Squares/fair-squares",children:"Fair Squares"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/totem-tech/totem",children:"Totem Live Accounting"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/herou/EscrowPallet",children:"Escrow Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/NexTokenTech/TREX",children:"TREX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/relationlabs/Relation-Graph",children:"Relation Graph"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gertt/Invoice",children:"Decentralized Invoice"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/redstone-network/redstone-node",children:"Redstone Network"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/WunderbarNetwork/access-control",children:"Access Control Pallet"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/web3-grant",children:"Omniverse DLT"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polytope-labs/substrate-ismp",children:"ISMP"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/xcmp_prototype_playground",children:"XCMP"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/dhiway/cord",children:"CORD Chain"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/educhain",children:"Educhain"})," \ud83d\udfe1"]}),(0,r.jsx)(e.td,{children:"Decentralized review/reputation system"})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"host",children:"Host"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Rust"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate",children:"Substrate"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/cumulus",children:"Cumulus"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"C++"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/kagome",children:"Kagome"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Zondax/mayon",children:"Mayon"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Go"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/gossamer",children:"Gossamer"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Java"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/Fruzhin",children:"Fruzhin"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/java-host-research",children:"Java Host Research"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"AssemblyScript"}),(0,r.jsx)(e.td,{}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Light Client"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/smol-dot/smoldot",children:"smoldot"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/substrate-connect",children:"Substrate Connect"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/eqlabs/polkadot-light-client",children:"C++ Polkadot Light Client"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Testing"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/polkadot-conformance",children:"Polkadot Conformance"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sigp/polkafuzz",children:"Polkafuzz"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"network-maintenance-tools",children:"Network Maintenance Tools"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Secure validator setup"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/polkachu/polkadot-validator",children:"Polkadot Validation Node Ansible Setup"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-validator-setup",children:"W3F Polkadot Validator Setup"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Nexus2k/polkadot-ansible",children:"polkadot-ansible"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"High availability setup"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/luguslabs/archipel",children:"Archipel"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/protofire/polkadot-failover-mechanism",children:"Polkadot Failover Mechanism"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Datagen-Project/Datagen-Substrate-Grant",children:"Datagen"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/bright/substrate-raft",children:"High Availability Validator Setup"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Load Balanced Endpoints"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/insight-w3f/terragrunt-polkadot",children:"terragrunt-polkadot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sudoblockio/substrate-meta",children:"Geometry Labs' Substrate Meta repo"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Deployment Tools"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Blockdaemon/bpm-sdk",children:"Polkadot Package Manager"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/akropolisio/polkahub-monorepo",children:"PolkaHub"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom",children:"Avado"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-deployer",children:"Polkadot Deployer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/for-parity-with-love/unified-collator-node-deployment",children:"Unified Collator Deployment"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator monitoring"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/turboflakes/one-t",children:"ONE-T"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/helikon-labs/subvt-backend",children:"SubVT"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/SimplyVC/panic",children:"P.A.N.I.C."})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/galacticcouncil/polkalert",children:"Polkalert"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3",children:"B-Harvest"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/stakezone/nmonpolkadot",children:"nmonpolkadot"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ironoa/polkadot-k8s-monitor",children:"Polkadot-K8s-Monitor"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-watcher",children:"Polkadot-Watcher"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot",children:"1KV Telegram Bot"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator payout management"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Colm3na/substrate-auto-payout",children:"Substrate validator auto payout"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f/polkadot-payouts",children:"Polkadot Payouts"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/emostov/staking-payouts",children:"staking-payouts CLI"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/stakelink/substrate-payctl",children:"Payctl"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/turboflakes/crunch",children:"crunch"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Staking Miner"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/staking-miner-v2",children:"Staking Miner v2"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Nominator Tools"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/miepsik/validators_selection",children:"Validator Selection"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/filippoweb3/polkanalyzer",children:"Polkanalyzer"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/filippoweb3/polkanalyzer-app",children:"Polkanalyzer-app"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"signatures",children:"Signatures"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"SR25519"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/w3f/schnorrkel",children:"rust"})," \u26aa(contains partial bindings for C, JavaScript, and Python), ",(0,r.jsx)(e.a,{href:"https://github.com/gautamdhameja/sr25519-dotnet",children:".Net bindings"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/sr25519",children:"C"})," \u26aa",(0,r.jsx)(e.em,{children:"(old)"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/TerenceGe/sr25519-donna",children:"C"})," \u26aa",(0,r.jsx)(e.em,{children:"(new)"}),", ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/soramitsu-sr25519-crust",children:"C/C++"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/usetech-llc/sr25519_dotnet",children:"C#"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/go-schnorrkel",children:"Go"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/debuggor/schnorrkel-java",children:"java"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/sr25519-bindings",children:"PHP"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Signature Aggregation"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/w3f/apk-proofs",children:"apk-proofs"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Distributed key generation (DKG) or management"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/isislovecruft/frost-dalek",children:"keygen.rs"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/w3f-grants-archive/sword",children:"Secure Wallet Origin Distribution (SWORD)"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Validator HSMs"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Zondax/buildroot-zondax",children:"Zondax Remote Signer"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"MPC"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/orochi-network/orochi-network.github.io",children:"Orochi Network"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"consensus",children:"Consensus"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"PoC"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/subspace/substrate",children:"Spartan"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"PoW"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/pow",children:"PoW consensus for Substrate"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/kulupu/kulupu/tree/master/pow",children:"RandomX"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow",children:"Sha3 PoW"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Block production"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/babe",children:"BABE"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/client/consensus/aura",children:"Aura"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Finality"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/grandpa",children:"GRANDPA"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/Cardinal-Cryptography/AlephBFT",children:"AlephBFT"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Other"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/PureStake/nimbus",children:"Nimbus: Upgradeable consensus framework"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"networking",children:"Networking"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"SCALE Codec"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-scale-codec",children:"Rust"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/paritytech/parity-scale-codec-ts",children:"TypeScript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/polkascan/py-scale-codec",children:"Python"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/",children:"Golang Chainsafe"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/scale.go",children:"Golang Itering"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/MatthewDarnell/cScale",children:"C"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/scale-codec-cpp",children:"C++"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/polkadot-js/api",children:"JavaScript"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/LimeChain/as-scale-codec",children:"AssemblyScript"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec",children:"Haskell"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/emeraldpay/polkaj",children:"Java"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/itering/scale.rb",children:"Ruby"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/nbltrust/dart-scale-codec",children:"Dart"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/tesseract-one/swift-scale-codec",children:"Swift"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/scale-codec-swift",children:"scale-codec-swift"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/sublabdev/scale-codec-kotlin",children:"scale-codec-kotlin"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/php-scale-codec",children:"PHP"})," \ud83d\udfe1, ",(0,r.jsx)(e.a,{href:"https://github.com/soramitsu/scale-codec-js-library",children:"JavaScript by Soramitsu"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/gmajor-encrypt/scale-codec-comparator",children:"Scale Codec Comparator"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/darwinia-network/darwinia-messages-sol/blob/master/contracts/utils/contracts/ScaleCodec.sol",children:"ScaleCodec.sol by Darwinia"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/Snowfork/snowbridge/blob/main/core/packages/contracts/contracts/ScaleCodec.sol",children:"ScaleCodec.sol by Snowfork"})," \ud83d\udfe2, ",(0,r.jsx)(e.a,{href:"https://github.com/arijitAD/dotscale",children:"Dotscale"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Networking Framework"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/libp2p/libp2p",children:"libp2p"})," \ud83d\udfe1",(0,r.jsx)(e.a,{href:"https://github.com/algorealmInc/SwarmNL",children:"SwarmNL"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"DHT Crawler"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/atredispartners/dht-crawler-polkadot",children:"Go"})," \u26aa, ",(0,r.jsx)(e.a,{href:"https://github.com/emeraldpay/polkabot",children:"Kotlin"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"RPC Tor-like access"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/Evanesco-Labs/WhiteNoise.rs",children:"WhiteNoise"})," \u26aa"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h3,{id:"primitives",children:"Primitives"}),"\n",(0,r.jsxs)(e.table,{children:[(0,r.jsx)(e.thead,{children:(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.th,{children:"Components"}),(0,r.jsx)(e.th,{children:"Existing projects"}),(0,r.jsx)(e.th,{children:"Potentially interesting projects"})]})}),(0,r.jsxs)(e.tbody,{children:[(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Storage"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/frisitano/merkle-tree-db",children:"Merkle Tree DB"})," \u26aa"]}),(0,r.jsx)(e.td,{})]}),(0,r.jsxs)(e.tr,{children:[(0,r.jsx)(e.td,{children:"Merkle Proofs"}),(0,r.jsxs)(e.td,{children:[(0,r.jsx)(e.a,{href:"https://github.com/polytope-labs/solidity-merkle-trees",children:"Solidity Trie Verifier"})," \ud83d\udfe2"]}),(0,r.jsx)(e.td,{})]})]})]}),"\n",(0,r.jsx)(e.h2,{id:"contributing",children:"Contributing"}),"\n",(0,r.jsx)(e.p,{children:"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."}),"\n",(0,r.jsx)(e.p,{children:":heavy_exclamation_mark: All technologies listed above need to be open-source. Ideally, the links\nlead directly to the code."}),"\n",(0,r.jsx)(e.p,{children:(0,r.jsxs)(e.em,{children:["Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you\nmay ",(0,r.jsx)(e.a,{href:"https://github.com/join",children:"sign up for free"}),"."]})})]})}function d(t={}){const{wrapper:e}={...(0,h.R)(),...t.components};return e?(0,r.jsx)(e,{...t,children:(0,r.jsx)(l,{...t})}):l(t)}},28453:(t,e,s)=>{s.d(e,{R:()=>a,x:()=>n});var r=s(96540);const h={},i=r.createContext(h);function a(t){const e=r.useContext(i);return r.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function n(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(h):t.components||h:a(t.components),r.createElement(i.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/ffe9c3c9.200212a4.js b/assets/js/ffe9c3c9.200212a4.js deleted file mode 100644 index 13255cb53d..0000000000 --- a/assets/js/ffe9c3c9.200212a4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1967],{99220:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var s=t(74848),i=t(28453);const a={id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},r=void 0,o={id:"learn/learn-DOT",title:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",source:"@site/../docs/learn/learn-DOT.md",sourceDirName:"learn",slug:"/learn-DOT",permalink:"/docs/learn-DOT",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"Pierre Besson",lastUpdatedAt:1728903925e3,frontMatter:{id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},sidebar:"docs",previous:{title:"Asset Hub",permalink:"/docs/learn-assets"},next:{title:"Token Inflation",permalink:"/docs/learn-inflation"}},l={},d=[{value:"What is DOT?",id:"what-is-dot",level:2},{value:"The Planck Unit",id:"the-planck-unit",level:3},{value:"Polkadot",id:"polkadot",level:3},{value:"Kusama",id:"kusama",level:3},{value:"What are the uses of DOT?",id:"what-are-the-uses-of-dot",level:2},{value:"DOT for Governance",id:"dot-for-governance",level:3},{value:"DOT for Consensus",id:"dot-for-consensus",level:3},{value:"DOT to Access Cores on the Relay Chain",id:"dot-to-access-cores-on-the-relay-chain",level:3},{value:"Token Issuance",id:"token-issuance",level:3},{value:"Total Issuance",id:"total-issuance",level:4},{value:"Inactive Issuance",id:"inactive-issuance",level:4},{value:"Active Issuance",id:"active-issuance",level:4},{value:"Obtaining Testnet Tokens",id:"obtaining-testnet-tokens",level:2},{value:"Getting Tokens on the Paseo Testnet",id:"getting-tokens-on-the-paseo-testnet",level:3},{value:"Getting Tokens on the Westend Testnet",id:"getting-tokens-on-the-westend-testnet",level:3},{value:"Faucets support",id:"faucets-support",level:3},{value:"Kusama Tokens",id:"kusama-tokens",level:2},{value:"Polkadot Mainnet DOT",id:"polkadot-mainnet-dot",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"what-is-dot",children:"What is DOT?"}),"\n",(0,s.jsx)(n.p,{children:"DOT is the native token of the Polkadot network in a similar way that BTC is the native token of\nBitcoin or Ether is the native token of the Ethereum blockchain."}),"\n",(0,s.jsx)(n.h3,{id:"the-planck-unit",children:"The Planck Unit"}),"\n",(0,s.jsxs)(n.p,{children:["The smallest unit for the account balance on Substrate based blockchains (Polkadot, Kusama, etc.) is\nPlanck (a reference to ",(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Planck_length",children:"Planck Length"}),", the smallest\npossible distance in the physical Universe). You can compare DOT's Planck to BTC's Satoshi or ETH's\nWei. Polkadot's native token DOT equals to 10",(0,s.jsx)("sup",{children:"10"})," Planck and Kusama's native token KSM\nequals to 10",(0,s.jsx)("sup",{children:"12"})," Planck."]}),"\n",(0,s.jsx)(n.h3,{id:"polkadot",children:"Polkadot"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to DOT"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.0000000001 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Microdot (uDOT)"}),(0,s.jsx)(n.td,{children:"4"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"4"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0000010000 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Millidot (mDOT)"}),(0,s.jsx)(n.td,{children:"7"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"7"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0010000000 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Dot (DOT)"}),(0,s.jsx)(n.td,{children:"10"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"10"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.0000000000 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Million (MDOT)"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"16"})," Planck"]}),(0,s.jsx)(n.td,{children:"1,000,000.00 DOT"})]})]})]}),"\n",(0,s.jsx)(n.admonition,{title:"DOT was redenominated at block #1_248_328",type:"note",children:(0,s.jsxs)(n.p,{children:["DOT was originally equal to 10",(0,s.jsx)("sup",{children:"12"}),' Planck just like Kusama (which is referred to as "DOT\n(old)"), but went through a process of ',(0,s.jsx)(n.a,{href:"/docs/learn/learn-redenomination",children:"redenomination"})," which\nincreased DOT's supply by 100x. As a consequence, 1 DOT now equals to 10",(0,s.jsx)("sup",{children:"10"})," Planck."]})}),"\n",(0,s.jsx)(n.h3,{id:"kusama",children:"Kusama"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to KSM"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.000000000001 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Point"}),(0,s.jsx)(n.td,{children:"3"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"3"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000000001000 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MicroKSM (uKSM)"}),(0,s.jsx)(n.td,{children:"6"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"6"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000001000000 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MilliKSM (mKSM)"}),(0,s.jsx)(n.td,{children:"9"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"9"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.001000000000 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"KSM"}),(0,s.jsx)(n.td,{children:"12"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"12"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.000000000000 KSM"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"what-are-the-uses-of-dot",children:"What are the uses of DOT?"}),"\n",(0,s.jsx)(n.p,{children:"DOT serves three key functions in Polkadot:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"to be used for governance of the network,"}),"\n",(0,s.jsx)(n.li,{children:"to be staked for the operation of the network,"}),"\n",(0,s.jsx)(n.li,{children:"to be bonded to connect a chain to Polkadot as a parachain."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"DOT can also serve ancillary functions by being a transferrable token. For example, DOT stored in\nthe Treasury can be sent to teams working on relevant projects for the Polkadot network."}),"\n",(0,s.jsx)(n.admonition,{title:"Explainer video on token utility",type:"note",children:(0,s.jsxs)(n.p,{children:["These concepts have been further explained in the video\n",(0,s.jsx)(n.a,{href:"https://www.youtube.com/watch?v=POfFgrMfkTo&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=7",children:"Usage of DOT and KSM on Polkadot and Kusama"}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"dot-for-governance",children:"DOT for Governance"}),"\n",(0,s.jsx)(n.p,{children:"The first function of DOT is to entitle holders to control the governance of the platform. Some\nfunctions that are included under the governance mechanism include determining the fees of the\nnetwork, the addition or removal of parachains, and exceptional events such as upgrades and fixes to\nthe Polkadot platform."}),"\n",(0,s.jsxs)(n.p,{children:["Polkadot will enable any holder of DOT to participate in governance. For details on how holders can\nparticipate in governance, as well as their rights and responsibilities, see the\n",(0,s.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:"governance page"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"dot-for-consensus",children:"DOT for Consensus"}),"\n",(0,s.jsxs)(n.p,{children:["DOT will be used to facilitate the consensus mechanism that underpins Polkadot. For the platform to\nfunction and allow for valid transactions to be carried out across parachains, Polkadot will rely on\nholders of DOT to play active roles. Participants will put their DOT at risk (via staking) to\nperform these functions. The staking of DOT acts as a disincentive for malicious participants who\nwill be punished by the network by getting their DOT ",(0,s.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),". The DOT\nrequired to participate in the network will vary depending on the activity that is being performed,\nthe duration the DOT will be staked for, and the total number of DOT staked. For more information\nabout staking on Polkadot visit ",(0,s.jsx)(n.a,{href:"/docs/learn-staking",children:"the dedicated staking page"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"dot-to-access-cores-on-the-relay-chain",children:"DOT to Access Cores on the Relay Chain"}),"\n",(0,s.jsxs)(n.p,{children:["DOT can be used to ",(0,s.jsx)(n.a,{href:"/docs/learn-agile-coretime",children:"purchase coretime in-bulk or on-demand"})," and access\nthe relay chain to benefit from Polkadot's security and interoperability."]}),"\n",(0,s.jsx)(n.h3,{id:"token-issuance",children:"Token Issuance"}),"\n",(0,s.jsx)(n.h4,{id:"total-issuance",children:"Total Issuance"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/chain-state-values#total-issuance",children:"total issuance"})," is the total number of token\nunits in existence on the network."]}),"\n",(0,s.jsx)(n.h4,{id:"inactive-issuance",children:"Inactive Issuance"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/chain-state-values#inactive-issuance",children:"inactive issuance"})," is the total units of\noutstanding deactivated balance on the network that cannot be used for participation in governance.\nThis comprises tokens locked away in crowdloans and nomination pools."]}),"\n",(0,s.jsx)(n.h4,{id:"active-issuance",children:"Active Issuance"}),"\n",(0,s.jsx)(n.p,{children:"Active issuance = Total issuance - Inactive issuance"}),"\n",(0,s.jsx)(n.p,{children:"All the tokens under active issuance are can be used to participate in the governance on-chain."}),"\n",(0,s.jsx)(n.h2,{id:"obtaining-testnet-tokens",children:"Obtaining Testnet Tokens"}),"\n",(0,s.jsx)(n.p,{children:"DOT are required to make transactions on the Polkadot network. Tokens on Polkadot's Testnets do not\nhave any value besides allowing you to experiment with the features on the network."}),"\n",(0,s.jsxs)(n.p,{children:["Tokens for each testnet described below can be obtained ",(0,s.jsx)(n.a,{href:"https://faucet.polkadot.io/",children:(0,s.jsx)(n.strong,{children:"here"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"getting-tokens-on-the-paseo-testnet",children:"Getting Tokens on the Paseo Testnet"}),"\n",(0,s.jsxs)(n.p,{children:["The Paseo testnet mirrors the Polkadot runtime and it is maintained by the community. The PAS tokens\ncan be obtained ",(0,s.jsx)(n.a,{href:"https://faucet.polkadot.io/",children:"here"})," and have the same Planck conversion as\nPolkadot's native token DOT."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to PAS"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.0000000001 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Microdot (uPAS)"}),(0,s.jsx)(n.td,{children:"4"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"4"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0000010000 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Millidot (mPAS)"}),(0,s.jsx)(n.td,{children:"7"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"7"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0010000000 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Dot (PAS)"}),(0,s.jsx)(n.td,{children:"10"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"10"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.0000000000 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Million (MPAS)"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"16"})," Planck"]}),(0,s.jsx)(n.td,{children:"1,000,000.00 PAS"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["Users can also obtain PAS by posting\n",(0,s.jsx)(n.code,{children:"!drip "})," in the Matrix chatroom\n",(0,s.jsxs)(n.a,{href:"https://matrix.to/#/#paseo_faucet:matrix.org",children:["#paseo_faucet",":matrix",".org"]}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"getting-tokens-on-the-westend-testnet",children:"Getting Tokens on the Westend Testnet"}),"\n",(0,s.jsxs)(n.p,{children:["Polkadot's testnet is called ",(0,s.jsx)(n.a,{href:"/docs/maintain-networks#westend-test-network",children:"Westend"}),".\nBesides the ",(0,s.jsx)(n.a,{href:"https://faucet.polkadot.io/westend",children:"official faucet"}),", you can obtain its native WND\ntokens by posting ",(0,s.jsx)(n.code,{children:"!drip "})," in the Matrix chatroom\n",(0,s.jsxs)(n.a,{href:"https://matrix.to/#/#westend_faucet:matrix.org",children:["#westend_faucet",":matrix",".org"]}),". Your account will be\ncredited with 1 WND by default. You can also specify to get more tokens by\n",(0,s.jsx)(n.code,{children:"!drip X"}),", where X is the number of tokens."]}),"\n",(0,s.jsxs)(n.p,{children:["On the Westend network, you can also earn WNDs as rewards by\n",(0,s.jsx)(n.a,{href:"/docs/learn-validator",children:"becoming a validator"}),". Watch the video below on how to get started on Westend."]}),"\n",(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col text--center",children:[(0,s.jsx)("a",{href:"https://www.youtube.com/watch?v=0ji0ccZyb3k",children:(0,s.jsx)("img",{src:"https://img.youtube.com/vi/0ji0ccZyb3k/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,s.jsx)("p",{children:(0,s.jsx)("a",{href:"https://www.youtube.com/watch?v=0ji0ccZyb3k",children:"Testing Polkadot features on Westend"})})]})}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to WND"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.000000000001 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Point"}),(0,s.jsx)(n.td,{children:"3"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"3"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000000001000 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MicroWND (uWND)"}),(0,s.jsx)(n.td,{children:"6"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"6"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000001000000 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MilliWND (mWND)"}),(0,s.jsx)(n.td,{children:"9"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"9"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.001000000000 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"WND"}),(0,s.jsx)(n.td,{children:"12"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"12"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.000000000000 WND"})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"faucets-support",children:"Faucets support"}),"\n",(0,s.jsxs)(n.p,{children:["If you require help with using faucets, or wish to report an issue, there is a support chat\n",(0,s.jsxs)(n.a,{href:"https://matrix.to/#/#faucets-support:matrix.org",children:["#faucets-support",":matrix",".org"]}),", or you can\n",(0,s.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-testnet-faucet/issues/new/choose",children:"create an issue"})," directly\nin the faucets repo"]}),"\n",(0,s.jsx)(n.h2,{id:"kusama-tokens",children:"Kusama Tokens"}),"\n",(0,s.jsxs)(n.p,{children:["Unlike testnet DOT, Kusama tokens are not freely given away. Kusama tokens are available via the\n",(0,s.jsx)(n.a,{href:"https://claim.kusama.network/",children:"claims process"})," (if you had DOT at the time of Kusama genesis) or\nthrough the ",(0,s.jsx)(n.a,{href:"/docs/learn/learn-treasury",children:"Treasury"}),". Alternatively, they can be obtained on the open\nmarket."]}),"\n",(0,s.jsx)(n.h2,{id:"polkadot-mainnet-dot",children:"Polkadot Mainnet DOT"}),"\n",(0,s.jsxs)(n.p,{children:["Polkadot Mainnet DOT are not freely given away. If you purchased DOT in the original 2017 offering,\nyou may claim them via the ",(0,s.jsx)(n.a,{href:"https://claims.polkadot.network/",children:"Polkadot claims process"}),".\nAlternatively, they are available on the open market."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var s=t(96540);const i={},a=s.createContext(i);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ffe9c3c9.ac94066f.js b/assets/js/ffe9c3c9.ac94066f.js new file mode 100644 index 0000000000..3c0151c908 --- /dev/null +++ b/assets/js/ffe9c3c9.ac94066f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1967],{99220:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var s=t(74848),i=t(28453);const a={id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},r=void 0,o={id:"learn/learn-DOT",title:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",source:"@site/../docs/learn/learn-DOT.md",sourceDirName:"learn",slug:"/learn-DOT",permalink:"/docs/learn-DOT",draft:!1,unlisted:!1,tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1729496727e3,frontMatter:{id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},sidebar:"docs",previous:{title:"Asset Hub",permalink:"/docs/learn-assets"},next:{title:"Token Inflation",permalink:"/docs/learn-inflation"}},l={},d=[{value:"What is DOT?",id:"what-is-dot",level:2},{value:"The Planck Unit",id:"the-planck-unit",level:3},{value:"Polkadot",id:"polkadot",level:3},{value:"Kusama",id:"kusama",level:3},{value:"What are the uses of DOT?",id:"what-are-the-uses-of-dot",level:2},{value:"DOT for Governance",id:"dot-for-governance",level:3},{value:"DOT for Consensus",id:"dot-for-consensus",level:3},{value:"DOT to Access Cores on the Relay Chain",id:"dot-to-access-cores-on-the-relay-chain",level:3},{value:"Token Issuance",id:"token-issuance",level:3},{value:"Total Issuance",id:"total-issuance",level:4},{value:"Inactive Issuance",id:"inactive-issuance",level:4},{value:"Active Issuance",id:"active-issuance",level:4},{value:"Obtaining Testnet Tokens",id:"obtaining-testnet-tokens",level:2},{value:"Getting Tokens on the Paseo Testnet",id:"getting-tokens-on-the-paseo-testnet",level:3},{value:"Getting Tokens on the Westend Testnet",id:"getting-tokens-on-the-westend-testnet",level:3},{value:"Faucets support",id:"faucets-support",level:3},{value:"Kusama Tokens",id:"kusama-tokens",level:2},{value:"Polkadot Mainnet DOT",id:"polkadot-mainnet-dot",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",h4:"h4",li:"li",p:"p",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...(0,i.R)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(n.h2,{id:"what-is-dot",children:"What is DOT?"}),"\n",(0,s.jsx)(n.p,{children:"DOT is the native token of the Polkadot network in a similar way that BTC is the native token of\nBitcoin or Ether is the native token of the Ethereum blockchain."}),"\n",(0,s.jsx)(n.h3,{id:"the-planck-unit",children:"The Planck Unit"}),"\n",(0,s.jsxs)(n.p,{children:["The smallest unit for the account balance on Substrate based blockchains (Polkadot, Kusama, etc.) is\nPlanck (a reference to ",(0,s.jsx)(n.a,{href:"https://en.wikipedia.org/wiki/Planck_length",children:"Planck Length"}),", the smallest\npossible distance in the physical Universe). You can compare DOT's Planck to BTC's Satoshi or ETH's\nWei. Polkadot's native token DOT equals to 10",(0,s.jsx)("sup",{children:"10"})," Planck and Kusama's native token KSM\nequals to 10",(0,s.jsx)("sup",{children:"12"})," Planck."]}),"\n",(0,s.jsx)(n.h3,{id:"polkadot",children:"Polkadot"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to DOT"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.0000000001 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Microdot (uDOT)"}),(0,s.jsx)(n.td,{children:"4"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"4"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0000010000 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Millidot (mDOT)"}),(0,s.jsx)(n.td,{children:"7"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"7"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0010000000 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Dot (DOT)"}),(0,s.jsx)(n.td,{children:"10"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"10"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.0000000000 DOT"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Million (MDOT)"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"16"})," Planck"]}),(0,s.jsx)(n.td,{children:"1,000,000.00 DOT"})]})]})]}),"\n",(0,s.jsx)(n.admonition,{title:"DOT was redenominated at block #1_248_328",type:"note",children:(0,s.jsxs)(n.p,{children:["DOT was originally equal to 10",(0,s.jsx)("sup",{children:"12"}),' Planck just like Kusama (which is referred to as "DOT\n(old)"), but went through a process of ',(0,s.jsx)(n.a,{href:"/docs/learn/learn-redenomination",children:"redenomination"})," which\nincreased DOT's supply by 100x. As a consequence, 1 DOT now equals to 10",(0,s.jsx)("sup",{children:"10"})," Planck."]})}),"\n",(0,s.jsx)(n.h3,{id:"kusama",children:"Kusama"}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to KSM"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.000000000001 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Point"}),(0,s.jsx)(n.td,{children:"3"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"3"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000000001000 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MicroKSM (uKSM)"}),(0,s.jsx)(n.td,{children:"6"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"6"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000001000000 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MilliKSM (mKSM)"}),(0,s.jsx)(n.td,{children:"9"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"9"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.001000000000 KSM"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"KSM"}),(0,s.jsx)(n.td,{children:"12"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"12"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.000000000000 KSM"})]})]})]}),"\n",(0,s.jsx)(n.h2,{id:"what-are-the-uses-of-dot",children:"What are the uses of DOT?"}),"\n",(0,s.jsx)(n.p,{children:"DOT serves three key functions in Polkadot:"}),"\n",(0,s.jsxs)(n.ul,{children:["\n",(0,s.jsx)(n.li,{children:"to be used for governance of the network,"}),"\n",(0,s.jsx)(n.li,{children:"to be staked for the operation of the network,"}),"\n",(0,s.jsx)(n.li,{children:"to be bonded to connect a chain to Polkadot as a parachain."}),"\n"]}),"\n",(0,s.jsx)(n.p,{children:"DOT can also serve ancillary functions by being a transferrable token. For example, DOT stored in\nthe Treasury can be sent to teams working on relevant projects for the Polkadot network."}),"\n",(0,s.jsx)(n.admonition,{title:"Explainer video on token utility",type:"note",children:(0,s.jsxs)(n.p,{children:["These concepts have been further explained in the video\n",(0,s.jsx)(n.a,{href:"https://www.youtube.com/watch?v=POfFgrMfkTo&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=7",children:"Usage of DOT and KSM on Polkadot and Kusama"}),"."]})}),"\n",(0,s.jsx)(n.h3,{id:"dot-for-governance",children:"DOT for Governance"}),"\n",(0,s.jsx)(n.p,{children:"The first function of DOT is to entitle holders to control the governance of the platform. Some\nfunctions that are included under the governance mechanism include determining the fees of the\nnetwork, the addition or removal of parachains, and exceptional events such as upgrades and fixes to\nthe Polkadot platform."}),"\n",(0,s.jsxs)(n.p,{children:["Polkadot will enable any holder of DOT to participate in governance. For details on how holders can\nparticipate in governance, as well as their rights and responsibilities, see the\n",(0,s.jsx)(n.a,{href:"/docs/learn-polkadot-opengov",children:"governance page"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"dot-for-consensus",children:"DOT for Consensus"}),"\n",(0,s.jsxs)(n.p,{children:["DOT will be used to facilitate the consensus mechanism that underpins Polkadot. For the platform to\nfunction and allow for valid transactions to be carried out across parachains, Polkadot will rely on\nholders of DOT to play active roles. Participants will put their DOT at risk (via staking) to\nperform these functions. The staking of DOT acts as a disincentive for malicious participants who\nwill be punished by the network by getting their DOT ",(0,s.jsx)(n.a,{href:"/docs/learn-offenses",children:"slashed"}),". The DOT\nrequired to participate in the network will vary depending on the activity that is being performed,\nthe duration the DOT will be staked for, and the total number of DOT staked. For more information\nabout staking on Polkadot visit ",(0,s.jsx)(n.a,{href:"/docs/learn-staking",children:"the dedicated staking page"}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"dot-to-access-cores-on-the-relay-chain",children:"DOT to Access Cores on the Relay Chain"}),"\n",(0,s.jsxs)(n.p,{children:["DOT can be used to ",(0,s.jsx)(n.a,{href:"/docs/learn-agile-coretime",children:"purchase coretime in-bulk or on-demand"})," and access\nthe relay chain to benefit from Polkadot's security and interoperability."]}),"\n",(0,s.jsx)(n.h3,{id:"token-issuance",children:"Token Issuance"}),"\n",(0,s.jsx)(n.h4,{id:"total-issuance",children:"Total Issuance"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/chain-state-values#total-issuance",children:"total issuance"})," is the total number of token\nunits in existence on the network."]}),"\n",(0,s.jsx)(n.h4,{id:"inactive-issuance",children:"Inactive Issuance"}),"\n",(0,s.jsxs)(n.p,{children:["The ",(0,s.jsx)(n.a,{href:"/docs/chain-state-values#inactive-issuance",children:"inactive issuance"})," is the total units of\noutstanding deactivated balance on the network that cannot be used for participation in governance.\nThis comprises tokens locked away in crowdloans and nomination pools."]}),"\n",(0,s.jsx)(n.h4,{id:"active-issuance",children:"Active Issuance"}),"\n",(0,s.jsx)(n.p,{children:"Active issuance = Total issuance - Inactive issuance"}),"\n",(0,s.jsx)(n.p,{children:"All the tokens under active issuance are can be used to participate in the governance on-chain."}),"\n",(0,s.jsx)(n.h2,{id:"obtaining-testnet-tokens",children:"Obtaining Testnet Tokens"}),"\n",(0,s.jsx)(n.p,{children:"DOT are required to make transactions on the Polkadot network. Tokens on Polkadot's Testnets do not\nhave any value besides allowing you to experiment with the features on the network."}),"\n",(0,s.jsxs)(n.p,{children:["Tokens for each testnet described below can be obtained ",(0,s.jsx)(n.a,{href:"https://faucet.polkadot.io/",children:(0,s.jsx)(n.strong,{children:"here"})}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"getting-tokens-on-the-paseo-testnet",children:"Getting Tokens on the Paseo Testnet"}),"\n",(0,s.jsxs)(n.p,{children:["The Paseo testnet mirrors the Polkadot runtime and it is maintained by the community. The PAS tokens\ncan be obtained ",(0,s.jsx)(n.a,{href:"https://faucet.polkadot.io/",children:"here"})," and have the same Planck conversion as\nPolkadot's native token DOT."]}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to PAS"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.0000000001 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Microdot (uPAS)"}),(0,s.jsx)(n.td,{children:"4"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"4"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0000010000 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Millidot (mPAS)"}),(0,s.jsx)(n.td,{children:"7"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"7"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.0010000000 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Dot (PAS)"}),(0,s.jsx)(n.td,{children:"10"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"10"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.0000000000 PAS"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Million (MPAS)"}),(0,s.jsx)(n.td,{children:"16"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"16"})," Planck"]}),(0,s.jsx)(n.td,{children:"1,000,000.00 PAS"})]})]})]}),"\n",(0,s.jsxs)(n.p,{children:["Users can also obtain PAS by posting ",(0,s.jsx)(n.code,{children:"!drip "})," in the Matrix chatroom\n",(0,s.jsxs)(n.a,{href:"https://matrix.to/#/#paseo_faucet:matrix.org",children:["#paseo_faucet",":matrix",".org"]}),"."]}),"\n",(0,s.jsx)(n.h3,{id:"getting-tokens-on-the-westend-testnet",children:"Getting Tokens on the Westend Testnet"}),"\n",(0,s.jsxs)(n.p,{children:["Polkadot's testnet is called ",(0,s.jsx)(n.a,{href:"/docs/maintain-networks#westend-test-network",children:"Westend"}),".\nBesides the ",(0,s.jsx)(n.a,{href:"https://faucet.polkadot.io/westend",children:"official faucet"}),", you can obtain its native WND\ntokens by posting ",(0,s.jsx)(n.code,{children:"!drip "})," in the Matrix chatroom\n",(0,s.jsxs)(n.a,{href:"https://matrix.to/#/#westend_faucet:matrix.org",children:["#westend_faucet",":matrix",".org"]}),". Your account will be\ncredited with 1 WND by default. You can also specify to get more tokens by\n",(0,s.jsx)(n.code,{children:"!drip X"}),", where X is the number of tokens."]}),"\n",(0,s.jsxs)(n.p,{children:["On the Westend network, you can also earn WNDs as rewards by\n",(0,s.jsx)(n.a,{href:"/docs/learn-validator",children:"becoming a validator"}),". Watch the video below on how to get started on Westend."]}),"\n",(0,s.jsx)("div",{className:"row",children:(0,s.jsxs)("div",{className:"col text--center",children:[(0,s.jsx)("a",{href:"https://www.youtube.com/watch?v=0ji0ccZyb3k",children:(0,s.jsx)("img",{src:"https://img.youtube.com/vi/0ji0ccZyb3k/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})}),(0,s.jsx)("p",{children:(0,s.jsx)("a",{href:"https://www.youtube.com/watch?v=0ji0ccZyb3k",children:"Testing Polkadot features on Westend"})})]})}),"\n",(0,s.jsxs)(n.table,{children:[(0,s.jsx)(n.thead,{children:(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.th,{children:"Unit"}),(0,s.jsx)(n.th,{children:"Decimal Places"}),(0,s.jsx)(n.th,{children:"Conversion to Planck"}),(0,s.jsx)(n.th,{children:"Conversion to WND"})]})}),(0,s.jsxs)(n.tbody,{children:[(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Planck"}),(0,s.jsx)(n.td,{children:"0"}),(0,s.jsx)(n.td,{children:"1 Planck"}),(0,s.jsx)(n.td,{children:"0.000000000001 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"Point"}),(0,s.jsx)(n.td,{children:"3"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"3"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000000001000 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MicroWND (uWND)"}),(0,s.jsx)(n.td,{children:"6"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"6"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.000001000000 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"MilliWND (mWND)"}),(0,s.jsx)(n.td,{children:"9"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"9"})," Planck"]}),(0,s.jsx)(n.td,{children:"0.001000000000 WND"})]}),(0,s.jsxs)(n.tr,{children:[(0,s.jsx)(n.td,{children:"WND"}),(0,s.jsx)(n.td,{children:"12"}),(0,s.jsxs)(n.td,{children:["10",(0,s.jsx)("sup",{children:"12"})," Planck"]}),(0,s.jsx)(n.td,{children:"1.000000000000 WND"})]})]})]}),"\n",(0,s.jsx)(n.h3,{id:"faucets-support",children:"Faucets support"}),"\n",(0,s.jsxs)(n.p,{children:["If you require help with using faucets, or wish to report an issue, there is a support chat\n",(0,s.jsxs)(n.a,{href:"https://matrix.to/#/#faucets-support:matrix.org",children:["#faucets-support",":matrix",".org"]}),", or you can\n",(0,s.jsx)(n.a,{href:"https://github.com/paritytech/polkadot-testnet-faucet/issues/new/choose",children:"create an issue"})," directly\nin the faucets repo"]}),"\n",(0,s.jsx)(n.h2,{id:"kusama-tokens",children:"Kusama Tokens"}),"\n",(0,s.jsxs)(n.p,{children:["Unlike testnet DOT, Kusama tokens are not freely given away. Kusama tokens are available via the\n",(0,s.jsx)(n.a,{href:"https://claim.kusama.network/",children:"claims process"})," (if you had DOT at the time of Kusama genesis) or\nthrough the ",(0,s.jsx)(n.a,{href:"/docs/learn/learn-treasury",children:"Treasury"}),". Alternatively, they can be obtained on the open\nmarket."]}),"\n",(0,s.jsx)(n.h2,{id:"polkadot-mainnet-dot",children:"Polkadot Mainnet DOT"}),"\n",(0,s.jsxs)(n.p,{children:["Polkadot Mainnet DOT are not freely given away. If you purchased DOT in the original 2017 offering,\nyou may claim them via the ",(0,s.jsx)(n.a,{href:"https://claims.polkadot.network/",children:"Polkadot claims process"}),".\nAlternatively, they are available on the open market."]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,s.jsx)(n,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},28453:(e,n,t)=>{t.d(n,{R:()=>r,x:()=>o});var s=t(96540);const i={},a=s.createContext(i);function r(e){const n=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function o(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:r(e.components),s.createElement(a.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.019de9ce.js b/assets/js/main.a16d2fb3.js similarity index 99% rename from assets/js/main.019de9ce.js rename to assets/js/main.a16d2fb3.js index 52f8604745..cce5b15cb4 100644 --- a/assets/js/main.019de9ce.js +++ b/assets/js/main.a16d2fb3.js @@ -1,2 +1,2 @@ -/*! For license information please see main.019de9ce.js.LICENSE.txt */ -(self.webpackChunk=self.webpackChunk||[]).push([[8792],{55600:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>b,E8:()=>Un,a1:()=>zn});var r=n(96540);n(40961);function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function l(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,s=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){s=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(s)throw a}}return o}}(e,t)||d(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function u(e){return function(e){if(Array.isArray(e))return p(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||d(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function d(e,t){if(e){if("string"==typeof e)return p(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?p(e,t):void 0}}function p(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);ne.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function R(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function L(e){for(var t=1;t=3||2===n&&r>=4||1===n&&r>=10);function o(t,n,r){if(a&&void 0!==r){var o=r[0].__autocomplete_algoliaCredentials,i={"X-Algolia-Application-Id":o.appId,"X-Algolia-API-Key":o.apiKey};e.apply(void 0,[t].concat(T(n),[{headers:i}]))}else e.apply(void 0,[t].concat(T(n)))}return{init:function(t,n){e("init",{appId:t,apiKey:n})},setUserToken:function(t){e("setUserToken",t)},clickedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("clickedObjectIDsAfterSearch",M(t),t[0].items)},clickedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("clickedObjectIDs",M(t),t[0].items)},clickedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["clickedFilters"].concat(n))},convertedObjectIDsAfterSearch:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("convertedObjectIDsAfterSearch",M(t),t[0].items)},convertedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&o("convertedObjectIDs",M(t),t[0].items)},convertedFilters:function(){for(var t=arguments.length,n=new Array(t),r=0;r0&&e.apply(void 0,["convertedFilters"].concat(n))},viewedObjectIDs:function(){for(var e=arguments.length,t=new Array(e),n=0;n0&&t.reduce((function(e,t){var n=t.items,r=N(t,A);return[].concat(T(e),T(function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:20,n=[],r=0;r0&&e.apply(void 0,["viewedFilters"].concat(n))}}}function B(e){var t=e.items.reduce((function(e,t){var n;return e[t.__autocomplete_indexName]=(null!==(n=e[t.__autocomplete_indexName])&&void 0!==n?n:[]).concat(t),e}),{});return Object.keys(t).map((function(e){return{index:e,items:t[e],algoliaSource:["autocomplete"]}}))}function z(e){return e.objectID&&e.__autocomplete_indexName&&e.__autocomplete_queryID}function U(e){return U="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U(e)}function $(e){return function(e){if(Array.isArray(e))return q(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return q(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?q(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function q(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n0&&G({onItemsChange:r,items:n,insights:s,state:t}))}}),0);return{name:"aa.algoliaInsightsPlugin",subscribe:function(e){var t=e.setContext,n=e.onSelect,r=e.onActive;i("addAlgoliaAgent","insights-plugin"),t({algoliaInsightsPlugin:{__algoliaSearchParameters:{clickAnalytics:!0},insights:s}}),n((function(e){var t=e.item,n=e.state,r=e.event;z(t)&&a({state:n,event:r,insights:s,item:t,insightsEvents:[V({eventName:"Item Selected"},j({item:t,items:c.current}))]})})),r((function(e){var t=e.item,n=e.state,r=e.event;z(t)&&o({state:n,event:r,insights:s,item:t,insightsEvents:[V({eventName:"Item Active"},j({item:t,items:c.current}))]})}))},onStateChange:function(e){var t=e.state;l({state:t})},__autocomplete_pluginOptions:e}}function Y(e,t){var n=t;return{then:function(t,r){return Y(e.then(X(t,n,e),X(r,n,e)),n)},catch:function(t){return Y(e.catch(X(t,n,e)),n)},finally:function(t){return t&&n.onCancelList.push(t),Y(e.finally(X(t&&function(){return n.onCancelList=[],t()},n,e)),n)},cancel:function(){n.isCanceled=!0;var e=n.onCancelList;n.onCancelList=[],e.forEach((function(e){e()}))},isCanceled:function(){return!0===n.isCanceled}}}function Z(e){return Y(e,{isCanceled:!1,onCancelList:[]})}function X(e,t,n){return e?function(n){return t.isCanceled?n:e(n)}:n}function J(e,t,n,r){if(!n)return null;if(e<0&&(null===t||null!==r&&0===t))return n+e;var a=(null===t?-1:t)+e;return a<=-1||a>=n?null===r?null:0:a}function ee(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function te(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n0},reshape:function(e){return e.sources}},e),{},{id:null!==(n=e.id)&&void 0!==n?n:"autocomplete-".concat(x++),plugins:a,initialState:be({activeItemId:null,query:"",completion:null,collections:[],isOpen:!1,status:"idle",context:{}},e.initialState),onStateChange:function(t){var n;null===(n=e.onStateChange)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onStateChange)||void 0===n?void 0:n.call(e,t)}))},onSubmit:function(t){var n;null===(n=e.onSubmit)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onSubmit)||void 0===n?void 0:n.call(e,t)}))},onReset:function(t){var n;null===(n=e.onReset)||void 0===n||n.call(e,t),a.forEach((function(e){var n;return null===(n=e.onReset)||void 0===n?void 0:n.call(e,t)}))},getSources:function(n){return Promise.all([].concat(function(e){return function(e){if(Array.isArray(e))return me(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(e){if("string"==typeof e)return me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?me(e,t):void 0}}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(a.map((function(e){return e.getSources}))),[e.getSources]).filter(Boolean).map((function(e){return function(e,t){var n=[];return Promise.resolve(e(t)).then((function(e){return Promise.all(e.filter((function(e){return Boolean(e)})).map((function(e){if(e.sourceId,n.includes(e.sourceId))throw new Error("[Autocomplete] The `sourceId` ".concat(JSON.stringify(e.sourceId)," is not unique."));n.push(e.sourceId);var t={getItemInputValue:function(e){return e.state.query},getItemUrl:function(){},onSelect:function(e){(0,e.setIsOpen)(!1)},onActive:S,onResolve:S};Object.keys(t).forEach((function(e){t[e].__default=!0}));var r=te(te({},t),e);return Promise.resolve(r)})))}))}(e,n)}))).then((function(e){return v(e)})).then((function(e){return e.map((function(e){return be(be({},e),{},{onSelect:function(n){e.onSelect(n),t.forEach((function(e){var t;return null===(t=e.onSelect)||void 0===t?void 0:t.call(e,n)}))},onActive:function(n){e.onActive(n),t.forEach((function(e){var t;return null===(t=e.onActive)||void 0===t?void 0:t.call(e,n)}))},onResolve:function(n){e.onResolve(n),t.forEach((function(e){var t;return null===(t=e.onResolve)||void 0===t?void 0:t.call(e,n)}))}})}))}))},navigator:be({navigate:function(e){var t=e.itemUrl;r.location.assign(t)},navigateNewTab:function(e){var t=e.itemUrl,n=r.open(t,"_blank","noopener");null==n||n.focus()},navigateNewWindow:function(e){var t=e.itemUrl;r.open(t,"_blank","noopener")}},e.navigator)})}function ve(e){return ve="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},ve(e)}function xe(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function we(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,r=new Array(t);n=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,Ie);Be&&a.environment.clearTimeout(Be);var l=c.setCollections,u=c.setIsOpen,d=c.setQuery,p=c.setActiveItemId,f=c.setStatus;if(d(o),p(a.defaultActiveItemId),!o&&!1===a.openOnFocus){var m,h=s.getState().collections.map((function(e){return Re(Re({},e),{},{items:[]})}));f("idle"),l(h),u(null!==(m=r.isOpen)&&void 0!==m?m:a.shouldPanelOpen({state:s.getState()}));var b=Z(ze(h).then((function(){return Promise.resolve()})));return s.pendingRequests.add(b)}f("loading"),Be=a.environment.setTimeout((function(){f("stalled")}),a.stallThreshold);var g=Z(ze(a.getSources(Re({query:o,refresh:i,state:s.getState()},c)).then((function(e){return Promise.all(e.map((function(e){return Promise.resolve(e.getItems(Re({query:o,refresh:i,state:s.getState()},c))).then((function(t){return function(e,t,n){if(a=e,Boolean(null==a?void 0:a.execute)){var r="algolia"===e.requesterId?Object.assign.apply(Object,[{}].concat(Oe(Object.keys(n.context).map((function(e){var t;return null===(t=n.context[e])||void 0===t?void 0:t.__algoliaSearchParameters}))))):{};return Ee(Ee({},e),{},{requests:e.queries.map((function(n){return{query:"algolia"===e.requesterId?Ee(Ee({},n),{},{params:Ee(Ee({},r),n.params)}):n,sourceId:t,transformResponse:e.transformResponse}}))})}var a;return{items:e,sourceId:t}}(t,e.sourceId,s.getState())}))}))).then(Pe).then((function(t){return function(e,t,n){return t.map((function(t){var r,a=e.filter((function(e){return e.sourceId===t.sourceId})),o=a.map((function(e){return e.items})),i=a[0].transformResponse,s=i?i({results:r=o,hits:r.map((function(e){return e.hits})).filter(Boolean),facetHits:r.map((function(e){var t;return null===(t=e.facetHits)||void 0===t?void 0:t.map((function(e){return{label:e.value,count:e.count,_highlightResult:{label:{value:e.highlighted}}}}))})).filter(Boolean)}):o;return t.onResolve({source:t,results:o,items:s,state:n.getState()}),s.every(Boolean),'The `getItems` function from source "'.concat(t.sourceId,'" must return an array of items but returned ').concat(JSON.stringify(void 0),".\n\nDid you forget to return items?\n\nSee: https://www.algolia.com/doc/ui-libraries/autocomplete/core-concepts/sources/#param-getitems"),{source:t,items:s}}))}(t,e,s)})).then((function(e){return function(e){var t=e.props,n=e.state,r=e.collections.reduce((function(e,t){return we(we({},e),{},ke({},t.source.sourceId,we(we({},t.source),{},{getItems:function(){return v(t.items)}})))}),{}),a=t.plugins.reduce((function(e,t){return t.reshape?t.reshape(e):e}),{sourcesBySourceId:r,state:n}).sourcesBySourceId;return v(t.reshape({sourcesBySourceId:a,sources:Object.values(a),state:n})).filter(Boolean).map((function(e){return{source:e,items:e.getItems()}}))}({collections:e,props:a,state:s.getState()})}))})))).then((function(e){var n;f("idle"),l(e);var d=a.shouldPanelOpen({state:s.getState()});u(null!==(n=r.isOpen)&&void 0!==n?n:a.openOnFocus&&!o&&d||d);var p=ae(s.getState());if(null!==s.getState().activeItemId&&p){var m=p.item,h=p.itemInputValue,b=p.itemUrl,g=p.source;g.onActive(Re({event:t,item:m,itemInputValue:h,itemUrl:b,refresh:i,source:g,state:s.getState()},c))}})).finally((function(){f("idle"),Be&&a.environment.clearTimeout(Be)}));return s.pendingRequests.add(g)}function $e(e){return $e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},$e(e)}var qe=["event","props","refresh","store"];function He(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function Ve(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}function ot(e){var t=e.props,n=e.refresh,r=e.store,a=at(e,Ge),o=function(e,t){return void 0!==t?"".concat(e,"-").concat(t):e};return{getEnvironmentProps:function(e){var n=e.inputElement,a=e.formElement,o=e.panelElement;function i(e){!r.getState().isOpen&&r.pendingRequests.isEmpty()||e.target===n||!1===[a,o].some((function(t){return(n=t)===(r=e.target)||n.contains(r);var n,r}))&&(r.dispatch("blur",null),t.debug||r.pendingRequests.cancelAll())}return nt({onTouchStart:i,onMouseDown:i,onTouchMove:function(e){!1!==r.getState().isOpen&&n===t.environment.document.activeElement&&e.target!==n&&n.blur()}},at(e,Qe))},getRootProps:function(e){return nt({role:"combobox","aria-expanded":r.getState().isOpen,"aria-haspopup":"listbox","aria-owns":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label")},e)},getFormProps:function(e){return e.inputElement,nt({action:"",noValidate:!0,role:"search",onSubmit:function(o){var i;o.preventDefault(),t.onSubmit(nt({event:o,refresh:n,state:r.getState()},a)),r.dispatch("submit",null),null===(i=e.inputElement)||void 0===i||i.blur()},onReset:function(o){var i;o.preventDefault(),t.onReset(nt({event:o,refresh:n,state:r.getState()},a)),r.dispatch("reset",null),null===(i=e.inputElement)||void 0===i||i.focus()}},at(e,Ye))},getLabelProps:function(e){var n=e||{},r=n.sourceIndex,a=at(n,Xe);return nt({htmlFor:"".concat(o(t.id,r),"-input"),id:"".concat(o(t.id,r),"-label")},a)},getInputProps:function(e){var o;function i(e){(t.openOnFocus||Boolean(r.getState().query))&&Ue(nt({event:e,props:t,query:r.getState().completion||r.getState().query,refresh:n,store:r},a)),r.dispatch("focus",null)}var s=e||{},c=(s.inputElement,s.maxLength),l=void 0===c?512:c,u=at(s,Ze),d=ae(r.getState()),p=function(e){return Boolean(e&&e.match(oe))}((null===(o=t.environment.navigator)||void 0===o?void 0:o.userAgent)||""),f=null!=d&&d.itemUrl&&!p?"go":"search";return nt({"aria-autocomplete":"both","aria-activedescendant":r.getState().isOpen&&null!==r.getState().activeItemId?"".concat(t.id,"-item-").concat(r.getState().activeItemId):void 0,"aria-controls":r.getState().isOpen?"".concat(t.id,"-list"):void 0,"aria-labelledby":"".concat(t.id,"-label"),value:r.getState().completion||r.getState().query,id:"".concat(t.id,"-input"),autoComplete:"off",autoCorrect:"off",autoCapitalize:"off",enterKeyHint:f,spellCheck:"false",autoFocus:t.autoFocus,placeholder:t.placeholder,maxLength:l,type:"search",onChange:function(e){Ue(nt({event:e,props:t,query:e.currentTarget.value.slice(0,l),refresh:n,store:r},a))},onKeyDown:function(e){!function(e){var t=e.event,n=e.props,r=e.refresh,a=e.store,o=function(e,t){if(null==e)return{};var n,r,a=function(e,t){if(null==e)return{};var n,r,a={},o=Object.keys(e);for(r=0;r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}(e,qe);if("ArrowUp"===t.key||"ArrowDown"===t.key){var i=function(){var e=n.environment.document.getElementById("".concat(n.id,"-item-").concat(a.getState().activeItemId));e&&(e.scrollIntoViewIfNeeded?e.scrollIntoViewIfNeeded(!1):e.scrollIntoView(!1))},s=function(){var e=ae(a.getState());if(null!==a.getState().activeItemId&&e){var n=e.item,i=e.itemInputValue,s=e.itemUrl,c=e.source;c.onActive(Ve({event:t,item:n,itemInputValue:i,itemUrl:s,refresh:r,source:c,state:a.getState()},o))}};t.preventDefault(),!1===a.getState().isOpen&&(n.openOnFocus||Boolean(a.getState().query))?Ue(Ve({event:t,props:n,query:a.getState().query,refresh:r,store:a},o)).then((function(){a.dispatch(t.key,{nextActiveItemId:n.defaultActiveItemId}),s(),setTimeout(i,0)})):(a.dispatch(t.key,{}),s(),i())}else if("Escape"===t.key)t.preventDefault(),a.dispatch(t.key,null),a.pendingRequests.cancelAll();else if("Tab"===t.key)a.dispatch("blur",null),a.pendingRequests.cancelAll();else if("Enter"===t.key){if(null===a.getState().activeItemId||a.getState().collections.every((function(e){return 0===e.items.length})))return void(n.debug||a.pendingRequests.cancelAll());t.preventDefault();var c=ae(a.getState()),l=c.item,u=c.itemInputValue,d=c.itemUrl,p=c.source;if(t.metaKey||t.ctrlKey)void 0!==d&&(p.onSelect(Ve({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),n.navigator.navigateNewTab({itemUrl:d,item:l,state:a.getState()}));else if(t.shiftKey)void 0!==d&&(p.onSelect(Ve({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),n.navigator.navigateNewWindow({itemUrl:d,item:l,state:a.getState()}));else if(t.altKey);else{if(void 0!==d)return p.onSelect(Ve({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o)),void n.navigator.navigate({itemUrl:d,item:l,state:a.getState()});Ue(Ve({event:t,nextState:{isOpen:!1},props:n,query:u,refresh:r,store:a},o)).then((function(){p.onSelect(Ve({event:t,item:l,itemInputValue:u,itemUrl:d,refresh:r,source:p,state:a.getState()},o))}))}}}(nt({event:e,props:t,refresh:n,store:r},a))},onFocus:i,onBlur:S,onClick:function(n){e.inputElement!==t.environment.document.activeElement||r.getState().isOpen||i(n)}},u)},getPanelProps:function(e){return nt({onMouseDown:function(e){e.preventDefault()},onMouseLeave:function(){r.dispatch("mouseleave",null)}},e)},getListProps:function(e){var n=e||{},r=n.sourceIndex,a=at(n,Je);return nt({role:"listbox","aria-labelledby":"".concat(o(t.id,r),"-label"),id:"".concat(o(t.id,r),"-list")},a)},getItemProps:function(e){var i=e.item,s=e.source,c=e.sourceIndex,l=at(e,et);return nt({id:"".concat(o(t.id,c),"-item-").concat(i.__autocomplete_id),role:"option","aria-selected":r.getState().activeItemId===i.__autocomplete_id,onMouseMove:function(e){if(i.__autocomplete_id!==r.getState().activeItemId){r.dispatch("mousemove",i.__autocomplete_id);var t=ae(r.getState());if(null!==r.getState().activeItemId&&t){var o=t.item,s=t.itemInputValue,c=t.itemUrl,l=t.source;l.onActive(nt({event:e,item:o,itemInputValue:s,itemUrl:c,refresh:n,source:l,state:r.getState()},a))}}},onMouseDown:function(e){e.preventDefault()},onClick:function(e){var o=s.getItemInputValue({item:i,state:r.getState()}),c=s.getItemUrl({item:i,state:r.getState()});(c?Promise.resolve():Ue(nt({event:e,nextState:{isOpen:!1},props:t,query:o,refresh:n,store:r},a))).then((function(){s.onSelect(nt({event:e,item:i,itemInputValue:o,itemUrl:c,refresh:n,source:s,state:r.getState()},a))}))}},l)}}}function it(e){return it="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},it(e)}function st(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function ct(e){for(var t=1;t0&&r.createElement("div",{className:"DocSearch-NoResults-Prefill-List"},r.createElement("p",{className:"DocSearch-Help"},l,":"),r.createElement("ul",null,h.slice(0,3).reduce((function(e,t){return[].concat(u(e),[r.createElement("li",{key:t},r.createElement("button",{className:"DocSearch-Prefill",key:t,type:"button",onClick:function(){a.setQuery(t.toLowerCase()+" "),a.refresh(),a.inputRef.current.focus()}},t))])}),[]))),a.getMissingResultsUrl&&r.createElement("p",{className:"DocSearch-Help"},"".concat(p," "),r.createElement("a",{href:a.getMissingResultsUrl({query:a.state.query}),target:"_blank",rel:"noopener noreferrer"},m)))}var zt=["hit","attribute","tagName"];function Ut(e,t){return t.split(".").reduce((function(e,t){return null!=e&&e[t]?e[t]:null}),e)}function $t(e){var t=e.hit,n=e.attribute,a=e.tagName,i=void 0===a?"span":a,s=c(e,zt);return(0,r.createElement)(i,o(o({},s),{},{dangerouslySetInnerHTML:{__html:Ut(t,"_snippetResult.".concat(n,".value"))||Ut(t,n)}}))}function qt(e){return e.collection&&0!==e.collection.items.length?r.createElement("section",{className:"DocSearch-Hits"},r.createElement("div",{className:"DocSearch-Hit-source"},e.title),r.createElement("ul",e.getListProps(),e.collection.items.map((function(t,n){return r.createElement(Ht,s({key:[e.title,t.objectID].join(":"),item:t,index:n},e))})))):null}function Ht(e){var t=e.item,n=e.index,a=e.renderIcon,o=e.renderAction,i=e.getItemProps,c=e.onItemClick,u=e.collection,d=e.hitComponent,p=l(r.useState(!1),2),f=p[0],m=p[1],h=l(r.useState(!1),2),b=h[0],g=h[1],y=r.useRef(null),v=d;return r.createElement("li",s({className:["DocSearch-Hit",t.__docsearch_parent&&"DocSearch-Hit--Child",f&&"DocSearch-Hit--deleting",b&&"DocSearch-Hit--favoriting"].filter(Boolean).join(" "),onTransitionEnd:function(){y.current&&y.current()}},i({item:t,source:u.source,onClick:function(e){c(t,e)}})),r.createElement(v,{hit:t},r.createElement("div",{className:"DocSearch-Hit-Container"},a({item:t,index:n}),t.hierarchy[t.type]&&"lvl1"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement($t,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.lvl1"}),t.content&&r.createElement($t,{className:"DocSearch-Hit-path",hit:t,attribute:"content"})),t.hierarchy[t.type]&&("lvl2"===t.type||"lvl3"===t.type||"lvl4"===t.type||"lvl5"===t.type||"lvl6"===t.type)&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement($t,{className:"DocSearch-Hit-title",hit:t,attribute:"hierarchy.".concat(t.type)}),r.createElement($t,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),"content"===t.type&&r.createElement("div",{className:"DocSearch-Hit-content-wrapper"},r.createElement($t,{className:"DocSearch-Hit-title",hit:t,attribute:"content"}),r.createElement($t,{className:"DocSearch-Hit-path",hit:t,attribute:"hierarchy.lvl1"})),o({item:t,runDeleteTransition:function(e){m(!0),y.current=e},runFavoriteTransition:function(e){g(!0),y.current=e}}))))}function Vt(e,t,n){return e.reduce((function(e,r){var a=t(r);return e.hasOwnProperty(a)||(e[a]=[]),e[a].length<(n||5)&&e[a].push(r),e}),{})}function Wt(e){return e}function Kt(e){return 1===e.button||e.altKey||e.ctrlKey||e.metaKey||e.shiftKey}function Gt(){}var Qt=/(|<\/mark>)/g,Yt=RegExp(Qt.source);function Zt(e){var t,n,r=e;if(!r.__docsearch_parent&&!e._highlightResult)return e.hierarchy.lvl0;var a=((r.__docsearch_parent?null===(t=r.__docsearch_parent)||void 0===t||null===(t=t._highlightResult)||void 0===t||null===(t=t.hierarchy)||void 0===t?void 0:t.lvl0:null===(n=e._highlightResult)||void 0===n||null===(n=n.hierarchy)||void 0===n?void 0:n.lvl0)||{}).value;return a&&Yt.test(a)?a.replace(Qt,""):a}function Xt(e){return r.createElement("div",{className:"DocSearch-Dropdown-Container"},e.state.collections.map((function(t){if(0===t.items.length)return null;var n=Zt(t.items[0]);return r.createElement(qt,s({},e,{key:t.source.sourceId,title:n,collection:t,renderIcon:function(e){var n,a=e.item,o=e.index;return r.createElement(r.Fragment,null,a.__docsearch_parent&&r.createElement("svg",{className:"DocSearch-Hit-Tree",viewBox:"0 0 24 54"},r.createElement("g",{stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"},a.__docsearch_parent!==(null===(n=t.items[o+1])||void 0===n?void 0:n.__docsearch_parent)?r.createElement("path",{d:"M8 6v21M20 27H8.3"}):r.createElement("path",{d:"M8 6v42M20 27H8.3"}))),r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Tt,{type:a.type})))},renderAction:function(){return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement(At,null))}}))})),e.resultsFooterComponent&&r.createElement("section",{className:"DocSearch-HitsFooter"},r.createElement(e.resultsFooterComponent,{state:e.state})))}var Jt=["translations"];function en(e){var t=e.translations,n=void 0===t?{}:t,a=c(e,Jt),o=n.recentSearchesTitle,i=void 0===o?"Recent":o,l=n.noRecentSearchesText,u=void 0===l?"No recent searches":l,d=n.saveRecentSearchButtonTitle,p=void 0===d?"Save this search":d,f=n.removeRecentSearchButtonTitle,m=void 0===f?"Remove this search from history":f,h=n.favoriteSearchesTitle,b=void 0===h?"Favorite":h,g=n.removeFavoriteSearchButtonTitle,y=void 0===g?"Remove this search from favorites":g;return"idle"===a.state.status&&!1===a.hasCollections?a.disableUserPersonalization?null:r.createElement("div",{className:"DocSearch-StartScreen"},r.createElement("p",{className:"DocSearch-Help"},u)):!1===a.hasCollections?null:r.createElement("div",{className:"DocSearch-Dropdown-Container"},r.createElement(qt,s({},a,{title:i,collection:a.state.collections[0],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Ot,null))},renderAction:function(e){var t=e.item,n=e.runFavoriteTransition,o=e.runDeleteTransition;return r.createElement(r.Fragment,null,r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:p,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){a.favoriteSearches.add(t),a.recentSearches.remove(t),a.refresh()}))}},r.createElement(Rt,null))),r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:m,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),o((function(){a.recentSearches.remove(t),a.refresh()}))}},r.createElement(Ct,null))))}})),r.createElement(qt,s({},a,{title:b,collection:a.state.collections[1],renderIcon:function(){return r.createElement("div",{className:"DocSearch-Hit-icon"},r.createElement(Rt,null))},renderAction:function(e){var t=e.item,n=e.runDeleteTransition;return r.createElement("div",{className:"DocSearch-Hit-action"},r.createElement("button",{className:"DocSearch-Hit-action-button",title:y,type:"submit",onClick:function(e){e.preventDefault(),e.stopPropagation(),n((function(){a.favoriteSearches.remove(t),a.refresh()}))}},r.createElement(Ct,null)))}})))}var tn=["translations"],nn=r.memo((function(e){var t=e.translations,n=void 0===t?{}:t,a=c(e,tn);if("error"===a.state.status)return r.createElement(Mt,{translations:null==n?void 0:n.errorScreen});var o=a.state.collections.some((function(e){return e.items.length>0}));return a.state.query?!1===o?r.createElement(Bt,s({},a,{translations:null==n?void 0:n.noResultsScreen})):r.createElement(Xt,a):r.createElement(en,s({},a,{hasCollections:o,translations:null==n?void 0:n.startScreen}))}),(function(e,t){return"loading"===t.state.status||"stalled"===t.state.status})),rn=["translations"];function an(e){var t=e.translations,n=void 0===t?{}:t,a=c(e,rn),o=n.resetButtonTitle,i=void 0===o?"Clear the query":o,l=n.resetButtonAriaLabel,u=void 0===l?"Clear the query":l,d=n.cancelButtonText,p=void 0===d?"Cancel":d,f=n.cancelButtonAriaLabel,h=void 0===f?"Cancel":f,b=n.searchInputLabel,g=void 0===b?"Search":b,y=a.getFormProps({inputElement:a.inputRef.current}).onReset;return r.useEffect((function(){a.autoFocus&&a.inputRef.current&&a.inputRef.current.focus()}),[a.autoFocus,a.inputRef]),r.useEffect((function(){a.isFromSelection&&a.inputRef.current&&a.inputRef.current.select()}),[a.isFromSelection,a.inputRef]),r.createElement(r.Fragment,null,r.createElement("form",{className:"DocSearch-Form",onSubmit:function(e){e.preventDefault()},onReset:y},r.createElement("label",s({className:"DocSearch-MagnifierLabel"},a.getLabelProps()),r.createElement(m,null),r.createElement("span",{className:"DocSearch-VisuallyHiddenForAccessibility"},g)),r.createElement("div",{className:"DocSearch-LoadingIndicator"},r.createElement(jt,null)),r.createElement("input",s({className:"DocSearch-Input",ref:a.inputRef},a.getInputProps({inputElement:a.inputRef.current,autoFocus:a.autoFocus,maxLength:64}))),r.createElement("button",{type:"reset",title:i,className:"DocSearch-Reset","aria-label":u,hidden:!a.state.query},r.createElement(Ct,null))),r.createElement("button",{className:"DocSearch-Cancel",type:"reset","aria-label":h,onClick:a.onClose},p))}var on=["_highlightResult","_snippetResult"];function sn(e){var t=e.key,n=e.limit,r=void 0===n?5:n,a=function(e){return!1===function(){var e="__TEST_KEY__";try{return localStorage.setItem(e,""),localStorage.removeItem(e),!0}catch(e){return!1}}()?{setItem:function(){},getItem:function(){return[]}}:{setItem:function(t){return window.localStorage.setItem(e,JSON.stringify(t))},getItem:function(){var t=window.localStorage.getItem(e);return t?JSON.parse(t):[]}}}(t),o=a.getItem().slice(0,r);return{add:function(e){var t=e,n=(t._highlightResult,t._snippetResult,c(t,on)),i=o.findIndex((function(e){return e.objectID===n.objectID}));i>-1&&o.splice(i,1),o.unshift(n),o=o.slice(0,r),a.setItem(o)},remove:function(e){o=o.filter((function(t){return t.objectID!==e.objectID})),a.setItem(o)},getAll:function(){return o}}}function cn(e){const t=`algoliasearch-client-js-${e.key}`;let n;const r=()=>(void 0===n&&(n=e.localStorage||window.localStorage),n),a=()=>JSON.parse(r().getItem(t)||"{}"),o=e=>{r().setItem(t,JSON.stringify(e))};return{get:(t,n,r={miss:()=>Promise.resolve()})=>Promise.resolve().then((()=>{(()=>{const t=e.timeToLive?1e3*e.timeToLive:null,n=a(),r=Object.fromEntries(Object.entries(n).filter((([,e])=>void 0!==e.timestamp)));if(o(r),!t)return;const i=Object.fromEntries(Object.entries(r).filter((([,e])=>{const n=(new Date).getTime();return!(e.timestamp+tPromise.all([e?e.value:n(),void 0!==e]))).then((([e,t])=>Promise.all([e,t||r.miss(e)]))).then((([e])=>e)),set:(e,n)=>Promise.resolve().then((()=>{const o=a();return o[JSON.stringify(e)]={timestamp:(new Date).getTime(),value:n},r().setItem(t,JSON.stringify(o)),n})),delete:e=>Promise.resolve().then((()=>{const n=a();delete n[JSON.stringify(e)],r().setItem(t,JSON.stringify(n))})),clear:()=>Promise.resolve().then((()=>{r().removeItem(t)}))}}function ln(e){const t=[...e.caches],n=t.shift();return void 0===n?{get:(e,t,n={miss:()=>Promise.resolve()})=>t().then((e=>Promise.all([e,n.miss(e)]))).then((([e])=>e)),set:(e,t)=>Promise.resolve(t),delete:e=>Promise.resolve(),clear:()=>Promise.resolve()}:{get:(e,r,a={miss:()=>Promise.resolve()})=>n.get(e,r,a).catch((()=>ln({caches:t}).get(e,r,a))),set:(e,r)=>n.set(e,r).catch((()=>ln({caches:t}).set(e,r))),delete:e=>n.delete(e).catch((()=>ln({caches:t}).delete(e))),clear:()=>n.clear().catch((()=>ln({caches:t}).clear()))}}function un(e={serializable:!0}){let t={};return{get(n,r,a={miss:()=>Promise.resolve()}){const o=JSON.stringify(n);if(o in t)return Promise.resolve(e.serializable?JSON.parse(t[o]):t[o]);const i=r(),s=a&&a.miss||(()=>Promise.resolve());return i.then((e=>s(e))).then((()=>i))},set:(n,r)=>(t[JSON.stringify(n)]=e.serializable?JSON.stringify(r):r,Promise.resolve(r)),delete:e=>(delete t[JSON.stringify(e)],Promise.resolve()),clear:()=>(t={},Promise.resolve())}}function dn(e){let t=e.length-1;for(;t>0;t--){const n=Math.floor(Math.random()*(t+1)),r=e[t];e[t]=e[n],e[n]=r}return e}function pn(e,t){return t?(Object.keys(t).forEach((n=>{e[n]=t[n](e)})),e):e}function fn(e,...t){let n=0;return e.replace(/%s/g,(()=>encodeURIComponent(t[n++])))}const mn={WithinQueryParameters:0,WithinHeaders:1};function hn(e,t){const n=e||{},r=n.data||{};return Object.keys(n).forEach((e=>{-1===["timeout","headers","queryParameters","data","cacheable"].indexOf(e)&&(r[e]=n[e])})),{data:Object.entries(r).length>0?r:void 0,timeout:n.timeout||t,headers:n.headers||{},queryParameters:n.queryParameters||{},cacheable:n.cacheable}}const bn={Read:1,Write:2,Any:3};function gn(e,t=1){return{...e,status:t,lastUpdate:Date.now()}}function yn(e){return"string"==typeof e?{protocol:"https",url:e,accept:bn.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||bn.Any}}const vn="GET",xn="POST";function wn(e,t,n,r){const a=[],o=function(e,t){if(e.method===vn||void 0===e.data&&void 0===t.data)return;const n=Array.isArray(e.data)?e.data:{...e.data,...t.data};return JSON.stringify(n)}(n,r),i=function(e,t){const n={...e.headers,...t.headers},r={};return Object.keys(n).forEach((e=>{const t=n[e];r[e.toLowerCase()]=t})),r}(e,r),s=n.method,c=n.method!==vn?{}:{...n.data,...r.data},l={"x-algolia-agent":e.userAgent.value,...e.queryParameters,...c,...r.queryParameters};let u=0;const d=(t,c)=>{const p=t.pop();if(void 0===p)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:En(a)};const f={data:o,headers:i,method:s,url:_n(p,n.path,l),connectTimeout:c(u,e.timeouts.connect),responseTimeout:c(u,r.timeout)},m=e=>{const n={request:f,response:e,host:p,triesLeft:t.length};return a.push(n),n},h={onSuccess:e=>function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e),onRetry(n){const r=m(n);return n.isTimedOut&&u++,Promise.all([e.logger.info("Retryable failure",jn(r)),e.hostsCache.set(p,gn(p,n.isTimedOut?3:2))]).then((()=>d(t,c)))},onFail(e){throw m(e),function({content:e,status:t},n){let r=e;try{r=JSON.parse(e).message}catch(e){}return function(e,t,n){return{name:"ApiError",message:e,status:t,transporterStackTrace:n}}(r,t,n)}(e,En(a))}};return e.requester.send(f).then((e=>((e,t)=>(e=>{const t=e.status;return e.isTimedOut||(({isTimedOut:e,status:t})=>!e&&!~~t)(e)||2!=~~(t/100)&&4!=~~(t/100)})(e)?t.onRetry(e):(({status:e})=>2==~~(e/100))(e)?t.onSuccess(e):t.onFail(e))(e,h)))};return function(e,t){return Promise.all(t.map((t=>e.get(t,(()=>Promise.resolve(gn(t))))))).then((e=>{const n=e.filter((e=>function(e){return 1===e.status||Date.now()-e.lastUpdate>12e4}(e))),r=e.filter((e=>function(e){return 3===e.status&&Date.now()-e.lastUpdate<=12e4}(e))),a=[...n,...r];return{getTimeout:(e,t)=>(0===r.length&&0===e?1:r.length+3+e)*t,statelessHosts:a.length>0?a.map((e=>yn(e))):t}}))}(e.hostsCache,t).then((e=>d([...e.statelessHosts].reverse(),e.getTimeout)))}function kn(e){const t={value:`Algolia for JavaScript (${e})`,add(e){const n=`; ${e.segment}${void 0!==e.version?` (${e.version})`:""}`;return-1===t.value.indexOf(n)&&(t.value=`${t.value}${n}`),t}};return t}function _n(e,t,n){const r=Sn(n);let a=`${e.protocol}://${e.url}/${"/"===t.charAt(0)?t.substr(1):t}`;return r.length&&(a+=`?${r}`),a}function Sn(e){return Object.keys(e).map((t=>{return fn("%s=%s",t,(n=e[t],"[object Object]"===Object.prototype.toString.call(n)||"[object Array]"===Object.prototype.toString.call(n)?JSON.stringify(e[t]):e[t]));var n})).join("&")}function En(e){return e.map((e=>jn(e)))}function jn(e){const t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return{...e,request:{...e.request,headers:{...e.request.headers,...t}}}}const On=e=>{const t=e.appId,n=function(e,t,n){const r={"x-algolia-api-key":n,"x-algolia-application-id":t};return{headers:()=>e===mn.WithinHeaders?r:{},queryParameters:()=>e===mn.WithinQueryParameters?r:{}}}(void 0!==e.authMode?e.authMode:mn.WithinHeaders,t,e.apiKey),r=function(e){const{hostsCache:t,logger:n,requester:r,requestsCache:a,responsesCache:o,timeouts:i,userAgent:s,hosts:c,queryParameters:l,headers:u}=e,d={hostsCache:t,logger:n,requester:r,requestsCache:a,responsesCache:o,timeouts:i,userAgent:s,headers:u,queryParameters:l,hosts:c.map((e=>yn(e))),read(e,t){const n=hn(t,d.timeouts.read),r=()=>wn(d,d.hosts.filter((e=>!!(e.accept&bn.Read))),e,n);if(!0!==(void 0!==n.cacheable?n.cacheable:e.cacheable))return r();const a={request:e,mappedRequestOptions:n,transporter:{queryParameters:d.queryParameters,headers:d.headers}};return d.responsesCache.get(a,(()=>d.requestsCache.get(a,(()=>d.requestsCache.set(a,r()).then((e=>Promise.all([d.requestsCache.delete(a),e])),(e=>Promise.all([d.requestsCache.delete(a),Promise.reject(e)]))).then((([e,t])=>t))))),{miss:e=>d.responsesCache.set(a,e)})},write:(e,t)=>wn(d,d.hosts.filter((e=>!!(e.accept&bn.Write))),e,hn(t,d.timeouts.write))};return d}({hosts:[{url:`${t}-dsn.algolia.net`,accept:bn.Read},{url:`${t}.algolia.net`,accept:bn.Write}].concat(dn([{url:`${t}-1.algolianet.com`},{url:`${t}-2.algolianet.com`},{url:`${t}-3.algolianet.com`}])),...e,headers:{...n.headers(),"content-type":"application/x-www-form-urlencoded",...e.headers},queryParameters:{...n.queryParameters(),...e.queryParameters}}),a={transporter:r,appId:t,addAlgoliaAgent(e,t){r.userAgent.add({segment:e,version:t})},clearCache:()=>Promise.all([r.requestsCache.clear(),r.responsesCache.clear()]).then((()=>{}))};return pn(a,e.methods)},Cn=e=>(t,n)=>t.method===vn?e.transporter.read(t,n):e.transporter.write(t,n),An=e=>(t,n={})=>pn({transporter:e.transporter,appId:e.appId,indexName:t},n.methods),Pn=e=>(t,n)=>{const r=t.map((e=>({...e,params:Sn(e.params||{})})));return e.transporter.read({method:xn,path:"1/indexes/*/queries",data:{requests:r},cacheable:!0},n)},Tn=e=>(t,n)=>Promise.all(t.map((t=>{const{facetName:r,facetQuery:a,...o}=t.params;return An(e)(t.indexName,{methods:{searchForFacetValues:Rn}}).searchForFacetValues(r,a,{...n,...o})}))),In=e=>(t,n,r)=>e.transporter.read({method:xn,path:fn("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:n},cacheable:!0},r),Nn=e=>(t,n)=>e.transporter.read({method:xn,path:fn("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},n),Rn=e=>(t,n,r)=>e.transporter.read({method:xn,path:fn("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:n},cacheable:!0},r),Ln=1,Dn=2,Mn=3;function Fn(e,t,n){const r={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:e=>new Promise((t=>{const n=new XMLHttpRequest;n.open(e.method,e.url,!0),Object.keys(e.headers).forEach((t=>n.setRequestHeader(t,e.headers[t])));const r=(e,r)=>setTimeout((()=>{n.abort(),t({status:0,content:r,isTimedOut:!0})}),1e3*e),a=r(e.connectTimeout,"Connection timeout");let o;n.onreadystatechange=()=>{n.readyState>n.OPENED&&void 0===o&&(clearTimeout(a),o=r(e.responseTimeout,"Socket timeout"))},n.onerror=()=>{0===n.status&&(clearTimeout(a),clearTimeout(o),t({content:n.responseText||"Network request failed",status:n.status,isTimedOut:!1}))},n.onload=()=>{clearTimeout(a),clearTimeout(o),t({content:n.responseText,status:n.status,isTimedOut:!1})},n.send(e.data)}))},logger:(a=Mn,{debug:(e,t)=>(Ln>=a&&console.debug(e,t),Promise.resolve()),info:(e,t)=>(Dn>=a&&console.info(e,t),Promise.resolve()),error:(e,t)=>(console.error(e,t),Promise.resolve())}),responsesCache:un(),requestsCache:un({serializable:!1}),hostsCache:ln({caches:[cn({key:`4.19.1-${e}`}),un()]}),userAgent:kn("4.19.1").add({segment:"Browser",version:"lite"}),authMode:mn.WithinQueryParameters};var a;return On({...r,...n,methods:{search:Pn,searchForFacetValues:Tn,multipleQueries:Pn,multipleSearchForFacetValues:Tn,customRequest:Cn,initIndex:e=>t=>An(e)(t,{methods:{search:Nn,searchForFacetValues:Rn,findAnswers:In}})}})}Fn.version="4.19.1";var Bn=["footer","searchBox"];function zn(e){var t=e.appId,n=e.apiKey,a=e.indexName,i=e.placeholder,u=void 0===i?"Search docs":i,d=e.searchParameters,p=e.maxResultsPerGroup,f=e.onClose,m=void 0===f?Gt:f,h=e.transformItems,b=void 0===h?Wt:h,g=e.hitComponent,y=void 0===g?Et:g,v=e.resultsFooterComponent,x=void 0===v?function(){return null}:v,w=e.navigator,k=e.initialScrollY,_=void 0===k?0:k,S=e.transformSearchClient,E=void 0===S?Wt:S,j=e.disableUserPersonalization,O=void 0!==j&&j,C=e.initialQuery,A=void 0===C?"":C,P=e.translations,T=void 0===P?{}:P,I=e.getMissingResultsUrl,N=e.insights,R=void 0!==N&&N,L=T.footer,D=T.searchBox,M=c(T,Bn),F=l(r.useState({query:"",collections:[],completion:null,context:{},isOpen:!1,activeItemId:null,status:"idle"}),2),B=F[0],z=F[1],U=r.useRef(null),$=r.useRef(null),q=r.useRef(null),H=r.useRef(null),V=r.useRef(null),W=r.useRef(10),K=r.useRef("undefined"!=typeof window?window.getSelection().toString().slice(0,64):"").current,G=r.useRef(A||K).current,Q=function(e,t,n){return r.useMemo((function(){var r=Fn(e,t);return r.addAlgoliaAgent("docsearch","3.6.1"),!1===/docsearch.js \(.*\)/.test(r.transporter.userAgent.value)&&r.addAlgoliaAgent("docsearch-react","3.6.1"),n(r)}),[e,t,n])}(t,n,E),Y=r.useRef(sn({key:"__DOCSEARCH_FAVORITE_SEARCHES__".concat(a),limit:10})).current,Z=r.useRef(sn({key:"__DOCSEARCH_RECENT_SEARCHES__".concat(a),limit:0===Y.getAll().length?7:4})).current,X=r.useCallback((function(e){if(!O){var t="content"===e.type?e.__docsearch_parent:e;t&&-1===Y.getAll().findIndex((function(e){return e.objectID===t.objectID}))&&Z.add(t)}}),[Y,Z,O]),J=r.useCallback((function(e){if(B.context.algoliaInsightsPlugin&&e.__autocomplete_id){var t=e,n={eventName:"Item Selected",index:t.__autocomplete_indexName,items:[t],positions:[e.__autocomplete_id],queryID:t.__autocomplete_queryID};B.context.algoliaInsightsPlugin.insights.clickedObjectIDsAfterSearch(n)}}),[B.context.algoliaInsightsPlugin]),ee=r.useMemo((function(){return wt({id:"docsearch",defaultActiveItemId:0,placeholder:u,openOnFocus:!0,initialState:{query:G,context:{searchSuggestions:[]}},insights:R,navigator:w,onStateChange:function(e){z(e.state)},getSources:function(e){var r=e.query,i=e.state,s=e.setContext,c=e.setStatus;if(!r)return O?[]:[{sourceId:"recentSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),Kt(n)||m()},getItemUrl:function(e){return e.item.url},getItems:function(){return Z.getAll()}},{sourceId:"favoriteSearches",onSelect:function(e){var t=e.item,n=e.event;X(t),Kt(n)||m()},getItemUrl:function(e){return e.item.url},getItems:function(){return Y.getAll()}}];var l=Boolean(R);return Q.search([{query:r,indexName:a,params:o({attributesToRetrieve:["hierarchy.lvl0","hierarchy.lvl1","hierarchy.lvl2","hierarchy.lvl3","hierarchy.lvl4","hierarchy.lvl5","hierarchy.lvl6","content","type","url"],attributesToSnippet:["hierarchy.lvl1:".concat(W.current),"hierarchy.lvl2:".concat(W.current),"hierarchy.lvl3:".concat(W.current),"hierarchy.lvl4:".concat(W.current),"hierarchy.lvl5:".concat(W.current),"hierarchy.lvl6:".concat(W.current),"content:".concat(W.current)],snippetEllipsisText:"\u2026",highlightPreTag:"",highlightPostTag:"",hitsPerPage:20,clickAnalytics:l},d)}]).catch((function(e){throw"RetryError"===e.name&&c("error"),e})).then((function(e){var r=e.results[0],c=r.hits,u=r.nbHits,d=Vt(c,(function(e){return Zt(e)}),p);i.context.searchSuggestions.length0&&(re(),V.current&&V.current.focus())}),[G,re]),r.useEffect((function(){function e(){if($.current){var e=.01*window.innerHeight;$.current.style.setProperty("--docsearch-vh","".concat(e,"px"))}}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[]),r.createElement("div",s({ref:U},ne({"aria-expanded":!0}),{className:["DocSearch","DocSearch-Container","stalled"===B.status&&"DocSearch-Container--Stalled","error"===B.status&&"DocSearch-Container--Errored"].filter(Boolean).join(" "),role:"button",tabIndex:0,onMouseDown:function(e){e.target===e.currentTarget&&m()}}),r.createElement("div",{className:"DocSearch-Modal",ref:$},r.createElement("header",{className:"DocSearch-SearchBar",ref:q},r.createElement(an,s({},ee,{state:B,autoFocus:0===G.length,inputRef:V,isFromSelection:Boolean(G)&&G===K,translations:D,onClose:m}))),r.createElement("div",{className:"DocSearch-Dropdown",ref:H},r.createElement(nn,s({},ee,{indexName:a,state:B,hitComponent:y,resultsFooterComponent:x,disableUserPersonalization:O,recentSearches:Z,favoriteSearches:Y,inputRef:V,translations:M,getMissingResultsUrl:I,onItemClick:function(e,t){J(e),X(e),Kt(t)||m()}}))),r.createElement("footer",{className:"DocSearch-Footer"},r.createElement(St,{translations:L}))))}function Un(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,o=e.onInput,i=e.searchButtonRef;r.useEffect((function(){function e(e){var r;(27===e.keyCode&&t||"k"===(null===(r=e.key)||void 0===r?void 0:r.toLowerCase())&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),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)}}),[t,n,a,o,i])}},1459:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});n(96540);var r=n(53259),a=n.n(r),o=n(55602);const i={"0058b4c6":[function(){return n.e(849).then(n.t.bind(n,14912,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-175.json",14912],"06597bc8":[function(){return Promise.all([n.e(1869),n.e(6417)]).then(n.bind(n,52877))},"@site/../docs/learn/archive/learn-treasury.md",52877],"078895e8":[function(){return Promise.all([n.e(1869),n.e(9909)]).then(n.bind(n,66232))},"@site/../docs/learn/archive/learn-controller.md",66232],"08c12c3a":[function(){return n.e(5630).then(n.bind(n,81329))},"@site/../docs/general/dune-analytics/parachain-dashboards/polimec-dashboards.md",81329],"09dda9ae":[function(){return n.e(2598).then(n.bind(n,42500))},"@site/../docs/general/dune-analytics/parachain-dashboards/polkadex-dashboards.md",42500],"0a3f0c9b":[function(){return Promise.all([n.e(1869),n.e(6555)]).then(n.bind(n,35209))},"@site/../docs/general/ledger.md",35209],"0b632434":[function(){return n.e(4739).then(n.bind(n,56705))},"@site/../docs/general/parachains-apps.md",56705],"0df78d26":[function(){return n.e(782).then(n.bind(n,87145))},"@site/../docs/maintain/maintain-guides-secure-validator.md",87145],"0eeb7a68":[function(){return Promise.all([n.e(1869),n.e(6869)]).then(n.bind(n,5824))},"@site/../docs/learn/learn-guides-DOT-KSM-bridge.md",5824],"113faa87":[function(){return Promise.all([n.e(1869),n.e(6011)]).then(n.bind(n,30862))},"@site/../docs/learn/learn-guides-assets.md",30862],"12331e8b":[function(){return Promise.all([n.e(1869),n.e(2244)]).then(n.bind(n,48725))},"@site/../docs/general/polkadotjs.md",48725],"1283e352":[function(){return n.e(1396).then(n.t.bind(n,68154,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-01f.json",68154],"131c7f55":[function(){return Promise.all([n.e(1869),n.e(2298)]).then(n.bind(n,2512))},"@site/../docs/learn/learn-architecture.md",2512],"145746f5":[function(){return Promise.all([n.e(1869),n.e(6789)]).then(n.bind(n,3734))},"@site/../docs/maintain/maintain-polkadot-parameters.md",3734],"14eb3368":[function(){return Promise.all([n.e(1869),n.e(6969)]).then(n.bind(n,65847))},"@theme/DocCategoryGeneratedIndexPage",65847],15985664:[function(){return n.e(5881).then(n.bind(n,76248))},"@site/../docs/learn/xcm/journey/summary.md",76248],"1646726c":[function(){return Promise.all([n.e(1869),n.e(3266)]).then(n.bind(n,47002))},"@site/../docs/learn/learn-staking.md",47002],17896441:[function(){return Promise.all([n.e(1869),n.e(8401)]).then(n.bind(n,93069))},"@theme/DocItem",93069],"196e07e8":[function(){return n.e(3602).then(n.bind(n,97176))},"@site/../docs/general/dune-analytics/parachain-dashboards/interlay-dashboards.md",97176],"19ed4d4c":[function(){return n.e(4661).then(n.bind(n,74354))},"@site/../docs/learn/learn-comparisons-cosmos.md",74354],"1a4e3797":[function(){return Promise.all([n.e(1869),n.e(2138)]).then(n.bind(n,74604))},"@theme/SearchPage",74604],"1ae2b102":[function(){return Promise.all([n.e(3482),n.e(8121)]).then(n.bind(n,92508))},"@site/../docs/build/build-protocol-info.md",92508],"1d6d4797":[function(){return n.e(3477).then(n.bind(n,51976))},"@site/../docs/learn/xcm/journey/transact.md",51976],"1de1f488":[function(){return n.e(1240).then(n.t.bind(n,57766,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-parachains-index-132.json",57766],"1e051548":[function(){return n.e(3598).then(n.t.bind(n,86311,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-index-c1b.json",86311],"1e15616a":[function(){return n.e(3751).then(n.bind(n,59247))},"@site/../docs/learn/learn-wasm.md",59247],"1ed3671a":[function(){return n.e(3377).then(n.bind(n,29320))},"@site/../docs/learn/xcm/journey/trap-and-claim.md",29320],"21877fa5":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(6466)]).then(n.bind(n,98285))},"@site/../docs/learn/learn-system-chains.md",98285],"21899dd2":[function(){return Promise.all([n.e(1869),n.e(5168)]).then(n.bind(n,34495))},"@site/../docs/learn/learn-parachains.md",34495],"23210cde":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(499)]).then(n.bind(n,43406))},"@site/../docs/general/chain-state-values.md",43406],"23498fd5":[function(){return n.e(7276).then(n.bind(n,34632))},"@site/../docs/build/build-integrate-assets.md",34632],"240a6b01":[function(){return n.e(9633).then(n.bind(n,92532))},"@site/../docs/general/dune-analytics/parachain-dashboards/nodle-dashboards.md",92532],"2462cc91":[function(){return n.e(9141).then(n.bind(n,49631))},"@site/../docs/general/multisig-apps.md",49631],"25f2bd2a":[function(){return n.e(885).then(n.bind(n,72148))},"@site/../docs/maintain/maintain-guides-how-to-stop-validating.md",72148],"269b78ec":[function(){return n.e(1191).then(n.t.bind(n,68248,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-build-protocol-index-9e0.json",68248],"269bc3bb":[function(){return n.e(1968).then(n.bind(n,27143))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nominators.md",27143],"26dc7bd1":[function(){return n.e(166).then(n.bind(n,21975))},"@site/../docs/general/dune-analytics/parachain-dashboards/invarch-dashboards.md",21975],"279fb1d6":[function(){return Promise.all([n.e(1869),n.e(4994)]).then(n.bind(n,83022))},"@site/../docs/general/kusama/kusama-getting-started.md",83022],"28b84bbb":[function(){return n.e(9385).then(n.bind(n,85085))},"@site/../docs/build/build-network-overview.md",85085],"2be0d940":[function(){return Promise.all([n.e(1869),n.e(4537)]).then(n.bind(n,59681))},"@site/../docs/learn/learn-guides-identity.md",59681],"2d34559d":[function(){return n.e(7893).then(n.bind(n,24275))},"@site/../docs/learn/learn-jam-chain.md",24275],"2d429218":[function(){return n.e(6361).then(n.bind(n,82832))},"@site/../docs/learn/learn-consensus.md",82832],"2e0c35d5":[function(){return n.e(2698).then(n.bind(n,73123))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-governance-dashboard.md",73123],"2e944e01":[function(){return n.e(4231).then(n.bind(n,71471))},"@site/../docs/general/dune-analytics/parachain-dashboards/manta-dashboards.md",71471],"2ea50c63":[function(){return n.e(1560).then(n.bind(n,26160))},"@site/../docs/learn/learn-xcm-usecases.md",26160],"2f3b630e":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(2584)]).then(n.bind(n,95132))},"@site/../docs/learn/learn-polkadot-opengov.md",95132],"3002ebf4":[function(){return Promise.all([n.e(1869),n.e(3423)]).then(n.bind(n,57120))},"@site/../docs/build/build-dapp.md",57120],"3184af97":[function(){return Promise.all([n.e(1869),n.e(5362)]).then(n.bind(n,76526))},"@site/../docs/maintain/archive/maintain-guides-how-to-vote-councillor.md",76526],"31bd35e0":[function(){return n.e(1042).then(n.bind(n,18135))},"@site/../docs/learn/xcm/overview/summary.md",18135],"320c8a05":[function(){return n.e(4479).then(n.bind(n,98368))},"@site/../docs/maintain/maintain-networks.md",98368],"32c9742a":[function(){return n.e(9682).then(n.bind(n,70612))},"@site/../docs/learn/xcm/fundamentals/summary.md",70612],"33b0bcab":[function(){return n.e(1519).then(n.bind(n,9382))},"@site/../docs/learn/xcm/reference/xcvm-registers.md",9382],"33bbe353":[function(){return n.e(5033).then(n.bind(n,72083))},"@site/../docs/maintain/kusama/maintain-guides-society-kusama.md",72083],"34b0fecb":[function(){return n.e(1024).then(n.t.bind(n,61398,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-references-e58.json",61398],"3521cab9":[function(){return n.e(3827).then(n.t.bind(n,64855,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-staking-index-244.json",64855],"36051dfe":[function(){return n.e(3949).then(n.bind(n,98233))},"@site/../docs/general/dune-analytics/parachain-dashboards/unique-dashboards.md",98233],"3611be04":[function(){return Promise.all([n.e(1869),n.e(5761)]).then(n.bind(n,98712))},"@site/../docs/learn/learn-offenses.md",98712],"36b7ae49":[function(){return n.e(1914).then(n.bind(n,70137))},"@site/../docs/learn/learn-snowbridge.md",70137],"3829cf1d":[function(){return n.e(5249).then(n.bind(n,4909))},"@site/../docs/maintain/maintain-guides-validator-community.md",4909],"386099fc":[function(){return n.e(3091).then(n.bind(n,97980))},"@site/../docs/learn/learn-polkadot-opengov-treasury.md",97980],"386bfe51":[function(){return n.e(6319).then(n.bind(n,71220))},"@site/../docs/general/contributing.md",71220],"387813b8":[function(){return n.e(2409).then(n.bind(n,68766))},"@site/../docs/learn/learn-guides-coretime-parachains.md",68766],"390ca211":[function(){return Promise.all([n.e(1869),n.e(2623)]).then(n.bind(n,31287))},"@site/../docs/learn/archive/learn-launch.md",31287],"3ab7d35a":[function(){return n.e(5291).then(n.t.bind(n,3436,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-agile-coretime-index-f45.json",3436],"3bd77df4":[function(){return Promise.all([n.e(1869),n.e(3976)]).then(n.bind(n,40641))},"@site/../docs/learn/learn-bridges.md",40641],"3d1bf5db":[function(){return n.e(4190).then(n.bind(n,47347))},"@site/../docs/maintain/maintain-guides-async-backing.md",47347],"3e56470e":[function(){return n.e(1608).then(n.bind(n,17740))},"@site/../docs/maintain/maintain-wss.md",17740],"41b7b3e8":[function(){return n.e(577).then(n.bind(n,15993))},"@site/../docs/learn/learn-staking-advanced.md",15993],"41f7224c":[function(){return Promise.all([n.e(1869),n.e(7376)]).then(n.bind(n,27049))},"@site/../docs/learn/learn-archive.md",27049],"437b4e16":[function(){return n.e(8647).then(n.bind(n,20718))},"@site/../docs/general/dune-analytics/parachain-dashboards/snowbridge-dashboards.md",20718],"43ee4f22":[function(){return Promise.all([n.e(1869),n.e(876)]).then(n.bind(n,36403))},"@site/../docs/build/build-guide.md",36403],"4403bb94":[function(){return n.e(3735).then(n.bind(n,39306))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-dot-ordinals.md",39306],"452ad91d":[function(){return n.e(6195).then(n.bind(n,24025))},"@site/../docs/learn/xcm/overview/intro.md",24025],"4642ab5c":[function(){return n.e(4434).then(n.bind(n,91797))},"@site/../docs/learn/learn-cryptography.md",91797],"48d75399":[function(){return Promise.all([n.e(3482),n.e(230)]).then(n.bind(n,16870))},"@site/../docs/general/faq.md",16870],"493c7fdf":[function(){return Promise.all([n.e(3482),n.e(5053)]).then(n.bind(n,98828))},"@site/../docs/general/glossary.md",98828],"497334c4":[function(){return n.e(6736).then(n.bind(n,86739))},"@site/../docs/general/dune-analytics/project-dashboards.md",86739],"49ea81bb":[function(){return n.e(9233).then(n.bind(n,50803))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-staking.md",50803],"4a8eb552":[function(){return Promise.all([n.e(3482),n.e(1949)]).then(n.bind(n,4668))},"@site/../docs/learn/learn-comparisons-kusama.md",4668],"4d76887f":[function(){return n.e(6235).then(n.bind(n,60494))},"@site/../docs/build/build-hackathon.md",60494],"4d9b9869":[function(){return n.e(9550).then(n.bind(n,75024))},"@site/../docs/learn/learn-parachains-protocol.md",75024],"4f031749":[function(){return Promise.all([n.e(1869),n.e(1699)]).then(n.bind(n,35292))},"@site/../docs/learn/learn-guides-staking-pools.md",35292],"4f6f3f96":[function(){return n.e(1531).then(n.t.bind(n,34787,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-overview-d82.json",34787],"5136ee31":[function(){return n.e(4632).then(n.bind(n,23554))},"@site/../docs/learn/xcm/journey/expects.md",23554],"5193d8a9":[function(){return n.e(1511).then(n.bind(n,33199))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referenda-home.md",33199],"51fbc2c9":[function(){return n.e(2706).then(n.bind(n,43953))},"@site/../docs/learn/learn-comparisons.md",43953],"5355b952":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(2580),n.e(1003)]).then(n.bind(n,48427))},"@site/../docs/learn/learn-polkadot-opengov-origins.md",48427],"54338ffb":[function(){return n.e(8112).then(n.bind(n,60799))},"@site/../docs/learn/learn-account-multisig.md",60799],"543c9f0a":[function(){return n.e(566).then(n.bind(n,30644))},"@site/../docs/build/build-guides-coretime-troubleshoot.md",30644],"556d3f96":[function(){return n.e(1241).then(n.bind(n,62659))},"@site/../docs/general/dune-analytics/parachain-dashboards/astar-dashboards.md",62659],"571c8793":[function(){return n.e(3984).then(n.bind(n,28506))},"@site/../docs/general/dune-analytics/parachain-dashboards/moonbeam-dashboards.md",28506],"57d69936":[function(){return n.e(8736).then(n.t.bind(n,83071,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-programs-index-225.json",83071],"591eca19":[function(){return n.e(2493).then(n.bind(n,53458))},"@site/../docs/general/polkadot-direction.md",53458],"5c6a20c2":[function(){return n.e(9349).then(n.bind(n,77377))},"@site/../docs/learn/learn-safrole.md",77377],"5c90fc9b":[function(){return n.e(3708).then(n.bind(n,52012))},"@site/../docs/learn/xcm/executor_config/config.md",52012],"5d5db6f5":[function(){return n.e(3200).then(n.t.bind(n,67335,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-advanced-index-8e8.json",67335],"5d69d9d4":[function(){return n.e(1658).then(n.bind(n,87390))},"@site/../docs/maintain/maintain-guides-how-to-upgrade.md",87390],"5db34cd0":[function(){return n.e(8058).then(n.bind(n,74078))},"@site/../docs/general/decentralized-voices.md",74078],"5dfc1fb1":[function(){return n.e(1187).then(n.bind(n,2423))},"@site/../docs/general/pcf.md",2423],"5e1f281f":[function(){return n.e(6835).then(n.t.bind(n,89648,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-stay-safe-index-fb6.json",89648],"5e95c892":[function(){return n.e(9647).then(n.bind(n,7121))},"@theme/DocsRoot",7121],"5e9f5e1a":[function(){return Promise.resolve().then(n.bind(n,84450))},"@generated/docusaurus.config",84450],"5f2beba5":[function(){return n.e(7405).then(n.t.bind(n,45638,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-participants-index-530.json",45638],"60738e36":[function(){return Promise.all([n.e(3482),n.e(7777)]).then(n.bind(n,268))},"@site/../docs/general/metadata.md",268],"6116139f":[function(){return n.e(4840).then(n.bind(n,53932))},"@site/../docs/learn/learn-elastic-scaling.md",53932],"643a7bcf":[function(){return n.e(3345).then(n.t.bind(n,13502,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-wallets-index-9b6.json",13502],"64947d47":[function(){return n.e(8688).then(n.t.bind(n,53741,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-polkadot-vision-index-148.json",53741],"64c7e1cc":[function(){return n.e(8727).then(n.bind(n,23001))},"@site/../docs/build/build-integration.md",23001],"6544ec02":[function(){return n.e(9786).then(n.bind(n,49019))},"@site/../docs/general/alpha-program.md",49019],"6822f432":[function(){return n.e(2356).then(n.t.bind(n,19084,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-community-index-a87.json",19084],"694672cd":[function(){return Promise.all([n.e(1869),n.e(1004)]).then(n.bind(n,59458))},"@site/../docs/learn/learn-guides-staking.md",59458],"69b97ecd":[function(){return n.e(866).then(n.bind(n,21324))},"@site/../docs/learn/learn-implementations.md",21324],"6bfbfa77":[function(){return Promise.all([n.e(1869),n.e(2858)]).then(n.bind(n,7723))},"@site/../docs/learn/archive/learn-auction.md",7723],"6d2ffbf3":[function(){return n.e(4168).then(n.bind(n,31395))},"@site/../docs/learn/xcm/quickstart/first-look.md",31395],"6d423296":[function(){return n.e(9521).then(n.t.bind(n,60593,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-assets-index-7cb.json",60593],"6d5c9a28":[function(){return n.e(417).then(n.bind(n,55868))},"@site/../docs/general/staking-apps.md",55868],"6f1a81b8":[function(){return Promise.all([n.e(3482),n.e(2802)]).then(n.bind(n,19576))},"@site/../docs/maintain/maintain-guides-how-to-chill.md",19576],"700d39cd":[function(){return n.e(5647).then(n.t.bind(n,62699,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-polkadot-opengov-index-246.json",62699],"706277b1":[function(){return n.e(3487).then(n.bind(n,25834))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-validators.md",25834],"71ed82b9":[function(){return n.e(1369).then(n.bind(n,77371))},"@site/../docs/general/start-building.md",77371],"72b78d4a":[function(){return n.e(1772).then(n.bind(n,13109))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referendum-voting-analysis.md",13109],73617284:[function(){return n.e(981).then(n.bind(n,26620))},"@site/../docs/learn/learn-hyperbridge.md",26620],"73a7060c":[function(){return Promise.all([n.e(3482),n.e(5208)]).then(n.bind(n,78741))},"@site/../docs/learn/learn-polkadot-technical-fellowship.md",78741],"73d1b372":[function(){return n.e(1498).then(n.bind(n,1874))},"@site/../docs/learn/learn-agile-coretime.md",1874],"74df6a22":[function(){return n.e(7227).then(n.bind(n,74064))},"@site/../docs/maintain/maintain-rpc.md",74064],"766a10e1":[function(){return n.e(6118).then(n.bind(n,15869))},"@site/../docs/learn/learn-comparisons-avalanche.md",15869],"77c23c97":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(3536)]).then(n.bind(n,90830))},"@site/../docs/learn/learn-transactions.md",90830],"78868b16":[function(){return n.e(1539).then(n.bind(n,97131))},"@site/../docs/general/kusama/kusama-social-recovery.md",97131],"78e1e977":[function(){return n.e(5884).then(n.bind(n,90616))},"@site/../docs/learn/xcm/journey/holding-modifiers.md",90616],"7c138549":[function(){return n.e(7473).then(n.bind(n,76173))},"@site/../docs/general/dune-analytics/parachain-dashboards/neuroweb-dashboards.md",76173],"7c43c534":[function(){return n.e(9787).then(n.t.bind(n,2451,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-fundamentals-multilocation-cfc.json",2451],"7dcec981":[function(){return Promise.all([n.e(1869),n.e(4271)]).then(n.bind(n,11714))},"@site/../docs/build/build-client-side.md",11714],"7fbac68a":[function(){return n.e(2757).then(n.bind(n,89032))},"@site/../docs/general/ambassadors.md",89032],"7ffd66a6":[function(){return n.e(6547).then(n.bind(n,38246))},"@site/../docs/general/dune-analytics/parachain-dashboards/acala-dashboards.md",38246],"804b1e9f":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(1062)]).then(n.bind(n,98362))},"@site/../docs/learn/learn-guides-nominator.md",98362],"8081c0c6":[function(){return n.e(8568).then(n.bind(n,77206))},"@site/../docs/general/parity-data-dashboards.md",77206],"824749c6":[function(){return n.e(8800).then(n.bind(n,68498))},"@site/../docs/build/build-node-interaction.md",68498],"8247eba8":[function(){return n.e(7044).then(n.bind(n,53935))},"@site/../docs/learn/xcm/journey/transfers/teleports.md",53935],"83d4859f":[function(){return n.e(2808).then(n.bind(n,3299))},"@site/../docs/learn/xcm/journey/transfers/summary.md",3299],"84ede15a":[function(){return Promise.all([n.e(1869),n.e(6124)]).then(n.bind(n,88779))},"@site/../docs/learn/learn-guides-transfers.md",88779],"85afe03a":[function(){return n.e(1628).then(n.bind(n,80396))},"@site/../docs/maintain/maintain-errors.md",80396],"863c4753":[function(){return n.e(6076).then(n.bind(n,51376))},"@site/../docs/learn/xcm/journey/register-modifiers.md",51376],"879e564b":[function(){return n.e(8789).then(n.bind(n,70272))},"@site/../docs/general/dune-analytics/onboarding-status-and-key-dashboards.md",70272],"899aadcc":[function(){return n.e(6993).then(n.bind(n,5596))},"@site/../docs/learn/xcm/overview/architecture.md",5596],"89a76fd2":[function(){return Promise.all([n.e(1869),n.e(2204)]).then(n.bind(n,4552))},"@site/../docs/learn/archive/learn-redenomination.md",4552],"8a8a7d05":[function(){return n.e(4791).then(n.bind(n,95827))},"@site/../docs/build/build-parachains.md",95827],"8b670b2b":[function(){return n.e(954).then(n.bind(n,62871))},"@site/../docs/build/build-index.md",62871],"8d3a1bf8":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(5588)]).then(n.bind(n,50373))},"@site/../docs/learn/learn-inflation.md",50373],"8d48ec84":[function(){return n.e(2615).then(n.bind(n,90640))},"@site/../docs/general/dune-analytics/parachain-dashboards/frequency-dashboards.md",90640],"8dd7cee0":[function(){return Promise.all([n.e(1869),n.e(7147)]).then(n.bind(n,52872))},"@site/../docs/general/thousand-validators.md",52872],"8fadc1f3":[function(){return n.e(2191).then(n.t.bind(n,68133,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-index-b78.json",68133],"90a09ad1":[function(){return n.e(8768).then(n.bind(n,98729))},"@site/../docs/general/dune-analytics/dunesql-cheatsheet.md",98729],"918b38b6":[function(){return Promise.all([n.e(3482),n.e(6930)]).then(n.bind(n,30479))},"@site/../docs/learn/learn-async-backing.md",30479],"93953b85":[function(){return n.e(6247).then(n.t.bind(n,96766,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-journey-f1c.json",96766],"943aba4c":[function(){return Promise.all([n.e(1869),n.e(1112)]).then(n.bind(n,83686))},"@site/../docs/learn/learn-guides-claims.md",83686],"9528ac88":[function(){return n.e(1379).then(n.bind(n,48707))},"@site/../docs/learn/learn-xcm-transport.md",48707],"95aedc42":[function(){return n.e(6842).then(n.t.bind(n,85898,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-journey-transfers-540.json",85898],"9662c81e":[function(){return Promise.all([n.e(1869),n.e(7809)]).then(n.bind(n,5771))},"@site/../docs/maintain/archive/maintain-guides-how-to-join-council.md",5771],"967fa6d4":[function(){return Promise.all([n.e(1869),n.e(7876)]).then(n.bind(n,62482))},"@site/../docs/learn/learn-guides-accounts-multisig.md",62482],"979a04e7":[function(){return n.e(3705).then(n.bind(n,82561))},"@site/../docs/general/dune-analytics/parachain-dashboards/bifrost-dashboards.md",82561],"987d08ef":[function(){return n.e(6496).then(n.bind(n,73036))},"@site/../docs/build/build-smart-contracts.md",73036],"98a30fd8":[function(){return n.e(2950).then(n.bind(n,11193))},"@site/../docs/learn/xcm/fundamentals/multiasset.md",11193],"98a431f4":[function(){return n.e(8005).then(n.bind(n,40058))},"@site/../docs/general/transaction-attacks.md",40058],"9913464d":[function(){return Promise.all([n.e(1869),n.e(5883)]).then(n.bind(n,9296))},"@site/../docs/learn/archive/learn-governance.md",9296],"9e2042f5":[function(){return n.e(3086).then(n.bind(n,70225))},"@site/../docs/learn/learn-collator.md",70225],"9e3f6a8a":[function(){return n.e(8108).then(n.bind(n,23773))},"@site/../docs/learn/learn-comparison-ethereum-2.md",23773],"9e6341e5":[function(){return n.e(8431).then(n.bind(n,62147))},"@site/../docs/learn/xcm/journey/transfers/reserve.md",62147],"9e76b49d":[function(){return n.e(6775).then(n.bind(n,29967))},"@site/../docs/learn/xcm/testing.md",29967],"9f319605":[function(){return n.e(834).then(n.bind(n,43635))},"@site/../docs/learn/xcm/journey/fees.md",43635],"9f804621":[function(){return Promise.all([n.e(1869),n.e(3482),n.e(1431)]).then(n.bind(n,92415))},"@site/../docs/learn/learn-guides-accounts.md",92415],a2800a5b:[function(){return n.e(3234).then(n.bind(n,29389))},"@site/../docs/build/build-transaction-construction.md",29389],a29dc56e:[function(){return n.e(7554).then(n.bind(n,81815))},"@site/../docs/maintain/maintain-guides-how-to-monitor-your-node.md",81815],a2d5a6d8:[function(){return n.e(6622).then(n.bind(n,51421))},"@site/../docs/general/dune-analytics/parachain-dashboards/collectives-dashboards.md",51421],a44b8423:[function(){return n.e(319).then(n.bind(n,55722))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-pool-member.md",55722],a5002e4a:[function(){return n.e(1067).then(n.bind(n,53029))},"@site/../docs/build/build-oracle.md",53029],a5b3561d:[function(){return n.e(2226).then(n.bind(n,54237))},"@site/../docs/general/kusama/kusama-coc.md",54237],a6e65e5f:[function(){return n.e(7208).then(n.t.bind(n,75366,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-quickstart-1cc.json",75366],a7456010:[function(){return n.e(1235).then(n.t.bind(n,66252,19))},"@generated/docusaurus-plugin-content-pages/default/__plugin.json",66252],a74a59a0:[function(){return Promise.all([n.e(3482),n.e(4975)]).then(n.bind(n,34917))},"@site/../docs/maintain/maintain-guides-how-to-validate-polkadot.md",34917],a7b37b86:[function(){return n.e(1447).then(n.bind(n,48999))},"@site/../docs/general/scams.md",48999],a7bd4aaa:[function(){return n.e(7098).then(n.bind(n,74532))},"@theme/DocVersionRoot",74532],a8f54fb1:[function(){return n.e(1706).then(n.bind(n,52280))},"@site/../docs/learn/learn-DOT-KSM-bridge.md",52280],a94703ab:[function(){return Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,11377))},"@theme/DocRoot",11377],a9f58d5b:[function(){return n.e(5331).then(n.bind(n,40936))},"@site/../docs/learn/learn-account-balances.md",40936],ab138bf8:[function(){return n.e(8914).then(n.bind(n,99771))},"@site/../docs/learn/learn-proxies.md",99771],aba21aa0:[function(){return n.e(5742).then(n.t.bind(n,36545,19))},"@generated/docusaurus-plugin-content-docs/default/__plugin.json",36545],ad1dd1a4:[function(){return n.e(7217).then(n.t.bind(n,21523,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-dashboards-index-254.json",21523],ad5a1373:[function(){return n.e(3656).then(n.bind(n,67166))},"@site/../docs/general/dune-analytics/parachain-dashboards/phala-dashboards.md",67166],ad762f86:[function(){return Promise.all([n.e(1869),n.e(3041)]).then(n.bind(n,12735))},"@site/../docs/learn/learn-account-advanced.md",12735],af2ff1b5:[function(){return n.e(6646).then(n.bind(n,18428))},"@site/../docs/general/dune-analytics/parachain-dashboards/hydration-dashboards.md",18428],afddde9d:[function(){return n.e(1724).then(n.bind(n,10666))},"@site/../docs/learn/learn-asset-conversion-assethub.md",10666],b0a48d97:[function(){return Promise.all([n.e(1869),n.e(1018)]).then(n.bind(n,31962))},"@site/../docs/learn/learn-guides-ledger.md",31962],b0cb055f:[function(){return n.e(9074).then(n.bind(n,93490))},"@site/../docs/learn/xcm/fundamentals/xcvm.md",93490],b0cbc1d4:[function(){return Promise.all([n.e(3482),n.e(7826)]).then(n.bind(n,2662))},"@site/../docs/general/staking-dashboard.md",2662],b0d34550:[function(){return n.e(8660).then(n.bind(n,42868))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-network.md",42868],b1b82dcd:[function(){return Promise.all([n.e(1869),n.e(557)]).then(n.bind(n,59384))},"@site/../docs/learn/archive/learn-crowdloans.md",59384],b21dd8a7:[function(){return n.e(6024).then(n.bind(n,28964))},"@site/../docs/learn/learn-comparison-rollups.md",28964],b225a2ce:[function(){return n.e(1101).then(n.bind(n,53241))},"@site/../docs/learn/xcm/fundamentals/multilocation/summary.md",53241],b3558274:[function(){return n.e(3975).then(n.bind(n,57844))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard.md",57844],b3719d54:[function(){return n.e(8290).then(n.bind(n,106))},"@site/../docs/general/polkadot-v1.md",106],b38833d4:[function(){return n.e(6104).then(n.bind(n,54357))},"@site/../docs/learn/learn-phragmen.md",54357],b418feb9:[function(){return n.e(7242).then(n.bind(n,42344))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-governance.md",42344],b48c599b:[function(){return n.e(9057).then(n.bind(n,66242))},"@site/../docs/general/kusama/kusama-bug-bounty.md",66242],b7bd3ab3:[function(){return n.e(6445).then(n.bind(n,46806))},"@site/../docs/general/dune-analytics/parachain-dashboards/energywebx-dashboards.md",46806],b835d927:[function(){return n.e(1397).then(n.bind(n,53119))},"@site/../docs/general/ecosystem-funds.md",53119],b906f375:[function(){return n.e(159).then(n.bind(n,15102))},"@site/../docs/build/build-light-clients.md",15102],b940de31:[function(){return n.e(4817).then(n.bind(n,6598))},"@site/../docs/learn/learn-assets.md",6598],b9b4ec9e:[function(){return n.e(3316).then(n.bind(n,2197))},"@site/../docs/learn/xcm/reference/glossary.md",2197],bb8b1738:[function(){return Promise.all([n.e(3482),n.e(2916)]).then(n.bind(n,2937))},"@site/../docs/learn/learn-validator.md",2937],bbba852d:[function(){return n.e(9799).then(n.bind(n,20995))},"@site/../docs/general/kusama/kusama-adverserial-cheatsheet.md",20995],bd701914:[function(){return Promise.all([n.e(1869),n.e(1077)]).then(n.bind(n,63298))},"@site/../docs/learn/learn-parachains-faq.md",63298],bea375d6:[function(){return n.e(4938).then(n.bind(n,4907))},"@site/../docs/general/grants.md",4907],bf3ab9de:[function(){return Promise.all([n.e(1869),n.e(2389)]).then(n.bind(n,75753))},"@site/../docs/learn/learn-guides-bridges.md",75753],c07c2447:[function(){return Promise.all([n.e(1869),n.e(7561)]).then(n.bind(n,572))},"@site/../docs/learn/learn-guides-polkadot-opengov.md",572],c110e322:[function(){return n.e(1592).then(n.bind(n,37917))},"@site/../docs/learn/learn-guides-coretime-swap.md",37917],c141421f:[function(){return n.e(957).then(n.t.bind(n,58164,19))},"@generated/docusaurus-theme-search-algolia/default/__plugin.json",58164],c1bbdb2a:[function(){return n.e(5558).then(n.bind(n,47008))},"@site/../docs/learn/learn-polkadot-host.md",47008],c2912163:[function(){return n.e(7352).then(n.t.bind(n,475,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-components-index-c9a.json",475],c2c6a3a6:[function(){return n.e(8506).then(n.bind(n,2506))},"@site/../docs/learn/learn-nft-projects.md",2506],c41801b5:[function(){return Promise.all([n.e(3482),n.e(9507)]).then(n.bind(n,95462))},"@site/../docs/maintain/kusama/maintain-guides-how-to-validate-kusama.md",95462],c4f5d8e4:[function(){return n.e(2634).then(n.bind(n,19258))},"@site/src/pages/index.js",19258],c57cca4f:[function(){return n.e(895).then(n.t.bind(n,9256,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-future-implementations-index-472.json",9256],c630d0cd:[function(){return n.e(5420).then(n.bind(n,23862))},"@site/../docs/build/build-guides-template-basic.md",23862],c662f00a:[function(){return n.e(7887).then(n.bind(n,21352))},"@site/../docs/learn/xcm/journey/queries.md",21352],c6b91cbc:[function(){return n.e(1050).then(n.t.bind(n,35697,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-basics-index-5be.json",35697],c78e4f7d:[function(){return n.e(1335).then(n.bind(n,39363))},"@site/../docs/general/dune-analytics/polkadot-dashboards/polkadot-dashboards-overview.md",39363],c7a044bb:[function(){return n.e(9110).then(n.bind(n,24225))},"@site/../docs/learn/xcm/journey/channels-and-bridges.md",24225],c7a2145e:[function(){return n.e(6277).then(n.bind(n,31059))},"@site/../docs/general/how-to-dyor.md",31059],c7c5ba1a:[function(){return Promise.all([n.e(1869),n.e(9476)]).then(n.bind(n,89207))},"@site/../docs/learn/learn-accounts.md",89207],c8dd560b:[function(){return Promise.all([n.e(1869),n.e(3482),n.e(4293)]).then(n.bind(n,77405))},"@site/../docs/learn/learn-guides-accounts-proxy-pure.md",77405],c91a9c06:[function(){return Promise.all([n.e(1869),n.e(1019)]).then(n.bind(n,84345))},"@site/../docs/learn/learn-identity.md",84345],c977dfe8:[function(){return Promise.all([n.e(3482),n.e(4024)]).then(n.bind(n,95304))},"@site/../docs/learn/learn-teleport.md",95304],ca45e589:[function(){return n.e(4821).then(n.t.bind(n,48012,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-explore-index-06f.json",48012],ca9fe671:[function(){return n.e(5827).then(n.bind(n,55995))},"@site/../docs/learn/xcm/overview/xcvm.md",55995],cb9afd28:[function(){return Promise.all([n.e(1869),n.e(1738)]).then(n.bind(n,27735))},"@site/../docs/learn/learn-polkadot-js-guides.md",27735],cc44e8fd:[function(){return n.e(5052).then(n.bind(n,2851))},"@site/../docs/build/build-node-management.md",2851],ccc1222e:[function(){return n.e(5702).then(n.bind(n,47765))},"@site/../docs/build/build-open-source.md",47765],cda87995:[function(){return n.e(1711).then(n.bind(n,24233))},"@site/../docs/build/build-tools-index.md",24233],ceaa29cb:[function(){return n.e(4841).then(n.bind(n,99027))},"@site/../docs/learn/xcm/journey/locks/locks.md",99027],cfd53ea4:[function(){return n.e(7482).then(n.bind(n,36531))},"@site/../docs/general/kusama/kusama-timeline.md",36531],cfe984ba:[function(){return n.e(8289).then(n.t.bind(n,59015,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-apps-index-b66.json",59015],d000eb73:[function(){return n.e(4228).then(n.bind(n,88218))},"@site/../docs/general/dune-analytics/parachain-dashboards/stellaswap-dashboards.md",88218],d27ae88d:[function(){return n.e(3170).then(n.bind(n,63366))},"@site/../docs/learn/learn-video-tutorials.md",63366],d3a753cf:[function(){return n.e(4191).then(n.bind(n,52819))},"@site/../docs/learn/xcm/fundamentals/multilocation/example.md",52819],d42819bc:[function(){return n.e(3306).then(n.bind(n,59666))},"@site/../docs/general/dune-analytics/parachain-dashboards/bridgehub-dashboards.md",59666],d569989b:[function(){return n.e(8255).then(n.bind(n,76030))},"@site/../docs/general/bug-bounty.md",76030],d5909206:[function(){return n.e(5434).then(n.bind(n,79245))},"@site/../docs/learn/xcm/fundamentals/multilocation/junction.md",79245],d6a97e7e:[function(){return n.e(1107).then(n.bind(n,58398))},"@site/../docs/learn/xcm/quickstart/xcm-simulator.md",58398],d6b0148d:[function(){return n.e(2980).then(n.bind(n,56591))},"@site/../docs/learn/xcm/journey/origins.md",56591],d8955f2e:[function(){return n.e(8635).then(n.t.bind(n,43090,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-agile-coretime-getting-started-eb2.json",43090],d9a69e3a:[function(){return n.e(5829).then(n.bind(n,41809))},"@site/../docs/general/dune-analytics/parachain-dashboards/people-dashboards.md",41809],d9ef69a7:[function(){return n.e(2164).then(n.bind(n,53894))},"@site/../docs/general/contributors.md",53894],da9f79cb:[function(){return Promise.all([n.e(1869),n.e(3044)]).then(n.bind(n,44903))},"@site/../docs/learn/learn-nomination-pools.md",44903],daaf1ab4:[function(){return Promise.all([n.e(1869),n.e(8215)]).then(n.bind(n,63523))},"@site/../docs/general/funding.md",63523],db039c7f:[function(){return n.e(2481).then(n.bind(n,40176))},"@site/../docs/learn/xcm/overview/format.md",40176],db3d6c4d:[function(){return n.e(7845).then(n.bind(n,19113))},"@site/../docs/learn/learn-account-abstraction.md",19113],db9d4dae:[function(){return n.e(8472).then(n.bind(n,47818))},"@site/../docs/general/dune-analytics/parachain-dashboards/coretime-dashboards.md",47818],dbbd9e76:[function(){return Promise.all([n.e(1869),n.e(2922)]).then(n.bind(n,22123))},"@site/../docs/learn/learn-guides-vault.md",22123],dc0f9344:[function(){return n.e(1058).then(n.bind(n,6794))},"@site/../docs/general/dune-analytics/parachain-dashboards/pendulum-dashboards.md",6794],dc36d550:[function(){return Promise.all([n.e(1869),n.e(2357)]).then(n.bind(n,32037))},"@site/../docs/maintain/maintain-archive.md",32037],dc776cbc:[function(){return n.e(4498).then(n.bind(n,55957))},"@site/../docs/general/thousand-contributors.md",55957],dd2fa029:[function(){return Promise.all([n.e(1869),n.e(2047)]).then(n.bind(n,98546))},"@site/../docs/learn/learn-polkadotjs.md",98546],dd32e389:[function(){return n.e(7781).then(n.bind(n,21279))},"@site/../docs/general/polkadot-vault.md",21279],df154d69:[function(){return n.e(3880).then(n.bind(n,80179))},"@site/../docs/learn/learn-xcm.md",80179],e00ac272:[function(){return n.e(1881).then(n.bind(n,89510))},"@site/../docs/learn/learn-guides-coretime-marketplaces.md",89510],e2e89062:[function(){return n.e(9894).then(n.bind(n,33910))},"@site/../docs/learn/learn-proxies-pure.md",33910],e31fc461:[function(){return n.e(352).then(n.bind(n,47881))},"@site/../docs/learn/xcm/learn-xcm-docs-intro.md",47881],e43aed4a:[function(){return n.e(1122).then(n.t.bind(n,4691,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-general-index-bbd.json",4691],e495ca4d:[function(){return Promise.all([n.e(1869),n.e(662)]).then(n.bind(n,6099))},"@site/../docs/maintain/archive/maintain-guides-democracy.md",6099],e4ef088f:[function(){return Promise.all([n.e(1869),n.e(3315)]).then(n.bind(n,62515))},"@site/../docs/build/build-guides-install-deps.md",62515],e77078a1:[function(){return n.e(3557).then(n.bind(n,29138))},"@site/../docs/learn/learn-jam-faq.md",29138],e8522a07:[function(){return n.e(5513).then(n.bind(n,38558))},"@site/../docs/general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nomination-pool.md",38558],ec3b6a32:[function(){return n.e(8832).then(n.bind(n,45003))},"@site/../docs/learn/learn-nft.md",45003],ecb495b7:[function(){return n.e(6786).then(n.bind(n,21017))},"@site/../docs/maintain/maintain-guides-how-to-systemd.md",21017],ece9fdae:[function(){return Promise.all([n.e(1869),n.e(6641)]).then(n.bind(n,49524))},"@site/../docs/general/community.md",49524],ed3409b3:[function(){return Promise.all([n.e(1869),n.e(4117)]).then(n.bind(n,1448))},"@site/../docs/learn/learn-guides-bounties.md",1448],eef3f1dd:[function(){return Promise.all([n.e(1869),n.e(7827)]).then(n.bind(n,3674))},"@site/../docs/learn/learn-guides-treasury.md",3674],efba78c5:[function(){return n.e(3368).then(n.bind(n,75273))},"@site/../docs/general/dune-analytics/polkadot-ecosystem-overview.md",75273],f0ff685a:[function(){return Promise.all([n.e(1869),n.e(3482),n.e(2393)]).then(n.bind(n,63362))},"@site/../docs/learn/learn-guides-accounts-proxy.md",63362],f10f9928:[function(){return n.e(5534).then(n.bind(n,42205))},"@site/../docs/general/dune-analytics/parachain-dashboards/assethub-dashboards.md",42205],f137ce68:[function(){return Promise.all([n.e(1869),n.e(9188)]).then(n.bind(n,33369))},"@site/../docs/learn/learn-xcm-instructions.md",33369],f1585bfb:[function(){return n.e(3642).then(n.bind(n,60957))},"@site/../docs/learn/xcm/quickstart/summary.md",60957],f189ca9f:[function(){return n.e(5312).then(n.bind(n,6026))},"@site/../docs/learn/learn-spree.md",6026],f2521980:[function(){return Promise.all([n.e(3482),n.e(3584)]).then(n.bind(n,28258))},"@site/../docs/general/getting-started.md",28258],f2b5c614:[function(){return n.e(4076).then(n.bind(n,91422))},"@site/../docs/general/dune-analytics/parachain-dashboards/centrifuge-dashboards.md",91422],f2c21b54:[function(){return n.e(4410).then(n.bind(n,99698))},"@site/../docs/build/build-storage.md",99698],f3027c84:[function(){return Promise.all([n.e(1869),n.e(1906)]).then(n.bind(n,2588))},"@site/../docs/general/polkadotjs-ui.md",2588],f359a251:[function(){return Promise.all([n.e(1869),n.e(4051)]).then(n.bind(n,90801))},"@site/../docs/maintain/maintain-endpoints.md",90801],f3bde756:[function(){return n.e(9625).then(n.bind(n,63675))},"@site/../docs/maintain/maintain-bootnode.md",63675],f4130007:[function(){return n.e(8582).then(n.bind(n,25151))},"@site/../docs/general/wallets-and-extensions.md",25151],f41c4e9d:[function(){return n.e(8679).then(n.bind(n,29446))},"@site/../docs/learn/learn-xcm-pallet.md",29446],f4200fe5:[function(){return Promise.all([n.e(1869),n.e(3135)]).then(n.bind(n,41360))},"@site/../docs/maintain/maintain-sync.md",41360],f44679e7:[function(){return n.e(9535).then(n.bind(n,24577))},"@site/../docs/general/governance-apps.md",24577],f44ed8f8:[function(){return n.e(2930).then(n.bind(n,49430))},"@site/../docs/build/build-hrmp-channels.md",49430],f47489cd:[function(){return n.e(4544).then(n.bind(n,31237))},"@site/../docs/learn/learn-runtime-upgrades.md",31237],f52abf29:[function(){return n.e(9116).then(n.bind(n,47817))},"@site/../docs/general/decentralized-futures.md",47817],f62dca67:[function(){return n.e(6416).then(n.t.bind(n,67183,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-learn-xcm-fundamentals-e19.json",67183],f750c690:[function(){return n.e(3261).then(n.bind(n,16117))},"@site/../docs/learn/learn-nft-pallets.md",16117],f7acb151:[function(){return Promise.all([n.e(1869),n.e(2783)]).then(n.bind(n,43143))},"@site/../docs/learn/learn-guides-assets-create.md",43143],f8518919:[function(){return n.e(4484).then(n.bind(n,74390))},"@site/../docs/general/web3-and-polkadot.md",74390],f861e7c0:[function(){return n.e(5967).then(n.bind(n,63609))},"@site/../docs/general/dune-analytics/parachain-dashboards/litentry-dashboards.md",63609],f90fa732:[function(){return n.e(8225).then(n.bind(n,22027))},"@site/../docs/build/build-data.md",22027],fa343ad1:[function(){return n.e(2368).then(n.bind(n,37374))},"@site/../docs/learn/xcm/fundamentals/weight_and_fees.md",37374],fabebe44:[function(){return n.e(9783).then(n.bind(n,68818))},"@site/../docs/general/dev-heroes.md",68818],fc0e5740:[function(){return n.e(8067).then(n.t.bind(n,62433,19))},"@generated/docusaurus-plugin-content-docs/default/p/docs-build-client-index-10e.json",62433],fda65b2b:[function(){return Promise.all([n.e(1869),n.e(6225)]).then(n.bind(n,54276))},"@site/../docs/learn/learn-guides-asset-conversion.md",54276],fea93377:[function(){return Promise.all([n.e(3482),n.e(4898)]).then(n.bind(n,45800))},"@site/../docs/maintain/maintain-guides-validator-payout.md",45800],feadf832:[function(){return Promise.all([n.e(1869),n.e(1710)]).then(n.bind(n,84680))},"@site/../docs/build/build-guides-coretime-start.md",84680],fecdcc34:[function(){return n.e(2410).then(n.bind(n,69144))},"@site/../docs/learn/xcm/journey/version.md",69144],feea648c:[function(){return n.e(9175).then(n.bind(n,35543))},"@site/../docs/learn/learn-xcvm.md",35543],ff6596ea:[function(){return Promise.all([n.e(3482),n.e(3507)]).then(n.bind(n,65410))},"@site/../docs/learn/learn-nominator.md",65410],ffd76171:[function(){return Promise.all([n.e(1869),n.e(639)]).then(n.bind(n,98319))},"@site/../docs/maintain/maintain-index.md",98319],ffe9c3c9:[function(){return n.e(1967).then(n.bind(n,99220))},"@site/../docs/learn/learn-DOT.md",99220]};var s=n(74848);function c(e){var t=e.error,n=e.retry,r=e.pastDelay;return t?(0,s.jsxs)("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%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("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",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var l=n(86921),u=n(53102);function d(e,t){if("*"===e)return a()({loading:c,loader:function(){return n.e(2237).then(n.bind(n,82237))},modules:["@theme/NotFound"],webpack:function(){return[82237]},render:function(e,t){var n=e.default;return(0,s.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,Object.assign({},t))})}});var r=o[e+"-"+t],d={},p=[],f=[],m=(0,l.A)(r);return Object.entries(m).forEach((function(e){var t=e[0],n=e[1],r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),a().Map({loading:c,loader:d,modules:p,webpack:function(){return f},render:function(t,n){var a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((function(t){var n=t[0],r=t[1],o=r.default;if(!o)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 o&&"function"!=typeof o||Object.keys(r).filter((function(e){return"default"!==e})).forEach((function(e){o[e]=r[e]}));var i=a,s=n.split(".");s.slice(0,-1).forEach((function(e){i=i[e]})),i[s[s.length-1]]=o}));var o=a.__comp;delete a.__comp;var i=a.__context;delete a.__context;var c=a.__props;return delete a.__props,(0,s.jsx)(u.W,{value:i,children:(0,s.jsx)(o,Object.assign({},a,c,n))})}})}const p=[{path:"/search",component:d("/search","5de"),exact:!0},{path:"/docs",component:d("/docs","c16"),routes:[{path:"/docs",component:d("/docs","4a2"),routes:[{path:"/docs",component:d("/docs","159"),routes:[{path:"/docs/alpha-program",component:d("/docs/alpha-program","9f0"),exact:!0,sidebar:"docs"},{path:"/docs/ambassadors",component:d("/docs/ambassadors","718"),exact:!0,sidebar:"docs"},{path:"/docs/apps-index",component:d("/docs/apps-index","b46"),exact:!0,sidebar:"docs"},{path:"/docs/bug-bounty",component:d("/docs/bug-bounty","1ba"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-index",component:d("/docs/build-client-index","e7c"),exact:!0,sidebar:"docs"},{path:"/docs/build-client-side",component:d("/docs/build-client-side","65f"),exact:!0,sidebar:"docs"},{path:"/docs/build-dapp",component:d("/docs/build-dapp","dd7"),exact:!0},{path:"/docs/build-data",component:d("/docs/build-data","95f"),exact:!0,sidebar:"docs"},{path:"/docs/build-guide",component:d("/docs/build-guide","479"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-coretime-start",component:d("/docs/build-guides-coretime-start","7be"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-coretime-troubleshoot",component:d("/docs/build-guides-coretime-troubleshoot","0fb"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-install-deps",component:d("/docs/build-guides-install-deps","5f9"),exact:!0,sidebar:"docs"},{path:"/docs/build-guides-template-basic",component:d("/docs/build-guides-template-basic","326"),exact:!0,sidebar:"docs"},{path:"/docs/build-hackathon",component:d("/docs/build-hackathon","c97"),exact:!0,sidebar:"docs"},{path:"/docs/build-hrmp-channels",component:d("/docs/build-hrmp-channels","05c"),exact:!0,sidebar:"docs"},{path:"/docs/build-index",component:d("/docs/build-index","26d"),exact:!0},{path:"/docs/build-integrate-assets",component:d("/docs/build-integrate-assets","47a"),exact:!0,sidebar:"docs"},{path:"/docs/build-integration",component:d("/docs/build-integration","00e"),exact:!0},{path:"/docs/build-light-clients",component:d("/docs/build-light-clients","f31"),exact:!0,sidebar:"docs"},{path:"/docs/build-network-overview",component:d("/docs/build-network-overview","fb1"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-interaction",component:d("/docs/build-node-interaction","f39"),exact:!0,sidebar:"docs"},{path:"/docs/build-node-management",component:d("/docs/build-node-management","1c9"),exact:!0},{path:"/docs/build-open-source",component:d("/docs/build-open-source","eed"),exact:!0,sidebar:"docs"},{path:"/docs/build-oracle",component:d("/docs/build-oracle","392"),exact:!0},{path:"/docs/build-pdk",component:d("/docs/build-pdk","023"),exact:!0},{path:"/docs/build-protocol-index",component:d("/docs/build-protocol-index","aac"),exact:!0,sidebar:"docs"},{path:"/docs/build-protocol-info",component:d("/docs/build-protocol-info","a80"),exact:!0,sidebar:"docs"},{path:"/docs/build-smart-contracts",component:d("/docs/build-smart-contracts","bd5"),exact:!0,sidebar:"docs"},{path:"/docs/build-storage",component:d("/docs/build-storage","451"),exact:!0},{path:"/docs/build-tools-index",component:d("/docs/build-tools-index","889"),exact:!0,sidebar:"docs"},{path:"/docs/build-transaction-construction",component:d("/docs/build-transaction-construction","19b"),exact:!0},{path:"/docs/chain-state-values",component:d("/docs/chain-state-values","c41"),exact:!0},{path:"/docs/community",component:d("/docs/community","d96"),exact:!0,sidebar:"docs"},{path:"/docs/community-index",component:d("/docs/community-index","d5a"),exact:!0,sidebar:"docs"},{path:"/docs/contributing",component:d("/docs/contributing","89f"),exact:!0,sidebar:"docs"},{path:"/docs/contributors",component:d("/docs/contributors","420"),exact:!0,sidebar:"docs"},{path:"/docs/dashboards-index",component:d("/docs/dashboards-index","421"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-futures",component:d("/docs/decentralized-futures","ff3"),exact:!0,sidebar:"docs"},{path:"/docs/decentralized-voices",component:d("/docs/decentralized-voices","a4e"),exact:!0,sidebar:"docs"},{path:"/docs/dev-heroes",component:d("/docs/dev-heroes","3a5"),exact:!0,sidebar:"docs"},{path:"/docs/ecosystem-funds",component:d("/docs/ecosystem-funds","802"),exact:!0},{path:"/docs/explore-index",component:d("/docs/explore-index","1f3"),exact:!0,sidebar:"docs"},{path:"/docs/faq",component:d("/docs/faq","286"),exact:!0,sidebar:"docs"},{path:"/docs/funding",component:d("/docs/funding","331"),exact:!0,sidebar:"docs"},{path:"/docs/general-index",component:d("/docs/general-index","409"),exact:!0,sidebar:"docs"},{path:"/docs/general/dune-analytics/acala-dashboards",component:d("/docs/general/dune-analytics/acala-dashboards","b19"),exact:!0},{path:"/docs/general/dune-analytics/assethub-dashboards",component:d("/docs/general/dune-analytics/assethub-dashboards","7a1"),exact:!0},{path:"/docs/general/dune-analytics/astar-dashboards",component:d("/docs/general/dune-analytics/astar-dashboards","278"),exact:!0},{path:"/docs/general/dune-analytics/bifrost-dashboards",component:d("/docs/general/dune-analytics/bifrost-dashboards","dde"),exact:!0},{path:"/docs/general/dune-analytics/bridgehub-dashboards",component:d("/docs/general/dune-analytics/bridgehub-dashboards","58a"),exact:!0},{path:"/docs/general/dune-analytics/centrifuge-dashboards",component:d("/docs/general/dune-analytics/centrifuge-dashboards","f51"),exact:!0},{path:"/docs/general/dune-analytics/collectives-dashboards",component:d("/docs/general/dune-analytics/collectives-dashboards","73e"),exact:!0},{path:"/docs/general/dune-analytics/coretime-dashboards",component:d("/docs/general/dune-analytics/coretime-dashboards","49c"),exact:!0},{path:"/docs/general/dune-analytics/energywebx-dashboards",component:d("/docs/general/dune-analytics/energywebx-dashboards","249"),exact:!0},{path:"/docs/general/dune-analytics/frequency-dashboards",component:d("/docs/general/dune-analytics/frequency-dashboards","31a"),exact:!0},{path:"/docs/general/dune-analytics/hydration-dashboards",component:d("/docs/general/dune-analytics/hydration-dashboards","748"),exact:!0},{path:"/docs/general/dune-analytics/interlay-dashboards",component:d("/docs/general/dune-analytics/interlay-dashboards","5f6"),exact:!0},{path:"/docs/general/dune-analytics/invarch-dashboards",component:d("/docs/general/dune-analytics/invarch-dashboards","960"),exact:!0},{path:"/docs/general/dune-analytics/litentry-dashboards",component:d("/docs/general/dune-analytics/litentry-dashboards","b2f"),exact:!0},{path:"/docs/general/dune-analytics/manta-dashboards",component:d("/docs/general/dune-analytics/manta-dashboards","90a"),exact:!0},{path:"/docs/general/dune-analytics/moonbeam-dashboards",component:d("/docs/general/dune-analytics/moonbeam-dashboards","212"),exact:!0},{path:"/docs/general/dune-analytics/neuroweb-dashboards",component:d("/docs/general/dune-analytics/neuroweb-dashboards","7ae"),exact:!0},{path:"/docs/general/dune-analytics/nodle-dashboards",component:d("/docs/general/dune-analytics/nodle-dashboards","32d"),exact:!0},{path:"/docs/general/dune-analytics/pendulum-dashboards",component:d("/docs/general/dune-analytics/pendulum-dashboards","f49"),exact:!0},{path:"/docs/general/dune-analytics/people-dashboards",component:d("/docs/general/dune-analytics/people-dashboards","0d0"),exact:!0},{path:"/docs/general/dune-analytics/phala-dashboards",component:d("/docs/general/dune-analytics/phala-dashboards","547"),exact:!0},{path:"/docs/general/dune-analytics/polimec-dashboards",component:d("/docs/general/dune-analytics/polimec-dashboards","d65"),exact:!0},{path:"/docs/general/dune-analytics/polkadex-dashboards",component:d("/docs/general/dune-analytics/polkadex-dashboards","5d2"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards-governance",component:d("/docs/general/dune-analytics/polkadot-dashboards-governance","464"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards-network",component:d("/docs/general/dune-analytics/polkadot-dashboards-network","bac"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards-overview",component:d("/docs/general/dune-analytics/polkadot-dashboards-overview","b3c"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards-staking",component:d("/docs/general/dune-analytics/polkadot-dashboards-staking","4c2"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals","2ad"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard","bf1"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home","b4b"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis","cfb"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard","856"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool","613"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators","a03"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member","ddb"),exact:!0},{path:"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators",component:d("/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators","d6d"),exact:!0},{path:"/docs/general/dune-analytics/snowbridge-dashboards",component:d("/docs/general/dune-analytics/snowbridge-dashboards","09e"),exact:!0},{path:"/docs/general/dune-analytics/stellaswap-dashboards",component:d("/docs/general/dune-analytics/stellaswap-dashboards","a01"),exact:!0},{path:"/docs/general/dune-analytics/unique-dashboards",component:d("/docs/general/dune-analytics/unique-dashboards","18e"),exact:!0},{path:"/docs/general/dunesql-cheatsheet",component:d("/docs/general/dunesql-cheatsheet","5fe"),exact:!0},{path:"/docs/general/onboarding-status-and-key-dashboards",component:d("/docs/general/onboarding-status-and-key-dashboards","46f"),exact:!0},{path:"/docs/general/polkadot-ecosystem-overview",component:d("/docs/general/polkadot-ecosystem-overview","4a3"),exact:!0},{path:"/docs/general/project-dashboards",component:d("/docs/general/project-dashboards","524"),exact:!0},{path:"/docs/getting-started",component:d("/docs/getting-started","76d"),exact:!0},{path:"/docs/glossary",component:d("/docs/glossary","021"),exact:!0,sidebar:"docs"},{path:"/docs/governance-apps",component:d("/docs/governance-apps","055"),exact:!0,sidebar:"docs"},{path:"/docs/grants",component:d("/docs/grants","586"),exact:!0,sidebar:"docs"},{path:"/docs/how-to-dyor",component:d("/docs/how-to-dyor","9ea"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-adversarial-cheatsheet",component:d("/docs/kusama-adversarial-cheatsheet","7ad"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-bug-bounty",component:d("/docs/kusama-bug-bounty","5ce"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-coc",component:d("/docs/kusama-coc","fee"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-getting-started",component:d("/docs/kusama-getting-started","c42"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-social-recovery",component:d("/docs/kusama-social-recovery","f3d"),exact:!0,sidebar:"docs"},{path:"/docs/kusama-timeline",component:d("/docs/kusama-timeline","d67"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-abstraction",component:d("/docs/learn-account-abstraction","670"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-advanced",component:d("/docs/learn-account-advanced","652"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-balances",component:d("/docs/learn-account-balances","8e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-account-multisig",component:d("/docs/learn-account-multisig","f13"),exact:!0,sidebar:"docs"},{path:"/docs/learn-accounts",component:d("/docs/learn-accounts","42e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-advanced-index",component:d("/docs/learn-advanced-index","63e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime",component:d("/docs/learn-agile-coretime","777"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime-getting-started",component:d("/docs/learn-agile-coretime-getting-started","db7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-agile-coretime-index",component:d("/docs/learn-agile-coretime-index","fa7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-architecture",component:d("/docs/learn-architecture","908"),exact:!0,sidebar:"docs"},{path:"/docs/learn-archive",component:d("/docs/learn-archive","ca8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-asset-conversion-assethub",component:d("/docs/learn-asset-conversion-assethub","853"),exact:!0},{path:"/docs/learn-assets",component:d("/docs/learn-assets","624"),exact:!0,sidebar:"docs"},{path:"/docs/learn-assets-index",component:d("/docs/learn-assets-index","506"),exact:!0,sidebar:"docs"},{path:"/docs/learn-async-backing",component:d("/docs/learn-async-backing","691"),exact:!0,sidebar:"docs"},{path:"/docs/learn-basics-index",component:d("/docs/learn-basics-index","2ab"),exact:!0,sidebar:"docs"},{path:"/docs/learn-bridges",component:d("/docs/learn-bridges","c95"),exact:!0,sidebar:"docs"},{path:"/docs/learn-collator",component:d("/docs/learn-collator","50c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-comparisons",component:d("/docs/learn-comparisons","722"),exact:!0},{path:"/docs/learn-comparisons-avalanche",component:d("/docs/learn-comparisons-avalanche","c0c"),exact:!0},{path:"/docs/learn-comparisons-cosmos",component:d("/docs/learn-comparisons-cosmos","bd1"),exact:!0},{path:"/docs/learn-comparisons-ethereum-2",component:d("/docs/learn-comparisons-ethereum-2","227"),exact:!0},{path:"/docs/learn-comparisons-kusama",component:d("/docs/learn-comparisons-kusama","7a6"),exact:!0},{path:"/docs/learn-comparisons-rollups",component:d("/docs/learn-comparisons-rollups","6c5"),exact:!0},{path:"/docs/learn-components-index",component:d("/docs/learn-components-index","ba1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-consensus",component:d("/docs/learn-consensus","83d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-cryptography",component:d("/docs/learn-cryptography","ed0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-DOT",component:d("/docs/learn-DOT","60d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-dot-ksm-bridge",component:d("/docs/learn-dot-ksm-bridge","cac"),exact:!0,sidebar:"docs"},{path:"/docs/learn-elastic-scaling",component:d("/docs/learn-elastic-scaling","867"),exact:!0,sidebar:"docs"},{path:"/docs/learn-future-implementations-index",component:d("/docs/learn-future-implementations-index","e25"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts",component:d("/docs/learn-guides-accounts","e52"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-multisig",component:d("/docs/learn-guides-accounts-multisig","db1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy",component:d("/docs/learn-guides-accounts-proxy","c3c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-accounts-proxy-pure",component:d("/docs/learn-guides-accounts-proxy-pure","76e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-asset-conversion",component:d("/docs/learn-guides-asset-conversion","6af"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets",component:d("/docs/learn-guides-assets","832"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-assets-create",component:d("/docs/learn-guides-assets-create","eb2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bounties",component:d("/docs/learn-guides-bounties","883"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-bridges",component:d("/docs/learn-guides-bridges","5ea"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-claims",component:d("/docs/learn-guides-claims","1bb"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-marketplaces",component:d("/docs/learn-guides-coretime-marketplaces","515"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-parachains",component:d("/docs/learn-guides-coretime-parachains","8e6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-coretime-swap",component:d("/docs/learn-guides-coretime-swap","057"),exact:!0},{path:"/docs/learn-guides-dot-ksm-bridge",component:d("/docs/learn-guides-dot-ksm-bridge","5d0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-identity",component:d("/docs/learn-guides-identity","6ba"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-ledger",component:d("/docs/learn-guides-ledger","7de"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-nominator",component:d("/docs/learn-guides-nominator","394"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-polkadot-opengov",component:d("/docs/learn-guides-polkadot-opengov","238"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking",component:d("/docs/learn-guides-staking","bf2"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-staking-pools",component:d("/docs/learn-guides-staking-pools","14f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-transfers",component:d("/docs/learn-guides-transfers","765"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-treasury",component:d("/docs/learn-guides-treasury","436"),exact:!0,sidebar:"docs"},{path:"/docs/learn-guides-vault",component:d("/docs/learn-guides-vault","f34"),exact:!0,sidebar:"docs"},{path:"/docs/learn-hyperbridge",component:d("/docs/learn-hyperbridge","646"),exact:!0,sidebar:"docs"},{path:"/docs/learn-identity",component:d("/docs/learn-identity","06f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-implementations",component:d("/docs/learn-implementations","9b0"),exact:!0},{path:"/docs/learn-index",component:d("/docs/learn-index","0b7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-inflation",component:d("/docs/learn-inflation","a49"),exact:!0,sidebar:"docs"},{path:"/docs/learn-jam-chain",component:d("/docs/learn-jam-chain","24b"),exact:!0},{path:"/docs/learn-jam-faq",component:d("/docs/learn-jam-faq","b6d"),exact:!0},{path:"/docs/learn-nft",component:d("/docs/learn-nft","078"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-pallets",component:d("/docs/learn-nft-pallets","665"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nft-projects",component:d("/docs/learn-nft-projects","226"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nomination-pools",component:d("/docs/learn-nomination-pools","328"),exact:!0,sidebar:"docs"},{path:"/docs/learn-nominator",component:d("/docs/learn-nominator","443"),exact:!0,sidebar:"docs"},{path:"/docs/learn-offenses",component:d("/docs/learn-offenses","ed9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains",component:d("/docs/learn-parachains","d04"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-faq",component:d("/docs/learn-parachains-faq","a2b"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-index",component:d("/docs/learn-parachains-index","e80"),exact:!0,sidebar:"docs"},{path:"/docs/learn-parachains-protocol",component:d("/docs/learn-parachains-protocol","604"),exact:!0,sidebar:"docs"},{path:"/docs/learn-participants-index",component:d("/docs/learn-participants-index","426"),exact:!0,sidebar:"docs"},{path:"/docs/learn-phragmen",component:d("/docs/learn-phragmen","894"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-host",component:d("/docs/learn-polkadot-host","92a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-js-guides",component:d("/docs/learn-polkadot-js-guides","f92"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov",component:d("/docs/learn-polkadot-opengov","8c9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-index",component:d("/docs/learn-polkadot-opengov-index","922"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-origins",component:d("/docs/learn-polkadot-opengov-origins","9d6"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-opengov-treasury",component:d("/docs/learn-polkadot-opengov-treasury","fbd"),exact:!0,sidebar:"docs"},{path:"/docs/learn-polkadot-technical-fellowship",component:d("/docs/learn-polkadot-technical-fellowship","ae3"),exact:!0},{path:"/docs/learn-polkadotjs",component:d("/docs/learn-polkadotjs","56a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies",component:d("/docs/learn-proxies","a18"),exact:!0,sidebar:"docs"},{path:"/docs/learn-proxies-pure",component:d("/docs/learn-proxies-pure","8be"),exact:!0,sidebar:"docs"},{path:"/docs/learn-runtime-upgrades",component:d("/docs/learn-runtime-upgrades","582"),exact:!0,sidebar:"docs"},{path:"/docs/learn-safrole",component:d("/docs/learn-safrole","213"),exact:!0,sidebar:"docs"},{path:"/docs/learn-scams",component:d("/docs/learn-scams","a7e"),exact:!0,sidebar:"docs"},{path:"/docs/learn-snowbridge",component:d("/docs/learn-snowbridge","639"),exact:!0},{path:"/docs/learn-spree",component:d("/docs/learn-spree","c79"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking",component:d("/docs/learn-staking","9b8"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-advanced",component:d("/docs/learn-staking-advanced","33a"),exact:!0,sidebar:"docs"},{path:"/docs/learn-staking-index",component:d("/docs/learn-staking-index","cf9"),exact:!0,sidebar:"docs"},{path:"/docs/learn-system-chains",component:d("/docs/learn-system-chains","1b0"),exact:!0,sidebar:"docs"},{path:"/docs/learn-teleport",component:d("/docs/learn-teleport","e18"),exact:!0,sidebar:"docs"},{path:"/docs/learn-transactions",component:d("/docs/learn-transactions","81c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-validator",component:d("/docs/learn-validator","4f1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-video-tutorials",component:d("/docs/learn-video-tutorials","64f"),exact:!0,sidebar:"docs"},{path:"/docs/learn-wasm",component:d("/docs/learn-wasm","0b7"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm",component:d("/docs/learn-xcm","20d"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-index",component:d("/docs/learn-xcm-index","49c"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-instructions",component:d("/docs/learn-xcm-instructions","3c1"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-pallet",component:d("/docs/learn-xcm-pallet","3da"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-transport",component:d("/docs/learn-xcm-transport","5ef"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcm-usecases",component:d("/docs/learn-xcm-usecases","2ae"),exact:!0,sidebar:"docs"},{path:"/docs/learn-xcvm",component:d("/docs/learn-xcvm","d56"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-auction",component:d("/docs/learn/learn-auction","7ec"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-controller",component:d("/docs/learn/learn-controller","d30"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-crowdloans",component:d("/docs/learn/learn-crowdloans","834"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-governance",component:d("/docs/learn/learn-governance","4df"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-launch",component:d("/docs/learn/learn-launch","853"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-redenomination",component:d("/docs/learn/learn-redenomination","6a6"),exact:!0,sidebar:"docs"},{path:"/docs/learn/learn-treasury",component:d("/docs/learn/learn-treasury","217"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm",component:d("/docs/learn/xcm","995"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/config-deep-dive",component:d("/docs/learn/xcm/config-deep-dive","b64"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals",component:d("/docs/learn/xcm/fundamentals","13d"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-fees",component:d("/docs/learn/xcm/fundamentals-fees","6b3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-multiasset",component:d("/docs/learn/xcm/fundamentals-multiasset","001"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-summary",component:d("/docs/learn/xcm/fundamentals-summary","a4b"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals-xcvm",component:d("/docs/learn/xcm/fundamentals-xcvm","086"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation",component:d("/docs/learn/xcm/fundamentals/multilocation","e19"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-example",component:d("/docs/learn/xcm/fundamentals/multilocation-example","358"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-junctions",component:d("/docs/learn/xcm/fundamentals/multilocation-junctions","e64"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/fundamentals/multilocation-summary",component:d("/docs/learn/xcm/fundamentals/multilocation-summary","958"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/introduction",component:d("/docs/learn/xcm/introduction","813"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey",component:d("/docs/learn/xcm/journey","0b1"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-assets",component:d("/docs/learn/xcm/journey-assets","bf0"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-channels",component:d("/docs/learn/xcm/journey-channels","22c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-expectations",component:d("/docs/learn/xcm/journey-expectations","c0f"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-fees",component:d("/docs/learn/xcm/journey-fees","193"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-holding",component:d("/docs/learn/xcm/journey-holding","b29"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-locks",component:d("/docs/learn/xcm/journey-locks","f3a"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-origin",component:d("/docs/learn/xcm/journey-origin","a4d"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-queries",component:d("/docs/learn/xcm/journey-queries","670"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-register",component:d("/docs/learn/xcm/journey-register","0fe"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-summary",component:d("/docs/learn/xcm/journey-summary","6a3"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-transact",component:d("/docs/learn/xcm/journey-transact","eae"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey-version",component:d("/docs/learn/xcm/journey-version","d38"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers",component:d("/docs/learn/xcm/journey/transfers","d74"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-reserve",component:d("/docs/learn/xcm/journey/transfers-reserve","4a6"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-summary",component:d("/docs/learn/xcm/journey/transfers-summary","2e8"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/journey/transfers-teleport",component:d("/docs/learn/xcm/journey/transfers-teleport","2a8"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview",component:d("/docs/learn/xcm/overview","376"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-architecture",component:d("/docs/learn/xcm/overview-architecture","7ac"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-format",component:d("/docs/learn/xcm/overview-format","bef"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-intro",component:d("/docs/learn/xcm/overview-intro","32c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-summary",component:d("/docs/learn/xcm/overview-summary","daf"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/overview-xcvm",component:d("/docs/learn/xcm/overview-xcvm","238"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart",component:d("/docs/learn/xcm/quickstart","9db"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-first-look",component:d("/docs/learn/xcm/quickstart-first-look","b8c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-simulator",component:d("/docs/learn/xcm/quickstart-simulator","de9"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/quickstart-summary",component:d("/docs/learn/xcm/quickstart-summary","30b"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-glossary",component:d("/docs/learn/xcm/reference-glossary","aa6"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/reference-xcvm-registers",component:d("/docs/learn/xcm/reference-xcvm-registers","043"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/references",component:d("/docs/learn/xcm/references","61c"),exact:!0,sidebar:"docs"},{path:"/docs/learn/xcm/testing",component:d("/docs/learn/xcm/testing","81b"),exact:!0,sidebar:"docs"},{path:"/docs/ledger",component:d("/docs/ledger","593"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-archive",component:d("/docs/maintain-archive","17f"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-bootnode",component:d("/docs/maintain-bootnode","c8b"),exact:!0},{path:"/docs/maintain-endpoints",component:d("/docs/maintain-endpoints","cee"),exact:!0},{path:"/docs/maintain-errors",component:d("/docs/maintain-errors","139"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-async-backing",component:d("/docs/maintain-guides-async-backing","82f"),exact:!0},{path:"/docs/maintain-guides-how-to-chill",component:d("/docs/maintain-guides-how-to-chill","2b2"),exact:!0},{path:"/docs/maintain-guides-how-to-monitor-your-node",component:d("/docs/maintain-guides-how-to-monitor-your-node","1b0"),exact:!0},{path:"/docs/maintain-guides-how-to-stop-validating",component:d("/docs/maintain-guides-how-to-stop-validating","67e"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-systemd",component:d("/docs/maintain-guides-how-to-systemd","d67"),exact:!0},{path:"/docs/maintain-guides-how-to-upgrade",component:d("/docs/maintain-guides-how-to-upgrade","43a"),exact:!0},{path:"/docs/maintain-guides-how-to-validate-kusama",component:d("/docs/maintain-guides-how-to-validate-kusama","ea3"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-how-to-validate-polkadot",component:d("/docs/maintain-guides-how-to-validate-polkadot","9a1"),exact:!0},{path:"/docs/maintain-guides-secure-validator",component:d("/docs/maintain-guides-secure-validator","e98"),exact:!0},{path:"/docs/maintain-guides-society-kusama",component:d("/docs/maintain-guides-society-kusama","059"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-validator-community",component:d("/docs/maintain-guides-validator-community","699"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-guides-validator-payout",component:d("/docs/maintain-guides-validator-payout","a20"),exact:!0},{path:"/docs/maintain-index",component:d("/docs/maintain-index","c57"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-networks",component:d("/docs/maintain-networks","51c"),exact:!0},{path:"/docs/maintain-polkadot-parameters",component:d("/docs/maintain-polkadot-parameters","38b"),exact:!0,sidebar:"docs"},{path:"/docs/maintain-rpc",component:d("/docs/maintain-rpc","013"),exact:!0},{path:"/docs/maintain-sync",component:d("/docs/maintain-sync","fd5"),exact:!0},{path:"/docs/maintain-wss",component:d("/docs/maintain-wss","a8e"),exact:!0},{path:"/docs/maintain/maintain-guides-democracy",component:d("/docs/maintain/maintain-guides-democracy","c17"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-join-council",component:d("/docs/maintain/maintain-guides-how-to-join-council","e5f"),exact:!0,sidebar:"docs"},{path:"/docs/maintain/maintain-guides-how-to-vote-councillor",component:d("/docs/maintain/maintain-guides-how-to-vote-councillor","cc7"),exact:!0,sidebar:"docs"},{path:"/docs/metadata",component:d("/docs/metadata","096"),exact:!0,sidebar:"docs"},{path:"/docs/multisig-apps",component:d("/docs/multisig-apps","593"),exact:!0,sidebar:"docs"},{path:"/docs/parachains-apps",component:d("/docs/parachains-apps","cda"),exact:!0,sidebar:"docs"},{path:"/docs/parity-data-dashboards",component:d("/docs/parity-data-dashboards","11c"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-community-foundation",component:d("/docs/polkadot-community-foundation","ca8"),exact:!0},{path:"/docs/polkadot-direction",component:d("/docs/polkadot-direction","a79"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-v1",component:d("/docs/polkadot-v1","a68"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vault",component:d("/docs/polkadot-vault","e33"),exact:!0,sidebar:"docs"},{path:"/docs/polkadot-vision-index",component:d("/docs/polkadot-vision-index","641"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs",component:d("/docs/polkadotjs","fd4"),exact:!0,sidebar:"docs"},{path:"/docs/polkadotjs-ui",component:d("/docs/polkadotjs-ui","369"),exact:!0,sidebar:"docs"},{path:"/docs/programs-index",component:d("/docs/programs-index","292"),exact:!0,sidebar:"docs"},{path:"/docs/staking-apps",component:d("/docs/staking-apps","481"),exact:!0,sidebar:"docs"},{path:"/docs/staking-dashboard",component:d("/docs/staking-dashboard","d6b"),exact:!0,sidebar:"docs"},{path:"/docs/start-building",component:d("/docs/start-building","501"),exact:!0,sidebar:"docs"},{path:"/docs/stay-safe-index",component:d("/docs/stay-safe-index","e19"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-contributors",component:d("/docs/thousand-contributors","b6c"),exact:!0,sidebar:"docs"},{path:"/docs/thousand-validators",component:d("/docs/thousand-validators","500"),exact:!0,sidebar:"docs"},{path:"/docs/transaction-attacks",component:d("/docs/transaction-attacks","5b0"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-and-extensions",component:d("/docs/wallets-and-extensions","8ad"),exact:!0,sidebar:"docs"},{path:"/docs/wallets-index",component:d("/docs/wallets-index","d70"),exact:!0,sidebar:"docs"},{path:"/docs/web3-and-polkadot",component:d("/docs/web3-and-polkadot","c3a"),exact:!0,sidebar:"docs"}]}]}]},{path:"/",component:d("/","2e1"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(96540),a=n(74848),o=r.createContext(!1);function i(e){var t=e.children,n=(0,r.useState)(!1),i=n[0],s=n[1];return(0,r.useEffect)((function(){s(!0)}),[]),(0,a.jsx)(o.Provider,{value:i,children:t})}},70588:(e,t,n)=>{"use strict";var r=n(96540),a=n(5338),o=n(80545),i=n(54625),s=n(84450),c=n(38193);const l=[n(10119),n(26134),n(76294),n(32507),n(40282)];var u=n(1459),d=n(56347),p=n(22831),f=n(74848);function m(e){var t=e.children;return(0,f.jsx)(f.Fragment,{children:t})}var h=n(5260),b=n(44586),g=n(86025),y=n(6342),v=n(69024),x=n(32131),w=n(14090),k=n(2967),_=n(70440),S=n(41463);function E(){var e=(0,b.A)().i18n,t=e.currentLocale,n=e.defaultLocale,r=e.localeConfigs,a=(0,x.o)(),o=r[t].htmlLang,i=function(e){return e.replace("-","_")};return(0,f.jsxs)(h.A,{children:[Object.entries(r).map((function(e){var t=e[0],n=e[1].htmlLang;return(0,f.jsx)("link",{rel:"alternate",href:a.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,f.jsx)("link",{rel:"alternate",href:a.createUrl({locale:n,fullyQualified:!0}),hrefLang:"x-default"}),(0,f.jsx)("meta",{property:"og:locale",content:i(o)}),Object.values(r).filter((function(e){return o!==e.htmlLang})).map((function(e){return(0,f.jsx)("meta",{property:"og:locale:alternate",content:i(e.htmlLang)},"meta-og-"+e.htmlLang)}))]})}function j(e){var t=e.permalink,n=(0,b.A)().siteConfig.url,r=function(){var e=(0,b.A)().siteConfig,t=e.url,n=e.baseUrl,r=e.trailingSlash,a=(0,d.zy)().pathname;return t+(0,_.Ks)((0,g.Ay)(a),{trailingSlash:r,baseUrl:n})}(),a=t?""+n+t:r;return(0,f.jsxs)(h.A,{children:[(0,f.jsx)("meta",{property:"og:url",content:a}),(0,f.jsx)("link",{rel:"canonical",href:a})]})}function O(){var e=(0,b.A)().i18n.currentLocale,t=(0,y.p)(),n=t.metadata,r=t.image;return(0,f.jsxs)(f.Fragment,{children:[(0,f.jsxs)(h.A,{children:[(0,f.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,f.jsx)("body",{className:w.w})]}),r&&(0,f.jsx)(v.be,{image:r}),(0,f.jsx)(j,{}),(0,f.jsx)(E,{}),(0,f.jsx)(S.A,{tag:k.C,locale:e}),(0,f.jsx)(h.A,{children:n.map((function(e,t){return(0,f.jsx)("meta",Object.assign({},e),t)}))})]})}var C=new Map;var A=n(6125),P=n(76202),T=n(77387),I=n(205);function N(e){for(var t=arguments.length,n=new Array(t>1?t-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";n.d(t,{o:()=>d,l:()=>p});var r=n(96540),a=n(84450);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"general/kusama/kusama-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-guides-coretime-start","path":"/docs/build-guides-coretime-start","sidebar":"docs"},{"id":"build/build-guides-coretime-troubleshoot","path":"/docs/build-guides-coretime-troubleshoot","sidebar":"docs"},{"id":"build/build-guides-install-deps","path":"/docs/build-guides-install-deps","sidebar":"docs"},{"id":"build/build-guides-template-basic","path":"/docs/build-guides-template-basic","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"},{"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"},{"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"},{"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"},{"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/chain-state-values","path":"/docs/chain-state-values"},{"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/dune-analytics/dunesql-cheatsheet","path":"/docs/general/dunesql-cheatsheet"},{"id":"general/dune-analytics/onboarding-status-and-key-dashboards","path":"/docs/general/onboarding-status-and-key-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/acala-dashboards","path":"/docs/general/dune-analytics/acala-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/assethub-dashboards","path":"/docs/general/dune-analytics/assethub-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/astar-dashboards","path":"/docs/general/dune-analytics/astar-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/bifrost-dashboards","path":"/docs/general/dune-analytics/bifrost-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/bridgehub-dashboards","path":"/docs/general/dune-analytics/bridgehub-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/centrifuge-dashboards","path":"/docs/general/dune-analytics/centrifuge-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/collectives-dashboards","path":"/docs/general/dune-analytics/collectives-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/coretime-dashboards","path":"/docs/general/dune-analytics/coretime-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/energywebx-dashboards","path":"/docs/general/dune-analytics/energywebx-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/frequency-dashboards","path":"/docs/general/dune-analytics/frequency-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/hydration-dashboards","path":"/docs/general/dune-analytics/hydration-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/interlay-dashboards","path":"/docs/general/dune-analytics/interlay-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/invarch-dashboards","path":"/docs/general/dune-analytics/invarch-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/litentry-dashboards","path":"/docs/general/dune-analytics/litentry-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/manta-dashboards","path":"/docs/general/dune-analytics/manta-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/moonbeam-dashboards","path":"/docs/general/dune-analytics/moonbeam-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/neuroweb-dashboards","path":"/docs/general/dune-analytics/neuroweb-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/nodle-dashboards","path":"/docs/general/dune-analytics/nodle-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/pendulum-dashboards","path":"/docs/general/dune-analytics/pendulum-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/people-dashboards","path":"/docs/general/dune-analytics/people-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/phala-dashboards","path":"/docs/general/dune-analytics/phala-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/polimec-dashboards","path":"/docs/general/dune-analytics/polimec-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/polkadex-dashboards","path":"/docs/general/dune-analytics/polkadex-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/snowbridge-dashboards","path":"/docs/general/dune-analytics/snowbridge-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/stellaswap-dashboards","path":"/docs/general/dune-analytics/stellaswap-dashboards"},{"id":"general/dune-analytics/parachain-dashboards/unique-dashboards","path":"/docs/general/dune-analytics/unique-dashboards"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-dot-ordinals","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-dot-ordinals"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-governance-dashboard","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-governance-dashboard"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referenda-home","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referenda-home"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-opengov-referendum-voting-analysis","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-opengov-referendum-voting-analysis"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nomination-pool","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nomination-pool"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-nominators","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-nominators"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-pool-member","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-pool-member"},{"id":"general/dune-analytics/polkadot-dashboards/legacy/polkadot-staking-dashboard-validators","path":"/docs/general/dune-analytics/polkadot-dashboards/polkadot-staking-dashboard-validators"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-governance","path":"/docs/general/dune-analytics/polkadot-dashboards-governance"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-network","path":"/docs/general/dune-analytics/polkadot-dashboards-network"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-overview","path":"/docs/general/dune-analytics/polkadot-dashboards-overview"},{"id":"general/dune-analytics/polkadot-dashboards/polkadot-dashboards-staking","path":"/docs/general/dune-analytics/polkadot-dashboards-staking"},{"id":"general/dune-analytics/polkadot-ecosystem-overview","path":"/docs/general/polkadot-ecosystem-overview"},{"id":"general/dune-analytics/project-dashboards","path":"/docs/general/project-dashboards"},{"id":"general/ecosystem-funds","path":"/docs/ecosystem-funds"},{"id":"general/faq","path":"/docs/faq","sidebar":"docs"},{"id":"general/funding","path":"/docs/funding","sidebar":"docs"},{"id":"general/getting-started","path":"/docs/getting-started"},{"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","sidebar":"docs"},{"id":"general/kusama/kusama-bug-bounty","path":"/docs/kusama-bug-bounty","sidebar":"docs"},{"id":"general/kusama/kusama-coc","path":"/docs/kusama-coc","sidebar":"docs"},{"id":"general/kusama/kusama-getting-started","path":"/docs/kusama-getting-started","sidebar":"docs"},{"id":"general/kusama/kusama-social-recovery","path":"/docs/kusama-social-recovery","sidebar":"docs"},{"id":"general/kusama/kusama-timeline","path":"/docs/kusama-timeline","sidebar":"docs"},{"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/parity-data-dashboards","path":"/docs/parity-data-dashboards","sidebar":"docs"},{"id":"general/polkadot-community-foundation","path":"/docs/polkadot-community-foundation"},{"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/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-auction","path":"/docs/learn/learn-auction","sidebar":"docs"},{"id":"learn/archive/learn-controller","path":"/docs/learn/learn-controller","sidebar":"docs"},{"id":"learn/archive/learn-crowdloans","path":"/docs/learn/learn-crowdloans","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-balances","path":"/docs/learn-account-balances","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"},{"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-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"},{"id":"learn/learn-comparisons-avalanche","path":"/docs/learn-comparisons-avalanche"},{"id":"learn/learn-comparisons-cosmos","path":"/docs/learn-comparisons-cosmos"},{"id":"learn/learn-comparisons-ethereum-2","path":"/docs/learn-comparisons-ethereum-2"},{"id":"learn/learn-comparisons-kusama","path":"/docs/learn-comparisons-kusama"},{"id":"learn/learn-comparisons-rollups","path":"/docs/learn-comparisons-rollups"},{"id":"learn/learn-consensus","path":"/docs/learn-consensus","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-bounties","path":"/docs/learn-guides-bounties","sidebar":"docs"},{"id":"learn/learn-guides-bridges","path":"/docs/learn-guides-bridges","sidebar":"docs"},{"id":"learn/learn-guides-claims","path":"/docs/learn-guides-claims","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-coretime-swap","path":"/docs/learn-guides-coretime-swap"},{"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-jam-chain","path":"/docs/learn-jam-chain"},{"id":"learn/learn-jam-faq","path":"/docs/learn-jam-faq"},{"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-offenses","path":"/docs/learn-offenses","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-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"},{"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-safrole","path":"/docs/learn-safrole","sidebar":"docs"},{"id":"learn/learn-snowbridge","path":"/docs/learn-snowbridge"},{"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-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","sidebar":"docs"},{"id":"maintain/kusama/maintain-guides-society-kusama","path":"/docs/maintain-guides-society-kusama","sidebar":"docs"},{"id":"maintain/maintain-archive","path":"/docs/maintain-archive","sidebar":"docs"},{"id":"maintain/maintain-bootnode","path":"/docs/maintain-bootnode"},{"id":"maintain/maintain-endpoints","path":"/docs/maintain-endpoints"},{"id":"maintain/maintain-errors","path":"/docs/maintain-errors","sidebar":"docs"},{"id":"maintain/maintain-guides-async-backing","path":"/docs/maintain-guides-async-backing"},{"id":"maintain/maintain-guides-how-to-chill","path":"/docs/maintain-guides-how-to-chill"},{"id":"maintain/maintain-guides-how-to-monitor-your-node","path":"/docs/maintain-guides-how-to-monitor-your-node"},{"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"},{"id":"maintain/maintain-guides-how-to-upgrade","path":"/docs/maintain-guides-how-to-upgrade"},{"id":"maintain/maintain-guides-how-to-validate-polkadot","path":"/docs/maintain-guides-how-to-validate-polkadot"},{"id":"maintain/maintain-guides-secure-validator","path":"/docs/maintain-guides-secure-validator"},{"id":"maintain/maintain-guides-validator-payout","path":"/docs/maintain-guides-validator-payout"},{"id":"maintain/maintain-index","path":"/docs/maintain-index","sidebar":"docs"},{"id":"maintain/maintain-networks","path":"/docs/maintain-networks"},{"id":"maintain/maintain-polkadot-parameters","path":"/docs/maintain-polkadot-parameters","sidebar":"docs"},{"id":"maintain/maintain-rpc","path":"/docs/maintain-rpc"},{"id":"maintain/maintain-sync","path":"/docs/maintain-sync"},{"id":"maintain/maintain-wss","path":"/docs/maintain-wss"},{"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-parachains-index","path":"/docs/learn-parachains-index","sidebar":"docs"},{"id":"/learn-agile-coretime-index","path":"/docs/learn-agile-coretime-index","sidebar":"docs"},{"id":"/learn-agile-coretime-getting-started","path":"/docs/learn-agile-coretime-getting-started","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-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"}],"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=n(22906);const c=JSON.parse('{"docusaurusVersion":"3.5.2","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.5.2"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.5.2"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.5.2"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.5.2"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.5.2"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"3.5.2"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"3.5.2"},"docusaurus-theme-mermaid":{"type":"package","name":"@docusaurus/theme-mermaid","version":"3.5.2"}}}');var l=n(74848),u={siteConfig:a.default,siteMetadata:c,globalData:o,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){var t=e.children;return(0,l.jsx)(d.Provider,{value:u,children:t})}},67489:(e,t,n)=>{"use strict";n.d(t,{A:()=>b});var r=n(77387),a=n(96540),o=n(38193),i=n(5260),s=n(70440),c=n(51960),l=n(53102),u=n(74848);function d(e){var t=e.error,n=e.tryAgain;return(0,u.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,u.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,u.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,u.jsx)(p,{error:t})]})}function p(e){var t=e.error,n=(0,s.rA)(t).map((function(e){return e.message})).join("\n\nCause:\n");return(0,u.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function f(e){var t=e.children;return(0,u.jsx)(l.W,{value:{plugin:{name:"docusaurus-core-error-boundary",id:"default"}},children:t})}function m(e){var t=e.error,n=e.tryAgain;return(0,u.jsx)(f,{children:(0,u.jsxs)(b,{fallback:function(){return(0,u.jsx)(d,{error:t,tryAgain:n})},children:[(0,u.jsx)(i.A,{children:(0,u.jsx)("title",{children:"Page Error"})}),(0,u.jsx)(c.A,{children:(0,u.jsx)(d,{error:t,tryAgain:n})})]})})}var h=function(e){return(0,u.jsx)(m,Object.assign({},e))},b=function(e){function t(t){var n;return(n=e.call(this,t)||this).state={error:null},n}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e){o.A.canUseDOM&&this.setState({error:e})},n.render=function(){var e=this,t=this.props.children,n=this.state.error;if(n){var r,a={error:n,tryAgain:function(){return e.setState({error:null})}};return(null!=(r=this.props.fallback)?r:h)(a)}return null!=t?t:null},t}(a.Component)},38193:(e,t,n)=>{"use strict";n.d(t,{A:()=>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}},5260:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(80545),a=n(74848);function o(e){return(0,a.jsx)(r.mg,Object.assign({},e))}},28774:(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var r=n(98587),a=n(96540),o=n(54625),i=n(70440),s=n(44586),c=n(16654),l=n(38193),u=n(63427),d=n(86025),p=n(74848),f=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];function m(e,t){var n,m,h,b=e.isNavLink,g=e.to,y=e.href,v=e.activeClassName,x=e.isActive,w=e["data-noBrokenLinkCheck"],k=e.autoAddBaseUrl,_=void 0===k||k,S=(0,r.A)(e,f),E=(0,s.A)().siteConfig,j=E.trailingSlash,O=E.baseUrl,C=E.future.experimental_router,A=(0,d.hH)().withBaseUrl,P=(0,u.A)(),T=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(function(){return T.current}));var I=g||y;var N,R,L=(0,c.A)(I),D=null==I?void 0:I.replace("pathname://",""),M=void 0!==D?(N=D,_&&function(e){return e.startsWith("/")}(N)?A(N):N):void 0;"hash"===C&&null!=(n=M)&&n.startsWith("./")&&(M=null==(R=M)?void 0:R.slice(1));M&&L&&(M=(0,i.Ks)(M,{trailingSlash:j,baseUrl:O}));var F=(0,a.useRef)(!1),B=b?o.k2:o.N_,z=l.A.canUseIntersectionObserver,U=(0,a.useRef)(),$=function(){F.current||null==M||(window.docusaurus.preload(M),F.current=!0)};(0,a.useEffect)((function(){return!z&&L&&l.A.canUseDOM&&null!=M&&window.docusaurus.prefetch(M),function(){z&&U.current&&U.current.disconnect()}}),[U,M,z,L]);var q=null!=(m=null==(h=M)?void 0:h.startsWith("#"))&&m,H=!S.target||"_self"===S.target,V=!M||!L||!H||q&&"hash"!==C;w||!q&&V||P.collectLink(M),S.id&&P.collectAnchor(S.id);var W={};return V?(0,p.jsx)("a",Object.assign({ref:T,href:M},I&&!L&&{target:"_blank",rel:"noopener noreferrer"},S,W)):(0,p.jsx)(B,Object.assign({},S,{onMouseEnter:$,onTouchStart:$,innerRef:function(e){T.current=e,z&&e&&L&&(U.current=new window.IntersectionObserver((function(t){t.forEach((function(t){e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(U.current.unobserve(e),U.current.disconnect(),null!=M&&window.docusaurus.prefetch(M))}))})),U.current.observe(e))},to:M},b&&{isActive:x,activeClassName:v},W))}const h=a.forwardRef(m)},21312:(e,t,n)=>{"use strict";n.d(t,{A:()=>l,T:()=>c});var r=n(96540),a=n(74848);function o(e,t){var n=e.split(/(\{\w+\})/).map((function(e,n){if(n%2==1){var r=null==t?void 0:t[e.slice(1,-1)];if(void 0!==r)return r}return e}));return n.some((function(e){return(0,r.isValidElement)(e)}))?n.map((function(e,t){return(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e})).filter((function(e){return""!==e})):n.join("")}var i=n(22906);function s(e){var t,n,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!=(t=null!=(n=i[null!=r?r:a])?n:a)?t:r}function c(e,t){return o(s({message:e.message,id:e.id}),t)}function l(e){var t=e.children,n=e.id,r=e.values;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var i=s({message:t,id:n});return(0,a.jsx)(a.Fragment,{children:o(i,r)})}},17065:(e,t,n)=>{"use strict";n.d(t,{W:()=>r});var r="default"},16654:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{A:()=>a,z:()=>r})},86025:(e,t,n)=>{"use strict";n.d(t,{Ay:()=>s,hH:()=>i});var r=n(96540),a=n(44586),o=n(16654);function i(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.url,i=e.future.experimental_router,s=(0,r.useCallback)((function(e,r){return function(e){var t=e.siteUrl,n=e.baseUrl,r=e.url,a=e.options,i=void 0===a?{}:a,s=i.forcePrependBaseUrl,c=void 0!==s&&s,l=i.absolute,u=void 0!==l&&l,d=e.router;if(!r||r.startsWith("#")||(0,o.z)(r))return r;if("hash"===d)return r.startsWith("/")?"."+r:"./"+r;if(c)return n+r.replace(/^\//,"");if(r===n.replace(/\/$/,""))return n;var p=r.startsWith(n)?r:n+r.replace(/^\//,"");return u?t+p:p}({siteUrl:n,baseUrl:t,url:e,options:r,router:i})}),[n,t,i]);return{withBaseUrl:s}}function s(e,t){return void 0===t&&(t={}),(0,i().withBaseUrl)(e,t)}},63427:(e,t,n)=>{"use strict";n.d(t,{A:()=>i});var r=n(96540),a=(n(74848),r.createContext({collectAnchor:function(){},collectLink:function(){}})),o=function(){return(0,r.useContext)(a)};function i(){return o()}},44586:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(76202);function o(){return(0,r.useContext)(a.o)}},92303:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});var r=n(96540),a=n(6125);function o(){return(0,r.useContext)(a.o)}},205:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=n(96540);const a=n(38193).A.canUseDOM?r.useLayoutEffect:r.useEffect},86921:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var r=function(e){return"object"==typeof e&&!!e&&Object.keys(e).length>0};function a(e){var t={};return function e(n,a){Object.entries(n).forEach((function(n){var o=n[0],i=n[1],s=a?a+"."+o:o;r(i)?e(i,s):t[s]=i}))}(e),t}},53102:(e,t,n)=>{"use strict";n.d(t,{W:()=>i,o:()=>o});var r=n(96540),a=n(74848),o=r.createContext(null);function i(e){var t=e.children,n=e.value,i=r.useContext(o),s=(0,r.useMemo)((function(){return function(e){var t=e.parent,n=e.value;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}var r=Object.assign({},t.data,null==n?void 0:n.data);return{plugin:t.plugin,data:r}}({parent:i,value:n})}),[i,n]);return(0,a.jsx)(o.Provider,{value:s,children:t})}},53886:(e,t,n)=>{"use strict";n.d(t,{VQ:()=>b,XK:()=>v,g1:()=>y});var r=n(96540),a=n(44070),o=n(17065),i=n(6342),s=n(42349),c=n(43807),l=n(74848),u=function(e){return"docs-preferred-version-"+e},d={save:function(e,t,n){(0,s.Wf)(u(e),{persistence:t}).set(n)},read:function(e,t){return(0,s.Wf)(u(e),{persistence:t}).get()},clear:function(e,t){(0,s.Wf)(u(e),{persistence:t}).del()}},p=function(e){return Object.fromEntries(e.map((function(e){return[e,{preferredVersionName:null}]})))};var f=r.createContext(null);function m(){var e=(0,a.Gy)(),t=(0,i.p)().docs.versionPersistence,n=(0,r.useMemo)((function(){return Object.keys(e)}),[e]),o=(0,r.useState)((function(){return p(n)})),s=o[0],c=o[1];return(0,r.useEffect)((function(){c(function(e){var t=e.pluginIds,n=e.versionPersistence,r=e.allDocsData;return Object.fromEntries(t.map((function(e){return[e,(t=e,a=d.read(t,n),r[t].versions.some((function(e){return e.name===a}))?{preferredVersionName:a}:(d.clear(t,n),{preferredVersionName:null}))];var t,a})))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]),[s,(0,r.useMemo)((function(){return{savePreferredVersion:function(e,n){d.save(e,t,n),c((function(t){var r;return Object.assign({},t,((r={})[e]={preferredVersionName:n},r))}))}}}),[t])]}function h(e){var t=e.children,n=m();return(0,l.jsx)(f.Provider,{value:n,children:t})}function b(e){var t=e.children;return(0,l.jsx)(h,{children:t})}function g(){var e=(0,r.useContext)(f);if(!e)throw new c.dV("DocsPreferredVersionContextProvider");return e}function y(e){var t;void 0===e&&(e=o.W);var n=(0,a.ht)(e),i=g(),s=i[0],c=i[1],l=s[e].preferredVersionName;return{preferredVersion:null!=(t=n.versions.find((function(e){return e.name===l})))?t:null,savePreferredVersionName:(0,r.useCallback)((function(t){c.savePreferredVersion(e,t)}),[c,e])}}function v(){var e=(0,a.Gy)(),t=g()[0];var n=Object.keys(e);return Object.fromEntries(n.map((function(n){return[n,(r=n,o=e[r],i=t[r].preferredVersionName,null!=(a=o.versions.find((function(e){return e.name===i})))?a:null)];var r,a,o,i})))}},82565:(e,t,n)=>{"use strict";n.d(t,{k:()=>o,v:()=>i});var r=n(44070),a=n(53886);function o(e,t){return"docs-"+e+"-"+t}function i(){var e=(0,r.Gy)(),t=(0,r.gk)(),n=(0,a.XK)();return[].concat(Object.keys(e).map((function(r){var a,i=(null==t?void 0:t.activePlugin.pluginId)===r?t.activeVersion:void 0,s=n[r],c=e[r].versions.find((function(e){return e.isLast}));return o(r,(null!=(a=null!=i?i:s)?a:c).name)})))}},60609:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,t:()=>l});var r=n(96540),a=n(43807),o=n(74848),i=Symbol("EmptyContext"),s=r.createContext(i);function c(e){var t=e.children,n=e.name,a=e.items,i=(0,r.useMemo)((function(){return n&&a?{name:n,items:a}:null}),[n,a]);return(0,o.jsx)(s.Provider,{value:i,children:t})}function l(){var e=(0,r.useContext)(s);if(e===i)throw new a.dV("DocsSidebarProvider");return e}},26972:(e,t,n)=>{"use strict";n.d(t,{$S:()=>h,B5:()=>j,Nr:()=>m,OF:()=>k,QB:()=>E,Vd:()=>_,Y:()=>x,cC:()=>f,d1:()=>O,fW:()=>S,w8:()=>y});var r=n(43845),a=n(96540),o=n(56347),i=n(22831),s=n(44070),c=n(99169),l=n(31682),u=n(53886),d=n(23025),p=n(60609);function f(e){var t=(0,d.r)();if(e){var n=t.docs[e];if(!n)throw new Error("no version doc found by id="+e);return n}}function m(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(var t,n=(0,r.A)(e.items);!(t=n()).done;){var a=m(t.value);if(a)return a}}(e):void 0:e.href}function h(){var e=(0,o.zy)().pathname,t=(0,p.t)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");var n=w({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(e+" is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.");return n}var b=function(e,t){return void 0!==e&&(0,c.ys)(e,t)},g=function(e,t){return e.some((function(e){return y(e,t)}))};function y(e,t){return"link"===e.type?b(e.href,t):"category"===e.type&&(b(e.href,t)||g(e.items,t))}function v(e,t){switch(e.type){case"category":return y(e,t)||e.items.some((function(e){return v(e,t)}));case"link":return!e.unlisted||y(e,t);default:return!0}}function x(e,t){return(0,a.useMemo)((function(){return e.filter((function(e){return v(e,t)}))}),[e,t])}function w(e){var t=e.sidebarItems,n=e.pathname,a=e.onlyCategories,o=void 0!==a&&a,i=[];return function e(t){for(var a,s=(0,r.A)(t);!(a=s()).done;){var l=a.value;if("category"===l.type&&((0,c.ys)(l.href,n)||e(l.items))||"link"===l.type&&(0,c.ys)(l.href,n))return o&&"category"!==l.type||i.unshift(l),!0}return!1}(t),i}function k(){var e,t=(0,p.t)(),n=(0,o.zy)().pathname;return!1!==(null==(e=(0,s.vT)())?void 0:e.pluginData.breadcrumbs)&&t?w({sidebarItems:t.items,pathname:n}):null}function _(e){var t=(0,s.zK)(e).activeVersion,n=(0,u.g1)(e).preferredVersion,r=(0,s.r7)(e);return(0,a.useMemo)((function(){return(0,l.sb)([t,n,r].filter(Boolean))}),[t,n,r])}function S(e,t){var n=_(t);return(0,a.useMemo)((function(){var t=n.flatMap((function(e){return e.sidebars?Object.entries(e.sidebars):[]})),r=t.find((function(t){return t[0]===e}));if(!r)throw new Error("Can't find any sidebar with id \""+e+'" in version'+(n.length>1?"s":"")+" "+n.map((function(e){return e.name})).join(", ")+'".\nAvailable sidebar ids are:\n- '+t.map((function(e){return e[0]})).join("\n- "));return r[1]}),[e,n])}function E(e,t){var n=_(t);return(0,a.useMemo)((function(){var t=n.flatMap((function(e){return e.docs})),r=t.find((function(t){return t.id===e}));if(!r){if(n.flatMap((function(e){return e.draftIds})).includes(e))return null;throw new Error("Couldn't find any doc with id \""+e+'" in version'+(n.length>1?"s":"")+' "'+n.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+(0,l.sb)(t.map((function(e){return e.id}))).join("\n- "))}return r}),[e,n])}function j(e){var t=e.route,n=(0,o.zy)(),r=(0,d.r)(),a=t.routes,s=a.find((function(e){return(0,o.B6)(n.pathname,e)}));if(!s)return null;var c=s.sidebar,l=c?r.docsSidebars[c]:void 0;return{docElement:(0,i.v)(a),sidebarName:c,sidebarItems:l}}function O(e){return e.filter((function(e){return!("category"===e.type||"link"===e.type)||!!m(e)}))}},23025:(e,t,n)=>{"use strict";n.d(t,{n:()=>s,r:()=>c});var r=n(96540),a=n(43807),o=n(74848),i=r.createContext(null);function s(e){var t=e.children,n=e.version;return(0,o.jsx)(i.Provider,{value:n,children:t})}function c(){var e=(0,r.useContext)(i);if(null===e)throw new a.dV("DocsVersionProvider");return e}},44070:(e,t,n)=>{"use strict";n.d(t,{zK:()=>g,vT:()=>f,gk:()=>m,Gy:()=>d,HW:()=>y,ht:()=>p,r7:()=>b,jh:()=>h});var r=n(56347),a=n(44586),o=n(17065);function i(e,t){void 0===t&&(t={});var n=(0,a.A)().globalData[e];if(!n&&t.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}var s=function(e){return e.versions.find((function(e){return e.isLast}))};function c(e,t){return[].concat(e.versions).sort((function(e,t){return e.path===t.path?0:e.path.includes(t.path)?-1:t.path.includes(e.path)?1:0})).find((function(e){return!!(0,r.B6)(t,{path:e.path,exact:!1,strict:!1})}))}function l(e,t){var n,a,o=c(e,t),i=null==o?void 0:o.docs.find((function(e){return!!(0,r.B6)(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:o,activeDoc:i,alternateDocVersions:i?(n=i.id,a={},e.versions.forEach((function(e){e.docs.forEach((function(t){t.id===n&&(a[e.name]=t)}))})),a):{}}}var u={},d=function(){var e;return null!=(e=i("docusaurus-plugin-content-docs"))?e:u},p=function(e){try{return function(e,t,n){void 0===t&&(t=o.W),void 0===n&&(n={});var r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+t+'".');return a}("docusaurus-plugin-content-docs",e,{failfast:!0})}catch(t){throw new Error("You are using a feature of the Docusaurus docs plugin, but this plugin does not seem to be enabled"+("Default"===e?"":" (pluginId="+e),{cause:t})}};function f(e){return void 0===e&&(e={}),function(e,t,n){void 0===n&&(n={});var a=Object.entries(e).sort((function(e,t){return t[1].path.localeCompare(e[1].path)})).find((function(e){var n=e[1];return!!(0,r.B6)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error("Can't find active docs plugin for \""+t+'" 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.zy)().pathname,e)}function m(e){void 0===e&&(e={});var t=f(e),n=(0,r.zy)().pathname;if(t)return{activePlugin:t,activeVersion:c(t.pluginData,n)}}function h(e){return p(e).versions}function b(e){var t=p(e);return s(t)}function g(e){return l(p(e),(0,r.zy)().pathname)}function y(e){return function(e,t){var n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(p(e),(0,r.zy)().pathname)}},76294:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(5947),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate:function(e){var t=e.location,n=e.previousLocation;if(n&&t.pathname!==n.pathname){var r=window.setTimeout((function(){a().start()}),200);return function(){return window.clearTimeout(r)}}},onRouteDidUpdate:function(){a().done()}}},26134:(e,t,n)=>{"use strict";var r,a,o=n(71765),i=n(84450);r=o.My,a=i.default.themeConfig.prism.additionalLanguages,globalThis.Prism=r,a.forEach((function(e){"php"===e&&n(19700),n(91830)("./prism-"+e)})),delete globalThis.Prism},51107:(e,t,n)=>{"use strict";n.d(t,{A:()=>p});var r=n(98587),a=(n(96540),n(34164)),o=n(21312),i=n(6342),s=n(28774),c=n(63427);const l={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var u=n(74848),d=["as","id"];function p(e){var t=e.as,n=e.id,p=(0,r.A)(e,d),f=(0,c.A)(),m=(0,i.p)().navbar.hideOnScroll;if("h1"===t||!n)return(0,u.jsx)(t,Object.assign({},p,{id:void 0}));f.collectAnchor(n);var h=(0,o.T)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof p.children?p.children:n});return(0,u.jsxs)(t,Object.assign({},p,{className:(0,a.A)("anchor",m?l.anchorWithHideOnScrollNavbar:l.anchorWithStickyNavbar,p.className),id:n,children:[p.children,(0,u.jsx)(s.A,{className:"hash-link",to:"#"+n,"aria-label":h,title:h,children:"\u200b"})]}))}},43186:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);const r={iconExternalLink:"iconExternalLink_nPIU"};var a=n(74848);function o(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,i=void 0===o?13.5:o;return(0,a.jsx)("svg",{width:n,height:i,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,a.jsx)("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"})})}},51960:(e,t,n)=>{"use strict";n.d(t,{A:()=>Et});var r=n(96540),a=n(34164),o=n(67489),i=n(69024),s=n(56347),c=n(21312),l=n(75062),u=n(74848),d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){var e=(0,r.useRef)(null),t=(0,s.W6)().action,n=(0,r.useCallback)((function(e){e.preventDefault();var t,n=null!=(t=document.querySelector("main:first-of-type"))?t:document.getElementById(d);n&&p(n)}),[]);return(0,l.$)((function(n){var r=n.location;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}var m=(0,c.T)({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 t,n=null!=(t=e.children)?t:m,r=f(),a=r.containerRef,o=r.onClick;return(0,u.jsx)("div",{ref:a,role:"region","aria-label":m,children:(0,u.jsx)("a",Object.assign({},e,{href:"#"+d,onClick:o,children:n}))})}var b=n(17559),g=n(14090);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(h,{className:y.skipToContent})}var x=n(6342),w=n(65041),k=n(98587),_=["width","height","color","strokeWidth","className"];function S(e){var t=e.width,n=void 0===t?21:t,r=e.height,a=void 0===r?21:r,o=e.color,i=void 0===o?"currentColor":o,s=e.strokeWidth,c=void 0===s?1.2:s,l=(e.className,(0,k.A)(e,_));return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 15 15",width:n,height:a},l,{children:(0,u.jsx)("g",{stroke:i,strokeWidth:c,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})}))}const E={closeButton:"closeButton_CVFx"};function j(e){return(0,u.jsx)("button",Object.assign({type:"button","aria-label":(0,c.T)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.A)("clean-btn close",E.closeButton,e.className),children:(0,u.jsx)(S,{width:14,height:14,strokeWidth:3.1})}))}const O={content:"content_knG7"};function C(e){var t=(0,x.p)().announcementBar.content;return(0,u.jsx)("div",Object.assign({},e,{className:(0,a.A)(O.content,e.className),dangerouslySetInnerHTML:{__html:t}}))}const A={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function P(){var e=(0,x.p)().announcementBar,t=(0,w.M)(),n=t.isActive,r=t.close;if(!n)return null;var a=e.backgroundColor,o=e.textColor,i=e.isCloseable;return(0,u.jsxs)("div",{className:A.announcementBar,style:{backgroundColor:a,color:o},role:"banner",children:[i&&(0,u.jsx)("div",{className:A.announcementBarPlaceholder}),(0,u.jsx)(C,{className:A.announcementBarContent}),i&&(0,u.jsx)(j,{onClick:r,className:A.announcementBarClose})]})}var T=n(22069),I=n(23104);var N=n(43807),R=n(75600),L=r.createContext(null);function D(e){var t,n,a,o,i,s,c,l=e.children,d=(t=(0,T.M)(),n=(0,R.YL)(),a=(0,r.useState)(!1),o=a[0],i=a[1],s=null!==n.component,c=(0,N.ZC)(s),(0,r.useEffect)((function(){s&&!c&&i(!0)}),[s,c]),(0,r.useEffect)((function(){s?t.shown||i(!0):i(!1)}),[t.shown,s]),(0,r.useMemo)((function(){return[o,i]}),[o]));return(0,u.jsx)(L.Provider,{value:d,children:l})}function M(e){if(e.component){var t=e.component;return(0,u.jsx)(t,Object.assign({},e.props))}}function F(){var e=(0,r.useContext)(L);if(!e)throw new N.dV("NavbarSecondaryMenuDisplayProvider");var t=e[0],n=e[1],a=(0,r.useCallback)((function(){return n(!1)}),[n]),o=(0,R.YL)();return(0,r.useMemo)((function(){return{shown:t,hide:a,content:M(o)}}),[a,o,t])}function B(e){var t=e.header,n=e.primaryMenu,r=e.secondaryMenu,o=F().shown;return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,a.A)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":o}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var z=n(95293),U=n(92303);function $(e){return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,u.jsx)("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 q(e){return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:24,height:24},e,{children:(0,u.jsx)("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 V(e){var t=e.className,n=e.buttonClassName,r=e.value,o=e.onChange,i=(0,U.A)(),s=(0,c.T)({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"===r?(0,c.T)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.T)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,a.A)(H.toggle,t),children:(0,u.jsxs)("button",{className:(0,a.A)("clean-btn",H.toggleButton,!i&&H.toggleButtonDisabled,n),type:"button",onClick:function(){return o("dark"===r?"light":"dark")},disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)($,{className:(0,a.A)(H.toggleIcon,H.lightToggleIcon)}),(0,u.jsx)(q,{className:(0,a.A)(H.toggleIcon,H.darkToggleIcon)})]})})}const W=r.memo(V),K={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function G(e){var t=e.className,n=(0,x.p)().navbar.style,r=(0,x.p)().colorMode.disableSwitch,a=(0,z.G)(),o=a.colorMode,i=a.setColorMode;return r?null:(0,u.jsx)(W,{className:t,buttonClassName:"dark"===n?K.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var Q=n(39529);function Y(){return(0,u.jsx)(Q.A,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Z(){var e=(0,T.M)();return(0,u.jsx)("button",{type:"button","aria-label":(0,c.T)({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()},children:(0,u.jsx)(S,{color:"var(--ifm-color-emphasis-600)"})})}function X(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(Y,{}),(0,u.jsx)(G,{className:"margin-right--md"}),(0,u.jsx)(Z,{})]})}var J=n(28774),ee=n(86025),te=n(16654),ne=n(91252),re=n(43186),ae=["activeBasePath","activeBaseRegex","to","href","label","html","isDropdownLink","prependBaseUrlToHref"];function oe(e){var t=e.activeBasePath,n=e.activeBaseRegex,r=e.to,a=e.href,o=e.label,i=e.html,s=e.isDropdownLink,c=e.prependBaseUrlToHref,l=(0,k.A)(e,ae),d=(0,ee.Ay)(r),p=(0,ee.Ay)(t),f=(0,ee.Ay)(a,{forcePrependBaseUrl:!0}),m=o&&a&&!(0,te.A)(a),h=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[o,m&&(0,u.jsx)(re.A,Object.assign({},s&&{width:12,height:12}))]})};return a?(0,u.jsx)(J.A,Object.assign({href:c?f:a},l,h)):(0,u.jsx)(J.A,Object.assign({to:d,isNavLink:!0},(t||n)&&{isActive:function(e,t){return n?(0,ne.G)(n,t.pathname):t.pathname.startsWith(p)}},l,h))}var ie=["className","isDropdownItem"],se=["className","isDropdownItem"],ce=["mobile","position"];function le(e){var t=e.className,n=e.isDropdownItem,r=void 0!==n&&n,o=(0,k.A)(e,ie),i=(0,u.jsx)(oe,Object.assign({className:(0,a.A)(r?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:r},o));return r?(0,u.jsx)("li",{children:i}):i}function ue(e){var t=e.className,n=(e.isDropdownItem,(0,k.A)(e,se));return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(oe,Object.assign({className:(0,a.A)("menu__link",t)},n))})}function de(e){var t,n=e.mobile,r=void 0!==n&&n,a=(e.position,(0,k.A)(e,ce)),o=r?ue:le;return(0,u.jsx)(o,Object.assign({},a,{activeClassName:null!=(t=a.activeClassName)?t:r?"menu__link--active":"navbar__link--active"}))}var pe=n(41422),fe=n(99169),me=n(44586);const he="dropdownNavbarItemMobile_S0Fm";var be=["items","position","className","onClick"],ge=["items","className","position","onClick"],ye=["mobile"];function ve(e,t){return e.some((function(e){return function(e,t){return!!(0,fe.ys)(e.to,t)||!!(0,ne.G)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function xe(e){var t,n=e.items,o=e.position,i=e.className,s=(e.onClick,(0,k.A)(e,be)),c=(0,r.useRef)(null),l=(0,r.useState)(!1),d=l[0],p=l[1];return(0,r.useEffect)((function(){var e=function(e){c.current&&!c.current.contains(e.target)&&p(!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)}}),[c]),(0,u.jsxs)("div",{ref:c,className:(0,a.A)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===o,"dropdown--show":d}),children:[(0,u.jsx)(oe,Object.assign({"aria-haspopup":"true","aria-expanded":d,role:"button",href:s.to?void 0:"#",className:(0,a.A)("navbar__link",i)},s,{onClick:s.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),p(!d))},children:null!=(t=s.children)?t:s.label})),(0,u.jsx)("ul",{className:"dropdown__menu",children:n.map((function(e,t){return(0,r.createElement)(tt,Object.assign({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))}))})]})}function we(e){var t,n,o=e.items,i=e.className,c=(e.position,e.onClick),l=(0,k.A)(e,ge),d=(n=(0,me.A)().siteConfig.baseUrl,(0,s.zy)().pathname.replace(n,"/")),p=ve(o,d),f=(0,pe.u)({initialState:function(){return!p}}),m=f.collapsed,h=f.toggleCollapsed,b=f.setCollapsed;return(0,r.useEffect)((function(){p&&b(!p)}),[d,p,b]),(0,u.jsxs)("li",{className:(0,a.A)("menu__list-item",{"menu__list-item--collapsed":m}),children:[(0,u.jsx)(oe,Object.assign({role:"button",className:(0,a.A)(he,"menu__link menu__link--sublist menu__link--sublist-caret",i)},l,{onClick:function(e){e.preventDefault(),h()},children:null!=(t=l.children)?t:l.label})),(0,u.jsx)(pe.N,{lazy:!0,as:"ul",className:"menu__list",collapsed:m,children:o.map((function(e,t){return(0,r.createElement)(tt,Object.assign({mobile:!0,isDropdownItem:!0,onClick:c,activeClassName:"menu__link--active"},e,{key:t}))}))})]})}function ke(e){var t=e.mobile,n=void 0!==t&&t,r=(0,k.A)(e,ye),a=n?we:xe;return(0,u.jsx)(a,Object.assign({},r))}var _e=n(32131),Se=["width","height"];function Ee(e){var t=e.width,n=void 0===t?20:t,r=e.height,a=void 0===r?20:r,o=(0,k.A)(e,Se);return(0,u.jsx)("svg",Object.assign({viewBox:"0 0 24 24",width:n,height:a,"aria-hidden":!0},o,{children:(0,u.jsx)("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 je="iconLanguage_nlXk";var Oe=["mobile","dropdownItemsBefore","dropdownItemsAfter","queryString"];var Ce=n(40961),Ae=n(55600),Pe=n(5260),Te=n(24255),Ie=n(51062),Ne=n(2967),Re=n(82565);function Le(){var e;return["language:"+(0,me.A)().i18n.currentLocale,(e=(0,Re.v)(),[Ne.C].concat(e)).map((function(e){return"docusaurus_tag:"+e}))]}const De={button:{buttonText:(0,c.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,c.T)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,c.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,c.T)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,c.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,c.T)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,c.T)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,c.T)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,c.T)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,c.T)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,c.T)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,c.T)({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,c.T)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,c.T)({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,c.T)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,c.T)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,c.T)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,c.T)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,c.T)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,c.T)({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,c.T)({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,c.T)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,c.T)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};var Me=["contextualSearch","externalUrlRegex"],Fe=null;function Be(e){var t=e.hit,n=e.children;return(0,u.jsx)(J.A,{to:t.url,children:n})}function ze(e){var t=e.state,n=e.onClose,r=(0,Te.w)();return(0,u.jsx)(J.A,{to:r(t.query),onClick:n,children:(0,u.jsx)(c.A,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits},children:"See all {count} results"})})}function Ue(e){var t,a,o,i,c=e.contextualSearch,l=e.externalUrlRegex,d=(0,k.A)(e,Me),p=(0,me.A)().siteMetadata,f=(0,Ie.C)(),m=Le(),h=null!=(t=null==(a=d.searchParameters)?void 0:a.facetFilters)?t:[],b=c?(o=h,[].concat((i=function(e){return"string"==typeof e?[e]:e})(m),i(o))):h,g=Object.assign({},d.searchParameters,{facetFilters:b}),y=(0,s.W6)(),v=(0,r.useRef)(null),x=(0,r.useRef)(null),w=(0,r.useState)(!1),_=w[0],S=w[1],E=(0,r.useState)(void 0),j=E[0],O=E[1],C=(0,r.useCallback)((function(){return Fe?Promise.resolve():Promise.all([n.e(8158).then(n.bind(n,48158)),Promise.all([n.e(1869),n.e(8913)]).then(n.bind(n,58913)),Promise.all([n.e(1869),n.e(416)]).then(n.bind(n,90416))]).then((function(e){var t=e[0].DocSearchModal;Fe=t}))}),[]),A=(0,r.useCallback)((function(){if(!v.current){var e=document.createElement("div");v.current=e,document.body.insertBefore(e,document.body.firstChild)}}),[]),P=(0,r.useCallback)((function(){A(),C().then((function(){return S(!0)}))}),[C,A]),T=(0,r.useCallback)((function(){var e;S(!1),null==(e=x.current)||e.focus()}),[]),I=(0,r.useCallback)((function(e){"f"===e.key&&(e.metaKey||e.ctrlKey)||(e.preventDefault(),O(e.key),P())}),[P]),N=(0,r.useRef)({navigate:function(e){var t=e.itemUrl;(0,ne.G)(l,t)?window.location.href=t:y.push(t)}}).current,R=(0,r.useRef)((function(e){return d.transformItems?d.transformItems(e):e.map((function(e){return Object.assign({},e,{url:f(e.url)})}))})).current,L=(0,r.useMemo)((function(){return function(e){return(0,u.jsx)(ze,Object.assign({},e,{onClose:T}))}}),[T]),D=(0,r.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",p.docusaurusVersion),e}),[p.docusaurusVersion]);return(0,Ae.E8)({isOpen:_,onOpen:P,onClose:T,onInput:I,searchButtonRef:x}),(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Pe.A,{children:(0,u.jsx)("link",{rel:"preconnect",href:"https://"+d.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})}),(0,u.jsx)(Ae.Bc,{onTouchStart:C,onFocus:C,onMouseOver:C,onClick:P,ref:x,translations:De.button}),_&&Fe&&v.current&&(0,Ce.createPortal)((0,u.jsx)(Fe,Object.assign({onClose:T,initialScrollY:window.scrollY,initialQuery:j,navigator:N,transformItems:R,hitComponent:Be,transformSearchClient:D},d.searchPagePath&&{resultsFooterComponent:L},d,{searchParameters:g,placeholder:De.placeholder,translations:De.modal})),v.current)]})}function $e(){var e=(0,me.A)().siteConfig;return(0,u.jsx)(Ue,Object.assign({},e.themeConfig.algolia))}const qe={navbarSearchContainer:"navbarSearchContainer_Bca1"};function He(e){var t=e.children,n=e.className;return(0,u.jsx)("div",{className:(0,a.A)(n,qe.navbarSearchContainer),children:t})}var Ve=n(44070),We=n(26972),Ke=["docId","label","docsPluginId"];var Ge=["sidebarId","label","docsPluginId"];var Qe=["label","to","docsPluginId"];var Ye=n(53886),Ze=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"];function Xe(e,t){var n;return null!=(n=t.alternateDocVersions[e.name])?n:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(e)}const Je={default:de,localeDropdown:function(e){var t=e.mobile,n=e.dropdownItemsBefore,r=e.dropdownItemsAfter,a=e.queryString,o=void 0===a?"":a,i=(0,k.A)(e,Oe),l=(0,me.A)().i18n,d=l.currentLocale,p=l.locales,f=l.localeConfigs,m=(0,_e.o)(),h=(0,s.zy)(),b=h.search,g=h.hash,y=p.map((function(e){var n=""+("pathname://"+m.createUrl({locale:e,fullyQualified:!1}))+b+g+o;return{label:f[e].label,lang:f[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===d?t?"menu__link--active":"dropdown__link--active":""}})),v=[].concat(n,y,r),x=t?(0,c.T)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):f[d].label;return(0,u.jsx)(ke,Object.assign({},i,{mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(Ee,{className:je}),x]}),items:v}))},search:function(e){var t=e.mobile,n=e.className;return t?null:(0,u.jsx)(He,{className:n,children:(0,u.jsx)($e,{})})},dropdown:ke,html:function(e){var t=e.value,n=e.className,r=e.mobile,o=void 0!==r&&r,i=e.isDropdownItem,s=void 0!==i&&i,c=s?"li":"div";return(0,u.jsx)(c,{className:(0,a.A)({navbar__item:!o&&!s,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){var t=e.docId,n=e.label,r=e.docsPluginId,a=(0,k.A)(e,Ke),o=(0,Ve.zK)(r).activeDoc,i=(0,We.QB)(t,r),s=(null==o?void 0:o.path)===(null==i?void 0:i.path);return null===i||i.unlisted&&!s?null:(0,u.jsx)(de,Object.assign({exact:!0},a,{isActive:function(){return s||!(null==o||!o.sidebar)&&o.sidebar===i.sidebar},label:null!=n?n:i.id,to:i.path}))},docSidebar:function(e){var t=e.sidebarId,n=e.label,r=e.docsPluginId,a=(0,k.A)(e,Ge),o=(0,Ve.zK)(r).activeDoc,i=(0,We.fW)(t,r).link;if(!i)throw new Error('DocSidebarNavbarItem: Sidebar with ID "'+t+"\" doesn't have anything to be linked to.");return(0,u.jsx)(de,Object.assign({exact:!0},a,{isActive:function(){return(null==o?void 0:o.sidebar)===t},label:null!=n?n:i.label,to:i.path}))},docsVersion:function(e){var t=e.label,n=e.to,r=e.docsPluginId,a=(0,k.A)(e,Qe),o=(0,We.Vd)(r)[0],i=null!=t?t:o.label,s=null!=n?n:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(o).path;return(0,u.jsx)(de,Object.assign({},a,{label:i,to:s}))},docsVersionDropdown:function(e){var t=e.mobile,n=e.docsPluginId,r=e.dropdownActiveClassDisabled,a=e.dropdownItemsBefore,o=e.dropdownItemsAfter,i=(0,k.A)(e,Ze),l=(0,s.zy)(),d=l.search,p=l.hash,f=(0,Ve.zK)(n),m=(0,Ve.jh)(n),h=(0,Ye.g1)(n).savePreferredVersionName,b=[].concat(a,m.map((function(e){var t=Xe(e,f);return{label:e.label,to:""+t.path+d+p,isActive:function(){return e===f.activeVersion},onClick:function(){return h(e.name)}}})),o),g=(0,We.Vd)(n)[0],y=t&&b.length>1?(0,c.T)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,v=t&&b.length>1?void 0:Xe(g,f).path;return b.length<=1?(0,u.jsx)(de,Object.assign({},i,{mobile:t,label:y,to:v,isActive:r?function(){return!1}:void 0})):(0,u.jsx)(ke,Object.assign({},i,{mobile:t,label:y,to:v,items:b,isActive:r?function(){return!1}:void 0}))}};var et=["type"];function tt(e){var t=e.type,n=(0,k.A)(e,et),r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),a=Je[r];if(!a)throw new Error('No NavbarItem component found for type "'+t+'".');return(0,u.jsx)(a,Object.assign({},n))}function nt(){var e=(0,T.M)(),t=(0,x.p)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map((function(t,n){return(0,r.createElement)(tt,Object.assign({mobile:!0},t,{onClick:function(){return e.toggle()},key:n}))}))})}function rt(e){return(0,u.jsx)("button",Object.assign({},e,{type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(c.A,{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)",children:"\u2190 Back to main menu"})}))}function at(){var e=0===(0,x.p)().navbar.items.length,t=F();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(rt,{onClick:function(){return t.hide()}}),t.content]})}function ot(){var e,t=(0,T.M)();return void 0===(e=t.shown)&&(e=!0),(0,r.useEffect)((function(){return document.body.style.overflow=e?"hidden":"visible",function(){document.body.style.overflow="visible"}}),[e]),t.shouldRender?(0,u.jsx)(B,{header:(0,u.jsx)(X,{}),primaryMenu:(0,u.jsx)(nt,{}),secondaryMenu:(0,u.jsx)(at,{})}):null}const it={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function st(e){return(0,u.jsx)("div",Object.assign({role:"presentation"},e,{className:(0,a.A)("navbar-sidebar__backdrop",e.className)}))}function ct(e){var t=e.children,n=(0,x.p)().navbar,o=n.hideOnScroll,i=n.style,s=(0,T.M)(),d=function(e){var t=(0,r.useState)(e),n=t[0],a=t[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,I.Mq)((function(t,n){var r=t.scrollY;if(e)if(r=s?a(!1):r+l{"use strict";n.d(t,{A:()=>v});var r=n(98587),a=n(96540),o=n(28774),i=n(86025),s=n(44586),c=n(6342),l=n(34164),u=n(92303),d=n(95293);const p={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var f=n(74848);function m(e){var t=e.className,n=e.children,r=(0,u.A)(),o=(0,d.G)().colorMode;return(0,f.jsx)(f.Fragment,{children:(r?"dark"===o?["dark"]:["light"]:["light","dark"]).map((function(e){var r=n({theme:e,className:(0,l.A)(t,p.themedComponent,p["themedComponent--"+e])});return(0,f.jsx)(a.Fragment,{children:r},e)}))})}var h=["sources","className","alt"];function b(e){var t=e.sources,n=e.className,a=e.alt,o=(0,r.A)(e,h);return(0,f.jsx)(m,{className:n,children:function(e){var n=e.theme,r=e.className;return(0,f.jsx)("img",Object.assign({src:t[n],alt:a,className:r},o))}})}var g=["imageClassName","titleClassName"];function y(e){var t=e.logo,n=e.alt,r=e.imageClassName,a={light:(0,i.Ay)(t.src),dark:(0,i.Ay)(t.srcDark||t.src)},o=(0,f.jsx)(b,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,f.jsx)("div",{className:r,children:o}):o}function v(e){var t,n=(0,s.A)().siteConfig.title,a=(0,c.p)().navbar,l=a.title,u=a.logo,d=e.imageClassName,p=e.titleClassName,m=(0,r.A)(e,g),h=(0,i.Ay)((null==u?void 0:u.href)||"/"),b=l?"":n,v=null!=(t=null==u?void 0:u.alt)?t:b;return(0,f.jsxs)(o.A,Object.assign({to:h},m,(null==u?void 0:u.target)&&{target:u.target},{children:[u&&(0,f.jsx)(y,{logo:u,alt:v,imageClassName:d}),null!=l&&(0,f.jsx)("b",{className:p,children:l})]}))}},41463:(e,t,n)=>{"use strict";n.d(t,{A:()=>o});n(96540);var r=n(5260),a=n(74848);function o(e){var t=e.locale,n=e.version,o=e.tag,i=t;return(0,a.jsxs)(r.A,{children:[t&&(0,a.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,a.jsx)("meta",{name:"docusaurus_version",content:n}),o&&(0,a.jsx)("meta",{name:"docusaurus_tag",content:o}),i&&(0,a.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,a.jsx)("meta",{name:"docsearch:version",content:n}),o&&(0,a.jsx)("meta",{name:"docsearch:docusaurus_tag",content:o})]})}},41422:(e,t,n)=>{"use strict";n.d(t,{N:()=>x,u:()=>p});var r=n(98587),a=n(96540),o=n(38193),i=n(205),s=n(53109),c=n(74848),l=["collapsed"],u=["lazy"],d="ease-in-out";function p(e){var t=e.initialState,n=(0,a.useState)(null!=t&&t),r=n[0],o=n[1],i=(0,a.useCallback)((function(){o((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:i}}var f={display:"none",overflow:"hidden",height:"0px"},m={display:"block",overflow:"visible",height:"auto"};function h(e,t){var n=t?f:m;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function b(e){var t=e.collapsibleRef,n=e.collapsed,r=e.animation,o=(0,a.useRef)(!1);(0,a.useEffect)((function(){var e,a=t.current;function i(){var e,t,n=a.scrollHeight,o=null!=(e=null==r?void 0:r.duration)?e:function(e){if((0,s.O)())return 1;var t=e/36;return Math.round(10*(4+15*Math.pow(t,.25)+t/5))}(n);return{transition:"height "+o+"ms "+(null!=(t=null==r?void 0:r.easing)?t:d),height:n+"px"}}function c(){var e=i();a.style.transition=e.transition,a.style.height=e.height}if(!o.current)return h(a,n),void(o.current=!0);return a.style.willChange="height",e=requestAnimationFrame((function(){n?(c(),requestAnimationFrame((function(){a.style.height=f.height,a.style.overflow=f.overflow}))):(a.style.display="block",requestAnimationFrame((function(){c()})))})),function(){return cancelAnimationFrame(e)}}),[t,n,r])}function g(e){if(!o.A.canUseDOM)return e?f:m}function y(e){var t=e.as,n=void 0===t?"div":t,r=e.collapsed,o=e.children,i=e.animation,s=e.onCollapseTransitionEnd,l=e.className,u=e.disableSSRStyle,d=(0,a.useRef)(null);return b({collapsibleRef:d,collapsed:r,animation:i}),(0,c.jsx)(n,{ref:d,style:u?void 0:g(r),onTransitionEnd:function(e){"height"===e.propertyName&&(h(d.current,r),null==s||s(r))},className:l,children:o})}function v(e){var t=e.collapsed,n=(0,r.A)(e,l),o=(0,a.useState)(!t),s=o[0],u=o[1],d=(0,a.useState)(t),p=d[0],f=d[1];return(0,i.A)((function(){t||u(!0)}),[t]),(0,i.A)((function(){s&&f(t)}),[s,t]),s?(0,c.jsx)(y,Object.assign({},n,{collapsed:p})):null}function x(e){var t=e.lazy,n=(0,r.A)(e,u),a=t?v:y;return(0,c.jsx)(a,Object.assign({},n))}},65041:(e,t,n)=>{"use strict";n.d(t,{M:()=>h,o:()=>m});var r=n(96540),a=n(92303),o=n(42349),i=n(43807),s=n(6342),c=n(74848),l=(0,o.Wf)("docusaurus.announcement.dismiss"),u=(0,o.Wf)("docusaurus.announcement.id"),d=function(){return"true"===l.get()},p=function(e){return l.set(String(e))},f=r.createContext(null);function m(e){var t=e.children,n=function(){var e=(0,s.p)().announcementBar,t=(0,a.A)(),n=(0,r.useState)((function(){return!!t&&d()})),o=n[0],i=n[1];(0,r.useEffect)((function(){i(d())}),[]);var c=(0,r.useCallback)((function(){p(!0),i(!0)}),[]);return(0,r.useEffect)((function(){if(e){var t=e.id,n=u.get();"annoucement-bar"===n&&(n="announcement-bar");var r=t!==n;u.set(t),r&&p(!1),!r&&d()||i(!1)}}),[e]),(0,r.useMemo)((function(){return{isActive:!!e&&!o,close:c}}),[e,o,c])}();return(0,c.jsx)(f.Provider,{value:n,children:t})}function h(){var e=(0,r.useContext)(f);if(!e)throw new i.dV("AnnouncementBarProvider");return e}},95293:(e,t,n)=>{"use strict";n.d(t,{G:()=>g,a:()=>b});var r=n(96540),a=n(38193),o=n(43807),i=n(42349),s=n(6342),c=n(74848),l=r.createContext(void 0),u="theme",d=(0,i.Wf)(u),p={light:"light",dark:"dark"},f=function(e){return e===p.dark?p.dark:p.light},m=function(e){return a.A.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e)},h=function(e){d.set(f(e))};function b(e){var t=e.children,n=function(){var e=(0,s.p)().colorMode,t=e.defaultMode,n=e.disableSwitch,a=e.respectPrefersColorScheme,o=(0,r.useState)(m(t)),i=o[0],c=o[1];(0,r.useEffect)((function(){n&&d.del()}),[n]);var l=(0,r.useCallback)((function(e,n){void 0===n&&(n={});var r=n.persist,o=void 0===r||r;e?(c(e),o&&h(e)):(c(a?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:t),d.del())}),[a,t]);(0,r.useEffect)((function(){document.documentElement.setAttribute("data-theme",f(i))}),[i]),(0,r.useEffect)((function(){if(!n){var e=function(e){if(e.key===u){var t=d.get();null!==t&&l(f(t))}};return window.addEventListener("storage",e),function(){return window.removeEventListener("storage",e)}}}),[n,l]);var b=(0,r.useRef)(!1);return(0,r.useEffect)((function(){if(!n||a){var e=window.matchMedia("(prefers-color-scheme: dark)"),t=function(){window.matchMedia("print").matches||b.current?b.current=window.matchMedia("print").matches:l(null)};return e.addListener(t),function(){return e.removeListener(t)}}}),[l,n,a]),(0,r.useMemo)((function(){return{colorMode:i,setColorMode:l,get isDarkTheme(){return i===p.dark},setLightTheme:function(){l(p.light)},setDarkTheme:function(){l(p.dark)}}}),[i,l])}();return(0,c.jsx)(l.Provider,{value:n,children:t})}function g(){var e=(0,r.useContext)(l);if(null==e)throw new o.dV("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},22069:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>p});var r=n(96540),a=n(75600),o=n(24581),i=n(57485),s=n(6342),c=n(43807),l=n(74848),u=r.createContext(void 0);function d(){var e,t=(e=(0,a.YL)(),0===(0,s.p)().navbar.items.length&&!e.component),n=(0,o.l)(),c=!t&&"mobile"===n,l=(0,r.useState)(!1),u=l[0],d=l[1];(0,i.$Z)((function(){if(u)return d(!1),!1}));var p=(0,r.useCallback)((function(){d((function(e){return!e}))}),[]);return(0,r.useEffect)((function(){"desktop"===n&&d(!1)}),[n]),(0,r.useMemo)((function(){return{disabled:t,shouldRender:c,toggle:p,shown:u}}),[t,c,p,u])}function p(e){var t=e.children,n=d();return(0,l.jsx)(u.Provider,{value:n,children:t})}function f(){var e=r.useContext(u);if(void 0===e)throw new c.dV("NavbarMobileSidebarProvider");return e}},75600:(e,t,n)=>{"use strict";n.d(t,{GX:()=>l,YL:()=>c,y_:()=>s});var r=n(96540),a=n(43807),o=n(74848),i=r.createContext(null);function s(e){var t=e.children,n=(0,r.useState)({component:null,props:null});return(0,o.jsx)(i.Provider,{value:n,children:t})}function c(){var e=(0,r.useContext)(i);if(!e)throw new a.dV("NavbarSecondaryMenuContentProvider");return e[0]}function l(e){var t=e.component,n=e.props,o=(0,r.useContext)(i);if(!o)throw new a.dV("NavbarSecondaryMenuContentProvider");var s=o[1],c=(0,a.Be)(n);return(0,r.useEffect)((function(){s({component:t,props:c})}),[s,t,c]),(0,r.useEffect)((function(){return function(){return s({component:null,props:null})}}),[s]),null}},14090:(e,t,n)=>{"use strict";n.d(t,{w:()=>a,J:()=>o});var r=n(96540),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)}}),[])}},24255:(e,t,n)=>{"use strict";n.d(t,{b:()=>s,w:()=>c});var r=n(96540),a=n(44586),o=n(57485),i="q";function s(){return(0,o.l)(i)}function c(){var e=(0,a.A)().siteConfig,t=e.baseUrl,n=e.themeConfig.algolia.searchPagePath;return(0,r.useCallback)((function(e){return""+t+n+"?"+i+"="+encodeURIComponent(e)}),[t,n])}},24581:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var r=n(96540),a=n(38193),o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(e){var t=(void 0===e?{}:e).desktopBreakpoint,n=void 0===t?i:t,s=(0,r.useState)((function(){return"ssr"})),c=s[0],l=s[1];return(0,r.useEffect)((function(){function e(){l(function(e){if(!a.A.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>e?o.desktop:o.mobile}(n))}return e(),window.addEventListener("resize",e),function(){window.removeEventListener("resize",e)}}),[n]),c}},17559:(e,t,n)=>{"use strict";n.d(t,{G:()=>r});var r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",blogAuthorsListPage:"blog-authors-list-page",blogAuthorsPostsPage:"blog-authors-posts-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",unlistedBanner:"theme-unlisted-banner",draftBanner:"theme-draft-banner",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:{blogFooterTagsRow:"theme-blog-footer-tags-row",blogFooterEditMetaRow:"theme-blog-footer-edit-meta-row"},pages:{pageFooterEditMetaRow:"theme-pages-footer-edit-meta-row"}}},53109:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{O:()=>r})},12181:(e,t,n)=>{"use strict";n.d(t,{bq:()=>d,MN:()=>u,a2:()=>l,k2:()=>p});var r=n(77387),a=n(96540),o=n(21312),i=n(70440);const s={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};var c=n(74848);function l(e){return(0,c.jsx)("button",Object.assign({type:"button"},e,{children:(0,c.jsx)(o.A,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})}))}function u(e){var t=e.error,n=e.tryAgain;return(0,c.jsxs)("div",{className:s.errorBoundaryFallback,children:[(0,c.jsx)("p",{children:t.message}),(0,c.jsx)(l,{onClick:n})]})}function d(e){var t=e.error,n=(0,i.rA)(t).map((function(e){return e.message})).join("\n\nCause:\n");return(0,c.jsx)("p",{className:s.errorBoundaryError,children:n})}var p=function(e){function t(){return e.apply(this,arguments)||this}(0,r.A)(t,e);var n=t.prototype;return n.componentDidCatch=function(e,t){throw this.props.onError(e,t)},n.render=function(){return this.props.children},t}(a.Component)},20481:(e,t,n)=>{"use strict";n.d(t,{s:()=>a});var r=n(44586);function a(e){var t=(0,r.A)().siteConfig,n=t.title,a=t.titleDelimiter;return null!=e&&e.trim().length?e.trim()+" "+a+" "+n:n}},57485:(e,t,n)=>{"use strict";n.d(t,{$Z:()=>i,aZ:()=>c,l:()=>l});var r=n(96540),a=n(56347),o=n(43807);function i(e){!function(e){var t=(0,a.W6)(),n=(0,o._q)(e);(0,r.useEffect)((function(){return t.block((function(e,t){return n(e,t)}))}),[t,n])}((function(t,n){if("POP"===n)return e(t,n)}))}function s(e){var t=(0,a.W6)();return(0,r.useSyncExternalStore)(t.listen,(function(){return e(t)}),(function(){return e(t)}))}function c(e){return s((function(t){return null===e?null:new URLSearchParams(t.location.search).get(e)}))}function l(e){var t,n=null!=(t=c(e))?t:"",o=function(e){var t=(0,a.W6)();return(0,r.useCallback)((function(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()})}),[e,t])}(e);return[n,o]}},31682:(e,t,n)=>{"use strict";function r(e,t){return void 0===t&&(t=function(e,t){return e===t}),e.filter((function(n,r){return e.findIndex((function(e){return t(e,n)}))!==r}))}function a(e){return Array.from(new Set(e))}n.d(t,{XI:()=>r,sb:()=>a})},69024:(e,t,n)=>{"use strict";n.d(t,{e3:()=>f,be:()=>d,Jx:()=>m});var r=n(96540),a=n(34164),o=n(5260),i=n(53102);function s(){var e=r.useContext(i.o);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var c=n(86025),l=n(20481),u=n(74848);function d(e){var t=e.title,n=e.description,r=e.keywords,a=e.image,i=e.children,s=(0,l.s)(t),d=(0,c.hH)().withBaseUrl,p=a?d(a,{absolute:!0}):void 0;return(0,u.jsxs)(o.A,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}var p=r.createContext(void 0);function f(e){var t=e.className,n=e.children,i=r.useContext(p),s=(0,a.A)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(o.A,{children:(0,u.jsx)("html",{className:s})}),n]})}function m(e){var t=e.children,n=s(),r="plugin-"+n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,""),o="plugin-id-"+n.plugin.id;return(0,u.jsx)(f,{className:(0,a.A)(r,o),children:t})}},43807:(e,t,n)=>{"use strict";n.d(t,{dV:()=>m,fM:()=>b,_q:()=>p,ZC:()=>f,Be:()=>h});var r=n(3909),a=n(77387);function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var i=n(63662);function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}function c(e){var t="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(t){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!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return function(e,t,n){if(s())return Reflect.construct.apply(null,arguments);var r=[null];r.push.apply(r,t);var a=new(e.bind.apply(e,r));return n&&(0,i.A)(a,n.prototype),a}(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),(0,i.A)(n,e)},c(e)}var l=n(96540),u=n(205),d=n(74848);function p(e){var t=(0,l.useRef)(e);return(0,u.A)((function(){t.current=e}),[e]),(0,l.useCallback)((function(){return t.current.apply(t,arguments)}),[])}function f(e){var t=(0,l.useRef)();return(0,u.A)((function(){t.current=e})),t.current}var m=function(e){function t(t,n){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.A)(/at (?:\w+\.)?(\w+)/,{name:1})))?void 0:o.groups.name)?a:"")+" is called outside the <"+t+">. "+(null!=n?n:""),i}return(0,a.A)(t,e),t}(c(Error));function h(e){var t=Object.entries(e);return t.sort((function(e,t){return e[0].localeCompare(t[0])})),(0,l.useMemo)((function(){return e}),t.flat())}function b(e){return function(t){var n=t.children;return(0,d.jsx)(d.Fragment,{children:e.reduceRight((function(e,t){return(0,d.jsx)(t,{children:e})}),n)})}}},91252:(e,t,n)=>{"use strict";function r(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{G:()=>r})},99169:(e,t,n)=>{"use strict";n.d(t,{Dt:()=>s,ys:()=>i});var r=n(96540),a=n(1459),o=n(44586);function i(e,t){var n=function(e){var t;return null==(t=!e||e.endsWith("/")?e:e+"/")?void 0:t.toLowerCase()};return n(e)===n(t)}function s(){var e=(0,o.A)().siteConfig.baseUrl;return(0,r.useMemo)((function(){return function(e){var t=e.baseUrl;function n(e){return e.path===t&&!0===e.exact}function r(e){return e.path===t&&!e.exact}return function e(t){if(0!==t.length)return t.find(n)||e(t.filter(r).flatMap((function(e){var t;return null!=(t=e.routes)?t:[]})))}(e.routes)}({routes:a.A,baseUrl:e})}),[e])}},23104:(e,t,n)=>{"use strict";n.d(t,{Mq:()=>f,Tv:()=>u,a_:()=>m,gk:()=>h});var r=n(96540),a=n(38193),o=n(92303),i=n(205),s=n(43807),c=n(74848);var l=r.createContext(void 0);function u(e){var t,n=e.children,a=(t=(0,r.useRef)(!0),(0,r.useMemo)((function(){return{scrollEventsEnabledRef:t,enableScrollEvents:function(){t.current=!0},disableScrollEvents:function(){t.current=!1}}}),[]));return(0,c.jsx)(l.Provider,{value:a,children:n})}function d(){var e=(0,r.useContext)(l);if(null==e)throw new s.dV("ScrollControllerProvider");return e}var p=function(){return a.A.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};function f(e,t){void 0===t&&(t=[]);var n=d().scrollEventsEnabledRef,a=(0,r.useRef)(p()),o=(0,s._q)(e);(0,r.useEffect)((function(){var e=function(){if(n.current){var e=p();o(e,a.current),a.current=e}},t={passive:!0};return e(),window.addEventListener("scroll",e,t),function(){return window.removeEventListener("scroll",e,t)}}),[o,n].concat(t))}function m(){var e,t,n,a=d(),o=(e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((function(t){e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((function(){var t=e.current,n=t.elem,r=t.top;if(!n)return{restored:!1};var a=n.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:t,restore:n}}),[n,t])),s=(0,r.useRef)(void 0),c=(0,r.useCallback)((function(e){o.save(e),a.disableScrollEvents(),s.current=function(){var e=o.restore().restored;if(s.current=void 0,e){var t=function(){a.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else a.enableScrollEvents()}}),[a,o]);return(0,i.A)((function(){queueMicrotask((function(){return null==s.current?void 0:s.current()}))})),{blockElementScrollPositionUntilNextRender:c}}function h(){var e=(0,r.useRef)(null),t=(0,o.A)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:function(n){e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),function(){}}(n):function(e){var t=null,n=document.documentElement.scrollTop>e;return function r(){var a=document.documentElement.scrollTop;(n&&a>e||!n&&a{"use strict";n.d(t,{C:()=>r});var r="default"},42349:(e,t,n)=>{"use strict";n.d(t,{Wf:()=>u,Dv:()=>d});var r=n(96540);const a=JSON.parse('{"N":"localStorage","M":""}');var o=a.N;function i(e){var t=e.key,n=e.oldValue,r=e.newValue,a=e.storage;if(n!==r){var o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,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(n){return t=n,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.",t),c=!0),null}var t}var c=!1;var l={get:function(){return null},set:function(){},del:function(){},listen:function(){return function(){}}};function u(e,t){var n=""+e+a.M;if("undefined"==typeof window)return function(e){function t(){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:t,set:t,del:t,listen:t}}(n);var r=s(null==t?void 0:t.persistence);return null===r?l:{get:function(){try{return r.getItem(n)}catch(e){return console.error("Docusaurus storage error, can't get key="+n,e),null}},set:function(e){try{var t=r.getItem(n);r.setItem(n,e),i({key:n,oldValue:t,newValue:e,storage:r})}catch(a){console.error("Docusaurus storage error, can't set "+n+"="+e,a)}},del:function(){try{var e=r.getItem(n);r.removeItem(n),i({key:n,oldValue:e,newValue:null,storage:r})}catch(t){console.error("Docusaurus storage error, can't delete key="+n,t)}},listen:function(e){try{var t=function(t){t.storageArea===r&&t.key===n&&e(t)};return window.addEventListener("storage",t),function(){return window.removeEventListener("storage",t)}}catch(a){return console.error("Docusaurus storage error, can't listen for changes of key="+n,a),function(){}}}}}function d(e,t){var n=(0,r.useRef)((function(){return null===e?l:u(e,t)})).current(),a=(0,r.useCallback)((function(e){return"undefined"==typeof window?function(){}:n.listen(e)}),[n]);return[(0,r.useSyncExternalStore)(a,(function(){return"undefined"==typeof window?null:n.get()}),(function(){return null})),n]}},32131:(e,t,n)=>{"use strict";n.d(t,{o:()=>i});var r=n(44586),a=n(56347),o=n(70440);function i(){var e=(0,r.A)(),t=e.siteConfig,n=t.baseUrl,i=t.url,s=t.trailingSlash,c=e.i18n,l=c.defaultLocale,u=c.currentLocale,d=(0,a.zy)().pathname,p=(0,o.Ks)(d,{trailingSlash:s,baseUrl:n}),f=u===l?n:n.replace("/"+u+"/","/"),m=p.replace(n,"");return{createUrl:function(e){var t=e.locale;return""+(e.fullyQualified?i:"")+function(e){return e===l?""+f:""+f+e+"/"}(t)+m}}}},75062:(e,t,n)=>{"use strict";n.d(t,{$:()=>i});var r=n(96540),a=n(56347),o=n(43807);function i(e){var t=(0,a.zy)(),n=(0,o.ZC)(t),i=(0,o._q)(e);(0,r.useEffect)((function(){n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6342:(e,t,n)=>{"use strict";n.d(t,{p:()=>a});var r=n(44586);function a(){return(0,r.A)().siteConfig.themeConfig}},38126:(e,t,n)=>{"use strict";n.d(t,{c:()=>a});var r=n(44586);function a(){return(0,r.A)().siteConfig.themeConfig}},51062:(e,t,n)=>{"use strict";n.d(t,{C:()=>s});var r=n(96540),a=n(91252),o=n(86025),i=n(38126);function s(){var e=(0,o.hH)().withBaseUrl,t=(0,i.c)().algolia,n=t.externalUrlRegex,s=t.replaceSearchResultPathname;return(0,r.useCallback)((function(t){var r=new URL(t);if((0,a.G)(n,r.href))return t;var o=""+(r.pathname+r.hash);return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(o,s))}),[e,n,s])}},12983:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addTrailingSlash=a,t.default=function(e,t){var n=t.trailingSlash,r=t.baseUrl;if(e.startsWith("#"))return e;if(void 0===n)return e;var i=e.split(/[#?]/)[0],s="/"===i||i===r?i:(c=i,l=n,l?a(c):o(c));var c,l;return e.replace(i,s)},t.addLeadingSlash=function(e){return(0,r.addPrefix)(e,"/")},t.removeTrailingSlash=o;var r=n(42566);function a(e){return e.endsWith("/")?e:e+"/"}function o(e){return(0,r.removeSuffix)(e,"/")}},80253:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=function e(t){if(t.cause)return[t].concat(e(t.cause));return[t]}},70440:(e,t,n)=>{"use strict";t.rA=t.Ks=void 0;var r=n(31635);var a=n(12983);Object.defineProperty(t,"Ks",{enumerable:!0,get:function(){return r.__importDefault(a).default}});var o=n(42566);var i=n(80253);Object.defineProperty(t,"rA",{enumerable:!0,get:function(){return i.getErrorCausalChain}})},42566:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addPrefix=function(e,t){return e.startsWith(t)?e:""+t+e},t.removeSuffix=function(e,t){if(""===t)return e;return e.endsWith(t)?e.slice(0,-t.length):e},t.addSuffix=function(e,t){return e.endsWith(t)?e:""+e+t},t.removePrefix=function(e,t){return e.startsWith(t)?e.slice(t.length):e}},31513:(e,t,n)=>{"use strict";n.d(t,{zR:()=>x,TM:()=>j,yJ:()=>f,sC:()=>C,AO:()=>p});var r=n(58168);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!l)for(;d--;d)i.unshift("..");!l||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(11561);function c(e){return"/"===e.charAt(0)?e:"/"+e}function l(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.A)({},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!==t&&void 0===o.state&&(o.state=t));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 n&&(o.key=n),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 t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),x.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(x.entries[x.index]=a,d({action:r,location:a}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=x.index+e;return t>=0&&t{"use strict";var r=n(44363),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,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=c(t),h=c(n),b=0;b{"use strict";e.exports=function(e,t,n,r,a,o,i,s){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,r,a,o,i,s],u=0;(c=new Error(t.replace(/%s/g,(function(){return l[u++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},40282:(e,t,n)=>{"use strict";n.r(t)},32507:(e,t,n)=>{"use strict";n.r(t)},10119:(e,t,n)=>{"use strict";n.r(t)},5947:function(e,t,n){var r,a;r=function(){var e,t,n={version:"0.2.0"},r=n.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,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){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 "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),l=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.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(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),s=e?"-100":o(n.status||0),l=document.querySelector(r.parent);return c(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),l!=document.body&&u(l,"nprogress-custom-parent"),l.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),c=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;l(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);l(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},19700:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,s=i.length;-1!==n.code.indexOf(a=t(r,s));)++s;return i[s]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.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=n.tokenStack[u],p="string"==typeof l?l:l.content,f=t(r,u),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),b=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),g=p.substring(m+f.length),y=[];h&&y.push.apply(y,i([h])),y.push(b),g&&y.push.apply(y,i([g])),"string"==typeof l?s.splice.apply(s,[c,1].concat(y)):l.content=y}}else l.content&&i(l.content)}return s}(n.tokens)}}}})}(Prism)},75342:()=>{!function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),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)},91830:(e,t,n)=>{var r={"./prism-rust":75342};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=91830},2694:(e,t,n)=>{"use strict";var r=n(6925);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,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 t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5556:(e,t,n)=>{e.exports=n(2694)()},6925:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},22551:(e,t,n)=>{"use strict";var r=n(96540),a=n(69982);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n