diff --git a/404.html b/404.html index 0484c732dd78..26b83de7e8aa 100644 --- a/404.html +++ b/404.html @@ -19,13 +19,13 @@ - +
Skip to main content

Page Not Found

We could not find what you were looking for.

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

- + \ No newline at end of file diff --git a/assets/js/ccc1222e.81374dcd.js b/assets/js/ccc1222e.81374dcd.js deleted file mode 100644 index 024b93f80956..000000000000 --- a/assets/js/ccc1222e.81374dcd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6920],{3905:(t,a,e)=>{e.d(a,{Zo:()=>m,kt:()=>k});var r=e(67294);function n(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function o(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,r)}return e}function i(t){for(var a=1;a=0||(n[e]=t[e]);return n}(t,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}var p=r.createContext({}),h=function(t){var a=r.useContext(p),e=a;return t&&(e="function"==typeof t?t(a):i(i({},a),t)),e},m=function(t){var a=h(t.components);return r.createElement(p.Provider,{value:a},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var a=t.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(t,a){var e=t.components,n=t.mdxType,o=t.originalType,p=t.parentName,m=l(t,["components","mdxType","originalType","parentName"]),s=h(e),u=n,k=s["".concat(p,".").concat(u)]||s[u]||d[u]||o;return e?r.createElement(k,i(i({ref:a},m),{},{components:e})):r.createElement(k,i({ref:a},m))}));function k(t,a){var e=arguments,n=a&&a.mdxType;if("string"==typeof t||n){var o=e.length,i=new Array(o);i[0]=u;var l={};for(var p in a)hasOwnProperty.call(a,p)&&(l[p]=a[p]);l.originalType=t,l[s]="string"==typeof t?t:n,i[1]=l;for(var h=2;h{e.r(a),e.d(a,{assets:()=>m,contentTitle:()=>p,default:()=>k,frontMatter:()=>l,metadata:()=>h,toc:()=>s});var r=e(87462),n=e(63366),o=(e(67294),e(3905)),i=["components"],l={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"},p="Open Source Polkadot Stack \x3c!-- omit in toc --\x3e",h={unversionedId:"build/build-open-source",id:"build/build-open-source",title:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",source:"@site/../docs/build/build-open-source.md",sourceDirName:"build",slug:"/build-open-source",permalink:"/docs/build-open-source",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/build/build-open-source.md",tags:[],version:"current",lastUpdatedBy:"David Hawig",lastUpdatedAt:1701249622,formattedLastUpdatedAt:"Nov 29, 2023",frontMatter:{id:"build-open-source",title:"Open Source Stack",sidebar_label:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",keywords:["open","source","development","code","resources","tools","apis"],slug:"../build-open-source"},sidebar:"docs",previous:{title:"Explorer, Data, & Indexing Tools",permalink:"/docs/build-data"},next:{title:"Hackathons",permalink:"/docs/build-hackathon"}},m={},s=[{value:"About",id:"about",level:2},{value:"Layers of Polkadot Stack",id:"layers-of-polkadot-stack",level:2},{value:"Wallets",id:"wallets",level:3},{value:"User Interface",id:"user-interface",level:3},{value:"Tools, APIs, and Languages",id:"tools-apis-and-languages",level:3},{value:"ink! Smart Contracts",id:"ink-smart-contracts",level:3},{value:"Chains and Pallets",id:"chains-and-pallets",level:3},{value:"Host",id:"host",level:3},{value:"Network Maintenance Tools",id:"network-maintenance-tools",level:3},{value:"Signatures",id:"signatures",level:3},{value:"Consensus",id:"consensus",level:3},{value:"Networking",id:"networking",level:3},{value:"Primitives",id:"primitives",level:3},{value:"Contributing",id:"contributing",level:2}],d={toc:s},u="wrapper";function k(t){var a=t.components,e=(0,n.Z)(t,i);return(0,o.kt)(u,(0,r.Z)({},d,e,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"open-source-polkadot-stack--omit-in-toc-"},"Open Source Polkadot Stack "),(0,o.kt)("admonition",{title:"Do your research before using open-source tools",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The tools listed here are open-source and are linked directly to their source code. Before using these tools to build your projects, always ",(0,o.kt)("a",{parentName:"p",href:"/docs/how-to-dyor"},"do your research")," and be aware of ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-scams"},"scams"),".")),(0,o.kt)("p",null,"This page aims to provide an overview of the open-source Polkadot Tech Stack."),(0,o.kt)("p",null,"This is a living document, and we rely on everyone to contribute and help maintain\nit. ",(0,o.kt)("a",{parentName:"p",href:"#contributing"},(0,o.kt)("strong",{parentName:"a"},"Please feel free to make edits and additions via pull requests")),". We\napologize if we missed your project!"),(0,o.kt)("hr",null),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#about"},"About")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#wallets"},"Wallets")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#user-interface"},"User Interface")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#tools-apis-and-languages"},"Tools, APIs, and Languages")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#ink-smart-contracts"},"ink! Smart Contracts")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#chains-and-pallets"},"Chains and Pallets")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#host"},"Host")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#network-maintenance-tools"},"Network Maintenance Tools")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#signatures"},"Signatures")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#consensus"},"Consensus")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#networking"},"Networking")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#primitives"},"Primitives")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#contributing"},"Contributing"))),(0,o.kt)("h2",{id:"about"},"About"),(0,o.kt)("p",null,"The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the ",(0,o.kt)("strong",{parentName:"p"},"open-source"),"\ntechnologies contributing to and relying on ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/"},"Polkadot"),". It is meant to be used\nfor decentralized application (Dapp) development within numerous verticals, including DeFi, Gaming,\nProvenance and many others not pictured below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"|------|--------|------------|\n| DeFi | Gaming | Provenance |\n|______|________|____________|\n Dapps\n|--------------------------/-|\n| Explorers, Wallets / |\n|------------------------/---|\n| Tools, Apis, Languages/ |\n|----------------------/-----|\n| 2nd layer protocols / |\n|--------------------/-------|\n| Chains / other |\n|------------------/--- --|\n| *Polkadot* | tech |\n|------------------\\---------|\n| P2P, Crypto, Wasm \\ |\n|--------------------\\-------|\n")),(0,o.kt)("h2",{id:"layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("p",null,"In the below sections, you can find a list of different layers of the Polkadot Stack."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Maintenance Status"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe2 Actively maintained"),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe1 Stale (no activity on the main branch for one month)"),(0,o.kt)("li",{parentName:"ul"},"\u26aa Unmaintained (no activity on the main branch for more than three months)")),(0,o.kt)("h3",{id:"wallets"},"Wallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Web Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/Multix"},"Multix")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkasafe/polkasafe-ui"},"Polkasafe")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/apps"},"polkadot-js/apps")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-web"},"Talisman Web Application")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/mydotwallet"},"mydotwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subid"},"Sub ID")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Primis-Labs/client"},"Primis")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3finance/sakura"},"Sakura")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/Web3Box-apps"},"Web3Box")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoongCrafts/coong-wallet"},"Coong Wallet")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-react"},"Subscan Multisig UI - React")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-ui"},"Subscan Multisig UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/dorafactory-multisig"},"Dorafactory-Multisig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi-multisig-app"},"Capi Multisig App")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"User-friendly Wallet based on the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/frame/recovery"},"Recovery Pallet"),", Web wallets focused on user-onboarding (e.g. using ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/near/near-wallet"},"localStorage"),")")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Desktop Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-spektr"},"nova-spektr")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/omni-desktop-prototype"},"Omni desktop")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Enterprise Wallets")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Browser Extensions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman"},"Talisman-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Extension"},"SubWallet-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/enKrypt"},"Enkrypt")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/extension"},"Polkadot{.js}")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolkaGate/polkagate-extension"},"PolkaGate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainBridgeNetworkTeam/Doter"},"Doter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GetSpeckle/speckle-browser-extension"},"Speckle OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/kuma-wallet"},"Kuma Cross-chain Wallet")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Sign-in with your Polkadot, Kusama, etc. account.")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Mobile Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-ios"},"Nova Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-android"},"Nova Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-signer"},"Polkadot Vault")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-Android"},"Fearless Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-iOS"},"Fearless Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Mobile"},"SubWallet-Mobile")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kalapaja/kampela-firmware"},"Kampela")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airgap-it/airgap-wallet"},"AirGap")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Interstellar-Network/wallet-app"},"Interstellar Network")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/luniehq/lunie"},"Lunie")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkawallet-io/polkawallet-flutter"},"Polkawallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/consenlabs/token-core"},"imToken")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stylo-app/stylo"},"Stylo")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fractapp/fractapp/"},"Fractapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hypha-dao/hashed-wallet"},"Hashed Wallet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Burner Wallets/Faucet/Gifts"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hamidra/dotdrop"},"dotdrop")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/vue-polkadot/apps"},"KodaDot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/astar-faucet-bot"},"Astar Faucet Bot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/karooolis/sybil-resistant-substrate-faucet"},"Generic sybil-resistant faucet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/StringNick/sybil-resistant-chat-bot-substrate-faucet"},"sybil-resistant Chat Bot Faucet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Faucet (a sybil-resistant way to receive free tokens)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallet Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/metamask-snap-polkadot"},"Metamask-Snap by Chainsafe")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"CLI Wallet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/yxf/subwallet"},"Subwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canontech/proxy-hot-wallet"},"Proxy-hot-wallet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Hardware Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZondaX/ledger-polkadot"},"Ledger Polkadot")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-kusama"},"Ledger Kusama")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemint"},"Ledger Statemint")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemine"},"Ledger Statemine")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Trezor")))),(0,o.kt)("h3",{id:"user-interface"},"User Interface"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/topmonks/calamar"},"Calamar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/colorfulnotion/polkaholic"},"Polkaholic")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/explorer-api"},"Polkascan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/polkastats-backend"},"Polkastats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan"},"Subscan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/statescan"},"Statescan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/edgeware-builders/edgscan"},"Edgscan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/epirus-substrate"},"Sirato")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/ink-substrate-explorer-api"},"ink! Explorer API")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/substats"},"Substats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-dapp"},"Hybrid Block Explorer")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Mempool focused explorer (including parachain transaction)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-telemetry"},"Polkadot Telemetry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashquark-io/polkacube-frontend"},"Polkacube")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/buidl-labs/YieldScan"},"YieldScan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot"},"Hubble")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArthurHoeke/cyclops"},"Cyclops")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3go-xyz/web3go-xyz-v2"},"Web3Go")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Node Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/protos-research/polkadot-node-explorer"},"Polkadot Node Explorer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT Explorer"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/nft-gallery"},"NFT Explorer for Kusama & Polkadot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/governance-ui"},"Polkadot Delegation Dashboard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/premiurly/polkassembly"},"Polkassembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/dotreasury"},"dotreasury")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/bright-tresury"},"Bright Treasury")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/collaboration"},"OpenSquare offchain voting")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/wpank/open-gov-insights"},"OpenGov Insights")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stake-plus/treasury-tracker"},"Treasury Tracker")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"UI for the Kusama and/or Polkadot treasury (see ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/pull/5715"},"bounty module"),"), UI for Parachain Lease Offering (PLO)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/staking-rewards-collector"},"Staking Rewards Collector")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/jackson-harris-iii/staking-rewards-viewer"},"Staking Rewards Viewer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptolab-network/polkadot-staking-site"},"Polkadot Staking Site")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-staking-dashboard"},"Polkadot Staking Dashboard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-validator-selector"},"Polkadot/Kusama Validator Selector")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-staking-income"},"Staking Income CSV Generator")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridge UI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridges-ui"},"Parity Bridges UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutbox-dao/donut-interface"},"Donut Interface (Steem - Dot)")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Parachain/Crowdloan"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/jhonalino/parachains.network"},"Parachains.Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrommVardek/polk-auction-ui"},"PolkAuction")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/10clouds/crowdloan-template"},"Crowdloan Front End Template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/slothunter/"},"Slothunter")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identicon"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud/polkicon"},"Polkicon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-web-identicon"},"PolkadotWebIdenticon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-angular-identicon"},"Polkadot Angular IdentIcon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Noc2/Bird-Identicon"},"Bird Identicon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud"},"Polkadot Cloud")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/KappaSigmaMu/ksm-app"},"KappaSigmaMu Fratority")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-webapp"},"Quadratic Funding Webapp")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/polkawatch/polkawatch"},"Polkawatch"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bytepayment/bytepay"},"Bytepay")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Delmonicos/charging-management-platform"},"charging-management-platform")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/subidentity-webapp"},"subidentity-webapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/paid-qa/"},"OpenSquare Paid QA")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrossChainLabs-DOT/dotpulse-api"},"DotPulse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/rubeus-smartcontract"},"Rubeus Keeper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/justmert/eco-flow-frontend"},"Polkaflow")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/chainviz"},"ChainViz")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fidi-tech/dotsight"},"Dotsight")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LasticXYZ/LasticUI"},"Lastic")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://docs.sui.io/build/zk_login"},"zkLogin"),", Portfolio Viewer like Zapper or Zerion")))),(0,o.kt)("h3",{id:"tools-apis-and-languages"},"Tools, APIs, and Languages"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Parachain frameworks"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot Blockchain SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/gosemble"},"Gosemble")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/parachain-utilities"},"Parachain utilities")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gantree-io/gantree-core"},"Gantree")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5"},"Cryptex")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Tools to create parachains with other frameworks, like the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cosmos/cosmos-sdk"},"Cosmos SDK")," or ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xPolygon/cdk-validium-node"},"Polygon CDK"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Client Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-api"},"Polkadot API - Typescript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi"},"Capi - Typescript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/packages/tree/main/sub-api"},"sub-api")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".Net")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/Ajuna.NetApi"},".NET Standard 2.0")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain"},"Substrate .NET Toolchain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/finoabanking/substrate-c-tool"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"Javascript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar - TypeScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-substrate-interface"},"Python")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java (+ Android)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/strategyobject/substrate-client-java"},"Substrate Client Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substrate-api-client"},"Rust SCS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/subxt"},"Rust Parity (subxt)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/trevor-crypto"},"Rust pdotc")," ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-substrate-api"},"PHP (gmajor-encrypt)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neha0921/substrate-interface-package"},"PHP (neha0921)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/frontier"},"RPC-Ethereum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Substrate.swift"},"Swift")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/substrate-client-kotlin"},"Kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-kotlin"},"substrate-client-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-swift"},"substrate-client-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rankanizer/polkadart"},"Dart")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polywrap/integrations"},"Substrate Core Polywrapper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-ios"},"Substrate SDK iOS")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-android"},"Substrate SDK Android")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Gateway"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/subway"},"Subway")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Substrate Contract clients"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/go-patract"},"PatractGo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Easy Runtime Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/subalfred"},"Subalfred")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/substrate-stencil"},"substrate-stencil")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/play-substrate"},"Play Substrate")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/substrate-node-template"},"substrate-node-template")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-playground"},"Substrate Playground")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-substrate-runtime"},"AssemblyScript Runtime Generation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/clearloop/sup"},"Substrate Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly: Framework for developing AssemblyScript Substrate Runtimes")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bkchr/diener"},"dependency diener")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/vscode-substrate"},"Substrate Marketplace VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/vscode-plugin-substrate"},"VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/atom-plugin-substrate"},"Atom Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet-vscode-extension"},"zombienet extension")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Pallet Security"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/srlabs/substrate-runtime-fuzzer"},"Substrate Runtime Fuzzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-toml-lint"},"Substrate Toml Lint")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kframework/wasm-semantics"},"K specifications")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSecurity/polpatrol"},"PolPatrol - Polkadot Runtime Checker")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Automated Runtime checking tools, economic audit simulator such as ",(0,o.kt)("a",{parentName:"td",href:"https://gauntlet.network/"},"gauntlet.network"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Languages"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"#ink-smart-contracts"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ask-lang/ask"},"Ask!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/slickup/subscript"},"Subscript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hyperledger-labs/solang"},"Solang")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eigerco/pallet-move"},"pallet-move")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pontem-network/sp-move"},"Move VM Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neatcoin/neatcoin"},"Move smart contract by Neatcoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pepyakin/substrate-seal-ebpf"},"eBPF Contracts Hackathon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkavm"},"PolkaVM")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Functional Programming Languages, other languages with developed toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-introspector"},"Polkadot introspector")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdirectory/subshell"},"Subshell")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/sc-simnode"},"substrate-simnode")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/halva-suite/halva"},"Halva")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/redspot"},"Redspot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mixbytes/tank"},"MixBytes Tank")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate debug-kit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/asset_cli_tool"},"Asset CLI tool")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/unfinished_testing_tool"},"sub_crash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/subwasm"},"subwasm")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ascjones/subsee"},"subsee")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-lab"},"polkadot-lab")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dwellir-public/rpc-perf/"},"RPC-perf")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Static Analysis"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KaiserKarel/substrace"},"Substrace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/simon-perriard/saft"},"Static analyzer for Substrate FRAME's pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoinFabrik/scout"},"CoinFabrik Scout")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testnet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet"},"Zombienet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/chopsticks"},"Chopsticks")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-launch"},"Polkadot Launch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkadot-starship"},"polkadot-starship")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork off Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/try-runtime-cli"},"try-runtime-cli")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/parachain-launch"},"Parachain Launch")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zeeve-App/larch"},"Larch Zombienet GUI")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Benchmarking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/utils/frame/benchmarking-cli"},"Benchmarking CLI")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-stps"},"Polkadot sTPS")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xekez/clockchain"},"Clockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-graph-benchmarks"},"Substrate Graph Benchmarks")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking"},"ink! & pallet benchmarking template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/smart-bench"},"smart-bench")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain Indexing Engine"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk"},"Squid SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-indexer"},"Hybrid Indexer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-archive"},"Substrate Archive")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_psql_indexer"},"PSQL Indexer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/substrate-graph"},"Substrate Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OnFinality-io/subql"},"Subquery")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/p2p-org/polkadot-profit-transformer"},"MBELT3")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/stick"},"stick")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Infra3-Network/hyperdot"},"Hyperdot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain/Event Monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/guardian"},"Web3 Guardian")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HugoByte/aurras-event-manager"},"Aurras Event Manager")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/chain-events"},"@commonwealth/chain-events")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/massbitchain"},"Massbit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kianenigma/polkadot-basic-notification"},"Polkadot Basic Notifications")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/ocelloids"},"Ocelloids")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TrackingChains/TrackingChain"},"Tracking Chain")," \ud83d\udfe2,"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dodorare/crossbow"},"Crossbow")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://amethyst.rs/"},"Amethyst")," + ",(0,o.kt)("a",{parentName:"td",href:"https://substrate.dev/"},"Substrate"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"No-code Platforms"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js"},"EzCode's Polkadot.js plugin on Bubble.io")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blackprint/nodes-polkadot.js"},"Blackprint Visual Programming Polkadot.js module")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subrelay/interface"},"SubRelay")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-connect"},"Talisman Connect")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubConnect"},"SubWallet-SubConnect")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nova-wallet/metadata-portal"},"Metadata Portal")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Tesseract.rs"},"Tesseract")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/walletconnect-v2-monorepo"},"WalletConnect")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BitGo/BitGoJS/tree/master"},"BitGoJS")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"XCM"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/trappist"},"Trappist")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/xcm-tools"},"XCM-tools")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/substrate-api-rpc"},"XCM-tools Golang")," \ud83d\udfe1,",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paraspell/ui-v2"},"ParaSpell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/t3rn/xbi"},"XBI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/xcm-sdk"},"XCM TS/JS SDK")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XcmSend/app"},"XCMSend")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/xcm-monitoring/"},"XCM Monitoring Server")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/asset-transfer-api"},"asset-transfer-api")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/txwrapper-core"},"txwrapper-core")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-web3.js"},"open-web3 JS library")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/GVM-Bridge"},"VM-Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/srtool"},"srtool")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/srtool-cli"},"srtool-cli")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-tip-bot"},"Substrate Tip Bot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/syntifi/ori"},"ORI (Onchain Risk Intelligence)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/albertov19/PolkaTools"},"PolkaTools")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-scripts"},"polkadot-scripts")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/sube"},"Sube")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/data-store-sidecar"},"data-store-sidecar")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SugarFunge/sugarfunge-node"},"SugarFunge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/second-state/substrate-wasmedge"},"substrate-wasmedge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eightfish-org/eightfish"},"EightFish")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sandoxio/sandox"},"Sandox")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/apk-verifier/"},"APK verifier")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"ink-smart-contracts"},"ink! Smart Contracts"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Core Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/cargo-contract"},"cargo-contract")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts"},"pallet-contracts")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Local Nodes"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-contracts-node"},"substrate-contracts-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/swanky-cli"},"Swanky")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/drink"},"DRink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/contracts-ui"},"contracts-ui")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/h4nsu/openbrush-contracts"},"OpenBrush")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/727-Ventures/sol2ink"},"Sol2Ink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-contract-wizard"},"Polkadot Contract Wizard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/ink-wrapper"},"ink-wrapper")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-playground"},"ink-playground")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockchain-it-hr/ink-remix-plugin"},"ink! Remix Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/standardweb3/signac/"},"Signac")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-boxes/"},"ink!-boxes")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-wizard"},"ink!-smart-contract-wizard")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Security & Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-waterfall"},"ink! Waterfall")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ink-verifier-image"},"Verifier Image for ink!")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/patron-backend/"},"Patron")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Frontend Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/inkathon"},"ink!athon Boilerplate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/useink"},"useink")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/use-inkathon"},"useInkathon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk/tree/master/substrate/ink-typegen"},"ink-typegen")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/typechain-polkadot"},"Typechain Polkadot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ink-analyzer/ink-analyzer"},"ink! Analyzer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dantenetwork/protocol-stack-for-ink"},"Dante Protocol")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum-ink-wrapper"},"Pendulum-Ink-Wrapper")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RottenKiwi/Panorama-Swap-INK-SC"},"Panorama Swap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Juminstock/ink_bank"},"ink_bank")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/realnimish/polkadot-amm"},"Polkadot AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/veradefi/defi"},"Vera")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nsure-tech/dot-contract"},"Nsure Insurance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/ELC"},"Everlasting Cash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Coinversation/coinpro"},"Coinversation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/zenlink-dex-contract"},"zenlink-dex-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ReserveLabs/AlgoCash"},"AlgoCash")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"New seigniorage-style stable coins")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/OpenEmojiBattler/open-emoji-battler"},"Open Emoji Battler")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs"},"NewOmega")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/SyncraDAO/modular-dao"},"SyncraDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/subDAO-contracts"},"subDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1"},"RainbowDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/Mangoboxink"},"MangoBox")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/MangoSaleV2"},"MangoSale")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TheDotflow"},"Dotflow")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracles"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/dia-wasm-oracle"},"DIA WASM Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Spam Protection"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/prosopo-io/integration"},"Prosopo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AbaxFinance/Governance"},"Abax Governance")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArtZero-io/Contracts"},"ArtZero")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/ink-aa"},"Polkadot Smart Account")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/magink-dapp"},"magink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/ink-test-contracts"},"ink-test-contracts")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/agryaznov/candle-auction-ink"},"Candle Auctions")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubDAO-Network/polkasign-contract"},"polkasign-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/ocex-cli"},"OCEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RoloiMoney/roloi-polkadot-w3f-grant"},"Roloi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadrys/openPayroll"},"OpenPayroll")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InkSmartContract/BlockchainFoodOrder"},"BlockchainFoodOrder")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"chains-and-pallets"},"Chains and Pallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Scalable Transactions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-pallet"},"Perun channels")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-demo"},"CLI demo of Perun")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/Astar"},"Astar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/celer-network/cChannel-substrate"},"Celer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GunClear/Gunero"},"Gunclear")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BCS-Labs/tpscore-etl-system"},"TPScore")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"roll-ups, DAG-based consensus mechanisms, side chains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc"},"interBTC")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/dkg-substrate"},"DKG Substrate")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sygmaprotocol/sygma-substrate-pallets"},"Sygma")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bifrost-finance/bifrost-eos-relay"},"EOS by Bifrost")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridge"},"POA - Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/POC-polkadai-bridge"},"Substrate - Ethereum DAI Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-bridge-relay"},"Substrate - Substrate Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainx-org/ChainX"},"BTC by ChainX")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChorusOne/wormhole-bridge"},"Cosmos-Substrate bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/octopus-network/substrate-ibc"},"Substrate IBC Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/polkadot-ethereum"},"Polkadot Ethereum Bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia"},"Darwinia")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/spacewalk"},"Spacewalk: a Stellar bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/filecoindot"},"Filecoindot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/axelar-cgp-substrate/tree/main"},"Axelar-Substrate")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"ZCash")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Privacy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LayerXcom/zero-chain"},"ZeroChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/xx-labs/xxchain"},"xx network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Phala-Network/phala-blockchain"},"pLibra (Phala Network)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/automata-network/automata"},"Automata Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zero-network/zero"},"Zero Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/appliedblockchain/silentdata-polkadot"},"Silent Data")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anoma/masp"},"Multi-Asset Shielded Pool (MASP)")," , ",(0,o.kt)("a",{parentName:"td",href:"https://arxiv.org/pdf/2009.01020.pdf"},"Zkay"),", ",(0,o.kt)("a",{parentName:"td",href:"https://eprint.iacr.org/2018/962.pdf"},"Zexe"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"ZKP"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example"},"ZeroPool")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/megaclite"},"Megaclite")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/zkmega"},"zkMega")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/plonk"},"PLONK for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/protocol-substrate"},"Webb Anchor Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/zk-snarks-with-substrate/"},"zk-SNARKs tutorial")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zkvers/substrate-zk"},"substrate-zk")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"TEE"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Acurast/acurast-core"},"Acurast")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/integritee-network/worker"},"Integritee")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substraTEE"},"substraTEE")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/keysafe-protocol/keysafe-app"},"Keysafe Protocol")," \u26aa")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kapilsinha/privadex"},"PrivaDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/uinb/fusotao"},"Fusotao")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/reef-defi/reef-chain"},"Reef")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Diora-Network/Diora"},"Diora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum"},"Pendulum Chain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/compound-finance/gateway"},"Compound Gateway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/parallel-finance/parallel"},"Parallel Finance")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/PINT"},"PINT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/laminar-chain"},"Laminar Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/Acala"},"Acala")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/centrifuge-chain"},"Centrifuge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stafiprotocol/stafi-node"},"Stafi")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/y2labs-0sh/definex"},"Definex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAXFoundation/parrot"},"OAX Foundation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/alexxuyang/substrate-dex"},"Cybex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/pallet-zenlink"},"Zenlink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/lsaether/pallet-swaps"},"Swaps Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Polkadex-Substrate/Polkadex/tree/master"},"Polkadex")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdarkdex/subdex-parachain"},"SubDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/hack.HydraDX-node"},"HydraDX")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/apopiak/stablecoin"},"Substrate Stablecoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/digitalnativeinc/standard-substrate"},"Standard protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sora-xor/sora2-network"},"Polkaswap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/equilibrium-eosdt/equilibrium-curve-amm"},"Curve AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/konomi-network/cumulus/"},"Konomi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutsfinance/stable-asset"},"Stable Asset")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/atscaletech/libra"},"Libra Payment")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mangata-finance/mangata-node"},"Mangata")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tidelabs/tidechain"},"Tidechain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolymeshAssociation/Polymesh"},"Polymesh")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"DEX with privacy and confidentiality features such as those found in a ",(0,o.kt)("a",{parentName:"td",href:"https://en.wikipedia.org/wiki/Dark_pool"},"dark pool"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart contract chains"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/moonbeam"},"moonbeam")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Magport/Magnet"},"Magnet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/aleph-node"},"Aleph-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/edgeware-node"},"Edgeware")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ParaState/substrate-ssvm-node"},"ParaState")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gear-tech/gear"},"gear")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cennznet/cennznet"},"CENNZnet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/skyekiwi/skyekiwi-network"},"SkyeKiwi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/OAK-blockchain"},"OAK-blockchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ice-substrate"},"ICE Blockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OmniBTC/PSC"},"Polkadot Smart Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/keep-starknet-strange/madara"},"Madara - Cairo/Starknet")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"smart contract chains with novel security approaches, smart contract chains based on existing toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracle"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-pallet"},"Tellor")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle"},"Laminar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/smartcontractkit/chainlink-polkadot"},"Chainlink-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/aresprotocols/ares"},"Ares Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kylin-Network/kylin-node"},"Kylin Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc-clients/tree/master/oracle"},"interbtc-clients oracle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/anonima"},"Anonima")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SaaS3-Foundation/dRuntime-fat"},"SaaS3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-parachain-contracts"},"Tellor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/bridgestate-ocw"},"Bridgestate Oracle")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/parami-foundation/parami-blockchain"},"Parami")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/litentry/litentry-parachain"},"Litentry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/pallet-did"},"pallet-did")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/prasad-kumkar/dot-id"},"dot-id")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IoT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/chain"},"Nodle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DataHighway-DHX/node"},"MXC/DataHighway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/peaqnetwork/peaq-network-node"},"peaq-network-node")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Verifiable Claims"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KILTprotocol/kilt-node"},"KILT")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/docknetwork/dock-substrate"},"Dock")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fennelLabs/Fennel-Protocol"},"Fennel Protocol")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Supply chain"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/digicatapult/dscp-node"},"DSCP Node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Health care"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Music Industry"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Allfeat/Allfeat"},"Allfeat Network")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Data Availability"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/availproject/avail"},"Avail")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/melodot"},"Melodot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Social Networking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/frequency"},"Frequency")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/social-network/blockchain"},"Social Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-parachain"},"SubSocial")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/ZeroDAO-node"},"ZeroDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/myriadsocial/myriad-node"},"Myriad Node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/randombishop/wika_etl"},"Wika Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/mrc"},"Project Liberty")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/listenofficial/listen-parachain"},"Listen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tribal-protocol/tribal_contract"},"Tribal Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rust-0x0/hex-space-protocol-substrate"},"Five Degrees on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/acuity-social/acuity-substrate"},"Acuity Social")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Private instant messenger that uses on-chain identity")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance/DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/aisland-dao/aisland-node/tree/main"},"Aisland Node")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate"},"Hashed Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sunshine-protocol/sunshine-bounty"},"Sunshine DAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NucleiStudio/governance-os"},"Governance OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/idavollnetwork/idavoll"},"Idavoll Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/Substrate-Moloch-V2"},"Substrate Moloch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Qrucial/QRUCIAL-DAO"},"QRUCIAL-DAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sctllabs/societal-node"},"Societal")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/daos-org/daos"},"DAOs")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/amiyatulu/shivarthu/"},"Shivarthu")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/faterium"},"Faterium")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/decentration/apps"},"Supersig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/genesis-dao-node"},"GenesisDAO")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dao-entrance/dao-entrance-node"},"DAO Entrance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/liberland/liberland_substrate"},"Liberland")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/consul/consul"},"Consul")," - Open Government and E-Participation Web Software")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Prediction Markets and Futarchy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeitgeistpm/zeitgeist"},"Zeitgeist")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XPredictMarket/NodePredict"},"X Predict Market")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Messaging"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/validitylabs/HOPR-PL-Substrate"},"HOPR")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainify/nolik"},"Nolik")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Uke-Messaging/uke-pallet"},"Uke")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Belsoft-rs/diffychat-pallet"},"Diffy Chat")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"File Storage, Cloud"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-offchain"},"Subsocial-Offchain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playproject-io/datdot"},"DatDot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/crustio/crust"},"Crust Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rs-ipfs/offchain-ipfs-manual"},"offchain::ipfs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canyon-network/canyon"},"Canyon Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cumulus2021/cess"},"CESS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/cess-proving-system"},"CESS Proving Subsystem")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5/iris"},"Iris")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/fmd-cess"},"fmd-cess")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw"},"IPFS Frame V3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/threefoldtech/tfchain"},"Threefold Chain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Apron-Network/apron-node"},"Apron")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/substrate-ipfs"},"IPFS Utilities")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Name Service"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/xaya/substrate-names"},"Substrate Names")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hskang9/substrate-name-service"},"ENS on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/pns-pallets"},"PNS-Pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HeisenbergLin22/Faceless_milestone2_delivery"},"Faceless")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ff13dfly/Anchor"},"Anchor")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bit-country/Bit-Country-Blockchain"},"Bit.country")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubGame-Network/subgame-network"},"SubGame")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/subzero"},"subzero")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3gamesofficial/web3games-blockchain"},"Web3Games")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/Ajuna"},"Ajuna Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptoviet/gafi"},"Gafi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/asylum-space/asylum-item-nft"},"Asylum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/3Dpass/3DP"},"3DPass")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polketio/toearnfun_flutter_app"},"Polket")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Computation/AI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/DeepBrainChain/DeepBrainChain-MainChain"},"DeepBrain Chain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/anudit/cerebrum"},"AI Infrastructure on Blockchain")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Enable specific use-cases"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/pallet_hookpoints"},"pallet-hookpoints")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/substrate-node-robonomics"},"Robonomics")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniversalDot/pallets"},"UniversalDOT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/evercity-chain"},"Evercity Sustainable Finance Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fennelLabs/Fennel-Protocol"},"Fennel Protocol")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/logion-network/logion-node"},"logion")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/capsule-corp-ternoa/chain"},"ternoa")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/danforbes/pallet-nft"},"FRAME Pallet: NFTs for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniqueNetwork/unique-chain"},"Unique NFT Parachain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets"},"DNFT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rmrk-team/rmrk-substrate"},"RMRK-Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/nt-nft"},"NT-NFTs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GreenLemonProtocol/dksap-polkadot"},"Green Lemon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Randomness"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon"},"DKG and Randomness Beacon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/random-meat/drand-substrate-client"},"drand-substrate-client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Licensing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anagolay/anagolay-chain"},"Anagolay Network")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Banking Integration"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/element36-io/ebics-java-service"},"FIAT on-off-ramp")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Crowdfunding"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ImbueNetwork/imbue"},"Imbue Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zhangjiannan/QFgrant"},"Quadratic Funding pallet by Dora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-pallet/tree/master"},"Quadratic Funding pallet by OAK")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413"},"Minimum Anti-Collusion Infrastructure (MACI)"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Collection of Pallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-runtime-module-library"},"Substrate Open Runtime Module Library")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/warehouse"},"warehouse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InvArch/InvArch-Frames"},"InvArch FRAME Pallet Library")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Marketplaces"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/WowLabz/dot-marketplace-v2/tree/Phase3_Milestone3"},"Dot Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace"},"Gated Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/ventur"},"Ventur")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Carbon Credits"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bitgreen/bitg-node"},"BitGreen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/carbon-assets"},"Carbon Assets Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SequesterChain/pallets"},"Sequester Pallets")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"UTXO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Off-Narrative-Labs/Tuxedo"},"Tuxedo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Moonsong-Labs/moonkit"},"Moonkit")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-account-filter"},"Substrate Account Filter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opentensor/subtensor"},"Subtensor")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AdMetaNetwork/admeta"},"AdMeta")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chocolatenetwork/chocolate-node"},"Chocolate Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/virto-node"},"Virto Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-validator-set"},"Substrate Validator Set")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DEIPworld/deip-node"},"DEIP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debionetwork/debio-node"},"DeBio")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mathwallet/MathChain"},"MathChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/encointer/encointer-node"},"encointer")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/grasslandnetwork/substrate_node"},"Grassland")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rusty-crewmates/substrate-tutorials"},"Substrate-Tutorials")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Fair-Squares/fair-squares"},"Fair Squares")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/totem-tech/totem"},"Totem Live Accounting")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/herou/EscrowPallet"},"Escrow Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NexTokenTech/TREX"},"TREX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/relationlabs/Relation-Graph"},"Relation Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gertt/Invoice"},"Decentralized Invoice")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/redstone-network/redstone-node"},"Redstone Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WunderbarNetwork/access-control"},"Access Control Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/web3-grant"},"Omniverse DLT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/substrate-ismp"},"ISMP")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/xcmp_prototype_playground"},"XCMP")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dhiway/cord"},"CORD Chain")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Decentralized review/reputation system")))),(0,o.kt)("h3",{id:"host"},"Host"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Rust"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate"},"Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/cumulus"},"Cumulus")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"C++"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/kagome"},"Kagome")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/mayon"},"Mayon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Go"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Java"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/Fruzhin"},"Fruzhin")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/java-host-research"},"Java Host Research")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"AssemblyScript"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Light Client"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/smol-dot/smoldot"},"smoldot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-connect"},"Substrate Connect")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eqlabs/polkadot-light-client"},"C++ Polkadot Light Client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/polkadot-conformance"},"Polkadot Conformance")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sigp/polkafuzz"},"Polkafuzz")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"network-maintenance-tools"},"Network Maintenance Tools"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Secure validator setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkachu/polkadot-validator"},"Polkadot Validation Node Ansible Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-validator-setup"},"W3F Polkadot Validator Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nexus2k/polkadot-ansible"},"polkadot-ansible")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"High availability setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/luguslabs/archipel"},"Archipel")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-failover-mechanism"},"Polkadot Failover Mechanism")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Datagen-Project/Datagen-Substrate-Grant"},"Datagen")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/substrate-raft"},"High Availability Validator Setup")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Load Balanced Endpoints"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/insight-w3f/terragrunt-polkadot"},"terragrunt-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sudoblockio/substrate-meta"},"Geometry Labs' Substrate Meta repo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Deployment Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blockdaemon/bpm-sdk"},"Polkadot Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/polkahub-monorepo"},"PolkaHub")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom"},"Avado")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-deployer"},"Polkadot Deployer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/for-parity-with-love/unified-collator-node-deployment"},"Unified Collator Deployment")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/one-t"},"ONE-T")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/subvt-backend"},"SubVT")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SimplyVC/panic"},"P.A.N.I.C.")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/polkalert"},"Polkalert")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3"},"B-Harvest")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakezone/nmonpolkadot"},"nmonpolkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ironoa/polkadot-k8s-monitor"},"Polkadot-K8s-Monitor")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-watcher"},"Polkadot-Watcher")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot"},"1KV Telegram Bot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator payout management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/substrate-auto-payout"},"Substrate validator auto payout")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-payouts"},"Polkadot Payouts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emostov/staking-payouts"},"staking-payouts CLI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakelink/substrate-payctl"},"Payctl")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/crunch"},"crunch")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking Miner"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/staking-miner-v2"},"Staking Miner v2")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Nominator Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/miepsik/validators_selection"},"Validator Selection")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer"},"Polkanalyzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer-app"},"Polkanalyzer-app")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"signatures"},"Signatures"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SR25519"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/schnorrkel"},"rust")," \ud83d\udfe2(contains partial bindings for C, JavaScript, and Python), ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/sr25519-dotnet"},".Net bindings")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(old)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TerenceGe/sr25519-donna"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(new)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/soramitsu-sr25519-crust"},"C/C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519_dotnet"},"C#")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/go-schnorrkel"},"Go")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debuggor/schnorrkel-java"},"java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/sr25519-bindings"},"PHP")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Signature Aggregation"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/apk-proofs"},"apk-proofs")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Distributed key generation (DKG) or management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/isislovecruft/frost-dalek"},"keygen.rs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/sword"},"Secure Wallet Origin Distribution (SWORD)")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator HSMs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/buildroot-zondax"},"Zondax Remote Signer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"MPC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/orochi-network/orochi-network.github.io"},"Orochi Network")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"consensus"},"Consensus"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subspace/substrate"},"Spartan")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoW"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/client/consensus/pow"},"PoW consensus for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kulupu/kulupu/tree/master/pow"},"RandomX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow"},"Sha3 PoW")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block production"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/client/consensus/babe"},"BABE")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/client/consensus/aura"},"Aura")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Finality"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/frame/grandpa"},"GRANDPA")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/AlephBFT"},"AlephBFT")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/nimbus"},"Nimbus: Upgradeable consensus framework")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"networking"},"Networking"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SCALE Codec"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec"},"Rust")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec-ts"},"TypeScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-scale-codec"},"Python")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/"},"Golang Chainsafe")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.go"},"Golang Itering")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/MatthewDarnell/cScale"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-cpp"},"C++")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"JavaScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-scale-codec"},"AssemblyScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.rb"},"Ruby")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nbltrust/dart-scale-codec"},"Dart")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/swift-scale-codec"},"Swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-swift"},"scale-codec-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-kotlin"},"scale-codec-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-scale-codec"},"PHP")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-js-library"},"JavaScript by Soramitsu")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/scale-codec-comparator"},"Scale Codec Comparator")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia-messages-sol/blob/master/contracts/utils/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Darwinia")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/snowbridge/blob/main/core/packages/contracts/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Snowfork")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/arijitAD/dotscale"},"Dotscale")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Networking Framework"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/libp2p/libp2p"},"libp2p")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DHT Crawler"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/atredispartners/dht-crawler-polkadot"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkabot"},"Kotlin")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Tor-like access"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Evanesco-Labs/WhiteNoise.rs"},"WhiteNoise")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"primitives"},"Primitives"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Storage"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/frisitano/merkle-tree-db"},"Merkle Tree DB")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Merkle Proofs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/solidity-merkle-trees"},"Solidity Trie Verifier")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h2",{id:"contributing"},"Contributing"),(0,o.kt)("p",null,"Pull requests, issues, or other contributions from the community are encouraged! You can not only\nadd specific projects, but also potentially interesting fields/areas which are currently missing in\nthe tech stack."),(0,o.kt)("p",null,"\u2757 All technologies listed above need to be open-source. Ideally, the links\nlead directly to the code."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you\nmay ",(0,o.kt)("a",{parentName:"em",href:"https://github.com/join"},"sign up for free"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ccc1222e.a3e623f0.js b/assets/js/ccc1222e.a3e623f0.js new file mode 100644 index 000000000000..1bbb1775d47c --- /dev/null +++ b/assets/js/ccc1222e.a3e623f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[6920],{3905:(t,a,e)=>{e.d(a,{Zo:()=>m,kt:()=>k});var r=e(67294);function n(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function o(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,r)}return e}function i(t){for(var a=1;a=0||(n[e]=t[e]);return n}(t,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(n[e]=t[e])}return n}var p=r.createContext({}),h=function(t){var a=r.useContext(p),e=a;return t&&(e="function"==typeof t?t(a):i(i({},a),t)),e},m=function(t){var a=h(t.components);return r.createElement(p.Provider,{value:a},t.children)},s="mdxType",d={inlineCode:"code",wrapper:function(t){var a=t.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(t,a){var e=t.components,n=t.mdxType,o=t.originalType,p=t.parentName,m=l(t,["components","mdxType","originalType","parentName"]),s=h(e),u=n,k=s["".concat(p,".").concat(u)]||s[u]||d[u]||o;return e?r.createElement(k,i(i({ref:a},m),{},{components:e})):r.createElement(k,i({ref:a},m))}));function k(t,a){var e=arguments,n=a&&a.mdxType;if("string"==typeof t||n){var o=e.length,i=new Array(o);i[0]=u;var l={};for(var p in a)hasOwnProperty.call(a,p)&&(l[p]=a[p]);l.originalType=t,l[s]="string"==typeof t?t:n,i[1]=l;for(var h=2;h{e.r(a),e.d(a,{assets:()=>m,contentTitle:()=>p,default:()=>k,frontMatter:()=>l,metadata:()=>h,toc:()=>s});var r=e(87462),n=e(63366),o=(e(67294),e(3905)),i=["components"],l={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"},p="Open Source Polkadot Stack \x3c!-- omit in toc --\x3e",h={unversionedId:"build/build-open-source",id:"build/build-open-source",title:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",source:"@site/../docs/build/build-open-source.md",sourceDirName:"build",slug:"/build-open-source",permalink:"/docs/build-open-source",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/build/build-open-source.md",tags:[],version:"current",lastUpdatedBy:"Chris",lastUpdatedAt:1701725203,formattedLastUpdatedAt:"Dec 4, 2023",frontMatter:{id:"build-open-source",title:"Open Source Stack",sidebar_label:"Open Source Stack",description:"Overview of the open source Polkadot/Kusama Tech Stack",keywords:["open","source","development","code","resources","tools","apis"],slug:"../build-open-source"},sidebar:"docs",previous:{title:"Explorer, Data, & Indexing Tools",permalink:"/docs/build-data"},next:{title:"Hackathons",permalink:"/docs/build-hackathon"}},m={},s=[{value:"About",id:"about",level:2},{value:"Layers of Polkadot Stack",id:"layers-of-polkadot-stack",level:2},{value:"Wallets",id:"wallets",level:3},{value:"User Interface",id:"user-interface",level:3},{value:"Tools, APIs, and Languages",id:"tools-apis-and-languages",level:3},{value:"ink! Smart Contracts",id:"ink-smart-contracts",level:3},{value:"Chains and Pallets",id:"chains-and-pallets",level:3},{value:"Host",id:"host",level:3},{value:"Network Maintenance Tools",id:"network-maintenance-tools",level:3},{value:"Signatures",id:"signatures",level:3},{value:"Consensus",id:"consensus",level:3},{value:"Networking",id:"networking",level:3},{value:"Primitives",id:"primitives",level:3},{value:"Contributing",id:"contributing",level:2}],d={toc:s},u="wrapper";function k(t){var a=t.components,e=(0,n.Z)(t,i);return(0,o.kt)(u,(0,r.Z)({},d,e,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("h1",{id:"open-source-polkadot-stack--omit-in-toc-"},"Open Source Polkadot Stack "),(0,o.kt)("admonition",{title:"Do your research before using open-source tools",type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The tools listed here are open-source and are linked directly to their source code. Before using these tools to build your projects, always ",(0,o.kt)("a",{parentName:"p",href:"/docs/how-to-dyor"},"do your research")," and be aware of ",(0,o.kt)("a",{parentName:"p",href:"/docs/learn-scams"},"scams"),".")),(0,o.kt)("p",null,"This page aims to provide an overview of the open-source Polkadot Tech Stack."),(0,o.kt)("p",null,"This is a living document, and we rely on everyone to contribute and help maintain\nit. ",(0,o.kt)("a",{parentName:"p",href:"#contributing"},(0,o.kt)("strong",{parentName:"a"},"Please feel free to make edits and additions via pull requests")),". We\napologize if we missed your project!"),(0,o.kt)("hr",null),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#about"},"About")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#wallets"},"Wallets")," "),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#user-interface"},"User Interface")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#tools-apis-and-languages"},"Tools, APIs, and Languages")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#ink-smart-contracts"},"ink! Smart Contracts")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#chains-and-pallets"},"Chains and Pallets")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#host"},"Host")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#network-maintenance-tools"},"Network Maintenance Tools")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#signatures"},"Signatures")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#consensus"},"Consensus")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#networking"},"Networking")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#primitives"},"Primitives")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"#contributing"},"Contributing"))),(0,o.kt)("h2",{id:"about"},"About"),(0,o.kt)("p",null,"The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the ",(0,o.kt)("strong",{parentName:"p"},"open-source"),"\ntechnologies contributing to and relying on ",(0,o.kt)("a",{parentName:"p",href:"https://polkadot.network/"},"Polkadot"),". It is meant to be used\nfor decentralized application (Dapp) development within numerous verticals, including DeFi, Gaming,\nProvenance and many others not pictured below."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre"},"|------|--------|------------|\n| DeFi | Gaming | Provenance |\n|______|________|____________|\n Dapps\n|--------------------------/-|\n| Explorers, Wallets / |\n|------------------------/---|\n| Tools, Apis, Languages/ |\n|----------------------/-----|\n| 2nd layer protocols / |\n|--------------------/-------|\n| Chains / other |\n|------------------/--- --|\n| *Polkadot* | tech |\n|------------------\\---------|\n| P2P, Crypto, Wasm \\ |\n|--------------------\\-------|\n")),(0,o.kt)("h2",{id:"layers-of-polkadot-stack"},"Layers of Polkadot Stack"),(0,o.kt)("p",null,"In the below sections, you can find a list of different layers of the Polkadot Stack."),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"Maintenance Status"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe2 Actively maintained"),(0,o.kt)("li",{parentName:"ul"},"\ud83d\udfe1 Stale (no activity on the main branch for one month)"),(0,o.kt)("li",{parentName:"ul"},"\u26aa Unmaintained (no activity on the main branch for more than three months)")),(0,o.kt)("h3",{id:"wallets"},"Wallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Web Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/Multix"},"Multix")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkasafe/polkasafe-ui"},"Polkasafe")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/apps"},"polkadot-js/apps")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-web"},"Talisman Web Application")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/mydotwallet"},"mydotwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subid"},"Sub ID")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Primis-Labs/client"},"Primis")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3finance/sakura"},"Sakura")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/Web3Box-apps"},"Web3Box")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoongCrafts/coong-wallet"},"Coong Wallet")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-react"},"Subscan Multisig UI - React")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan-multisig-ui"},"Subscan Multisig UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/dorafactory-multisig"},"Dorafactory-Multisig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi-multisig-app"},"Capi Multisig App")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"User-friendly Wallet based on the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/frame/recovery"},"Recovery Pallet"),", Web wallets focused on user-onboarding (e.g. using ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/near/near-wallet"},"localStorage"),")")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Desktop Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-spektr"},"nova-spektr")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/omni-desktop-prototype"},"Omni desktop")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Enterprise Wallets")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Browser Extensions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman"},"Talisman-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Extension"},"SubWallet-Extension")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/enkryptcom/enKrypt"},"Enkrypt")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/extension"},"Polkadot{.js}")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolkaGate/polkagate-extension"},"PolkaGate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainBridgeNetworkTeam/Doter"},"Doter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GetSpeckle/speckle-browser-extension"},"Speckle OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/kuma-wallet"},"Kuma Cross-chain Wallet")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Sign-in with your Polkadot, Kusama, etc. account.")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Mobile Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-ios"},"Nova Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/nova-wallet-android"},"Nova Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-signer"},"Polkadot Vault")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-Android"},"Fearless Wallet Android")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/fearless-iOS"},"Fearless Wallet iOS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubWallet-Mobile"},"SubWallet-Mobile")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kalapaja/kampela-firmware"},"Kampela")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airgap-it/airgap-wallet"},"AirGap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Interstellar-Network/wallet-app"},"Interstellar Network")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/luniehq/lunie"},"Lunie")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkawallet-io/polkawallet-flutter"},"Polkawallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/consenlabs/token-core"},"imToken")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stylo-app/stylo"},"Stylo")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fractapp/fractapp/"},"Fractapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hypha-dao/hashed-wallet"},"Hashed Wallet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Burner Wallets/Faucet/Gifts"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hamidra/dotdrop"},"dotdrop")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/vue-polkadot/apps"},"KodaDot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/astar-faucet-bot"},"Astar Faucet Bot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/karooolis/sybil-resistant-substrate-faucet"},"Generic sybil-resistant faucet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/StringNick/sybil-resistant-chat-bot-substrate-faucet"},"sybil-resistant Chat Bot Faucet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Faucet (a sybil-resistant way to receive free tokens)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallet Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/metamask-snap-polkadot"},"Metamask-Snap by Chainsafe")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"CLI Wallet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/yxf/subwallet"},"Subwallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canontech/proxy-hot-wallet"},"Proxy-hot-wallet")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Hardware Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZondaX/ledger-polkadot"},"Ledger Polkadot")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-kusama"},"Ledger Kusama")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemint"},"Ledger Statemint")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/ledger-statemine"},"Ledger Statemine")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Trezor")))),(0,o.kt)("h3",{id:"user-interface"},"User Interface"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/topmonks/calamar"},"Calamar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/colorfulnotion/polkaholic"},"Polkaholic")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/explorer-api"},"Polkascan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/polkastats-backend"},"Polkastats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/subscan"},"Subscan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/statescan"},"Statescan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/edgeware-builders/edgscan"},"Edgscan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/epirus-substrate"},"Sirato")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/ink-substrate-explorer-api"},"ink! Explorer API")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/substats"},"Substats")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-dapp"},"Hybrid Block Explorer")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"Mempool focused explorer (including parachain transaction)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-telemetry"},"Polkadot Telemetry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashquark-io/polkacube-frontend"},"Polkacube")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/buidl-labs/YieldScan"},"YieldScan")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-community/hubble/tree/master/app/controllers/polkadot"},"Hubble")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArthurHoeke/cyclops"},"Cyclops")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3go-xyz/web3go-xyz-v2"},"Web3Go")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Node Explorers"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/protos-research/polkadot-node-explorer"},"Polkadot Node Explorer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT Explorer"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/nft-gallery"},"NFT Explorer for Kusama & Polkadot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance Dashboards"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/governance-ui"},"Polkadot Delegation Dashboard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/premiurly/polkassembly"},"Polkassembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/dotreasury"},"dotreasury")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/bright-tresury"},"Bright Treasury")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/collaboration"},"OpenSquare offchain voting")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/wpank/open-gov-insights"},"OpenGov Insights")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stake-plus/treasury-tracker"},"Treasury Tracker")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"UI for the Kusama and/or Polkadot treasury (see ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/pull/5715"},"bounty module"),"), UI for Parachain Lease Offering (PLO)")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/staking-rewards-collector"},"Staking Rewards Collector")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/jackson-harris-iii/staking-rewards-viewer"},"Staking Rewards Viewer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptolab-network/polkadot-staking-site"},"Polkadot Staking Site")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-staking-dashboard"},"Polkadot Staking Dashboard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-validator-selector"},"Polkadot/Kusama Validator Selector")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/James-Sangalli/dot-staking-income"},"Staking Income CSV Generator")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridge UI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridges-ui"},"Parity Bridges UI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutbox-dao/donut-interface"},"Donut Interface (Steem - Dot)")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Parachain/Crowdloan"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/jhonalino/parachains.network"},"Parachains.Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrommVardek/polk-auction-ui"},"PolkAuction")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/10clouds/crowdloan-template"},"Crowdloan Front End Template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/slothunter/"},"Slothunter")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identicon"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud/polkicon"},"Polkicon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-web-identicon"},"PolkadotWebIdenticon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RidOne-technologies/polkadot-angular-identicon"},"Polkadot Angular IdentIcon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Noc2/Bird-Identicon"},"Bird Identicon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://polkadot.cloud"},"Polkadot Cloud")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/KappaSigmaMu/ksm-app"},"KappaSigmaMu Fratority")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-webapp"},"Quadratic Funding Webapp")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/polkawatch/polkawatch"},"Polkawatch"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bytepayment/bytepay"},"Bytepay")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Delmonicos/charging-management-platform"},"charging-management-platform")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/subidentity-webapp"},"subidentity-webapp")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opensquare-network/paid-qa/"},"OpenSquare Paid QA")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CrossChainLabs-DOT/dotpulse-api"},"DotPulse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/rubeus-smartcontract"},"Rubeus Keeper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/justmert/eco-flow-frontend"},"Polkaflow")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/chainviz"},"ChainViz")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fidi-tech/dotsight"},"Dotsight")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LasticXYZ/LasticUI"},"Lastic")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://docs.sui.io/build/zk_login"},"zkLogin"),", Portfolio Viewer like Zapper or Zerion")))),(0,o.kt)("h3",{id:"tools-apis-and-languages"},"Tools, APIs, and Languages"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Parachain frameworks"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot Blockchain SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/gosemble"},"Gosemble")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/parachain-utilities"},"Parachain utilities")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gantree-io/gantree-core"},"Gantree")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5"},"Cryptex")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Tools to create parachains with other frameworks, like the ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cosmos/cosmos-sdk"},"Cosmos SDK")," or ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xPolygon/cdk-validium-node"},"Polygon CDK"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Client Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-api"},"Polkadot API - Typescript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/capi"},"Capi - Typescript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/packages/tree/main/sub-api"},"sub-api")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/go-substrate-rpc-client"},"Go")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_dotnet"},".Net")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/Ajuna.NetApi"},".NET Standard 2.0")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubstrateGaming/Substrate.NET.Toolchain"},"Substrate .NET Toolchain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_api_cpp"},"C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/finoabanking/substrate-c-tool"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"Javascript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-api-sidecar"},"Substrate API Sidecar - TypeScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-substrate-interface"},"Python")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java (+ Android)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/strategyobject/substrate-client-java"},"Substrate Client Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substrate-api-client"},"Rust SCS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/subxt"},"Rust Parity (subxt)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/trevor-crypto"},"Rust pdotc")," ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-substrate-api"},"PHP (gmajor-encrypt)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neha0921/substrate-interface-package"},"PHP (neha0921)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/frontier"},"RPC-Ethereum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Substrate.swift"},"Swift")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/substrate-client-kotlin"},"Kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-kotlin"},"substrate-client-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/substrate-client-swift"},"substrate-client-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rankanizer/polkadart"},"Dart")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polywrap/integrations"},"Substrate Core Polywrapper")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-ios"},"Substrate SDK iOS")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/novasamatech/substrate-sdk-android"},"Substrate SDK Android")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Gateway"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/subway"},"Subway")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Substrate Contract clients"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/go-patract"},"PatractGo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Easy Runtime Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/hack-ink/subalfred"},"Subalfred")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/substrate-stencil"},"substrate-stencil")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kaichaosun/play-substrate"},"Play Substrate")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/substrate-node-template"},"substrate-node-template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-playground"},"Substrate Playground")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-substrate-runtime"},"AssemblyScript Runtime Generation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/clearloop/sup"},"Substrate Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/subsembly"},"Subsembly: Framework for developing AssemblyScript Substrate Runtimes")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bkchr/diener"},"dependency diener")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/vscode-substrate"},"Substrate Marketplace VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/vscode-plugin-substrate"},"VS Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/everstake/atom-plugin-substrate"},"Atom Code Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet-vscode-extension"},"zombienet extension")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Runtime/Pallet Security"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/srlabs/substrate-runtime-fuzzer"},"Substrate Runtime Fuzzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-toml-lint"},"Substrate Toml Lint")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kframework/wasm-semantics"},"K specifications")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSecurity/polpatrol"},"PolPatrol - Polkadot Runtime Checker")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Automated Runtime checking tools, economic audit simulator such as ",(0,o.kt)("a",{parentName:"td",href:"https://gauntlet.network/"},"gauntlet.network"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Languages"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"#ink-smart-contracts"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ask-lang/ask"},"Ask!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/slickup/subscript"},"Subscript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hyperledger-labs/solang"},"Solang")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eigerco/pallet-move"},"pallet-move")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pontem-network/sp-move"},"Move VM Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/neatcoin/neatcoin"},"Move smart contract by Neatcoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pepyakin/substrate-seal-ebpf"},"eBPF Contracts Hackathon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkavm"},"PolkaVM")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Functional Programming Languages, other languages with developed toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-introspector"},"Polkadot introspector")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdirectory/subshell"},"Subshell")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/sc-simnode"},"substrate-simnode")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/halva-suite/halva"},"Halva")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/redspot"},"Redspot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mixbytes/tank"},"MixBytes Tank")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NikVolf/sub-flood"},"sub-flood")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-debug-kit"},"Substrate debug-kit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/asset_cli_tool"},"Asset CLI tool")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/JesseAbram/unfinished_testing_tool"},"sub_crash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/subwasm"},"subwasm")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ascjones/subsee"},"subsee")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-lab"},"polkadot-lab")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dwellir-public/rpc-perf/"},"RPC-perf")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Static Analysis"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KaiserKarel/substrace"},"Substrace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/simon-perriard/saft"},"Static analyzer for Substrate FRAME's pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CoinFabrik/scout"},"CoinFabrik Scout")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testnet"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/zombienet"},"Zombienet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/chopsticks"},"Chopsticks")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-launch"},"Polkadot Launch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/koute/polkadot-starship"},"polkadot-starship")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/maxsam4/fork-off-substrate"},"Fork off Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/try-runtime-cli"},"try-runtime-cli")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/parachain-launch"},"Parachain Launch")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zeeve-App/larch"},"Larch Zombienet GUI")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Benchmarking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/utils/frame/benchmarking-cli"},"Benchmarking CLI")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-stps"},"Polkadot sTPS")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/0xekez/clockchain"},"Clockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/shawntabrizi/substrate-graph-benchmarks"},"Substrate Graph Benchmarks")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nikhil-Desai-Talentica/substrate-node-template-benchmarking"},"ink! & pallet benchmarking template")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/smart-bench"},"smart-bench")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain Indexing Engine"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk"},"Squid SDK")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hybrid-explorer/hybrid-indexer"},"Hybrid Indexer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-archive"},"Substrate Archive")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/polkadot_psql_indexer"},"PSQL Indexer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/substrate-graph"},"Substrate Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OnFinality-io/subql"},"Subquery")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/p2p-org/polkadot-profit-transformer"},"MBELT3")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kodadot/stick"},"stick")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Infra3-Network/hyperdot"},"Hyperdot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Blockchain/Event Monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/guardian"},"Web3 Guardian")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HugoByte/aurras-event-manager"},"Aurras Event Manager")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/chain-events"},"@commonwealth/chain-events")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/massbitchain"},"Massbit")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kianenigma/polkadot-basic-notification"},"Polkadot Basic Notifications")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/ocelloids"},"Ocelloids")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TrackingChains/TrackingChain"},"Tracking Chain")," \ud83d\udfe2,"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dodorare/crossbow"},"Crossbow")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://amethyst.rs/"},"Amethyst")," + ",(0,o.kt)("a",{parentName:"td",href:"https://substrate.dev/"},"Substrate"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"No-code Platforms"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NovaBloq/Bubble-Plugin-Polkadot.js"},"EzCode's Polkadot.js plugin on Bubble.io")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blackprint/nodes-polkadot.js"},"Blackprint Visual Programming Polkadot.js module")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subrelay/interface"},"SubRelay")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Wallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TalismanSociety/talisman-connect"},"Talisman Connect")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Koniverse/SubConnect"},"SubWallet-SubConnect")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nova-wallet/metadata-portal"},"Metadata Portal")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/Tesseract.rs"},"Tesseract")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/walletconnect-v2-monorepo"},"WalletConnect")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BitGo/BitGoJS/tree/master"},"BitGoJS")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"XCM"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/trappist"},"Trappist")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/xcm-tools"},"XCM-tools")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/substrate-api-rpc"},"XCM-tools Golang")," \u26aa,",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paraspell/ui-v2"},"ParaSpell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/t3rn/xbi"},"XBI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockcoders/xcm-sdk"},"XCM TS/JS SDK")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XcmSend/app"},"XCMSend")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sodazone/xcm-monitoring/"},"XCM Monitoring Server")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/asset-transfer-api"},"asset-transfer-api")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/txwrapper-core"},"txwrapper-core")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-web3.js"},"open-web3 JS library")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/GVM-Bridge"},"VM-Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/srtool"},"srtool")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chevdor/srtool-cli"},"srtool-cli")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-tip-bot"},"Substrate Tip Bot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/syntifi/ori"},"ORI (Onchain Risk Intelligence)")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/albertov19/PolkaTools"},"PolkaTools")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-scripts"},"polkadot-scripts")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/sube"},"Sube")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/data-store-sidecar"},"data-store-sidecar")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SugarFunge/sugarfunge-node"},"SugarFunge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/second-state/substrate-wasmedge"},"substrate-wasmedge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eightfish-org/eightfish"},"EightFish")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sandoxio/sandox"},"Sandox")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/apk-verifier/"},"APK verifier")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"ink-smart-contracts"},"ink! Smart Contracts"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Core Libraries"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink"},"ink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/cargo-contract"},"cargo-contract")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/polkadot-sdk/tree/master/substrate/frame/contracts"},"pallet-contracts")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Local Nodes"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-contracts-node"},"substrate-contracts-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/swanky-cli"},"Swanky")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart Contract Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/drink"},"DRink!")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/contracts-ui"},"contracts-ui")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/h4nsu/openbrush-contracts"},"OpenBrush")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/727-Ventures/sol2ink"},"Sol2Ink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-contract-wizard"},"Polkadot Contract Wizard")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/ink-wrapper"},"ink-wrapper")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-playground"},"ink-playground")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/blockchain-it-hr/ink-remix-plugin"},"ink! Remix Plugin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/standardweb3/signac/"},"Signac")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-boxes/"},"ink!-boxes")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/avirajkhare00/ink-wizard"},"ink!-smart-contract-wizard")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Security & Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/ink-waterfall"},"ink! Waterfall")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ink-verifier-image"},"Verifier Image for ink!")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/patron-backend/"},"Patron")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Frontend Development"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/inkathon"},"ink!athon Boilerplate")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/useink"},"useink")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scio-labs/use-inkathon"},"useInkathon")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subsquid/squid-sdk/tree/master/substrate/ink-typegen"},"ink-typegen")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Brushfam/typechain-polkadot"},"Typechain Polkadot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IDE Plugins"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ink-analyzer/ink-analyzer"},"ink! Analyzer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dantenetwork/protocol-stack-for-ink"},"Dante Protocol")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum-ink-wrapper"},"Pendulum-Ink-Wrapper")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RottenKiwi/Panorama-Swap-INK-SC"},"Panorama Swap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Juminstock/ink_bank"},"ink_bank")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/realnimish/polkadot-amm"},"Polkadot AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/veradefi/defi"},"Vera")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nsure-tech/dot-contract"},"Nsure Insurance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CycanTech/ELC"},"Everlasting Cash")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Coinversation/coinpro"},"Coinversation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/zenlink-dex-contract"},"zenlink-dex-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ReserveLabs/AlgoCash"},"AlgoCash")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"New seigniorage-style stable coins")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/OpenEmojiBattler/open-emoji-battler"},"Open Emoji Battler")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WiktorStarczewski/newomega.polkadot/blob/master/newomega_delegator/newomega/newomega.rs"},"NewOmega")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/SyncraDAO/modular-dao"},"SyncraDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/subDAO-contracts"},"subDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RainbowcityFoundation/RainbowDAO-Protocol-Ink-milestone_1"},"RainbowDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/Mangoboxink"},"MangoBox")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Mangoboxlabs/MangoSaleV2"},"MangoSale")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/TheDotflow"},"Dotflow")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracles"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/dia-wasm-oracle"},"DIA WASM Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Spam Protection"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/prosopo/captcha"},"Prosopo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/AbaxFinance/Governance"},"Abax Governance")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ArtZero-io/Contracts"},"ArtZero")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/ink-aa"},"Polkadot Smart Account")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/swankyhub/magink-dapp"},"magink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/ink-test-contracts"},"ink-test-contracts")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/agryaznov/candle-auction-ink"},"Candle Auctions")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubDAO-Network/polkasign-contract"},"polkasign-contract")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bsn-si/ocex-cli"},"OCEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/RoloiMoney/roloi-polkadot-w3f-grant"},"Roloi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadrys/openPayroll"},"OpenPayroll")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InkSmartContract/BlockchainFoodOrder"},"BlockchainFoodOrder")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"chains-and-pallets"},"Chains and Pallets"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Scalable Transactions"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-pallet"},"Perun channels")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/perun-network/perun-polkadot-demo"},"CLI demo of Perun")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/Astar"},"Astar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/celer-network/cChannel-substrate"},"Celer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GunClear/Gunero"},"Gunclear")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/BCS-Labs/tpscore-etl-system"},"TPScore")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null},"roll-ups, DAG-based consensus mechanisms, side chains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Bridges"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc"},"interBTC")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/dkg-substrate"},"DKG Substrate")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sygmaprotocol/sygma-substrate-pallets"},"Sygma")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bifrost-finance/bifrost-eos-relay"},"EOS by Bifrost")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-bridge"},"POA - Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/POC-polkadai-bridge"},"Substrate - Ethereum DAI Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-bridge-relay"},"Substrate - Substrate Bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainx-org/ChainX"},"BTC by ChainX")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChorusOne/wormhole-bridge"},"Cosmos-Substrate bridge")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/octopus-network/substrate-ibc"},"Substrate IBC Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/polkadot-ethereum"},"Polkadot Ethereum Bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia"},"Darwinia")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/spacewalk"},"Spacewalk: a Stellar bridge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/filecoindot"},"Filecoindot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/axelar-cgp-substrate/tree/main"},"Axelar-Substrate")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"ZCash")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Privacy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LayerXcom/zero-chain"},"ZeroChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/xx-labs/xxchain"},"xx network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Phala-Network/phala-blockchain"},"pLibra (Phala Network)")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/automata-network/automata"},"Automata Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zero-network/zero"},"Zero Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/appliedblockchain/silentdata-polkadot"},"Silent Data")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anoma/masp"},"Multi-Asset Shielded Pool (MASP)")," , ",(0,o.kt)("a",{parentName:"td",href:"https://arxiv.org/pdf/2009.01020.pdf"},"Zkay"),", ",(0,o.kt)("a",{parentName:"td",href:"https://eprint.iacr.org/2018/962.pdf"},"Zexe"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"ZKP"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeropoolnetwork/zeropool-substrate-groth16-example"},"ZeroPool")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/megaclite"},"Megaclite")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/patractlabs/zkmega"},"zkMega")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AstarNetwork/plonk"},"PLONK for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/protocol-substrate"},"Webb Anchor Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/zk-snarks-with-substrate/"},"zk-SNARKs tutorial")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zkvers/substrate-zk"},"substrate-zk")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"TEE"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Acurast/acurast-core"},"Acurast")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/integritee-network/worker"},"Integritee")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/scs/substraTEE"},"substraTEE")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/keysafe-protocol/keysafe-app"},"Keysafe Protocol")," \u26aa")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DeFi"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/kapilsinha/privadex"},"PrivaDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/uinb/fusotao"},"Fusotao")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/reef-defi/reef-chain"},"Reef")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Diora-Network/Diora"},"Diora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pendulum-chain/pendulum"},"Pendulum Chain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/compound-finance/gateway"},"Compound Gateway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/parallel-finance/parallel"},"Parallel Finance")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/PINT"},"PINT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/laminar-chain"},"Laminar Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AcalaNetwork/Acala"},"Acala")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/centrifuge/centrifuge-chain"},"Centrifuge")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stafiprotocol/stafi-node"},"Stafi")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/y2labs-0sh/definex"},"Definex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAXFoundation/parrot"},"OAX Foundation")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/alexxuyang/substrate-dex"},"Cybex")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zenlinkpro/pallet-zenlink"},"Zenlink")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/lsaether/pallet-swaps"},"Swaps Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Polkadex-Substrate/Polkadex/tree/master"},"Polkadex")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/subdarkdex/subdex-parachain"},"SubDEX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/hack.HydraDX-node"},"HydraDX")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/apopiak/stablecoin"},"Substrate Stablecoin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/digitalnativeinc/standard-substrate"},"Standard protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sora-xor/sora2-network"},"Polkaswap")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/equilibrium-eosdt/equilibrium-curve-amm"},"Curve AMM")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/konomi-network/cumulus/"},"Konomi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nutsfinance/stable-asset"},"Stable Asset")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/atscaletech/libra"},"Libra Payment")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mangata-finance/mangata-node"},"Mangata")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tidelabs/tidechain"},"Tidechain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/PolymeshAssociation/Polymesh"},"Polymesh")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"DEX with privacy and confidentiality features such as those found in a ",(0,o.kt)("a",{parentName:"td",href:"https://en.wikipedia.org/wiki/Dark_pool"},"dark pool"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Smart contract chains"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/moonbeam"},"moonbeam")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Magport/Magnet"},"Magnet")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/aleph-node"},"Aleph-node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hicommonwealth/edgeware-node"},"Edgeware")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ParaState/substrate-ssvm-node"},"ParaState")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gear-tech/gear"},"gear")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cennznet/cennznet"},"CENNZnet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/skyekiwi/skyekiwi-network"},"SkyeKiwi")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/OAK-blockchain"},"OAK-blockchain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3labs/ice-substrate"},"ICE Blockchain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OmniBTC/PSC"},"Polkadot Smart Chain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/keep-starknet-strange/madara"},"Madara - Cairo/Starknet")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"smart contract chains with novel security approaches, smart contract chains based on existing toolchains")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Oracle"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-pallet"},"Tellor")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/laminar-protocol/open-runtime-module-library/tree/master/oracle"},"Laminar")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/smartcontractkit/chainlink-polkadot"},"Chainlink-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/aresprotocols/ares"},"Ares Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Kylin-Network/kylin-node"},"Kylin Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/interlay/interbtc-clients/tree/master/oracle"},"interbtc-clients oracle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/webb-tools/anonima"},"Anonima")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SaaS3-Foundation/dRuntime-fat"},"SaaS3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tellor-io/tellor-parachain-contracts"},"Tellor")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/diadata-org/bridgestate-ocw"},"Bridgestate Oracle")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Identity/DID"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/parami-foundation/parami-blockchain"},"Parami")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/litentry/litentry-parachain"},"Litentry")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/pallet-did"},"pallet-did")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/prasad-kumkar/dot-id"},"dot-id")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"IoT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/NodleCode/chain"},"Nodle")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DataHighway-DHX/node"},"MXC/DataHighway")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/peaqnetwork/peaq-network-node"},"peaq-network-node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Verifiable Claims"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/KILTprotocol/kilt-node"},"KILT")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/docknetwork/dock-substrate"},"Dock")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fennelLabs/Fennel-Protocol"},"Fennel Protocol")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Supply chain"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/digicatapult/dscp-node"},"DSCP Node")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Health care"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Music Industry"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Allfeat/Allfeat"},"Allfeat Network")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Data Availability"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/availproject/avail"},"Avail")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/melodot"},"Melodot")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Social Networking"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/frequency"},"Frequency")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/social-network/blockchain"},"Social Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-parachain"},"SubSocial")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ZeroDAO/ZeroDAO-node"},"ZeroDAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/myriadsocial/myriad-node"},"Myriad Node")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/randombishop/wika_etl"},"Wika Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LibertyDSNP/mrc"},"Project Liberty")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/listenofficial/listen-parachain"},"Listen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tribal-protocol/tribal_contract"},"Tribal Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rust-0x0/hex-space-protocol-substrate"},"Five Degrees on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/acuity-social/acuity-substrate"},"Acuity Social")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},"Private instant messenger that uses on-chain identity")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Governance/DAO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/aisland-dao/aisland-node/tree/main"},"Aisland Node")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate"},"Hashed Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sunshine-protocol/sunshine-bounty"},"Sunshine DAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NucleiStudio/governance-os"},"Governance OS")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/idavollnetwork/idavoll"},"Idavoll Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DoraFactory/Substrate-Moloch-V2"},"Substrate Moloch")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Qrucial/QRUCIAL-DAO"},"QRUCIAL-DAO")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sctllabs/societal-node"},"Societal")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/daos-org/daos"},"DAOs")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/amiyatulu/shivarthu/"},"Shivarthu")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/faterium"},"Faterium")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/decentration/apps"},"Supersig")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/genesis-dao-node"},"GenesisDAO")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dao-entrance/dao-entrance-node"},"DAO Entrance")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/liberland/liberland_substrate"},"Liberland")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/consul/consul"},"Consul")," - Open Government and E-Participation Web Software")),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Prediction Markets and Futarchy"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/zeitgeistpm/zeitgeist"},"Zeitgeist")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/XPredictMarket/NodePredict"},"X Predict Market")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Messaging"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/validitylabs/HOPR-PL-Substrate"},"HOPR")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chainify/nolik"},"Nolik")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Uke-Messaging/uke-pallet"},"Uke")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Belsoft-rs/diffychat-pallet"},"Diffy Chat")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"File Storage, Cloud"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/dappforce/subsocial-offchain"},"Subsocial-Offchain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playproject-io/datdot"},"DatDot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/crustio/crust"},"Crust Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rs-ipfs/offchain-ipfs-manual"},"offchain::ipfs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/canyon-network/canyon"},"Canyon Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cumulus2021/cess"},"CESS")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/cess-proving-system"},"CESS Proving Subsystem")," \u2754, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ideal-lab5/iris"},"Iris")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/CESSProject/fmd-cess"},"fmd-cess")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DanHenton/pocket-substrate/tree/ipfs-ocw"},"IPFS Frame V3")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/threefoldtech/tfchain"},"Threefold Chain")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Apron-Network/apron-node"},"Apron")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TDSoftware/substrate-ipfs"},"IPFS Utilities")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Name Service"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/xaya/substrate-names"},"Substrate Names")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hskang9/substrate-name-service"},"ENS on Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/pnsproject/pns-pallets"},"PNS-Pallets")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/HeisenbergLin22/Faceless_milestone2_delivery"},"Faceless")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ff13dfly/Anchor"},"Anchor")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Gaming"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bit-country/Bit-Country-Blockchain"},"Bit.country")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SubGame-Network/subgame-network"},"SubGame")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/playzero/subzero"},"subzero")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/web3gamesofficial/web3games-blockchain"},"Web3Games")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ajuna-network/Ajuna"},"Ajuna Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/cryptoviet/gafi"},"Gafi Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://gitlab.com/asylum-space/asylum-item-nft"},"Asylum")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/3Dpass/3DP"},"3DPass")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polketio/toearnfun_flutter_app"},"Polket")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Computation/AI"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/DeepBrainChain/DeepBrainChain-MainChain"},"DeepBrain Chain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/anudit/cerebrum"},"AI Infrastructure on Blockchain")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Enable specific use-cases"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/deep-ink-ventures/pallet_hookpoints"},"pallet-hookpoints")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/substrate-node-robonomics"},"Robonomics")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniversalDot/pallets"},"UniversalDOT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/evercity-chain"},"Evercity Sustainable Finance Protocol")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/fennelLabs/Fennel-Protocol"},"Fennel Protocol")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/logion-network/logion-node"},"logion")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"NFT"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/capsule-corp-ternoa/chain"},"ternoa")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/danforbes/pallet-nft"},"FRAME Pallet: NFTs for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/UniqueNetwork/unique-chain"},"Unique NFT Parachain")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DNFT-Team/dnft-substrate-node/tree/master/pallets"},"DNFT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rmrk-team/rmrk-substrate"},"RMRK-Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/nt-nft"},"NT-NFTs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/GreenLemonProtocol/dksap-polkadot"},"Green Lemon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/Basilisk-node"},"Basilisk")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Randomness"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/substrate/tree/randomness-beacon"},"DKG and Randomness Beacon")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/random-meat/drand-substrate-client"},"drand-substrate-client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Licensing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/anagolay/anagolay-chain"},"Anagolay Network")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Banking Integration"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/element36-io/ebics-java-service"},"FIAT on-off-ramp")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Crowdfunding"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ImbueNetwork/imbue"},"Imbue Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/zhangjiannan/QFgrant"},"Quadratic Funding pallet by Dora")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/OAK-Foundation/quadratic-funding-pallet/tree/master"},"Quadratic Funding pallet by OAK")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413"},"Minimum Anti-Collusion Infrastructure (MACI)"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Collection of Pallets"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/open-web3-stack/open-runtime-module-library"},"Substrate Open Runtime Module Library")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/warehouse"},"warehouse")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/InvArch/InvArch-Frames"},"InvArch FRAME Pallet Library")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Marketplaces"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/WowLabz/dot-marketplace-v2/tree/Phase3_Milestone3"},"Dot Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/hashed-io/hashed-substrate/tree/main/pallets/gated-marketplace"},"Gated Marketplace")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Popular-Coding/ventur"},"Ventur")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Carbon Credits"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/bitgreen/bitg-node"},"BitGreen")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/EvercityEcosystem/carbon-assets"},"Carbon Assets Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SequesterChain/pallets"},"Sequester Pallets")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"UTXO"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Off-Narrative-Labs/Tuxedo"},"Tuxedo")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Moonsong-Labs/moonkit"},"Moonkit")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-account-filter"},"Substrate Account Filter")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/opentensor/subtensor"},"Subtensor")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AdMetaNetwork/admeta"},"AdMeta")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/chocolatenetwork/chocolate-node"},"Chocolate Node")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/virto-network/virto-node"},"Virto Network")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/substrate-validator-set"},"Substrate Validator Set")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/DEIPworld/deip-node"},"DEIP")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debionetwork/debio-node"},"DeBio")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/mathwallet/MathChain"},"MathChain")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/encointer/encointer-node"},"encointer")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/grasslandnetwork/substrate_node"},"Grassland")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/rusty-crewmates/substrate-tutorials"},"Substrate-Tutorials")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Fair-Squares/fair-squares"},"Fair Squares")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/totem-tech/totem"},"Totem Live Accounting")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/herou/EscrowPallet"},"Escrow Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/NexTokenTech/TREX"},"TREX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/relationlabs/Relation-Graph"},"Relation Graph")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gertt/Invoice"},"Decentralized Invoice")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/redstone-network/redstone-node"},"Redstone Network")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/WunderbarNetwork/access-control"},"Access Control Pallet")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Omniverse-Web3-Labs/omniverse-swap/tree/web3-grant"},"Omniverse DLT")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/substrate-ismp"},"ISMP")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/xcmp_prototype_playground"},"XCMP")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/dhiway/cord"},"CORD Chain")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null},"Decentralized review/reputation system")))),(0,o.kt)("h3",{id:"host"},"Host"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Rust"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate"},"Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/cumulus"},"Cumulus")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"C++"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/kagome"},"Kagome")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/mayon"},"Mayon")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Go"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer"},"Gossamer")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Java"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/Fruzhin"},"Fruzhin")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/java-host-research"},"Java Host Research")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"AssemblyScript"),(0,o.kt)("td",{parentName:"tr",align:null}),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Light Client"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/smol-dot/smoldot"},"smoldot")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate-connect"},"Substrate Connect")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/eqlabs/polkadot-light-client"},"C++ Polkadot Light Client")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Testing"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/polkadot-conformance"},"Polkadot Conformance")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sigp/polkafuzz"},"Polkafuzz")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"network-maintenance-tools"},"Network Maintenance Tools"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Secure validator setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkachu/polkadot-validator"},"Polkadot Validation Node Ansible Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-validator-setup"},"W3F Polkadot Validator Setup")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Nexus2k/polkadot-ansible"},"polkadot-ansible")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"High availability setup"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/luguslabs/archipel"},"Archipel")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/protofire/polkadot-failover-mechanism"},"Polkadot Failover Mechanism")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Datagen-Project/Datagen-Substrate-Grant"},"Datagen")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/bright/substrate-raft"},"High Availability Validator Setup")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Load Balanced Endpoints"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/insight-w3f/terragrunt-polkadot"},"terragrunt-polkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sudoblockio/substrate-meta"},"Geometry Labs' Substrate Meta repo")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Deployment Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Blockdaemon/bpm-sdk"},"Polkadot Package Manager")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/akropolisio/polkahub-monorepo"},"PolkaHub")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/AvadoDServer/AVADO-DNP-Polkadot-custom"},"Avado")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-deployer"},"Polkadot Deployer")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/for-parity-with-love/unified-collator-node-deployment"},"Unified Collator Deployment")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator monitoring"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/one-t"},"ONE-T")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/subvt-backend"},"SubVT")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/SimplyVC/panic"},"P.A.N.I.C.")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/galacticcouncil/polkalert"},"Polkalert")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nodebreaker0-0/substrate/tree/prometheus_v0.3"},"B-Harvest")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakezone/nmonpolkadot"},"nmonpolkadot")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ironoa/polkadot-k8s-monitor"},"Polkadot-K8s-Monitor")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-watcher"},"Polkadot-Watcher")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/helikon-labs/polkadot-kusama-1kv-telegram-bot"},"1KV Telegram Bot")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator payout management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Colm3na/substrate-auto-payout"},"Substrate validator auto payout")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/polkadot-payouts"},"Polkadot Payouts")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emostov/staking-payouts"},"staking-payouts CLI")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/stakelink/substrate-payctl"},"Payctl")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/turboflakes/crunch"},"crunch")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Staking Miner"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/staking-miner-v2"},"Staking Miner v2")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Nominator Tools"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/miepsik/validators_selection"},"Validator Selection")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer"},"Polkanalyzer")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/filippoweb3/polkanalyzer-app"},"Polkanalyzer-app")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"signatures"},"Signatures"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SR25519"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/schnorrkel"},"rust")," \ud83d\udfe2(contains partial bindings for C, JavaScript, and Python), ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gautamdhameja/sr25519-dotnet"},".Net bindings")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(old)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/TerenceGe/sr25519-donna"},"C")," \u26aa",(0,o.kt)("em",{parentName:"td"},"(new)"),", ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/soramitsu-sr25519-crust"},"C/C++")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/usetech-llc/sr25519_dotnet"},"C#")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/go-schnorrkel"},"Go")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/debuggor/schnorrkel-java"},"java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/sr25519-bindings"},"PHP")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Signature Aggregation"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f/apk-proofs"},"apk-proofs")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Distributed key generation (DKG) or management"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/isislovecruft/frost-dalek"},"keygen.rs")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/w3f-grants-archive/sword"},"Secure Wallet Origin Distribution (SWORD)")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Validator HSMs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Zondax/buildroot-zondax"},"Zondax Remote Signer")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"MPC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/orochi-network/orochi-network.github.io"},"Orochi Network")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"consensus"},"Consensus"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoC"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/subspace/substrate"},"Spartan")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"PoW"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/client/consensus/pow"},"PoW consensus for Substrate")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/kulupu/kulupu/tree/master/pow"},"RandomX")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/substrate-developer-hub/recipes/tree/master/consensus/sha3pow"},"Sha3 PoW")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Block production"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/client/consensus/babe"},"BABE")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/client/consensus/aura"},"Aura")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Finality"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/substrate/tree/master/frame/grandpa"},"GRANDPA")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Cardinal-Cryptography/AlephBFT"},"AlephBFT")," \ud83d\udfe2"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Other"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/PureStake/nimbus"},"Nimbus: Upgradeable consensus framework")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"networking"},"Networking"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"SCALE Codec"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec"},"Rust")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/paritytech/parity-scale-codec-ts"},"TypeScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkascan/py-scale-codec"},"Python")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/ChainSafe/gossamer/tree/development/pkg/scale/"},"Golang Chainsafe")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.go"},"Golang Itering")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/MatthewDarnell/cScale"},"C")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-cpp"},"C++")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/polkadot-js/api"},"JavaScript")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/LimeChain/as-scale-codec"},"AssemblyScript")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/airalab/hs-web3/tree/master/packages/scale/src/Codec"},"Haskell")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkaj"},"Java")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/itering/scale.rb"},"Ruby")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/nbltrust/dart-scale-codec"},"Dart")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/tesseract-one/swift-scale-codec"},"Swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-swift"},"scale-codec-swift")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/sublabdev/scale-codec-kotlin"},"scale-codec-kotlin")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/php-scale-codec"},"PHP")," \ud83d\udfe1, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/soramitsu/scale-codec-js-library"},"JavaScript by Soramitsu")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/gmajor-encrypt/scale-codec-comparator"},"Scale Codec Comparator")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/darwinia-network/darwinia-messages-sol/blob/master/contracts/utils/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Darwinia")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/Snowfork/snowbridge/blob/main/core/packages/contracts/contracts/ScaleCodec.sol"},"ScaleCodec.sol by Snowfork")," \ud83d\udfe2, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/arijitAD/dotscale"},"Dotscale")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Networking Framework"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/libp2p/libp2p"},"libp2p")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"DHT Crawler"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/atredispartners/dht-crawler-polkadot"},"Go")," \u26aa, ",(0,o.kt)("a",{parentName:"td",href:"https://github.com/emeraldpay/polkabot"},"Kotlin")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"RPC Tor-like access"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/Evanesco-Labs/WhiteNoise.rs"},"WhiteNoise")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h3",{id:"primitives"},"Primitives"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Components"),(0,o.kt)("th",{parentName:"tr",align:null},"Existing projects"),(0,o.kt)("th",{parentName:"tr",align:null},"Potentially interesting projects"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Storage"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/frisitano/merkle-tree-db"},"Merkle Tree DB")," \u26aa"),(0,o.kt)("td",{parentName:"tr",align:null})),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"Merkle Proofs"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("a",{parentName:"td",href:"https://github.com/polytope-labs/solidity-merkle-trees"},"Solidity Trie Verifier")," \ud83d\udfe1"),(0,o.kt)("td",{parentName:"tr",align:null})))),(0,o.kt)("h2",{id:"contributing"},"Contributing"),(0,o.kt)("p",null,"Pull requests, issues, or other contributions from the community are encouraged! You can not only\nadd specific projects, but also potentially interesting fields/areas which are currently missing in\nthe tech stack."),(0,o.kt)("p",null,"\u2757 All technologies listed above need to be open-source. Ideally, the links\nlead directly to the code."),(0,o.kt)("p",null,(0,o.kt)("em",{parentName:"p"},"Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you\nmay ",(0,o.kt)("a",{parentName:"em",href:"https://github.com/join"},"sign up for free"),".")))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4130007.44841823.js b/assets/js/f4130007.44841823.js deleted file mode 100644 index 1520796be27b..000000000000 --- a/assets/js/f4130007.44841823.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2665],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function o(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),p=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(i.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,d=s(t,["components","mdxType","originalType","parentName"]),m=p(a),k=r,h=m["".concat(i,".").concat(k)]||m[k]||u[k]||l;return a?n.createElement(h,o(o({ref:e},d),{},{components:a})):n.createElement(h,o({ref:e},d))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,o=new Array(l);o[0]=k;var s={};for(var i in e)hasOwnProperty.call(e,i)&&(s[i]=e[i]);s.originalType=t,s[m]="string"==typeof t?t:r,o[1]=s;for(var p=2;p{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>p,toc:()=>m});var n=a(87462),r=a(63366),l=(a(67294),a(3905)),o=["components"],s={id:"wallets-and-extensions",title:"Wallets and Extensions",sidebar_label:"Wallets and Extensions",description:"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.",keywords:["wallets","account","signer","supported wallets","balance","token"],slug:"../wallets-and-extensions"},i=void 0,p={unversionedId:"general/wallets-and-extensions",id:"general/wallets-and-extensions",title:"Wallets and Extensions",description:"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.",source:"@site/../docs/general/wallets-and-extensions.md",sourceDirName:"general",slug:"/wallets-and-extensions",permalink:"/docs/wallets-and-extensions",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/wallets-and-extensions.md",tags:[],version:"current",lastUpdatedBy:"Sid",lastUpdatedAt:1701165096,formattedLastUpdatedAt:"Nov 28, 2023",frontMatter:{id:"wallets-and-extensions",title:"Wallets and Extensions",sidebar_label:"Wallets and Extensions",description:"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.",keywords:["wallets","account","signer","supported wallets","balance","token"],slug:"../wallets-and-extensions"},sidebar:"docs",previous:{title:"Wallets",permalink:"/docs/wallets-index"},next:{title:"Ledger",permalink:"/docs/ledger"}},d={},m=[{value:"Overview",id:"overview",level:2},{value:"Browser Extensions",id:"browser-extensions",level:3},{value:"Mobile Wallets",id:"mobile-wallets",level:3},{value:"Web Wallets",id:"web-wallets",level:3},{value:"Enkrypt",id:"enkrypt",level:2},{value:"Fearless Wallet",id:"fearless-wallet",level:2},{value:"Nova Wallet",id:"nova-wallet",level:2},{value:"PolkaGate",id:"polkagate",level:2},{value:"Polkawallet",id:"polkawallet",level:2},{value:"SubWallet",id:"subwallet",level:2},{value:"Talisman",id:"talisman",level:2}],u={toc:m},k="wrapper";function h(t){var e=t.components,a=(0,r.Z)(t,o);return(0,l.kt)(k,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("p",{parentName:"admonition"},"Using your due diligence in researching and using the wallets listed below would be best. For any\nissues related to these wallet, reach out to their support teams directly.")),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Explore Polkadot with a secure and user-friendly wallets listed on the\n",(0,l.kt)("a",{parentName:"p",href:"https://www.polkadot.network/ecosystem/wallets/"},"Polkadot website"),".")),(0,l.kt)("p",null,"If you are new to blockchain technology, generally a typical blockchain network account is a\npublic-private key pair. Access to a private key gives full access to all the allowed transactions\non that blockchain account. It is essential to keep the private key secure."),(0,l.kt)("p",null,"Typically, the account keys are either stored and accessed through a browser extension or a\nsmartphone app (which are considered as a hot wallets as they are online), or an air-gapped device\nor a hardware wallet (which are considered as cold wallets as they are offline)."),(0,l.kt)("admonition",{title:"Not your keys, not your tokens!",type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"With ",(0,l.kt)("strong",{parentName:"p"},"custodial wallets")," (like accounts in centralized exchanges), another party controls your\nprivate keys. Private keys are used to access funds in your account, so you trust the exchange that\nyour key will always be given to you whenever you need it. With ",(0,l.kt)("strong",{parentName:"p"},"non-custodial wallets"),", only you\ncan access your account's private key.")),(0,l.kt)("p",null,"To realize the multichain vision of Polkadot,\nit is important to have non-custodial wallets that make it convenient to interact with multiple\nblockchains in Polkadot ecosystem. Below there\nis a list of all non-custodial treasury-funded wallets developed by the community."),(0,l.kt)("h2",{id:"overview"},"Overview"),(0,l.kt)("h3",{id:"browser-extensions"},"Browser Extensions"),(0,l.kt)("p",null,"At a bare minimum, browser extension wallets act as key storage and management solution, allowing\nyou to use your accounts with apps in the Web3 space. The wallets listed below offer functionality\nbeyond that, allowing the featured actions to be performed directly through the extension. Some of\nthem also allow interaction with air-gapped wallets and hardware devices."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Wallet"),(0,l.kt)("th",{parentName:"tr",align:null},"Browsers"),(0,l.kt)("th",{parentName:"tr",align:null},"Staking and Nomination Pools"),(0,l.kt)("th",{parentName:"tr",align:null},"NFTs"),(0,l.kt)("th",{parentName:"tr",align:null},"Crowdloans"),(0,l.kt)("th",{parentName:"tr",align:null},"Ledger support"),(0,l.kt)("th",{parentName:"tr",align:null},"Governance"),(0,l.kt)("th",{parentName:"tr",align:null},"Other features"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.enkrypt.com/?mtm_campaign=Polkadot%20Wiki%20-%20Supported%20Wallets"},"Enkrypt")),(0,l.kt)("td",{parentName:"tr",align:null},"Brave, Chrome, Edge, Firefox, Opera, Safari"),(0,l.kt)("td",{parentName:"tr",align:null},"No, No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#enkrypt"},"Enkrypt Features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://polkagate.xyz/"},"PolkaGate")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"},"Brave"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"},"Chrome"),", ",(0,l.kt)("a",{parentName:"td",href:"https://addons.mozilla.org/en-US/firefox/addon/polkagate"},"Firefox"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"},"Edge")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#polkagate"},"PolkaGate features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://subwallet.app/"},"SubWallet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/subwallet-polkadot-extens/onhogfjeacnfoofkfgppdlbmlmnplgbn"},"Brave"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/subwallet-polkadot-extens/onhogfjeacnfoofkfgppdlbmlmnplgbn"},"Chrome"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/subwallet-polkadot-extens/onhogfjeacnfoofkfgppdlbmlmnplgbn"},"Edge"),", ",(0,l.kt)("a",{parentName:"td",href:"https://addons.mozilla.org/en-US/firefox/addon/subwallet/"},"Firefox")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#subwallet"},"SubWallet features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.talisman.xyz/"},"Talisman")),(0,l.kt)("td",{parentName:"tr",align:null},"Brave, Chrome, Edge, Firefox"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#talisman"},"Talisman features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://fearlesswallet.io/"},"Fearless Wallet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/fearless-wallet/nhlnehondigmgckngjomcpcefcdplmgc"},"Brave"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/fearless-wallet/nhlnehondigmgckngjomcpcefcdplmgc"},"Chrome")),(0,l.kt)("td",{parentName:"tr",align:null},"No, No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#fearless-wallet"},"Fearless Wallet Features"))))),(0,l.kt)("admonition",{title:"Ledger support only for chromium-based browsers",type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Currently, all browser extensions support Ledger devices only on chromium-based browsers (i.e.\nChrome, Brave, Edge, Opera).")),(0,l.kt)("h3",{id:"mobile-wallets"},"Mobile Wallets"),(0,l.kt)("p",null,"Mobile wallets are fully packaged apps that allow all the featured actions, as well as the storage\nand management of your accounts, through the mobile app. Unlike browser extensions, mobile wallets\nusually can\u2019t connect to third-party web apps. Some mobile wallets provide support for hardware\nwallets through Bluetooth connectivity."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Wallet"),(0,l.kt)("th",{parentName:"tr",align:null},"Platforms"),(0,l.kt)("th",{parentName:"tr",align:null},"Staking and Nomination Pools"),(0,l.kt)("th",{parentName:"tr",align:null},"NFTs"),(0,l.kt)("th",{parentName:"tr",align:null},"Crowdloans"),(0,l.kt)("th",{parentName:"tr",align:null},"Ledger support"),(0,l.kt)("th",{parentName:"tr",align:null},"Governance"),(0,l.kt)("th",{parentName:"tr",align:null},"Other features"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://fearlesswallet.io/"},"Fearless Wallet")),(0,l.kt)("td",{parentName:"tr",align:null},"iOS, Android"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#fearless-wallet"},"Fearless Wallet Features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://novawallet.io/"},"Nova Wallet"),"*"),(0,l.kt)("td",{parentName:"tr",align:null},"iOS, Android"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#nova-wallet"},"Nova Wallet features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://polkawallet.io/"},"Polkawallet")),(0,l.kt)("td",{parentName:"tr",align:null},"iOS, Android"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#polkawallet"},"Polkawallet features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://subwallet.app/"},"SubWallet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://apps.apple.com/us/app/subwallet-polkadot-wallet/id1633050285"},"iOS"),", ",(0,l.kt)("a",{parentName:"td",href:"bit.ly/3DE2Dlg"},"Android")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#subwallet"},"SubWallet features"))))),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("mdxAdmonitionTitle",{parentName:"admonition"},"*","Note about Nova wallet"),(0,l.kt)("p",{parentName:"admonition"},"There's ",(0,l.kt)("strong",{parentName:"p"},"another")," Nova wallet that is ",(0,l.kt)("strong",{parentName:"p"},"unrelated")," to the Polkadot ecosystem. Users are advised\nto ensure that they use the correct Nova wallet by downloading the app from their official website:\n",(0,l.kt)("a",{parentName:"p",href:"https://novawallet.io/"},"https://novawallet.io/"),". Before creating or restoring accounts , it is wise\nto double-check the wallet website URLs through official channels (most projects have it listed on\ntheir official social media handles).")),(0,l.kt)("h3",{id:"web-wallets"},"Web Wallets"),(0,l.kt)("p",null,"Web Wallets are the all-in-one solution to accessing the Web3 space, allowing you to sign transactions on the web without having to download and install any browser extension and mobile app. With all of the features of mobile wallets, you can also connect to and interact with decentralized web apps."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Wallet"),(0,l.kt)("th",{parentName:"tr",align:null},"Platforms"),(0,l.kt)("th",{parentName:"tr",align:null},"Staking and Nomination Pools"),(0,l.kt)("th",{parentName:"tr",align:null},"Liquid Staking"),(0,l.kt)("th",{parentName:"tr",align:null},"NFTs"),(0,l.kt)("th",{parentName:"tr",align:null},"Crowdloans"),(0,l.kt)("th",{parentName:"tr",align:null},"Ledger support"),(0,l.kt)("th",{parentName:"tr",align:null},"Governance"),(0,l.kt)("th",{parentName:"tr",align:null},"Other features"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://web.subwallet.app/"},"SubWallet")),(0,l.kt)("td",{parentName:"tr",align:null},"Any web browsers"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes, Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#subwallet"},"SubWallet features"))))),(0,l.kt)("p",null,"::: "),(0,l.kt)("h2",{id:"enkrypt"},"Enkrypt"),(0,l.kt)("p",null,"A multichain crypto wallet - Bitcoin, Ethereum, Polkadot, Kusama and a few parachains.\nNon-custodial, private, hardware wallet support (Ledger and Trezor). Private and open source. Hold,\nsend, and receive tokens and NFTs. Swap tokens and bridge assets between chains. Manage multiple\naccounts on multiple networks. Connect to web3 apps. Recipient of a development grant from Web3\nFoundation."),(0,l.kt)("h2",{id:"fearless-wallet"},"Fearless Wallet"),(0,l.kt)("p",null,"The Fearless DeFi Wallet for the Future. Simply, intuitively, and fearlessly interact with\n",(0,l.kt)("a",{parentName:"p",href:"/docs/web3-and-polkadot"},"Web3"),". Currently supports Staking, Crowdloans, Parachain Accounts,\nNomination Pools Native Staking, dApp Signer on desktop through your mobile phone (experimental),\nChromium-based browser extension. Safety features such as Scam Address Warning and Network Failure\nWarnings help fearlessly navigate ",(0,l.kt)("a",{parentName:"p",href:"/docs/web3-and-polkadot"},"web3"),". Formerly funded and supported by\nKusama Treasury [",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/23"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/34"},"2"),", ",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/74"},"3"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/102"},"4"),", ",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/178"},"5"),"],\nand the SORA community [",(0,l.kt)("a",{parentName:"p",href:"https://sora.subscan.io/referenda/193?tab=votes"},"1"),"], developed with <3 by\nSORAMITSU. Stay Fearless!"),(0,l.kt)("h2",{id:"nova-wallet"},"Nova Wallet"),(0,l.kt)("p",null,"A user-friendly wallet for the Polkadot & Kusama ecosystems, providing a smooth web3 experience on\nboth iOS and Android. Nova Wallet supports ",(0,l.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov"),"\n(including agile delegations), Governance v1 (including support for parachain governance), Staking,\nNFT management, XCM Transfers, Parity Signer & Ledger Support, DApp Support with Polkadot JS and\nMetamask/EVM Integration and crowdloans. Nova Wallet received funding from Kusama Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/122"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/158"},"2"),"], as well as funding from the Polkadot Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/motion/314"},"1"),"]."),(0,l.kt)("h2",{id:"polkagate"},"PolkaGate"),(0,l.kt)("p",null,"PolkaGate extension is a user-friendly and feature-rich wallet/extension, supported by the Kusama\nTreasury [",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/205"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/referenda/124"},"2"),"]. It provides a diverse range of functionalities\nto enhance your experience, such as proxy management, open governance, pool staking management, spam\naddress warning, support for address-only accounts, crowdloans, account export/import/derivation,\nledger support, parachain accounts, phishing website detection, QR account import, solo staking,\nremote node selection, fund transfers, balance viewing in both cryptocurrency and USD, transaction\nhistory viewing, and the ability to generate QR codes for addresses."),(0,l.kt)("h2",{id:"polkawallet"},"Polkawallet"),(0,l.kt)("p",null,"Polkawallet provides cross-chain asset one-stop management, convenient staking, governance, and\nmultiple DeFi services; the private key is self-owned. Polkawallet received funding from Kusama\nTreasury [",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/32"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/41"},"2"),"]."),(0,l.kt)("h2",{id:"subwallet"},"SubWallet"),(0,l.kt)("p",null,"A non-custodial Polkadot, Substrate & Ethereum wallet. Track, send, receive, and monitor multi-chain\nassets on 150+ networks. Import account with seed phrase, private key, QR code, and JSON file.\nImport token & NFT, attach read-only account. XCM Transfer, NFT Management, Parity Signer & Ledger\nsupport, light clients support, EVM DApp support, MetaMask compatibility, custom endpoints, fiat\non-ramp, phishing detection, transaction history. SubWallet received funding from Polkadot Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/138"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/162"},"2"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/218"},"3"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/272"},"4"),"]."),(0,l.kt)("h2",{id:"talisman"},"Talisman"),(0,l.kt)("p",null,"A better way to explore Web3. Keep your assets safe, manage your portfolio and explore Polkadot and\nEthereum apps with Talisman. Interact with Web3 apps, store your favourite crypto assets and manage\nyour accounts on over 150+ Substrate and EVM networks. NFT Management, ledger Support, fiat On-ramp,\nportfolio tracking. Talisman received funding from Polkadot Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/148"},"1"),"]."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f4130007.e0e20395.js b/assets/js/f4130007.e0e20395.js new file mode 100644 index 000000000000..50ebf5d9adfd --- /dev/null +++ b/assets/js/f4130007.e0e20395.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2665],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function l(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function o(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var i=n.createContext({}),p=function(t){var e=n.useContext(i),a=e;return t&&(a="function"==typeof t?t(e):o(o({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(i.Provider,{value:e},t.children)},m="mdxType",u={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},k=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,l=t.originalType,i=t.parentName,d=s(t,["components","mdxType","originalType","parentName"]),m=p(a),k=r,h=m["".concat(i,".").concat(k)]||m[k]||u[k]||l;return a?n.createElement(h,o(o({ref:e},d),{},{components:a})):n.createElement(h,o({ref:e},d))}));function h(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var l=a.length,o=new Array(l);o[0]=k;var s={};for(var i in e)hasOwnProperty.call(e,i)&&(s[i]=e[i]);s.originalType=t,s[m]="string"==typeof t?t:r,o[1]=s;for(var p=2;p{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>i,default:()=>h,frontMatter:()=>s,metadata:()=>p,toc:()=>m});var n=a(87462),r=a(63366),l=(a(67294),a(3905)),o=["components"],s={id:"wallets-and-extensions",title:"Wallets and Extensions",sidebar_label:"Wallets and Extensions",description:"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.",keywords:["wallets","account","signer","supported wallets","balance","token"],slug:"../wallets-and-extensions"},i=void 0,p={unversionedId:"general/wallets-and-extensions",id:"general/wallets-and-extensions",title:"Wallets and Extensions",description:"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.",source:"@site/../docs/general/wallets-and-extensions.md",sourceDirName:"general",slug:"/wallets-and-extensions",permalink:"/docs/wallets-and-extensions",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/wallets-and-extensions.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1701684484,formattedLastUpdatedAt:"Dec 4, 2023",frontMatter:{id:"wallets-and-extensions",title:"Wallets and Extensions",sidebar_label:"Wallets and Extensions",description:"An Overview of Wallets and Browser Extensions in the Polkadot Ecosystem.",keywords:["wallets","account","signer","supported wallets","balance","token"],slug:"../wallets-and-extensions"},sidebar:"docs",previous:{title:"Wallets",permalink:"/docs/wallets-index"},next:{title:"Ledger",permalink:"/docs/ledger"}},d={},m=[{value:"Overview",id:"overview",level:2},{value:"Browser Extensions",id:"browser-extensions",level:3},{value:"Mobile Wallets",id:"mobile-wallets",level:3},{value:"Web Wallets",id:"web-wallets",level:3},{value:"Enkrypt",id:"enkrypt",level:2},{value:"Fearless Wallet",id:"fearless-wallet",level:2},{value:"Nova Wallet",id:"nova-wallet",level:2},{value:"PolkaGate",id:"polkagate",level:2},{value:"Polkawallet",id:"polkawallet",level:2},{value:"SubWallet",id:"subwallet",level:2},{value:"Talisman",id:"talisman",level:2}],u={toc:m},k="wrapper";function h(t){var e=t.components,a=(0,r.Z)(t,o);return(0,l.kt)(k,(0,n.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("p",{parentName:"admonition"},"Using your due diligence in researching and using the wallets listed below would be best. For any\nissues related to these wallet, reach out to their support teams directly.")),(0,l.kt)("admonition",{type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Explore Polkadot with a secure and user-friendly wallets listed on the\n",(0,l.kt)("a",{parentName:"p",href:"https://www.polkadot.network/ecosystem/wallets/"},"Polkadot website"),".")),(0,l.kt)("p",null,"If you are new to blockchain technology, generally a typical blockchain network account is a\npublic-private key pair. Access to a private key gives full access to all the allowed transactions\non that blockchain account. It is essential to keep the private key secure."),(0,l.kt)("p",null,"Typically, the account keys are either stored and accessed through a browser extension or a\nsmartphone app (which are considered as a hot wallets as they are online), or an air-gapped device\nor a hardware wallet (which are considered as cold wallets as they are offline)."),(0,l.kt)("admonition",{title:"Not your keys, not your tokens!",type:"tip"},(0,l.kt)("p",{parentName:"admonition"},"With ",(0,l.kt)("strong",{parentName:"p"},"custodial wallets")," (like accounts in centralized exchanges), another party controls your\nprivate keys. Private keys are used to access funds in your account, so you trust the exchange that\nyour key will always be given to you whenever you need it. With ",(0,l.kt)("strong",{parentName:"p"},"non-custodial wallets"),", only you\ncan access your account's private key.")),(0,l.kt)("p",null,"To realize the multichain vision of Polkadot,\nit is important to have non-custodial wallets that make it convenient to interact with multiple\nblockchains in Polkadot ecosystem. Below there\nis a list of all non-custodial treasury-funded wallets developed by the community."),(0,l.kt)("h2",{id:"overview"},"Overview"),(0,l.kt)("h3",{id:"browser-extensions"},"Browser Extensions"),(0,l.kt)("p",null,"At a bare minimum, browser extension wallets act as key storage and management solution, allowing\nyou to use your accounts with apps in the Web3 space. The wallets listed below offer functionality\nbeyond that, allowing the featured actions to be performed directly through the extension. Some of\nthem also allow interaction with air-gapped wallets and hardware devices."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Wallet"),(0,l.kt)("th",{parentName:"tr",align:null},"Browsers"),(0,l.kt)("th",{parentName:"tr",align:null},"Staking and Nomination Pools"),(0,l.kt)("th",{parentName:"tr",align:null},"NFTs"),(0,l.kt)("th",{parentName:"tr",align:null},"Crowdloans"),(0,l.kt)("th",{parentName:"tr",align:null},"Ledger support"),(0,l.kt)("th",{parentName:"tr",align:null},"Governance"),(0,l.kt)("th",{parentName:"tr",align:null},"Other features"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.enkrypt.com/?mtm_campaign=Polkadot%20Wiki%20-%20Supported%20Wallets"},"Enkrypt")),(0,l.kt)("td",{parentName:"tr",align:null},"Brave, Chrome, Edge, Firefox, Opera, Safari"),(0,l.kt)("td",{parentName:"tr",align:null},"No, No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#enkrypt"},"Enkrypt Features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://polkagate.xyz/"},"PolkaGate")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"},"Brave"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"},"Chrome"),", ",(0,l.kt)("a",{parentName:"td",href:"https://addons.mozilla.org/en-US/firefox/addon/polkagate"},"Firefox"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/polkagate-the-gateway-to/ginchbkmljhldofnbjabmeophlhdldgp"},"Edge")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#polkagate"},"PolkaGate features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://subwallet.app/"},"SubWallet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/subwallet-polkadot-extens/onhogfjeacnfoofkfgppdlbmlmnplgbn"},"Brave"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/subwallet-polkadot-extens/onhogfjeacnfoofkfgppdlbmlmnplgbn"},"Chrome"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/subwallet-polkadot-extens/onhogfjeacnfoofkfgppdlbmlmnplgbn"},"Edge"),", ",(0,l.kt)("a",{parentName:"td",href:"https://addons.mozilla.org/en-US/firefox/addon/subwallet/"},"Firefox")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#subwallet"},"SubWallet features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://www.talisman.xyz/"},"Talisman")),(0,l.kt)("td",{parentName:"tr",align:null},"Brave, Chrome, Edge, Firefox"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#talisman"},"Talisman features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://fearlesswallet.io/"},"Fearless Wallet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/fearless-wallet/nhlnehondigmgckngjomcpcefcdplmgc"},"Brave"),", ",(0,l.kt)("a",{parentName:"td",href:"https://chrome.google.com/webstore/detail/fearless-wallet/nhlnehondigmgckngjomcpcefcdplmgc"},"Chrome")),(0,l.kt)("td",{parentName:"tr",align:null},"No, No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#fearless-wallet"},"Fearless Wallet Features"))))),(0,l.kt)("admonition",{title:"Ledger support only for chromium-based browsers",type:"info"},(0,l.kt)("p",{parentName:"admonition"},"Currently, all browser extensions support Ledger devices only on chromium-based browsers (i.e.\nChrome, Brave, Edge, Opera).")),(0,l.kt)("h3",{id:"mobile-wallets"},"Mobile Wallets"),(0,l.kt)("p",null,"Mobile wallets are fully packaged apps that allow all the featured actions, as well as the storage\nand management of your accounts, through the mobile app. Unlike browser extensions, mobile wallets\nusually can\u2019t connect to third-party web apps. Some mobile wallets provide support for hardware\nwallets through Bluetooth connectivity."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Wallet"),(0,l.kt)("th",{parentName:"tr",align:null},"Platforms"),(0,l.kt)("th",{parentName:"tr",align:null},"Staking and Nomination Pools"),(0,l.kt)("th",{parentName:"tr",align:null},"NFTs"),(0,l.kt)("th",{parentName:"tr",align:null},"Crowdloans"),(0,l.kt)("th",{parentName:"tr",align:null},"Ledger support"),(0,l.kt)("th",{parentName:"tr",align:null},"Governance"),(0,l.kt)("th",{parentName:"tr",align:null},"Other features"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://fearlesswallet.io/"},"Fearless Wallet")),(0,l.kt)("td",{parentName:"tr",align:null},"iOS, Android"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#fearless-wallet"},"Fearless Wallet Features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://novawallet.io/"},"Nova Wallet"),"*"),(0,l.kt)("td",{parentName:"tr",align:null},"iOS, Android"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#nova-wallet"},"Nova Wallet features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://polkawallet.io/"},"Polkawallet")),(0,l.kt)("td",{parentName:"tr",align:null},"iOS, Android"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#polkawallet"},"Polkawallet features"))),(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://subwallet.app/"},"SubWallet")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://apps.apple.com/us/app/subwallet-polkadot-wallet/id1633050285"},"iOS"),", ",(0,l.kt)("a",{parentName:"td",href:"bit.ly/3DE2Dlg"},"Android")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes"),", ",(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#subwallet"},"SubWallet features"))))),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("mdxAdmonitionTitle",{parentName:"admonition"},"*","Note about Nova wallet"),(0,l.kt)("p",{parentName:"admonition"},"There's ",(0,l.kt)("strong",{parentName:"p"},"another")," Nova wallet that is ",(0,l.kt)("strong",{parentName:"p"},"unrelated")," to the Polkadot ecosystem. Users are advised\nto ensure that they use the correct Nova wallet by downloading the app from their official website:\n",(0,l.kt)("a",{parentName:"p",href:"https://novawallet.io/"},"https://novawallet.io/"),". Before creating or restoring accounts , it is wise\nto double-check the wallet website URLs through official channels (most projects have it listed on\ntheir official social media handles).")),(0,l.kt)("h3",{id:"web-wallets"},"Web Wallets"),(0,l.kt)("p",null,"Web Wallets are the all-in-one solution to accessing the Web3 space, allowing you to sign\ntransactions on the web without having to download and install any browser extension and mobile app.\nWith all of the features of mobile wallets, you can also connect to and interact with decentralized\nweb apps."),(0,l.kt)("table",null,(0,l.kt)("thead",{parentName:"table"},(0,l.kt)("tr",{parentName:"thead"},(0,l.kt)("th",{parentName:"tr",align:null},"Wallet"),(0,l.kt)("th",{parentName:"tr",align:null},"Platforms"),(0,l.kt)("th",{parentName:"tr",align:null},"Staking and Nomination Pools"),(0,l.kt)("th",{parentName:"tr",align:null},"Liquid Staking"),(0,l.kt)("th",{parentName:"tr",align:null},"NFTs"),(0,l.kt)("th",{parentName:"tr",align:null},"Crowdloans"),(0,l.kt)("th",{parentName:"tr",align:null},"Ledger support"),(0,l.kt)("th",{parentName:"tr",align:null},"Governance"),(0,l.kt)("th",{parentName:"tr",align:null},"Other features"))),(0,l.kt)("tbody",{parentName:"table"},(0,l.kt)("tr",{parentName:"tbody"},(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"https://web.subwallet.app/"},"SubWallet")),(0,l.kt)("td",{parentName:"tr",align:null},"Any web browsers"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes, Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("strong",{parentName:"td"},"Yes")),(0,l.kt)("td",{parentName:"tr",align:null},"No"),(0,l.kt)("td",{parentName:"tr",align:null},(0,l.kt)("a",{parentName:"td",href:"#subwallet"},"SubWallet features"))))),(0,l.kt)("p",null,":::"),(0,l.kt)("h2",{id:"enkrypt"},"Enkrypt"),(0,l.kt)("p",null,"A multichain crypto wallet - Bitcoin, Ethereum, Polkadot, Kusama and a few parachains.\nNon-custodial, private, hardware wallet support (Ledger and Trezor). Private and open source. Hold,\nsend, and receive tokens and NFTs. Swap tokens and bridge assets between chains. Manage multiple\naccounts on multiple networks. Connect to web3 apps. Recipient of a development grant from Web3\nFoundation."),(0,l.kt)("h2",{id:"fearless-wallet"},"Fearless Wallet"),(0,l.kt)("p",null,"The Fearless DeFi Wallet for the Future. Simply, intuitively, and fearlessly interact with\n",(0,l.kt)("a",{parentName:"p",href:"/docs/web3-and-polkadot"},"Web3"),". Currently supports Staking, Crowdloans, Parachain Accounts,\nNomination Pools Native Staking, dApp Signer on desktop through your mobile phone (experimental),\nChromium-based browser extension. Safety features such as Scam Address Warning and Network Failure\nWarnings help fearlessly navigate ",(0,l.kt)("a",{parentName:"p",href:"/docs/web3-and-polkadot"},"web3"),". Formerly funded and supported by\nKusama Treasury [",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/23"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/34"},"2"),", ",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/74"},"3"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/102"},"4"),", ",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/178"},"5"),"],\nand the SORA community [",(0,l.kt)("a",{parentName:"p",href:"https://sora.subscan.io/referenda/193?tab=votes"},"1"),"], developed with <3 by\nSORAMITSU. Stay Fearless!"),(0,l.kt)("h2",{id:"nova-wallet"},"Nova Wallet"),(0,l.kt)("p",null,"A user-friendly wallet for the Polkadot & Kusama ecosystems, providing a smooth web3 experience on\nboth iOS and Android. Nova Wallet supports ",(0,l.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov"),"\n(including agile delegations), Governance v1 (including support for parachain governance), Staking,\nNFT management, XCM Transfers, Parity Signer & Ledger Support, DApp Support with Polkadot JS and\nMetamask/EVM Integration and crowdloans. Nova Wallet received funding from Kusama Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/122"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/158"},"2"),"], as well as funding from the Polkadot Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/motion/314"},"1"),"]."),(0,l.kt)("h2",{id:"polkagate"},"PolkaGate"),(0,l.kt)("p",null,"PolkaGate extension is a user-friendly and feature-rich wallet/extension, supported by the Kusama\nTreasury [",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/205"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/referenda/124"},"2"),"]. It provides a diverse range of functionalities\nto enhance your experience, such as proxy management, open governance, pool staking management, spam\naddress warning, support for address-only accounts, crowdloans, account export/import/derivation,\nledger support, parachain accounts, phishing website detection, QR account import, solo staking,\nremote node selection, fund transfers, balance viewing in both cryptocurrency and USD, transaction\nhistory viewing, and the ability to generate QR codes for addresses."),(0,l.kt)("h2",{id:"polkawallet"},"Polkawallet"),(0,l.kt)("p",null,"Polkawallet provides cross-chain asset one-stop management, convenient staking, governance, and\nmultiple DeFi services; the private key is self-owned. Polkawallet received funding from Kusama\nTreasury [",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/32"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/treasury/41"},"2"),"]."),(0,l.kt)("h2",{id:"subwallet"},"SubWallet"),(0,l.kt)("p",null,"A non-custodial Polkadot, Substrate & Ethereum wallet. Track, send, receive, and monitor multi-chain\nassets on 150+ networks. Import account with seed phrase, private key, QR code, and JSON file.\nImport token & NFT, attach read-only account. XCM Transfer, NFT Management, Parity Signer & Ledger\nsupport, light clients support, EVM DApp support, MetaMask compatibility, custom endpoints, fiat\non-ramp, phishing detection, transaction history. SubWallet received funding from Polkadot Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/138"},"1"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/162"},"2"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/218"},"3"),",\n",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/272"},"4"),"]."),(0,l.kt)("h2",{id:"talisman"},"Talisman"),(0,l.kt)("p",null,"A better way to explore Web3. Keep your assets safe, manage your portfolio and explore Polkadot and\nEthereum apps with Talisman. Interact with Web3 apps, store your favourite crypto assets and manage\nyour accounts on over 150+ Substrate and EVM networks. NFT Management, ledger Support, fiat On-ramp,\nportfolio tracking. Talisman received funding from Polkadot Treasury\n[",(0,l.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/treasury/148"},"1"),"]."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.5f6038cc.js b/assets/js/runtime~main.f81fcebd.js similarity index 99% rename from assets/js/runtime~main.5f6038cc.js rename to assets/js/runtime~main.f81fcebd.js index e52c5ebc2c65..8ab42ecbdb73 100644 --- a/assets/js/runtime~main.5f6038cc.js +++ b/assets/js/runtime~main.f81fcebd.js @@ -1 +1 @@ -(()=>{"use strict";var e,d,f,b,a={},c={};function r(e){var d=c[e];if(void 0!==d)return d.exports;var f=c[e]={id:e,loaded:!1,exports:{}};return a[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=a,e=[],r.O=(d,f,b,a)=>{if(!f){var c=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[f,b,a]},r.n=e=>{var d=e&&e.__esModule?()=>e.default:()=>e;return r.d(d,{a:d}),d},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var c={};d=d||[null,f({}),f([]),f(f)];for(var t=2&b&&e;"object"==typeof t&&!~d.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((d=>c[d]=()=>e[d]));return c.default=()=>e,r.d(a,c),a},r.d=(e,d)=>{for(var f in d)r.o(d,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:d[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((d,f)=>(r.f[f](e,d),d)),[])),r.u=e=>"assets/js/"+({1:"f4fb6e9c",6:"408829bd",12:"1d6d4797",43:"74985360",53:"935f2afb",63:"9f319605",192:"f189ca9f",217:"c7a044bb",250:"f2717f8e",253:"28019dcd",315:"9528ac88",356:"797239df",502:"2d429218",537:"3829cf1d",601:"0c06bca3",609:"d569989b",657:"386bfe51",691:"145746f5",810:"23498fd5",1062:"f90fa732",1083:"899aadcc",1090:"cfd53ea4",1211:"73c3bebc",1213:"25f2bd2a",1239:"f359a251",1288:"fabebe44",1299:"74df6a22",1372:"b61f6dc7",1415:"4d76887f",1419:"f750c690",1446:"5136ee31",1451:"f44679e7",1486:"8dd7cee0",1494:"b21dd8a7",1506:"c977dfe8",1529:"ffe9c3c9",1585:"33b0bcab",1598:"7fbac68a",1678:"fa343ad1",1686:"f7191335",1703:"a5002e4a",1723:"0df78d26",1748:"987d08ef",1774:"9e6341e5",1786:"d9ef69a7",1825:"48074a08",1872:"78e1e977",1953:"1ed3671a",1957:"df154d69",1966:"f47489cd",1979:"0cb62240",2008:"4f031749",2042:"dd32e389",2078:"84f79495",2117:"21877fa5",2119:"6d5c9a28",2136:"ecb495b7",2169:"1646726c",2194:"6151e7ce",2242:"f3027c84",2248:"da9f79cb",2354:"493c7fdf",2399:"8d3a1bf8",2483:"d6d2b2d5",2507:"7c78c461",2508:"918b38b6",2552:"863c4753",2581:"967fa6d4",2609:"db0b42b0",2633:"e2e89062",2635:"0b632434",2665:"f4130007",2677:"ece9fdae",2704:"f3bde756",2712:"c2c6a3a6",2749:"b906f375",2754:"78868b16",2758:"9e3f6a8a",2791:"7d54ab5a",2884:"5d69d9d4",2909:"f4200fe5",2914:"2be0d940",2949:"2ea50c63",3066:"af40287e",3091:"b0a48d97",3132:"85afe03a",3262:"8a8a7d05",3330:"e31fc461",3332:"3497b7c6",3347:"32dac8d4",3348:"7ccc428f",3356:"f14351c1",3452:"3d1bf5db",3484:"5c90fc9b",3513:"41b7b3e8",3554:"d5909206",3599:"21899dd2",3620:"f137ce68",3665:"f1585bfb",3667:"b0cbc1d4",3668:"b225a2ce",3669:"dbbd9e76",3757:"bea375d6",3837:"beb5436b",3842:"ff6596ea",3933:"cda87995",3945:"f8518919",3978:"c8dd560b",4004:"ec3b6a32",4097:"eef3f1dd",4105:"702d5d94",4126:"5355b952",4143:"9f804621",4174:"a7c27f4d",4195:"c4f5d8e4",4355:"19ed4d4c",4363:"f2c21b54",4379:"c662f00a",4428:"991ceaa9",4445:"4d9b9869",4476:"f4003c83",4507:"a7b37b86",4537:"1ae2b102",4541:"3e56470e",4566:"694e7470",4620:"48d75399",4634:"54338ffb",4666:"f41c4e9d",4672:"43ee4f22",4825:"06ea9e61",4885:"2462cc91",4909:"f0855ff9",4916:"c1bbdb2a",5005:"320c8a05",5011:"7e9389ad",5013:"c41801b5",5103:"db039c7f",5157:"d27ae88d",5281:"31bd35e0",5422:"b3719d54",5483:"f7acb151",5492:"1882e65d",5526:"0c68fb82",5548:"d6b0148d",5651:"9e2042f5",5704:"b9b4ec9e",5989:"fbf58567",6104:"c7c5ba1a",6110:"b9c2850c",6140:"32e8da05",6220:"d01f45b7",6253:"a29dc56e",6255:"452ad91d",6277:"a62d9768",6286:"059e0573",6294:"bbba852d",6312:"dbc4065c",6325:"3002ebf4",6351:"25e068bc",6357:"43cda9e8",6373:"ceaa29cb",6482:"49816380",6585:"13b7bafa",6598:"ca9fe671",6673:"af3013e9",6687:"bf789d83",6689:"f2521980",6730:"fea93377",6776:"666ba125",6779:"c5d9e474",6827:"279fb1d6",6862:"60e73337",6918:"29a046f3",6920:"ccc1222e",6946:"4642ab5c",7022:"543610b9",7061:"feea648c",7202:"4a8eb552",7211:"f44ed8f8",7280:"fbea1897",7288:"6f1a81b8",7313:"db3d6c4d",7368:"bb8b1738",7388:"bd701914",7466:"a5b3561d",7485:"d3db551a",7633:"b940de31",7654:"c07c2447",7683:"cc44e8fd",7714:"591eca19",7778:"41871d53",7799:"8b670b2b",7823:"9e76b49d",7830:"15985664",7837:"0a3f0c9b",7858:"d6a97e7e",7908:"33bbe353",7918:"17896441",7920:"1a4e3797",7940:"ad762f86",7961:"a2800a5b",8034:"fecdcc34",8067:"69b97ecd",8080:"77a2b809",8115:"8247eba8",8138:"694672cd",8139:"386099fc",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",8618:"e4f3654b",8648:"71ed82b9",8702:"a74a59a0",8757:"83d4859f",8791:"ab138bf8",8831:"3bd77df4",8855:"d3a753cf",8860:"766a10e1",8866:"98a30fd8",8876:"31c99aa1",8901:"b48c599b",9062:"b38833d4",9071:"60738e36",9112:"a4b71220",9126:"924835c1",9217:"64c7e1cc",9226:"2f3b630e",9247:"8167490d",9276:"e344dd79",9315:"6d2ffbf3",9323:"131c7f55",9383:"a996ffc3",9478:"c7a2145e",9514:"1be78505",9548:"f95cee6f",9626:"32c9742a",9764:"dc776cbc",9779:"cd144357",9802:"1e15616a",9806:"51fbc2c9",9817:"14eb3368",9905:"b0cb055f",9993:"482bfb5c"}[e]||e)+"."+{1:"5563b650",6:"434ecd5d",12:"9f327517",43:"c0a56a28",53:"5aafbdb9",63:"4e5acc1b",192:"2ac0e4f9",217:"0102c432",250:"11cfd82d",253:"f6ddcd4b",315:"5a1a76c0",356:"220d0258",502:"3789530f",537:"2aa85719",601:"6806af70",609:"7ea29085",657:"f5513d14",691:"b9881d4c",810:"f27faee3",1062:"1ec7f32c",1083:"ac5baa92",1090:"26932415",1211:"ff50cb20",1213:"fee6731f",1239:"5f1e8cea",1288:"3482a532",1299:"7dda7011",1372:"44b4d9b2",1415:"68f49da4",1419:"3038c1cd",1426:"ad86846c",1446:"2265d608",1451:"22c866a1",1486:"1ebf6ec0",1494:"b887110e",1506:"05129df2",1529:"4b61b730",1585:"e1ec66d3",1598:"c2253902",1678:"b3589c09",1686:"ce7ae0b6",1703:"62855a55",1723:"86de2f74",1748:"9e2f8278",1774:"1c405b46",1786:"6a2d15ec",1825:"c534a999",1872:"342366ba",1953:"e4392cf0",1957:"d99c9092",1966:"70e3ff3a",1979:"6d282955",2008:"32bb0efa",2042:"3a48d582",2078:"17164550",2117:"0678ac75",2119:"9d6ae7af",2136:"dbf5ae7f",2169:"e3708fb5",2194:"24916601",2242:"324899e5",2248:"e0f22a01",2354:"25f75ea0",2399:"5956e920",2483:"47c545c2",2507:"1df35914",2508:"b4c49d3b",2552:"6484aed3",2581:"5db8f1b8",2609:"c959d9e0",2633:"848987e3",2635:"83c0a977",2665:"44841823",2677:"6a600a13",2704:"c83746c5",2712:"cbbda940",2749:"9a8b4034",2754:"82d7eade",2758:"7a12fb0f",2791:"aa5f5e37",2884:"3b223315",2909:"5449596f",2914:"ace15b40",2949:"7738f0eb",3066:"2d6ba895",3091:"159efec2",3132:"85a16703",3262:"0a270c78",3330:"f8f9d28c",3332:"59059207",3347:"cbbdbed4",3348:"32c50c47",3356:"6ee81354",3452:"4b65d125",3484:"e60b3258",3513:"21764f6d",3554:"6dc12371",3599:"e4d7458a",3620:"289ad75c",3665:"fb1d42b5",3667:"0fe4f934",3668:"b34aa74c",3669:"1d2e77f2",3757:"bc4ede3b",3837:"7aa1b869",3842:"0af4cdbd",3933:"389f37a7",3945:"3e413061",3978:"fb2a29f1",4004:"03a19c6b",4097:"e39eee97",4105:"5e24a8e9",4126:"09af1506",4143:"bd820e19",4174:"d074f050",4195:"e4766880",4325:"0e402584",4355:"2d9fa8b7",4363:"3d90cfe3",4379:"2d13fe17",4428:"60163a9e",4445:"75e079a4",4476:"8084df4b",4507:"637c2d37",4537:"f42e1d5f",4541:"978ae83c",4566:"ab0d60ad",4620:"1fa1d4bf",4634:"19df48c8",4666:"abf3d2b4",4672:"761ed7e4",4825:"36571112",4885:"68afaf38",4909:"3ae4713d",4916:"4b3a7688",4972:"2c004fcc",5005:"e778b0e5",5011:"98b0975e",5013:"00541302",5103:"3f268ad3",5157:"899f2267",5281:"6761b31b",5422:"8c5403fb",5483:"0f3442e0",5492:"7b10a32b",5526:"ad82cb49",5548:"e68f018e",5651:"701df6e6",5704:"70bd0ba6",5989:"0b1cb12b",6104:"8fc60e4e",6110:"0933da80",6140:"2e6779d0",6220:"8b344451",6253:"fe535738",6255:"8509f60e",6277:"0a2828ba",6286:"99a93e0b",6294:"b077023f",6312:"6138d82c",6316:"24db8bc9",6325:"28403763",6351:"70b88030",6357:"3733fc75",6373:"b8a24443",6482:"502a0b67",6495:"55b1c9f0",6585:"eac6bda7",6598:"5f760aa9",6673:"4c461033",6687:"65686742",6689:"c33382f4",6730:"f8bc8fb3",6776:"0a7bd7c5",6779:"78c472da",6827:"015f72c6",6862:"1ab7f2a1",6918:"61dac2e1",6920:"81374dcd",6945:"96d36007",6946:"62348511",7022:"fea426f7",7061:"89e327b0",7202:"df3bbe8c",7211:"bb01b652",7280:"47e41d56",7288:"995d5f1d",7313:"1a6ca03d",7368:"809981c2",7388:"53d48c10",7466:"6c38d255",7485:"a80a500b",7633:"b6985db0",7654:"3c0e212d",7683:"d3462a4d",7714:"33e8870f",7724:"2906ce0b",7778:"8da5b4da",7799:"88bce1a8",7823:"6c8a30f2",7830:"a2703576",7837:"e772d597",7858:"f9862ed2",7908:"0da511b2",7918:"916bc4d8",7920:"16d7152d",7940:"c803c73b",7961:"05b141e2",8034:"dca0d1af",8047:"ce7a90ea",8067:"af36ecc3",8080:"2510a4f8",8115:"2ebb714e",8138:"408bfd7d",8139:"3f5fcf2e",8178:"62f5ed0b",8191:"6ed11001",8215:"775d309b",8236:"63fecdb9",8270:"b4fdbcde",8355:"32239f13",8361:"7e27723e",8444:"d1bb4e6e",8609:"39674500",8618:"f5896277",8648:"67b7fff2",8702:"dea0f485",8757:"4f1ee155",8791:"c3d8d89d",8831:"ec7cac70",8855:"9d00af7a",8860:"48171767",8866:"4bdda915",8876:"a30609d2",8894:"ba661129",8901:"cc3ae736",9062:"49df5b13",9071:"064c4140",9112:"38b794db",9126:"f0242db8",9217:"697f935c",9226:"dff39ed5",9247:"3b67c817",9276:"5fcd6da7",9315:"d5006aa3",9323:"faa9a3ec",9383:"dec8392d",9447:"b68b6cbb",9478:"8b255378",9487:"48bf43fe",9514:"693800c6",9548:"f095b5ce",9626:"b43c6d01",9764:"012ce7bf",9779:"4c7efdf9",9802:"11684b0f",9806:"c3977137",9817:"5ba13cdf",9905:"3e1ce1bd",9993:"6a9e0649"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,d)=>Object.prototype.hasOwnProperty.call(e,d),b={},r.l=(e,d,f,a)=>{if(b[e])b[e].push(d);else{var c,t;if(void 0!==f)for(var o=document.getElementsByTagName("script"),n=0;n{c.onerror=c.onload=null,clearTimeout(u);var a=b[e];if(delete b[e],c.parentNode&&c.parentNode.removeChild(c),a&&a.forEach((e=>e(f))),d)return d(f)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),t&&document.head.appendChild(c)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={15985664:"7830",17896441:"7918",49816380:"6482",74985360:"43",f4fb6e9c:"1","408829bd":"6","1d6d4797":"12","935f2afb":"53","9f319605":"63",f189ca9f:"192",c7a044bb:"217",f2717f8e:"250","28019dcd":"253","9528ac88":"315","797239df":"356","2d429218":"502","3829cf1d":"537","0c06bca3":"601",d569989b:"609","386bfe51":"657","145746f5":"691","23498fd5":"810",f90fa732:"1062","899aadcc":"1083",cfd53ea4:"1090","73c3bebc":"1211","25f2bd2a":"1213",f359a251:"1239",fabebe44:"1288","74df6a22":"1299",b61f6dc7:"1372","4d76887f":"1415",f750c690:"1419","5136ee31":"1446",f44679e7:"1451","8dd7cee0":"1486",b21dd8a7:"1494",c977dfe8:"1506",ffe9c3c9:"1529","33b0bcab":"1585","7fbac68a":"1598",fa343ad1:"1678",f7191335:"1686",a5002e4a:"1703","0df78d26":"1723","987d08ef":"1748","9e6341e5":"1774",d9ef69a7:"1786","48074a08":"1825","78e1e977":"1872","1ed3671a":"1953",df154d69:"1957",f47489cd:"1966","0cb62240":"1979","4f031749":"2008",dd32e389:"2042","84f79495":"2078","21877fa5":"2117","6d5c9a28":"2119",ecb495b7:"2136","1646726c":"2169","6151e7ce":"2194",f3027c84:"2242",da9f79cb:"2248","493c7fdf":"2354","8d3a1bf8":"2399",d6d2b2d5:"2483","7c78c461":"2507","918b38b6":"2508","863c4753":"2552","967fa6d4":"2581",db0b42b0:"2609",e2e89062:"2633","0b632434":"2635",f4130007:"2665",ece9fdae:"2677",f3bde756:"2704",c2c6a3a6:"2712",b906f375:"2749","78868b16":"2754","9e3f6a8a":"2758","7d54ab5a":"2791","5d69d9d4":"2884",f4200fe5:"2909","2be0d940":"2914","2ea50c63":"2949",af40287e:"3066",b0a48d97:"3091","85afe03a":"3132","8a8a7d05":"3262",e31fc461:"3330","3497b7c6":"3332","32dac8d4":"3347","7ccc428f":"3348",f14351c1:"3356","3d1bf5db":"3452","5c90fc9b":"3484","41b7b3e8":"3513",d5909206:"3554","21899dd2":"3599",f137ce68:"3620",f1585bfb:"3665",b0cbc1d4:"3667",b225a2ce:"3668",dbbd9e76:"3669",bea375d6:"3757",beb5436b:"3837",ff6596ea:"3842",cda87995:"3933",f8518919:"3945",c8dd560b:"3978",ec3b6a32:"4004",eef3f1dd:"4097","702d5d94":"4105","5355b952":"4126","9f804621":"4143",a7c27f4d:"4174",c4f5d8e4:"4195","19ed4d4c":"4355",f2c21b54:"4363",c662f00a:"4379","991ceaa9":"4428","4d9b9869":"4445",f4003c83:"4476",a7b37b86:"4507","1ae2b102":"4537","3e56470e":"4541","694e7470":"4566","48d75399":"4620","54338ffb":"4634",f41c4e9d:"4666","43ee4f22":"4672","06ea9e61":"4825","2462cc91":"4885",f0855ff9:"4909",c1bbdb2a:"4916","320c8a05":"5005","7e9389ad":"5011",c41801b5:"5013",db039c7f:"5103",d27ae88d:"5157","31bd35e0":"5281",b3719d54:"5422",f7acb151:"5483","1882e65d":"5492","0c68fb82":"5526",d6b0148d:"5548","9e2042f5":"5651",b9b4ec9e:"5704",fbf58567:"5989",c7c5ba1a:"6104",b9c2850c:"6110","32e8da05":"6140",d01f45b7:"6220",a29dc56e:"6253","452ad91d":"6255",a62d9768:"6277","059e0573":"6286",bbba852d:"6294",dbc4065c:"6312","3002ebf4":"6325","25e068bc":"6351","43cda9e8":"6357",ceaa29cb:"6373","13b7bafa":"6585",ca9fe671:"6598",af3013e9:"6673",bf789d83:"6687",f2521980:"6689",fea93377:"6730","666ba125":"6776",c5d9e474:"6779","279fb1d6":"6827","60e73337":"6862","29a046f3":"6918",ccc1222e:"6920","4642ab5c":"6946","543610b9":"7022",feea648c:"7061","4a8eb552":"7202",f44ed8f8:"7211",fbea1897:"7280","6f1a81b8":"7288",db3d6c4d:"7313",bb8b1738:"7368",bd701914:"7388",a5b3561d:"7466",d3db551a:"7485",b940de31:"7633",c07c2447:"7654",cc44e8fd:"7683","591eca19":"7714","41871d53":"7778","8b670b2b":"7799","9e76b49d":"7823","0a3f0c9b":"7837",d6a97e7e:"7858","33bbe353":"7908","1a4e3797":"7920",ad762f86:"7940",a2800a5b:"7961",fecdcc34:"8034","69b97ecd":"8067","77a2b809":"8080","8247eba8":"8115","694672cd":"8138","386099fc":"8139","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609",e4f3654b:"8618","71ed82b9":"8648",a74a59a0:"8702","83d4859f":"8757",ab138bf8:"8791","3bd77df4":"8831",d3a753cf:"8855","766a10e1":"8860","98a30fd8":"8866","31c99aa1":"8876",b48c599b:"8901",b38833d4:"9062","60738e36":"9071",a4b71220:"9112","924835c1":"9126","64c7e1cc":"9217","2f3b630e":"9226","8167490d":"9247",e344dd79:"9276","6d2ffbf3":"9315","131c7f55":"9323",a996ffc3:"9383",c7a2145e:"9478","1be78505":"9514",f95cee6f:"9548","32c9742a":"9626",dc776cbc:"9764",cd144357:"9779","1e15616a":"9802","51fbc2c9":"9806","14eb3368":"9817",b0cb055f:"9905","482bfb5c":"9993"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(d,f)=>{var b=r.o(e,d)?e[d]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1303|532)$/.test(d))e[d]=0;else{var a=new Promise(((f,a)=>b=e[d]=[f,a]));f.push(b[2]=a);var c=r.p+r.u(d),t=new Error;r.l(c,(f=>{if(r.o(e,d)&&(0!==(b=e[d])&&(e[d]=void 0),b)){var a=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+d+" failed.\n("+a+": "+c+")",t.name="ChunkLoadError",t.type=a,t.request=c,b[1](t)}}),"chunk-"+d,d)}},r.O.j=d=>0===e[d];var d=(d,f)=>{var b,a,[c,t,o]=f,n=0;if(c.some((d=>0!==e[d]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(d&&d(f);n{"use strict";var e,d,f,b,a={},c={};function r(e){var d=c[e];if(void 0!==d)return d.exports;var f=c[e]={id:e,loaded:!1,exports:{}};return a[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=a,e=[],r.O=(d,f,b,a)=>{if(!f){var c=1/0;for(i=0;i=a)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,a0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[f,b,a]},r.n=e=>{var d=e&&e.__esModule?()=>e.default:()=>e;return r.d(d,{a:d}),d},f=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,b){if(1&b&&(e=this(e)),8&b)return e;if("object"==typeof e&&e){if(4&b&&e.__esModule)return e;if(16&b&&"function"==typeof e.then)return e}var a=Object.create(null);r.r(a);var c={};d=d||[null,f({}),f([]),f(f)];for(var t=2&b&&e;"object"==typeof t&&!~d.indexOf(t);t=f(t))Object.getOwnPropertyNames(t).forEach((d=>c[d]=()=>e[d]));return c.default=()=>e,r.d(a,c),a},r.d=(e,d)=>{for(var f in d)r.o(d,f)&&!r.o(e,f)&&Object.defineProperty(e,f,{enumerable:!0,get:d[f]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((d,f)=>(r.f[f](e,d),d)),[])),r.u=e=>"assets/js/"+({1:"f4fb6e9c",6:"408829bd",12:"1d6d4797",43:"74985360",53:"935f2afb",63:"9f319605",192:"f189ca9f",217:"c7a044bb",250:"f2717f8e",253:"28019dcd",315:"9528ac88",356:"797239df",502:"2d429218",537:"3829cf1d",601:"0c06bca3",609:"d569989b",657:"386bfe51",691:"145746f5",810:"23498fd5",1062:"f90fa732",1083:"899aadcc",1090:"cfd53ea4",1211:"73c3bebc",1213:"25f2bd2a",1239:"f359a251",1288:"fabebe44",1299:"74df6a22",1372:"b61f6dc7",1415:"4d76887f",1419:"f750c690",1446:"5136ee31",1451:"f44679e7",1486:"8dd7cee0",1494:"b21dd8a7",1506:"c977dfe8",1529:"ffe9c3c9",1585:"33b0bcab",1598:"7fbac68a",1678:"fa343ad1",1686:"f7191335",1703:"a5002e4a",1723:"0df78d26",1748:"987d08ef",1774:"9e6341e5",1786:"d9ef69a7",1825:"48074a08",1872:"78e1e977",1953:"1ed3671a",1957:"df154d69",1966:"f47489cd",1979:"0cb62240",2008:"4f031749",2042:"dd32e389",2078:"84f79495",2117:"21877fa5",2119:"6d5c9a28",2136:"ecb495b7",2169:"1646726c",2194:"6151e7ce",2242:"f3027c84",2248:"da9f79cb",2354:"493c7fdf",2399:"8d3a1bf8",2483:"d6d2b2d5",2507:"7c78c461",2508:"918b38b6",2552:"863c4753",2581:"967fa6d4",2609:"db0b42b0",2633:"e2e89062",2635:"0b632434",2665:"f4130007",2677:"ece9fdae",2704:"f3bde756",2712:"c2c6a3a6",2749:"b906f375",2754:"78868b16",2758:"9e3f6a8a",2791:"7d54ab5a",2884:"5d69d9d4",2909:"f4200fe5",2914:"2be0d940",2949:"2ea50c63",3066:"af40287e",3091:"b0a48d97",3132:"85afe03a",3262:"8a8a7d05",3330:"e31fc461",3332:"3497b7c6",3347:"32dac8d4",3348:"7ccc428f",3356:"f14351c1",3452:"3d1bf5db",3484:"5c90fc9b",3513:"41b7b3e8",3554:"d5909206",3599:"21899dd2",3620:"f137ce68",3665:"f1585bfb",3667:"b0cbc1d4",3668:"b225a2ce",3669:"dbbd9e76",3757:"bea375d6",3837:"beb5436b",3842:"ff6596ea",3933:"cda87995",3945:"f8518919",3978:"c8dd560b",4004:"ec3b6a32",4097:"eef3f1dd",4105:"702d5d94",4126:"5355b952",4143:"9f804621",4174:"a7c27f4d",4195:"c4f5d8e4",4355:"19ed4d4c",4363:"f2c21b54",4379:"c662f00a",4428:"991ceaa9",4445:"4d9b9869",4476:"f4003c83",4507:"a7b37b86",4537:"1ae2b102",4541:"3e56470e",4566:"694e7470",4620:"48d75399",4634:"54338ffb",4666:"f41c4e9d",4672:"43ee4f22",4825:"06ea9e61",4885:"2462cc91",4909:"f0855ff9",4916:"c1bbdb2a",5005:"320c8a05",5011:"7e9389ad",5013:"c41801b5",5103:"db039c7f",5157:"d27ae88d",5281:"31bd35e0",5422:"b3719d54",5483:"f7acb151",5492:"1882e65d",5526:"0c68fb82",5548:"d6b0148d",5651:"9e2042f5",5704:"b9b4ec9e",5989:"fbf58567",6104:"c7c5ba1a",6110:"b9c2850c",6140:"32e8da05",6220:"d01f45b7",6253:"a29dc56e",6255:"452ad91d",6277:"a62d9768",6286:"059e0573",6294:"bbba852d",6312:"dbc4065c",6325:"3002ebf4",6351:"25e068bc",6357:"43cda9e8",6373:"ceaa29cb",6482:"49816380",6585:"13b7bafa",6598:"ca9fe671",6673:"af3013e9",6687:"bf789d83",6689:"f2521980",6730:"fea93377",6776:"666ba125",6779:"c5d9e474",6827:"279fb1d6",6862:"60e73337",6918:"29a046f3",6920:"ccc1222e",6946:"4642ab5c",7022:"543610b9",7061:"feea648c",7202:"4a8eb552",7211:"f44ed8f8",7280:"fbea1897",7288:"6f1a81b8",7313:"db3d6c4d",7368:"bb8b1738",7388:"bd701914",7466:"a5b3561d",7485:"d3db551a",7633:"b940de31",7654:"c07c2447",7683:"cc44e8fd",7714:"591eca19",7778:"41871d53",7799:"8b670b2b",7823:"9e76b49d",7830:"15985664",7837:"0a3f0c9b",7858:"d6a97e7e",7908:"33bbe353",7918:"17896441",7920:"1a4e3797",7940:"ad762f86",7961:"a2800a5b",8034:"fecdcc34",8067:"69b97ecd",8080:"77a2b809",8115:"8247eba8",8138:"694672cd",8139:"386099fc",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",8618:"e4f3654b",8648:"71ed82b9",8702:"a74a59a0",8757:"83d4859f",8791:"ab138bf8",8831:"3bd77df4",8855:"d3a753cf",8860:"766a10e1",8866:"98a30fd8",8876:"31c99aa1",8901:"b48c599b",9062:"b38833d4",9071:"60738e36",9112:"a4b71220",9126:"924835c1",9217:"64c7e1cc",9226:"2f3b630e",9247:"8167490d",9276:"e344dd79",9315:"6d2ffbf3",9323:"131c7f55",9383:"a996ffc3",9478:"c7a2145e",9514:"1be78505",9548:"f95cee6f",9626:"32c9742a",9764:"dc776cbc",9779:"cd144357",9802:"1e15616a",9806:"51fbc2c9",9817:"14eb3368",9905:"b0cb055f",9993:"482bfb5c"}[e]||e)+"."+{1:"5563b650",6:"434ecd5d",12:"9f327517",43:"c0a56a28",53:"5aafbdb9",63:"4e5acc1b",192:"2ac0e4f9",217:"0102c432",250:"11cfd82d",253:"f6ddcd4b",315:"5a1a76c0",356:"220d0258",502:"3789530f",537:"2aa85719",601:"6806af70",609:"7ea29085",657:"f5513d14",691:"b9881d4c",810:"f27faee3",1062:"1ec7f32c",1083:"ac5baa92",1090:"26932415",1211:"ff50cb20",1213:"fee6731f",1239:"5f1e8cea",1288:"3482a532",1299:"7dda7011",1372:"44b4d9b2",1415:"68f49da4",1419:"3038c1cd",1426:"ad86846c",1446:"2265d608",1451:"22c866a1",1486:"1ebf6ec0",1494:"b887110e",1506:"05129df2",1529:"4b61b730",1585:"e1ec66d3",1598:"c2253902",1678:"b3589c09",1686:"ce7ae0b6",1703:"62855a55",1723:"86de2f74",1748:"9e2f8278",1774:"1c405b46",1786:"6a2d15ec",1825:"c534a999",1872:"342366ba",1953:"e4392cf0",1957:"d99c9092",1966:"70e3ff3a",1979:"6d282955",2008:"32bb0efa",2042:"3a48d582",2078:"17164550",2117:"0678ac75",2119:"9d6ae7af",2136:"dbf5ae7f",2169:"e3708fb5",2194:"24916601",2242:"324899e5",2248:"e0f22a01",2354:"25f75ea0",2399:"5956e920",2483:"47c545c2",2507:"1df35914",2508:"b4c49d3b",2552:"6484aed3",2581:"5db8f1b8",2609:"c959d9e0",2633:"848987e3",2635:"83c0a977",2665:"e0e20395",2677:"6a600a13",2704:"c83746c5",2712:"cbbda940",2749:"9a8b4034",2754:"82d7eade",2758:"7a12fb0f",2791:"aa5f5e37",2884:"3b223315",2909:"5449596f",2914:"ace15b40",2949:"7738f0eb",3066:"2d6ba895",3091:"159efec2",3132:"85a16703",3262:"0a270c78",3330:"f8f9d28c",3332:"59059207",3347:"cbbdbed4",3348:"32c50c47",3356:"6ee81354",3452:"4b65d125",3484:"e60b3258",3513:"21764f6d",3554:"6dc12371",3599:"e4d7458a",3620:"289ad75c",3665:"fb1d42b5",3667:"0fe4f934",3668:"b34aa74c",3669:"1d2e77f2",3757:"bc4ede3b",3837:"7aa1b869",3842:"0af4cdbd",3933:"389f37a7",3945:"3e413061",3978:"fb2a29f1",4004:"03a19c6b",4097:"e39eee97",4105:"5e24a8e9",4126:"09af1506",4143:"bd820e19",4174:"d074f050",4195:"e4766880",4325:"0e402584",4355:"2d9fa8b7",4363:"3d90cfe3",4379:"2d13fe17",4428:"60163a9e",4445:"75e079a4",4476:"8084df4b",4507:"637c2d37",4537:"f42e1d5f",4541:"978ae83c",4566:"ab0d60ad",4620:"1fa1d4bf",4634:"19df48c8",4666:"abf3d2b4",4672:"761ed7e4",4825:"36571112",4885:"68afaf38",4909:"3ae4713d",4916:"4b3a7688",4972:"2c004fcc",5005:"e778b0e5",5011:"98b0975e",5013:"00541302",5103:"3f268ad3",5157:"899f2267",5281:"6761b31b",5422:"8c5403fb",5483:"0f3442e0",5492:"7b10a32b",5526:"ad82cb49",5548:"e68f018e",5651:"701df6e6",5704:"70bd0ba6",5989:"0b1cb12b",6104:"8fc60e4e",6110:"0933da80",6140:"2e6779d0",6220:"8b344451",6253:"fe535738",6255:"8509f60e",6277:"0a2828ba",6286:"99a93e0b",6294:"b077023f",6312:"6138d82c",6316:"24db8bc9",6325:"28403763",6351:"70b88030",6357:"3733fc75",6373:"b8a24443",6482:"502a0b67",6495:"55b1c9f0",6585:"eac6bda7",6598:"5f760aa9",6673:"4c461033",6687:"65686742",6689:"c33382f4",6730:"f8bc8fb3",6776:"0a7bd7c5",6779:"78c472da",6827:"015f72c6",6862:"1ab7f2a1",6918:"61dac2e1",6920:"a3e623f0",6945:"96d36007",6946:"62348511",7022:"fea426f7",7061:"89e327b0",7202:"df3bbe8c",7211:"bb01b652",7280:"47e41d56",7288:"995d5f1d",7313:"1a6ca03d",7368:"809981c2",7388:"53d48c10",7466:"6c38d255",7485:"a80a500b",7633:"b6985db0",7654:"3c0e212d",7683:"d3462a4d",7714:"33e8870f",7724:"2906ce0b",7778:"8da5b4da",7799:"88bce1a8",7823:"6c8a30f2",7830:"a2703576",7837:"e772d597",7858:"f9862ed2",7908:"0da511b2",7918:"916bc4d8",7920:"16d7152d",7940:"c803c73b",7961:"05b141e2",8034:"dca0d1af",8047:"ce7a90ea",8067:"af36ecc3",8080:"2510a4f8",8115:"2ebb714e",8138:"408bfd7d",8139:"3f5fcf2e",8178:"62f5ed0b",8191:"6ed11001",8215:"775d309b",8236:"63fecdb9",8270:"b4fdbcde",8355:"32239f13",8361:"7e27723e",8444:"d1bb4e6e",8609:"39674500",8618:"f5896277",8648:"67b7fff2",8702:"dea0f485",8757:"4f1ee155",8791:"c3d8d89d",8831:"ec7cac70",8855:"9d00af7a",8860:"48171767",8866:"4bdda915",8876:"a30609d2",8894:"ba661129",8901:"cc3ae736",9062:"49df5b13",9071:"064c4140",9112:"38b794db",9126:"f0242db8",9217:"697f935c",9226:"dff39ed5",9247:"3b67c817",9276:"5fcd6da7",9315:"d5006aa3",9323:"faa9a3ec",9383:"dec8392d",9447:"b68b6cbb",9478:"8b255378",9487:"48bf43fe",9514:"693800c6",9548:"f095b5ce",9626:"b43c6d01",9764:"012ce7bf",9779:"4c7efdf9",9802:"11684b0f",9806:"c3977137",9817:"5ba13cdf",9905:"3e1ce1bd",9993:"6a9e0649"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,d)=>Object.prototype.hasOwnProperty.call(e,d),b={},r.l=(e,d,f,a)=>{if(b[e])b[e].push(d);else{var c,t;if(void 0!==f)for(var o=document.getElementsByTagName("script"),n=0;n{c.onerror=c.onload=null,clearTimeout(u);var a=b[e];if(delete b[e],c.parentNode&&c.parentNode.removeChild(c),a&&a.forEach((e=>e(f))),d)return d(f)},u=setTimeout(l.bind(null,void 0,{type:"timeout",target:c}),12e4);c.onerror=l.bind(null,c.onerror),c.onload=l.bind(null,c.onload),t&&document.head.appendChild(c)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={15985664:"7830",17896441:"7918",49816380:"6482",74985360:"43",f4fb6e9c:"1","408829bd":"6","1d6d4797":"12","935f2afb":"53","9f319605":"63",f189ca9f:"192",c7a044bb:"217",f2717f8e:"250","28019dcd":"253","9528ac88":"315","797239df":"356","2d429218":"502","3829cf1d":"537","0c06bca3":"601",d569989b:"609","386bfe51":"657","145746f5":"691","23498fd5":"810",f90fa732:"1062","899aadcc":"1083",cfd53ea4:"1090","73c3bebc":"1211","25f2bd2a":"1213",f359a251:"1239",fabebe44:"1288","74df6a22":"1299",b61f6dc7:"1372","4d76887f":"1415",f750c690:"1419","5136ee31":"1446",f44679e7:"1451","8dd7cee0":"1486",b21dd8a7:"1494",c977dfe8:"1506",ffe9c3c9:"1529","33b0bcab":"1585","7fbac68a":"1598",fa343ad1:"1678",f7191335:"1686",a5002e4a:"1703","0df78d26":"1723","987d08ef":"1748","9e6341e5":"1774",d9ef69a7:"1786","48074a08":"1825","78e1e977":"1872","1ed3671a":"1953",df154d69:"1957",f47489cd:"1966","0cb62240":"1979","4f031749":"2008",dd32e389:"2042","84f79495":"2078","21877fa5":"2117","6d5c9a28":"2119",ecb495b7:"2136","1646726c":"2169","6151e7ce":"2194",f3027c84:"2242",da9f79cb:"2248","493c7fdf":"2354","8d3a1bf8":"2399",d6d2b2d5:"2483","7c78c461":"2507","918b38b6":"2508","863c4753":"2552","967fa6d4":"2581",db0b42b0:"2609",e2e89062:"2633","0b632434":"2635",f4130007:"2665",ece9fdae:"2677",f3bde756:"2704",c2c6a3a6:"2712",b906f375:"2749","78868b16":"2754","9e3f6a8a":"2758","7d54ab5a":"2791","5d69d9d4":"2884",f4200fe5:"2909","2be0d940":"2914","2ea50c63":"2949",af40287e:"3066",b0a48d97:"3091","85afe03a":"3132","8a8a7d05":"3262",e31fc461:"3330","3497b7c6":"3332","32dac8d4":"3347","7ccc428f":"3348",f14351c1:"3356","3d1bf5db":"3452","5c90fc9b":"3484","41b7b3e8":"3513",d5909206:"3554","21899dd2":"3599",f137ce68:"3620",f1585bfb:"3665",b0cbc1d4:"3667",b225a2ce:"3668",dbbd9e76:"3669",bea375d6:"3757",beb5436b:"3837",ff6596ea:"3842",cda87995:"3933",f8518919:"3945",c8dd560b:"3978",ec3b6a32:"4004",eef3f1dd:"4097","702d5d94":"4105","5355b952":"4126","9f804621":"4143",a7c27f4d:"4174",c4f5d8e4:"4195","19ed4d4c":"4355",f2c21b54:"4363",c662f00a:"4379","991ceaa9":"4428","4d9b9869":"4445",f4003c83:"4476",a7b37b86:"4507","1ae2b102":"4537","3e56470e":"4541","694e7470":"4566","48d75399":"4620","54338ffb":"4634",f41c4e9d:"4666","43ee4f22":"4672","06ea9e61":"4825","2462cc91":"4885",f0855ff9:"4909",c1bbdb2a:"4916","320c8a05":"5005","7e9389ad":"5011",c41801b5:"5013",db039c7f:"5103",d27ae88d:"5157","31bd35e0":"5281",b3719d54:"5422",f7acb151:"5483","1882e65d":"5492","0c68fb82":"5526",d6b0148d:"5548","9e2042f5":"5651",b9b4ec9e:"5704",fbf58567:"5989",c7c5ba1a:"6104",b9c2850c:"6110","32e8da05":"6140",d01f45b7:"6220",a29dc56e:"6253","452ad91d":"6255",a62d9768:"6277","059e0573":"6286",bbba852d:"6294",dbc4065c:"6312","3002ebf4":"6325","25e068bc":"6351","43cda9e8":"6357",ceaa29cb:"6373","13b7bafa":"6585",ca9fe671:"6598",af3013e9:"6673",bf789d83:"6687",f2521980:"6689",fea93377:"6730","666ba125":"6776",c5d9e474:"6779","279fb1d6":"6827","60e73337":"6862","29a046f3":"6918",ccc1222e:"6920","4642ab5c":"6946","543610b9":"7022",feea648c:"7061","4a8eb552":"7202",f44ed8f8:"7211",fbea1897:"7280","6f1a81b8":"7288",db3d6c4d:"7313",bb8b1738:"7368",bd701914:"7388",a5b3561d:"7466",d3db551a:"7485",b940de31:"7633",c07c2447:"7654",cc44e8fd:"7683","591eca19":"7714","41871d53":"7778","8b670b2b":"7799","9e76b49d":"7823","0a3f0c9b":"7837",d6a97e7e:"7858","33bbe353":"7908","1a4e3797":"7920",ad762f86:"7940",a2800a5b:"7961",fecdcc34:"8034","69b97ecd":"8067","77a2b809":"8080","8247eba8":"8115","694672cd":"8138","386099fc":"8139","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609",e4f3654b:"8618","71ed82b9":"8648",a74a59a0:"8702","83d4859f":"8757",ab138bf8:"8791","3bd77df4":"8831",d3a753cf:"8855","766a10e1":"8860","98a30fd8":"8866","31c99aa1":"8876",b48c599b:"8901",b38833d4:"9062","60738e36":"9071",a4b71220:"9112","924835c1":"9126","64c7e1cc":"9217","2f3b630e":"9226","8167490d":"9247",e344dd79:"9276","6d2ffbf3":"9315","131c7f55":"9323",a996ffc3:"9383",c7a2145e:"9478","1be78505":"9514",f95cee6f:"9548","32c9742a":"9626",dc776cbc:"9764",cd144357:"9779","1e15616a":"9802","51fbc2c9":"9806","14eb3368":"9817",b0cb055f:"9905","482bfb5c":"9993"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(d,f)=>{var b=r.o(e,d)?e[d]:void 0;if(0!==b)if(b)f.push(b[2]);else if(/^(1303|532)$/.test(d))e[d]=0;else{var a=new Promise(((f,a)=>b=e[d]=[f,a]));f.push(b[2]=a);var c=r.p+r.u(d),t=new Error;r.l(c,(f=>{if(r.o(e,d)&&(0!==(b=e[d])&&(e[d]=void 0),b)){var a=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+d+" failed.\n("+a+": "+c+")",t.name="ChunkLoadError",t.type=a,t.request=c,b[1](t)}}),"chunk-"+d,d)}},r.O.j=d=>0===e[d];var d=(d,f)=>{var b,a,[c,t,o]=f,n=0;if(c.some((d=>0!==e[d]))){for(b in t)r.o(t,b)&&(r.m[b]=t[b]);if(o)var i=o(r)}for(d&&d(f);n - + @@ -30,7 +30,7 @@ communication channels of core team members, and gain access to Polkadot events.

There are many ways you can get involved in expanding Polkadot’s ecosystem, such as:

  • Contributing code and documentation related to the ecosystem
  • Speaking about Polkadot at events, workshops, and meetups
  • Writing blog posts
  • Representing Polkadot in your region
  • Mentoring and onboarding newcomers
  • Identifying partnerships and opportunities for the Polkadot ecosystem
  • Participating in calls and tasks that help drive the ecosystem forward

How to apply:

To become a Polkadot Ambassador, please fill out your application here.

Find out more about the programme and how to join here.

- + \ No newline at end of file diff --git a/docs/apps-index.html b/docs/apps-index.html index b1fbb3eb0d13..1d21a2ce1af8 100644 --- a/docs/apps-index.html +++ b/docs/apps-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/bug-bounty.html b/docs/bug-bounty.html index 87cd740893c8..d63bd6da8055 100644 --- a/docs/bug-bounty.html +++ b/docs/bug-bounty.html @@ -19,7 +19,7 @@ - + @@ -43,7 +43,7 @@ not to be disruptive or harmful to our users or us. Otherwise, your actions might be interpreted as an attack rather than an effort to be helpful.

How to report a bug

Please follow the instructions at web3.foundation/security-report/.

- + \ No newline at end of file diff --git a/docs/build-client-index.html b/docs/build-client-index.html index 4ceb9d3797da..4c722b012d16 100644 --- a/docs/build-client-index.html +++ b/docs/build-client-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/build-dapp.html b/docs/build-dapp.html index 67ef78b4e84c..e0d1c2ca2280 100644 --- a/docs/build-dapp.html +++ b/docs/build-dapp.html @@ -19,7 +19,7 @@ - + @@ -37,7 +37,7 @@ see the tooling page for a detailed overview of different SDKs and libraries that are available.

Frameworks & Toolkits

For front-end applications, several options exist for interfacing with Substrate-based chains (parachains, relay chains, etc.) and smart contracts. These often will interact with the RPC of a Substrate node:

Promise and RxJS APIs around Polkadot and Substrate-based chains via RPC calls. It is dynamically generated based on what the Substrate runtime provides regarding metadata. Full documentation & examples available here.
- + \ No newline at end of file diff --git a/docs/build-data.html b/docs/build-data.html index 91a6bef46ac1..f0cb855ed624 100644 --- a/docs/build-data.html +++ b/docs/build-data.html @@ -19,7 +19,7 @@ - + @@ -50,7 +50,7 @@ for details on how to access the data.

Polkadot-based Explorers

As you can imagine, blockchain explorers also offer data analytics through an interface where users can examine common data points.

Some block explorers in the Polkadot ecosystem are listed on the tools page.

- + \ No newline at end of file diff --git a/docs/build-guide.html b/docs/build-guide.html index 30e4a3ede725..07a25773b98b 100644 --- a/docs/build-guide.html +++ b/docs/build-guide.html @@ -19,7 +19,7 @@ - + @@ -131,7 +131,7 @@ (parachains, relay chains, etc.) and smart contracts. These often will interact with the RPC of a Substrate node.

Please visit the full documentation for developing dApps and other general client-side development resources.

For a complete list of tools, please take a look here: Tools, APIs, and Languages

- + \ No newline at end of file diff --git a/docs/build-hackathon.html b/docs/build-hackathon.html index f60b067440d7..8cac5fb48c93 100644 --- a/docs/build-hackathon.html +++ b/docs/build-hackathon.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ that can be a feature of you hackathon or suggested prerequisite for those joining to use.

Support / Contact

If you have any questions regarding organizing a hackathon, please free feel to contact us by email or ask us via Element chat.

- + \ No newline at end of file diff --git a/docs/build-hrmp-channels.html b/docs/build-hrmp-channels.html index c4d8d153429a..f93a0f646ea4 100644 --- a/docs/build-hrmp-channels.html +++ b/docs/build-hrmp-channels.html @@ -19,7 +19,7 @@ - + @@ -59,7 +59,7 @@ encourage the community to vote on this, highlighting the benefits for your chain, use cases enabled with this submission, among other things. After the enactment period is over, both chains will authorize the channel.

- + \ No newline at end of file diff --git a/docs/build-index.html b/docs/build-index.html index 8e7690078ada..f3d9be574424 100644 --- a/docs/build-index.html +++ b/docs/build-index.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@ are building.

Grants

  • Grants - Information regarding grants and funding sources available in the Polkadot ecosystem.

PCPs

Polkadot Contracts Proposals (PCPs) are standards for smart contracts in the Polkadot ecosystem.

Hackathon

- + \ No newline at end of file diff --git a/docs/build-integrate-assets.html b/docs/build-integrate-assets.html index 3e666b04cc9c..52828b2fabfd 100644 --- a/docs/build-integrate-assets.html +++ b/docs/build-integrate-assets.html @@ -19,7 +19,7 @@ - + @@ -127,7 +127,7 @@ can be claimed).

A great resource to learn more about Error Management in XCM is the Polkadot blog post from Gavin Wood, XCM Part III: Execution and Error Management.

- + \ No newline at end of file diff --git a/docs/build-integration.html b/docs/build-integration.html index 9f46159749dc..60a61ad74204 100644 --- a/docs/build-integration.html +++ b/docs/build-integration.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ transactions. Parity and Web3 Foundation will be able to provide the best support if you use these tools.

If your team would like support, join some of our community channels or contact support@polkadot.network.

- + \ No newline at end of file diff --git a/docs/build-light-clients.html b/docs/build-light-clients.html index baf940edd0f9..d2e1716b2d5b 100644 --- a/docs/build-light-clients.html +++ b/docs/build-light-clients.html @@ -19,7 +19,7 @@ - + @@ -54,7 +54,7 @@ end-users to interact with applications connected to multiple blockchains or connect their own blockchains to applications that support it.

note

Substrate Connect will auto-detect whether a user is using the extension. If not, the Wasm light client will be created in-page for them.

Resources

- + \ No newline at end of file diff --git a/docs/build-network-index.html b/docs/build-network-index.html index 3321c08fa52d..0bc875723f9b 100644 --- a/docs/build-network-index.html +++ b/docs/build-network-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/build-network-overview.html b/docs/build-network-overview.html index 2446c4993c58..cbe40f8ab6cd 100644 --- a/docs/build-network-overview.html +++ b/docs/build-network-overview.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@ here.

For other programmatic ways of interacting with these networks (including PolkadotJS), please view the Node Interactions page.

Testnet Faucets

Almost all tesnets either have a web-based interface for getting test currency or a Matrix room which you can post !drip <ADDRESS>

See here for all available faucets and how to obtain testnet tokens.

- + \ No newline at end of file diff --git a/docs/build-node-interaction.html b/docs/build-node-interaction.html index c6629180da94..7e50c0e82f07 100644 --- a/docs/build-node-interaction.html +++ b/docs/build-node-interaction.html @@ -19,7 +19,7 @@ - + @@ -57,7 +57,7 @@ block by the block author.

{
"number":"7409038",
"hash":"0x0e9610f3c89fac046ef83aa625ad414d5403031faa026b7ab2a918184e389968",
"parentHash":"0xba308541eb207bc639f36d392706309a031c21622f883fb07411060389c5ffdd",
"stateRoot":"0x4426383b64a944ad7222a4019aefd558c749da0c6920cfcdfd587741d54abbe2",
"extrinsicsRoot":"0x74749e5f5aeb610bc23fd6d8d79fd8bbf5e4b6053f70ba94ea6b3cc271df4b3a",
"authorId":"Fvvz6Ej1D5ZR5ZTK1vE1dCjBvkbxE1VncptEtmFaecXe4PF",
"logs":[
{
"type":"PreRuntime",
"index":"6",
"value":[
"BABE",
"0x023a0200009c7d191000000000"
]
},
{
"type":"Seal",
"index":"5",
"value":[
"BABE",
"0x2296a50fa4fea3a46a95ad5b1f09de76d22c6ed3dc6755718c976e2d14c63e4dd3c6257813d9bdc03bb180b1e20393f1558ae1204982e5c7570df393e11f908b"
]
}
],
"onInitialize":{
"events":[

]
},
"extrinsics":[
{
"method":{
"pallet":"timestamp",
"method":"set"
},
"signature":null,
"nonce":null,
"args":{
"now":"1620636072000"
},
"tip":null,
"hash":"0x8b853f49b6543e4fcbc796ad3574ea5601d2869d80629e080e501da4cb7b74b4",
"info":{

},
"events":[
{
"method":{
"pallet":"system",
"method":"ExtrinsicSuccess"
},
"data":[
{
"weight":"185253000",
"class":"Mandatory",
"paysFee":"Yes"
}
]
}
],
"success":true,
"paysFee":false
},
{
"method":{
"pallet":"balances",
"method":"transfer"
},
"signature":{
"signature":"0x94b63112648e8e692f0076fa1ccab3a04510c269d1392c1df2560503865e144e3afd578f1e37e98063b64b98a77a89a9cdc8ade579dcac0984e78d90646a052001",
"signer":{
"id":"Gr5sBB1EgdmQ7FG3Ud2BdECWQTMDXNgGPfdHMMtDsmT4Dj3"
}
},
"nonce":"12",
"args":{
"dest":{
"id":"J6ksma2jVeHRcRoYPZBkJRzRbckys7oSmgvjKLrVbj1U8bE"
},
"value":"100000000"
},
"tip":"0",
"hash":"0xfbc5e5de75d64abe5aa3ee9272a3112b3ce53710664f6f2b9416b2ffda8799c2",
"info":{
"weight":"201217000",
"class":"Normal",
"partialFee":"2583332634"
},
"events":[
{
"method":{
"pallet":"balances",
"method":"Transfer"
},
"data":[
"Gr5sBB1EgdmQ7FG3Ud2BdECWQTMDXNgGPfdHMMtDsmT4Dj3",
"J6ksma2jVeHRcRoYPZBkJRzRbckys7oSmgvjKLrVbj1U8bE",
"100000000"
]
},
{
"method":{
"pallet":"balances",
"method":"Deposit"
},
"data":[
"Fvvz6Ej1D5ZR5ZTK1vE1dCjBvkbxE1VncptEtmFaecXe4PF",
"2583332634"
]
},
{
"method":{
"pallet":"system",
"method":"ExtrinsicSuccess"
},
"data":[
{
"weight":"201217000",
"class":"Normal",
"paysFee":"Yes"
}
]
}
],
"success":true,
"paysFee":true
},
{
"method":{
"pallet":"utility",
"method":"batch"
},
"signature":{
"signature":"0x8aa2fc3f0cff52533745679523705720cff42d0e7258b9797feed193deb0ca73474726e148af0a0b096d44c07f20e5292819ec92279cffb2897e95cc337e638e",
"signer":{
"id":"F4gmSZGiM9pMYPsKW7xnGktDr4zRmN2jqy5Ze678y9YWR7F"
}
},
"nonce":"687",
"args":{
"calls":[
{
"method":{
"pallet":"staking",
"method":"payoutStakers"
},
"args":{
"validator_stash":"Cfish3zJiFnTvR9jscCap7imeA9ep3cH1wZfcZwAp2gdZHo",
"era":"2229"
}
},
{
"method":{
"pallet":"staking",
"method":"payoutStakers"
},
"args":{
"validator_stash":"Cfish3zJiFnTvR9jscCap7imeA9ep3cH1wZfcZwAp2gdZHo",
"era":"2230"
}
},
{
"method":{
"pallet":"staking",
"method":"payoutStakers"
},
"args":{
"validator_stash":"Cfish3zJiFnTvR9jscCap7imeA9ep3cH1wZfcZwAp2gdZHo",
"era":"2231"
}
},
{
"method":{
"pallet":"staking",
"method":"payoutStakers"
},
"args":{
"validator_stash":"DifishR4auphofhzxsy2aupgYo4NaUECH7qgt71CgiB2o6P",
"era":"2231"
}
},
{
"method":{
"pallet":"staking",
"method":"payoutStakers"
},
"args":{
"validator_stash":"J1fishfH94nFZLNScHgC2HorWpFD2xdPxd96wtTCHLvKxfa",
"era":"2231"
}
}
]
},
"tip":"0",
"hash":"0x69171ec3f4e5e4dfd27f4d1c5b5dbc884932c5d9a078c84495bb7ab875c8785f",
"info":{
"weight":"629782467000",
"class":"Normal",
"partialFee":"5150837715"
},
"events":[
{
"method":{
"pallet":"staking",
"method":"Reward"
},
"data":[
"Cfish3zJiFnTvR9jscCap7imeA9ep3cH1wZfcZwAp2gdZHo",
"40730624074"
]
},
{
"method":{
"pallet":"staking",
"method":"Reward"
},
"data":[
"FhLcXuFkTwyc3o9K82VBahpain1YHWyGeNMDTTyeDJKfm5b",
"4296071738"
]
},
{
"method":{
"pallet":"staking",
"method":"Reward"
},
"data":[
"F1NyXFUayqmVMdjNK45hcaTCE3JiqdU83sEGhQ3HQXn2Rpq",
"1770904403"
]
},

// ...

{
"method":{
"pallet":"utility",
"method":"BatchCompleted"
},
"data":[

]
},
{
"method":{
"pallet":"balances",
"method":"Deposit"
},
"data":[
"Fvvz6Ej1D5ZR5ZTK1vE1dCjBvkbxE1VncptEtmFaecXe4PF",
"5150837715"
]
},
{
"method":{
"pallet":"system",
"method":"ExtrinsicSuccess"
},
"data":[
{
"weight":"629782467000",
"class":"Normal",
"paysFee":"Yes"
}
]
}
],
"success":true,
"paysFee":true
}
],
"onFinalize":{
"events":[

]
},
"finalized":true
}
The JS number type is a 53 bit precision float

There is no guarantee that the numerical values in the response will have a numerical type. Any numbers larger than 2**53-1 will have a string type.

Submitting a Transaction

Submit a serialized transaction using the transaction endpoint with an HTTP POST request.

import requests
import json

url = 'http://127.0.0.1:8080/transaction/'
tx_headers = {'Content-type' : 'application/json', 'Accept' : 'text/plain'}
response = requests.post(
url,
data='{"tx": "0xed0...000"}', # A serialized tx.
headers=tx_headers
)
tx_response = json.loads(response.text)

If successful, this endpoint returns a JSON with the transaction hash. In case of error, it will return an error report, e.g.:

{
"error": "Failed to parse a tx" | "Failed to submit a tx",
"cause": "Upstream error description"
}
- + \ No newline at end of file diff --git a/docs/build-node-management.html b/docs/build-node-management.html index 07e6df2749d7..fd5bc73a1116 100644 --- a/docs/build-node-management.html +++ b/docs/build-node-management.html @@ -19,7 +19,7 @@ - + @@ -67,7 +67,7 @@ has a monitor node metrics tutorial which uses this endpoint.

- + \ No newline at end of file diff --git a/docs/build-open-source.html b/docs/build-open-source.html index ba73099505c9..f228258b4f82 100644 --- a/docs/build-open-source.html +++ b/docs/build-open-source.html @@ -19,7 +19,7 @@ - + @@ -29,12 +29,12 @@ apologize if we missed your project!


About

The Polkadot Tech Stack is a subset of the Web 3.0 Tech Stack, which consists of the open-source technologies contributing to and relying on Polkadot. It is meant to be used for decentralized application (Dapp) development within numerous verticals, including DeFi, Gaming, -Provenance and many others not pictured below.

|------|--------|------------|
| DeFi | Gaming | Provenance |
|______|________|____________|
Dapps
|--------------------------/-|
| Explorers, Wallets / |
|------------------------/---|
| Tools, Apis, Languages/ |
|----------------------/-----|
| 2nd layer protocols / |
|--------------------/-------|
| Chains / other |
|------------------/--- --|
| *Polkadot* | tech |
|------------------\---------|
| P2P, Crypto, Wasm \ |
|--------------------\-------|

Layers of Polkadot Stack

In the below sections, you can find a list of different layers of the Polkadot Stack.

Maintenance Status:

  • 🟢 Actively maintained
  • 🟡 Stale (no activity on the main branch for one month)
  • ⚪ Unmaintained (no activity on the main branch for more than three months)

Wallets

ComponentsExisting projectsPotentially interesting projects
Web WalletsMultix 🟢, Polkasafe 🟡, polkadot-js/apps 🟢, Talisman Web Application 🟢, mydotwallet ⚪, Sub ID 🟢, Primis ⚪, Sakura ⚪, Web3Box ⚪, Coong Wallet 🟡, Subscan Multisig UI - React 🟡, Subscan Multisig UI ⚪, Dorafactory-Multisig ⚪, Capi Multisig AppUser-friendly Wallet based on the Recovery Pallet, Web wallets focused on user-onboarding (e.g. using localStorage)
Desktop Walletsnova-spektr 🟢, Omni desktopEnterprise Wallets
Browser ExtensionsTalisman-Extension 🟢, SubWallet-Extension 🟢, Enkrypt 🟡, Polkadot{.js} 🟢, PolkaGate 🟢, Doter ⚪, Speckle OS ⚪, Kuma Cross-chain Wallet 🟢Sign-in with your Polkadot, Kusama, etc. account.
Mobile WalletsNova Wallet iOS 🟢, Nova Wallet Android 🟢, Polkadot Vault 🟢, Fearless Wallet Android 🟢, Fearless Wallet iOS 🟢, SubWallet-Mobile ⚪, Kampela 🟡, AirGap 🟡, Interstellar Network 🟡, Lunie ⚪, Polkawallet ⚪, imToken ⚪, Stylo ⚪, Fractapp ⚪, Hashed Wallet
Burner Wallets/Faucet/Giftsdotdrop ⚪, KodaDot ⚪, Astar Faucet Bot ⚪, Generic sybil-resistant faucet ⚪, sybil-resistant Chat Bot FaucetFaucet (a sybil-resistant way to receive free tokens)
Wallet PluginsMetamask-Snap by Chainsafe 🟢
CLI WalletSubwallet ⚪, Proxy-hot-wallet
Hardware WalletsLedger Polkadot 🟡, Ledger Kusama 🟢, Ledger Statemint ⚪, Ledger Statemine 🟡Trezor

User Interface

ComponentsExisting projectsPotentially interesting projects
Block ExplorersCalamar 🟢, Polkaholic 🟢, Polkascan ⚪, Polkastats ⚪, Subscan ⚪, Statescan ⚪, Edgscan ⚪, Sirato ⚪, ink! Explorer API ⚪, Substats ⚪, Hybrid Block Explorer 🟡Mempool focused explorer (including parachain transaction)
Validator DashboardsPolkadot Telemetry 🟢, Polkacube ⚪, YieldScan ⚪, Hubble ⚪, Cyclops 🟡, Web3Go 🟡
Node ExplorersPolkadot Node Explorer
NFT ExplorerNFT Explorer for Kusama & Polkadot 🟢
Governance DashboardsPolkadot Delegation Dashboard 🟢, Polkassembly ⚪, dotreasury 🟢, Bright Treasury ⚪, OpenSquare offchain voting 🟢, OpenGov Insights ⚪, Treasury Tracker 🟡UI for the Kusama and/or Polkadot treasury (see bounty module), UI for Parachain Lease Offering (PLO)
StakingStaking Rewards Collector ⚪, Staking Rewards Viewer ⚪, Polkadot Staking Site ⚪, Polkadot Staking Dashboard 🟢, Polkadot/Kusama Validator Selector ⚪, Staking Income CSV Generator
Bridge UIParity Bridges UI ⚪, Donut Interface (Steem - Dot)
Parachain/CrowdloanParachains.Network ⚪, PolkAuction ⚪, Crowdloan Front End Template ⚪, Slothunter 🟢
IdenticonPolkicon 🟢, PolkadotWebIdenticon ⚪, Polkadot Angular IdentIcon ⚪, Bird Identicon
OtherPolkadot Cloud 🟢, KappaSigmaMu Fratority ⚪, Quadratic Funding Webapp 🟡, Polkawatch, Bytepay ⚪, charging-management-platform ⚪, subidentity-webapp ⚪, OpenSquare Paid QA ⚪, DotPulse ⚪, Rubeus Keeper ⚪, Polkaflow ⚪, ChainViz 🟡, Dotsight 🟢, Lastic 🟢zkLogin, Portfolio Viewer like Zapper or Zerion

Tools, APIs, and Languages

ComponentsExisting projectsPotentially interesting projects
Runtime/Parachain frameworksPolkadot Blockchain SDK 🟢, Gosemble ⚪, Subsembly ⚪, Parachain utilities ⚪, Gantree ⚪, Cryptex 🟢Tools to create parachains with other frameworks, like the Cosmos SDK or Polygon CDK
Client LibrariesPolkadot API - Typescript 🟢, Capi - Typescript ⚪, sub-api 🟢, Go 🟡, .Net ⚪, .NET Standard 2.0 🟡, Substrate .NET Toolchain 🟡, C++ ⚪, C ⚪, Haskell ⚪, Javascript 🟢, Substrate API Sidecar - TypeScript 🟢, Python 🟢, Java (+ Android) ⚪, Substrate Client Java ⚪, Rust SCS 🟢, Rust Parity (subxt) 🟢, Rust pdotc PHP (gmajor-encrypt) ⚪, PHP (neha0921) ⚪, RPC-Ethereum 🟢, Swift 🟢, Kotlin ⚪, substrate-client-kotlin ⚪, substrate-client-swift ⚪, Dart 🟢, Substrate Core Polywrapper ⚪, Substrate SDK iOS 🟡, Substrate SDK Android 🟡
RPC GatewaySubway 🟢
Substrate Contract clientsPatractGo
Easy Runtime DevelopmentSubalfred 🟢, substrate-stencil ⚪, Play Substrate 🟡, substrate-node-template 🟡, Substrate Playground 🟡, AssemblyScript Runtime Generation ⚪, Substrate Package Manager ⚪, Subsembly: Framework for developing AssemblyScript Substrate Runtimes ⚪, dependency diener
IDE PluginsSubstrate Marketplace VS Code Plugin ⚪, VS Code Plugin ⚪, Atom Code Plugin ⚪, zombienet extension
Runtime/Pallet SecuritySubstrate Runtime Fuzzer 🟢, Substrate Toml Lint ⚪, K specifications 🟢, PolPatrol - Polkadot Runtime CheckerAutomated Runtime checking tools, economic audit simulator such as gauntlet.network
Smart Contract Languagesink! 🟢, Ask! 🟢, Subscript ⚪, Solang 🟢, pallet-move 🟢, Move VM Substrate ⚪, Move smart contract by Neatcoin ⚪, eBPF Contracts Hackathon ⚪, PolkaVM 🟢Functional Programming Languages, other languages with developed toolchains
TestingPolkadot introspector 🟢, Subshell 🟢, substrate-simnode ⚪, Halva ⚪, Redspot ⚪, MixBytes Tank ⚪, sub-flood ⚪, Substrate debug-kit ⚪, Asset CLI tool 🟡, sub_crash ⚪, subwasm 🟡, subsee ⚪, polkadot-lab ⚪, RPC-perf
Static AnalysisSubstrace ⚪, Static analyzer for Substrate FRAME's pallets ⚪, CoinFabrik Scout 🟡
TestnetZombienet 🟢, Chopsticks 🟢, Polkadot Launch ⚪, polkadot-starship ⚪, Fork off Substrate ⚪, try-runtime-cli 🟢, Parachain Launch 🟢, Larch Zombienet GUI 🟢
BenchmarkingBenchmarking CLI 🟢, Polkadot sTPS 🟡, Clockchain ⚪, Substrate Graph Benchmarks ⚪, ink! & pallet benchmarking template ⚪, smart-bench 🟡
Blockchain Indexing EngineSquid SDK 🟢, Hybrid Indexer 🟢, Substrate Archive ⚪, PSQL Indexer ⚪, Substrate Graph ⚪, Subquery 🟢, MBELT3 🟡, stick 🟢, Hyperdot
Blockchain/Event MonitoringWeb3 Guardian ⚪, Aurras Event Manager 🟢, @commonwealth/chain-events ⚪, Massbit ⚪, Polkadot Basic Notifications ⚪, Ocelloids 🟢, Tracking Chain 🟢,
GamingCrossbowAmethyst + Substrate
No-code PlatformsEzCode's Polkadot.js plugin on Bubble.io ⚪, Blackprint Visual Programming Polkadot.js module ⚪, SubRelay
WalletsTalisman Connect 🟡, SubWallet-SubConnect 🟡, Metadata Portal 🟢, Tesseract 🟡, WalletConnect ⚪, BitGoJS 🟢
XCMTrappist 🟢, XCM-tools ⚪, XCM-tools Golang 🟡,ParaSpell ⚪, XBI ⚪, XCM TS/JS SDK ⚪, XCMSend 🟢, XCM Monitoring Server 🟢
Otherasset-transfer-api 🟢, txwrapper-core 🟢, open-web3 JS library ⚪, VM-Bridge ⚪, srtool 🟢, srtool-cli 🟡, Substrate Tip Bot 🟢, ORI (Onchain Risk Intelligence) ⚪, PolkaTools ⚪, polkadot-scripts 🟢, Sube 🟢, data-store-sidecar ⚪, SugarFunge ⚪, substrate-wasmedge ⚪, EightFish ⚪, Sandox 🟢, APK verifier 🟡

ink! Smart Contracts

ComponentsExisting projectsPotentially interesting projects
Core Librariesink! 🟢, cargo-contract 🟢, pallet-contracts 🟢
Local Nodessubstrate-contracts-node 🟢, Swanky 🟡
Smart Contract DevelopmentDRink! 🟢, contracts-ui 🟢, OpenBrush ❔, Sol2Ink ⚪, Polkadot Contract Wizard 🟢, ink-wrapper 🟢, ink-playground ⚪, ink! Remix Plugin ⚪, Signac ⚪, ink!-boxes 🟢, ink!-smart-contract-wizard
Security & Testingink! Waterfall ⚪, Verifier Image for ink! ⚪, Patron 🟡
Frontend Developmentink!athon Boilerplate 🟢, useink 🟢, useInkathon 🟢, ink-typegen 🟢, Typechain Polkadot
IDE Pluginsink! Analyzer 🟢
BridgesDante Protocol
DeFiPendulum-Ink-Wrapper 🟢, Panorama Swap 🟢, ink_bank ⚪, Polkadot AMM ⚪, Vera ⚪, Nsure Insurance ❔, Everlasting Cash ⚪, Coinversation ⚪, zenlink-dex-contract ⚪, AlgoCashNew seigniorage-style stable coins
GamingOpen Emoji Battler ⚪, NewOmega
DAOSyncraDAO ⚪, subDAO ⚪, RainbowDAO ⚪, MangoBox ⚪, MangoSale 🟢
Identity/DIDDotflow 🟢
OraclesDIA WASM Oracle
Spam ProtectionProsopo
GovernanceAbax Governance 🟡
NFTArtZero 🟡
OtherPolkadot Smart Account 🟡, magink ⚪, ink-test-contracts 🟡, Candle Auctions ⚪, polkasign-contract ⚪, OCEX ⚪, Roloi ⚪, OpenPayroll ⚪, BlockchainFoodOrder 🟡

Chains and Pallets

ComponentsExisting projectsPotentially interesting projects
Scalable TransactionsPerun channels ⚪, CLI demo of Perun ⚪, Astar 🟢, Celer ⚪, Gunclear ⚪, TPScore 🟡roll-ups, DAG-based consensus mechanisms, side chains
BridgesinterBTC 🟡, DKG Substrate 🟡, Sygma 🟡, EOS by Bifrost ⚪, POA - Substrate ⚪, Substrate - Ethereum DAI Bridge ⚪, Substrate - Substrate Bridge ⚪, BTC by ChainX 🟢, Cosmos-Substrate bridge ⚪, Substrate IBC Pallet ⚪, Polkadot Ethereum Bridge 🟢, Darwinia 🟢, Spacewalk: a Stellar bridge 🟢, Filecoindot ⚪, Axelar-SubstrateZCash
PrivacyZeroChain ⚪, xx network ⚪, pLibra (Phala Network) 🟢, Automata Network ⚪, Zero Network 🟢, Silent DataMulti-Asset Shielded Pool (MASP) , Zkay, Zexe
ZKPZeroPool ⚪, Megaclite ⚪, zkMega ⚪, PLONK for Substrate ⚪, Webb Anchor Protocol ⚪, zk-SNARKs tutorial ⚪, substrate-zk 🟢
TEEAcurast 🟢, Integritee 🟢, substraTEEKeysafe Protocol
DeFiPrivaDEX ⚪, Fusotao 🟡, Reef ⚪, Diora ⚪, Pendulum Chain 🟢, Compound Gateway ⚪, Parallel Finance 🟢, PINT ⚪, Laminar Chain ⚪, Acala 🟢, Centrifuge 🟢, Stafi 🟢, Definex ⚪, OAX Foundation ⚪, Cybex ⚪, Zenlink ⚪, Swaps Pallet ⚪, Polkadex 🟢, SubDEX ⚪, HydraDX 🟢, Substrate Stablecoin ⚪, Standard protocol ⚪, Polkaswap 🟢, Curve AMM ⚪, Konomi Network ⚪, Stable Asset 🟢, Libra Payment ⚪, Mangata 🟢, Tidechain 🟡, Basilisk ⚪, Polymesh 🟢DEX with privacy and confidentiality features such as those found in a dark pool
Smart contract chainsmoonbeam 🟢, Magnet 🟢, Aleph-node 🟢, Edgeware ⚪, ParaState ⚪, gear 🟢, CENNZnet ⚪, SkyeKiwi ⚪, OAK-blockchain 🟢, ICE Blockchain ⚪, Polkadot Smart Chain ⚪, Madara - Cairo/Starknet 🟢smart contract chains with novel security approaches, smart contract chains based on existing toolchains
OracleTellor 🟡, Laminar 🟢, Chainlink-polkadot ⚪, Ares Protocol ⚪, Kylin Network ⚪, interbtc-clients oracle 🟢, Anonima ⚪, SaaS3 ⚪, Tellor ⚪, Bridgestate Oracle 🟡
Identity/DIDParami ⚪, Litentry 🟢, pallet-did ⚪, dot-id
IoTNodle 🟢, MXC/DataHighway ⚪, peaq-network-node
Verifiable ClaimsKILT 🟢, Dock 🟡, Fennel Protocol 🟢
Supply chainDSCP Node 🟢
Health care
Music IndustryAllfeat Network 🟢
Data AvailabilityAvail 🟢, Melodot 🟢
Social NetworkingFrequency 🟢, Social Network ⚪, SubSocial 🟢, ZeroDAO ⚪, Myriad Node 🟢, Wika Network ⚪, Project Liberty 🟢, Listen ⚪, Tribal Protocol ⚪, Five Degrees on Substrate ⚪, Acuity SocialPrivate instant messenger that uses on-chain identity
Governance/DAOAisland Node 🟡, Hashed Network ⚪, Sunshine DAO ⚪, Governance OS ⚪, Idavoll Network ⚪, Substrate Moloch ⚪, QRUCIAL-DAO ⚪, Societal 🟡, DAOs 🟢, Shivarthu 🟢, Faterium 🟢, Supersig ⚪, GenesisDAO 🟢, DAO Entrance ❔, LiberlandConsul - Open Government and E-Participation Web Software
Prediction Markets and FutarchyZeitgeist 🟢, X Predict Market
MessagingHOPR ⚪, Nolik ⚪, Uke 🟢, Diffy Chat
File Storage, CloudSubsocial-Offchain 🟡, DatDot 🟢, Crust Network 🟢, offchain::ipfs ⚪, Canyon Network ⚪, CESS 🟢, CESS Proving Subsystem ❔, Iris ⚪, fmd-cess ⚪, IPFS Frame V3 ⚪, Threefold Chain 🟢, Apron ⚪, IPFS Utilities
Name ServiceSubstrate Names ⚪, ENS on Substrate ⚪, PNS-Pallets ⚪, Faceless ⚪, Anchor 🟡
GamingBit.country 🟢, SubGame ⚪, subzero ⚪, Web3Games ⚪, Ajuna Network 🟢, Gafi Network ⚪, Asylum 🟢, 3DPass 🟡, Polket
Computation/AIDeepBrain Chain 🟡, AI Infrastructure on Blockchain
Enable specific use-casespallet-hookpoints 🟡, Robonomics ⚪, UniversalDOT ⚪, Evercity Sustainable Finance Protocol ⚪, Fennel Protocol 🟢, logion 🟢
NFTternoa 🟢, FRAME Pallet: NFTs for Substrate ⚪, Unique NFT Parachain 🟢, DNFT ⚪, RMRK-Substrate ⚪, NT-NFTs ⚪, Green Lemon ⚪, Basilisk
RandomnessDKG and Randomness Beacon ⚪, drand-substrate-client
LicensingAnagolay Network
Banking IntegrationFIAT on-off-ramp
CrowdfundingImbue Network 🟢, Quadratic Funding pallet by Dora ⚪, Quadratic Funding pallet by OAKMinimum Anti-Collusion Infrastructure (MACI)
Collection of PalletsSubstrate Open Runtime Module Library 🟢, warehouse ⚪, InvArch FRAME Pallet Library
MarketplacesDot Marketplace ⚪, Gated Marketplace ⚪, Ventur
Carbon CreditsBitGreen ⚪, Carbon Assets Pallet ⚪, Sequester Pallets
UTXOTuxedo 🟢
OtherMoonkit 🟢, Substrate Account Filter ⚪, Subtensor 🟢, AdMeta ⚪, Chocolate Node ⚪, Virto Network 🟢, Substrate Validator Set 🟡, DEIP ⚪, DeBio 🟢, MathChain ⚪, encointer 🟡, Grassland ⚪, Substrate-Tutorials ⚪, Fair Squares 🟡, Totem Live Accounting ⚪, Escrow Pallet ⚪, TREX ⚪, Relation Graph ⚪, Decentralized Invoice ⚪, Redstone Network ⚪, Access Control Pallet ⚪, Omniverse DLT ⚪, ISMP 🟢, XCMP 🟢, CORD Chain 🟡Decentralized review/reputation system

Host

ComponentsExisting projectsPotentially interesting projects
RustSubstrate ⚪, Cumulus
C++Kagome 🟢, Mayon
GoGossamer 🟢
JavaFruzhin 🟢, Java Host Research
AssemblyScript
Light Clientsmoldot 🟢, Substrate Connect 🟢, C++ Polkadot Light Client
TestingPolkadot Conformance 🟢, Polkafuzz

Network Maintenance Tools

ComponentsExisting projectsPotentially interesting projects
Secure validator setupPolkadot Validation Node Ansible Setup ⚪, W3F Polkadot Validator Setup ⚪, polkadot-ansible 🟢
High availability setupArchipel ⚪, Polkadot Failover Mechanism ⚪, Datagen 🟡, High Availability Validator Setup
Load Balanced Endpointsterragrunt-polkadot ⚪, Geometry Labs' Substrate Meta repo
Deployment ToolsPolkadot Package Manager ⚪, PolkaHub ⚪, Avado ⚪, Polkadot Deployer ⚪, Unified Collator Deployment
Validator monitoringONE-T 🟢, SubVT 🟢, P.A.N.I.C. ⚪, Polkalert ⚪, B-Harvest ⚪, nmonpolkadot ⚪, Polkadot-K8s-Monitor 🟢, Polkadot-Watcher ⚪, 1KV Telegram Bot
Validator payout managementSubstrate validator auto payout ⚪, Polkadot Payouts ⚪, staking-payouts CLI ⚪, Payctl ⚪, crunch 🟢
Staking MinerStaking Miner v2 🟢
Nominator ToolsValidator Selection ⚪, Polkanalyzer 🟢, Polkanalyzer-app 🟡

Signatures

ComponentsExisting projectsPotentially interesting projects
SR25519rust 🟢(contains partial bindings for C, JavaScript, and Python), .Net bindings ⚪, C(old), C(new), C/C++ ⚪, C# ⚪, Go 🟡, java ⚪, PHP
Signature Aggregationapk-proofs
Distributed key generation (DKG) or managementkeygen.rs ⚪, Secure Wallet Origin Distribution (SWORD)
Validator HSMsZondax Remote Signer
MPCOrochi Network 🟡

Consensus

ComponentsExisting projectsPotentially interesting projects
PoCSpartan
PoWPoW consensus for Substrate ⚪, RandomX ⚪, Sha3 PoW
Block productionBABE ⚪, Aura
FinalityGRANDPA ⚪, AlephBFT 🟢
OtherNimbus: Upgradeable consensus framework

Networking

ComponentsExisting projectsPotentially interesting projects
SCALE CodecRust 🟢, TypeScript ⚪, Python 🟢, Golang Chainsafe 🟢, Golang Itering 🟢, C ⚪, C++ 🟡, JavaScript 🟢, AssemblyScript ⚪, Haskell ⚪, Java ⚪, Ruby ⚪, Dart ⚪, Swift ⚪, scale-codec-swift ⚪, scale-codec-kotlin ⚪, PHP 🟡, JavaScript by Soramitsu ⚪, Scale Codec Comparator 🟢, ScaleCodec.sol by Darwinia ⚪, ScaleCodec.sol by Snowfork 🟢, Dotscale
Networking Frameworklibp2p 🟡
DHT CrawlerGo ⚪, Kotlin
RPC Tor-like accessWhiteNoise

Primitives

ComponentsExisting projectsPotentially interesting projects
StorageMerkle Tree DB
Merkle ProofsSolidity Trie Verifier 🟡

Contributing

Pull requests, issues, or other contributions from the community are encouraged! You can not only +Provenance and many others not pictured below.

|------|--------|------------|
| DeFi | Gaming | Provenance |
|______|________|____________|
Dapps
|--------------------------/-|
| Explorers, Wallets / |
|------------------------/---|
| Tools, Apis, Languages/ |
|----------------------/-----|
| 2nd layer protocols / |
|--------------------/-------|
| Chains / other |
|------------------/--- --|
| *Polkadot* | tech |
|------------------\---------|
| P2P, Crypto, Wasm \ |
|--------------------\-------|

Layers of Polkadot Stack

In the below sections, you can find a list of different layers of the Polkadot Stack.

Maintenance Status:

  • 🟢 Actively maintained
  • 🟡 Stale (no activity on the main branch for one month)
  • ⚪ Unmaintained (no activity on the main branch for more than three months)

Wallets

ComponentsExisting projectsPotentially interesting projects
Web WalletsMultix 🟢, Polkasafe 🟡, polkadot-js/apps 🟢, Talisman Web Application 🟢, mydotwallet ⚪, Sub ID 🟢, Primis ⚪, Sakura ⚪, Web3Box ⚪, Coong Wallet 🟡, Subscan Multisig UI - React 🟡, Subscan Multisig UI ⚪, Dorafactory-Multisig ⚪, Capi Multisig AppUser-friendly Wallet based on the Recovery Pallet, Web wallets focused on user-onboarding (e.g. using localStorage)
Desktop Walletsnova-spektr 🟢, Omni desktopEnterprise Wallets
Browser ExtensionsTalisman-Extension 🟢, SubWallet-Extension 🟢, Enkrypt 🟡, Polkadot{.js} 🟢, PolkaGate 🟢, Doter ⚪, Speckle OS ⚪, Kuma Cross-chain Wallet 🟡Sign-in with your Polkadot, Kusama, etc. account.
Mobile WalletsNova Wallet iOS 🟢, Nova Wallet Android 🟢, Polkadot Vault 🟢, Fearless Wallet Android 🟢, Fearless Wallet iOS 🟢, SubWallet-Mobile ⚪, Kampela 🟡, AirGap 🟢, Interstellar Network 🟡, Lunie ⚪, Polkawallet ⚪, imToken ⚪, Stylo ⚪, Fractapp ⚪, Hashed Wallet
Burner Wallets/Faucet/Giftsdotdrop ⚪, KodaDot ⚪, Astar Faucet Bot ⚪, Generic sybil-resistant faucet ⚪, sybil-resistant Chat Bot FaucetFaucet (a sybil-resistant way to receive free tokens)
Wallet PluginsMetamask-Snap by Chainsafe 🟢
CLI WalletSubwallet ⚪, Proxy-hot-wallet
Hardware WalletsLedger Polkadot 🟡, Ledger Kusama 🟡, Ledger Statemint ⚪, Ledger Statemine 🟡Trezor

User Interface

ComponentsExisting projectsPotentially interesting projects
Block ExplorersCalamar 🟢, Polkaholic 🟢, Polkascan ⚪, Polkastats ⚪, Subscan ⚪, Statescan ⚪, Edgscan ⚪, Sirato ⚪, ink! Explorer API ⚪, Substats ⚪, Hybrid Block Explorer 🟡Mempool focused explorer (including parachain transaction)
Validator DashboardsPolkadot Telemetry 🟢, Polkacube ⚪, YieldScan ⚪, Hubble ⚪, Cyclops 🟡, Web3Go 🟡
Node ExplorersPolkadot Node Explorer
NFT ExplorerNFT Explorer for Kusama & Polkadot 🟢
Governance DashboardsPolkadot Delegation Dashboard 🟢, Polkassembly ⚪, dotreasury 🟢, Bright Treasury ⚪, OpenSquare offchain voting 🟡, OpenGov Insights ⚪, Treasury Tracker 🟡UI for the Kusama and/or Polkadot treasury (see bounty module), UI for Parachain Lease Offering (PLO)
StakingStaking Rewards Collector ⚪, Staking Rewards Viewer ⚪, Polkadot Staking Site ⚪, Polkadot Staking Dashboard 🟢, Polkadot/Kusama Validator Selector ⚪, Staking Income CSV Generator
Bridge UIParity Bridges UI ⚪, Donut Interface (Steem - Dot)
Parachain/CrowdloanParachains.Network ⚪, PolkAuction ⚪, Crowdloan Front End Template ⚪, Slothunter 🟢
IdenticonPolkicon 🟢, PolkadotWebIdenticon ⚪, Polkadot Angular IdentIcon ⚪, Bird Identicon
OtherPolkadot Cloud 🟢, KappaSigmaMu Fratority 🟢, Quadratic Funding Webapp 🟡, Polkawatch, Bytepay ⚪, charging-management-platform ⚪, subidentity-webapp ⚪, OpenSquare Paid QA ⚪, DotPulse ⚪, Rubeus Keeper ⚪, Polkaflow ⚪, ChainViz 🟡, Dotsight 🟢, Lastic 🟢zkLogin, Portfolio Viewer like Zapper or Zerion

Tools, APIs, and Languages

ComponentsExisting projectsPotentially interesting projects
Runtime/Parachain frameworksPolkadot Blockchain SDK 🟢, Gosemble ⚪, Subsembly ⚪, Parachain utilities ⚪, Gantree ⚪, Cryptex 🟢Tools to create parachains with other frameworks, like the Cosmos SDK or Polygon CDK
Client LibrariesPolkadot API - Typescript 🟢, Capi - Typescript ⚪, sub-api 🟢, Go 🟡, .Net ⚪, .NET Standard 2.0 🟡, Substrate .NET Toolchain 🟡, C++ ⚪, C ⚪, Haskell ⚪, Javascript 🟢, Substrate API Sidecar - TypeScript 🟢, Python 🟢, Java (+ Android) ⚪, Substrate Client Java ⚪, Rust SCS 🟢, Rust Parity (subxt) 🟢, Rust pdotc PHP (gmajor-encrypt) ⚪, PHP (neha0921) ⚪, RPC-Ethereum 🟢, Swift 🟢, Kotlin ⚪, substrate-client-kotlin ⚪, substrate-client-swift ⚪, Dart 🟢, Substrate Core Polywrapper ⚪, Substrate SDK iOS 🟡, Substrate SDK Android 🟡
RPC GatewaySubway 🟢
Substrate Contract clientsPatractGo
Easy Runtime DevelopmentSubalfred 🟢, substrate-stencil ⚪, Play Substrate 🟡, substrate-node-template ⚪, Substrate Playground 🟡, AssemblyScript Runtime Generation ⚪, Substrate Package Manager ⚪, Subsembly: Framework for developing AssemblyScript Substrate Runtimes ⚪, dependency diener
IDE PluginsSubstrate Marketplace VS Code Plugin ⚪, VS Code Plugin ⚪, Atom Code Plugin ⚪, zombienet extension
Runtime/Pallet SecuritySubstrate Runtime Fuzzer 🟢, Substrate Toml Lint ⚪, K specifications 🟢, PolPatrol - Polkadot Runtime CheckerAutomated Runtime checking tools, economic audit simulator such as gauntlet.network
Smart Contract Languagesink! 🟢, Ask! 🟢, Subscript ⚪, Solang 🟢, pallet-move 🟢, Move VM Substrate ⚪, Move smart contract by Neatcoin ⚪, eBPF Contracts Hackathon ⚪, PolkaVM 🟢Functional Programming Languages, other languages with developed toolchains
TestingPolkadot introspector 🟢, Subshell 🟢, substrate-simnode ⚪, Halva ⚪, Redspot ⚪, MixBytes Tank ⚪, sub-flood ⚪, Substrate debug-kit ⚪, Asset CLI tool 🟡, sub_crash ⚪, subwasm 🟡, subsee ⚪, polkadot-lab ⚪, RPC-perf
Static AnalysisSubstrace ⚪, Static analyzer for Substrate FRAME's pallets ⚪, CoinFabrik Scout 🟡
TestnetZombienet 🟢, Chopsticks 🟢, Polkadot Launch ⚪, polkadot-starship ⚪, Fork off Substrate ⚪, try-runtime-cli 🟢, Parachain Launch 🟢, Larch Zombienet GUI 🟢
BenchmarkingBenchmarking CLI 🟢, Polkadot sTPS 🟡, Clockchain ⚪, Substrate Graph Benchmarks ⚪, ink! & pallet benchmarking template ⚪, smart-bench 🟡
Blockchain Indexing EngineSquid SDK 🟢, Hybrid Indexer 🟢, Substrate Archive ⚪, PSQL Indexer ⚪, Substrate Graph ⚪, Subquery 🟢, MBELT3 🟡, stick 🟢, Hyperdot
Blockchain/Event MonitoringWeb3 Guardian ⚪, Aurras Event Manager 🟢, @commonwealth/chain-events ⚪, Massbit ⚪, Polkadot Basic Notifications ⚪, Ocelloids 🟢, Tracking Chain 🟢,
GamingCrossbowAmethyst + Substrate
No-code PlatformsEzCode's Polkadot.js plugin on Bubble.io ⚪, Blackprint Visual Programming Polkadot.js module ⚪, SubRelay
WalletsTalisman Connect 🟡, SubWallet-SubConnect 🟡, Metadata Portal 🟢, Tesseract 🟡, WalletConnect ⚪, BitGoJS 🟢
XCMTrappist 🟢, XCM-tools ⚪, XCM-tools Golang ⚪,ParaSpell ⚪, XBI ⚪, XCM TS/JS SDK ⚪, XCMSend 🟢, XCM Monitoring Server 🟢
Otherasset-transfer-api 🟢, txwrapper-core 🟢, open-web3 JS library ⚪, VM-Bridge ⚪, srtool 🟢, srtool-cli 🟡, Substrate Tip Bot 🟢, ORI (Onchain Risk Intelligence) ⚪, PolkaTools ⚪, polkadot-scripts 🟢, Sube 🟢, data-store-sidecar ⚪, SugarFunge ⚪, substrate-wasmedge ⚪, EightFish ⚪, Sandox 🟢, APK verifier 🟡

ink! Smart Contracts

ComponentsExisting projectsPotentially interesting projects
Core Librariesink! 🟢, cargo-contract 🟢, pallet-contracts 🟢
Local Nodessubstrate-contracts-node 🟢, Swanky 🟡
Smart Contract DevelopmentDRink! 🟢, contracts-ui 🟢, OpenBrush ❔, Sol2Ink ⚪, Polkadot Contract Wizard 🟢, ink-wrapper 🟢, ink-playground ⚪, ink! Remix Plugin ⚪, Signac ⚪, ink!-boxes 🟡, ink!-smart-contract-wizard
Security & Testingink! Waterfall ⚪, Verifier Image for ink! ⚪, Patron 🟡
Frontend Developmentink!athon Boilerplate 🟢, useink 🟢, useInkathon 🟢, ink-typegen 🟢, Typechain Polkadot
IDE Pluginsink! Analyzer 🟢
BridgesDante Protocol
DeFiPendulum-Ink-Wrapper 🟢, Panorama Swap 🟢, ink_bank ⚪, Polkadot AMM ⚪, Vera ⚪, Nsure Insurance ❔, Everlasting Cash ⚪, Coinversation ⚪, zenlink-dex-contract ⚪, AlgoCashNew seigniorage-style stable coins
GamingOpen Emoji Battler ⚪, NewOmega
DAOSyncraDAO ⚪, subDAO ⚪, RainbowDAO ⚪, MangoBox ⚪, MangoSale 🟢
Identity/DIDDotflow 🟢
OraclesDIA WASM Oracle
Spam ProtectionProsopo 🟢
GovernanceAbax Governance 🟡
NFTArtZero 🟡
OtherPolkadot Smart Account 🟡, magink ⚪, ink-test-contracts 🟡, Candle Auctions ⚪, polkasign-contract ⚪, OCEX ⚪, Roloi ⚪, OpenPayroll ⚪, BlockchainFoodOrder 🟡

Chains and Pallets

ComponentsExisting projectsPotentially interesting projects
Scalable TransactionsPerun channels ⚪, CLI demo of Perun ⚪, Astar 🟢, Celer ⚪, Gunclear ⚪, TPScore 🟡roll-ups, DAG-based consensus mechanisms, side chains
BridgesinterBTC 🟡, DKG Substrate 🟡, Sygma 🟡, EOS by Bifrost ⚪, POA - Substrate ⚪, Substrate - Ethereum DAI Bridge ⚪, Substrate - Substrate Bridge ⚪, BTC by ChainX 🟢, Cosmos-Substrate bridge ⚪, Substrate IBC Pallet ⚪, Polkadot Ethereum Bridge 🟢, Darwinia 🟢, Spacewalk: a Stellar bridge 🟢, Filecoindot ⚪, Axelar-SubstrateZCash
PrivacyZeroChain ⚪, xx network ⚪, pLibra (Phala Network) 🟢, Automata Network ⚪, Zero Network 🟢, Silent DataMulti-Asset Shielded Pool (MASP) , Zkay, Zexe
ZKPZeroPool ⚪, Megaclite ⚪, zkMega ⚪, PLONK for Substrate ⚪, Webb Anchor Protocol ⚪, zk-SNARKs tutorial ⚪, substrate-zk 🟢
TEEAcurast 🟢, Integritee 🟢, substraTEEKeysafe Protocol
DeFiPrivaDEX ⚪, Fusotao ⚪, Reef ⚪, Diora ⚪, Pendulum Chain 🟢, Compound Gateway ⚪, Parallel Finance 🟢, PINT ⚪, Laminar Chain ⚪, Acala 🟢, Centrifuge 🟢, Stafi 🟡, Definex ⚪, OAX Foundation ⚪, Cybex ⚪, Zenlink ⚪, Swaps Pallet ⚪, Polkadex 🟡, SubDEX ⚪, HydraDX 🟢, Substrate Stablecoin ⚪, Standard protocol ⚪, Polkaswap 🟢, Curve AMM ⚪, Konomi Network ⚪, Stable Asset 🟢, Libra Payment ⚪, Mangata 🟢, Tidechain 🟡, Basilisk ⚪, Polymesh 🟢DEX with privacy and confidentiality features such as those found in a dark pool
Smart contract chainsmoonbeam 🟢, Magnet 🟢, Aleph-node 🟢, Edgeware ⚪, ParaState ⚪, gear 🟢, CENNZnet ⚪, SkyeKiwi ⚪, OAK-blockchain 🟢, ICE Blockchain ⚪, Polkadot Smart Chain ⚪, Madara - Cairo/Starknet 🟢smart contract chains with novel security approaches, smart contract chains based on existing toolchains
OracleTellor 🟡, Laminar 🟢, Chainlink-polkadot ⚪, Ares Protocol ⚪, Kylin Network ⚪, interbtc-clients oracle 🟢, Anonima ⚪, SaaS3 ⚪, Tellor ⚪, Bridgestate Oracle
Identity/DIDParami ⚪, Litentry 🟢, pallet-did ⚪, dot-id
IoTNodle 🟢, MXC/DataHighway ⚪, peaq-network-node 🟢
Verifiable ClaimsKILT 🟢, Dock 🟢, Fennel Protocol 🟢
Supply chainDSCP Node 🟢
Health care
Music IndustryAllfeat Network 🟢
Data AvailabilityAvail 🟢, Melodot 🟢
Social NetworkingFrequency 🟢, Social Network ⚪, SubSocial 🟢, ZeroDAO ⚪, Myriad Node 🟢, Wika Network ⚪, Project Liberty 🟢, Listen ⚪, Tribal Protocol ⚪, Five Degrees on Substrate ⚪, Acuity SocialPrivate instant messenger that uses on-chain identity
Governance/DAOAisland Node 🟡, Hashed Network ⚪, Sunshine DAO ⚪, Governance OS ⚪, Idavoll Network ⚪, Substrate Moloch ⚪, QRUCIAL-DAO ⚪, Societal 🟡, DAOs 🟢, Shivarthu 🟢, Faterium 🟢, Supersig ⚪, GenesisDAO 🟢, DAO Entrance ❔, LiberlandConsul - Open Government and E-Participation Web Software
Prediction Markets and FutarchyZeitgeist 🟢, X Predict Market
MessagingHOPR ⚪, Nolik ⚪, Uke 🟢, Diffy Chat
File Storage, CloudSubsocial-Offchain 🟡, DatDot 🟢, Crust Network 🟢, offchain::ipfs ⚪, Canyon Network ⚪, CESS 🟢, CESS Proving Subsystem ❔, Iris ⚪, fmd-cess ⚪, IPFS Frame V3 ⚪, Threefold Chain 🟢, Apron ⚪, IPFS Utilities
Name ServiceSubstrate Names ⚪, ENS on Substrate ⚪, PNS-Pallets ⚪, Faceless ⚪, Anchor 🟡
GamingBit.country 🟢, SubGame ⚪, subzero ⚪, Web3Games ⚪, Ajuna Network 🟢, Gafi Network ⚪, Asylum 🟢, 3DPass 🟢, Polket
Computation/AIDeepBrain Chain 🟡, AI Infrastructure on Blockchain
Enable specific use-casespallet-hookpoints 🟡, Robonomics ⚪, UniversalDOT ⚪, Evercity Sustainable Finance Protocol ⚪, Fennel Protocol 🟢, logion 🟢
NFTternoa 🟢, FRAME Pallet: NFTs for Substrate ⚪, Unique NFT Parachain 🟡, DNFT ⚪, RMRK-Substrate ⚪, NT-NFTs ⚪, Green Lemon ⚪, Basilisk
RandomnessDKG and Randomness Beacon ⚪, drand-substrate-client
LicensingAnagolay Network
Banking IntegrationFIAT on-off-ramp
CrowdfundingImbue Network 🟢, Quadratic Funding pallet by Dora ⚪, Quadratic Funding pallet by OAKMinimum Anti-Collusion Infrastructure (MACI)
Collection of PalletsSubstrate Open Runtime Module Library 🟢, warehouse ⚪, InvArch FRAME Pallet Library 🟢
MarketplacesDot Marketplace ⚪, Gated Marketplace ⚪, Ventur
Carbon CreditsBitGreen ⚪, Carbon Assets Pallet ⚪, Sequester Pallets
UTXOTuxedo 🟢
OtherMoonkit 🟢, Substrate Account Filter ⚪, Subtensor 🟢, AdMeta 🟢, Chocolate Node ⚪, Virto Network 🟢, Substrate Validator Set 🟡, DEIP ⚪, DeBio 🟢, MathChain ⚪, encointer 🟡, Grassland ⚪, Substrate-Tutorials ⚪, Fair Squares ⚪, Totem Live Accounting ⚪, Escrow Pallet ⚪, TREX ⚪, Relation Graph ⚪, Decentralized Invoice ⚪, Redstone Network ⚪, Access Control Pallet ⚪, Omniverse DLT ⚪, ISMP 🟢, XCMP 🟢, CORD Chain 🟢Decentralized review/reputation system

Host

ComponentsExisting projectsPotentially interesting projects
RustSubstrate ⚪, Cumulus
C++Kagome 🟢, Mayon
GoGossamer 🟢
JavaFruzhin 🟢, Java Host Research
AssemblyScript
Light Clientsmoldot 🟢, Substrate Connect 🟢, C++ Polkadot Light Client
TestingPolkadot Conformance 🟢, Polkafuzz

Network Maintenance Tools

ComponentsExisting projectsPotentially interesting projects
Secure validator setupPolkadot Validation Node Ansible Setup ⚪, W3F Polkadot Validator Setup ⚪, polkadot-ansible 🟢
High availability setupArchipel ⚪, Polkadot Failover Mechanism ⚪, Datagen 🟡, High Availability Validator Setup
Load Balanced Endpointsterragrunt-polkadot ⚪, Geometry Labs' Substrate Meta repo
Deployment ToolsPolkadot Package Manager ⚪, PolkaHub ⚪, Avado ⚪, Polkadot Deployer ⚪, Unified Collator Deployment
Validator monitoringONE-T 🟢, SubVT 🟢, P.A.N.I.C. ⚪, Polkalert ⚪, B-Harvest ⚪, nmonpolkadot ⚪, Polkadot-K8s-Monitor 🟢, Polkadot-Watcher ⚪, 1KV Telegram Bot
Validator payout managementSubstrate validator auto payout ⚪, Polkadot Payouts ⚪, staking-payouts CLI ⚪, Payctl ⚪, crunch 🟡
Staking MinerStaking Miner v2 🟢
Nominator ToolsValidator Selection ⚪, Polkanalyzer 🟢, Polkanalyzer-app 🟡

Signatures

ComponentsExisting projectsPotentially interesting projects
SR25519rust 🟢(contains partial bindings for C, JavaScript, and Python), .Net bindings ⚪, C(old), C(new), C/C++ ⚪, C# ⚪, Go 🟡, java ⚪, PHP
Signature Aggregationapk-proofs
Distributed key generation (DKG) or managementkeygen.rs ⚪, Secure Wallet Origin Distribution (SWORD)
Validator HSMsZondax Remote Signer
MPCOrochi Network 🟡

Consensus

ComponentsExisting projectsPotentially interesting projects
PoCSpartan
PoWPoW consensus for Substrate ⚪, RandomX ⚪, Sha3 PoW
Block productionBABE ⚪, Aura
FinalityGRANDPA ⚪, AlephBFT 🟢
OtherNimbus: Upgradeable consensus framework

Networking

ComponentsExisting projectsPotentially interesting projects
SCALE CodecRust 🟢, TypeScript ⚪, Python 🟢, Golang Chainsafe 🟢, Golang Itering 🟢, C ⚪, C++ 🟡, JavaScript 🟢, AssemblyScript ⚪, Haskell ⚪, Java ⚪, Ruby ⚪, Dart ⚪, Swift ⚪, scale-codec-swift ⚪, scale-codec-kotlin ⚪, PHP 🟡, JavaScript by Soramitsu ⚪, Scale Codec Comparator 🟢, ScaleCodec.sol by Darwinia ⚪, ScaleCodec.sol by Snowfork 🟢, Dotscale
Networking Frameworklibp2p 🟡
DHT CrawlerGo ⚪, Kotlin
RPC Tor-like accessWhiteNoise

Primitives

ComponentsExisting projectsPotentially interesting projects
StorageMerkle Tree DB
Merkle ProofsSolidity Trie Verifier 🟡

Contributing

Pull requests, issues, or other contributions from the community are encouraged! You can not only add specific projects, but also potentially interesting fields/areas which are currently missing in the tech stack.

❗ All technologies listed above need to be open-source. Ideally, the links lead directly to the code.

Note: You will need a GitHub account to suggest changes or open issues. If you do not have one, you -may sign up for free.

- +may sign up for free.

+ \ No newline at end of file diff --git a/docs/build-oracle.html b/docs/build-oracle.html index 03cc3f3d7d13..c88375b03702 100644 --- a/docs/build-oracle.html +++ b/docs/build-oracle.html @@ -19,7 +19,7 @@ - + @@ -49,7 +49,7 @@ ecosystem develops and oracle parachains begin to appear, this article will be updated with a comparison of the different solutions and the benefits and drawbacks that each provide.

- + \ No newline at end of file diff --git a/docs/build-pdk.html b/docs/build-pdk.html index 4e6a4f3d526b..ca9a82ee43cb 100644 --- a/docs/build-pdk.html +++ b/docs/build-pdk.html @@ -19,7 +19,7 @@ - + @@ -188,7 +188,7 @@ transition into a Relay Chain.

For more information on how parathread per-block auctions work, see the more detailed parathread page.

Resources

- + \ No newline at end of file diff --git a/docs/build-protocol-index.html b/docs/build-protocol-index.html index 36f9c520017a..fa80dd5f5c74 100644 --- a/docs/build-protocol-index.html +++ b/docs/build-protocol-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/build-protocol-info.html b/docs/build-protocol-info.html index 1c102a0d4da6..ba169ce3804c 100644 --- a/docs/build-protocol-info.html +++ b/docs/build-protocol-info.html @@ -19,7 +19,7 @@ - + @@ -157,7 +157,7 @@ to cancel a runtime upgrade. Using a finalized depth of ten blocks should be safe.

Note that block production and finality are isolated processes in Polkadot, and the chain can have a long unfinalized head.

Do users need to interact with any smart contracts?

No, users interact directly with the chain's logic.

Does Polkadot have state rent?

No, Polkadot uses the existential deposit to prevent dust accounts and other economic mechanisms like locking or reserving tokens for operations that utilize state.

What is an external source to see the current chain height?

- + \ No newline at end of file diff --git a/docs/build-smart-contracts.html b/docs/build-smart-contracts.html index 60d3aee0d5b9..970bb3e94f04 100644 --- a/docs/build-smart-contracts.html +++ b/docs/build-smart-contracts.html @@ -19,7 +19,7 @@ - + @@ -144,7 +144,7 @@ Substrate and Polkadot StackExchange to ask their questions. As always, keep up to date with Polkadot and Kusama by following the social channels.

- + \ No newline at end of file diff --git a/docs/build-storage.html b/docs/build-storage.html index 54b1f6143711..184643f4f09b 100644 --- a/docs/build-storage.html +++ b/docs/build-storage.html @@ -19,7 +19,7 @@ - + @@ -59,7 +59,7 @@ directory info will not be visible if you switch to a new browser or clear the browser cache. The storage module allows you to export file directory info from the current browser and import it to the new browser.

manage file dir

note

These above images are taken from this pull request

- + \ No newline at end of file diff --git a/docs/build-tools-index.html b/docs/build-tools-index.html index 2c732e605526..e8e5b365c942 100644 --- a/docs/build-tools-index.html +++ b/docs/build-tools-index.html @@ -19,7 +19,7 @@ - + @@ -107,7 +107,7 @@ Squid Archive Registry
  • Polka-store - A tool which scans a Substrate chain and stores balance-relevant transactions in an SQLite database.
  • Substrate-graph - A compact indexer for Substrate based nodes providing a GraphQL interface.
  • - + \ No newline at end of file diff --git a/docs/build-transaction-construction.html b/docs/build-transaction-construction.html index c97c552cf8e1..e1aa2b78a880 100644 --- a/docs/build-transaction-construction.html +++ b/docs/build-transaction-construction.html @@ -19,7 +19,7 @@ - + @@ -59,7 +59,7 @@ author_submitAndWatchExtrinsic, the latter of which will subscribe you to events to be notified as a transaction gets validated and included in the chain.

    Notes

    Some addresses to use in the examples. See Subkey documentation.

    $ subkey --network polkadot generate
    Secret phrase `pulp gaze fuel ... mercy inherit equal` is account:
    Secret seed: 0x57450b3e09ba4598 ... ... ... ... ... ... ... .. 219756eeba80bb16
    Public key (hex): 0x2ca17d26ca376087dc30ed52deb74bf0f64aca96fe78b05ec3e720a72adb1235
    Account ID: 0x2ca17d26ca376087dc30ed52deb74bf0f64aca96fe78b05ec3e720a72adb1235
    SS58 Address: 121X5bEgTZcGQx5NZjwuTjqqKoiG8B2wEAvrUFjuw24ZGZf2

    $ subkey --network polkadot generate
    Secret phrase `exercise auction soft ... obey control easily` is account:
    Secret seed: 0x5f4bbb9fbb69261a ... ... ... ... ... ... ... .. 4691ed7d1130fbbd
    Public key (hex): 0xda04de6cd781c98acf0693dfb97c11011938ad22fcc476ed0089ac5aec3fe243
    Account ID: 0xda04de6cd781c98acf0693dfb97c11011938ad22fcc476ed0089ac5aec3fe243
    SS58 Address: 15vrtLsCQFG3qRYUcaEeeEih4JwepocNJHkpsrqojqnZPc2y
    - + \ No newline at end of file diff --git a/docs/builders-program.html b/docs/builders-program.html index bfd0ea41035c..76650ace3fe1 100644 --- a/docs/builders-program.html +++ b/docs/builders-program.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ form of tooling, UI, middleware, bridges, and more.

    Application track

    This track supports builders who are building on top of Substrate-based chains.

    Check out the official Substrate Builders Program site for more information and steps on how to apply.

    - + \ No newline at end of file diff --git a/docs/community-index.html b/docs/community-index.html index 51275ae1113b..b26e0de4c9b3 100644 --- a/docs/community-index.html +++ b/docs/community-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/community.html b/docs/community.html index 528639248e01..fc98fb7b1499 100644 --- a/docs/community.html +++ b/docs/community.html @@ -19,7 +19,7 @@ - + @@ -60,7 +60,7 @@ development and where there's room for your contributions.
  • Teams Building on Polkadot - Community maintained list of teams building on Polkadot and/or Substrate. (Note that this may contain inaccuracies, as it's unofficial).
  • - + \ No newline at end of file diff --git a/docs/contributing.html b/docs/contributing.html index a39db2ebfbfd..9b427086eb33 100644 --- a/docs/contributing.html +++ b/docs/contributing.html @@ -19,7 +19,7 @@ - + @@ -58,7 +58,7 @@ the official crowdin knowledge base as well.




    The following shows an example in Arabic. You can type in your desired translation for each section in the provided area, while using the suggestions generated by the crowdin built-in translator.


    Make sure to save your translation.

    - + \ No newline at end of file diff --git a/docs/contributors.html b/docs/contributors.html index 3f7617f78f3a..39d9207af5b1 100644 --- a/docs/contributors.html +++ b/docs/contributors.html @@ -19,7 +19,7 @@ - + @@ -95,7 +95,7 @@ for the Polkadot protocol. He contributed in creating written content and example applications that demonstrate how to use these new technologies.

    You can now find Logan leading efforts to define the prediction market space at Zeitgeist.

    - + \ No newline at end of file diff --git a/docs/dashboards-index.html b/docs/dashboards-index.html index f419abdbfb5a..03ffcfb43a2b 100644 --- a/docs/dashboards-index.html +++ b/docs/dashboards-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/dev-heroes.html b/docs/dev-heroes.html index d0178e8079a1..31028aa5c1d0 100644 --- a/docs/dev-heroes.html +++ b/docs/dev-heroes.html @@ -19,7 +19,7 @@ - + @@ -40,7 +40,7 @@ open source technology stack list and contribute with a pull request, an issue, or find and fix bugs.

  • Create content: Write a blog post, record a video tutorial, and write a Twitter thread. Share about your latest coding success, something you learned and are excited about.

  • Speak at events: Do a workshop or talk at meetups and conferences.

  • - + \ No newline at end of file diff --git a/docs/explore-index.html b/docs/explore-index.html index ad995cf241fb..6731c495aef7 100644 --- a/docs/explore-index.html +++ b/docs/explore-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/faq.html b/docs/faq.html index 5e44beec9479..562517cb9f9d 100644 --- a/docs/faq.html +++ b/docs/faq.html @@ -19,7 +19,7 @@ - + @@ -189,7 +189,7 @@ fee calculation page in the Substrate documentation for more detailed information.

    Answered by Gav series

    The "Answered by Gav" series is a collection of posts uploaded to Reddit of questions that have been asked in the Polkadot Watercooler Riot channel and answered by Polkadot founder Gavin Wood.

    - + \ No newline at end of file diff --git a/docs/general-index.html b/docs/general-index.html index 8c63d931da15..bedcb08fce39 100644 --- a/docs/general-index.html +++ b/docs/general-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/getting-started.html b/docs/getting-started.html index e4f1f6020d24..29b27d5e898e 100644 --- a/docs/getting-started.html +++ b/docs/getting-started.html @@ -19,7 +19,7 @@ - + @@ -112,7 +112,7 @@ about Polkadot.
  • Sample Applications - Sample applications that are built on or currently being built for Polkadot.
  • Contributing Guide - Rules for contributing to the wiki.
  • Polkadot Knowledge Base - Troubleshooting resources for specific errors and problems.
  • - + \ No newline at end of file diff --git a/docs/glossary.html b/docs/glossary.html index b74f86c0c79b..3a4d3c6aecb5 100644 --- a/docs/glossary.html +++ b/docs/glossary.html @@ -19,7 +19,7 @@ - + @@ -291,7 +291,7 @@ transaction weights and fees.

    Witness

    Cryptographic proof statements of data validity.

    Whitelist Pallet

    Allows one Origin to escalate the privilege level of another Origin for a certain operation. In terms of OpenGov, it allows the Fellowship to authorise a new origin (which we will call Whitelisted-Root) to be executed with Root-level privileges.

    - + \ No newline at end of file diff --git a/docs/governance-apps.html b/docs/governance-apps.html index 83b46cc7ebe7..1ada17b63392 100644 --- a/docs/governance-apps.html +++ b/docs/governance-apps.html @@ -19,7 +19,7 @@ - + @@ -48,7 +48,7 @@ node, ensuring real-time accuracy.

    Dive into the world of Polkadot governance with Polkassembly and be an active part of the future! For deeper insights or specific tutorials, please refer to the official documentation at https://docs.polkassembly.io.

    - + \ No newline at end of file diff --git a/docs/grants.html b/docs/grants.html index 186f1e9a8dd6..52c4c2401202 100644 --- a/docs/grants.html +++ b/docs/grants.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@ Foundation has considered new ways to distribute KSM for people who need KSM to build.

    If you are interested in obtaining KSM for building or research, you can apply through the Treasury or receive a tip for doing something cool in the community.

    Other Grant Programs

    Below is a list of other grant programs in the Polkadot/Substrate ecosystem.

    - + \ No newline at end of file diff --git a/docs/how-to-dyor.html b/docs/how-to-dyor.html index 776ad8997807..2d07201555af 100644 --- a/docs/how-to-dyor.html +++ b/docs/how-to-dyor.html @@ -19,7 +19,7 @@ - + @@ -219,7 +219,7 @@ aims to bring to the ecosystem.

    This does not fall under fact-checking and verifying claims, but it is important to mention: fully understanding what something does and its prospective impact is an integral part of making an informed decision, so do not overlook it.

    - + \ No newline at end of file diff --git a/docs/kusama-adversarial-cheatsheet.html b/docs/kusama-adversarial-cheatsheet.html index a2031f0a2e50..694e10c4c501 100644 --- a/docs/kusama-adversarial-cheatsheet.html +++ b/docs/kusama-adversarial-cheatsheet.html @@ -19,14 +19,14 @@ - +

    Adversarial Cheatsheet

    Expect things to break on Kusama. To help you break some things, take a look at the following threat model.

    Hacker wants to …Security promise that should prevent the hackHacking IncentiveHacking DamageHacking value details
    Double spend tokens via getting the clients to accept a different chainIntegrity (System-wide)HighHighIf attackers are able to double spend tokens, they are able to get services without paying for them. This gives them a high monetary incentive to execute the attack.
    Cause system to mint tokens to his own accountIntegrity (System-wide) MediumLow - MediumIf an attacker is able to craft transactions that mint tokens to their account, then this provides a high monetary incentive to execute this attack.
    Validate malicious blocks to double spend tokensAvailability (System-wide) HighMediumIf an attacker is able to double spend tokens, they are able to get services without paying for them. This gives them a high monetary incentive to execute the attack.
    Undermine consensus mechanism to split chainIntegrity (System-wide)HighHigh"If an attacker is able to double spend tokens, they are able to get services without paying for them. This gives them a high monetary incentive to execute the attack. Betting on decrease in value of the cryptocurrency or competitors want to damage the reputation, so that the value of their blockchain increases.
    Tamper/manipulate blockchain history to invalidate transactions (e.g. a voting result)Integrity (System-wide)MediumMedium - HighAttacker can rollback undesired transactions by intentionally invalidating the block where transaction has happened. Attacker can force a governance decision (or even an on-chain update) that favors them.
    Undermine blockchain or consensus mechanism to damage the ecosystem's reputationAvailability (System-wide)HighHighBetting on decrease in value of the cryptocurrency or competitors want to damage the reputation, so that the value of their blockchain increases
    CensorshipAvailability (System-wide)MediumHighHackers are able to block undesirable types of transactions (e.g. industry competitor transactions or referendum votes). This could be achieved by colluding with other stakeholders or by otherwise obtaining more voting power.
    Deanonymize usersConfidentiality (Node)MediumMediumParties that want to de-anonymize users can use the information to oppress the opposition (e.g. political activists).
    Steal token from nodeIntegrity (Node)HighHighAttackers that are able to steal tokens from nodes can claim assets for themselves, which gives them a high monetary incentive to execute the attack.
    Steal token from node by leaking credentialsConfidentiality (Node)HighHighAttackers that are able to steal tokens from nodes can claim assets for themselves, which gives them a high monetary incentive to execute the attack.
    Prevent node from accessing the Polkadot networkAvailability (Node)LowLow - MediumRun a targeted denial-of-service attack out of revenge, monetary interests (in case of a competing coin exchange, etc.).
    Defraud other participantsIntegrity (Node)MediumLow - MediumAttacker can abuse other participants’ misunderstanding of Polkadot's security guarantees to defraud them. Also, if the reward for calling out bad behavior can be set up so that it is higher than the according punishment, a set of self-handled nodes can be set up to generate a source cycle. Other participants are not needed for this attack.
    Defraud other participantsIntegrity (System-wide)HighHighAn attacker could abuse bugs in Polkadot's economic system to defraud other participants. For example, an attacker could exploit a logic bug to not pay transaction fees.
    - + \ No newline at end of file diff --git a/docs/kusama-bug-bounty.html b/docs/kusama-bug-bounty.html index fe13658ef53f..0d049c65a8ab 100644 --- a/docs/kusama-bug-bounty.html +++ b/docs/kusama-bug-bounty.html @@ -19,7 +19,7 @@ - + @@ -44,7 +44,7 @@ not to be disruptive or harmful to our users or us. Otherwise, your actions might be interpreted as an attack rather than an effort to be helpful.

    How to report a bug

    Please follow the instructions at web3.foundation/security-report/.

    - + \ No newline at end of file diff --git a/docs/kusama-claims.html b/docs/kusama-claims.html index d747d2b1d32c..e0c493a94fa1 100644 --- a/docs/kusama-claims.html +++ b/docs/kusama-claims.html @@ -19,7 +19,7 @@ - + @@ -98,7 +98,7 @@ Polkadot Support page.

    Third Party Claims Processes

    We do not recommend using a third-party app or process to perform your claim or acquire KSM.

    Claiming using a third-party process can lead to the loss of your allocation; therefore, we cannot recommend using any third-party apps to do so. Manually specifying your transaction data, as specified in our claims process, is the only way to be certain you will receive your allocation.

    - + \ No newline at end of file diff --git a/docs/kusama-coc.html b/docs/kusama-coc.html index f67e5e9f4bd3..6ff12265140f 100644 --- a/docs/kusama-coc.html +++ b/docs/kusama-coc.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ on feedback from the Kusama participants and/or the Polkadot community.

    Bugs

    Please understand that this network is, despite its success, an experiment with potential flaws, so it’s appreciated that community members help report any sort of exploits directly to the team before sharing publicly. Please see the bug bounty program.

    - + \ No newline at end of file diff --git a/docs/kusama-community.html b/docs/kusama-community.html index cc9190c45eb4..4f25c174cf9f 100644 --- a/docs/kusama-community.html +++ b/docs/kusama-community.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ for technical questions on building with Substrate.
  • Smart Contracts & Parity Ink! - A room to discuss developing Substrate smart contracts using Parity Ink!
  • Social

    Blogs and tutorials

    Newsletters

    - + \ No newline at end of file diff --git a/docs/kusama-getting-started.html b/docs/kusama-getting-started.html index fe34b79f7f7c..717ed65eeb03 100644 --- a/docs/kusama-getting-started.html +++ b/docs/kusama-getting-started.html @@ -19,7 +19,7 @@ - + @@ -55,7 +55,7 @@ here.

    While Kusama does not support smart contracts natively, building apps on it is still possible (e.g. RMRK.app). If you're interested in diving deeper into proper development, however, check out the builders guide.

    Additional Resources:

    - + \ No newline at end of file diff --git a/docs/kusama-index.html b/docs/kusama-index.html index c063083373e0..36811fd67de7 100644 --- a/docs/kusama-index.html +++ b/docs/kusama-index.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@

    Kusama

    Polkadot's Canary Network

    Kusama is a canary network for Polkadot; an earlier release of the code that is available first and holds real economic value. For developers, Kusama is a proving ground for runtime upgrades, on-chain governance, and parachains.

    No Promises.

    Kusama has a dedicated Wiki guide. Click on the image below to access it.

    guide
    Kusama Guide
    - + \ No newline at end of file diff --git a/docs/kusama-parameters.html b/docs/kusama-parameters.html index 3e9922369474..9f15f96621ba 100644 --- a/docs/kusama-parameters.html +++ b/docs/kusama-parameters.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ redirected into the Society's treasury to fund growth.

    Precision

    KSM have 12 decimals of precision. In other words, 1e12 (1_000_000_000_000, or one trillion) Plancks make up a single KSM.

    - + \ No newline at end of file diff --git a/docs/kusama-social-recovery.html b/docs/kusama-social-recovery.html index fa2e493ae3c8..cf8f26623731 100644 --- a/docs/kusama-social-recovery.html +++ b/docs/kusama-social-recovery.html @@ -19,7 +19,7 @@ - + @@ -66,7 +66,7 @@ either go through the council or submit a public proposal. To learn more about governance, see here.

    Further Reading

    - + \ No newline at end of file diff --git a/docs/kusama-timeline.html b/docs/kusama-timeline.html index ec70d3d9f7ab..6e07d4540147 100644 --- a/docs/kusama-timeline.html +++ b/docs/kusama-timeline.html @@ -19,7 +19,7 @@ - + @@ -57,7 +57,7 @@ forkless upgradability provided by Substrate, chaos continues, and in the spirit of chaos, more teams are eager to deploy on Kusama. The path of Kusama deployment has paved the way to Polkadot's parachains as the technology became proven.

    - + \ No newline at end of file diff --git a/docs/learn-DOT.html b/docs/learn-DOT.html index 29e9660ff341..dce4f417d6e6 100644 --- a/docs/learn-DOT.html +++ b/docs/learn-DOT.html @@ -19,7 +19,7 @@ - + @@ -91,7 +91,7 @@ through the Treasury. Alternatively, they can be obtained on the open market.

    Polkadot Mainnet DOT

    Polkadot Mainnet DOT are not freely given away. If you purchased DOT in the original 2017 offering, you may claim them via the Polkadot claims process. Alternatively, they are available on the open market.

    - + \ No newline at end of file diff --git a/docs/learn-account-abstraction.html b/docs/learn-account-abstraction.html index d12286a9e59a..f04f4c161599 100644 --- a/docs/learn-account-abstraction.html +++ b/docs/learn-account-abstraction.html @@ -19,7 +19,7 @@ - + @@ -89,7 +89,7 @@ Bader Youssef - "Abstracting Away Account Abstraction on Polkadot"
  • Parity Blog Post by Joe Petrowski - "Building a Hot Wallet with Substrate Primitives"
  • - + \ No newline at end of file diff --git a/docs/learn-account-advanced.html b/docs/learn-account-advanced.html index 9eed30aa3b6d..7d4a9021df7b 100644 --- a/docs/learn-account-advanced.html +++ b/docs/learn-account-advanced.html @@ -19,7 +19,7 @@ - + @@ -191,7 +191,7 @@ directly in the browser on the new one.

    This has been tested on Brave and Chrome, but not other browsers.

    1. Go to Polkadot-JS Apps
    2. Go to JavaScript console on the browser (Available in Developer Tools)
    3. Type in the command:
    JSON.stringify(localStorage)
    1. Copy and paste the returned string to a text editor and save the file.
    2. Check that the string you pasted begins and ends with a tick mark ('). If not, add one to the beginning and end.
    3. Save and send that file with the copied string to the new computer.
    4. On the new computer, go to Polkadot-JS Apps
    5. Open the Javascript console on the browser (Available in Developer Tools)
    6. Set a variable raw equal to the string from the text file
    raw = ... copy-pasted json from original computer ...
    1. Run the following code on the console:
    accounts = JSON.parse(raw);
    for (var key in accounts) {
    if (accounts.hasOwnProperty(key)) {
    val = JSON.stringify(accounts[key]).replace(/\\/g,'').slice(1,-1);
    console.log(key + " -> " + val);
    localStorage.setItem(key, val);
    }
    }
    1. Refresh Polkadot-JS App browser and check the Accounts and Addresses pages. All of your accounts and addresses should now be available.
    - + \ No newline at end of file diff --git a/docs/learn-account-multisig.html b/docs/learn-account-multisig.html index d71bd63d633d..ef12dea2ec67 100644 --- a/docs/learn-account-multisig.html +++ b/docs/learn-account-multisig.html @@ -19,7 +19,7 @@ - + @@ -44,7 +44,7 @@ the entities designated as the recipients come together in a new multisig under a matching threshold, they will immediately have access to these tokens.


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about multi-signature accounts.

    - + \ No newline at end of file diff --git a/docs/learn-accounts.html b/docs/learn-accounts.html index a981f65ec1ed..ab8dc2d5466f 100644 --- a/docs/learn-accounts.html +++ b/docs/learn-accounts.html @@ -19,7 +19,7 @@ - + @@ -119,7 +119,7 @@ is not given for free. In the example, we created a governance proxy, and the reserved funds for this are 0.0668 KSM.
    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about accounts.

    - + \ No newline at end of file diff --git a/docs/learn-advanced-index.html b/docs/learn-advanced-index.html index 01cbf86da233..2587c65483d7 100644 --- a/docs/learn-advanced-index.html +++ b/docs/learn-advanced-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-architecture-index.html b/docs/learn-architecture-index.html index 0f9743e95966..2b8bd6ed458d 100644 --- a/docs/learn-architecture-index.html +++ b/docs/learn-architecture-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-architecture.html b/docs/learn-architecture.html index 57b0a4af274a..ba9248b14369 100644 --- a/docs/learn-architecture.html +++ b/docs/learn-architecture.html @@ -19,7 +19,7 @@ - + @@ -86,7 +86,7 @@ verify their validity (and later, their availability).


    Whiteboard Series

    For a video overview of the architecture of Polkadot watch the video below for the whiteboard interview with W3F researcher Alistair Stewart:

    Architecture Overview

    - + \ No newline at end of file diff --git a/docs/learn-archive-index.html b/docs/learn-archive-index.html index e0ffa0417f7d..b8d6d7b20992 100644 --- a/docs/learn-archive-index.html +++ b/docs/learn-archive-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-assets-index.html b/docs/learn-assets-index.html index cd1b4451ec9d..3f1a725b704a 100644 --- a/docs/learn-assets-index.html +++ b/docs/learn-assets-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-assets.html b/docs/learn-assets.html index bd9ee91689f6..b3e2637f7c7a 100644 --- a/docs/learn-assets.html +++ b/docs/learn-assets.html @@ -19,7 +19,7 @@ - + @@ -126,7 +126,7 @@ create a 2-of-2 multisig from two pure proxies, and then set members from each group as proxies to those two accounts.

    - + \ No newline at end of file diff --git a/docs/learn-async-backing.html b/docs/learn-async-backing.html index a10af320a472..607db08901ee 100644 --- a/docs/learn-async-backing.html +++ b/docs/learn-async-backing.html @@ -19,7 +19,7 @@ - + @@ -152,7 +152,7 @@ Asynchronous Backing (Shallow)
  • Chapter 6.15. from PBA lecture material: Asynchronous Backing (Deep)
  • Polkadot Blog Post - Asynchronous Backing: Elevating Polkadot's Performance and Scale
  • - + \ No newline at end of file diff --git a/docs/learn-auction.html b/docs/learn-auction.html index f6701f5f2296..5f477096edd7 100644 --- a/docs/learn-auction.html +++ b/docs/learn-auction.html @@ -19,7 +19,7 @@ - + @@ -142,7 +142,7 @@ W3F research page on parachain allocation that goes more in depth to the mechanism
  • Research Update: The Case for Candle Auctions - W3F breakdown and research update about candle auctions
  • Front-Running, Smart Contracts, and Candle Auctions W3F Research team discusses how to remedy current blockchain auction setbacks with candle auctions
  • - + \ No newline at end of file diff --git a/docs/learn-balance-transfers.html b/docs/learn-balance-transfers.html index 2b59b64996a3..95d4e1d17b2b 100644 --- a/docs/learn-balance-transfers.html +++ b/docs/learn-balance-transfers.html @@ -19,7 +19,7 @@ - + @@ -101,7 +101,7 @@ probably not the reason for your tokens having existing references.

    Existing Non-Native Assets

    Currently, Polkadot does not use the Assets Pallet, so this is probably not the reason for your tokens having existing references.

    - + \ No newline at end of file diff --git a/docs/learn-basics-index.html b/docs/learn-basics-index.html index 49cf1f76771c..8c07eb447d90 100644 --- a/docs/learn-basics-index.html +++ b/docs/learn-basics-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-bridges.html b/docs/learn-bridges.html index 1d27facfaadf..399bf1e720cf 100644 --- a/docs/learn-bridges.html +++ b/docs/learn-bridges.html @@ -19,7 +19,7 @@ - + @@ -88,7 +88,7 @@ Edgeware chain (a Substrate-based chain) - now defunct and not maintained, but a good example.
  • XCLAIM - XCLAIM is a framework for achieving trustless and efficient cross-chain exchanges using cryptocurrency-backed assets.
  • Celer cBridge - a bridge to transfer assets from Ethereum & Binance Smart Chain to the Astar Polkadot EVM.
  • - + \ No newline at end of file diff --git a/docs/learn-collator.html b/docs/learn-collator.html index ba9c2397797c..f57206dc24dc 100644 --- a/docs/learn-collator.html +++ b/docs/learn-collator.html @@ -19,7 +19,7 @@ - + @@ -65,7 +65,7 @@ Cumulus repository. More information can be found under the Cumulus section on the build parachain page.

    Guides and Tools

    - + \ No newline at end of file diff --git a/docs/learn-comparisons-avalanche.html b/docs/learn-comparisons-avalanche.html index 0723fe3e59af..e1f7203f3f1d 100644 --- a/docs/learn-comparisons-avalanche.html +++ b/docs/learn-comparisons-avalanche.html @@ -19,7 +19,7 @@ - + @@ -113,7 +113,7 @@ need a recommended minimum of 5 validators, which make the costs of launch predictable. Avalanche has plans to implement shared security, interoperability, composability and on-chain governance features which are already offered by Polkadot.

    References

    1. The Avalanche Platform Whitepaper
    2. The Avalanche Consensus Whitepaper
    3. The AVAX Token Dynamics Paper
    4. Nakomoto vs Snow consensus
    - + \ No newline at end of file diff --git a/docs/learn-comparisons-cosmos.html b/docs/learn-comparisons-cosmos.html index e784bef04034..61130ddca10a 100644 --- a/docs/learn-comparisons-cosmos.html +++ b/docs/learn-comparisons-cosmos.html @@ -19,7 +19,7 @@ - + @@ -132,7 +132,7 @@ chain must trust the sending chain. Thus, each blockchain in the Cosmos network has its independent security mechanisms. They're independently secured and do not rely on the security of other blockchains or the hub.

    - + \ No newline at end of file diff --git a/docs/learn-comparisons-ethereum-2.html b/docs/learn-comparisons-ethereum-2.html index a087f274d9da..4d2e9c1b8ac7 100644 --- a/docs/learn-comparisons-ethereum-2.html +++ b/docs/learn-comparisons-ethereum-2.html @@ -19,7 +19,7 @@ - + @@ -157,7 +157,7 @@ enacted autonomously via forkless upgrades.
  • Validator selection mechanisms differ as Polkadot can provide strong availability and validity guarantees with fewer validators per shard.
  • - + \ No newline at end of file diff --git a/docs/learn-comparisons-index.html b/docs/learn-comparisons-index.html index 8d093ce5876d..a87cd6c6e989 100644 --- a/docs/learn-comparisons-index.html +++ b/docs/learn-comparisons-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-comparisons-kusama.html b/docs/learn-comparisons-kusama.html index b1e6d70d7d06..1959d92be514 100644 --- a/docs/learn-comparisons-kusama.html +++ b/docs/learn-comparisons-kusama.html @@ -19,7 +19,7 @@ - + @@ -76,7 +76,7 @@ the future, we’re also likely to see Kusama bridged to Polkadot for cross-network interoperability. Web3 Foundation remains committed to both networks going forward, providing crucial support and guidance to teams building for the ecosystem.

    Explore more

    - + \ No newline at end of file diff --git a/docs/learn-comparisons-rollups.html b/docs/learn-comparisons-rollups.html index 3d9b4b85f1a9..784b45c38064 100644 --- a/docs/learn-comparisons-rollups.html +++ b/docs/learn-comparisons-rollups.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,7 @@ transition data.

    Despite these drawbacks, Polkadot remains upgradable through forkless upgrades, which allows the protocol to be easily upgradable to stay in line with future technological advances.

    - + \ No newline at end of file diff --git a/docs/learn-comparisons.html b/docs/learn-comparisons.html index f6e15fcc2c8a..16b915a2e1e5 100644 --- a/docs/learn-comparisons.html +++ b/docs/learn-comparisons.html @@ -19,7 +19,7 @@ - + @@ -61,7 +61,7 @@ Chain, and as the number of validators in the active set on Polkadot are increased, more parachains can be supported.

    - + \ No newline at end of file diff --git a/docs/learn-components-index.html b/docs/learn-components-index.html index e6dea5c54801..3ce40ef24504 100644 --- a/docs/learn-components-index.html +++ b/docs/learn-components-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-consensus.html b/docs/learn-consensus.html index 4b7dd3f66d85..9cfb51fe5705 100644 --- a/docs/learn-consensus.html +++ b/docs/learn-consensus.html @@ -19,7 +19,7 @@ - + @@ -154,7 +154,7 @@ with Bill Laboon.
  • Block Production and Finalization in Polkadot: Understanding the BABE and GRANDPA Protocols - An academic talk by Bill Laboon, given at MIT Cryptoeconomic Systems 2020, describing Polkadot's hybrid consensus model in-depth.
  • - + \ No newline at end of file diff --git a/docs/learn-controller.html b/docs/learn-controller.html index 5428c2a2a453..8f8b488b2618 100644 --- a/docs/learn-controller.html +++ b/docs/learn-controller.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ used less often and usually signed by the stash.

    stash-not-as-controller

    From a practical perspective, there were two accounts, and we needed to remember two passwords. From a security perspective, the party who wanted to control our staking actions was required to control two accounts.

    - + \ No newline at end of file diff --git a/docs/learn-crowdloans.html b/docs/learn-crowdloans.html index b3616a4c9e9a..c4a93b2d51df 100644 --- a/docs/learn-crowdloans.html +++ b/docs/learn-crowdloans.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,7 @@ Apps page.

    Here is an example of the crowdloans in play during the very first Kusama auction.

    crowdloan dashboard

    Furthermore, check out this video on How to Participate in Crowdloans for steps on how to access available crowdloans on PolkadotJS apps.

    - + \ No newline at end of file diff --git a/docs/learn-cryptography.html b/docs/learn-cryptography.html index fdaf5154fef0..f3b8dee8ad9a 100644 --- a/docs/learn-cryptography.html +++ b/docs/learn-cryptography.html @@ -19,7 +19,7 @@ - + @@ -175,7 +175,7 @@ make passive attacks much harder if such a backdoor exists.

    However an alternative exists in the form of Curve25519. This algorithm has been proposed in 2006 by DJB [Curve25519]. Its main strengths are its speed, its constant-time run time (and resistance against side-channel attacks), and its lack of nebulous hard-coded constants.

    - + \ No newline at end of file diff --git a/docs/learn-extrinsics.html b/docs/learn-extrinsics.html index c883f7cc3c82..cc7fd11587df 100644 --- a/docs/learn-extrinsics.html +++ b/docs/learn-extrinsics.html @@ -19,7 +19,7 @@ - + @@ -101,7 +101,7 @@ without the possibility of verifying it.

    Defense against Attacks

    danger

    If you can't verify the extrinsic or you suspect you are signing something different than what you intended, don't sign it!

    To avoid being victim of an attack:

    • Use only trusted extensions, sites and software in general.
    • Use cold storage options (Ledger, Signer) and verify on them. Trust what these devices tell you over what is shown in the app or the browser extension.
    • Update Signer metadata only from trusted sources (or do it yourself).
    • Accept metadata updates for the extension only from trusted apps.
    - + \ No newline at end of file diff --git a/docs/learn-future-implementations-index.html b/docs/learn-future-implementations-index.html index 171dd63fe556..864aba19fa24 100644 --- a/docs/learn-future-implementations-index.html +++ b/docs/learn-future-implementations-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-governance.html b/docs/learn-governance.html index d771398efd80..d8b6f94a0fa2 100644 --- a/docs/learn-governance.html +++ b/docs/learn-governance.html @@ -19,7 +19,7 @@ - + @@ -241,7 +241,7 @@ case for why the change should be made.

    Resources

    - + \ No newline at end of file diff --git a/docs/learn-guides-accounts-index.html b/docs/learn-guides-accounts-index.html index c98823d9bc5b..cc6c66889cd2 100644 --- a/docs/learn-guides-accounts-index.html +++ b/docs/learn-guides-accounts-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-guides-accounts-multisig.html b/docs/learn-guides-accounts-multisig.html index 214e1977234b..1fa53fbbc3d8 100644 --- a/docs/learn-guides-accounts-multisig.html +++ b/docs/learn-guides-accounts-multisig.html @@ -19,7 +19,7 @@ - + @@ -88,7 +88,7 @@ Check the "How to use a multisig account" in the support docs on how to decode the multisig call data.

    - + \ No newline at end of file diff --git a/docs/learn-guides-accounts-proxy-pure.html b/docs/learn-guides-accounts-proxy-pure.html index e270cacad9e2..a191ba402a00 100644 --- a/docs/learn-guides-accounts-proxy-pure.html +++ b/docs/learn-guides-accounts-proxy-pure.html @@ -19,7 +19,7 @@ - + @@ -81,7 +81,7 @@ address but does not impact the pure proxy address. In Scenario Two, if signatories behind the pure proxies change, the address of the multisig stays the same. However, changing the number of signatories and threshold would not be possible.

    - + \ No newline at end of file diff --git a/docs/learn-guides-accounts-proxy.html b/docs/learn-guides-accounts-proxy.html index 4ced644ac550..ed760ea29acf 100644 --- a/docs/learn-guides-accounts-proxy.html +++ b/docs/learn-guides-accounts-proxy.html @@ -19,7 +19,7 @@ - + @@ -76,7 +76,7 @@ automatically ask for Charly's signature. Thus one proxy call will trigger the second one because Charly's is the only any proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's account we will need to submit all three proxy calls.

    - + \ No newline at end of file diff --git a/docs/learn-guides-accounts.html b/docs/learn-guides-accounts.html index 1afe7b5cd432..811ccc2248bd 100644 --- a/docs/learn-guides-accounts.html +++ b/docs/learn-guides-accounts.html @@ -19,7 +19,7 @@ - + @@ -121,7 +121,7 @@ encrypting/decrypting your wallet. If you cannot load a JSON file, please use the latest version of the wallet software. If you cannot load it, ensure that the wallet software uses the newest version of the Polkadot API.

    - + \ No newline at end of file diff --git a/docs/learn-guides-assets-create.html b/docs/learn-guides-assets-create.html index c1c11814aeae..8529ddd1dbf2 100644 --- a/docs/learn-guides-assets-create.html +++ b/docs/learn-guides-assets-create.html @@ -19,7 +19,7 @@ - + @@ -60,7 +60,7 @@ an ID that has already been taken. After all the details are entered, click on the next button.

    Add Asset Metadata

    • Choose the admin, issuer and the freezer accounts for your asset and click on the create button.

    Asset managing accounts

    • Sign and submit the transaction (If you like to verify the transaction details before signing, you can click on the dropdown button pointed by the arrow in the snapshot below).

    Sign asset creating transaction

    If the transaction is successful, you should see the asset and its details displayed in the Network > Assets page on the Asset Hub.

    - + \ No newline at end of file diff --git a/docs/learn-guides-assets-index.html b/docs/learn-guides-assets-index.html index f20032509f83..097609b9d090 100644 --- a/docs/learn-guides-assets-index.html +++ b/docs/learn-guides-assets-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-guides-assets-ledger.html b/docs/learn-guides-assets-ledger.html index ae90526effa8..f3ce642cb5ad 100644 --- a/docs/learn-guides-assets-ledger.html +++ b/docs/learn-guides-assets-ledger.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,7 @@ here.
  • Transfer the desired amount as described above. If you want to send exactly the amount you want to teleport, don't forget take into account the fees for teleporting that will be deducted in the next step.
  • Teleport your tokens following the instructions you will find here.
  • Teleporting to a Ledger account from a non-Ledger account doesn't require these extra steps.

    Support

    If you need support, please visit the Polkadot Support page.

    - + \ No newline at end of file diff --git a/docs/learn-guides-bounties.html b/docs/learn-guides-bounties.html index 136dffe1ffc6..e5bd5e778ef2 100644 --- a/docs/learn-guides-bounties.html +++ b/docs/learn-guides-bounties.html @@ -19,7 +19,7 @@ - + @@ -63,7 +63,7 @@ delay elapsed, follow the guidelines in the video tutorial below to learn how to claim a child bounty reward. Note that the extrinsic to claim the child bounty reward is permissionless, and anyone can initiate the claim on behalf of the beneficiary.

    Claim Child Bounty Reward

    - + \ No newline at end of file diff --git a/docs/learn-guides-identity.html b/docs/learn-guides-identity.html index bd77c2d531f0..da6adfafe401 100644 --- a/docs/learn-guides-identity.html +++ b/docs/learn-guides-identity.html @@ -19,7 +19,7 @@ - + @@ -92,7 +92,7 @@ minimumDeposit.

    Submitting a proposal

    At this point, DOT holders can endorse the motion. With enough endorsements, the motion will become a referendum, which is then voted on. If it passes, users will be able to request judgement from this registrar.

    - + \ No newline at end of file diff --git a/docs/learn-guides-index.html b/docs/learn-guides-index.html index 3e6f50e5272e..3ea0dfab166b 100644 --- a/docs/learn-guides-index.html +++ b/docs/learn-guides-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-guides-ledger.html b/docs/learn-guides-ledger.html index 5a2f4830c499..9d54a230d18a 100644 --- a/docs/learn-guides-ledger.html +++ b/docs/learn-guides-ledger.html @@ -19,7 +19,7 @@ - + @@ -75,7 +75,7 @@ extrinsics are available in the light version. The following repository by Zondax lists the currently supported Democracy extrinsics on the full ledger.

    - + \ No newline at end of file diff --git a/docs/learn-guides-polkadot-opengov.html b/docs/learn-guides-polkadot-opengov.html index b554e4d9911d..a924143e1ec4 100644 --- a/docs/learn-guides-polkadot-opengov.html +++ b/docs/learn-guides-polkadot-opengov.html @@ -19,7 +19,7 @@ - + @@ -141,7 +141,7 @@ have been met. Failing to submit the decision deposit within a -day period will lead to a referendum timeout.

    - + \ No newline at end of file diff --git a/docs/learn-guides-staking-index.html b/docs/learn-guides-staking-index.html index c02bfaa4113b..567cd043a082 100644 --- a/docs/learn-guides-staking-index.html +++ b/docs/learn-guides-staking-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-guides-staking-pools.html b/docs/learn-guides-staking-pools.html index ebe580f3e377..872da7e7a6d2 100644 --- a/docs/learn-guides-staking-pools.html +++ b/docs/learn-guides-staking-pools.html @@ -19,7 +19,7 @@ - + @@ -63,7 +63,7 @@ Polkadot-JS UI Extrinsic Tab and issue the following extrisics:

    • nominationPools.claimPayoutOthers extrinsic specifying ALICE's account. This will claim the rewards as a free balance on ALICE's account.

    pools-payoutOthers

    • nominationPools.bondExtraOthers extrinsic specifying ALICE's account and the option to bond:
      • the free balance currently available in ALICE's account (FreeBalance) or
      • the pool rewards (Rewards) unclaimed by ALICE.

    pools-bondExtraOthers

    - + \ No newline at end of file diff --git a/docs/learn-guides-staking.html b/docs/learn-guides-staking.html index b60cd417d540..87df0bd05357 100644 --- a/docs/learn-guides-staking.html +++ b/docs/learn-guides-staking.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@ which will list all the pending payouts for your stashes.

    pending-payouts

    To then claim your reward, select the "Payout all" button. This will prompt you to select your stash accounts for payout.

    select-payouts

    Once you are done with payout, another screen will appear asking for you to sign and submit the transaction.

    transaction-payouts

    - + \ No newline at end of file diff --git a/docs/learn-guides-treasury.html b/docs/learn-guides-treasury.html index 87c8a5a00bd6..846853260254 100644 --- a/docs/learn-guides-treasury.html +++ b/docs/learn-guides-treasury.html @@ -19,7 +19,7 @@ - + @@ -72,7 +72,7 @@ -day timeout
  • Once the referendum ends you can claim the preimage and decision deposits back
  • - + \ No newline at end of file diff --git a/docs/learn-guides-vault.html b/docs/learn-guides-vault.html index 8347e0a0018f..ed0d89f80d17 100644 --- a/docs/learn-guides-vault.html +++ b/docs/learn-guides-vault.html @@ -19,7 +19,7 @@ - + @@ -75,7 +75,7 @@ chain and version is the version of the metadata.

    Add the renamed files to the /public/qr folder within the Metadata Portal repository.

    Run Portal

    Open the terminal within the Metadata Portal repository and run make updater. Then run make collector; this will create the _latest.apng files for each of the chains (removed by the command make cleaner). Finally, run yarn start to load the metadata portal on your localhost.

    - + \ No newline at end of file diff --git a/docs/learn-identity.html b/docs/learn-identity.html index 1010d84d9547..3fa6e3530116 100644 --- a/docs/learn-identity.html +++ b/docs/learn-identity.html @@ -19,7 +19,7 @@ - + @@ -69,7 +69,7 @@ is required for every sub-account.


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about account identity.

    - + \ No newline at end of file diff --git a/docs/learn-implementations.html b/docs/learn-implementations.html index 192278a5cb09..58567801e603 100644 --- a/docs/learn-implementations.html +++ b/docs/learn-implementations.html @@ -19,7 +19,7 @@ - + @@ -57,7 +57,7 @@ collection of tools, interfaces, and libraries for Polkadot and Substrate.

    Other implementations that have received grants

    While the ecosystem continues to grow rapidly, the continued development of alternative implementations will only make Polkadot stronger. Consider becoming a contributor to the ecosystem, and learn about the how you can receieve a grant for your development.

    - + \ No newline at end of file diff --git a/docs/learn-index.html b/docs/learn-index.html index c8e9c3220402..971163c04576 100644 --- a/docs/learn-index.html +++ b/docs/learn-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-inflation.html b/docs/learn-inflation.html index 1a1b3d57443f..f0371ef4368b 100644 --- a/docs/learn-inflation.html +++ b/docs/learn-inflation.html @@ -19,7 +19,7 @@ - + @@ -72,7 +72,7 @@ incentivizing them to stake more tokens on the network. On the contrary, staking rewards drop if staked tokens exceed the ideal staking rate. This results from the change in the percentage of staking rewards that go to the Treasury.

    - + \ No newline at end of file diff --git a/docs/learn-launch.html b/docs/learn-launch.html index df0e7d5b6fbe..81997f33a664 100644 --- a/docs/learn-launch.html +++ b/docs/learn-launch.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ block number 1_205_128 on August 18, 2020, at 16:39 UTC.

    Core Functionality

    After five years of research and development and a multi-stage launch that began in May 2020, Polkadot launch was completed on December 18, 2021, with all auction-winning parachains producing blocks on the network.

    Check out these resources for further information:

    - + \ No newline at end of file diff --git a/docs/learn-nft-pallets.html b/docs/learn-nft-pallets.html index 327a0beb82b9..f260ae360ca8 100644 --- a/docs/learn-nft-pallets.html +++ b/docs/learn-nft-pallets.html @@ -19,7 +19,7 @@ - + @@ -108,7 +108,7 @@ balance-keeping chain for both fungible and non-fungibles.

    These NFTs can be viewed and interacted with on RMRK's Singular platform, by switching the top right menu from Kusama to the Asset Hub.

    nft-hub

    They can also be interacted with directly through the extrinsics tab of the Asset Hub:

    uniques.png

    - + \ No newline at end of file diff --git a/docs/learn-nft-projects.html b/docs/learn-nft-projects.html index 9055a7c0991b..0260b4d0e57c 100644 --- a/docs/learn-nft-projects.html +++ b/docs/learn-nft-projects.html @@ -19,7 +19,7 @@ - + @@ -101,7 +101,7 @@ on, rather than entering the NFT space themselves as an end-product.

    Unique Network aims to make their marketplace technology open-source and whitelabel-friendly. In theory, it should be trivial to set up a new marketplace for your project using Unique's technology. Unique network aims to be a parachain on Polkadot, and Quartz is their Kusama counterpart.

    - + \ No newline at end of file diff --git a/docs/learn-nft.html b/docs/learn-nft.html index ff7d186de9f1..6337da76acc9 100644 --- a/docs/learn-nft.html +++ b/docs/learn-nft.html @@ -19,7 +19,7 @@ - + @@ -64,7 +64,7 @@ RMRK hackathon for porting RMRK NFTs into simplified IOUs on EVM chains

    References

    - + \ No newline at end of file diff --git a/docs/learn-nomination-pools.html b/docs/learn-nomination-pools.html index 3268bfccade2..9728fc8a57a7 100644 --- a/docs/learn-nomination-pools.html +++ b/docs/learn-nomination-pools.html @@ -19,7 +19,7 @@ - + @@ -201,7 +201,7 @@ in the nomination pools and earn staking rewards. For additional information, see this blog post. Check the wiki doc on nomination pools for more information.

    NominatingJoining a Pool
    Minimum 250 DOT to nominate.Minimum 1 DOT to be a member.
    Rewards can be compounded automatically or sent to any account.Rewards can be manually claimed to the pool member's account and be bonded in the pool again to compound them.
    If the active validator gets slashed, all active nominators are subjected to slashing, also those that do not receive rewards due to the oversubscription issue.If the active validator gets slashed, all pool members are subjected to slashing.
    Can bond and stake DOT indefinitely.Can bond and stake DOT until the pool exists.
    Unbonding period of 28 days. Can switch validators without unbonding.Unbonding period of 28 days. Need to unbond before switching to a different pool.
    Maximum uncapped.Maximum uncapped.
    Should bond more than the minimum active nomination in an era to be eligible to earn staking rewards, although it can depend on multiple other factors outlined in the linked document.A nomination pool earns rewards in an era if it satisfies all the conditions mentioned for the nominator (as the nomination pool is just a nominator from the NPoS system perspective).
    Staked tokens can be used for participation in Governance.Staked tokens cannot be used for participation in Governance.
    Rewards payout can be triggered permissionlessly by anyone (typically done by the validator).The pool member must claim the rewards.
    Bonded funds remain in your account.Bonded funds are transferred to a pool account which is administered by the network protocol and is not accessible to anyone else. See System Accounts for more information.
    Nominator manages the list of staked validators (up to 16).Nominations managed by the pool operator.
    - + \ No newline at end of file diff --git a/docs/learn-nominator.html b/docs/learn-nominator.html index 26b87577169d..3d1bb30a05ec 100644 --- a/docs/learn-nominator.html +++ b/docs/learn-nominator.html @@ -19,7 +19,7 @@ - + @@ -269,7 +269,7 @@ Polkadot JS Apps > Network > Staking > Targets page.

    Minimum Active Nomination

    Guides

    - + \ No newline at end of file diff --git a/docs/learn-parachains-faq.html b/docs/learn-parachains-faq.html index 261fa6cbbdfe..b17836637b1b 100644 --- a/docs/learn-parachains-faq.html +++ b/docs/learn-parachains-faq.html @@ -19,7 +19,7 @@ - + @@ -111,7 +111,7 @@ initiate an auction, however, Root origin (via referendum) is needed to cancel an auction. Here is a proposal that gives a glimpse of what goes into planning auctions schedule - Proposed Polkadot Auction Schedule 2022.

    - + \ No newline at end of file diff --git a/docs/learn-parachains-index.html b/docs/learn-parachains-index.html index abc2793cbe3a..7d3de30f3e3e 100644 --- a/docs/learn-parachains-index.html +++ b/docs/learn-parachains-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-parachains-protocol.html b/docs/learn-parachains-protocol.html index fccf9aa8a2a7..e5d1bde9d5f2 100644 --- a/docs/learn-parachains-protocol.html +++ b/docs/learn-parachains-protocol.html @@ -19,7 +19,7 @@ - + @@ -272,7 +272,7 @@ Parity analyst Joe Petrowski expounds on the validity checks that a parachain block must pass in order to progress the parachain.
  • Availability and Validity - Paper by the W3F Research Team that specifies the availability and validity protocol in detail.
  • - + \ No newline at end of file diff --git a/docs/learn-parachains.html b/docs/learn-parachains.html index 464c9a0238f1..0c0ec61fb761 100644 --- a/docs/learn-parachains.html +++ b/docs/learn-parachains.html @@ -19,7 +19,7 @@ - + @@ -189,7 +189,7 @@ its own. The Relay Chain provides security to attached parachains, but also provides a guarantee of secure message-passing between them."
  • The Path of a Parachain Block - A technical walk-through of how parachains interact with the Relay Chain.
  • - + \ No newline at end of file diff --git a/docs/learn-parathreads.html b/docs/learn-parathreads.html index 874cfb73fab5..3d262b5c90a0 100644 --- a/docs/learn-parathreads.html +++ b/docs/learn-parathreads.html @@ -19,7 +19,7 @@ - + @@ -90,7 +90,7 @@ produce new blocks when they need to.

    Parathreads help ease the sharp stop of the parachain slot term by allowing parachains that are still doing something useful to produce blocks, even if it is no longer economically viable to rent a parachain slot.

    Resources

    - + \ No newline at end of file diff --git a/docs/learn-participants-index.html b/docs/learn-participants-index.html index 7b94fe7288e6..2dc2e8470011 100644 --- a/docs/learn-participants-index.html +++ b/docs/learn-participants-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-phragmen.html b/docs/learn-phragmen.html index ae6cf5057c3f..8e45dda17e61 100644 --- a/docs/learn-phragmen.html +++ b/docs/learn-phragmen.html @@ -19,7 +19,7 @@ - + @@ -272,7 +272,7 @@ This paper by Brill et al. is the source for the simple Phragmén method, along with proofs about its properties.
  • Offline Phragmén - Script to generate the Phragmén validator election outcome before the start of an era.
  • - + \ No newline at end of file diff --git a/docs/learn-polkadot-host.html b/docs/learn-polkadot-host.html index 9179c7276dcb..784a5ffec5fe 100644 --- a/docs/learn-polkadot-host.html +++ b/docs/learn-polkadot-host.html @@ -19,7 +19,7 @@ - + @@ -45,7 +45,7 @@ Host is referred to as the Executor. For additional technical implementation details, check out this section of the Polkadot Spec.

    Resources

    - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov-index.html b/docs/learn-polkadot-opengov-index.html index 44991d7e7e9d..383ac68ef2d2 100644 --- a/docs/learn-polkadot-opengov-index.html +++ b/docs/learn-polkadot-opengov-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov-origins.html b/docs/learn-polkadot-opengov-origins.html index 375a24417fce..9e06d5ef5fd8 100644 --- a/docs/learn-polkadot-opengov-origins.html +++ b/docs/learn-polkadot-opengov-origins.html @@ -19,7 +19,7 @@ - + @@ -86,7 +86,7 @@

    Big Spender

    Origin able to spend up to 1000000 DOT from the treasury at once.

    - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov-treasury.html b/docs/learn-polkadot-opengov-treasury.html index bdd857ed7aa1..4016bad26d84 100644 --- a/docs/learn-polkadot-opengov-treasury.html +++ b/docs/learn-polkadot-opengov-treasury.html @@ -19,7 +19,7 @@ - + @@ -86,7 +86,7 @@ allocation of funds and as part of a nested iteration of the bounty mechanism.

    Child Bounties

    Child bounties are spawned from parent bounties. Child bounties are used to access funds directly from the parent bounty without going through an OpenGov referendum.


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about bounties and treasury.

    - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov.html b/docs/learn-polkadot-opengov.html index f31ee54f3258..beedbe553f9f 100644 --- a/docs/learn-polkadot-opengov.html +++ b/docs/learn-polkadot-opengov.html @@ -19,7 +19,7 @@ - + @@ -311,7 +311,7 @@ small deposit (which will be returned once they become members). Their candidacy will go through a referendum to be approved to become a member.

    Resources


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about OpenGov.

    - + \ No newline at end of file diff --git a/docs/learn-polkadotjs-index.html b/docs/learn-polkadotjs-index.html index 7d9cbba652b1..e4da72cf381b 100644 --- a/docs/learn-polkadotjs-index.html +++ b/docs/learn-polkadotjs-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-proxies-pure.html b/docs/learn-proxies-pure.html index 4836f4f7aad7..f5ebb912fbc6 100644 --- a/docs/learn-proxies-pure.html +++ b/docs/learn-proxies-pure.html @@ -19,7 +19,7 @@ - + @@ -65,7 +65,7 @@ corporate-level management where the chance of replacing someone within a multisig can be high. Pure proxies allow keeping the same multisig when the signatories change.
    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about pure proxy accounts.

    - + \ No newline at end of file diff --git a/docs/learn-proxies.html b/docs/learn-proxies.html index 76254b180ed1..5a54c2699747 100644 --- a/docs/learn-proxies.html +++ b/docs/learn-proxies.html @@ -19,7 +19,7 @@ - + @@ -100,7 +100,7 @@


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about proxy accounts. You can find information about creating and removing proxies, and more.

    - + \ No newline at end of file diff --git a/docs/learn-redenomination.html b/docs/learn-redenomination.html index 644bbf8a7b7d..dc7bba81f630 100644 --- a/docs/learn-redenomination.html +++ b/docs/learn-redenomination.html @@ -19,7 +19,7 @@ - + @@ -84,7 +84,7 @@ Ecosystem Redenomination Guide for recommendations.

    Please reach out to support@polkadot.network if you need any assistance in making sure your software is compatible with the redenomination.

    - + \ No newline at end of file diff --git a/docs/learn-runtime-upgrades.html b/docs/learn-runtime-upgrades.html index f7c6b3a8b96d..35a020f2f8fa 100644 --- a/docs/learn-runtime-upgrades.html +++ b/docs/learn-runtime-upgrades.html @@ -19,7 +19,7 @@ - + @@ -84,7 +84,7 @@ may be up to the last block before execution, but it will not work if this is missing.
  • democracy(Executed) events for actual execution. In the case of a runtime upgrade, there will also be a system(CodeUpdated) event.
  • You can also monitor Polkassembly for discussions on on-chain proposals and referenda.

    * E.g. via pallets/democracy/storage/ReferendumInfoOf?key1=index&at=blockNumber on Sidecar.

    - + \ No newline at end of file diff --git a/docs/learn-sassafras.html b/docs/learn-sassafras.html index b1ac4f4222bf..ca887f0596bd 100644 --- a/docs/learn-sassafras.html +++ b/docs/learn-sassafras.html @@ -19,7 +19,7 @@ - + @@ -31,7 +31,7 @@ with time-constant intervals. The protocol utilizes zk-SNARKs to construct a ring-VRF and is a work in progress.

    This page will be updated as progress ensues.

    Resources

    - + \ No newline at end of file diff --git a/docs/learn-scams.html b/docs/learn-scams.html index 01e12bf92dfe..d893baa36201 100644 --- a/docs/learn-scams.html +++ b/docs/learn-scams.html @@ -19,7 +19,7 @@ - + @@ -88,7 +88,7 @@ for steps you should take to prevent further loss and contact Polkadot Support from the same page. Finally, make sure to read the present article carefully to learn how to avoid falling victim in the future.

    - + \ No newline at end of file diff --git a/docs/learn-spree.html b/docs/learn-spree.html index 7720a4bc830c..a39c95651e0e 100644 --- a/docs/learn-spree.html +++ b/docs/learn-spree.html @@ -19,7 +19,7 @@ - + @@ -78,7 +78,7 @@ instances, and the next state root of the instance. They do this validation by checking it against the validate function as provided by the SPREE module API. Collators are expected to be able to provide this information to progress their parachains.

    - + \ No newline at end of file diff --git a/docs/learn-staking-advanced.html b/docs/learn-staking-advanced.html index 91dd5383cc4f..c822e3bf23c0 100644 --- a/docs/learn-staking-advanced.html +++ b/docs/learn-staking-advanced.html @@ -19,7 +19,7 @@ - + @@ -313,7 +313,7 @@ which is a fixed amount.

    Further Resources

    If you want to run a staking miner on your validator, refer to the repository provided in the resources section below.

    - + \ No newline at end of file diff --git a/docs/learn-staking-index.html b/docs/learn-staking-index.html index e2e4fb5fba20..d3a3e894b957 100644 --- a/docs/learn-staking-index.html +++ b/docs/learn-staking-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-staking.html b/docs/learn-staking.html index 22548addf52a..fcffed2b32eb 100644 --- a/docs/learn-staking.html +++ b/docs/learn-staking.html @@ -19,7 +19,7 @@ - + @@ -373,7 +373,7 @@ for the FAQs about staking.

    Resources


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about staking.

    - + \ No newline at end of file diff --git a/docs/learn-system-chains.html b/docs/learn-system-chains.html index 97592a4a8ea1..9c41d9fe837e 100644 --- a/docs/learn-system-chains.html +++ b/docs/learn-system-chains.html @@ -19,7 +19,7 @@ - + @@ -87,7 +87,7 @@ isolation provided by parachains.

    See the Bridges page for information on the latest bridge projects. Currently, a Bridge Hub parachain is in development that will be a portal for trust-minimized bridges to other networks.

    - + \ No newline at end of file diff --git a/docs/learn-teleport.html b/docs/learn-teleport.html index 2bc5509f82d9..b8377f9b482a 100644 --- a/docs/learn-teleport.html +++ b/docs/learn-teleport.html @@ -19,7 +19,7 @@ - + @@ -50,7 +50,7 @@ condition will result in a change in the asset's total issuance (in the case of fungible tokens) or a complete loss/duplication of an NFT.

    Teleporting Tokens using the Polkadot-JS UI

    Troubleshooting

    If you do not see "Accounts > Teleport" in [Polkadot-JS UI], the source chain that you have selected does not support teleportation yet.

    - + \ No newline at end of file diff --git a/docs/learn-transaction-fees.html b/docs/learn-transaction-fees.html index 8807fbd0ccf0..2d87f52b41ea 100644 --- a/docs/learn-transaction-fees.html +++ b/docs/learn-transaction-fees.html @@ -19,7 +19,7 @@ - + @@ -142,7 +142,7 @@ how reasonable they find the timestamp. In Polkadot, it must be within some acceptable range of their own system clocks.

    Learn More

    - + \ No newline at end of file diff --git a/docs/learn-transactions-index.html b/docs/learn-transactions-index.html index 012dbf71a8ad..a00b83970a8d 100644 --- a/docs/learn-transactions-index.html +++ b/docs/learn-transactions-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-treasury.html b/docs/learn-treasury.html index fca6c2508920..4fde2a3a126f 100644 --- a/docs/learn-treasury.html +++ b/docs/learn-treasury.html @@ -19,7 +19,7 @@ - + @@ -170,7 +170,7 @@ taking place. The time delay then allows chain participants time to respond. The response may take the form of governance measures or - in the most extreme cases a liquidation of their holdings and a migration to a minority fork. However, the possibility of this scenario is quite low.

    Further Reading

    - + \ No newline at end of file diff --git a/docs/learn-validator.html b/docs/learn-validator.html index b8690a606686..55dbfbe3abb4 100644 --- a/docs/learn-validator.html +++ b/docs/learn-validator.html @@ -19,7 +19,7 @@ - + @@ -95,7 +95,7 @@ statistics.
  • YieldScan - Staking yield maximization platform, designed to minimize effort.
  • Subscan Validators Page - Displays information on the current validators - not as tailored for validators as the other sites.
  • - + \ No newline at end of file diff --git a/docs/learn-video-tutorials.html b/docs/learn-video-tutorials.html index edb16824bbd3..9e12190776f8 100644 --- a/docs/learn-video-tutorials.html +++ b/docs/learn-video-tutorials.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@ - + \ No newline at end of file diff --git a/docs/learn-wasm.html b/docs/learn-wasm.html index ab9986c11fa0..0d6923805e88 100644 --- a/docs/learn-wasm.html +++ b/docs/learn-wasm.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ spec.
  • Wasmi - WebAssembly interpreter written in Rust.
  • Parity Wasm - WebAssembly serialization/deserialization in Rust.
  • Wasm utils - Collection of Wasm utilities used in Parity and Wasm contract development.
  • - + \ No newline at end of file diff --git a/docs/learn-xcm-index.html b/docs/learn-xcm-index.html index f0f32bf14a81..01aff3a11688 100644 --- a/docs/learn-xcm-index.html +++ b/docs/learn-xcm-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn-xcm-instructions.html b/docs/learn-xcm-instructions.html index 47349e13f60d..4b000e773b5a 100644 --- a/docs/learn-xcm-instructions.html +++ b/docs/learn-xcm-instructions.html @@ -19,7 +19,7 @@ - + @@ -37,7 +37,7 @@ system and may not be transferred. It may only be unlocked with the receipt of the UnlockAsset instruction from this chain.

  • RequestUnlock(MultiAsset, MultiLocation) - Send an UnlockAsset instruction to the locker for the given asset.

  • - + \ No newline at end of file diff --git a/docs/learn-xcm-pallet.html b/docs/learn-xcm-pallet.html index 3eb6c38497b5..f3cda7f4b77d 100644 --- a/docs/learn-xcm-pallet.html +++ b/docs/learn-xcm-pallet.html @@ -19,7 +19,7 @@ - + @@ -87,7 +87,7 @@ calculates the total fee based on the number of instructions.

    The Trader used to calculate the weight (time for computation in consensus) to include in the message. Fee calculation in XCM is highly configurable and, for this reason, subjective to whichever configuration is in place.

    - + \ No newline at end of file diff --git a/docs/learn-xcm-transport.html b/docs/learn-xcm-transport.html index a4fabe04d4d1..28a0c92875d9 100644 --- a/docs/learn-xcm-transport.html +++ b/docs/learn-xcm-transport.html @@ -19,7 +19,7 @@ - + @@ -69,7 +69,7 @@ asset transfer as intended.

    The collator now hands this block to the validator, which itself will verify that this message was processed. If the message was processed and all other aspects of the block are valid, the validator will include this block for parachain B into the Relay Chain.

    - + \ No newline at end of file diff --git a/docs/learn-xcm-usecases.html b/docs/learn-xcm-usecases.html index c94de82ca08c..74b09500d67e 100644 --- a/docs/learn-xcm-usecases.html +++ b/docs/learn-xcm-usecases.html @@ -19,7 +19,7 @@ - + @@ -46,7 +46,7 @@ destination's sovereign account, and sends this instruction onwards to the destination. The destination receives the instruction and processes it, minting the derivative assets as a result of the process.

    1. DepositAsset

    The destination deposits the derivative assets minted to the receiving account.

    - + \ No newline at end of file diff --git a/docs/learn-xcm.html b/docs/learn-xcm.html index c558beaaf109..db31481f842a 100644 --- a/docs/learn-xcm.html +++ b/docs/learn-xcm.html @@ -19,7 +19,7 @@ - + @@ -92,7 +92,7 @@ Technical audit report by Quarkslab prepared for Parity.

  • XCM pallet code - The pallet that contains XCM logic from the Polkadot code repository

  • XCM Config & Pallet-XCM | Polkadot Deep Dives - A technical deep dive into pallet-xcm and the XCM configuration.

  • - + \ No newline at end of file diff --git a/docs/learn-xcvm.html b/docs/learn-xcvm.html index 2b84d36e973e..cd9a1a0bcb13 100644 --- a/docs/learn-xcvm.html +++ b/docs/learn-xcvm.html @@ -19,7 +19,7 @@ - + @@ -110,7 +110,7 @@ a MultiLocation.

    Simulating XCVM using the xcm-simulator

    Within the Polkadot repository exists the xcm-simulator, which allows developers to experiment with building, executing, and simulating various XCM use scenarios.

    - + \ No newline at end of file diff --git a/docs/learn/xcm.html b/docs/learn/xcm.html index d9d36f67aa7b..a33d58d6b773 100644 --- a/docs/learn/xcm.html +++ b/docs/learn/xcm.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/config-deep-dive.html b/docs/learn/xcm/config-deep-dive.html index 80456586451e..ef0f3b5e4224 100644 --- a/docs/learn/xcm/config-deep-dive.html +++ b/docs/learn/xcm/config-deep-dive.html @@ -19,7 +19,7 @@ - + @@ -132,7 +132,7 @@ Statemine, or Trappist for examples of how to implement the xcm-executor config.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals-fees.html b/docs/learn/xcm/fundamentals-fees.html index 9fc89d6d17af..b764f9bce634 100644 --- a/docs/learn/xcm/fundamentals-fees.html +++ b/docs/learn/xcm/fundamentals-fees.html @@ -19,7 +19,7 @@ - + @@ -56,7 +56,7 @@ and charging execution fees.

    XCM pallet

    FRAME pallets, like the XCM pallet, specify weights for each extrinsic they expose. That means that when interacting with pallets that deal with XCM, there will be an additional fee at the beginning for calling the extrinsic locally.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals-multiasset.html b/docs/learn/xcm/fundamentals-multiasset.html index 79c3cec3340e..e5c0255dc914 100644 --- a/docs/learn/xcm/fundamentals-multiasset.html +++ b/docs/learn/xcm/fundamentals-multiasset.html @@ -19,7 +19,7 @@ - + @@ -56,7 +56,7 @@ MultiAssets and WildMultiAsset allowing either a wildcard or a list of definite (i.e. not wildcard) assets to be specified.

    pub enum MultiAssetFilter {
    /// Specify the filter as being everything contained by the given `MultiAssets` inner.
    Definite(MultiAssets),
    /// Specify the filter as the given `WildMultiAsset` wildcard.
    Wild(WildMultiAsset),
    }

    Examples

    MultiAsset

    For more information about the MultiLocations used to define concrete assets, see MultiLocation and Junction.

    // Location Relay Chain
    // 100 Native Asset (three ways)
    MultiAsset {id: Concrete(MultiLocation {parents: 0, interior: Here}), fun: Fungible(100u128)};
    MultiAsset {id: Here.into(), fun: 100.into()};
    let _: MultiAsset = (Here, 100u128).into();

    // 100 Parachain's Native Asset
    let _: MultiAsset = (X1(Parachain(1000)), 100u128).into();
    // 100 Fungible assets in Parachain 1000 with id 1234
    let _: MultiAsset = (X2(Parachain(1000), GeneralIndex(1234)), 100u128).into();
    // Non Fungible asset with asset class 1234 containing only one nft instance in Parachain 1000
    let _: MultiAsset = (X2(Parachain(1000), GeneralIndex(1234)), Undefined).into();
    // Non Fungible asset with asset class 1234 and AssetInstance 1 in Parachain 1000
    let _: MultiAsset = (X2(Parachain(1000), GeneralIndex(1234)), Index(1)).into();

    MultiAssetFilter

    let a1: MultiAssets = MultiAssets::from(vec![MultiAsset {id: Here.into(), fun: 100u128.into()}]);
    let b1: MultiAssets = (Here, 100u128).into();
    assert_eq!(a1, b1);

    let a2: MultiAssetFilter = a1.into();
    let b2 = MultiAssetFilter::Definite((Here, 100u128).into());
    assert_eq!(a2, b2);

    let a3 = MultiAssetFilter::Wild(WildMultiAsset::All);
    let b3: MultiAssetFilter = All.into();
    assert_eq!(a3, b3);
    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals-summary.html b/docs/learn/xcm/fundamentals-summary.html index c8ccdb1b947f..ee4020999524 100644 --- a/docs/learn/xcm/fundamentals-summary.html +++ b/docs/learn/xcm/fundamentals-summary.html @@ -19,14 +19,14 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals-xcvm.html b/docs/learn/xcm/fundamentals-xcvm.html index 2b08484eaa95..6e7c4f502c07 100644 --- a/docs/learn/xcm/fundamentals-xcvm.html +++ b/docs/learn/xcm/fundamentals-xcvm.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals.html b/docs/learn/xcm/fundamentals.html index 08d892b71a6d..5767469d58fa 100644 --- a/docs/learn/xcm/fundamentals.html +++ b/docs/learn/xcm/fundamentals.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals/multilocation-example.html b/docs/learn/xcm/fundamentals/multilocation-example.html index 8773fcaed8eb..4454f387dc07 100644 --- a/docs/learn/xcm/fundamentals/multilocation-example.html +++ b/docs/learn/xcm/fundamentals/multilocation-example.html @@ -19,14 +19,14 @@ - +

    Example

    In this example we show different MultiLocations for the system hierarchy in the image below. Example

    From the perspective of RelayA

    // ParaA
    let _: MultiLocation = Parachain(1000).into();
    // AccountId32 in Parachain A
    let _: MultiLocation = (Parachain(1000), AccountId32 { network: RELAY_A_NETWORK, id: [0u8; 32]}).into();
    // Asset in Parachain A
    let _: MultiLocation = (Parachain(1000), PalletInstance(1), GeneralIndex(1)).into();
    // Ethereum based account on Parachain B
    let _: MultiLocation = (Parachain(2000), AccountKey20 { network: RELAY_A_NETWORK, key: [0u8; 20] }).into();
    // Smart Contract
    let _: MultiLocation = (Parachain(2000), PalletInstance(1), AccountKey20 { network: RELAY_A_NETWORK, key: [0u8; 20] }).into();
    // RelayB
    let _: MultiLocation = (Parent, GlobalConsensus(RELAY_B_NETWORK)).into();
    // NFT on Parachain C
    let _: MultiLocation = (Parent, GlobalConsensus(RELAY_B_NETWORK), Parachain(1000), GeneralIndex(1)).into();

    From the perspective of Parachain C

    // Relay A
    let _: MultiLocation = Parent.into();
    // Plurality Example. Many more BodyId/BodyPart combos imaginable
    let _: MultiLocation = (Parent, Plurality { id: BodyId::Index(0), part: BodyPart::Members { count: 10 } }).into();
    // Account in Relay
    let _: MultiLocation = (Parent, AccountId32 { network: None, id: [0u8; 32] }).into();

    From the perspective of the Smart Contract

    // Asset in Parachain A
    let _: MultiLocation = (Parent, Parent, Parachain(1000), PalletInstance(1), GeneralIndex(1)).into();

    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals/multilocation-junctions.html b/docs/learn/xcm/fundamentals/multilocation-junctions.html index aee05639019f..72bf2b432b53 100644 --- a/docs/learn/xcm/fundamentals/multilocation-junctions.html +++ b/docs/learn/xcm/fundamentals/multilocation-junctions.html @@ -19,7 +19,7 @@ - + @@ -59,7 +59,7 @@ relay chain from the perspective of the Polkadot relay chain as {parents: 1, interior: GlobalConsensus(Kusama)}. An example use case could be routing XCMs between global consensus networks using bridges.

    Multiple ways to create a MultiLocation

    // Current Location
    MultiLocation {parents: 0, interior: Here};
    MultiLocation::new(0, Here);
    MultiLocation::here();
    MultiLocation::default();
    let _: MultiLocation = Here.into();

    // Parent Location
    MultiLocation {parents: 1, interior: Here};
    MultiLocation::parent();
    let _: MultiLocation = Parent.into();

    // Conversion
    MultiLocation { parents: 2, interior: X2(Parachain(1), GeneralIndex(1))};
    let _: MultiLocation = (Parent, Parent, Parachain(1), GeneralIndex(1)).into();
    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals/multilocation-summary.html b/docs/learn/xcm/fundamentals/multilocation-summary.html index c4bc9bd1d0e2..fdb9f9f5b597 100644 --- a/docs/learn/xcm/fundamentals/multilocation-summary.html +++ b/docs/learn/xcm/fundamentals/multilocation-summary.html @@ -19,7 +19,7 @@ - + @@ -54,7 +54,7 @@ .. are followed by some number of Junctions, all separated by /. The X1 and X2 variants are expressing the number of Junctions that we step down in the hierarchical structure (see Junctions for an explanation).

    // From: RelayA
    // To: ParaB
    // Location: Parachain(2000)
    MultiLocation {parents: 0, interior: X1(Parachain(2000))};
    // To: Account in ParaA
    // Location: Parachain(1000)/AccountId32(0x00..)
    MultiLocation {
    parents: 0,
    interior: X2(
    Parachain(1000),
    AccountId32{network: None, id: [0u8; 32]}
    )
    };

    // From: ParaB
    // To: RelayA
    // Location: ../Here
    MultiLocation {parents: 1, interior: Here};
    // To: Account in ParaA
    // Location: ../Parachain(1000)/AccountId32(0x00..)
    MultiLocation {
    parents: 1,
    interior: X2(
    Parachain(1000),
    AccountId32{network: None, id: [0u8; 32]}
    )
    };

    What's next:

    • More information about junctions
    • More MultiLocation examples
    • Expressing assets using Multilocations: [MultiAsset][../multiasset.md]
    - + \ No newline at end of file diff --git a/docs/learn/xcm/fundamentals/multilocation.html b/docs/learn/xcm/fundamentals/multilocation.html index 1e0d468332ca..a209a71d5401 100644 --- a/docs/learn/xcm/fundamentals/multilocation.html +++ b/docs/learn/xcm/fundamentals/multilocation.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/introduction.html b/docs/learn/xcm/introduction.html index dbe2fd2a3ef2..58db38a7bde2 100644 --- a/docs/learn/xcm/introduction.html +++ b/docs/learn/xcm/introduction.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ open an issue. If you want to contribute to the format, check out the RFC process.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-assets.html b/docs/learn/xcm/journey-assets.html index f4af14dd09f1..fe218e8ecb96 100644 --- a/docs/learn/xcm/journey-assets.html +++ b/docs/learn/xcm/journey-assets.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ relay chain. The assets are trapped because an error is thrown and the execution is halted. Parachain A claims the trapped assets and receives a report of the holding register.

    Parachain A sends the following message to the relay chain. The message errors because of the Trap instruction, so all assets in the Holding Register are trapped.

    let message = Xcm(vec![
    WithdrawAsset((Here, 10 * CENTS).into()),
    BuyExecution { fees: (Here, CENTS).into(), weight_limit: WeightLimit::Unlimited },
    Trap(0), // <-- Errors
    DepositAsset { // <-- Not executed because of error.
    assets: All.into(),
    beneficiary: AccountId32 {
    network: Some(parachain::RelayNetwork::get()),
    id: ALICE.into()
    }.into()
    }
    ]);

    Parachain A claims the assets, reports them to itself and deposits them in the Account of Alice.

    let claim_message = Xcm(vec![
    ClaimAsset { assets: (Here, 10 * CENTS).into(), ticket: Here.into() },
    ReportHolding {
    response_info: QueryResponseInfo {
    destination: Parachain(1).into(),
    query_id: QUERY_ID,
    max_weight: Weight::from_parts(1_000_000_000, 64*64) },
    assets: All.into()
    },
    DepositAsset {
    assets: All.into(),
    beneficiary: AccountId32 {
    network: Some(parachain::RelayNetwork::get()),
    id: ALICE.into()
    }.into()
    },
    ]);
    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-channels.html b/docs/learn/xcm/journey-channels.html index 785b46a709d7..321f3102603a 100644 --- a/docs/learn/xcm/journey-channels.html +++ b/docs/learn/xcm/journey-channels.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,7 @@ network), you would call with network: NetworkId::Kusama and destination: X1(Parachain(1000)). Alternatively, to export a message for execution on Polkadot, you would call with network: NetworkId:: Polkadot and destination: Here.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-expectations.html b/docs/learn/xcm/journey-expectations.html index 60b74a54af86..393beaf92f40 100644 --- a/docs/learn/xcm/journey-expectations.html +++ b/docs/learn/xcm/journey-expectations.html @@ -19,7 +19,7 @@ - + @@ -44,7 +44,7 @@ the error handler, when a specific error is thrown.

        ExpectError(Option<(u32, Error)>)

    Example

    For the full example, check here.

    SetErrorHandler(Xcm(vec![
    ExpectError(Some((1, XcmError::VersionIncompatible))),
    ReportError(QueryResponseInfo {
    destination: Parachain(1).into(),
    query_id: QUERY_ID,
    max_weight: Weight::from_all(0),
    }),
    ])),
    // Pallet index is wrong, so throws `PalletNotFound` error.
    ExpectPallet {
    index: 100,
    name: "Balances".into(),
    module_name: "pallet_balances".into(),
    crate_major: 4,
    min_crate_minor: 0,
    },

    ExpectTransactStatus

    The ExpectTransactStatus instruction throws an ExpectationFalse error if the transact status register does not equal the expected transact status.

    Example

    For the full example, check here. The transact status is reported to Parachain(1) if the call in the Transact errors.

    SetErrorHandler(Xcm(vec![ReportTransactStatus(QueryResponseInfo {
    destination: Parachain(1).into(),
    query_id: QUERY_ID,
    max_weight: Weight::from_all(0),
    })])),
    Transact {
    origin_kind: OriginKind::SovereignAccount,
    require_weight_at_most: Weight::from_parts(INITIAL_BALANCE as u64, 1024 * 1024),
    call: call.encode().into(),
    },
    ExpectTransactStatus(MaybeErrorCode::Success),
    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-fees.html b/docs/learn/xcm/journey-fees.html index 2a632d7e1dc3..d593fef4706b 100644 --- a/docs/learn/xcm/journey-fees.html +++ b/docs/learn/xcm/journey-fees.html @@ -19,7 +19,7 @@ - + @@ -62,7 +62,7 @@ throws an error, the error handler will be called and the weight for all the instructions that weren't executed is refunded. For the full example, check our repo.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-holding.html b/docs/learn/xcm/journey-holding.html index 8ab9700315a9..2df9cb2526fb 100644 --- a/docs/learn/xcm/journey-holding.html +++ b/docs/learn/xcm/journey-holding.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ results could differ.

    The Assets in the exchange in Parachain(1). This is a custom exchange implementation just for testing purposes.

    let assets_in_exchange = vec![(Parent, 10 * CENTS).into()];
    parachain::set_exchange_assets(assets_in_exchange);

    The message that is send:

    let message = Xcm(vec![
    WithdrawAsset((Here, 10 * CENTS).into()),
    BuyExecution { fees: (Here, CENTS).into(), weight_limit: WeightLimit::Unlimited },
    // Maximal field set to true.
    ExchangeAsset {
    give: Definite((Here, 5 * CENTS).into()),
    want: (Parent, 5 * CENTS).into(),
    maximal: true,
    },
    DepositAsset {
    assets: AllCounted(2).into(),
    beneficiary: AccountId32 {
    network: Some(parachain::RelayNetwork::get()),
    id: ALICE.into(),
    }
    .into(),
    },
    ]);

    Alice receives 5 CENTS worth of native assets (Here) and 5 CENTS worth of relay chain derivative assets (Parent).

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-locks.html b/docs/learn/xcm/journey-locks.html index 3f41370caa9e..c6167494fbf6 100644 --- a/docs/learn/xcm/journey-locks.html +++ b/docs/learn/xcm/journey-locks.html @@ -19,7 +19,7 @@ - + @@ -55,7 +55,7 @@ pallet-balances: 10.
    ParaA::execute_with(|| {
    let message = Xcm(vec![
    LockAsset { asset: (Here, 10 * CENTS).into(), unlocker: (Parachain(2)).into() },
    LockAsset { asset: (Here, 5 * CENTS).into(), unlocker: (Parachain(3)).into() },
    ]);
    assert_ok!(ParachainPalletXcm::send_xcm(Here, Parent, message.clone()));
    });

    Relay::execute_with(|| {
    assert_eq!(
    relay_chain::Balances::locks(&parachain_sovereign_account_id(1)),
    vec![BalanceLock { id: *b"py/xcmlk", amount: 10 * CENTS, reasons: Reasons::All }]
    );
    });
    1. Parachain B and C receive the NoteUnlockable instruction.
    ParaB::execute_with(|| {
    assert_eq!(
    parachain::MsgQueue::received_dmp(),
    vec![Xcm(vec![NoteUnlockable {
    owner: (Parent, Parachain(1)).into(),
    asset: (Parent, 10 * CENTS).into()
    }])]
    );
    });

    ParaC::execute_with(|| {
    assert_eq!(
    parachain::MsgQueue::received_dmp(),
    vec![Xcm(vec![NoteUnlockable {
    owner: (Parent, Parachain(1)).into(),
    asset: (Parent, 5 * CENTS).into()
    }])]
    );
    });
    1. Parachain A sends a RequestUnlock instruction to Parachain B for 8 CENTS.
    ParaA::execute_with(|| {
    let message = Xcm(vec![RequestUnlock {
    asset: (Parent, 8 * CENTS).into(),
    locker: Parent.into(),
    }]);

    assert_ok!(ParachainPalletXcm::send_xcm(Here, (Parent, Parachain(2)), message.clone()));
    });
    1. Parachain B Unlocks a part of the funds by sending an UnlockAsset to the relay chain. we check the lock in the balances-pallet. Unlockers: B, C; Funds registered in pallet-xcm: 2, 5. Lock set in pallet-balances: 5.
    Relay::execute_with(|| {
    assert_eq!(
    relay_chain::Balances::locks(&parachain_sovereign_account_id(1)),
    vec![BalanceLock { id: *b"py/xcmlk", amount: 5 * CENTS, reasons: Reasons::All }]
    );
    });
    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-origin.html b/docs/learn/xcm/journey-origin.html index 85eab3573c96..13ba80d81713 100644 --- a/docs/learn/xcm/journey-origin.html +++ b/docs/learn/xcm/journey-origin.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ for certain values of X (thereby allowing sibling chains to use the same account IDs) or Parachain(X)/ (allowing a Relay-chain to use the account IDs native to its child parachains) or just Parent/ (allowing parachains to use AccountIds of the Relay-chain).

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-queries.html b/docs/learn/xcm/journey-queries.html index 654864ac7e44..8b802ff10cd1 100644 --- a/docs/learn/xcm/journey-queries.html +++ b/docs/learn/xcm/journey-queries.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,7 @@ specified destination.

    ReportTransactStatus(QueryResponseInfo)

    Example

    For the full example, check here. Dispatches a call on the consensus system receiving this Xcm and reports back the status of the Transact Status Register.

    Xcm(vec![
    Transact {
    origin_kind: OriginKind::SovereignAccount,
    require_weight_at_most: Weight::from_parts(INITIAL_BALANCE as u64, 1024 * 1024),
    call: remark.encode().into(),
    },
    ReportTransactStatus(QueryResponseInfo {
    destination: Parachain(1).into(),
    query_id: QUERY_ID,
    max_weight: Weight::from_all(0),
    }),
    ]);
    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-register.html b/docs/learn/xcm/journey-register.html index 1f5178c1714e..d2610dc8c2b7 100644 --- a/docs/learn/xcm/journey-register.html +++ b/docs/learn/xcm/journey-register.html @@ -19,7 +19,7 @@ - + @@ -33,7 +33,7 @@ and error handler instruction are executed. These instructions are executed regardless of whether an error occurred.

    ClearError

    ClearError

    The ClearError instruction clears the Error Register by setting it to None.

    ClearTransactStatus

    ClearTransactStatus

    The ClearTransactStatus instruction sets the Transact Status Register to its default, cleared, value.

    SetTopic

    SetTopic([u8; 32])

    The SetTopic instruction sets the Topic Register.

    ClearTopic

    ClearTopic

    The ClearTopic instruction clears the Topic Register.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-summary.html b/docs/learn/xcm/journey-summary.html index 27401000f032..674466bad35b 100644 --- a/docs/learn/xcm/journey-summary.html +++ b/docs/learn/xcm/journey-summary.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@ - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-transact.html b/docs/learn/xcm/journey-transact.html index e9ba6eadcd51..40afad45116f 100644 --- a/docs/learn/xcm/journey-transact.html +++ b/docs/learn/xcm/journey-transact.html @@ -19,7 +19,7 @@ - + @@ -50,7 +50,7 @@ Parachain(1). This function requires the origin to be root. We enable the root origin for the relay chain by setting ParentAsSuperuser for the OriginConverter config type.

    let call = parachain::RuntimeCall::Balances(
    pallet_balances::Call::<parachain::Runtime>::set_balance {
    who: ALICE,
    new_free: 5 * AMOUNT,
    new_reserved: 0,
    },
    );

    let message = Xcm(vec![
    WithdrawAsset((Here, AMOUNT).into()),
    BuyExecution { fees: (Here, AMOUNT).into(), weight_limit: WeightLimit::Unlimited },
    Transact {
    origin_kind: OriginKind::Superuser,
    require_weight_at_most: Weight::from_parts(INITIAL_BALANCE as u64, 1024 * 1024),
    call: call.encode().into(),
    },
    ]);

    Example 2

    For the full example, check the repo.

    In this example, as Parachain(1), we create an NFT collection on the relay chain and we then mint an NFT with ID 1. The admin for the nft collection is parachain(1). The call looks as follows:

    let create_collection = relay_chain::RuntimeCall::Uniques(
    pallet_uniques::Call::<relay_chain::Runtime>::create {
    collection: 1u32,
    admin: parachain_sovereign_account_id(1),
    }
    );

    The owner of the NFT is Alice. The nft mint call looks as follows:

    let mint = relay_chain::RuntimeCall::Uniques(
    pallet_uniques::Call::<relay_chain::Runtime>::mint {
    collection: 1u32,
    item: 1u32,
    owner: ALICE,
    }
    );

    The xcm message contains the following instructions:

    1. Withdraw native assets from the Parachain(1)'s sovereign account.
    2. Buy weight with these assets.
    3. Create a collection with as admin and owner the sovereign account of Parachain(1).
    4. Mints an NFT in the collection with item ID 1 and as owner Alice.
    let message = Xcm(vec![
    WithdrawAsset((Here, AMOUNT).into()),
    BuyExecution { fees: (Here, AMOUNT).into(), weight_limit: WeightLimit::Unlimited },
    Transact {
    origin_kind: OriginKind::SovereignAccount,
    require_weight_at_most: Weight::from_parts(INITIAL_BALANCE as u64, 1024 * 1024),
    call: create_collection.encode().into(),
    },
    Transact {
    origin_kind: OriginKind::SovereignAccount,
    require_weight_at_most: Weight::from_parts(INITIAL_BALANCE as u64, 1024 * 1024),
    call: mint.encode().into(),
    },
    ]);

    Next:

    Check out the following instructions that interact with the Transact Status Register:

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey-version.html b/docs/learn/xcm/journey-version.html index 33ba9df2bffa..e95fd10820a4 100644 --- a/docs/learn/xcm/journey-version.html +++ b/docs/learn/xcm/journey-version.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ send back its currently AdvertisedVersion and will keep the subscribed location up to date when the version changes. The subscribed location can unsubscribe to version changes by sending the UnsubscribeVersion instruction.

    SubscribeVersion {
    #[codec(compact)]
    query_id: QueryId,
    max_response_weight: Weight,
    }

    UnsubscribeVersion

    Check out the example.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey.html b/docs/learn/xcm/journey.html index c922fd581231..e868d2fcdd2f 100644 --- a/docs/learn/xcm/journey.html +++ b/docs/learn/xcm/journey.html @@ -19,13 +19,13 @@ - +
    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey/transfers-reserve.html b/docs/learn/xcm/journey/transfers-reserve.html index 70c275e81964..cb199268ce62 100644 --- a/docs/learn/xcm/journey/transfers-reserve.html +++ b/docs/learn/xcm/journey/transfers-reserve.html @@ -19,7 +19,7 @@ - + @@ -73,7 +73,7 @@ It's the sender the one who doesn't need to trust the destination, since it'll ever only be minting derivatives anyway, the sender/reserve controls the real assets and issuance.

    Next steps

    Next, we'll talk about a very important topic we mentioned before but skipped in this chapter, paying fees for the effects our XCMs have.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey/transfers-summary.html b/docs/learn/xcm/journey/transfers-summary.html index d0ffa4517f78..d1f44f06e9e7 100644 --- a/docs/learn/xcm/journey/transfers-summary.html +++ b/docs/learn/xcm/journey/transfers-summary.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,7 @@ paying for execution and depositing the rest to another account on the same system. The full example can be seen in the repo.

    Transferring between systems

    But what if you want to make a transfer from one system to another? There are two ways of doing this:

    • Asset teleportation
    • Reserve-backed transfers

    We'll be discussing both in the following chapters.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey/transfers-teleport.html b/docs/learn/xcm/journey/transfers-teleport.html index 61a543e01280..c37c9e750272 100644 --- a/docs/learn/xcm/journey/transfers-teleport.html +++ b/docs/learn/xcm/journey/transfers-teleport.html @@ -19,7 +19,7 @@ - + @@ -61,7 +61,7 @@ another system. We could do so with the following program:

    let message = Xcm(vec![
    WithdrawAsset((GeneralIndex(1), 42u32).into()),
    InitiateTeleport {
    assets: All.into(),
    dest: Parachain(1).into(),
    xcm: Xcm(vec![DepositAsset {
    assets: All.into(),
    beneficiary: Junction::AccountId32 {
    id: ALICE.into(),
    network: None,
    }.into()
    }]),
    },
    ]);

    Very little changes, in fact, only the MultiAsset we're referencing changes, like we would expect. All the teleportation logic stays the same. The example assumes an NFT with index 42 inside a collection with index 1.

    Next steps

    We'll look at reserve-backed transfers next.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/journey/transfers.html b/docs/learn/xcm/journey/transfers.html index b172ea44b4bd..c3d5f636e6ee 100644 --- a/docs/learn/xcm/journey/transfers.html +++ b/docs/learn/xcm/journey/transfers.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/overview-architecture.html b/docs/learn/xcm/overview-architecture.html index e952c9d824a2..cfd3bd689629 100644 --- a/docs/learn/xcm/overview-architecture.html +++ b/docs/learn/xcm/overview-architecture.html @@ -19,7 +19,7 @@ - + @@ -48,7 +48,7 @@ about later. It's the glue between XCM and FRAME, which is highly used in the Polkadot ecosystem.

    Simulator

    The simulator allows for testing XCMs fast, without needing to boot up several different nodes in a network, or test in production. It's a very useful tool which we'll use throughout this document to build and test different XCMs.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/overview-format.html b/docs/learn/xcm/overview-format.html index 8e272401df77..e86d9ff06eeb 100644 --- a/docs/learn/xcm/overview-format.html +++ b/docs/learn/xcm/overview-format.html @@ -19,7 +19,7 @@ - + @@ -38,7 +38,7 @@ changes. XCM communicates intentions; the actual interpretation and behaviour of each instruction in an XCM is defined by target's XCVM implementation.

    Both simple and more complex scenarios can be expressed, and developers are encouraged to design and implement diverse cross-consensus communication solutions.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/overview-intro.html b/docs/learn/xcm/overview-intro.html index bb18588180ca..06b87037ad42 100644 --- a/docs/learn/xcm/overview-intro.html +++ b/docs/learn/xcm/overview-intro.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ propose changes, which end up in newer versions, the current one being v3. To keep up with the development of the format, or to propose changes, go to the XCM format repository.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/overview-summary.html b/docs/learn/xcm/overview-summary.html index b6f128bde65a..0d6c4d9f5d85 100644 --- a/docs/learn/xcm/overview-summary.html +++ b/docs/learn/xcm/overview-summary.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ interactions between them. XCM is meant to be used by developers to package these interactions into their runtime logic before exposing that functionality to end users.

    This chapter will cover what XCM is, what it isn't, and why it matters before exploring the different components that make up the XCM ecosystem.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/overview-xcvm.html b/docs/learn/xcm/overview-xcvm.html index e5aa2e83eb8d..592ae07ba034 100644 --- a/docs/learn/xcm/overview-xcvm.html +++ b/docs/learn/xcm/overview-xcvm.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ putting them in and taking them from this register. This register is used by several of the instructions we will look at later, including DepositAsset and WithdrawAsset.

    For more information on other registers, see the All XCVM Registers section.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/overview.html b/docs/learn/xcm/overview.html index 5c69fb43ecf1..401eda045acb 100644 --- a/docs/learn/xcm/overview.html +++ b/docs/learn/xcm/overview.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/quickstart-first-look.html b/docs/learn/xcm/quickstart-first-look.html index 36a00598bd02..29b13b5fdb2e 100644 --- a/docs/learn/xcm/quickstart-first-look.html +++ b/docs/learn/xcm/quickstart-first-look.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,7 @@ examples for every instruction in the journey through XCM chapter. First, it's important to learn the fundamentals, MultiLocation, MultiAsset, and other concepts in XCM. We'll talk about those next.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/quickstart-simulator.html b/docs/learn/xcm/quickstart-simulator.html index ac72a28795dd..9c284dd5fdbb 100644 --- a/docs/learn/xcm/quickstart-simulator.html +++ b/docs/learn/xcm/quickstart-simulator.html @@ -19,7 +19,7 @@ - + @@ -31,7 +31,7 @@ actually test your XCM-powered solution. We'll get into tools and best practices for testing in the testing chapter.

    We'll use the simulator throughout the documentation to show different XCMs in action. In the next section we will take a first look at an XCM.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/quickstart-summary.html b/docs/learn/xcm/quickstart-summary.html index 816621f343bd..b5c37350409a 100644 --- a/docs/learn/xcm/quickstart-summary.html +++ b/docs/learn/xcm/quickstart-summary.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ installation guide.

    Running the Examples

    All examples in the documentation are located in the repository. Follow these steps to run the first-look example. First clone the repository:

    git clone git@github.com:paritytech/xcm-docs.git
    cd xcm-docs/examples

    To run the first-look example, run the following line:

    cargo test -p xcm-examples para_a_simple_transfer -- --nocapture

    It should show you the following output:

    running 1 test
    test first_look::tests::para_a_simple_transfer ... ok

    test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.01s
    - + \ No newline at end of file diff --git a/docs/learn/xcm/quickstart.html b/docs/learn/xcm/quickstart.html index 389ab6f39d7a..6d991752c9d1 100644 --- a/docs/learn/xcm/quickstart.html +++ b/docs/learn/xcm/quickstart.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/reference-glossary.html b/docs/learn/xcm/reference-glossary.html index f3f5af52c24a..149516595c50 100644 --- a/docs/learn/xcm/reference-glossary.html +++ b/docs/learn/xcm/reference-glossary.html @@ -19,7 +19,7 @@ - + @@ -44,7 +44,7 @@ through the relay chain.

    HRMP (Horizontal Message Passing)

    Transport-layer protocol that allows a parachain to send messages to a sibling parachain going through the relay chain. It's a precursor to XCMP, also known as XCMP-lite. It uses a mixture of UMP and VMP.

    - + \ No newline at end of file diff --git a/docs/learn/xcm/reference-xcvm-registers.html b/docs/learn/xcm/reference-xcvm-registers.html index d6c9b304064a..e9e1fe1966bf 100644 --- a/docs/learn/xcm/reference-xcvm-registers.html +++ b/docs/learn/xcm/reference-xcvm-registers.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@
    - + \ No newline at end of file diff --git a/docs/learn/xcm/references.html b/docs/learn/xcm/references.html index 160040d8de5c..a0371ef9bf77 100644 --- a/docs/learn/xcm/references.html +++ b/docs/learn/xcm/references.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/learn/xcm/testing.html b/docs/learn/xcm/testing.html index 951817a97071..2b5d0be1bb99 100644 --- a/docs/learn/xcm/testing.html +++ b/docs/learn/xcm/testing.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@ messaging infrastructure as live networks, as the transport mechanism is being mocked out. Also, consensus related events are not tested, like disputes, staking and iamonline events. To test for these events, parachains can use E2E tests.

    End-to-End testing

    There are two frameworks being used in the ecosystem to do e2e testing:

    - + \ No newline at end of file diff --git a/docs/ledger.html b/docs/ledger.html index 820470aadeaa..2594f7331a7d 100644 --- a/docs/ledger.html +++ b/docs/ledger.html @@ -19,7 +19,7 @@ - + @@ -81,7 +81,7 @@ automatically detect the developer release and give the option to install the previous stable release.
    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about Ledger.

    - + \ No newline at end of file diff --git a/docs/maintain-bootnode.html b/docs/maintain-bootnode.html index 0970f16a98e1..e7c2b1d5c5ba 100644 --- a/docs/maintain-bootnode.html +++ b/docs/maintain-bootnode.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ port 30311:

    /etc/nginx/sites-enabled/dot-bootnode

    server {
    listen 30312 ssl http2 default_server;
    server_name dot-bootnode.stakeworld.io;
    root /var/www/html;

    ssl_certificate "<your_cert";
    ssl_certificate_key "<your_key>";

    location / {
    proxy_buffers 16 4k;
    proxy_buffer_size 2k;
    proxy_pass http://localhost:30311;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";
    proxy_set_header Host $host;
    }

    }

    Testing Bootnode Connection

    If we have the above node running with DNS name dot-bootnode.stakeworld.io, proxied with a valid certificate and node-id 12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg then the following commands should give you a: "syncing 1 peers".

    tip

    You can add -lsub-libp2p=trace on the end to get libp2p trace logging for debugging purposes.

    p2p:

    polkadot --chain polkadot --base-path /tmp/node --name "Bootnode testnode" --reserved-only --reserved-nodes "/dns/dot-bootnode.stakeworld.io/tcp/30310/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg" --no-hardware-benchmarks

    p2p/ws:

    polkadot --chain polkadot --base-path /tmp/node --name "Bootnode testnode" --reserved-only --reserved-nodes "/dns/dot-bootnode.stakeworld.io/tcp/30311/ws/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg" --no-hardware-benchmarks

    p2p/wss:

    polkadot --chain polkadot --base-path /tmp/node --name "Bootnode testnode" --reserved-only --reserved-nodes "/dns/dot-bootnode.stakeworld.io/tcp/30312/wss/p2p/12D3KooWAb5MyC1UJiEQJk4Hg4B2Vi3AJdqSUhTGYUqSnEqCFMFg" --no-hardware-benchmarks
    - + \ No newline at end of file diff --git a/docs/maintain-endpoints.html b/docs/maintain-endpoints.html index 298aa0544d54..26cd21505df7 100644 --- a/docs/maintain-endpoints.html +++ b/docs/maintain-endpoints.html @@ -19,7 +19,7 @@ - + @@ -40,7 +40,7 @@ provide additional services such as higher rate limits, potentially more reliable and scalable service, and additional metrics.

    note

    The list of third party RPC endpoints above for Polkadot and Kusama is directly fetched from Polkdot-JS UI

    - + \ No newline at end of file diff --git a/docs/maintain-errors.html b/docs/maintain-errors.html index 13b8bf7bccde..88ed769993bd 100644 --- a/docs/maintain-errors.html +++ b/docs/maintain-errors.html @@ -19,7 +19,7 @@ - + @@ -50,7 +50,7 @@ will wait to be executed at the correct place in the nonce sequence OR it will get discarded due to some other error (ex. the validity period expires).*

    Error Table

    The below table is a reference to the errors that exists in Polkadot. It is generated from the runtime's metadata.

    PalletErrorDocumentation
    System (0)
    InvalidSpecName (0)The name of specification does not match between the current runtime and the new runtime.
    SpecVersionNeedsToIncrease (1)The specification version is not allowed to decrease between the current runtime and the new runtime.
    FailedToExtractRuntimeVersion (2)Failed to extract the runtime version from the new runtime. Either calling Core_version or decoding RuntimeVersion failed.
    NonDefaultComposite (3)Suicide called when the account has non-default composite data.
    NonZeroRefCount (4)There is a non-zero reference count preventing the account from being purged.
    Scheduler (1)
    FailedToSchedule (0)Failed to schedule a call
    NotFound (1)Cannot find the scheduled call.
    TargetBlockNumberInPast (2)Given target block number is in the past.
    RescheduleNoChange (3)Reschedule failed because it does not change scheduled time.
    Balances (5)
    VestingBalance (0)Vesting balance too high to send value
    LiquidityRestrictions (1)Account liquidity restrictions prevent withdrawal
    Overflow (2)Got an overflow after adding
    InsufficientBalance (3)Balance too low to send value
    ExistentialDeposit (4)Value too low to create account due to existential deposit
    KeepAlive (5)Transfer/payment would kill account
    ExistingVestingSchedule (6)A vesting schedule already exists for this account
    DeadAccount (7)Beneficiary account must pre-exist
    Authorship (6)
    InvalidUncleParent (0)The uncle parent not in the chain.
    UnclesAlreadySet (1)Uncles already set in the block.
    TooManyUncles (2)Too many uncles.
    GenesisUncle (3)The uncle is genesis.
    TooHighUncle (4)The uncle is too high in chain.
    UncleAlreadyIncluded (5)The uncle is already included.
    OldUncle (6)The uncle isn't recent enough to be included.
    Staking (7)
    NotController (0)Not a controller account.
    NotStash (1)Not a stash account.
    AlreadyBonded (2)Stash is already bonded.
    AlreadyPaired (3)Controller is already paired.
    EmptyTargets (4)Targets cannot be empty.
    DuplicateIndex (5)Duplicate index.
    InvalidSlashIndex (6)Slash record index out of bounds.
    InsufficientValue (7)Can not bond with value less than minimum balance.
    NoMoreChunks (8)Can not schedule more unlock chunks.
    NoUnlockChunk (9)Can not rebond without unlocking chunks.
    FundedTarget (10)Attempting to target a stash that still has funds.
    InvalidEraToReward (11)Invalid era to reward.
    InvalidNumberOfNominations (12)Invalid number of nominations.
    NotSortedAndUnique (13)Items are not sorted and unique.
    AlreadyClaimed (14)Rewards for this era have already been claimed for this validator.
    OffchainElectionEarlySubmission (15)The submitted result is received out of the open window.
    OffchainElectionWeakSubmission (16)The submitted result is not as good as the one stored on chain.
    SnapshotUnavailable (17)The snapshot data of the current window is missing.
    OffchainElectionBogusWinnerCount (18)Incorrect number of winners were presented.
    OffchainElectionBogusWinner (19)One of the submitted winners is not an active candidate on chain (index is out of range in snapshot).
    OffchainElectionBogusCompact (20)Error while building the assignment type from the compact. This can happen if an index is invalid, or if the weights overflow.
    OffchainElectionBogusNominator (21)One of the submitted nominators is not an active nominator on chain.
    OffchainElectionBogusNomination (22)One of the submitted nominators has an edge to which they have not voted on chain.
    OffchainElectionSlashedNomination (23)One of the submitted nominators has an edge which is submitted before the last non-zero slash of the target.
    OffchainElectionBogusSelfVote (24)A self vote must only be originated from a validator to ONLY themselves.
    OffchainElectionBogusEdge (25)The submitted result has unknown edges that are not among the presented winners.
    OffchainElectionBogusScore (26)The claimed score does not match with the one computed from the data.
    OffchainElectionBogusElectionSize (27)The election size is invalid.
    CallNotAllowed (28)The call is not allowed at the given time due to restrictions of election period.
    IncorrectHistoryDepth (29)Incorrect previous history depth input provided.
    IncorrectSlashingSpans (30)Incorrect number of slashing spans provided.
    Session (9)
    InvalidProof (0)Invalid ownership proof.
    NoAssociatedValidatorId (1)No associated validator ID for account.
    DuplicatedKey (2)Registered duplicate key.
    NoKeys (3)No keys are associated with this account.
    Grandpa (11)
    PauseFailed (0)Attempt to signal GRANDPA pause when the authority set isn't live (either paused or already pending pause).
    ResumeFailed (1)Attempt to signal GRANDPA resume when the authority set isn't paused (either live or already pending resume).
    ChangePending (2)Attempt to signal GRANDPA change with one already pending.
    TooSoon (3)Cannot signal forced change so soon after last.
    InvalidKeyOwnershipProof (4)A key ownership proof provided as part of an equivocation report is invalid.
    InvalidEquivocationProof (5)An equivocation proof provided as part of an equivocation report is invalid.
    DuplicateOffenceReport (6)A given equivocation report is valid but already previously reported.
    ImOnline (12)
    InvalidKey (0)Non existent public key.
    DuplicatedHeartbeat (1)Duplicated heartbeat.
    Democracy (14)
    ValueLow (0)Value too low
    ProposalMissing (1)Proposal does not exist
    BadIndex (2)Unknown index
    AlreadyCanceled (3)Cannot cancel the same proposal twice
    DuplicateProposal (4)Proposal already made
    ProposalBlacklisted (5)Proposal still blacklisted
    NotSimpleMajority (6)Next external proposal not simple majority
    InvalidHash (7)Invalid hash
    NoProposal (8)No external proposal
    AlreadyVetoed (9)Identity may not veto a proposal twice
    NotDelegated (10)Not delegated
    DuplicatePreimage (11)Preimage already noted
    NotImminent (12)Not imminent
    TooEarly (13)Too early
    Imminent (14)Imminent
    PreimageMissing (15)Preimage not found
    ReferendumInvalid (16)Vote given for invalid referendum
    PreimageInvalid (17)Invalid preimage
    NoneWaiting (18)No proposals waiting
    NotLocked (19)The target account does not have a lock.
    NotExpired (20)The lock on the account to be unlocked has not yet expired.
    NotVoter (21)The given account did not vote on the referendum.
    NoPermission (22)The actor has no permission to conduct the action.
    AlreadyDelegating (23)The account is already delegating.
    Overflow (24)An unexpected integer overflow occurred.
    Underflow (25)An unexpected integer underflow occurred.
    InsufficientFunds (26)Too high a balance was provided that the account cannot afford.
    NotDelegating (27)The account is not currently delegating.
    VotesExist (28)The account currently has votes attached to it and the operation cannot succeed until these are removed, either through unvote or reap_vote.
    InstantNotAllowed (29)The instant referendum origin is currently disallowed.
    Nonsense (30)Delegation to oneself makes no sense.
    WrongUpperBound (31)Invalid upper bound.
    MaxVotesReached (32)Maximum number of votes reached.
    InvalidWitness (33)The provided witness data is wrong.
    TooManyProposals (34)Maximum number of proposals reached.
    Council (15)
    NotMember (0)Account is not a member
    DuplicateProposal (1)Duplicate proposals not allowed
    ProposalMissing (2)Proposal must exist
    WrongIndex (3)Mismatched index
    DuplicateVote (4)Duplicate vote ignored
    AlreadyInitialized (5)Members are already initialized!
    TooEarly (6)The close call was made too early, before the end of the voting.
    TooManyProposals (7)There can only be a maximum of MaxProposals active proposals.
    WrongProposalWeight (8)The given weight bound for the proposal was too low.
    WrongProposalLength (9)The given length bound for the proposal was too low.
    TechnicalCommittee (16)
    NotMember (0)Account is not a member
    DuplicateProposal (1)Duplicate proposals not allowed
    ProposalMissing (2)Proposal must exist
    WrongIndex (3)Mismatched index
    DuplicateVote (4)Duplicate vote ignored
    AlreadyInitialized (5)Members are already initialized!
    TooEarly (6)The close call was made too early, before the end of the voting.
    TooManyProposals (7)There can only be a maximum of MaxProposals active proposals.
    WrongProposalWeight (8)The given weight bound for the proposal was too low.
    WrongProposalLength (9)The given length bound for the proposal was too low.
    ElectionsPhragmen (17)
    UnableToVote (0)Cannot vote when no candidates or members exist.
    NoVotes (1)Must vote for at least one candidate.
    TooManyVotes (2)Cannot vote more than candidates.
    MaximumVotesExceeded (3)Cannot vote more than maximum allowed.
    LowBalance (4)Cannot vote with stake less than minimum balance.
    UnableToPayBond (5)Voter can not pay voting bond.
    MustBeVoter (6)Must be a voter.
    ReportSelf (7)Cannot report self.
    DuplicatedCandidate (8)Duplicated candidate submission.
    MemberSubmit (9)Member cannot re-submit candidacy.
    RunnerSubmit (10)Runner cannot re-submit candidacy.
    InsufficientCandidateFunds (11)Candidate does not have enough funds.
    NotMember (12)Not a member.
    InvalidCandidateCount (13)The provided count of number of candidates is incorrect.
    InvalidVoteCount (14)The provided count of number of votes is incorrect.
    InvalidRenouncing (15)The renouncing origin presented a wrong Renouncing parameter.
    InvalidReplacement (16)Prediction regarding replacement after member removal is wrong.
    Treasury (19)
    InsufficientProposersBalance (0)Proposer's balance is too low.
    InvalidIndex (1)No proposal or bounty at that index.
    ReasonTooBig (2)The reason given is just too big.
    AlreadyKnown (3)The tip was already found/started.
    UnknownTip (4)The tip hash is unknown.
    NotFinder (5)The account attempting to retract the tip is not the finder of the tip.
    StillOpen (6)The tip cannot be claimed/closed because there are not enough tippers yet.
    Premature (7)The tip cannot be claimed/closed because it's still in the countdown period.
    UnexpectedStatus (8)The bounty status is unexpected.
    RequireCurator (9)Require bounty curator.
    InvalidValue (10)Invalid bounty value.
    InvalidFee (11)Invalid bounty fee.
    PendingPayout (12)A bounty payout is pending. To cancel the bounty, you must unassign and slash the curator.
    Claims (24)
    InvalidEthereumSignature (0)Invalid Ethereum signature.
    SignerHasNoClaim (1)Ethereum address has no claim.
    SenderHasNoClaim (2)Account ID sending tx has no claim.
    PotUnderflow (3)There's not enough in the pot to pay out some unvested amount. Generally implies a logic error.
    InvalidStatement (4)A needed statement was not included.
    VestedBalanceExists (5)The account already has a vested balance.
    Vesting (25)
    NotVesting (0)The account given is not vesting.
    ExistingVestingSchedule (1)An existing vesting schedule already exists for this account that cannot be clobbered.
    AmountLow (2)Amount being transferred is too low to create a vesting schedule.
    Identity (28)
    TooManySubAccounts (0)Too many subs-accounts.
    NotFound (1)Account isn't found.
    NotNamed (2)Account isn't named.
    EmptyIndex (3)Empty index.
    FeeChanged (4)Fee is changed.
    NoIdentity (5)No identity found.
    StickyJudgement (6)Sticky judgement.
    JudgementGiven (7)Judgement given.
    InvalidJudgement (8)Invalid judgement.
    InvalidIndex (9)The index is invalid.
    InvalidTarget (10)The target is invalid.
    TooManyFields (11)Too many additional fields.
    TooManyRegistrars (12)Maximum amount of registrars reached. Cannot add any more.
    AlreadyClaimed (13)Account ID is already named.
    NotSub (14)Sender is not a sub-account.
    NotOwned (15)Sub-account isn't owned by sender.
    Proxy (29)
    TooMany (0)There are too many proxies registered or too many announcements pending.
    NotFound (1)Proxy registration not found.
    NotProxy (2)Sender is not a proxy of the account to be proxied.
    Unproxyable (3)A call which is incompatible with the proxy type's filter was attempted.
    Duplicate (4)Account is already a proxy.
    NoPermission (5)Call may not be made by proxy because it may escalate its privileges.
    Unannounced (6)Announcement, if made at all, was made too recently.
    Multisig (30)
    MinimumThreshold (0)Threshold must be 2 or greater.
    AlreadyApproved (1)Call is already approved by this signatory.
    NoApprovalsNeeded (2)Call doesn't need any (more) approvals.
    TooFewSignatories (3)There are too few signatories in the list.
    TooManySignatories (4)There are too many signatories in the list.
    SignatoriesOutOfOrder (5)The signatories were provided out of order; they should be ordered.
    SenderInSignatories (6)The sender was contained in the other signatories; it shouldn't be.
    NotFound (7)Multisig operation not found when attempting to cancel.
    NotOwner (8)Only the account that originally created the multisig is able to cancel it.
    NoTimepoint (9)No timepoint was given, yet the multisig operation is already underway.
    WrongTimepoint (10)A different timepoint was given to the multisig operation that is underway.
    UnexpectedTimepoint (11)A timepoint was given, yet no multisig operation is underway.
    WeightTooLow (12)The maximum weight information provided was too low.
    AlreadyStored (13)The data to be stored is already stored.
    - + \ No newline at end of file diff --git a/docs/maintain-guides-async-backing.html b/docs/maintain-guides-async-backing.html index 1316234266aa..a743529b140a 100644 --- a/docs/maintain-guides-async-backing.html +++ b/docs/maintain-guides-async-backing.html @@ -19,7 +19,7 @@ - + @@ -90,7 +90,7 @@ Relay block number is kept track of by each parachain in pallet-parachain-system with the storage value LastRelayChainBlockNumber. This value can be obtained and used wherever timing based on block number is needed.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-avoid-slashing.html b/docs/maintain-guides-avoid-slashing.html index 431417e63ea3..695faa373ed3 100644 --- a/docs/maintain-guides-avoid-slashing.html +++ b/docs/maintain-guides-avoid-slashing.html @@ -19,7 +19,7 @@ - + @@ -68,7 +68,7 @@ obtain pristine binaries or source code and to ensure the security of their node:

    1. Always download either source files or binaries from the official Parity repository
    2. Verify the hash of downloaded files.
    3. Use the W3F secure validator setup or adhere to its principles
    4. Ensure essential security items are checked, use a firewall, manage user access, use SSH certificates
    5. Avoid using your server as a general-purpose system. Hosting a validator on your workstation or one that hosts other services increases the risk of maleficence.

    Examples

    NetworkEraEvent TypeDetailsAction Taken
    Polkadot774Small EquivocationThe validator migrated servers and cloned the keystore folder. The on-chain event can be viewed here.The validator did not submit a request for the slash to be canceled.
    Kusama3329Small EquivocationThe validator operated a test machine with cloned keys; the test machine was online at the same time as the primary, which resulted in a slash. Details can be found here.The validator requested a cancellation of the slash, but the council declined.
    Kusama3995Small EquivocationThe validator noticed several errors, after which the client crashed, and a slash was applied. The validator recorded all events and opened GitHub issues to allow for technical opinions to be shared. Details can be found here.The validator requested to cancel the slash. The council approved the request as they believed the error was not operator related.
    Kusama4543Medium UnresponsivenessA large amount of disputes flooded the network resulting in an application fault. The fault caused the client software to hang and as a result ~197 unique validators become unresponsive. Further details can be found here.The pending slash was cancelled and with runtime 9350 all lost nominations were restored. The application bug was addressed with client version 0.9.36
    - + \ No newline at end of file diff --git a/docs/maintain-guides-democracy.html b/docs/maintain-guides-democracy.html index 564548640aeb..27dd5c4e5ba3 100644 --- a/docs/maintain-guides-democracy.html +++ b/docs/maintain-guides-democracy.html @@ -19,7 +19,7 @@ - + @@ -162,7 +162,7 @@ a decimal integer. The bitfield stores both the conviction and aye/nay boolean, where the boolean is represented using the MSB of the byte. This would mean that the grouping of the 7 remaining bits is used to store the conviction.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-chill.html b/docs/maintain-guides-how-to-chill.html index 7ff60b595092..7335da0dcec5 100644 --- a/docs/maintain-guides-how-to-chill.html +++ b/docs/maintain-guides-how-to-chill.html @@ -19,7 +19,7 @@ - + @@ -79,7 +79,7 @@ Polkadot is set to None eliminating the upper bound on the number of nominators on the network. Due to this, the chillOther extrinsic on Polkadot network has no effect as the chill threshold will never be met.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-join-council.html b/docs/maintain-guides-how-to-join-council.html index 76a3507340cf..79b747a0350b 100644 --- a/docs/maintain-guides-how-to-join-council.html +++ b/docs/maintain-guides-how-to-join-council.html @@ -19,7 +19,7 @@ - + @@ -43,7 +43,7 @@ the row "Members".

    council members list

    Now you are able to participate on the council by making motions or voting proposals. To join in on the active discussions, join the Polkadot Direction channel.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-monitor-your-node.html b/docs/maintain-guides-how-to-monitor-your-node.html index cbe684ecd0ab..884805e650e9 100644 --- a/docs/maintain-guides-how-to-monitor-your-node.html +++ b/docs/maintain-guides-how-to-monitor-your-node.html @@ -19,7 +19,7 @@ - + @@ -83,7 +83,7 @@ here. There are other interesting alerts you may find useful here.

    groups:
    - name: alert_rules
    rules:
    - alert: InstanceDown
    expr: up == 0
    for: 5m
    labels:
    severity: critical
    annotations:
    summary: "Instance [{{ $labels.instance }}] down"
    description: "[{{ $labels.instance }}] of job [{{ $labels.job }}] has been down for more than 1 minute."

    Change the ownership of this file to prometheus instead of root by running:

    sudo chown prometheus:prometheus rules.yml

    To check the rules defined in the "rules.yml" is syntactically correct, run the following command:

    sudo -u prometheus promtool check rules rules.yml

    Finally, restart everything by running:

    sudo systemctl restart prometheus && sudo systemctl restart alertmanager

    Now if one of your target instances down, you will receive an alert on the AlertManager and Gmail like below.

    grafana-am-6

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-nominate-kusama.html b/docs/maintain-guides-how-to-nominate-kusama.html index e6a39eb3f24d..98ae2f5f205b 100644 --- a/docs/maintain-guides-how-to-nominate-kusama.html +++ b/docs/maintain-guides-how-to-nominate-kusama.html @@ -19,7 +19,7 @@ - + @@ -96,7 +96,7 @@ Polkascan. Also, you can verify the bonding state under the Staking page on the Polkadot-JS Apps Dashboard.

    Step 3. Nominate a validator

    To nominate a validator, you can execute the following command:

    polkadot-js-api --seed "MNEMONIC_PHRASE" tx.staking.nominate '["VALIDATOR_ADDRESS"]' --ws WS_ENDPOINT
    polkadot-js-api --seed "xxxx xxxxx xxxx xxxxx" tx.staking.nominate '["CmD9vaMYoiKe7HiFnfkftwvhKbxN9bhyjcDrfFRGbifJEG8","E457XaKbj2yTB2URy8N4UuzmyuFRkcdxYs67UvSgVr7HyFb"]' --ws wss://kusama-rpc.polkadot.io/

    After a few seconds, you should see the hash of the transaction and if you would like to verify the nomination status, you can check that on the Polkadot-JS UI as well.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-nominate-polkadot.html b/docs/maintain-guides-how-to-nominate-polkadot.html index 4afc80a2fbe6..e7941d559aec 100644 --- a/docs/maintain-guides-how-to-nominate-polkadot.html +++ b/docs/maintain-guides-how-to-nominate-polkadot.html @@ -19,7 +19,7 @@ - + @@ -67,7 +67,7 @@ Polkascan. Also, you can verify the bonding state under the Staking page on the Polkadot-JS Apps Dashboard.

    Step 3. Nominate a validator

    To nominate a validator, you can execute the following command:

    polkadot-js-api --seed "MNEMONIC_PHRASE" tx.staking.nominate '["VALIDATOR_ADDRESS"]' --ws WS_ENDPOINT
    polkadot-js-api --seed "xxxx xxxxx xxxx xxxxx" tx.staking.nominate '["CmD9vaMYoiKe7HiFnfkftwvhKbxN9bhyjcDrfFRGbifJEG8","E457XaKbj2yTB2URy8N4UuzmyuFRkcdxYs67UvSgVr7HyFb"]' --ws wss://rpc.polkadot.io

    After a few seconds, you should see the hash of the transaction, and if you would like to verify the nomination status, you can check that on the Polkadot-JS UI as well.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-stop-validating.html b/docs/maintain-guides-how-to-stop-validating.html index f09a5ee2b54f..935b5afde089 100644 --- a/docs/maintain-guides-how-to-stop-validating.html +++ b/docs/maintain-guides-how-to-stop-validating.html @@ -19,7 +19,7 @@ - + @@ -40,7 +40,7 @@ transfer your tokens.

    See Unbonding and Rebonding for more details.

    Unbond your tokens

    Unbonding your tokens can be done through the Network > Staking > Account actions page in PolkadotJS Apps by clicking the corresponding stash account dropdown and selecting "Unbond funds". This can also be done through the staking.unbond() extrinsic with the staking proxy account.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-systemd.html b/docs/maintain-guides-how-to-systemd.html index 3f5e313f5722..a87ee8f07ebe 100644 --- a/docs/maintain-guides-how-to-systemd.html +++ b/docs/maintain-guides-how-to-systemd.html @@ -19,7 +19,7 @@ - + @@ -32,7 +32,7 @@ not recognize votes that didn't make it to disk, and will then cast conflicting votes. Delaying the restart will allow the network to progress past potentially conflicting votes, at which point other nodes will not accept them.

    To enable this to autostart on bootup run:

    systemctl enable polkadot-validator.service

    Start it manually with:

    systemctl start polkadot-validator.service

    You can check that it's working with:

    systemctl status polkadot-validator.service

    You can tail the logs with journalctl like so:

    journalctl -f -u polkadot-validator
    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-upgrade.html b/docs/maintain-guides-how-to-upgrade.html index 21b233f0cbd5..b425e2394969 100644 --- a/docs/maintain-guides-how-to-upgrade.html +++ b/docs/maintain-guides-how-to-upgrade.html @@ -19,7 +19,7 @@ - + @@ -50,7 +50,7 @@ Validator A.
  • Take note of the Session that this extrinsic was executed in.
  • Again, it is imperative that Validator B is kept running until the current session finishes and two further full sessions have elapsed.

    Once this time has elapsed, Validator A will take over. You can safely stop Validator B.

    NOTE: To verify that the Session has changed, make sure that a block in the new Session is finalized. You should see log messages like the ones below to confirm the change:

    2019-10-28 21:44:13 Applying authority set change scheduled at block #450092
    2019-10-28 21:44:13 Applying GRANDPA set change to new set with 20 authorities
    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-validate-kusama.html b/docs/maintain-guides-how-to-validate-kusama.html index 37317481eb75..51c5e603b9ce 100644 --- a/docs/maintain-guides-how-to-validate-kusama.html +++ b/docs/maintain-guides-how-to-validate-kusama.html @@ -19,7 +19,7 @@ - + @@ -68,7 +68,7 @@ validator payout document.

    Run a Kusama Validator

    Running a validator on the Kusama network is identical to running a Polkadot validator. Check out the Polkadot guide on how to setup a validator.

    Make sure to adjust the Polkadot guide to run a Kusama network validator (the instructions will also be available in the Polkadot Validator guide):

    • When starting the node pass --chain=kusama CLI flag
    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-validate-polkadot.html b/docs/maintain-guides-how-to-validate-polkadot.html index b51ebe5f4908..2f578924836a 100644 --- a/docs/maintain-guides-how-to-validate-polkadot.html +++ b/docs/maintain-guides-how-to-validate-polkadot.html @@ -19,7 +19,7 @@ - + @@ -269,7 +269,7 @@ instance, Digital Ocean lists "Mining of Cryptocurrencies" under the Network Abuse section of their Acceptable Use Policy and requires explicit permission to do so. This may extend to other cryptocurrency activity.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-how-to-vote-councillor.html b/docs/maintain-guides-how-to-vote-councillor.html index 10ad43e9006f..490b92bb445f 100644 --- a/docs/maintain-guides-how-to-vote-councillor.html +++ b/docs/maintain-guides-how-to-vote-councillor.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ Polkadot-JS Apps Dashboard.

    Under the "Council overview" tab, click on "Vote".

    polkadotjs_removeVoter

    Issue the "Unvote all" option.

    When the transaction is included in a block you should have your reserved tokens made liquid again and your vote will no longer be counting for any councillors in the elections starting in the next term.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-secure-validator.html b/docs/maintain-guides-secure-validator.html index 4f22de7fbb08..473214f9b6c4 100644 --- a/docs/maintain-guides-secure-validator.html +++ b/docs/maintain-guides-secure-validator.html @@ -19,7 +19,7 @@ - + @@ -69,7 +69,7 @@ hardware. The provisioning of the validator machine should be automated and defined in code. This code should be kept in private version control, reviewed, audited, and tested.

  • Session keys should be generated and provided in a secure way.

  • Polkadot should be started at boot and restarted if stopped for any reason (supervisor process).

  • Polkadot should run as a non-root user.

  • Monitoring

    • There should be an on-call rotation for managing the alerts.

    • There should be a clear protocol with actions to perform for each level of each alert and an escalation policy.

    Resources

    - + \ No newline at end of file diff --git a/docs/maintain-guides-society-kusama.html b/docs/maintain-guides-society-kusama.html index 1a471370d3a2..bc7857ea6c07 100644 --- a/docs/maintain-guides-society-kusama.html +++ b/docs/maintain-guides-society-kusama.html @@ -19,7 +19,7 @@ - + @@ -93,7 +93,7 @@ extrinsic's parameters go to Element 1 ("proposal") -> "value" -> "params" -> Element 2 ("rules") and copy the value corresponding to the key "value". You can use a hex-to-UTF8 converter to then display the text. Note that the text is formatted with Markdown.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-validator-community.html b/docs/maintain-guides-validator-community.html index 8ad62b07af4a..672f552ba25c 100644 --- a/docs/maintain-guides-validator-community.html +++ b/docs/maintain-guides-validator-community.html @@ -19,7 +19,7 @@ - + @@ -163,7 +163,7 @@ monitoring, observability services, staking dashboards, wallets, command-line utilities, or porting implementations to other languages. Additionally, this may also be eligible to be funded via a Web3 Foundation Grant.

    - + \ No newline at end of file diff --git a/docs/maintain-guides-validator-payout.html b/docs/maintain-guides-validator-payout.html index 315390d21a83..85d9fe965aa4 100644 --- a/docs/maintain-guides-validator-payout.html +++ b/docs/maintain-guides-validator-payout.html @@ -19,7 +19,7 @@ - + @@ -109,7 +109,7 @@ brackets ([]) next to each validator. Note that since the validator payment is public knowledge, having a low or non-existent validator payment may attract more stake from nominators, since they know they will receive a larger reward.

    Validator Set Size (v): 4
    Validator 1 Stake (v1) [20% commission]: 18 DOT (9 validator, 9 nominator)
    Validator 2 Stake (v2) [40% commission]: 9 DOT (3 validator, 6 nominator)
    Validator 3 Stake (v3) [10% commission]: 8 DOT (4 validator, 4 nominator)
    Validator 4 Stake (v4) [ 0% commission]: 6 DOT (1 validator, 5 nominator)
    Payout (p): 8 DOT

    Payout for each validator (v1 - v4):
    p / v = 8 / 4 = 2 DOT

    v1:
    (0.2 * 2) = 0.4 DOT -> validator payment
    (2 - 0.4) = 1.6 -> shared between all stake
    (9 / 18) * 1.6 = 0.8 -> validator stake share
    (9 / 18) * 1.6 = 0.8 -> nominator stake share
    v1 validator total reward: 0.4 + 0.8 = 1.2 DOT
    v1 nominator reward: 0.8 DOT

    v2:
    (0.4 * 2) = 0.8 DOT -> validator payment
    (2 - 0.8) = 1.2 -> shared between all stake
    (3 / 9) * 1.2 = 0.4 -> validator stake share
    (6 / 9) * 1.2 = 0.8 -> nominator stake share
    v2 validator total reward: 0.8 + 0.4 = 1.2 DOT
    v2 nominator reward: 0.8 DOT

    v3:
    (0.1 * 2) = 0.2 DOT -> validator payment
    (2 - 0.2) = 1.8 -> shared between all stake
    (4 / 8) * 1.8 = 0.9 -> validator stake share
    (4 / 8) * 1.8 = 0.9 -> nominator stake share
    v3 validator total reward: 0.2 + 0.9 DOT = 1.1 DOT
    v3 nominator reward: 0.9 DOT

    v4:
    (0 * 2) = 0 DOT -> validator payment
    (2 - 0) = 2.0 -> shared between all stake
    (1 / 6) * 2 = 0.33 -> validator stake share
    (5 / 6) * 2 = 1.67 -> nominator stake share
    v4 validator total reward: 0 + 0.33 DOT = 0.33 DOT
    v4 nominator reward: 1.67 DOT
    - + \ No newline at end of file diff --git a/docs/maintain-index.html b/docs/maintain-index.html index e0fed75afb90..f3794a0a950a 100644 --- a/docs/maintain-index.html +++ b/docs/maintain-index.html @@ -19,7 +19,7 @@ - + @@ -45,7 +45,7 @@ participate in governance.
  • How to join the Council - Step by step guide for running for the Council.
  • How to vote for a Councillor - Step by step guide for voting for your favorite councillors.
  • - + \ No newline at end of file diff --git a/docs/maintain-networks.html b/docs/maintain-networks.html index a0f0ca96e979..d3b74bf7e674 100644 --- a/docs/maintain-networks.html +++ b/docs/maintain-networks.html @@ -19,7 +19,7 @@ - + @@ -51,7 +51,7 @@ the public Telemetry service.

    You can verify that your node is connected by navigating to the correct network on the dashboard and finding the name of your node.

    There is a built-in search function on the nodes page. Simply start typing keystrokes in the main window to make it available.

    - + \ No newline at end of file diff --git a/docs/maintain-polkadot-parameters.html b/docs/maintain-polkadot-parameters.html index 982b4cc83923..28ddb2199630 100644 --- a/docs/maintain-polkadot-parameters.html +++ b/docs/maintain-polkadot-parameters.html @@ -19,7 +19,7 @@ - + @@ -39,7 +39,7 @@

    PolkadotTimeSlotsDescription
    Term duration1 Day14_400The time for which a validator is in the set after being elected. Note, this duration can be shortened in the case that a validator misbehaves.
    Nomination period1 Day14_400How often a new validator set is elected according to Phragmén's method.
    Bonding duration28 days403_200How long until your funds will be transferrable after unbonding. Note that the bonding duration is defined in eras, not directly by slots.
    Slash defer duration28 days403_200Prevents overslashing and validators "escaping" and getting their nominators slashed with no repercussions to themselves. Note that the bonding duration is defined in eras, not directly by slots.

    Parachains

    Crowdloans and AuctionsTimeSlotsDescription
    Auction duration7 days100_800The total duration of the slot auction, subject to the candle auction mechanism.
    Opening period2 days28_800The opening period of the slot auction.
    Ending period5 days72_000The ending period of the slot auction.
    Parachain SlotTimeSlotsDescription
    Lease period12 weeks1_209_600The length of one lease period in a parachain slot.
    Total slot duration2 years10_512_000The maximum duration a parachain can lease by winning a slot auction (8 lease periods).

    Treasury

    TreasuryTimeSlotsDescription
    Periods between spends24 days345_600When the treasury can spend again after spending previously.

    Burn percentage is currently 1.00%.

    Precision

    DOT have 10 decimals of precision. In other words, 10 ** 10 (10_000_000_000 or ten billion) Plancks make up a DOT.

    The denomination of DOT was changed from 12 decimals of precision at block #1,248,328 in an event known as Denomination Day. See Redenomination for details.

    - + \ No newline at end of file diff --git a/docs/maintain-rpc.html b/docs/maintain-rpc.html index a300b8dd3b02..7cbe69728630 100644 --- a/docs/maintain-rpc.html +++ b/docs/maintain-rpc.html @@ -19,7 +19,7 @@ - + @@ -54,7 +54,7 @@ node. Activate the "Development" toggle and input your node's address - either the domain or the IP address. Remember to prefix with wss://, and if you're using the 443 port, append :443 like so: wss://example.com:443.

    A sync-in-progress chain connected to Polkadot-JS UI

    Now you have a secure remote connect setup for your Substrate node.

    - + \ No newline at end of file diff --git a/docs/maintain-sync.html b/docs/maintain-sync.html index a346b344bf29..2b6ba8f1b205 100644 --- a/docs/maintain-sync.html +++ b/docs/maintain-sync.html @@ -19,7 +19,7 @@ - + @@ -90,7 +90,7 @@ on localhost by default. If you would like to connect to your node's services (rpc, and prometheus) you need to ensure that you run you node with the --rpc-external, and --prometheus-external commands.

    docker run -p 9944:9944 -p 9615:9615 parity/polkadot:v0.9.13 --name "calling_home_from_a_docker_container" --rpc-external --prometheus-external
    - + \ No newline at end of file diff --git a/docs/maintain-wss.html b/docs/maintain-wss.html index b848a020941e..b386dff46342 100644 --- a/docs/maintain-wss.html +++ b/docs/maintain-wss.html @@ -19,7 +19,7 @@ - + @@ -43,7 +43,7 @@ node. Activate the "Development" toggle and input your node's address - either the domain or the IP address. Remember to prefix with wss:// and if you're using the 443 port, append :443, like so: wss://example.com:443.

    A sync-in-progress chain connected to Polkadot-JS UI

    Now you have a secure remote connect setup for your Substrate node.

    - + \ No newline at end of file diff --git a/docs/metadata.html b/docs/metadata.html index 35b5b0deaa21..81e4211b0430 100644 --- a/docs/metadata.html +++ b/docs/metadata.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ The dropdown below allows you to update the chain selection to visualize. You can search all sub-categories using the provided search field. The information is categorized by the chains Pallets, RPC and Runtime information.

    - + \ No newline at end of file diff --git a/docs/multisig-apps.html b/docs/multisig-apps.html index fd479a09d275..e9930d07faec 100644 --- a/docs/multisig-apps.html +++ b/docs/multisig-apps.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ adding and removing signatories or adjusting the threshold is now possible without creating new multisigs and Multix provides an intuitive interface to work with pure proxies.

    The pure proxy setup used by MultiX can be seen on the pure proxy page.

    - + \ No newline at end of file diff --git a/docs/parachains-apps.html b/docs/parachains-apps.html index b19b3b9d9495..107c51a3b5f3 100644 --- a/docs/parachains-apps.html +++ b/docs/parachains-apps.html @@ -19,7 +19,7 @@ - + @@ -92,7 +92,7 @@ tokens (LST) “vTokens”, as well as remote exchange, and swapping of vTokens from any chain. The DApp aims to simplify the cross-chain experience by providing a seamless interface for users to interact with vTokens across different chains natively.

    - + \ No newline at end of file diff --git a/docs/polkadot-direction.html b/docs/polkadot-direction.html index b0a6013c5ff0..2ebc40d572d0 100644 --- a/docs/polkadot-direction.html +++ b/docs/polkadot-direction.html @@ -19,7 +19,7 @@ - + @@ -140,7 +140,7 @@ decentralizing the network is ensuring experts on which the maintenance of the system relies upon are incentivized and recruited over time by the Polkadot network and not by organizations within the Polkadot ecosystem. - + \ No newline at end of file diff --git a/docs/polkadot-v1.html b/docs/polkadot-v1.html index 5d2f68b99ab4..f7eb0f0af75d 100644 --- a/docs/polkadot-v1.html +++ b/docs/polkadot-v1.html @@ -19,7 +19,7 @@ - + @@ -109,7 +109,7 @@ could become.

    Polkadot is perfecting its implementation through RFCs to continue being a decentralized, secure, ubiquitous computing engine to power the next generation of Web3 applications.

    - + \ No newline at end of file diff --git a/docs/polkadot-vault.html b/docs/polkadot-vault.html index e322a91408e8..38218075d77d 100644 --- a/docs/polkadot-vault.html +++ b/docs/polkadot-vault.html @@ -19,7 +19,7 @@ - + @@ -84,7 +84,7 @@ this article for detailed instructions. If you choose this approach, you should trust the provider you choose.


    Polkadot-JS Guides

    If you are an advanced user, see the Polkadot-JS guides about Polkadot Vault.

    - + \ No newline at end of file diff --git a/docs/polkadot-vision-index.html b/docs/polkadot-vision-index.html index 143bc78bd407..13982efdf812 100644 --- a/docs/polkadot-vision-index.html +++ b/docs/polkadot-vision-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/polkadotjs-ui.html b/docs/polkadotjs-ui.html index 1665e858143d..1abc58238250 100644 --- a/docs/polkadotjs-ui.html +++ b/docs/polkadotjs-ui.html @@ -19,7 +19,7 @@ - + @@ -73,7 +73,7 @@ nomination pool settings (nomination and roles) and use non-transfer proxies, destroy assets, and much more.

    Beginner's Guide to Polkadot-JS

    - + \ No newline at end of file diff --git a/docs/polkadotjs.html b/docs/polkadotjs.html index 0bcb1d344036..e422ba8acb8a 100644 --- a/docs/polkadotjs.html +++ b/docs/polkadotjs.html @@ -19,7 +19,7 @@ - + @@ -93,7 +93,7 @@ of spam prevention, whereas signed transactions are issued by the originator account of a transaction which contains a signature of that account, which will be subject to a fee to include it on the chain.

    - + \ No newline at end of file diff --git a/docs/programmes-index.html b/docs/programmes-index.html index dd951b1d7ef1..90d34c593af5 100644 --- a/docs/programmes-index.html +++ b/docs/programmes-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/research.html b/docs/research.html index fd3f5a79376e..87e5bdb4013f 100644 --- a/docs/research.html +++ b/docs/research.html @@ -19,7 +19,7 @@ - + @@ -54,7 +54,7 @@ – Gives an outline of Nominated Proof of Stake in Polkadot. Author: Alfonzo Cevallos
  • Messaging Protocol Workshop Outcomes – An initiative to design and implement a privacy-preserving communication system for decentralized applications.
  • - + \ No newline at end of file diff --git a/docs/staking-apps.html b/docs/staking-apps.html index cb47b9c55f28..790cae29d39e 100644 --- a/docs/staking-apps.html +++ b/docs/staking-apps.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ (MCDA) as a base for the analytical research. MCDA is an open and transparent approach for evaluating numerous conflicting traits in the decision-making process. For the analysis, validator data is collected at the last block of every session.

    source: https://github.com/turboflakes/apps

    - + \ No newline at end of file diff --git a/docs/staking-dashboard.html b/docs/staking-dashboard.html index f3b40fc4f9c7..ea7db8b969ec 100644 --- a/docs/staking-dashboard.html +++ b/docs/staking-dashboard.html @@ -19,7 +19,7 @@ - + @@ -156,7 +156,7 @@ feature request. We take your feedback seriously, do not hesitate to contact us.

    Network

    Under Network, you can connect to either Polkadot, Kusama, or Westend through public RPC nodes or light clients for a true Web3 experience. For more information about light clients, see this page.

    - + \ No newline at end of file diff --git a/docs/start-building.html b/docs/start-building.html index 1634ee4ddbde..14ba3d21267b 100644 --- a/docs/start-building.html +++ b/docs/start-building.html @@ -19,7 +19,7 @@ - + @@ -41,7 +41,7 @@ and the original Polkadot Forum post.

    Polkadot SDK

    info

    For more information about building on Polkadot, see the Builder's Guide.

    The Polkadot Software Development Kit (SDK) includes all the tools needed to build on the Polkadot ecosystem. The main repositories include:

    The programming language used for development is Rust.

    - + \ No newline at end of file diff --git a/docs/stay-safe-index.html b/docs/stay-safe-index.html index 4cdfe2fce5e0..24423ac3aad9 100644 --- a/docs/stay-safe-index.html +++ b/docs/stay-safe-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/thousand-contributors.html b/docs/thousand-contributors.html index 509459cdfbab..d15335b10901 100644 --- a/docs/thousand-contributors.html +++ b/docs/thousand-contributors.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ the account shared with us.

    Submission reviews

    The review process follows the present pipeline in the 1KC public GitHub project.

    Learn more about the program and its components on the official 1KC repository

    - + \ No newline at end of file diff --git a/docs/thousand-validators.html b/docs/thousand-validators.html index c3b8900b5416..7792a52ee2a7 100644 --- a/docs/thousand-validators.html +++ b/docs/thousand-validators.html @@ -19,7 +19,7 @@ - + @@ -88,7 +88,7 @@ things time to resolve; if they don't, leave a message in the dedicated matrix room or open an issue on GitHub.
  • The 1000 validators website is not up to date? See these resources for more up-to-date information.
  • Resources

    To extract and display the 1KV Program scores there are various tools listed below.

    ResourceGithub sourceInfo
    Main 1KV sitegithubMain site and 1KV backend.
    SubVT telegram bot for polkadot and kusamagithubTelegram bot with overviews and alerts for various polkadot and kusama related events, including 1KV events.
    SubVT ios and android appgithubSubVT app version for mobile phones.
    Validator earnings overviewgithubOverview of validators' earnings.
    Math Crypto's Insightsgithub1KV-oriented scoring overview of Kusama and Polkadot.
    One-T for polkadot and kusamagithubA performance report bot for the Polkadot and Kusama network with special focus on the 1KV programme.
    One-T parachains overviewgithubOne-T's parachain overview.
    Metaspan's 1KV overviewgithubOverview of 1KV programme, including the newly introduced endpoints, see here for available endpoints.
    Decentradot's 1KV overviewgithubOverview of the 1KV programme, including the newly introduced endpoints.
    Hirish 1KV overviewgithub?Overview of the 1KV Programme.
    - + \ No newline at end of file diff --git a/docs/wallets-and-extensions.html b/docs/wallets-and-extensions.html index b736ca497ac6..6789549cd3b4 100644 --- a/docs/wallets-and-extensions.html +++ b/docs/wallets-and-extensions.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,10 @@ to ensure that they use the correct Nova wallet by downloading the app from their official website: https://novawallet.io/. Before creating or restoring accounts , it is wise to double-check the wallet website URLs through official channels (most projects have it listed on -their official social media handles).

    Web Wallets

    Web Wallets are the all-in-one solution to accessing the Web3 space, allowing you to sign transactions on the web without having to download and install any browser extension and mobile app. With all of the features of mobile wallets, you can also connect to and interact with decentralized web apps.

    WalletPlatformsStaking and Nomination PoolsLiquid StakingNFTsCrowdloansLedger supportGovernanceOther features
    SubWalletAny web browsersYes, YesYesYesYesYesNoSubWallet features

    :::

    Enkrypt

    A multichain crypto wallet - Bitcoin, Ethereum, Polkadot, Kusama and a few parachains. +their official social media handles).

    Web Wallets

    Web Wallets are the all-in-one solution to accessing the Web3 space, allowing you to sign +transactions on the web without having to download and install any browser extension and mobile app. +With all of the features of mobile wallets, you can also connect to and interact with decentralized +web apps.

    WalletPlatformsStaking and Nomination PoolsLiquid StakingNFTsCrowdloansLedger supportGovernanceOther features
    SubWalletAny web browsersYes, YesYesYesYesYesNoSubWallet features

    :::

    Enkrypt

    A multichain crypto wallet - Bitcoin, Ethereum, Polkadot, Kusama and a few parachains. Non-custodial, private, hardware wallet support (Ledger and Trezor). Private and open source. Hold, send, and receive tokens and NFTs. Swap tokens and bridge assets between chains. Manage multiple accounts on multiple networks. Connect to web3 apps. Recipient of a development grant from Web3 @@ -89,8 +92,8 @@ Ethereum apps with Talisman. Interact with Web3 apps, store your favourite crypto assets and manage your accounts on over 150+ Substrate and EVM networks. NFT Management, ledger Support, fiat On-ramp, portfolio tracking. Talisman received funding from Polkadot Treasury -[1].

    - +[1].

    + \ No newline at end of file diff --git a/docs/wallets-index.html b/docs/wallets-index.html index f90752c14887..87f2fca4de43 100644 --- a/docs/wallets-index.html +++ b/docs/wallets-index.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file diff --git a/docs/web3-and-polkadot.html b/docs/web3-and-polkadot.html index 38715874a18a..b1ec0b7204e9 100644 --- a/docs/web3-and-polkadot.html +++ b/docs/web3-and-polkadot.html @@ -19,7 +19,7 @@ - + @@ -153,7 +153,7 @@ all blockchains attached to it. For more information, see the Polkadot 1.0 page and the section about XCM and Accords in Polkadot Direction page.

    - + \ No newline at end of file diff --git a/index.html b/index.html index e8af1cdf834a..d648d8a9d188 100644 --- a/index.html +++ b/index.html @@ -19,13 +19,13 @@ - +

    Learn about Polkadot’s canary network Kusama

    Kusama is Polkadot’s “canary network”, a scalable, multi-chain network for radical innovation and early stage Polkadot deployments. For developers, Kusama is a proving ground for all things Polkadot I.e runtime upgrades, on-chain governance, parachains, parathreads, etc.

    language

    Help improve this wiki

    This wiki was started by and is maintained by Web3 Foundation. It is an open-source-ish project and aims to be the most extensive resource of knowledge on Polkadot and the Polkadot ecosystem.

    - + \ No newline at end of file diff --git a/search.html b/search.html index e2414599015d..7d0147baa736 100644 --- a/search.html +++ b/search.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file