From c420b0cb5422565ef16dc629933c185e0618cdab Mon Sep 17 00:00:00 2001 From: Polkadot Wiki CI Date: Wed, 17 Jan 2024 00:14:04 +0000 Subject: [PATCH] Deploy website - based on e283905819a11333185b99ab0138421fc46d0dc8 --- 404.html | 4 ++-- assets/js/131c7f55.1d8405cd.js | 1 + assets/js/131c7f55.faa9a3ec.js | 1 - assets/js/13b7bafa.eac6bda7.js | 1 - assets/js/13b7bafa.eb7aa9cb.js | 1 + assets/js/2f3b630e.368b5916.js | 1 + assets/js/2f3b630e.f438bce2.js | 1 - assets/js/32e8da05.2e6779d0.js | 1 - assets/js/32e8da05.93e20266.js | 1 + assets/js/6d5c9a28.68b7dfbe.js | 1 - assets/js/6d5c9a28.783b1699.js | 1 + assets/js/9528ac88.1fbe91c6.js | 1 + assets/js/9528ac88.5a1a76c0.js | 1 - assets/js/9f804621.b9cd4b75.js | 1 - assets/js/9f804621.c3bc51cc.js | 1 + assets/js/a7b37b86.25264040.js | 1 - assets/js/a7b37b86.f1de04f5.js | 1 + assets/js/c2c6a3a6.cbbda940.js | 1 - assets/js/c2c6a3a6.d084caff.js | 1 + assets/js/d27ae88d.899f2267.js | 1 - assets/js/d27ae88d.a57342ae.js | 1 + assets/js/dd32e389.2483fb69.js | 1 + assets/js/dd32e389.ff9cf19a.js | 1 - assets/js/ed3409b3.39674500.js | 1 - assets/js/ed3409b3.e1aa35a1.js | 1 + assets/js/f0ff685a.6ed11001.js | 1 - assets/js/f0ff685a.c60044c4.js | 1 + assets/js/f2521980.20204449.js | 1 + assets/js/f2521980.59e9d181.js | 1 - assets/js/f44679e7.168bea6c.js | 1 + assets/js/f44679e7.22c866a1.js | 1 - assets/js/ffe9c3c9.4e348b64.js | 1 - assets/js/ffe9c3c9.72c67a2d.js | 1 + ...ime~main.35f21b20.js => runtime~main.ad96e35f.js} | 2 +- docs/ambassadors.html | 4 ++-- docs/apps-index.html | 4 ++-- docs/bug-bounty.html | 4 ++-- docs/build-client-index.html | 4 ++-- docs/build-dapp.html | 4 ++-- docs/build-data.html | 4 ++-- docs/build-guide.html | 4 ++-- docs/build-hackathon.html | 4 ++-- docs/build-hrmp-channels.html | 4 ++-- docs/build-index.html | 4 ++-- docs/build-integrate-assets.html | 4 ++-- docs/build-integration.html | 4 ++-- docs/build-light-clients.html | 4 ++-- docs/build-network-index.html | 4 ++-- docs/build-network-overview.html | 4 ++-- docs/build-node-interaction.html | 4 ++-- docs/build-node-management.html | 4 ++-- docs/build-open-source.html | 4 ++-- docs/build-oracle.html | 4 ++-- docs/build-pdk.html | 4 ++-- docs/build-protocol-index.html | 4 ++-- docs/build-protocol-info.html | 4 ++-- docs/build-smart-contracts.html | 4 ++-- docs/build-storage.html | 4 ++-- docs/build-tools-index.html | 4 ++-- docs/build-transaction-construction.html | 4 ++-- docs/builders-program.html | 4 ++-- docs/community-index.html | 4 ++-- docs/community.html | 4 ++-- docs/contributing.html | 4 ++-- docs/contributors.html | 4 ++-- docs/dashboards-index.html | 4 ++-- docs/decentralized-futures.html | 4 ++-- docs/dev-heroes.html | 4 ++-- docs/explore-index.html | 4 ++-- docs/faq.html | 4 ++-- docs/general-index.html | 4 ++-- docs/getting-started.html | 10 +++++----- docs/glossary.html | 4 ++-- docs/governance-apps.html | 8 ++++---- docs/grants.html | 4 ++-- docs/how-to-dyor.html | 4 ++-- docs/kusama-adversarial-cheatsheet.html | 4 ++-- docs/kusama-bug-bounty.html | 4 ++-- docs/kusama-claims.html | 4 ++-- docs/kusama-coc.html | 4 ++-- docs/kusama-community.html | 4 ++-- docs/kusama-getting-started.html | 4 ++-- docs/kusama-index.html | 4 ++-- docs/kusama-parameters.html | 4 ++-- docs/kusama-social-recovery.html | 4 ++-- docs/kusama-timeline.html | 4 ++-- docs/learn-DOT.html | 8 ++++---- docs/learn-account-abstraction.html | 4 ++-- docs/learn-account-advanced.html | 4 ++-- docs/learn-account-multisig.html | 4 ++-- docs/learn-accounts.html | 4 ++-- docs/learn-advanced-index.html | 4 ++-- docs/learn-architecture-index.html | 4 ++-- docs/learn-architecture.html | 6 +++--- docs/learn-archive-index.html | 4 ++-- docs/learn-assets-index.html | 4 ++-- docs/learn-assets.html | 4 ++-- docs/learn-async-backing.html | 4 ++-- docs/learn-auction.html | 8 ++++---- docs/learn-basics-index.html | 4 ++-- docs/learn-bridges.html | 4 ++-- docs/learn-collator.html | 4 ++-- docs/learn-comparisons-avalanche.html | 4 ++-- docs/learn-comparisons-cosmos.html | 4 ++-- docs/learn-comparisons-ethereum-2.html | 4 ++-- docs/learn-comparisons-index.html | 4 ++-- docs/learn-comparisons-kusama.html | 4 ++-- docs/learn-comparisons-rollups.html | 4 ++-- docs/learn-comparisons.html | 4 ++-- docs/learn-components-index.html | 4 ++-- docs/learn-consensus.html | 4 ++-- docs/learn-controller.html | 4 ++-- docs/learn-crowdloans.html | 8 ++++---- docs/learn-cryptography.html | 4 ++-- docs/learn-future-implementations-index.html | 4 ++-- docs/learn-governance.html | 4 ++-- docs/learn-guides-accounts-multisig.html | 4 ++-- docs/learn-guides-accounts-proxy-pure.html | 4 ++-- docs/learn-guides-accounts-proxy.html | 8 ++++---- docs/learn-guides-accounts.html | 8 ++++---- docs/learn-guides-assets-create.html | 4 ++-- docs/learn-guides-assets-index.html | 4 ++-- docs/learn-guides-assets-ledger.html | 4 ++-- docs/learn-guides-bounties.html | 12 ++++++------ docs/learn-guides-identity.html | 4 ++-- docs/learn-guides-ledger.html | 4 ++-- docs/learn-guides-polkadot-opengov.html | 4 ++-- docs/learn-guides-staking-index.html | 4 ++-- docs/learn-guides-staking-pools.html | 4 ++-- docs/learn-guides-staking.html | 4 ++-- docs/learn-guides-transfers.html | 4 ++-- docs/learn-guides-treasury.html | 4 ++-- docs/learn-guides-vault.html | 4 ++-- docs/learn-identity.html | 4 ++-- docs/learn-implementations.html | 4 ++-- docs/learn-index.html | 4 ++-- docs/learn-inflation.html | 4 ++-- docs/learn-launch.html | 4 ++-- docs/learn-nft-pallets.html | 4 ++-- docs/learn-nft-projects.html | 8 ++++---- docs/learn-nft.html | 4 ++-- docs/learn-nomination-pools.html | 4 ++-- docs/learn-nominator.html | 4 ++-- docs/learn-parachains-faq.html | 4 ++-- docs/learn-parachains-index.html | 4 ++-- docs/learn-parachains-protocol.html | 4 ++-- docs/learn-parachains.html | 4 ++-- docs/learn-parathreads.html | 4 ++-- docs/learn-participants-index.html | 4 ++-- docs/learn-phragmen.html | 4 ++-- docs/learn-polkadot-host.html | 4 ++-- docs/learn-polkadot-js-guides.html | 4 ++-- docs/learn-polkadot-opengov-index.html | 4 ++-- docs/learn-polkadot-opengov-origins.html | 4 ++-- docs/learn-polkadot-opengov-treasury.html | 4 ++-- docs/learn-polkadot-opengov.html | 8 ++++---- docs/learn-polkadotjs-index.html | 4 ++-- docs/learn-proxies-pure.html | 4 ++-- docs/learn-proxies.html | 4 ++-- docs/learn-redenomination.html | 4 ++-- docs/learn-runtime-upgrades.html | 4 ++-- docs/learn-sassafras.html | 4 ++-- docs/learn-scams.html | 8 ++++---- docs/learn-spree.html | 4 ++-- docs/learn-staking-advanced.html | 4 ++-- docs/learn-staking-index.html | 4 ++-- docs/learn-staking.html | 4 ++-- docs/learn-system-chains.html | 4 ++-- docs/learn-teleport.html | 4 ++-- docs/learn-transaction-fees.html | 4 ++-- docs/learn-transactions.html | 4 ++-- docs/learn-treasury.html | 4 ++-- docs/learn-validator.html | 4 ++-- docs/learn-video-tutorials.html | 6 +++--- docs/learn-wasm.html | 4 ++-- docs/learn-xcm-index.html | 4 ++-- docs/learn-xcm-instructions.html | 4 ++-- docs/learn-xcm-pallet.html | 4 ++-- docs/learn-xcm-transport.html | 8 ++++---- docs/learn-xcm-usecases.html | 4 ++-- docs/learn-xcm.html | 4 ++-- docs/learn-xcvm.html | 4 ++-- docs/learn/xcm.html | 4 ++-- docs/learn/xcm/config-deep-dive.html | 4 ++-- docs/learn/xcm/fundamentals-fees.html | 4 ++-- docs/learn/xcm/fundamentals-multiasset.html | 4 ++-- docs/learn/xcm/fundamentals-summary.html | 4 ++-- docs/learn/xcm/fundamentals-xcvm.html | 4 ++-- docs/learn/xcm/fundamentals.html | 4 ++-- .../xcm/fundamentals/multilocation-example.html | 4 ++-- .../xcm/fundamentals/multilocation-junctions.html | 4 ++-- .../xcm/fundamentals/multilocation-summary.html | 4 ++-- docs/learn/xcm/fundamentals/multilocation.html | 4 ++-- docs/learn/xcm/introduction.html | 4 ++-- docs/learn/xcm/journey-assets.html | 4 ++-- docs/learn/xcm/journey-channels.html | 4 ++-- docs/learn/xcm/journey-expectations.html | 4 ++-- docs/learn/xcm/journey-fees.html | 4 ++-- docs/learn/xcm/journey-holding.html | 4 ++-- docs/learn/xcm/journey-locks.html | 4 ++-- docs/learn/xcm/journey-origin.html | 4 ++-- docs/learn/xcm/journey-queries.html | 4 ++-- docs/learn/xcm/journey-register.html | 4 ++-- docs/learn/xcm/journey-summary.html | 4 ++-- docs/learn/xcm/journey-transact.html | 4 ++-- docs/learn/xcm/journey-version.html | 4 ++-- docs/learn/xcm/journey.html | 4 ++-- docs/learn/xcm/journey/transfers-reserve.html | 4 ++-- docs/learn/xcm/journey/transfers-summary.html | 4 ++-- docs/learn/xcm/journey/transfers-teleport.html | 4 ++-- docs/learn/xcm/journey/transfers.html | 4 ++-- docs/learn/xcm/overview-architecture.html | 4 ++-- docs/learn/xcm/overview-format.html | 4 ++-- docs/learn/xcm/overview-intro.html | 4 ++-- docs/learn/xcm/overview-summary.html | 4 ++-- docs/learn/xcm/overview-xcvm.html | 4 ++-- docs/learn/xcm/overview.html | 4 ++-- docs/learn/xcm/quickstart-first-look.html | 4 ++-- docs/learn/xcm/quickstart-simulator.html | 4 ++-- docs/learn/xcm/quickstart-summary.html | 4 ++-- docs/learn/xcm/quickstart.html | 4 ++-- docs/learn/xcm/reference-glossary.html | 4 ++-- docs/learn/xcm/reference-xcvm-registers.html | 4 ++-- docs/learn/xcm/references.html | 4 ++-- docs/learn/xcm/testing.html | 4 ++-- docs/ledger.html | 4 ++-- docs/maintain-bootnode.html | 4 ++-- docs/maintain-endpoints.html | 4 ++-- docs/maintain-errors.html | 4 ++-- docs/maintain-guides-async-backing.html | 4 ++-- docs/maintain-guides-avoid-slashing.html | 4 ++-- docs/maintain-guides-democracy.html | 4 ++-- docs/maintain-guides-how-to-chill.html | 4 ++-- docs/maintain-guides-how-to-join-council.html | 4 ++-- docs/maintain-guides-how-to-monitor-your-node.html | 4 ++-- docs/maintain-guides-how-to-nominate-kusama.html | 4 ++-- docs/maintain-guides-how-to-nominate-polkadot.html | 4 ++-- docs/maintain-guides-how-to-stop-validating.html | 4 ++-- docs/maintain-guides-how-to-systemd.html | 4 ++-- docs/maintain-guides-how-to-upgrade.html | 4 ++-- docs/maintain-guides-how-to-validate-kusama.html | 4 ++-- docs/maintain-guides-how-to-validate-polkadot.html | 4 ++-- docs/maintain-guides-how-to-vote-councillor.html | 4 ++-- docs/maintain-guides-secure-validator.html | 4 ++-- docs/maintain-guides-society-kusama.html | 4 ++-- docs/maintain-guides-validator-community.html | 4 ++-- docs/maintain-guides-validator-payout.html | 4 ++-- docs/maintain-index.html | 4 ++-- docs/maintain-networks.html | 4 ++-- docs/maintain-polkadot-parameters.html | 4 ++-- docs/maintain-rpc.html | 4 ++-- docs/maintain-sync.html | 4 ++-- docs/maintain-wss.html | 4 ++-- docs/metadata.html | 4 ++-- docs/multisig-apps.html | 4 ++-- docs/parachains-apps.html | 4 ++-- docs/polkadot-direction.html | 4 ++-- docs/polkadot-v1.html | 4 ++-- docs/polkadot-vault.html | 8 ++++---- docs/polkadot-vision-index.html | 4 ++-- docs/polkadotjs-ui.html | 4 ++-- docs/polkadotjs.html | 4 ++-- docs/programmes-index.html | 4 ++-- docs/research.html | 4 ++-- docs/staking-apps.html | 8 ++++---- docs/staking-dashboard.html | 4 ++-- docs/start-building.html | 4 ++-- docs/stay-safe-index.html | 4 ++-- docs/thousand-contributors.html | 4 ++-- docs/thousand-validators.html | 4 ++-- docs/transaction-attacks.html | 4 ++-- docs/wallets-and-extensions.html | 4 ++-- docs/wallets-index.html | 4 ++-- docs/web3-and-polkadot.html | 4 ++-- index.html | 4 ++-- search.html | 4 ++-- 276 files changed, 536 insertions(+), 536 deletions(-) create mode 100644 assets/js/131c7f55.1d8405cd.js delete mode 100644 assets/js/131c7f55.faa9a3ec.js delete mode 100644 assets/js/13b7bafa.eac6bda7.js create mode 100644 assets/js/13b7bafa.eb7aa9cb.js create mode 100644 assets/js/2f3b630e.368b5916.js delete mode 100644 assets/js/2f3b630e.f438bce2.js delete mode 100644 assets/js/32e8da05.2e6779d0.js create mode 100644 assets/js/32e8da05.93e20266.js delete mode 100644 assets/js/6d5c9a28.68b7dfbe.js create mode 100644 assets/js/6d5c9a28.783b1699.js create mode 100644 assets/js/9528ac88.1fbe91c6.js delete mode 100644 assets/js/9528ac88.5a1a76c0.js delete mode 100644 assets/js/9f804621.b9cd4b75.js create mode 100644 assets/js/9f804621.c3bc51cc.js delete mode 100644 assets/js/a7b37b86.25264040.js create mode 100644 assets/js/a7b37b86.f1de04f5.js delete mode 100644 assets/js/c2c6a3a6.cbbda940.js create mode 100644 assets/js/c2c6a3a6.d084caff.js delete mode 100644 assets/js/d27ae88d.899f2267.js create mode 100644 assets/js/d27ae88d.a57342ae.js create mode 100644 assets/js/dd32e389.2483fb69.js delete mode 100644 assets/js/dd32e389.ff9cf19a.js delete mode 100644 assets/js/ed3409b3.39674500.js create mode 100644 assets/js/ed3409b3.e1aa35a1.js delete mode 100644 assets/js/f0ff685a.6ed11001.js create mode 100644 assets/js/f0ff685a.c60044c4.js create mode 100644 assets/js/f2521980.20204449.js delete mode 100644 assets/js/f2521980.59e9d181.js create mode 100644 assets/js/f44679e7.168bea6c.js delete mode 100644 assets/js/f44679e7.22c866a1.js delete mode 100644 assets/js/ffe9c3c9.4e348b64.js create mode 100644 assets/js/ffe9c3c9.72c67a2d.js rename assets/js/{runtime~main.35f21b20.js => runtime~main.ad96e35f.js} (92%) diff --git a/404.html b/404.html index 642032312e6e..036e692b0350 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/131c7f55.1d8405cd.js b/assets/js/131c7f55.1d8405cd.js new file mode 100644 index 000000000000..b4f532212c27 --- /dev/null +++ b/assets/js/131c7f55.1d8405cd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9323],{3905:(e,a,t)=>{t.d(a,{Zo:()=>h,kt:()=>m});var r=t(67294);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var a=1;a=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var l=r.createContext({}),c=function(e){var a=r.useContext(l),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},h=function(e){var a=c(e.components);return r.createElement(l.Provider,{value:a},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),d=c(t),u=n,m=d["".concat(l,".").concat(u)]||d[u]||p[u]||o;return t?r.createElement(m,i(i({ref:a},h),{},{components:t})):r.createElement(m,i({ref:a},h))}));function m(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var o=t.length,i=new Array(o);i[0]=u;var s={};for(var l in a)hasOwnProperty.call(a,l)&&(s[l]=a[l]);s.originalType=e,s[d]="string"==typeof e?e:n,i[1]=s;for(var c=2;c{t.r(a),t.d(a,{assets:()=>h,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var r=t(87462),n=t(63366),o=(t(67294),t(3905)),i=["components"],s={id:"learn-architecture",title:"Architecture",sidebar_label:"Architecture",description:"Key Components to Polkadot's Architecture.",keywords:["polkadot","components","architecture"],slug:"../learn-architecture"},l=void 0,c={unversionedId:"learn/learn-architecture",id:"learn/learn-architecture",title:"Architecture",description:"Key Components to Polkadot's Architecture.",source:"@site/../docs/learn/learn-architecture.md",sourceDirName:"learn",slug:"/learn-architecture",permalink:"/docs/learn-architecture",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-architecture.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-architecture",title:"Architecture",sidebar_label:"Architecture",description:"Key Components to Polkadot's Architecture.",keywords:["polkadot","components","architecture"],slug:"../learn-architecture"},sidebar:"docs",previous:{title:"Architecture",permalink:"/docs/learn-architecture-index"},next:{title:"Network Participants",permalink:"/docs/learn-participants-index"}},h={},d=[{value:"Relay Chain",id:"relay-chain",level:2},{value:"Parachain and Parathread Slots",id:"parachain-and-parathread-slots",level:2},{value:"Shared Security",id:"shared-security",level:3},{value:"Interoperability",id:"interoperability",level:2},{value:"XCM",id:"xcm",level:3},{value:"Bridges",id:"bridges",level:3},{value:"Validators",id:"validators",level:2},{value:"Nominators",id:"nominators",level:2},{value:"Collators",id:"collators",level:2},{value:"Whiteboard Series",id:"whiteboard-series",level:2}],p={toc:d},u="wrapper";function m(e){var a=e.components,t=(0,n.Z)(e,i);return(0,o.kt)(u,(0,r.Z)({},p,t,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Polkadot is a heterogeneous multichain with\nshared security and interoperability."),(0,o.kt)("h2",{id:"relay-chain"},"Relay Chain"),(0,o.kt)("p",null,"The Relay Chain is the central chain of\nPolkadot. All validators of\nPolkadot are staked on the Relay Chain in DOT\nand validate for the Relay Chain. The Relay Chain is composed of a relatively small number of\ntransaction types that include ways to interact with the governance mechanism, parachain auctions,\nand participating in NPoS. The Relay Chain has deliberately minimal functionality - for instance,\nsmart contracts are not supported. The main responsibility is to coordinate the system as a whole,\nincluding parachains. Other specific work is delegated to the parachains, which have different\nimplementations and features."),(0,o.kt)("h2",{id:"parachain-and-parathread-slots"},(0,o.kt)("a",{parentName:"h2",href:"/docs/learn-parachains"},"Parachain")," and ",(0,o.kt)("a",{parentName:"h2",href:"/docs/learn-parathreads"},"Parathread")," Slots"),(0,o.kt)("p",null,"Polkadot can support a number of execution\nslots. These slots are like cores on a computer's processor (a modern laptop's processor may have\neight cores, for example). Each one of these cores can run one process at a time.\nPolkadot allows these slots using two\nsubscription models: parachains and parathreads. Parachains have a dedicated slot (core) for their\nchain and are like a process that runs constantly. Parathreads share slots amongst a group, and are\nthus more like processes that need to be woken up and run less frequently."),(0,o.kt)("p",null,"Most of the computation that happens across the\nPolkadot network as a whole will be delegated\nto specific parachain or parathread implementations that handle various use cases.\nPolkadot places no constraints over what\nparachains can do besides that they must be able to generate a proof that can be validated by the\nvalidators assigned to the parachain. This proof verifies the state transition of the parachain.\nSome parachains may be specific to a particular application, others may focus on specific features\nlike smart contracts, privacy, or scalability ","\u2014"," still, others might be experimental\narchitectures that are not necessarily blockchain in nature."),(0,o.kt)("p",null,"Polkadot provides many ways to secure a slot\nfor a parachain for a particular length of time. Parathreads are part of a pool that shares slots\nand must-win auctions for individual blocks. Parathreads and parachains have the same API; their\ndifference is economic. Parachains will have to reserve\nDOT for the duration of their slot lease;\nparathreads will pay on a per-block basis. Parathreads can become parachains, and vice-versa."),(0,o.kt)("h3",{id:"shared-security"},(0,o.kt)("a",{parentName:"h3",href:"/docs/learn-parachains"},"Shared Security")),(0,o.kt)("p",null,"Parachains connected to the Polkadot Relay\nChain all share in the security of the Relay Chain.\nPolkadot has a shared state between the Relay\nChain and all of the connected parachains. If the Relay Chain must revert for any reason, then all\nof the parachains would also revert. This is to ensure that the validity of the entire system can\npersist and no individual part is corruptible."),(0,o.kt)("p",null,"The shared state ensures that the trust assumptions when using\nPolkadot parachains are only those of the\nRelay Chain validator set and no other. Since the validator set on the Relay Chain is expected to be\nsecure with a large amount of stake put up to back it, parachains should benefit from this security."),(0,o.kt)("h2",{id:"interoperability"},"Interoperability"),(0,o.kt)("h3",{id:"xcm"},(0,o.kt)("a",{parentName:"h3",href:"learn-xcm"},"XCM")),(0,o.kt)("p",null,"XCM, short for cross-consensus message, is a format and not a protocol. The format does not assume\nanything about the receiver or senders consensus mechanism, it only cares about the format in which\nthe messages must be structured in. The XCM format is how parachains will be able to communicate\nwith one another. Different from XCMP, which is short for cross-chain messaging protocol, XCM is\nwhat gets delivered, and XCMP is the delivery mechanism. The best way to learn more about XCM is by\nreading the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/xcm-format"},"specification"),"."),(0,o.kt)("h3",{id:"bridges"},(0,o.kt)("a",{parentName:"h3",href:"/docs/learn-bridges"},"Bridges")),(0,o.kt)("p",null,"A blockchain ",(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#bridge"},"bridge")," is a connection that allows for arbitrary data\nto transfer from one network to another. These chains are interoperable through the bridge but can\nexist as standalone chains with different protocols, rules, and governance models. In\nPolkadot, bridges connect to the Relay Chain\nand are secured through the Polkadot consensus\nmechanism, maintained by ",(0,o.kt)("a",{parentName:"p",href:"#collators"},"collators"),"."),(0,o.kt)("p",null,"Polkadot uses bridges to bridge the future of Web 3.0, as bridges are fundamental to\nPolkadot's interoperable architecture by\nacting as a ","[secure and robust]"," communication channel for chains in isolation."),(0,o.kt)("h1",{id:"main-actors"},"Main Actors"),(0,o.kt)("h2",{id:"validators"},"Validators"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#validator"},"Validators"),", if elected to the validator set, produce blocks on\nthe Relay Chain. They also accept proofs of valid state transition from collators and receive\nstaking rewards in return."),(0,o.kt)("p",null,"Validators are required to keep enough parachain blocks available for later use in their local\nstorage. Those blocks are retrievable by peers who lack that information, so that they can reliably\nconfirm the issued validity statements about parachain blocks. The\n",(0,o.kt)("a",{parentName:"p",href:"https://spec.polkadot.network/#chapter-anv"},"Availability & Validity")," (AnV) protocol consists of\nmultiple steps for successfully upholding those responsibilities."),(0,o.kt)("h2",{id:"nominators"},"Nominators"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#nominator"},"Nominators")," bond their stake to particular validators in order to\nhelp them get into the active validator set and thus produce blocks for the chain. In return,\nnominators are generally rewarded with a portion of the staking rewards from that validator."),(0,o.kt)("h2",{id:"collators"},"Collators"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#collator"},"Collators")," are full nodes on both a parachain and the Relay Chain.\nThey collect parachain transactions and produce state transition proofs for the validators on the\nRelay Chain. They can also send and receive messages from other parachains using XCMP."),(0,o.kt)("p",null,"Parachain blocks themselves are produced by collators, whereas the relay chain validators only\nverify their validity (and later, their availability)."),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"whiteboard-series"},"Whiteboard Series"),(0,o.kt)("p",null,"For a video overview of the architecture of\nPolkadot watch the video below for the\nwhiteboard interview with W3F researcher Alistair Stewart:"),(0,o.kt)("div",{className:"row"},(0,o.kt)("div",{className:"col text--center"},(0,o.kt)("a",{href:"https://www.youtube.com/watch?v=xBfC6uTjvbM"},(0,o.kt)("img",{src:"https://img.youtube.com/vi/xBfC6uTjvbM/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,o.kt)("p",null,(0,o.kt)("a",{href:"https://www.youtube.com/watch?v=xBfC6uTjvbM"},"Architecture Overview")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/131c7f55.faa9a3ec.js b/assets/js/131c7f55.faa9a3ec.js deleted file mode 100644 index 7e47b3187d88..000000000000 --- a/assets/js/131c7f55.faa9a3ec.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[9323],{3905:(e,a,t)=>{t.d(a,{Zo:()=>h,kt:()=>m});var r=t(67294);function n(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function o(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);a&&(r=r.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var a=1;a=0||(n[t]=e[t]);return n}(e,a);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(n[t]=e[t])}return n}var l=r.createContext({}),c=function(e){var a=r.useContext(l),t=a;return e&&(t="function"==typeof e?e(a):i(i({},a),e)),t},h=function(e){var a=c(e.components);return r.createElement(l.Provider,{value:a},e.children)},d="mdxType",p={inlineCode:"code",wrapper:function(e){var a=e.children;return r.createElement(r.Fragment,{},a)}},u=r.forwardRef((function(e,a){var t=e.components,n=e.mdxType,o=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),d=c(t),u=n,m=d["".concat(l,".").concat(u)]||d[u]||p[u]||o;return t?r.createElement(m,i(i({ref:a},h),{},{components:t})):r.createElement(m,i({ref:a},h))}));function m(e,a){var t=arguments,n=a&&a.mdxType;if("string"==typeof e||n){var o=t.length,i=new Array(o);i[0]=u;var s={};for(var l in a)hasOwnProperty.call(a,l)&&(s[l]=a[l]);s.originalType=e,s[d]="string"==typeof e?e:n,i[1]=s;for(var c=2;c{t.r(a),t.d(a,{assets:()=>h,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var r=t(87462),n=t(63366),o=(t(67294),t(3905)),i=["components"],s={id:"learn-architecture",title:"Architecture",sidebar_label:"Architecture",description:"Key Components to Polkadot's Architecture.",keywords:["polkadot","components","architecture"],slug:"../learn-architecture"},l=void 0,c={unversionedId:"learn/learn-architecture",id:"learn/learn-architecture",title:"Architecture",description:"Key Components to Polkadot's Architecture.",source:"@site/../docs/learn/learn-architecture.md",sourceDirName:"learn",slug:"/learn-architecture",permalink:"/docs/learn-architecture",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-architecture.md",tags:[],version:"current",lastUpdatedBy:"Radha",lastUpdatedAt:1695304296,formattedLastUpdatedAt:"Sep 21, 2023",frontMatter:{id:"learn-architecture",title:"Architecture",sidebar_label:"Architecture",description:"Key Components to Polkadot's Architecture.",keywords:["polkadot","components","architecture"],slug:"../learn-architecture"},sidebar:"docs",previous:{title:"Architecture",permalink:"/docs/learn-architecture-index"},next:{title:"Network Participants",permalink:"/docs/learn-participants-index"}},h={},d=[{value:"Relay Chain",id:"relay-chain",level:2},{value:"Parachain and Parathread Slots",id:"parachain-and-parathread-slots",level:2},{value:"Shared Security",id:"shared-security",level:3},{value:"Interoperability",id:"interoperability",level:2},{value:"XCM",id:"xcm",level:3},{value:"Bridges",id:"bridges",level:3},{value:"Validators",id:"validators",level:2},{value:"Nominators",id:"nominators",level:2},{value:"Collators",id:"collators",level:2},{value:"Whiteboard Series",id:"whiteboard-series",level:2}],p={toc:d},u="wrapper";function m(e){var a=e.components,t=(0,n.Z)(e,i);return(0,o.kt)(u,(0,r.Z)({},p,t,{components:a,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Polkadot is a heterogeneous multichain with\nshared security and interoperability."),(0,o.kt)("h2",{id:"relay-chain"},"Relay Chain"),(0,o.kt)("p",null,"The Relay Chain is the central chain of\nPolkadot. All validators of\nPolkadot are staked on the Relay Chain in DOT\nand validate for the Relay Chain. The Relay Chain is composed of a relatively small number of\ntransaction types that include ways to interact with the governance mechanism, parachain auctions,\nand participating in NPoS. The Relay Chain has deliberately minimal functionality - for instance,\nsmart contracts are not supported. The main responsibility is to coordinate the system as a whole,\nincluding parachains. Other specific work is delegated to the parachains, which have different\nimplementations and features."),(0,o.kt)("h2",{id:"parachain-and-parathread-slots"},(0,o.kt)("a",{parentName:"h2",href:"/docs/learn-parachains"},"Parachain")," and ",(0,o.kt)("a",{parentName:"h2",href:"/docs/learn-parathreads"},"Parathread")," Slots"),(0,o.kt)("p",null,"Polkadot can support a number of execution\nslots. These slots are like cores on a computer's processor (a modern laptop's processor may have\neight cores, for example). Each one of these cores can run one process at a time.\nPolkadot allows these slots using two\nsubscription models: parachains and parathreads. Parachains have a dedicated slot (core) for their\nchain and are like a process that runs constantly. Parathreads share slots amongst a group, and are\nthus more like processes that need to be woken up and run less frequently."),(0,o.kt)("p",null,"Most of the computation that happens across the\nPolkadot network as a whole will be delegated\nto specific parachain or parathread implementations that handle various use cases.\nPolkadot places no constraints over what\nparachains can do besides that they must be able to generate a proof that can be validated by the\nvalidators assigned to the parachain. This proof verifies the state transition of the parachain.\nSome parachains may be specific to a particular application, others may focus on specific features\nlike smart contracts, privacy, or scalability ","\u2014"," still, others might be experimental\narchitectures that are not necessarily blockchain in nature."),(0,o.kt)("p",null,"Polkadot provides many ways to secure a slot\nfor a parachain for a particular length of time. Parathreads are part of a pool that shares slots\nand must-win auctions for individual blocks. Parathreads and parachains have the same API; their\ndifference is economic. Parachains will have to reserve\nDOT for the duration of their slot lease;\nparathreads will pay on a per-block basis. Parathreads can become parachains, and vice-versa."),(0,o.kt)("h3",{id:"shared-security"},(0,o.kt)("a",{parentName:"h3",href:"/docs/learn-parachains"},"Shared Security")),(0,o.kt)("p",null,"Parachains connected to the Polkadot Relay\nChain all share in the security of the Relay Chain.\nPolkadot has a shared state between the Relay\nChain and all of the connected parachains. If the Relay Chain must revert for any reason, then all\nof the parachains would also revert. This is to ensure that the validity of the entire system can\npersist and no individual part is corruptible."),(0,o.kt)("p",null,"The shared state ensures that the trust assumptions when using\nPolkadot parachains are only those of the\nRelay Chain validator set and no other. Since the validator set on the Relay Chain is expected to be\nsecure with a large amount of stake put up to back it, parachains should benefit from this security."),(0,o.kt)("h2",{id:"interoperability"},"Interoperability"),(0,o.kt)("h3",{id:"xcm"},(0,o.kt)("a",{parentName:"h3",href:"learn-xcm"},"XCM")),(0,o.kt)("p",null,"XCM, short for cross-consensus message, is a format and not a protocol. The format does not assume\nanything about the receiver or senders consensus mechanism, it only cares about the format in which\nthe messages must be structured in. The XCM format is how parachains will be able to communicate\nwith one another. Different from XCMP, which is short for cross-chain messaging protocol, XCM is\nwhat gets delivered, and XCMP is the delivery mechanism. The best way to learn more about XCM is by\nreading the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/paritytech/xcm-format"},"specification"),"."),(0,o.kt)("h3",{id:"bridges"},(0,o.kt)("a",{parentName:"h3",href:"/docs/learn-bridges"},"Bridges")),(0,o.kt)("p",null,"A blockchain ",(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#bridge"},"bridge")," is a connection that allows for arbitrary data\nto transfer from one network to another. These chains are interoperable through the bridge but can\nexist as standalone chains with different protocols, rules, and governance models. In\nPolkadot, bridges connect to the Relay Chain\nand are secured through the Polkadot consensus\nmechanism, maintained by ",(0,o.kt)("a",{parentName:"p",href:"#collators"},"collators"),"."),(0,o.kt)("p",null,"Polkadot uses bridges to bridge the future of Web 3.0, as bridges are fundamental to\nPolkadot's interoperable architecture by\nacting as a ","[secure and robust]"," communication channel for chains in isolation."),(0,o.kt)("h1",{id:"main-actors"},"Main Actors"),(0,o.kt)("h2",{id:"validators"},"Validators"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#validator"},"Validators"),", if elected to the validator set, produce blocks on\nthe Relay Chain. They also accept proofs of valid state transition from collators and receive\nstaking rewards in return."),(0,o.kt)("p",null,"Validators are required to keep enough parachain blocks available for later use in their local\nstorage. Those blocks are retrievable by peers who lack that information, so that they can reliably\nconfirm the issued validity statements about parachain blocks. The\n",(0,o.kt)("a",{parentName:"p",href:"https://spec.polkadot.network/#chapter-anv"},"Availability & Validity")," (AnV) protocol consists of\nmultiple steps for successfully upholding those responsibilities."),(0,o.kt)("h2",{id:"nominators"},"Nominators"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#nominator"},"Nominators")," bond their stake to particular validators in order to\nhelp them get into the active validator set and thus produce blocks for the chain. In return,\nnominators are generally rewarded with a portion of the staking rewards from that validator."),(0,o.kt)("h2",{id:"collators"},"Collators"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"/docs/glossary#collator"},"Collators")," are full nodes on both a parachain and the Relay Chain.\nThey collect parachain transactions and produce state transition proofs for the validators on the\nRelay Chain. They can also send and receive messages from other parachains using XCMP."),(0,o.kt)("p",null,"Parachain blocks themselves are produced by collators, whereas the relay chain validators only\nverify their validity (and later, their availability)."),(0,o.kt)("hr",null),(0,o.kt)("h2",{id:"whiteboard-series"},"Whiteboard Series"),(0,o.kt)("p",null,"For a video overview of the architecture of\nPolkadot watch the video below for the\nwhiteboard interview with W3F researcher Alistair Stewart:"),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=xBfC6uTjvbM"},(0,o.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/xBfC6uTjvbM/0.jpg",alt:"Architecture Overview"}))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/13b7bafa.eac6bda7.js b/assets/js/13b7bafa.eac6bda7.js deleted file mode 100644 index e45caa4cc7e3..000000000000 --- a/assets/js/13b7bafa.eac6bda7.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[6585],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(74165),o=n(15861),i=n(67294),r=n(87152),s=n(30967),l=n(67425);function c(e,t,n){return h.apply(this,arguments)}function h(){return(h=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var i,l,c,h,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return c=new r.U(i),e.next=21,s.G.create({provider:c});case 21:h=e.sent,(d=n.split(".")).forEach((function(e){e in h&&(h=h[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=h.toString(),e.abrupt("break",35);case 29:return e.next=31,h();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+n);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,n,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,n,a);break;case"precise":(0,l.Precise)(e,n,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,n);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,n=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,h=(0,i.useState)(""),p=h[0],u=h[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?d(r.toString(),l,t,u):u(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n,u);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,u):u(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),p}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===o)l=3;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===o)s=1;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},83881:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>_,contentTitle:()=>P,default:()=>L,frontMatter:()=>A,metadata:()=>C,toc:()=>B});var a,o=n(87462),i=n(63366),r=n(67294),s=n(3905),l=n(47940),c=n(74165),h=n(15861),d=n(7015),p=n(88454),u=n(48702),m=n(56429),k=n(81880),f=(0,n(68806).Ps)(a||(a=(0,k.Z)(["\nquery AUCTION {\n auctions(orderBy: biddingStartBlock_height_ASC) {\n id\n status\n biddingEndsBlock {\n height\n timestamp\n }\n biddingStartBlock {\n height\n timestamp\n }\n endPeriodBlock {\n height\n timestamp\n }\n onboardEndBlock {\n height\n timestamp\n }\n onboardStartBlock {\n height\n timestamp\n }\n startBlock {\n timestamp\n height\n }\n }\n squidStatus {\n height\n }\n}"]))),b={POLKADOT:"polkadot",KUSAMA:"kusama"},g={BlockNumber:void 0},w=[];function y(e,t){console.log("There was a problem fetching from with your query: ",e),t(r.createElement("div",null,"There was a problem with the query used to fetch auction data. If this issue persists, please submit an issue at the",r.createElement("a",{href:"https://github.com/w3f/polkadot-wiki/",target:"_blank"}," Polkadot Wiki repository on Github")))}function v(e){switch(e){case b.POLKADOT:return{httpLink:new m.u({uri:"https://squid.subsquid.io/polkadot-wiki-squid/v/v1/graphql"}),explorer:"https://polkadot.subscan.io/block/"};case b.KUSAMA:return{httpLink:new m.u({uri:"https://squid.subsquid.io/kusama-guide-squid/v/v1/graphql"}),explorer:"https://kusama.subscan.io/block/"}}}function N(e){return x.apply(this,arguments)}function x(){return(x=(0,h.Z)((0,c.Z)().mark((function e(t){return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.map((function(e){return parseInt(e.id)})).reverse().forEach((function(e){var t=r.createElement("option",{value:e,key:e},"Auction #"+e);w.push(t)}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(e,t,n,a){var o=g.BlockNumber,i=new Date(parseInt(t[a].onboardStartBlock.timestamp)).toDateString(),s=new Date(parseInt(t[a].onboardEndBlock.timestamp)).toDateString(),l=new Date(parseInt(t[a].biddingStartBlock.timestamp)).toDateString(),c=new Date(parseInt(t[a].biddingEndsBlock.timestamp)).toDateString(),h=r.createElement("div",null,i+" - ",r.createElement("a",{href:""+e+t[a].onboardStartBlock.height},"Block #",t[a].onboardStartBlock.height)," to ",s+" - ",r.createElement("a",{href:""+e+t[a].onboardEndBlock.height},"Block #",t[a].onboardEndBlock.height)),d=parseInt(a)+1,p=e.startsWith("https://polkadot")?"https://polkadot.subscan.io/auction/":"https://kusama.subscan.io/auction/",u=r.createElement("div",null,r.createElement("div",null,r.createElement("a",{target:"_blank",href:""+p+d},"Auction #",d," is ",t[a].status)),r.createElement("br",null),r.createElement("select",{id:"AuctionSelector",onChange:function(a){return function(e,t,n,a){S(e,t,n,parseInt(a.target.value)-1)}(e,t,n,a)},style:{border:"2px solid #e6007a",height:"40px"}},w.map((function(e){return e}))),r.createElement("hr",null),r.createElement("b",null,"Auction Starts:"),r.createElement("br",null),new Date(parseInt(t[a].startBlock.timestamp)).toDateString()+" - ",r.createElement("a",{href:""+e+t[a].startBlock.height},"Block #",t[a].startBlock.height),r.createElement("hr",null),r.createElement("b",null,"Ending Period Starts:"),r.createElement("br",null),l+" - ",r.createElement("a",{href:""+e+t[a].biddingStartBlock.height},"Block #",t[a].biddingStartBlock.height),r.createElement("hr",null),r.createElement("b",null,"Auction Ends:"),r.createElement("br",null),c+" - ",r.createElement("a",{href:""+e+t[a].biddingEndsBlock.height},"Block #",t[a].biddingEndsBlock.height),r.createElement("hr",null),r.createElement("b",null,"Lease Period:"),r.createElement("br",null),h,r.createElement("hr",null),r.createElement("p",{style:{color:"#6c757d"}},"The dates and block numbers listed above can change based on network block production and the potential for skipped blocks. Dates for finalized blocks are pulled from on-chain, while future blocks are estimated using 6 second average block times. The current block is ",r.createElement("a",{href:""+e+o}," Block #",o),"."));return n(u),t}const T=function(e){var t=e.network,n=(0,r.useState)("Loading Auctions..."),a=n[0],o=n[1];return(0,r.useEffect)((0,h.Z)((0,c.Z)().mark((function e(){var n,a,i,s,l,h;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=v(t),a=new d.f({cache:new p.h,link:u.i.from([n.httpLink])}),e.next=4,a.query({query:f}).catch((function(e){return y(e,o)}));case 4:if(void 0===(i=e.sent)){e.next=17;break}if(s=i.data.squidStatus.height,0!=(l=i.data.auctions).length){e.next=12;break}o(r.createElement("div",null,"No auctions found on this network.")),e.next=17;break;case 12:return g.BlockNumber=s,e.next=15,N(l);case 15:h=l.length-1,S(n.explorer,l,o,h);case 17:case"end":return e.stop()}}),e)}))),[]),void 0!==a?a:r.createElement("div",null,"Loading auction data...")};var E=["components"],A={id:"learn-auction",title:"Parachain Slot Auctions",sidebar_label:"Parachain Slot Auctions",description:"Polkadot's Parachain Slot Auction Mechanism.",keywords:["auction","slot auctions","parachain","bidding"],slug:"../learn-auction"},P=void 0,C={unversionedId:"learn/learn-auction",id:"learn/learn-auction",title:"Parachain Slot Auctions",description:"Polkadot's Parachain Slot Auction Mechanism.",source:"@site/../docs/learn/learn-auction.md",sourceDirName:"learn",slug:"/learn-auction",permalink:"/docs/learn-auction",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-auction.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1696485032,formattedLastUpdatedAt:"Oct 5, 2023",frontMatter:{id:"learn-auction",title:"Parachain Slot Auctions",sidebar_label:"Parachain Slot Auctions",description:"Polkadot's Parachain Slot Auction Mechanism.",keywords:["auction","slot auctions","parachain","bidding"],slug:"../learn-auction"},sidebar:"docs",previous:{title:"System Parachains",permalink:"/docs/learn-system-chains"},next:{title:"Parachain Crowdloans",permalink:"/docs/learn-crowdloans"}},_={},B=[{value:"Auction Schedule",id:"auction-schedule",level:2},{value:"Mechanics of a Candle Auction",id:"mechanics-of-a-candle-auction",level:2},{value:"Randomness in action",id:"randomness-in-action",level:3},{value:"Rationale",id:"rationale",level:2},{value:"Network Implementation",id:"network-implementation",level:2},{value:"Bidding",id:"bidding",level:2},{value:"Examples",id:"examples",level:3},{value:"Parachain Lease Extension",id:"parachain-lease-extension",level:2},{value:"Lease Extension with Overlapping Slots",id:"lease-extension-with-overlapping-slots",level:3},{value:"Lease Extension with Non-Overlapping Slots",id:"lease-extension-with-non-overlapping-slots",level:3},{value:"Resources",id:"resources",level:2}],D={toc:B},q="wrapper";function L(e){var t=e.components,a=(0,i.Z)(e,E);return(0,s.kt)(q,(0,o.Z)({},D,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"For a ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachain")," to be added to\nPolkadot it must inhabit one of the available\nparachain slots. The number of parachain slots is not unbounded on\nPolkadot, as only a limited number are\navailable. A limited number of slots are unlocked every few months through on-chain governance. If a\nparachain wants to have guaranteed block inclusion at every Relay Chain block, it must acquire a\nparachain slot. The development of\n",(0,s.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/on-demand-parachains/2208"},"on-demand parachains")," (previously\nreferred to as parathreads) is in progress."),(0,s.kt)("p",null,"The parachain slots will be leased according to an unpermissioned\n",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Candle_auction"},"candle auction"),", with several alterations related to\nimproving security while operating on a blockchain. See ",(0,s.kt)("a",{parentName:"p",href:"#rationale"},"Rationale")," for additional\ndetails."),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://youtu.be/i5-Rw2Sf7-w"},(0,s.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/i5-Rw2Sf7-w/0.jpg",alt:"A Beginner's guide to Parachain Slot Auctions"}))),(0,s.kt)("h2",{id:"auction-schedule"},"Auction Schedule"),(0,s.kt)("p",null,"",(0,s.kt)(T,{network:"polkadot",mdxType:"AuctionSchedule"}),"\n",""),(0,s.kt)("h2",{id:"mechanics-of-a-candle-auction"},"Mechanics of a Candle Auction"),(0,s.kt)("p",null,"Candle auctions are a variant of open auctions where bidders submit bids that are increasingly\nhigher. The highest bidder at the conclusion of the auction is considered the winner."),(0,s.kt)("p",null,'Candle auctions were originally employed in the 16th century for the sale of ships. The name is\nderived from the system by which the auction length was determined. The phrase "inch of a candle"\nrefers to the length of time required for a candle to burn down 1 inch. When the flame extinguishes\nand the candle goes out, the auction terminates and the standing bid at that point in time prevails\nthe winner.'),(0,s.kt)("p",null,"When candle auctions are used online, they require a random number to decide the moment of\ntermination. Parachain slot auctions differ slightly from a normal candle auction in that they do\nnot randomly terminate the auction. Instead, they run for an entire fixed duration and the winner is\nrandomly chosen retroactively."),(0,s.kt)("p",null,"The candle auction on Polkadot is split into\ntwo parts:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"The ",(0,s.kt)("em",{parentName:"p"},"opening period")," which is in effect immediately after the auction starts. This period lasts\nfor one day and eighteen hours and serves as a buffer time for parachain candidates to setup\ntheir initial bids, and likely start executing their strategy on how to win the slot auction.\nDuring the opening phase, bids will continue to be accepted, but they do not have any effect on\nthe outcome of the auction.")),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"The ",(0,s.kt)("em",{parentName:"p"},"ending period")," follows the opening period for five additional days, where the auction is\nsubject to end based on the candle auction mechanism."))),(0,s.kt)("p",null,"The auction\u2019s ending time can occur any time within the ending period. This time is automatically\nand randomly chosen by the ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"Verifiable Random Function (VRF)"),". The\nprobability of winning the auction is equal to the number of blocks that contain a winning bid,\ndivided by the total number of blocks in the ending period. The random ending is managed by\npropagating through the entire ending period, where a snapshot is taken at each block within the\nending period to capture the winners for that given block. At the end of the period, one of the\nsnapshots is randomly selected to determine the winner of the auction."),(0,s.kt)("admonition",{title:"The parachain candidate with the highest bid at the ending time chosen by the Verifiable",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"Random Function wins the slot auction.")),(0,s.kt)("p",null,"A parachain auction on Polkadot lasts exactly\none week from the start: 1 day and 18 hours for the starting period,\n",(0,s.kt)(l.Z,{network:"polkadot",path:"consts.auctions.endingPeriod",defaultValue:72e3,filter:"blocksToDays",mdxType:"RPC"}),"\n","\ndays for the ending period (candle auction phase) and 6 hours for determining the auction winner."),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},(0,s.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans##supporting-a-crowdloan-campaign"},"Crowdloan contributions")," cannot be made\nduring these six hours when the winning block for the auction is being determined on-chain.")),(0,s.kt)("p",null,"More details on this are available in the ",(0,s.kt)("a",{parentName:"p",href:"#network-implementation"},"Network Implementation")," section."),(0,s.kt)("h3",{id:"randomness-in-action"},(0,s.kt)("a",{parentName:"h3",href:"/docs/learn-cryptography#randomness"},"Randomness")," in action"),(0,s.kt)("p",null,"The following example will showcase the randomness mechanics of the candle auction for the ninth\nauction on Kusama. Keep in mind that the candle phase has a uniform termination profile and has an\nequal probability of ending at any given block, and the termination block cannot be predicted before\nor during the auction."),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"The ending period of auction 9 starts at ",(0,s.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/auction/9"},(0,s.kt)("inlineCode",{parentName:"a"},"block 9362014")),"."),(0,s.kt)("admonition",{parentName:"li",type:"note"},(0,s.kt)("mdxAdmonitionTitle",{parentName:"admonition"},"The auction has a full duration equal to ",(0,s.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"block 9362014")," + ",(0,s.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"72000")),(0,s.kt)("p",{parentName:"admonition"},"Here, ",(0,s.kt)("inlineCode",{parentName:"p"},"block 72000"),' is the "ending period", which is divided into ',(0,s.kt)("strong",{parentName:"p"},"3600 samples of 20 blocks"),".\nFiguratively, the candle is lit, and the candle phase lasts for 72,000 blocks."))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"The winning sample during the ending period had the ",(0,s.kt)("inlineCode",{parentName:"p"},"index 1078"),"."),(0,s.kt)("admonition",{parentName:"li",title:"Sample 1078 is the winner",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"Sample 1078 refers to the winner as of ",(0,s.kt)("inlineCode",{parentName:"p"},"block 9362014 + 21560"),", which equals\n",(0,s.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/block/9383574"},(0,s.kt)("inlineCode",{parentName:"a"},"block 9383574")),"."))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"The parent block was a new BABE session in the ",(0,s.kt)("inlineCode",{parentName:"p"},"Logs"),", which updated the randomness that was used\nto select that ",(0,s.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/block/9434277"},"sample index"),"."),(0,s.kt)("admonition",{parentName:"li",title:"Inspecting the block state",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"You can inspect the state at the end of ",(0,s.kt)("inlineCode",{parentName:"p"},"block 9434277")," to see the sample indices with an\n",(0,s.kt)("a",{parentName:"p",href:"/docs/maintain-sync####types-of-nodes"},"archive node"),". The digest in the ",(0,s.kt)("inlineCode",{parentName:"p"},"Logs")," of\n",(0,s.kt)("inlineCode",{parentName:"p"},"9434277")," is decodable and contains the random value as well as the BABE authorities."))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"As a result, the winner of this auction was not the highest bid during the full duration."))),(0,s.kt)("h2",{id:"rationale"},"Rationale"),(0,s.kt)("p",null,"The open and transparent nature of blockchain systems opens attack vectors that are non-existent in\ntraditional auction formats. Normal open auctions in particular can be vulnerable to ",(0,s.kt)("em",{parentName:"p"},"auction\nsniping")," when implemented over the internet or on a blockchain."),(0,s.kt)("p",null,"Auction sniping takes place when the end of an auction is known and bidders are hesitant to bid\ntheir true price early, in hopes of paying less than they actually value the item."),(0,s.kt)("p",null,"For example, Alice may value an item at auction for 30 USD. She submits an initial bid of 10 USD in\nhopes of acquiring the items at a lower price. Alice's strategy is to place incrementally higher\nbids until her true value of 30 USD is exceeded. Another bidder Eve values the same item at 11 USD.\nEve's strategy is to watch the auction and submit a bid of 11 USD at the last second. Alice will\nhave no time to respond to this bid before the close of the auction and will lose the item. The\nauction mechanism is sub-optimal because it has not discovered the true price of the item and the\nitem has not gone to the actor who valued it the most."),(0,s.kt)("p",null,"On blockchains this problem may be even worse, since it potentially gives the producer of the block\nan opportunity to snipe any auction at the last concluding block by adding it themselves while\nignoring other bids. There is also the possibility of a malicious bidder or a block producer trying\nto ",(0,s.kt)("em",{parentName:"p"},"grief")," honest bidders by sniping auctions."),(0,s.kt)("p",null,"For this reason, ",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Vickrey_auction"},"Vickrey auctions"),", a type of\nsealed-bid auction where bids are hidden and only revealed at a later phase, have emerged as a\nwell-regarded mechanic. For example, this mechanism is leveraged to auction human readable names on\nthe ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-account-advanced"},"ENS"),". The Candle auction is another solution that does not require\na two-step commit and reveal schemes (a main component of Vickrey auctions), which allows smart\ncontracts to participate."),(0,s.kt)("p",null,"Candle auctions allow everyone to always know the states of the bid, but they do not reveal when the\nauction has officially ended. This helps to ensure that bidders are willing to make their true bids\nearly. Otherwise, they may find themselves in a situation where the auction was determined to have\nended before having an opportunity to bid."),(0,s.kt)("h2",{id:"network-implementation"},"Network Implementation"),(0,s.kt)("p",null,"Polkadot will use a ",(0,s.kt)("em",{parentName:"p"},"random beacon")," based on\nthe ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"Verifiable Random Function (VRF)"),". The VRF will provide the base\nof the randomness, which will retroactively determine the end-time of the auction."),(0,s.kt)("p",null,"The slot durations are capped to 2 years and divided into 3-month periods.\nParachains may lease a slot for any\ncombination of periods of the slot duration. Parachains may lease more than one slot over time,\nmeaning that they could extend their lease to the network past the maximum duration by leasing a\ncontiguous slot."),(0,s.kt)("admonition",{title:"Individual parachain slots are fungible",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"This means that parachains do not need to always inhabit the same slot, however they always must\nmaintain a slot to remain a parachain.")),(0,s.kt)("h2",{id:"bidding"},"Bidding"),(0,s.kt)("p",null,"Parachains or parachain teams, bid in the auction by specifying the slot range that they want to\nlease and the number of tokens they are willing to reserve. Bidders can be either ordinary accounts,\nor use the ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans"},"crowdloan functionality")," to source tokens from the community. For a\nmore in-depth comparison between both of these options for gaining a parachain slot, check out this\nsection on\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans#crowdloan-campaigns-vs-parachain-auctions"},"Crowdloan Campaigns vs Parachain Auctions"),"."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"Parachain slots at genesis\n\n --3 months--\n v v\nSlot A | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot B | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot C |__________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot D |__________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot E |__________|___________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\n ^ ^\n ---------------------------------------------max lease-----------------------------------------\n\n")),(0,s.kt)("p",null,(0,s.kt)("em",{parentName:"p"},"Each period of the range 1 - 4 represents a\n3-month duration for a total of 2 years\n")),(0,s.kt)("p",null,"Bidders will submit a configuration of bids specifying the token amount they are willing to bond and\nfor which periods. The slot ranges may be any of the periods 1 - ",(0,s.kt)("inlineCode",{parentName:"p"},"n"),", where ",(0,s.kt)("inlineCode",{parentName:"p"},"n")," is the number of\nperiods available for a slot. (",(0,s.kt)("inlineCode",{parentName:"p"},"n"),"=\n",(0,s.kt)(l.Z,{network:"polkadot",path:"consts.auctions.leasePeriodsPerSlot",defaultValue:8,mdxType:"RPC"})," for Polkadot)\n",""),(0,s.kt)("admonition",{title:"If you bond tokens with a parachain slot, you cannot stake with those tokens. In this way,",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"you pay for the parachain slot by forfeiting the opportunity to earn staking rewards.")),(0,s.kt)("p",null,"A bidder configuration for a single bidder may look like the following pseudocode example:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},"const bids = [\n {\n range: [1, 2, 3, 4, 5, 6, 7, 8],\n bond_amount: 300,\n },\n {\n range: [1, 2, 3, 4],\n bond_amount: 777,\n },\n {\n range: [2, 3, 4, 5, 6, 7],\n bond_amount: 450,\n },\n];\n")),(0,s.kt)("p",null,"The important concept to understand from this example is that bidders may submit different\nconfigurations at different prices (",(0,s.kt)("inlineCode",{parentName:"p"},"bond_amount"),"). However, only one of these bids would be\neligible to win exclusive of the others."),(0,s.kt)("p",null,"The winner selection algorithm will pick bids that may be non-overlapping in order to maximize the\namount of tokens held over the entire lease duration of the parachain slot. This means that the\nhighest bidder for any given slot lease period might not always win (see the\n",(0,s.kt)("a",{parentName:"p",href:"#examples"},"example below"),")."),(0,s.kt)("p",null,"A random number, which is based on the ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"VRF")," used by\nPolkadot, is determined at each block.\nAdditionally, each auction will have a threshold that starts at 0 and increases to 1. The random\nnumber produced by the VRF is examined next to the threshold to determine if that block is the end\nof the auction within the so-called ",(0,s.kt)("em",{parentName:"p"},"ending period"),". Additionally, the VRF will pick a block from\nthe last epoch to access the state of bids which can help aid in mitigating some types of attacks\nfrom malicious validators."),(0,s.kt)("h3",{id:"examples"},"Examples"),(0,s.kt)("p",null,"There is one parachain slot available."),(0,s.kt)("p",null,"Charlie bids ",(0,s.kt)("inlineCode",{parentName:"p"},"75")," for the range 1 - 8."),(0,s.kt)("p",null,"Dave bids ",(0,s.kt)("inlineCode",{parentName:"p"},"100")," for the range 5 - 8."),(0,s.kt)("p",null,"Emily bids ",(0,s.kt)("inlineCode",{parentName:"p"},"40")," for the range 1 - 4."),(0,s.kt)("p",null,"Let's calculate each bidder's valuation according to the algorithm. We do this by multiplying the\nbond amount by the number of periods in the specified range of the bid."),(0,s.kt)("p",null,"Charlie - 75 ","*"," 8 = 600 for range 1 - 8"),(0,s.kt)("p",null,"Dave - 100 ","*"," 4 = 400 for range 5 - 8"),(0,s.kt)("p",null,"Emily - 40 ","*"," 4 = 160 for range 1 - 4"),(0,s.kt)("p",null,"Although Dave had the highest bid in accordance to token amount per period, when we do the\ncalculations we see that since he only bid for a range of 4, he would need to share the slot with\nEmily who bid much less. Together Dave and Emily's bids only equals a valuation of ",(0,s.kt)("inlineCode",{parentName:"p"},"560"),". Charlie's\nvaluation for the entire range is ",(0,s.kt)("inlineCode",{parentName:"p"},"600"),". Therefore Charlie is awarded the complete range of the\nparachain slot."),(0,s.kt)("h2",{id:"parachain-lease-extension"},"Parachain Lease Extension"),(0,s.kt)("p",null,"Before the slot lease expires, parachains have to bid and win another auction for continuity of the\nlease. To avoid any downtime in connectivity and minimize the risk of losing a subsequent auction,\nparachain teams need to plan ahead to bid for the lease extension before their current lease period\nends. Explained in the section above, each auction lets you bid for 8 LPs (Lease Periods) which\nenables two scenarios for the parachain's lease extension."),(0,s.kt)("h3",{id:"lease-extension-with-overlapping-slots"},"Lease Extension with Overlapping Slots"),(0,s.kt)("p",null,"Acquire a slot where the first lease period is before the last lease period of the current slot."),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Register a new ",(0,s.kt)("inlineCode",{parentName:"li"},"paraId")),(0,s.kt)("li",{parentName:"ul"},"Win a slot auction with the new ",(0,s.kt)("inlineCode",{parentName:"li"},"paraId"))),(0,s.kt)("p",null,"The parachain team has access to two slots:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"one that will end soon"),(0,s.kt)("li",{parentName:"ul"},"one that just started")),(0,s.kt)("p",null,"Both slots have at least one LP in common. When the old slot transitions to their last LP, the\nparachain can ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot/pull/4772"},"swap")," the slots. This can be done\nvia ",(0,s.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/post/1491"},"on-chain governance"),". The ",(0,s.kt)("inlineCode",{parentName:"p"},"swap")," call is available in\nthe ",(0,s.kt)("inlineCode",{parentName:"p"},"registrar")," pallet."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Parachain Slot Swap",src:n(11308).Z,width:"1286",height:"896"})),(0,s.kt)("admonition",{title:"Any two parachains can swap their slots via XCM",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"The ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot/pull/4772"},"slot swap via XCM")," requires two live\nparachains to send an XCM message to the relay chain to approve the swap. A parachain team with\naccess to two overlapping slots can start a shell parachain on the new slot and swap it with their\nactual parachain on the old slot, thus ensuring continuity of the lease.")),(0,s.kt)("h3",{id:"lease-extension-with-non-overlapping-slots"},"Lease Extension with Non-Overlapping Slots"),(0,s.kt)("p",null,"Acquire a slot where the first LP starts right after the end of the last LP of the current slot. In\nthis case, the parachain can bid directly with their current ",(0,s.kt)("inlineCode",{parentName:"p"},"paraId"),", and it will be automatically\nextended without the need of swapping. This method has the advantage of not having superfluous LP's\non different slots owned by the same team, however it has the disadvantage of losing flexibility on\nwhen to win a new slot: if the team does not win the exact slot, then it will suffer some downtime\nuntil it wins a new slot."),(0,s.kt)("h2",{id:"resources"},"Resources"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000182287-how-does-a-parachain-slots-auction-work-"},"How do Parachain Slot Auctions Work")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://research.web3.foundation/Polkadot/overview/parachain-allocation"},"Parachain Allocation")," -\nW3F research page on parachain allocation that goes more in depth to the mechanism"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://polkadot.network/blog/research-update-the-case-for-candle-auctions/"},"Research Update: The Case for Candle Auctions")," -\nW3F breakdown and research update about candle auctions"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3846363"},"Front-Running, Smart Contracts, and Candle Auctions"),"\nW3F Research team discusses how to remedy current blockchain auction setbacks with candle auctions")))}L.isMDXComponent=!0},11308:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/para-swap-3c765fb9e6860c7d7489a758af065cb0.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/13b7bafa.eb7aa9cb.js b/assets/js/13b7bafa.eb7aa9cb.js new file mode 100644 index 000000000000..a4ff678425f5 --- /dev/null +++ b/assets/js/13b7bafa.eb7aa9cb.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[6585],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(74165),o=n(15861),i=n(67294),r=n(87152),s=n(30967),l=n(67425);function c(e,t,n){return h.apply(this,arguments)}function h(){return(h=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var i,l,c,h,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return c=new r.U(i),e.next=21,s.G.create({provider:c});case 21:h=e.sent,(d=n.split(".")).forEach((function(e){e in h&&(h=h[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=h.toString(),e.abrupt("break",35);case 29:return e.next=31,h();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+n);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,n,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,n,a);break;case"precise":(0,l.Precise)(e,n,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,n);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,n=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,h=(0,i.useState)(""),p=h[0],u=h[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?d(r.toString(),l,t,u):u(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n,u);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,u):u(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),p}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===t||r===o)l=3;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===t||r===o)s=1;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},83881:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>_,contentTitle:()=>P,default:()=>q,frontMatter:()=>A,metadata:()=>C,toc:()=>B});var a,o=n(87462),i=n(63366),r=n(67294),s=n(3905),l=n(47940),c=n(74165),h=n(15861),d=n(7015),p=n(88454),u=n(48702),m=n(56429),k=n(81880),f=(0,n(68806).Ps)(a||(a=(0,k.Z)(["\nquery AUCTION {\n auctions(orderBy: biddingStartBlock_height_ASC) {\n id\n status\n biddingEndsBlock {\n height\n timestamp\n }\n biddingStartBlock {\n height\n timestamp\n }\n endPeriodBlock {\n height\n timestamp\n }\n onboardEndBlock {\n height\n timestamp\n }\n onboardStartBlock {\n height\n timestamp\n }\n startBlock {\n timestamp\n height\n }\n }\n squidStatus {\n height\n }\n}"]))),b={POLKADOT:"polkadot",KUSAMA:"kusama"},g={BlockNumber:void 0},w=[];function y(e,t){console.log("There was a problem fetching from with your query: ",e),t(r.createElement("div",null,"There was a problem with the query used to fetch auction data. If this issue persists, please submit an issue at the",r.createElement("a",{href:"https://github.com/w3f/polkadot-wiki/",target:"_blank"}," Polkadot Wiki repository on Github")))}function v(e){switch(e){case b.POLKADOT:return{httpLink:new m.u({uri:"https://squid.subsquid.io/polkadot-wiki-squid/v/v1/graphql"}),explorer:"https://polkadot.subscan.io/block/"};case b.KUSAMA:return{httpLink:new m.u({uri:"https://squid.subsquid.io/kusama-guide-squid/v/v1/graphql"}),explorer:"https://kusama.subscan.io/block/"}}}function N(e){return x.apply(this,arguments)}function x(){return(x=(0,h.Z)((0,c.Z)().mark((function e(t){return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t.map((function(e){return parseInt(e.id)})).reverse().forEach((function(e){var t=r.createElement("option",{value:e,key:e},"Auction #"+e);w.push(t)}));case 1:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function S(e,t,n,a){var o=g.BlockNumber,i=new Date(parseInt(t[a].onboardStartBlock.timestamp)).toDateString(),s=new Date(parseInt(t[a].onboardEndBlock.timestamp)).toDateString(),l=new Date(parseInt(t[a].biddingStartBlock.timestamp)).toDateString(),c=new Date(parseInt(t[a].biddingEndsBlock.timestamp)).toDateString(),h=r.createElement("div",null,i+" - ",r.createElement("a",{href:""+e+t[a].onboardStartBlock.height},"Block #",t[a].onboardStartBlock.height)," to ",s+" - ",r.createElement("a",{href:""+e+t[a].onboardEndBlock.height},"Block #",t[a].onboardEndBlock.height)),d=parseInt(a)+1,p=e.startsWith("https://polkadot")?"https://polkadot.subscan.io/auction/":"https://kusama.subscan.io/auction/",u=r.createElement("div",null,r.createElement("div",null,r.createElement("a",{target:"_blank",href:""+p+d},"Auction #",d," is ",t[a].status)),r.createElement("br",null),r.createElement("select",{id:"AuctionSelector",onChange:function(a){return function(e,t,n,a){S(e,t,n,parseInt(a.target.value)-1)}(e,t,n,a)},style:{border:"2px solid #e6007a",height:"40px"}},w.map((function(e){return e}))),r.createElement("hr",null),r.createElement("b",null,"Auction Starts:"),r.createElement("br",null),new Date(parseInt(t[a].startBlock.timestamp)).toDateString()+" - ",r.createElement("a",{href:""+e+t[a].startBlock.height},"Block #",t[a].startBlock.height),r.createElement("hr",null),r.createElement("b",null,"Ending Period Starts:"),r.createElement("br",null),l+" - ",r.createElement("a",{href:""+e+t[a].biddingStartBlock.height},"Block #",t[a].biddingStartBlock.height),r.createElement("hr",null),r.createElement("b",null,"Auction Ends:"),r.createElement("br",null),c+" - ",r.createElement("a",{href:""+e+t[a].biddingEndsBlock.height},"Block #",t[a].biddingEndsBlock.height),r.createElement("hr",null),r.createElement("b",null,"Lease Period:"),r.createElement("br",null),h,r.createElement("hr",null),r.createElement("p",{style:{color:"#6c757d"}},"The dates and block numbers listed above can change based on network block production and the potential for skipped blocks. Dates for finalized blocks are pulled from on-chain, while future blocks are estimated using 6 second average block times. The current block is ",r.createElement("a",{href:""+e+o}," Block #",o),"."));return n(u),t}const T=function(e){var t=e.network,n=(0,r.useState)("Loading Auctions..."),a=n[0],o=n[1];return(0,r.useEffect)((0,h.Z)((0,c.Z)().mark((function e(){var n,a,i,s,l,h;return(0,c.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=v(t),a=new d.f({cache:new p.h,link:u.i.from([n.httpLink])}),e.next=4,a.query({query:f}).catch((function(e){return y(e,o)}));case 4:if(void 0===(i=e.sent)){e.next=17;break}if(s=i.data.squidStatus.height,0!=(l=i.data.auctions).length){e.next=12;break}o(r.createElement("div",null,"No auctions found on this network.")),e.next=17;break;case 12:return g.BlockNumber=s,e.next=15,N(l);case 15:h=l.length-1,S(n.explorer,l,o,h);case 17:case"end":return e.stop()}}),e)}))),[]),void 0!==a?a:r.createElement("div",null,"Loading auction data...")};var E=["components"],A={id:"learn-auction",title:"Parachain Slot Auctions",sidebar_label:"Parachain Slot Auctions",description:"Polkadot's Parachain Slot Auction Mechanism.",keywords:["auction","slot auctions","parachain","bidding"],slug:"../learn-auction"},P=void 0,C={unversionedId:"learn/learn-auction",id:"learn/learn-auction",title:"Parachain Slot Auctions",description:"Polkadot's Parachain Slot Auction Mechanism.",source:"@site/../docs/learn/learn-auction.md",sourceDirName:"learn",slug:"/learn-auction",permalink:"/docs/learn-auction",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-auction.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-auction",title:"Parachain Slot Auctions",sidebar_label:"Parachain Slot Auctions",description:"Polkadot's Parachain Slot Auction Mechanism.",keywords:["auction","slot auctions","parachain","bidding"],slug:"../learn-auction"},sidebar:"docs",previous:{title:"System Parachains",permalink:"/docs/learn-system-chains"},next:{title:"Parachain Crowdloans",permalink:"/docs/learn-crowdloans"}},_={},B=[{value:"Auction Schedule",id:"auction-schedule",level:2},{value:"Mechanics of a Candle Auction",id:"mechanics-of-a-candle-auction",level:2},{value:"Randomness in action",id:"randomness-in-action",level:3},{value:"Rationale",id:"rationale",level:2},{value:"Network Implementation",id:"network-implementation",level:2},{value:"Bidding",id:"bidding",level:2},{value:"Examples",id:"examples",level:3},{value:"Parachain Lease Extension",id:"parachain-lease-extension",level:2},{value:"Lease Extension with Overlapping Slots",id:"lease-extension-with-overlapping-slots",level:3},{value:"Lease Extension with Non-Overlapping Slots",id:"lease-extension-with-non-overlapping-slots",level:3},{value:"Resources",id:"resources",level:2}],D={toc:B},R="wrapper";function q(e){var t=e.components,a=(0,i.Z)(e,E);return(0,s.kt)(R,(0,o.Z)({},D,a,{components:t,mdxType:"MDXLayout"}),(0,s.kt)("p",null,"For a ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachain")," to be added to\nPolkadot it must inhabit one of the available\nparachain slots. The number of parachain slots is not unbounded on\nPolkadot, as only a limited number are\navailable. A limited number of slots are unlocked every few months through on-chain governance. If a\nparachain wants to have guaranteed block inclusion at every Relay Chain block, it must acquire a\nparachain slot. The development of\n",(0,s.kt)("a",{parentName:"p",href:"https://forum.polkadot.network/t/on-demand-parachains/2208"},"on-demand parachains")," (previously\nreferred to as parathreads) is in progress."),(0,s.kt)("p",null,"The parachain slots will be leased according to an unpermissioned\n",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Candle_auction"},"candle auction"),", with several alterations related to\nimproving security while operating on a blockchain. See ",(0,s.kt)("a",{parentName:"p",href:"#rationale"},"Rationale")," for additional\ndetails."),(0,s.kt)("div",{className:"row"},(0,s.kt)("div",{className:"col text--center"},(0,s.kt)("a",{href:"https://youtu.be/i5-Rw2Sf7-w"},(0,s.kt)("img",{src:"https://img.youtube.com/vi/i5-Rw2Sf7-w/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,s.kt)("p",null,(0,s.kt)("a",{href:"https://youtu.be/i5-Rw2Sf7-w"},"A Beginner's guide to Parachain Slot Auctions")))),(0,s.kt)("h2",{id:"auction-schedule"},"Auction Schedule"),(0,s.kt)("p",null,"",(0,s.kt)(T,{network:"polkadot",mdxType:"AuctionSchedule"}),"\n",""),(0,s.kt)("h2",{id:"mechanics-of-a-candle-auction"},"Mechanics of a Candle Auction"),(0,s.kt)("p",null,"Candle auctions are a variant of open auctions where bidders submit bids that are increasingly\nhigher. The highest bidder at the conclusion of the auction is considered the winner."),(0,s.kt)("p",null,'Candle auctions were originally employed in the 16th century for the sale of ships. The name is\nderived from the system by which the auction length was determined. The phrase "inch of a candle"\nrefers to the length of time required for a candle to burn down 1 inch. When the flame extinguishes\nand the candle goes out, the auction terminates and the standing bid at that point in time prevails\nthe winner.'),(0,s.kt)("p",null,"When candle auctions are used online, they require a random number to decide the moment of\ntermination. Parachain slot auctions differ slightly from a normal candle auction in that they do\nnot randomly terminate the auction. Instead, they run for an entire fixed duration and the winner is\nrandomly chosen retroactively."),(0,s.kt)("p",null,"The candle auction on Polkadot is split into\ntwo parts:"),(0,s.kt)("ol",null,(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"The ",(0,s.kt)("em",{parentName:"p"},"opening period")," which is in effect immediately after the auction starts. This period lasts\nfor one day and eighteen hours and serves as a buffer time for parachain candidates to setup\ntheir initial bids, and likely start executing their strategy on how to win the slot auction.\nDuring the opening phase, bids will continue to be accepted, but they do not have any effect on\nthe outcome of the auction.")),(0,s.kt)("li",{parentName:"ol"},(0,s.kt)("p",{parentName:"li"},"The ",(0,s.kt)("em",{parentName:"p"},"ending period")," follows the opening period for five additional days, where the auction is\nsubject to end based on the candle auction mechanism."))),(0,s.kt)("p",null,"The auction\u2019s ending time can occur any time within the ending period. This time is automatically\nand randomly chosen by the ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"Verifiable Random Function (VRF)"),". The\nprobability of winning the auction is equal to the number of blocks that contain a winning bid,\ndivided by the total number of blocks in the ending period. The random ending is managed by\npropagating through the entire ending period, where a snapshot is taken at each block within the\nending period to capture the winners for that given block. At the end of the period, one of the\nsnapshots is randomly selected to determine the winner of the auction."),(0,s.kt)("admonition",{title:"The parachain candidate with the highest bid at the ending time chosen by the Verifiable",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"Random Function wins the slot auction.")),(0,s.kt)("p",null,"A parachain auction on Polkadot lasts exactly\none week from the start: 1 day and 18 hours for the starting period,\n",(0,s.kt)(l.Z,{network:"polkadot",path:"consts.auctions.endingPeriod",defaultValue:72e3,filter:"blocksToDays",mdxType:"RPC"}),"\n","\ndays for the ending period (candle auction phase) and 6 hours for determining the auction winner."),(0,s.kt)("admonition",{type:"info"},(0,s.kt)("p",{parentName:"admonition"},(0,s.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans##supporting-a-crowdloan-campaign"},"Crowdloan contributions")," cannot be made\nduring these six hours when the winning block for the auction is being determined on-chain.")),(0,s.kt)("p",null,"More details on this are available in the ",(0,s.kt)("a",{parentName:"p",href:"#network-implementation"},"Network Implementation")," section."),(0,s.kt)("h3",{id:"randomness-in-action"},(0,s.kt)("a",{parentName:"h3",href:"/docs/learn-cryptography#randomness"},"Randomness")," in action"),(0,s.kt)("p",null,"The following example will showcase the randomness mechanics of the candle auction for the ninth\nauction on Kusama. Keep in mind that the candle phase has a uniform termination profile and has an\nequal probability of ending at any given block, and the termination block cannot be predicted before\nor during the auction."),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"The ending period of auction 9 starts at ",(0,s.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/auction/9"},(0,s.kt)("inlineCode",{parentName:"a"},"block 9362014")),"."),(0,s.kt)("admonition",{parentName:"li",type:"note"},(0,s.kt)("mdxAdmonitionTitle",{parentName:"admonition"},"The auction has a full duration equal to ",(0,s.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"block 9362014")," + ",(0,s.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"72000")),(0,s.kt)("p",{parentName:"admonition"},"Here, ",(0,s.kt)("inlineCode",{parentName:"p"},"block 72000"),' is the "ending period", which is divided into ',(0,s.kt)("strong",{parentName:"p"},"3600 samples of 20 blocks"),".\nFiguratively, the candle is lit, and the candle phase lasts for 72,000 blocks."))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"The winning sample during the ending period had the ",(0,s.kt)("inlineCode",{parentName:"p"},"index 1078"),"."),(0,s.kt)("admonition",{parentName:"li",title:"Sample 1078 is the winner",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"Sample 1078 refers to the winner as of ",(0,s.kt)("inlineCode",{parentName:"p"},"block 9362014 + 21560"),", which equals\n",(0,s.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/block/9383574"},(0,s.kt)("inlineCode",{parentName:"a"},"block 9383574")),"."))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"The parent block was a new BABE session in the ",(0,s.kt)("inlineCode",{parentName:"p"},"Logs"),", which updated the randomness that was used\nto select that ",(0,s.kt)("a",{parentName:"p",href:"https://kusama.subscan.io/block/9434277"},"sample index"),"."),(0,s.kt)("admonition",{parentName:"li",title:"Inspecting the block state",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"You can inspect the state at the end of ",(0,s.kt)("inlineCode",{parentName:"p"},"block 9434277")," to see the sample indices with an\n",(0,s.kt)("a",{parentName:"p",href:"/docs/maintain-sync####types-of-nodes"},"archive node"),". The digest in the ",(0,s.kt)("inlineCode",{parentName:"p"},"Logs")," of\n",(0,s.kt)("inlineCode",{parentName:"p"},"9434277")," is decodable and contains the random value as well as the BABE authorities."))),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("p",{parentName:"li"},"As a result, the winner of this auction was not the highest bid during the full duration."))),(0,s.kt)("h2",{id:"rationale"},"Rationale"),(0,s.kt)("p",null,"The open and transparent nature of blockchain systems opens attack vectors that are non-existent in\ntraditional auction formats. Normal open auctions in particular can be vulnerable to ",(0,s.kt)("em",{parentName:"p"},"auction\nsniping")," when implemented over the internet or on a blockchain."),(0,s.kt)("p",null,"Auction sniping takes place when the end of an auction is known and bidders are hesitant to bid\ntheir true price early, in hopes of paying less than they actually value the item."),(0,s.kt)("p",null,"For example, Alice may value an item at auction for 30 USD. She submits an initial bid of 10 USD in\nhopes of acquiring the items at a lower price. Alice's strategy is to place incrementally higher\nbids until her true value of 30 USD is exceeded. Another bidder Eve values the same item at 11 USD.\nEve's strategy is to watch the auction and submit a bid of 11 USD at the last second. Alice will\nhave no time to respond to this bid before the close of the auction and will lose the item. The\nauction mechanism is sub-optimal because it has not discovered the true price of the item and the\nitem has not gone to the actor who valued it the most."),(0,s.kt)("p",null,"On blockchains this problem may be even worse, since it potentially gives the producer of the block\nan opportunity to snipe any auction at the last concluding block by adding it themselves while\nignoring other bids. There is also the possibility of a malicious bidder or a block producer trying\nto ",(0,s.kt)("em",{parentName:"p"},"grief")," honest bidders by sniping auctions."),(0,s.kt)("p",null,"For this reason, ",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Vickrey_auction"},"Vickrey auctions"),", a type of\nsealed-bid auction where bids are hidden and only revealed at a later phase, have emerged as a\nwell-regarded mechanic. For example, this mechanism is leveraged to auction human readable names on\nthe ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-account-advanced"},"ENS"),". The Candle auction is another solution that does not require\na two-step commit and reveal schemes (a main component of Vickrey auctions), which allows smart\ncontracts to participate."),(0,s.kt)("p",null,"Candle auctions allow everyone to always know the states of the bid, but they do not reveal when the\nauction has officially ended. This helps to ensure that bidders are willing to make their true bids\nearly. Otherwise, they may find themselves in a situation where the auction was determined to have\nended before having an opportunity to bid."),(0,s.kt)("h2",{id:"network-implementation"},"Network Implementation"),(0,s.kt)("p",null,"Polkadot will use a ",(0,s.kt)("em",{parentName:"p"},"random beacon")," based on\nthe ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"Verifiable Random Function (VRF)"),". The VRF will provide the base\nof the randomness, which will retroactively determine the end-time of the auction."),(0,s.kt)("p",null,"The slot durations are capped to 2 years and divided into 3-month periods.\nParachains may lease a slot for any\ncombination of periods of the slot duration. Parachains may lease more than one slot over time,\nmeaning that they could extend their lease to the network past the maximum duration by leasing a\ncontiguous slot."),(0,s.kt)("admonition",{title:"Individual parachain slots are fungible",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"This means that parachains do not need to always inhabit the same slot, however they always must\nmaintain a slot to remain a parachain.")),(0,s.kt)("h2",{id:"bidding"},"Bidding"),(0,s.kt)("p",null,"Parachains or parachain teams, bid in the auction by specifying the slot range that they want to\nlease and the number of tokens they are willing to reserve. Bidders can be either ordinary accounts,\nor use the ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans"},"crowdloan functionality")," to source tokens from the community. For a\nmore in-depth comparison between both of these options for gaining a parachain slot, check out this\nsection on\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans#crowdloan-campaigns-vs-parachain-auctions"},"Crowdloan Campaigns vs Parachain Auctions"),"."),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre"},"Parachain slots at genesis\n\n --3 months--\n v v\nSlot A | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot B | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot C |__________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot D |__________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\nSlot E |__________|___________| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |...\n ^ ^\n ---------------------------------------------max lease-----------------------------------------\n\n")),(0,s.kt)("p",null,(0,s.kt)("em",{parentName:"p"},"Each period of the range 1 - 4 represents a\n3-month duration for a total of 2 years\n")),(0,s.kt)("p",null,"Bidders will submit a configuration of bids specifying the token amount they are willing to bond and\nfor which periods. The slot ranges may be any of the periods 1 - ",(0,s.kt)("inlineCode",{parentName:"p"},"n"),", where ",(0,s.kt)("inlineCode",{parentName:"p"},"n")," is the number of\nperiods available for a slot. (",(0,s.kt)("inlineCode",{parentName:"p"},"n"),"=\n",(0,s.kt)(l.Z,{network:"polkadot",path:"consts.auctions.leasePeriodsPerSlot",defaultValue:8,mdxType:"RPC"})," for Polkadot)\n",""),(0,s.kt)("admonition",{title:"If you bond tokens with a parachain slot, you cannot stake with those tokens. In this way,",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"you pay for the parachain slot by forfeiting the opportunity to earn staking rewards.")),(0,s.kt)("p",null,"A bidder configuration for a single bidder may look like the following pseudocode example:"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-js"},"const bids = [\n {\n range: [1, 2, 3, 4, 5, 6, 7, 8],\n bond_amount: 300,\n },\n {\n range: [1, 2, 3, 4],\n bond_amount: 777,\n },\n {\n range: [2, 3, 4, 5, 6, 7],\n bond_amount: 450,\n },\n];\n")),(0,s.kt)("p",null,"The important concept to understand from this example is that bidders may submit different\nconfigurations at different prices (",(0,s.kt)("inlineCode",{parentName:"p"},"bond_amount"),"). However, only one of these bids would be\neligible to win exclusive of the others."),(0,s.kt)("p",null,"The winner selection algorithm will pick bids that may be non-overlapping in order to maximize the\namount of tokens held over the entire lease duration of the parachain slot. This means that the\nhighest bidder for any given slot lease period might not always win (see the\n",(0,s.kt)("a",{parentName:"p",href:"#examples"},"example below"),")."),(0,s.kt)("p",null,"A random number, which is based on the ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-cryptography#vrf"},"VRF")," used by\nPolkadot, is determined at each block.\nAdditionally, each auction will have a threshold that starts at 0 and increases to 1. The random\nnumber produced by the VRF is examined next to the threshold to determine if that block is the end\nof the auction within the so-called ",(0,s.kt)("em",{parentName:"p"},"ending period"),". Additionally, the VRF will pick a block from\nthe last epoch to access the state of bids which can help aid in mitigating some types of attacks\nfrom malicious validators."),(0,s.kt)("h3",{id:"examples"},"Examples"),(0,s.kt)("p",null,"There is one parachain slot available."),(0,s.kt)("p",null,"Charlie bids ",(0,s.kt)("inlineCode",{parentName:"p"},"75")," for the range 1 - 8."),(0,s.kt)("p",null,"Dave bids ",(0,s.kt)("inlineCode",{parentName:"p"},"100")," for the range 5 - 8."),(0,s.kt)("p",null,"Emily bids ",(0,s.kt)("inlineCode",{parentName:"p"},"40")," for the range 1 - 4."),(0,s.kt)("p",null,"Let's calculate each bidder's valuation according to the algorithm. We do this by multiplying the\nbond amount by the number of periods in the specified range of the bid."),(0,s.kt)("p",null,"Charlie - 75 ","*"," 8 = 600 for range 1 - 8"),(0,s.kt)("p",null,"Dave - 100 ","*"," 4 = 400 for range 5 - 8"),(0,s.kt)("p",null,"Emily - 40 ","*"," 4 = 160 for range 1 - 4"),(0,s.kt)("p",null,"Although Dave had the highest bid in accordance to token amount per period, when we do the\ncalculations we see that since he only bid for a range of 4, he would need to share the slot with\nEmily who bid much less. Together Dave and Emily's bids only equals a valuation of ",(0,s.kt)("inlineCode",{parentName:"p"},"560"),". Charlie's\nvaluation for the entire range is ",(0,s.kt)("inlineCode",{parentName:"p"},"600"),". Therefore Charlie is awarded the complete range of the\nparachain slot."),(0,s.kt)("h2",{id:"parachain-lease-extension"},"Parachain Lease Extension"),(0,s.kt)("p",null,"Before the slot lease expires, parachains have to bid and win another auction for continuity of the\nlease. To avoid any downtime in connectivity and minimize the risk of losing a subsequent auction,\nparachain teams need to plan ahead to bid for the lease extension before their current lease period\nends. Explained in the section above, each auction lets you bid for 8 LPs (Lease Periods) which\nenables two scenarios for the parachain's lease extension."),(0,s.kt)("h3",{id:"lease-extension-with-overlapping-slots"},"Lease Extension with Overlapping Slots"),(0,s.kt)("p",null,"Acquire a slot where the first lease period is before the last lease period of the current slot."),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"Register a new ",(0,s.kt)("inlineCode",{parentName:"li"},"paraId")),(0,s.kt)("li",{parentName:"ul"},"Win a slot auction with the new ",(0,s.kt)("inlineCode",{parentName:"li"},"paraId"))),(0,s.kt)("p",null,"The parachain team has access to two slots:"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},"one that will end soon"),(0,s.kt)("li",{parentName:"ul"},"one that just started")),(0,s.kt)("p",null,"Both slots have at least one LP in common. When the old slot transitions to their last LP, the\nparachain can ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot/pull/4772"},"swap")," the slots. This can be done\nvia ",(0,s.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/post/1491"},"on-chain governance"),". The ",(0,s.kt)("inlineCode",{parentName:"p"},"swap")," call is available in\nthe ",(0,s.kt)("inlineCode",{parentName:"p"},"registrar")," pallet."),(0,s.kt)("p",null,(0,s.kt)("img",{alt:"Parachain Slot Swap",src:n(11308).Z,width:"1286",height:"896"})),(0,s.kt)("admonition",{title:"Any two parachains can swap their slots via XCM",type:"note"},(0,s.kt)("p",{parentName:"admonition"},"The ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot/pull/4772"},"slot swap via XCM")," requires two live\nparachains to send an XCM message to the relay chain to approve the swap. A parachain team with\naccess to two overlapping slots can start a shell parachain on the new slot and swap it with their\nactual parachain on the old slot, thus ensuring continuity of the lease.")),(0,s.kt)("h3",{id:"lease-extension-with-non-overlapping-slots"},"Lease Extension with Non-Overlapping Slots"),(0,s.kt)("p",null,"Acquire a slot where the first LP starts right after the end of the last LP of the current slot. In\nthis case, the parachain can bid directly with their current ",(0,s.kt)("inlineCode",{parentName:"p"},"paraId"),", and it will be automatically\nextended without the need of swapping. This method has the advantage of not having superfluous LP's\non different slots owned by the same team, however it has the disadvantage of losing flexibility on\nwhen to win a new slot: if the team does not win the exact slot, then it will suffer some downtime\nuntil it wins a new slot."),(0,s.kt)("h2",{id:"resources"},"Resources"),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/solutions/articles/65000182287-how-does-a-parachain-slots-auction-work-"},"How do Parachain Slot Auctions Work")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://research.web3.foundation/Polkadot/overview/parachain-allocation"},"Parachain Allocation")," -\nW3F research page on parachain allocation that goes more in depth to the mechanism"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://polkadot.network/blog/research-update-the-case-for-candle-auctions/"},"Research Update: The Case for Candle Auctions")," -\nW3F breakdown and research update about candle auctions"),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3846363"},"Front-Running, Smart Contracts, and Candle Auctions"),"\nW3F Research team discusses how to remedy current blockchain auction setbacks with candle auctions")))}q.isMDXComponent=!0},11308:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/para-swap-3c765fb9e6860c7d7489a758af065cb0.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/2f3b630e.368b5916.js b/assets/js/2f3b630e.368b5916.js new file mode 100644 index 000000000000..e76f531d6b9b --- /dev/null +++ b/assets/js/2f3b630e.368b5916.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[9226],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var a=n(74165),o=n(15861),i=n(67294),r=n(87152),l=n(30967),s=n(67425);function p(e,t,n){return d.apply(this,arguments)}function d(){return(d=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var i,s,p,d,c;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,s=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return p=new r.U(i),e.next=21,l.G.create({provider:p});case 21:d=e.sent,(c=n.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return s=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return s=(s=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+n);case 35:return e.abrupt("return",s);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,n,a){switch(t){case"humanReadable":(0,s.HumanReadable)(e,n,a);break;case"precise":(0,s.Precise)(e,n,a);break;case"blocksToDays":(0,s.BlocksToDays)(e,a);break;case"erasToDays":(0,s.ErasToDays)(e,a,n);break;case"percentage":(0,s.Percentage)(e,a);break;case"permillToPercent":(0,s.PermillToPercent)(e,a);break;case"arrayLength":(0,s.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const h=function(e){var t=e.network,n=e.path,r=e.defaultValue,l=e.filter,s=void 0===l?void 0:l,d=(0,i.useState)(""),h=d[0],m=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==s?c(r.toString(),s,t,m):m(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,n,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==s?c(o,s,t,m):m(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(l){console.log(l)}}}),[]),h}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,l){var s=void 0;if(r===t||r===o)s=3;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=6}e=parseFloat(e),l((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(s)+" "+i[r].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var l=void 0;if(r===t||r===o)l=1;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=4}i((e/=l).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},42569:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>v,contentTitle:()=>g,default:()=>N,frontMatter:()=>k,metadata:()=>f,toc:()=>w});var a=n(87462),o=n(63366),i=n(67294),r=n(3905),l=n(47940),s=i.createElement("table",null,i.createElement("tbody",null,i.createElement("tr",null,i.createElement("th",null,"Lock Periods"),i.createElement("th",null,"Vote Multiplier"),i.createElement("th",null,"Length in Days")),i.createElement("tr",null,i.createElement("td",null,"0"),i.createElement("td",null,"0.1"),i.createElement("td",{id:"p0"})),i.createElement("tr",null,i.createElement("td",null,"1"),i.createElement("td",null,"1"),i.createElement("td",{id:"p1"})),i.createElement("tr",null,i.createElement("td",null,"2"),i.createElement("td",null,"2"),i.createElement("td",{id:"p2"})),i.createElement("tr",null,i.createElement("td",null,"4"),i.createElement("td",null,"3"),i.createElement("td",{id:"p4"})),i.createElement("tr",null,i.createElement("td",null,"8"),i.createElement("td",null,"4"),i.createElement("td",{id:"p8"})),i.createElement("tr",null,i.createElement("td",null,"16"),i.createElement("td",null,"5"),i.createElement("td",{id:"p16"})),i.createElement("tr",null,i.createElement("td",null,"32"),i.createElement("td",null,"6"),i.createElement("td",{id:"p32"})))),p=["p0","p1","p2","p4","p8","p16","p32"],d={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224},c={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224};function h(e){p.forEach((function(t){var n=document.getElementById(t);"polkadot"===e?n.innerText=d[t]:"kusama"===e&&(n.innerText=c[t])}))}const m=function(){var e=(0,i.useState)("");return e[0],e[1],(0,i.useEffect)((function(){var e=document.title;"Governance V1 \xb7 Polkadot Wiki"===e||"Introduction to Polkadot OpenGov \xb7 Polkadot Wiki"===e?h("polkadot"):"Governance V1 \xb7 Guide"===e||"Introduction to Polkadot OpenGov \xb7 Guide"===e?h("kusama"):console.log("Unknown wiki/guide type")}),[]),s};var u=["components"],k={id:"learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",sidebar_label:"Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-polkadot-opengov"},g=void 0,f={unversionedId:"learn/learn-polkadot-opengov",id:"learn/learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",source:"@site/../docs/learn/learn-polkadot-opengov.md",sourceDirName:"learn",slug:"/learn-polkadot-opengov",permalink:"/docs/learn-polkadot-opengov",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadot-opengov.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",sidebar_label:"Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-polkadot-opengov"},sidebar:"docs",previous:{title:"Polkadot OpenGov",permalink:"/docs/learn-polkadot-opengov-index"},next:{title:"OpenGov Origins",permalink:"/docs/learn-polkadot-opengov-origins"}},v={},w=[{value:"Premise",id:"premise",level:2},{value:"Summary",id:"summary",level:2},{value:"Gov1 vs. Polkadot OpenGov",id:"gov1-vs-polkadot-opengov",level:2},{value:"Proposals",id:"proposals",level:2},{value:"Cancelling and Blacklisting",id:"cancelling-and-blacklisting",level:3},{value:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Origins and Tracks",id:"origins-and-tracks",level:3},{value:"Approval and Support",id:"approval-and-support",level:3},{value:"Enactment",id:"enactment",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voluntary Locking",id:"voluntary-locking",level:3},{value:"Multirole Delegation",id:"multirole-delegation",level:3},{value:"The Polkadot Technical Fellowship",id:"the-polkadot-technical-fellowship",level:2},{value:"Ranking System",id:"ranking-system",level:3},{value:"Whitelisting",id:"whitelisting",level:3},{value:"Becoming a Polkadot Technical Fellowship Member",id:"becoming-a-polkadot-technical-fellowship-member",level:3},{value:"Resources",id:"resources",level:2}],b={toc:w},y="wrapper";function N(e){var t=e.components,i=(0,o.Z)(e,u);return(0,r.kt)(y,(0,a.Z)({},b,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"The content in this document is subject to change",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The governance protocol has already undergone iterations (see\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance"},"Governance V1"),"). Governance is a constantly evolving protocol at this stage\nin its lifecycle."),(0,r.kt)("p",{parentName:"admonition"},"For technical information about Polkadot OpenGov and how to interact with it, please refer to this\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"dedicated Wiki page"),"."),(0,r.kt)("p",{parentName:"admonition"},"For additional support about Polkadot OpenGov see the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/65000105211"},"dedicated support pages"),".")),(0,r.kt)("admonition",{title:"Polkadot Delegation Dashboard",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See the video tutorial below to easily delegate your votes to somebody else using the\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Polkadot Delegation Dashboard"),"."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/RapBYZc5ZPo/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},"Delegation Dashboard Tutorial")))),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"If you become a nomination pool member or a pool admin, you cannot participate in Governance with\nthe bonded tokens in the pool, as they are held in a\n",(0,r.kt)("a",{parentName:"strong",href:"/docs/learn-account-advanced#system-accounts"},"system account"),"."))),(0,r.kt)("p",null,"Polkadot uses a sophisticated governance\nmechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled\nstakeholders. The stated goal is to ensure that the majority of the stake can always command the\nnetwork."),(0,r.kt)("p",null,"Polkadot brings together various novel\nmechanisms, including an amorphous (abstract) form of state-transition function stored on-chain\ndefined in a platform-agnostic language (i.e. ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-wasm"},"WebAssembly"),"), and several on-chain\nvoting mechanisms such as referenda and batch approval voting. All changes to the protocol must be\nagreed upon by stake-weighted referenda."),(0,r.kt)("h2",{id:"premise"},"Premise"),(0,r.kt)("p",null,"Polkadot's first governance system\n(",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance"},"Governance V1"),") included three main components."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#technical-committee"},"Technical Committee"),": A technocratic committee to\nmanage upgrade timelines."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#council"},"Council"),': An approval-voted, elected executive "government" to\nmanage parameters, admin, and spending proposals.'),(0,r.kt)("li",{parentName:"ul"},"The Public: All token holders.")),(0,r.kt)("p",null,"Over the first few years of operation, Governance V1 ensured the appropriate usage of treasury funds\nand enabled timely upgrades and fixes. Like most early technologies, protocols must evolve as they\nmature to improve their shortcomings and keep up with modern advancements. In Governance V1, all\nreferenda carried the same weight as only one referendum could be voted on at a time (except for\nemergency proposals), and the voting period could last multiple weeks. Also, an\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#alternating-voting-timetable"},"alternating voting timetable")," allowed to vote\neither for a public referendum or a council motion every\n28 days. This resulted in the system favoring\ncareful consideration of very few proposals instead of broad consideration of many."),(0,r.kt)("p",null,"Polkadot OpenGov changes how the practical means of day-to-day decisions are made, making the\nrepercussions of referenda better scoped and agile to increase the number of collective decisions\nthe system can make at any given time."),(0,r.kt)("p",null,"The following content is focused on what the new Polkadot OpenGov version brings to the governance\non Polkadot, and on the main differences with\nprevious governance versions. We recommend learning about ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance"},"Governance v1")," to\nbetter understand the need for and the direction of Polkadot OpenGov."),(0,r.kt)("h2",{id:"summary"},"Summary"),(0,r.kt)("p",null,"In Governance v1, active token holders (public) and the Council together administrated network's\nupgrade decisions. Whether the public or the council initiated the proposal, it would eventually\nhave to go through a referendum to let all holders (weighted by stake and conviction) make the\ndecision."),(0,r.kt)("p",null,"The Council fulfilled its role as the representative of the public, guardian of the treasury and\ninitiator of legislation, but it was often seen as a centralized entity. To further decentralize\nPolkadot, Polkadot OpenGov proposes the\nfollowing main changes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Migrating all responsibilities of the Council to the public via a direct democracy voting system."),(0,r.kt)("li",{parentName:"ul"},"Dissolving the current ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#council"},"Council")," collective"),(0,r.kt)("li",{parentName:"ul"},"Allowing users to delegate voting power in more ways to community members"),(0,r.kt)("li",{parentName:"ul"},"Dissolving the ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#technical-committee"},"Technical Committee")," and establishing\nthe broader ",(0,r.kt)("a",{parentName:"li",href:"#the-technical-fellowship"},"Polkadot Technical Fellowship"))),(0,r.kt)("p",null,"The figure below shows an overview of Polkadot OpenGov's structure."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#summary"},"this page")," for a comparison with the structure of Governance V1.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-overview",src:n(40176).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"In Polkadot OpenGov, all the proposals are initiated by the public. The proposal will enter a\nLead-in period (for more information, see ",(0,r.kt)("a",{parentName:"p",href:"#referenda-timeline"},"Referenda Timeline"),"), after which it\nwill follow a specific ",(0,r.kt)("a",{parentName:"p",href:"#origins-and-tracks"},"Track")," which has a dedicated Origin. There are\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"15 Origins"),", each with a different\ntrack. The origins and tracks parameters are preset values that set the duration of a referendum as\nwell as how many referenda can be voted on simultaneously. For example, a treasury proposal can now\nbe submitted in different tracks depending on the amount requested. A proposal for a small tip will\nneed to be submitted in the Small Tipper track, while a proposal requiring substantial funds will\nneed to be submitted to the Medium or Big Spender track."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"#the-technical-fellowship"},"Polkadot Technical Fellowship")," can decide to\n",(0,r.kt)("a",{parentName:"p",href:"#whitelisting"},"whitelist")," a proposal that will be enacted through the Whitelist Caller origin.\nThose proposals will have a shorter Lead-in, Confirmation, and Enactment period when compared to the\nRoot Origin track."),(0,r.kt)("p",null,"Each track has its own preset ",(0,r.kt)("a",{parentName:"p",href:"#approval-and-support"},"Approval and Support")," curves which are based\non the origin's privileges. When both the approval and support criteria are satisfied for a specific\nperiod (called the confirmation period), the referenda passes and will be executed after the\nenactment period."),(0,r.kt)("p",null,"All referenda within each track and across tracks can be voted on simultaneously (assuming track\nmaximum capacity is not reached)."),(0,r.kt)("p",null,"Polkadot OpenGov also comes with multi-role delegations where the token holder can assign voting\npower on different tracks to different entities who are experts in judging the referenda submitted\nto those tracks. For example, suppose a token holder does not have the technical background to\nconsider the merits and vote on the referenda submitted to the Root track. In that case, they can\ndelegate their voting power just for the Root track to a trusted expert who (according to them) acts\nin the best interest of the network protocol. In this way, token holders do not need to be\nup-to-date with governance matters and can still make their votes count through delegates."),(0,r.kt)("admonition",{title:"Delegation Dashboard",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To easily delegate your votes you can use the\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Polkadot Delegation Dashboard"),". See\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},"this video tutorial")," to know more about the dashboard\nand learn how to use it.")),(0,r.kt)("h2",{id:"gov1-vs-polkadot-opengov"},"Gov1 vs. Polkadot OpenGov"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Governance V1"),(0,r.kt)("th",{parentName:"tr",align:null},"Polkadot OpenGov"),(0,r.kt)("th",{parentName:"tr",align:null},"Polkadot OpenGov Benefit"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Includes the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#council"},"Council"),", the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#technical-committee"},"Technical Committee"),", and the Public (i.e. token holders)."),(0,r.kt)("td",{parentName:"tr",align:null},"Includes the Public and the ",(0,r.kt)("a",{parentName:"td",href:"#the-technical-fellowship"},"Technical Fellowship"),"."),(0,r.kt)("td",{parentName:"tr",align:null},"Simpler and more decentralized structure.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Referenda executed only from one origin (Root). Referenda in this origin must be carefully scrutinized. Therefore, there is only one track (i.e. only one referendum at a time can be executed)."),(0,r.kt)("td",{parentName:"tr",align:null},"Referenda executed from ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"multiple origins"),", each with a different track that shapes proposals\u2019 timelines. Depending on the origin, multiple referenda within the same track are possible."),(0,r.kt)("td",{parentName:"tr",align:null},"Possibility to categorize proposals (based on importance and urgency) and execute them simultaneously within and between origin tracks.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Proposals can be submitted by either the Council or the Public."),(0,r.kt)("td",{parentName:"tr",align:null},"The public submits proposals."),(0,r.kt)("td",{parentName:"tr",align:null},"More democratic.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Uses ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#adaptive-quorum-biasing"},"Adaptive Quorum Biasing")," to define the approval threshold based on turnout. Given the same turnout, council-initiated referenda require fewer Aye votes to pass compared to public referenda."),(0,r.kt)("td",{parentName:"tr",align:null},"Uses origin-specific approval and support curves defining the amount of approval and support (i.e. turnout) needed as a function of time. The same curves are applied to all referenda within the same origin track."),(0,r.kt)("td",{parentName:"tr",align:null},"Referenda timeline depends on the origin and not on who submitted the proposal (i.e. Council or Public). This is a more democratic and equalitarian system.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Uses ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#alternating-voting-timetable"},"alternating voting timetable")," allowing voters to cast votes for either council or public referenda every 28 eras."),(0,r.kt)("td",{parentName:"tr",align:null},"Multiple referenda can be voted at the same time."),(0,r.kt)("td",{parentName:"tr",align:null},"More flexible and agile governance system.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Except for emergency proposals, all referenda have fixed voting and enactment periods of 28 eras."),(0,r.kt)("td",{parentName:"tr",align:null},"Periods' length is customizable and has pre-defined limits for each origin. The same limits apply to all tracks with the same origin. For example, the track in the origin Root will be longer than the track within the Small Tipper origin."),(0,r.kt)("td",{parentName:"tr",align:null},"Referenda\u2019s timeline is tailored to their importance and urgency. Flexible enactment period based on origin.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Emergency proposals turned referenda can be simultaneously voted on and executed with other referenda and have shorter enactment periods. They must be proposed by the Technical Committee and approved by the Council."),(0,r.kt)("td",{parentName:"tr",align:null},"No emergency proposals. The Technical Fellowship can whitelist proposals that will have their origin with shorter lead-in, confirmation, and enactment periods."),(0,r.kt)("td",{parentName:"tr",align:null},"The Technical Fellowship is a more decentralized entity when compared to the Technical Committee. Whitelisting a proposal requires a majority of approval from the fellowship.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Only the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#endorsing-proposals"},"most-endorsed proposal")," is able to transit from Launch to Voting period. The time for the transition is indeterminate, and (with no possibility of canceling endorsements) proposers and endorsers might wait a long time before a referendum is tabled, and getting their deposits back."),(0,r.kt)("td",{parentName:"tr",align:null},"All proposals will eventually be voted on (given track capacity and deposit are met and the Lead-in period has ended)."),(0,r.kt)("td",{parentName:"tr",align:null},"It allows all proposals to get a chance to be voted on in a timely predictive manner.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Only ",(0,r.kt)("em",{parentName:"td"},"aye")," or ",(0,r.kt)("em",{parentName:"td"},"nay")," votes possible."),(0,r.kt)("td",{parentName:"tr",align:null},"Voters can have the additional voting options of abstaining or splitting votes."),(0,r.kt)("td",{parentName:"tr",align:null},"More ways to engage in voting and increase turnout.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Voters can decide to delegate votes to another account."),(0,r.kt)("td",{parentName:"tr",align:null},"Voters can use ",(0,r.kt)("a",{parentName:"td",href:"#multirole-delegation"},"multirole delegations")," and delegate votes to different accounts depending on origins."),(0,r.kt)("td",{parentName:"tr",align:null},"More agile delegations tailored by expertise.")))),(0,r.kt)("h2",{id:"proposals"},"Proposals"),(0,r.kt)("admonition",{title:"Starting a proposal in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#proposals"},"this page")," for more information about starting referenda in\nGovernance v1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, anyone can start a referendum at any time and do so as often as they wish.\nPrevious features were expanded and improved, most notably\n",(0,r.kt)("a",{parentName:"p",href:"#origins-and-tracks"},(0,r.kt)("strong",{parentName:"a"},"Origins and Tracks"))," help aid in the flow and processing of the submitted\nreferenda."),(0,r.kt)("h3",{id:"cancelling-and-blacklisting"},"Cancelling and Blacklisting"),(0,r.kt)("admonition",{title:"Cancelling Referenda in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#cancelling-proposals"},"this page")," for more information about cancelling\nreferenda in Governance v1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, there is a special operation called ",(0,r.kt)("strong",{parentName:"p"},"Cancellation")," for intervening with a\nproposal already being voted on. The operation will immediately reject an ongoing referendum\nregardless of its status. There is also a provision to ensure the deposit of the proposer is slashed\nif the proposal is malicious or spam."),(0,r.kt)("p",null,"Cancellation is a governance operation the network must vote on to be executed. Cancellation comes\nwith ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#referendum-canceller"},"its own Origin and Track")," which has\na low lead-time and Approval/Support curves with slightly sharper reductions in their thresholds for\npassing, given that it is invoked with a sense of urgency."),(0,r.kt)("p",null,"For more information about how to cancel a referendum see the\n",(0,r.kt)("a",{parentName:"p",href:"./learn-guides-polkadot-opengov#cancel-or-kill-a-referendum"},"advanced how-to guides"),"."),(0,r.kt)("admonition",{title:"Blacklisting",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Blacklisting referenda in Polkadot OpenGov is\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#blacklisting-proposals"},"the same as in Governance v1"),".")),(0,r.kt)("h2",{id:"referenda"},"Referenda"),(0,r.kt)("admonition",{title:"Public and Council Referenda in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"With the Council's dissolution, ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#council-referenda"},"council referenda")," are no\nlonger present in Polkadot OpenGov."),(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#public-referenda"},"this page")," for more information about public referenda\nin Governance v1.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"In Polkadot OpenGov all referenda are public.")," The\n",(0,r.kt)("a",{parentName:"p",href:"#the-technical-fellowship"},"Technical Fellowship")," has the option to ",(0,r.kt)("a",{parentName:"p",href:"#whitelisting"},"whitelist"),"\nreferenda that can be then proposed in the track with\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#whitelisted-caller"},"whitelist origin"),"."),(0,r.kt)("h3",{id:"referenda-timeline"},"Referenda Timeline"),(0,r.kt)("admonition",{title:"Voting timetable in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#referenda-timeline"},"this page")," for more information about the voting\ntimetable in Governance v1.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-timeline",src:n(1671).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"The figure above provides a summary view of the referenda timeline for Polkadot OpenGov."),(0,r.kt)("p",null,"In (1), when a referendum is initially created, the community can immediately vote on it. However,\nit is not immediately in a state where it can end or otherwise have its votes counted, be approved,\nand ultimately enacted. Instead, the proposal will stay within a ",(0,r.kt)("strong",{parentName:"p"},"Lead-in Period")," until it\nfulfills three criteria:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Proposals must stay within the lead-in period for a pre-defined minimum amount of time. This helps\nmitigate against the possibility of "decision sniping" where an attacker controlling a substantial\namount of voting power might seek to have a proposal passed immediately after proposing, not\nallowing the overall voting population adequate time to consider and participate.'),(0,r.kt)("li",{parentName:"ul"},"There must be enough room for the decision within the origin. Different origins have their limit\non the number of proposals that can be decided simultaneously. Tracks that have more potent\nabilities will have lower limits. For example, the Root level Origin has a limit of one, implying\nthat only a single proposal may be decided on at once."),(0,r.kt)("li",{parentName:"ul"},"A decision deposit must be submitted. Creating a referendum is cheap as the deposit value consists\nof only the value required for the on-chain storage needed to track it. But, having a referendum\nreviewed and decided upon carries the risk of using up the limited spots available in the\nreferenda queue. Having a more significant but refundable deposit requirement makes sense to help\nmitigate spam. Failing to submit the decision deposit will lead to a referendum ",(0,r.kt)("em",{parentName:"li"},"timeout"),".")),(0,r.kt)("p",null,"Until they are in the lead-in period, proposals remain undecided. Once the criteria above are met,\nthe referendum moves to the ",(0,r.kt)("em",{parentName:"p"},"deciding")," state. The votes of the referendum are now counted towards\nthe outcome."),(0,r.kt)("p",null,"In (2), the proposal enters the ",(0,r.kt)("strong",{parentName:"p"},"Decision Period")," where votes can be cast. For a proposal to be\napproved, votes must satisfy the approval and support criteria for at least the ",(0,r.kt)("strong",{parentName:"p"},"Confirmation\nPeriod"),"; otherwise, the proposal is automatically rejected. A rejected proposal can be resubmitted\nanytime and as many times as needed."),(0,r.kt)("p",null,"In (3), approved proposals will enter the ",(0,r.kt)("strong",{parentName:"p"},"Enactment Period"),", after which proposed changes will be\nexecuted."),(0,r.kt)("p",null,"Note how the length of the lead-in, decision, confirmation, and enactment periods vary depending on\nthe origin. Root origin has more extended periods than the other origins. Also, the number of\nreferenda within each track differs, with the Root origin track only accepting one. proposal at a\ntime (see below)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-track-capacity",src:n(67506).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"This directly affects the number of proposals that can be voted on and executed simultaneously.\nContinuing the comparison between Root and Small Tipper, Small Tipper will allow many proposals on\nits track to be executed simultaneously. In contrast, Root will allow only one proposal in its\ntrack. Once the track capacity is filled, additional proposals in the lead-in period will queue\nuntil place is available to enter the decision period."),(0,r.kt)("h3",{id:"origins-and-tracks"},"Origins and Tracks"),(0,r.kt)("p",null,"An ",(0,r.kt)("strong",{parentName:"p"},"Origin")," is a specific level of privilege that will determine the ",(0,r.kt)("strong",{parentName:"p"},"Track")," of all referenda\nexecuted with that origin. The track is basically a pipeline in which the proposal lives and\nproceeds and is independent from other origins' tracks. The proposer of the referenda now selects an\nappropriate Origin for their request based on the proposal\u2019s requirements."),(0,r.kt)("p",null,"Although the track structure is the same for all origins, track parameters are not. Such parameters\ninclude:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Maximum Deciding or Capacity"),": the limit for the number of referenda that can be decided at\nonce (i.e. the number of tracks within each origin)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Decision deposit"),": the amount of funds that must be placed on deposit to enter the Decision\nPeriod (note that more requirements must be met to enter the Decision Period)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Preparation Period"),": the minimum amount of voting time needed before entering the Decision\nPeriod (given capacity and deposit are met)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Decision Period"),": the maximum time to approve a proposal. The proposal will be accepted if\napproved by the end of the period."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Confirmation Period"),": the minimum amount of time (within the Decision Period) the approval and\nsupport criteria must hold before the proposal is approved and moved to the enactment period."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Minimum Enactment Period"),": the minimum amount of waiting time before the proposed changes are\napplied"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Approval Curve"),": the curve describing the minimum % of ",(0,r.kt)("em",{parentName:"li"},"aye")," votes as a function of time within\nthe Decision Period. The approval % is the portion of ",(0,r.kt)("em",{parentName:"li"},"aye")," votes (adjusted for conviction) over\nthe total votes (",(0,r.kt)("em",{parentName:"li"},"aye"),", ",(0,r.kt)("em",{parentName:"li"},"nay"),", and ",(0,r.kt)("em",{parentName:"li"},"abstained"),")."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Support Curve"),": the curve describing the minimum % of all votes in support of a proposal as a\nfunction of time within the Decision Period. The support % is defined as the portion of all votes\n(",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"abstained"),") without conviction over the total possible amount of votes in the system\n(i.e. the total active issuance).")),(0,r.kt)("p",null,"For example, a runtime upgrade (requiring a ",(0,r.kt)("inlineCode",{parentName:"p"},"set_code")," call, if approved) does not have the same\nimplications for the ecosystem as the approval of a treasury tip (",(0,r.kt)("inlineCode",{parentName:"p"},"reportAwesome")," call), and\ntherefore different Origins for these two actions are needed in which different deposits, support,\napproval, and a minimum ",(0,r.kt)("a",{parentName:"p",href:"#enactment"},"enactment")," periods will be predetermined on the pallet."),(0,r.kt)("p",null,"For detailed information about origin and tracks, and parameter values in Kusama, see\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"this page"),"."),(0,r.kt)("h3",{id:"approval-and-support"},"Approval and Support"),(0,r.kt)("admonition",{title:"Adaptive Quorum Biasing is deprecated",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In Polkadot OpenGov, ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#adaptive-quorum-biasing"},"Adaptive quorum biasing")," used\nin Governance V1 has been replaced with the ",(0,r.kt)("strong",{parentName:"p"},"Approval and Support system"),".")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-curves-pass",src:n(65993).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"The figure above provides a summary view of how the approval and support system works during the\nDecision Period."),(0,r.kt)("p",null,"Once the proposal exits the Lead-in Period and enters the Voting Period, to be approved, it must\nsatisfy the approval and support criteria for the ",(0,r.kt)("strong",{parentName:"p"},"Confirmation Period"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Approval")," is defined as the share of approval (",(0,r.kt)("em",{parentName:"li"},"aye")," votes) vote-weight (after adjustment for\n",(0,r.kt)("a",{parentName:"li",href:"#voluntary-locking"},"conviction"),") against the total vote-weight (",(0,r.kt)("em",{parentName:"li"},"aye"),", ",(0,r.kt)("em",{parentName:"li"},"nay"),", and ",(0,r.kt)("em",{parentName:"li"},"abstained"),")."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Support")," is the total number of ",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"abstain")," votes (ignoring any adjustment for\nconviction) compared to the total possible votes (",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-DOT#token-issuance"},"active issuance"),")\nthat could be made in the system. In case of ",(0,r.kt)("em",{parentName:"li"},"split")," votes, only ",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"abstain")," will count.")),(0,r.kt)("admonition",{title:"Nay votes are not counted towards Support",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Support is a measure of voters who turned out either in favor of the referenda and who consciously\nabstained from it. Support does not include ",(0,r.kt)("em",{parentName:"p"},"nay")," votes. This avoids edge situations where ",(0,r.kt)("em",{parentName:"p"},"nay"),"\nvotes could push a referendum into confirming state. For example, imagine current approval is high\n(near 100%, way above the approval curve), and current support is just below the support curve. A\n",(0,r.kt)("em",{parentName:"p"},"nay")," could bump support above the support curve but not reduce approval below the approval curve.\nTherefore someone voting against a proposal would make it pass. Hence, a decrease in % of current\napproval through new votes does not directly translate into increasing support because Support needs\nto consider ",(0,r.kt)("em",{parentName:"p"},"nay")," votes.")),(0,r.kt)("p",null,"The figure above shows the followings:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Even if the approval threshold is reached (i.e. % of current approval is greater than the approval\ncurve), the proposal only enters the confirmation period once the support threshold is also\nreached (i.e. % current support is greater than the underlying support curve)."),(0,r.kt)("li",{parentName:"ul"},"If the referendum meets the criteria for the confirmation period, then the proposal is approved\nand scheduled for enactment. The Enactment Period can be specified when the referendum is proposed\nbut is also subject to a minimum value based on the Track. More powerful Tracks enforce a larger\nEnactment Period to ensure the network has ample time to prepare for any changes the proposal may\nbring."),(0,r.kt)("li",{parentName:"ul"},"A referendum may exit the confirmation period when the thresholds are no longer met, due to new\n",(0,r.kt)("em",{parentName:"li"},"Nay")," votes or a change of existing ",(0,r.kt)("em",{parentName:"li"},"Aye")," or ",(0,r.kt)("em",{parentName:"li"},"Abstain")," votes to ",(0,r.kt)("em",{parentName:"li"},"Nay")," . Each time it exits, the\nconfirmation period resets. For example, if the confirmation period is 20 minutes and a referendum\nenters it just for 5 min, the next time it enters, it must stay for 20 minutes (not 15 minutes)."),(0,r.kt)("li",{parentName:"ul"},"During the decision period, if a referendum fails to meet the approval and support thresholds for\nthe duration of the track-specific confirmation period, it fails and does not go to the enactment\nperiod (it may have to be resubmitted, see below)."),(0,r.kt)("li",{parentName:"ul"},"The current approval must be above 50% for a referendum to pass, and the approval curve never goes\nbelow 50%.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-curves-pass",src:n(55745).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"Note that support may not increase monotonically as shown in the figure, as people might switch\nvotes."),(0,r.kt)("p",null,"Different Origins' tracks have different Confirmation Periods and requirements for approval and\nsupport. For additional details on the various origins and tracks, check out\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"this table"),". Configuring the amount of\nsupport and overall approval required for it to pass is now possible. With proposals that use less\nprivileged origins, it is far more reasonable to drop the required support to a more realistic\namount earlier than those which use highly privileged classes such as ",(0,r.kt)("inlineCode",{parentName:"p"},"Root"),". Classes with more\nsignificance can be made to require higher approval early on, to avoid controversy."),(0,r.kt)("h3",{id:"enactment"},"Enactment"),(0,r.kt)("admonition",{title:"Enactment in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#enactment"},"this page")," for more information about enactment in Governance\nv1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, the proposer suggests the enactment period, but there are also minimums set for\neach Origin Track. For example, root Origin approvals require a more extended period because of the\nimportance of the changes they bring to the network."),(0,r.kt)("h2",{id:"voting-on-a-referendum"},"Voting on a Referendum"),(0,r.kt)("p",null,"In Governance V1, voters could cast only an ",(0,r.kt)("em",{parentName:"p"},"aye")," or ",(0,r.kt)("em",{parentName:"p"},"nay")," vote. In Polkadot OpenGov, voters can\nadditionally cast a ",(0,r.kt)("em",{parentName:"p"},"abstain")," and ",(0,r.kt)("em",{parentName:"p"},"split")," votes.\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#voting-on-referenda"},"Vote splitting")," allows voters to allocate\ndifferent votes for ",(0,r.kt)("em",{parentName:"p"},"aye"),", ",(0,r.kt)("em",{parentName:"p"},"nay"),", and ",(0,r.kt)("em",{parentName:"p"},"abstain"),"."),(0,r.kt)("admonition",{title:"Only the last vote counts",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Voting a second time replaces your original vote, e.g. voting with 10\nDOT, then a second extrinsic to vote with 5\nDOT, means that you are voting with 5\nDOT, not 10\nDOT.")),(0,r.kt)("p",null,"Note that to successfully cast votes you need to have the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#existential-deposit-and-reaping"},"existential deposit")," and some additional funds\nto pay for transaction fees."),(0,r.kt)("h3",{id:"voluntary-locking"},"Voluntary Locking"),(0,r.kt)("p",null,"Polkadot utilizes an idea called voluntary\nlocking that allows token holders to increase their voting power by declaring how long they are\nwilling to lock up their tokens; hence, the number of votes for each token holder will be calculated\nby the following formula:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"votes = tokens * conviction_multiplier\n")),(0,r.kt)("p",null,"The conviction multiplier increases the vote multiplier by one every time the number of lock periods\ndouble."),(0,r.kt)(m,{mdxType:"VLTable"}),(0,r.kt)("p",null,'The maximum number of "doublings" of the lock period is set to 6 (and thus 32 lock periods in\ntotal), and one lock period equals\n',(0,r.kt)(l.Z,{network:"kusama",path:"consts.convictionVoting.voteLockingPeriod",defaultValue:100800,filter:"blocksToDays",mdxType:"RPC"}),"\n","\ndays. For additional information regarding the timeline of governance events, check out the\ngovernance section on the\n",(0,r.kt)("a",{parentName:"p",href:"maintain-polkadot-parameters/#governance"},"Polkadot Parameters page"),"","."),(0,r.kt)("admonition",{title:"do votes stack?",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can use the same number of tokens to vote on different referenda. Votes with conviction do not\nstack. If you voted with 5 DOT on Referenda A, B\nand C with 2x conviction you would have 10 votes on all those referenda and 5\nDOT locked up only for the 2x conviction period\n(i.e. two weeks), with the unlocking\ncountdown starting when the last referendum you voted on ends (assuming you are on the winning\nside). If you voted with conviction on referendum and then a week later voted on another one with\nthe same conviction, the lock on your DOT will be\nextended by a week (always assuming you are on the winning side).")),(0,r.kt)("admonition",{title:"Staked tokens can be used in governance",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"While a token is locked, you can still use it for voting and ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking"),". You are\nonly prohibited from transferring these tokens to another account.")),(0,r.kt)("p",null,'Votes are always "counted" at the same time (at the end of the voting period), no matter for how\nlong the tokens are locked.'),(0,r.kt)("p",null,"See below an example that shows how voluntary locking works."),(0,r.kt)("p",null,"Peter: Votes ",(0,r.kt)("inlineCode",{parentName:"p"},"No")," with\n10 DOT for a 32-week lock period\n=> 10 x 6 = 60 Votes"),(0,r.kt)("p",null,"Logan: Votes ",(0,r.kt)("inlineCode",{parentName:"p"},"Yes")," with\n20 DOT for one week lock period =>\n20 x 1 = 20 Votes"),(0,r.kt)("p",null,"Kevin: Votes ",(0,r.kt)("inlineCode",{parentName:"p"},"Yes")," with\n15 DOT for a 2-week lock period\n=> 15 x 2 = 30 Votes"),(0,r.kt)("p",null,"Even though combined both Logan and Kevin vote with more\nDOT than Peter, the lock period for both of them\nis less than Peter, leading to their voting power counting as less."),(0,r.kt)("admonition",{title:"Conviction Voting Locks created during Gov 1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Conviction voting locks in Governance v1 will not be carried over to OpenGov. Voting with conviction\nin OpenGov will create a new lock (as this will use the ",(0,r.kt)("inlineCode",{parentName:"p"},"convictionVoting")," pallet), while any\nexisting lock under Governance v1 (using the deprecated ",(0,r.kt)("inlineCode",{parentName:"p"},"democracy")," pallet) will be left to expire.\nDelegations under Governance v1 will need to be re-issued under OpenGov.")),(0,r.kt)("h3",{id:"multirole-delegation"},"Multirole Delegation"),(0,r.kt)("p",null,"Polkadot OpenGov builds on the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#delegations"},"vote delegation feature from Governance v1")," where a voter can\ndelegate their voting power to another voter. It does so by introducing a feature known as\n",(0,r.kt)("strong",{parentName:"p"},"multirole delegation"),", where voters can specify a different delegate for every class of\nreferendum in the system. Delegation can be done per track, and accounts can choose to select\ndifferent delegates (or no delegation) for each track."),(0,r.kt)("p",null,"For example, a voter could delegate one entity for managing a less potent referenda class, choose a\ndifferent delegate for another class with more powerful consequences and still retain full voting\npower over any remaining classes."),(0,r.kt)("admonition",{title:"Delegate your votes",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In Polkadot OpenGov you can delegate your votes to different entities, who will vote on your behalf.\nYou can delegate your votes using the\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},(0,r.kt)("strong",{parentName:"a"},"Polkadot Delegation Dashboard")),". See\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},"this video tutorial")," to learn about the features of\nthe dashboard."),(0,r.kt)("p",{parentName:"admonition"},"If you are staking directly and not through a nomination pool, you can use bonded tokens for voting.\nNote that if you are voting with conviction, your tokens will have a democracy lock in addition to\nthe staking lock. For more information about locks, see\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts/#unlocking-locks"},"this page"),"."),(0,r.kt)("p",{parentName:"admonition"},"Democracy locks created through ",(0,r.kt)("a",{parentName:"p",href:"#voluntary-locking"},"conviction voting")," start the unlocking period\nafter a referendum ends, provided you voted with the winning side. In the case of delegations, the\nunlocking period countdown begins after the account undelegates. There can be different scenarios:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"if the account delegated votes to one delegate, then after undelegating, there will be one\nunlocking period with length dependent on the conviction multiplier."),(0,r.kt)("li",{parentName:"ul"},"if the account delegated votes to different delegates using different convictions, then after\nundelegating those delegates, there will be different unlocking periods with lengths dependent on\nthe conviction multipliers."))),(0,r.kt)("p",null,"It is worth noting that a user delegating their voting power does not imply that the delegate will\nhave control over the funds of the delegating user's account. That delegate's account can vote with\na user's voting power but won't be able to transfer balances, nominate a different set of\nvalidators, or execute any call other than voting on the tracks defined by the user."),(0,r.kt)("p",null,"The goal of delegations is to ensure the required support for proposals to be enacted is reached\nwhile keeping the overall design censorship-free. Also, voters might not have the technical\nknowledge to judge some referenda or might not have the time to read all referenda. Delegations\nallow voters to participate in OpenGov hands-free by delegating their voting power to trusted\nentities."),(0,r.kt)("p",null,"For a step-by-step outline of how to delegate voting power in Polkadot OpenGov, check out the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#delegations"},"Delegating Voting Power")," section on the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"Polkadot OpenGov Guides"),"."),(0,r.kt)("h2",{id:"the-polkadot-technical-fellowship"},"The Polkadot Technical Fellowship"),(0,r.kt)("admonition",{title:"From Technical Committee to the Technical Fellowship",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Technical Fellowship is a collection of Substrate experts. This fellowship was\nestablished in 2022. In Polkadot OpenGov, this fellowship replaces the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#technical-committee"},"Technical Committee")," in Governance v1, and will serve\nboth the Polkadot and Kusama networks."),(0,r.kt)("p",{parentName:"admonition"},"For more information about the Fellowship see the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/manifesto/blob/0c3df46d76625980b8b48742cb86f4d8fa6dda8d/manifesto.pdf"},"Fellowship Manifesto"),".")),(0,r.kt)("p",null,"The Technical Fellowship is a mostly self-governing expert body with a primary goal of representing\nhumans who embody and contain the technical knowledge base of the Kusama and/or Polkadot networks\nand protocols. This is accomplished by associating a rank with members to categorize the degree to\nwhich the system expects their opinion to be well-informed, of a sound technical basis, and in line\nwith the interests of Polkadot and/or Kusama."),(0,r.kt)("p",null,"Unlike the Technical Committee in Governance V1, the Fellowship is designed to be far broader in\nmembership (i.e. to work well with even tens of thousands of members) and with far lower barriers to\nentry (both in terms of administrative process flow and expectations of expertise)."),(0,r.kt)("p",null,"The mechanism by which the Fellowship votes is the same as what is used for Polkadot and Kusama\nstakeholder voting for a proposed referendum. Members of the Fellowship can vote on any given\nFellowship proposal and the aggregated opinion of the members (weighted by their rank) constitutes\nthe Fellowship's considered opinion."),(0,r.kt)("p",null,"The Polkadot Technical Fellowship resides on the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-collectives-rpc.polkadot.io#/fellowship/referenda"},"Collectives"),"\nparachain and maintains the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows"},"Polkadot Fellows")," repository. The\nfellowship also has its own governance model with multiple tracks with approval and support\nparameters, where the votes are weighted by the rank of the member.",(0,r.kt)("br",{parentName:"p"}),"\n","The fellowship governance is primarily used for its membership management,\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/RFCs"},"approving RFCs")," and whitelisting Polkadot OpenGov\nproposals."),(0,r.kt)("p",null,"",""),(0,r.kt)("h3",{id:"ranking-system"},"Ranking System"),(0,r.kt)("p",null,"To prevent a small group of participants from gaining effective control over the network, this\nsystem will adhere to three main principles:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The Fellowship must never have hard power over the network: it cannot change the parameters,\nconduct rescues or move assets. Their only power in governance is reducing the effective timeline\non which a referendum takes place through ",(0,r.kt)("a",{parentName:"li",href:"#whitelisting"},"whitelisting"),"."),(0,r.kt)("li",{parentName:"ul"},"The Fellowship weights those with a higher rank more in the aggregate opinion. However, the weight\nshould not be so high as to make a small number of higher members\u2019 opinions be insurmountable\ncompared to a coherent opinion from lower-ranked membership."),(0,r.kt)("li",{parentName:"ul"},"The Fellowship should be designed to grow and develop its membership, aggregate levels of\nexpertise and ensure that its overall decision-making capacity strengthens over time.")),(0,r.kt)("p",null,"To support these conditions, the Fellowship has a\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/manifesto"},"manifesto")," that outlines the requirements and\nexpectations for individuals to attain and retain any given rank. Higher ranks can vote and promote\nlower ranks based on this ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/manifesto"},"manifesto"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Demotion")," occurs automatically after a given period has elapsed, and the member is unable to\ndefend their position to their peers."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Suspension")," can happen only through a referendum, which ensures that the Fellowship's bias alone\ndoes not necessarily result in expulsion."),(0,r.kt)("p",null,"To prevent the Fellowship from becoming a cabal (popularity with Fellowship peers alone should not\nbe enough to gain access to a top rank), gaining access to the top tiers of the ranks will require a\nreferendum."),(0,r.kt)("h3",{id:"whitelisting"},"Whitelisting"),(0,r.kt)("p",null,'Polkadot OpenGov allows the Fellowship to authorize a new origin (known as "Whitelisted-Caller") to\nexecute with Root-level privileges for calls that have been approved by the Fellowship (currently\nonly level-three fellows and above can vote for whitelist calls).'),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_whitelist/"},"Whitelist")," pallet allows one\nOrigin to escalate the privilege level of another Origin for a certain operation. The pallet\nverifies two things:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The origin of the escalation is the Whitelisted-Root (i.e. that the referendum passed on this\ntrack), and"),(0,r.kt)("li",{parentName:"ul"},"The whitelist contains the given proposal (in the configuration of Polkadot OpenGov, it gets there\nvia a separate Fellowship referendum).")),(0,r.kt)("p",null,"If both conditions are true, the operation executes with Root-level privileges."),(0,r.kt)("p",null,"This system enables a new parallel Track (Whitelisted-Caller), whose parameters have less\nrestrictive passing parameters than Root in the short term. Through an open and transparent process,\na body of global experts on the Polkadot\nprotocol have determined that the action is both safe and time-critical."),(0,r.kt)("admonition",{title:"Submitting Whitelisted Proposals",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For more information about how to submit a whitelisted proposal see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#submitting-a-referendum-on-the-whitelisted-caller-track"},"dedicated advanced how-to guides"),".")),(0,r.kt)("h3",{id:"becoming-a-polkadot-technical-fellowship-member"},"Becoming a Polkadot Technical Fellowship Member"),(0,r.kt)("p",null,'Currently, the only way to become a fellowship member is through a referenda. To get added as a\nmember of "Rank 1", an existing member of the fellowship needs to submit a referendum with the\npreimage of a batch call that has ',(0,r.kt)("inlineCode",{parentName:"p"},"fellowshipCollective.addMember")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"fellowshipCollective.promoteMember"),' on "2/Proficients" track. On Polkadot-JS UI for Polkadot\nCollectives, navigate to Governance > Fellowship > Referenda and click on "Add Preimage". This\npreimage can be submitted by anyone.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"fellowship-add-promote-member-preimage",src:n(68937).Z,width:"2156",height:"1746"})),(0,r.kt)("p",null,'After the preimage is successfully noted, navigate to Governance > Fellowship > Referenda and click\non "Submit Proposal" (This button is active on the UI only if you have an account that belongs to\nthe Fellowship). Choose the appropriate track and the origin, and enter the preimage hash of the\nbatch call that adds and promotes the member.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"fellowship-add-promote-member-proposal",src:n(16046).Z,width:"2150",height:"1492"})),(0,r.kt)("p",null,'After the referendum is successfully executed, the member is added to the fellowship with "rank 1".\nFor example, check the ',(0,r.kt)("a",{parentName:"p",href:"https://collectives.subsquare.io/fellowship/referenda/23"},"Referenda 23")," on\nthe Collectives parachain. If a member has to be added and promoted to \u201crank 5\u201d, the proposal has to\nbe submitted through track \u201c6/Senior Experts\u201d (Always a track with a rank higher). For example,\ncheck the ",(0,r.kt)("a",{parentName:"p",href:"https://collectives.subsquare.io/fellowship/referenda/25"},"Referenda 25")," on the\nCollectives parachain."),(0,r.kt)("p",null,"Future plans include that public members can apply to become a Fellowship candidate by placing a\nsmall deposit (which will be returned once they become members). Their candidacy will go through a\nreferendum to be approved to become a member."),(0,r.kt)("h2",{id:"resources"},"Resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate/tree/master/frame/democracy/src"},"Democracy Pallet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/gov2-polkadots-next-generation-of-decentralised-governance-4d9ef657d11b"},"Governance v2")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Kusama-Direction:parity.io"},"Kusama Direction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.polkassembly.io/"},"PolkAssembly"))),(0,r.kt)("hr",null),(0,r.kt)("admonition",{title:"Polkadot-JS Guides",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you are an advanced user, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"Polkadot-JS guides about OpenGov"),".")))}N.isMDXComponent=!0},68937:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/fellowship-add-member-preimage-90d52688c691ac21a26fd067a3ba6524.png"},16046:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/fellowship-add-member-proposal-5d832ecf298a03c8de37b001d43be34c.png"},55745:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-curves-nopass-27f6968907aeb88e87069d29ca062568.png"},65993:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-curves-pass-73b6c7d1849e26082880cd7d629a633e.png"},40176:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-overview-a56ef29a3a173f9dc2b60a9008dcfc1b.png"},1671:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-timeline-26e5a1fae159676ab5052a4fd7416be5.png"},67506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-track-capacity-a1e00e5bd7961ea13d38f79cf6fa4b9c.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/2f3b630e.f438bce2.js b/assets/js/2f3b630e.f438bce2.js deleted file mode 100644 index 3438728fba91..000000000000 --- a/assets/js/2f3b630e.f438bce2.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[9226],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>h});var a=n(74165),o=n(15861),i=n(67294),r=n(87152),l=n(30967),s=n(67425);function p(e,t,n){return d.apply(this,arguments)}function d(){return(d=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var i,s,p,d,c;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,s=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return p=new r.U(i),e.next=21,l.G.create({provider:p});case 21:d=e.sent,(c=n.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=c[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return s=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return s=(s=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+n);case 35:return e.abrupt("return",s);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function c(e,t,n,a){switch(t){case"humanReadable":(0,s.HumanReadable)(e,n,a);break;case"precise":(0,s.Precise)(e,n,a);break;case"blocksToDays":(0,s.BlocksToDays)(e,a);break;case"erasToDays":(0,s.ErasToDays)(e,a,n);break;case"percentage":(0,s.Percentage)(e,a);break;case"permillToPercent":(0,s.PermillToPercent)(e,a);break;case"arrayLength":(0,s.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const h=function(e){var t=e.network,n=e.path,r=e.defaultValue,l=e.filter,s=void 0===l?void 0:l,d=(0,i.useState)(""),h=d[0],m=d[1];return t=t.toLowerCase(),(0,i.useEffect)((function(){void 0!==s?c(r.toString(),s,t,m):m(r.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,p(t,n,m);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==s?c(o,s,t,m):m(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(l){console.log(l)}}}),[]),h}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,l){var s=void 0;if(r===t||r===o)s=3;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=6}e=parseFloat(e),l((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(s)+" "+i[r].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/i[t].precision+" "+i[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var l=void 0;if(r===t||r===o)l=1;else{if(r!==n&&r!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=4}i((e/=l).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},42569:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>v,contentTitle:()=>g,default:()=>N,frontMatter:()=>k,metadata:()=>f,toc:()=>w});var a=n(87462),o=n(63366),i=n(67294),r=n(3905),l=n(47940),s=i.createElement("table",null,i.createElement("tbody",null,i.createElement("tr",null,i.createElement("th",null,"Lock Periods"),i.createElement("th",null,"Vote Multiplier"),i.createElement("th",null,"Length in Days")),i.createElement("tr",null,i.createElement("td",null,"0"),i.createElement("td",null,"0.1"),i.createElement("td",{id:"p0"})),i.createElement("tr",null,i.createElement("td",null,"1"),i.createElement("td",null,"1"),i.createElement("td",{id:"p1"})),i.createElement("tr",null,i.createElement("td",null,"2"),i.createElement("td",null,"2"),i.createElement("td",{id:"p2"})),i.createElement("tr",null,i.createElement("td",null,"4"),i.createElement("td",null,"3"),i.createElement("td",{id:"p4"})),i.createElement("tr",null,i.createElement("td",null,"8"),i.createElement("td",null,"4"),i.createElement("td",{id:"p8"})),i.createElement("tr",null,i.createElement("td",null,"16"),i.createElement("td",null,"5"),i.createElement("td",{id:"p16"})),i.createElement("tr",null,i.createElement("td",null,"32"),i.createElement("td",null,"6"),i.createElement("td",{id:"p32"})))),p=["p0","p1","p2","p4","p8","p16","p32"],d={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224},c={p0:0,p1:7,p2:14,p4:28,p8:56,p16:112,p32:224};function h(e){p.forEach((function(t){var n=document.getElementById(t);"polkadot"===e?n.innerText=d[t]:"kusama"===e&&(n.innerText=c[t])}))}const m=function(){var e=(0,i.useState)("");return e[0],e[1],(0,i.useEffect)((function(){var e=document.title;"Governance V1 \xb7 Polkadot Wiki"===e||"Introduction to Polkadot OpenGov \xb7 Polkadot Wiki"===e?h("polkadot"):"Governance V1 \xb7 Guide"===e||"Introduction to Polkadot OpenGov \xb7 Guide"===e?h("kusama"):console.log("Unknown wiki/guide type")}),[]),s};var u=["components"],k={id:"learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",sidebar_label:"Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-polkadot-opengov"},g=void 0,f={unversionedId:"learn/learn-polkadot-opengov",id:"learn/learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",source:"@site/../docs/learn/learn-polkadot-opengov.md",sourceDirName:"learn",slug:"/learn-polkadot-opengov",permalink:"/docs/learn-polkadot-opengov",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-polkadot-opengov.md",tags:[],version:"current",lastUpdatedBy:"Radha",lastUpdatedAt:1705001982,formattedLastUpdatedAt:"Jan 11, 2024",frontMatter:{id:"learn-polkadot-opengov",title:"Introduction to Polkadot OpenGov",sidebar_label:"Polkadot OpenGov",description:"Polkadot\u2019s Latest Model for Decentralized Governance.",keywords:["governance","referenda","proposal","voting","endorse"],slug:"../learn-polkadot-opengov"},sidebar:"docs",previous:{title:"Polkadot OpenGov",permalink:"/docs/learn-polkadot-opengov-index"},next:{title:"OpenGov Origins",permalink:"/docs/learn-polkadot-opengov-origins"}},v={},w=[{value:"Premise",id:"premise",level:2},{value:"Summary",id:"summary",level:2},{value:"Gov1 vs. Polkadot OpenGov",id:"gov1-vs-polkadot-opengov",level:2},{value:"Proposals",id:"proposals",level:2},{value:"Cancelling and Blacklisting",id:"cancelling-and-blacklisting",level:3},{value:"Referenda",id:"referenda",level:2},{value:"Referenda Timeline",id:"referenda-timeline",level:3},{value:"Origins and Tracks",id:"origins-and-tracks",level:3},{value:"Approval and Support",id:"approval-and-support",level:3},{value:"Enactment",id:"enactment",level:3},{value:"Voting on a Referendum",id:"voting-on-a-referendum",level:2},{value:"Voluntary Locking",id:"voluntary-locking",level:3},{value:"Multirole Delegation",id:"multirole-delegation",level:3},{value:"The Polkadot Technical Fellowship",id:"the-polkadot-technical-fellowship",level:2},{value:"Ranking System",id:"ranking-system",level:3},{value:"Whitelisting",id:"whitelisting",level:3},{value:"Becoming a Polkadot Technical Fellowship Member",id:"becoming-a-polkadot-technical-fellowship-member",level:3},{value:"Resources",id:"resources",level:2}],b={toc:w},y="wrapper";function N(e){var t=e.components,i=(0,o.Z)(e,u);return(0,r.kt)(y,(0,a.Z)({},b,i,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"The content in this document is subject to change",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"The governance protocol has already undergone iterations (see\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance"},"Governance V1"),"). Governance is a constantly evolving protocol at this stage\nin its lifecycle."),(0,r.kt)("p",{parentName:"admonition"},"For technical information about Polkadot OpenGov and how to interact with it, please refer to this\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"dedicated Wiki page"),"."),(0,r.kt)("p",{parentName:"admonition"},"For additional support about Polkadot OpenGov see the\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/65000105211"},"dedicated support pages"),".")),(0,r.kt)("admonition",{title:"Polkadot Delegation Dashboard",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See the video tutorial below to easily delegate your votes to somebody else using the\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Polkadot Delegation Dashboard"),"."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/RapBYZc5ZPo/0.jpg",alt:"Delegation Dashboard Tutorial"}))),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("strong",{parentName:"p"},"If you become a nomination pool member or a pool admin, you cannot participate in Governance with\nthe bonded tokens in the pool, as they are held in a\n",(0,r.kt)("a",{parentName:"strong",href:"/docs/learn-account-advanced#system-accounts"},"system account"),"."))),(0,r.kt)("p",null,"Polkadot uses a sophisticated governance\nmechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled\nstakeholders. The stated goal is to ensure that the majority of the stake can always command the\nnetwork."),(0,r.kt)("p",null,"Polkadot brings together various novel\nmechanisms, including an amorphous (abstract) form of state-transition function stored on-chain\ndefined in a platform-agnostic language (i.e. ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-wasm"},"WebAssembly"),"), and several on-chain\nvoting mechanisms such as referenda and batch approval voting. All changes to the protocol must be\nagreed upon by stake-weighted referenda."),(0,r.kt)("h2",{id:"premise"},"Premise"),(0,r.kt)("p",null,"Polkadot's first governance system\n(",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance"},"Governance V1"),") included three main components."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#technical-committee"},"Technical Committee"),": A technocratic committee to\nmanage upgrade timelines."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#council"},"Council"),': An approval-voted, elected executive "government" to\nmanage parameters, admin, and spending proposals.'),(0,r.kt)("li",{parentName:"ul"},"The Public: All token holders.")),(0,r.kt)("p",null,"Over the first few years of operation, Governance V1 ensured the appropriate usage of treasury funds\nand enabled timely upgrades and fixes. Like most early technologies, protocols must evolve as they\nmature to improve their shortcomings and keep up with modern advancements. In Governance V1, all\nreferenda carried the same weight as only one referendum could be voted on at a time (except for\nemergency proposals), and the voting period could last multiple weeks. Also, an\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#alternating-voting-timetable"},"alternating voting timetable")," allowed to vote\neither for a public referendum or a council motion every\n28 days. This resulted in the system favoring\ncareful consideration of very few proposals instead of broad consideration of many."),(0,r.kt)("p",null,"Polkadot OpenGov changes how the practical means of day-to-day decisions are made, making the\nrepercussions of referenda better scoped and agile to increase the number of collective decisions\nthe system can make at any given time."),(0,r.kt)("p",null,"The following content is focused on what the new Polkadot OpenGov version brings to the governance\non Polkadot, and on the main differences with\nprevious governance versions. We recommend learning about ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance"},"Governance v1")," to\nbetter understand the need for and the direction of Polkadot OpenGov."),(0,r.kt)("h2",{id:"summary"},"Summary"),(0,r.kt)("p",null,"In Governance v1, active token holders (public) and the Council together administrated network's\nupgrade decisions. Whether the public or the council initiated the proposal, it would eventually\nhave to go through a referendum to let all holders (weighted by stake and conviction) make the\ndecision."),(0,r.kt)("p",null,"The Council fulfilled its role as the representative of the public, guardian of the treasury and\ninitiator of legislation, but it was often seen as a centralized entity. To further decentralize\nPolkadot, Polkadot OpenGov proposes the\nfollowing main changes:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Migrating all responsibilities of the Council to the public via a direct democracy voting system."),(0,r.kt)("li",{parentName:"ul"},"Dissolving the current ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#council"},"Council")," collective"),(0,r.kt)("li",{parentName:"ul"},"Allowing users to delegate voting power in more ways to community members"),(0,r.kt)("li",{parentName:"ul"},"Dissolving the ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-governance#technical-committee"},"Technical Committee")," and establishing\nthe broader ",(0,r.kt)("a",{parentName:"li",href:"#the-technical-fellowship"},"Polkadot Technical Fellowship"))),(0,r.kt)("p",null,"The figure below shows an overview of Polkadot OpenGov's structure."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#summary"},"this page")," for a comparison with the structure of Governance V1.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-overview",src:n(40176).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"In Polkadot OpenGov, all the proposals are initiated by the public. The proposal will enter a\nLead-in period (for more information, see ",(0,r.kt)("a",{parentName:"p",href:"#referenda-timeline"},"Referenda Timeline"),"), after which it\nwill follow a specific ",(0,r.kt)("a",{parentName:"p",href:"#origins-and-tracks"},"Track")," which has a dedicated Origin. There are\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"15 Origins"),", each with a different\ntrack. The origins and tracks parameters are preset values that set the duration of a referendum as\nwell as how many referenda can be voted on simultaneously. For example, a treasury proposal can now\nbe submitted in different tracks depending on the amount requested. A proposal for a small tip will\nneed to be submitted in the Small Tipper track, while a proposal requiring substantial funds will\nneed to be submitted to the Medium or Big Spender track."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"#the-technical-fellowship"},"Polkadot Technical Fellowship")," can decide to\n",(0,r.kt)("a",{parentName:"p",href:"#whitelisting"},"whitelist")," a proposal that will be enacted through the Whitelist Caller origin.\nThose proposals will have a shorter Lead-in, Confirmation, and Enactment period when compared to the\nRoot Origin track."),(0,r.kt)("p",null,"Each track has its own preset ",(0,r.kt)("a",{parentName:"p",href:"#approval-and-support"},"Approval and Support")," curves which are based\non the origin's privileges. When both the approval and support criteria are satisfied for a specific\nperiod (called the confirmation period), the referenda passes and will be executed after the\nenactment period."),(0,r.kt)("p",null,"All referenda within each track and across tracks can be voted on simultaneously (assuming track\nmaximum capacity is not reached)."),(0,r.kt)("p",null,"Polkadot OpenGov also comes with multi-role delegations where the token holder can assign voting\npower on different tracks to different entities who are experts in judging the referenda submitted\nto those tracks. For example, suppose a token holder does not have the technical background to\nconsider the merits and vote on the referenda submitted to the Root track. In that case, they can\ndelegate their voting power just for the Root track to a trusted expert who (according to them) acts\nin the best interest of the network protocol. In this way, token holders do not need to be\nup-to-date with governance matters and can still make their votes count through delegates."),(0,r.kt)("admonition",{title:"Delegation Dashboard",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To easily delegate your votes you can use the\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Polkadot Delegation Dashboard"),". See\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},"this video tutorial")," to know more about the dashboard\nand learn how to use it.")),(0,r.kt)("h2",{id:"gov1-vs-polkadot-opengov"},"Gov1 vs. Polkadot OpenGov"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Governance V1"),(0,r.kt)("th",{parentName:"tr",align:null},"Polkadot OpenGov"),(0,r.kt)("th",{parentName:"tr",align:null},"Polkadot OpenGov Benefit"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Includes the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#council"},"Council"),", the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#technical-committee"},"Technical Committee"),", and the Public (i.e. token holders)."),(0,r.kt)("td",{parentName:"tr",align:null},"Includes the Public and the ",(0,r.kt)("a",{parentName:"td",href:"#the-technical-fellowship"},"Technical Fellowship"),"."),(0,r.kt)("td",{parentName:"tr",align:null},"Simpler and more decentralized structure.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Referenda executed only from one origin (Root). Referenda in this origin must be carefully scrutinized. Therefore, there is only one track (i.e. only one referendum at a time can be executed)."),(0,r.kt)("td",{parentName:"tr",align:null},"Referenda executed from ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"multiple origins"),", each with a different track that shapes proposals\u2019 timelines. Depending on the origin, multiple referenda within the same track are possible."),(0,r.kt)("td",{parentName:"tr",align:null},"Possibility to categorize proposals (based on importance and urgency) and execute them simultaneously within and between origin tracks.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Proposals can be submitted by either the Council or the Public."),(0,r.kt)("td",{parentName:"tr",align:null},"The public submits proposals."),(0,r.kt)("td",{parentName:"tr",align:null},"More democratic.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Uses ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#adaptive-quorum-biasing"},"Adaptive Quorum Biasing")," to define the approval threshold based on turnout. Given the same turnout, council-initiated referenda require fewer Aye votes to pass compared to public referenda."),(0,r.kt)("td",{parentName:"tr",align:null},"Uses origin-specific approval and support curves defining the amount of approval and support (i.e. turnout) needed as a function of time. The same curves are applied to all referenda within the same origin track."),(0,r.kt)("td",{parentName:"tr",align:null},"Referenda timeline depends on the origin and not on who submitted the proposal (i.e. Council or Public). This is a more democratic and equalitarian system.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Uses ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#alternating-voting-timetable"},"alternating voting timetable")," allowing voters to cast votes for either council or public referenda every 28 eras."),(0,r.kt)("td",{parentName:"tr",align:null},"Multiple referenda can be voted at the same time."),(0,r.kt)("td",{parentName:"tr",align:null},"More flexible and agile governance system.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Except for emergency proposals, all referenda have fixed voting and enactment periods of 28 eras."),(0,r.kt)("td",{parentName:"tr",align:null},"Periods' length is customizable and has pre-defined limits for each origin. The same limits apply to all tracks with the same origin. For example, the track in the origin Root will be longer than the track within the Small Tipper origin."),(0,r.kt)("td",{parentName:"tr",align:null},"Referenda\u2019s timeline is tailored to their importance and urgency. Flexible enactment period based on origin.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Emergency proposals turned referenda can be simultaneously voted on and executed with other referenda and have shorter enactment periods. They must be proposed by the Technical Committee and approved by the Council."),(0,r.kt)("td",{parentName:"tr",align:null},"No emergency proposals. The Technical Fellowship can whitelist proposals that will have their origin with shorter lead-in, confirmation, and enactment periods."),(0,r.kt)("td",{parentName:"tr",align:null},"The Technical Fellowship is a more decentralized entity when compared to the Technical Committee. Whitelisting a proposal requires a majority of approval from the fellowship.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Only the ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-governance#endorsing-proposals"},"most-endorsed proposal")," is able to transit from Launch to Voting period. The time for the transition is indeterminate, and (with no possibility of canceling endorsements) proposers and endorsers might wait a long time before a referendum is tabled, and getting their deposits back."),(0,r.kt)("td",{parentName:"tr",align:null},"All proposals will eventually be voted on (given track capacity and deposit are met and the Lead-in period has ended)."),(0,r.kt)("td",{parentName:"tr",align:null},"It allows all proposals to get a chance to be voted on in a timely predictive manner.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Only ",(0,r.kt)("em",{parentName:"td"},"aye")," or ",(0,r.kt)("em",{parentName:"td"},"nay")," votes possible."),(0,r.kt)("td",{parentName:"tr",align:null},"Voters can have the additional voting options of abstaining or splitting votes."),(0,r.kt)("td",{parentName:"tr",align:null},"More ways to engage in voting and increase turnout.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Voters can decide to delegate votes to another account."),(0,r.kt)("td",{parentName:"tr",align:null},"Voters can use ",(0,r.kt)("a",{parentName:"td",href:"#multirole-delegation"},"multirole delegations")," and delegate votes to different accounts depending on origins."),(0,r.kt)("td",{parentName:"tr",align:null},"More agile delegations tailored by expertise.")))),(0,r.kt)("h2",{id:"proposals"},"Proposals"),(0,r.kt)("admonition",{title:"Starting a proposal in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#proposals"},"this page")," for more information about starting referenda in\nGovernance v1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, anyone can start a referendum at any time and do so as often as they wish.\nPrevious features were expanded and improved, most notably\n",(0,r.kt)("a",{parentName:"p",href:"#origins-and-tracks"},(0,r.kt)("strong",{parentName:"a"},"Origins and Tracks"))," help aid in the flow and processing of the submitted\nreferenda."),(0,r.kt)("h3",{id:"cancelling-and-blacklisting"},"Cancelling and Blacklisting"),(0,r.kt)("admonition",{title:"Cancelling Referenda in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#cancelling-proposals"},"this page")," for more information about cancelling\nreferenda in Governance v1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, there is a special operation called ",(0,r.kt)("strong",{parentName:"p"},"Cancellation")," for intervening with a\nproposal already being voted on. The operation will immediately reject an ongoing referendum\nregardless of its status. There is also a provision to ensure the deposit of the proposer is slashed\nif the proposal is malicious or spam."),(0,r.kt)("p",null,"Cancellation is a governance operation the network must vote on to be executed. Cancellation comes\nwith ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#referendum-canceller"},"its own Origin and Track")," which has\na low lead-time and Approval/Support curves with slightly sharper reductions in their thresholds for\npassing, given that it is invoked with a sense of urgency."),(0,r.kt)("p",null,"For more information about how to cancel a referendum see the\n",(0,r.kt)("a",{parentName:"p",href:"./learn-guides-polkadot-opengov#cancel-or-kill-a-referendum"},"advanced how-to guides"),"."),(0,r.kt)("admonition",{title:"Blacklisting",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Blacklisting referenda in Polkadot OpenGov is\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#blacklisting-proposals"},"the same as in Governance v1"),".")),(0,r.kt)("h2",{id:"referenda"},"Referenda"),(0,r.kt)("admonition",{title:"Public and Council Referenda in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"With the Council's dissolution, ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#council-referenda"},"council referenda")," are no\nlonger present in Polkadot OpenGov."),(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#public-referenda"},"this page")," for more information about public referenda\nin Governance v1.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"In Polkadot OpenGov all referenda are public.")," The\n",(0,r.kt)("a",{parentName:"p",href:"#the-technical-fellowship"},"Technical Fellowship")," has the option to ",(0,r.kt)("a",{parentName:"p",href:"#whitelisting"},"whitelist"),"\nreferenda that can be then proposed in the track with\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#whitelisted-caller"},"whitelist origin"),"."),(0,r.kt)("h3",{id:"referenda-timeline"},"Referenda Timeline"),(0,r.kt)("admonition",{title:"Voting timetable in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#referenda-timeline"},"this page")," for more information about the voting\ntimetable in Governance v1.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-timeline",src:n(1671).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"The figure above provides a summary view of the referenda timeline for Polkadot OpenGov."),(0,r.kt)("p",null,"In (1), when a referendum is initially created, the community can immediately vote on it. However,\nit is not immediately in a state where it can end or otherwise have its votes counted, be approved,\nand ultimately enacted. Instead, the proposal will stay within a ",(0,r.kt)("strong",{parentName:"p"},"Lead-in Period")," until it\nfulfills three criteria:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Proposals must stay within the lead-in period for a pre-defined minimum amount of time. This helps\nmitigate against the possibility of "decision sniping" where an attacker controlling a substantial\namount of voting power might seek to have a proposal passed immediately after proposing, not\nallowing the overall voting population adequate time to consider and participate.'),(0,r.kt)("li",{parentName:"ul"},"There must be enough room for the decision within the origin. Different origins have their limit\non the number of proposals that can be decided simultaneously. Tracks that have more potent\nabilities will have lower limits. For example, the Root level Origin has a limit of one, implying\nthat only a single proposal may be decided on at once."),(0,r.kt)("li",{parentName:"ul"},"A decision deposit must be submitted. Creating a referendum is cheap as the deposit value consists\nof only the value required for the on-chain storage needed to track it. But, having a referendum\nreviewed and decided upon carries the risk of using up the limited spots available in the\nreferenda queue. Having a more significant but refundable deposit requirement makes sense to help\nmitigate spam. Failing to submit the decision deposit will lead to a referendum ",(0,r.kt)("em",{parentName:"li"},"timeout"),".")),(0,r.kt)("p",null,"Until they are in the lead-in period, proposals remain undecided. Once the criteria above are met,\nthe referendum moves to the ",(0,r.kt)("em",{parentName:"p"},"deciding")," state. The votes of the referendum are now counted towards\nthe outcome."),(0,r.kt)("p",null,"In (2), the proposal enters the ",(0,r.kt)("strong",{parentName:"p"},"Decision Period")," where votes can be cast. For a proposal to be\napproved, votes must satisfy the approval and support criteria for at least the ",(0,r.kt)("strong",{parentName:"p"},"Confirmation\nPeriod"),"; otherwise, the proposal is automatically rejected. A rejected proposal can be resubmitted\nanytime and as many times as needed."),(0,r.kt)("p",null,"In (3), approved proposals will enter the ",(0,r.kt)("strong",{parentName:"p"},"Enactment Period"),", after which proposed changes will be\nexecuted."),(0,r.kt)("p",null,"Note how the length of the lead-in, decision, confirmation, and enactment periods vary depending on\nthe origin. Root origin has more extended periods than the other origins. Also, the number of\nreferenda within each track differs, with the Root origin track only accepting one. proposal at a\ntime (see below)."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-track-capacity",src:n(67506).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"This directly affects the number of proposals that can be voted on and executed simultaneously.\nContinuing the comparison between Root and Small Tipper, Small Tipper will allow many proposals on\nits track to be executed simultaneously. In contrast, Root will allow only one proposal in its\ntrack. Once the track capacity is filled, additional proposals in the lead-in period will queue\nuntil place is available to enter the decision period."),(0,r.kt)("h3",{id:"origins-and-tracks"},"Origins and Tracks"),(0,r.kt)("p",null,"An ",(0,r.kt)("strong",{parentName:"p"},"Origin")," is a specific level of privilege that will determine the ",(0,r.kt)("strong",{parentName:"p"},"Track")," of all referenda\nexecuted with that origin. The track is basically a pipeline in which the proposal lives and\nproceeds and is independent from other origins' tracks. The proposer of the referenda now selects an\nappropriate Origin for their request based on the proposal\u2019s requirements."),(0,r.kt)("p",null,"Although the track structure is the same for all origins, track parameters are not. Such parameters\ninclude:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Maximum Deciding or Capacity"),": the limit for the number of referenda that can be decided at\nonce (i.e. the number of tracks within each origin)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Decision deposit"),": the amount of funds that must be placed on deposit to enter the Decision\nPeriod (note that more requirements must be met to enter the Decision Period)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Preparation Period"),": the minimum amount of voting time needed before entering the Decision\nPeriod (given capacity and deposit are met)."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Decision Period"),": the maximum time to approve a proposal. The proposal will be accepted if\napproved by the end of the period."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Confirmation Period"),": the minimum amount of time (within the Decision Period) the approval and\nsupport criteria must hold before the proposal is approved and moved to the enactment period."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Minimum Enactment Period"),": the minimum amount of waiting time before the proposed changes are\napplied"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Approval Curve"),": the curve describing the minimum % of ",(0,r.kt)("em",{parentName:"li"},"aye")," votes as a function of time within\nthe Decision Period. The approval % is the portion of ",(0,r.kt)("em",{parentName:"li"},"aye")," votes (adjusted for conviction) over\nthe total votes (",(0,r.kt)("em",{parentName:"li"},"aye"),", ",(0,r.kt)("em",{parentName:"li"},"nay"),", and ",(0,r.kt)("em",{parentName:"li"},"abstained"),")."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Support Curve"),": the curve describing the minimum % of all votes in support of a proposal as a\nfunction of time within the Decision Period. The support % is defined as the portion of all votes\n(",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"abstained"),") without conviction over the total possible amount of votes in the system\n(i.e. the total active issuance).")),(0,r.kt)("p",null,"For example, a runtime upgrade (requiring a ",(0,r.kt)("inlineCode",{parentName:"p"},"set_code")," call, if approved) does not have the same\nimplications for the ecosystem as the approval of a treasury tip (",(0,r.kt)("inlineCode",{parentName:"p"},"reportAwesome")," call), and\ntherefore different Origins for these two actions are needed in which different deposits, support,\napproval, and a minimum ",(0,r.kt)("a",{parentName:"p",href:"#enactment"},"enactment")," periods will be predetermined on the pallet."),(0,r.kt)("p",null,"For detailed information about origin and tracks, and parameter values in Kusama, see\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"this page"),"."),(0,r.kt)("h3",{id:"approval-and-support"},"Approval and Support"),(0,r.kt)("admonition",{title:"Adaptive Quorum Biasing is deprecated",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In Polkadot OpenGov, ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#adaptive-quorum-biasing"},"Adaptive quorum biasing")," used\nin Governance V1 has been replaced with the ",(0,r.kt)("strong",{parentName:"p"},"Approval and Support system"),".")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-curves-pass",src:n(65993).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"The figure above provides a summary view of how the approval and support system works during the\nDecision Period."),(0,r.kt)("p",null,"Once the proposal exits the Lead-in Period and enters the Voting Period, to be approved, it must\nsatisfy the approval and support criteria for the ",(0,r.kt)("strong",{parentName:"p"},"Confirmation Period"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Approval")," is defined as the share of approval (",(0,r.kt)("em",{parentName:"li"},"aye")," votes) vote-weight (after adjustment for\n",(0,r.kt)("a",{parentName:"li",href:"#voluntary-locking"},"conviction"),") against the total vote-weight (",(0,r.kt)("em",{parentName:"li"},"aye"),", ",(0,r.kt)("em",{parentName:"li"},"nay"),", and ",(0,r.kt)("em",{parentName:"li"},"abstained"),")."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Support")," is the total number of ",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"abstain")," votes (ignoring any adjustment for\nconviction) compared to the total possible votes (",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-DOT#token-issuance"},"active issuance"),")\nthat could be made in the system. In case of ",(0,r.kt)("em",{parentName:"li"},"split")," votes, only ",(0,r.kt)("em",{parentName:"li"},"aye")," and ",(0,r.kt)("em",{parentName:"li"},"abstain")," will count.")),(0,r.kt)("admonition",{title:"Nay votes are not counted towards Support",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Support is a measure of voters who turned out either in favor of the referenda and who consciously\nabstained from it. Support does not include ",(0,r.kt)("em",{parentName:"p"},"nay")," votes. This avoids edge situations where ",(0,r.kt)("em",{parentName:"p"},"nay"),"\nvotes could push a referendum into confirming state. For example, imagine current approval is high\n(near 100%, way above the approval curve), and current support is just below the support curve. A\n",(0,r.kt)("em",{parentName:"p"},"nay")," could bump support above the support curve but not reduce approval below the approval curve.\nTherefore someone voting against a proposal would make it pass. Hence, a decrease in % of current\napproval through new votes does not directly translate into increasing support because Support needs\nto consider ",(0,r.kt)("em",{parentName:"p"},"nay")," votes.")),(0,r.kt)("p",null,"The figure above shows the followings:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Even if the approval threshold is reached (i.e. % of current approval is greater than the approval\ncurve), the proposal only enters the confirmation period once the support threshold is also\nreached (i.e. % current support is greater than the underlying support curve)."),(0,r.kt)("li",{parentName:"ul"},"If the referendum meets the criteria for the confirmation period, then the proposal is approved\nand scheduled for enactment. The Enactment Period can be specified when the referendum is proposed\nbut is also subject to a minimum value based on the Track. More powerful Tracks enforce a larger\nEnactment Period to ensure the network has ample time to prepare for any changes the proposal may\nbring."),(0,r.kt)("li",{parentName:"ul"},"A referendum may exit the confirmation period when the thresholds are no longer met, due to new\n",(0,r.kt)("em",{parentName:"li"},"Nay")," votes or a change of existing ",(0,r.kt)("em",{parentName:"li"},"Aye")," or ",(0,r.kt)("em",{parentName:"li"},"Abstain")," votes to ",(0,r.kt)("em",{parentName:"li"},"Nay")," . Each time it exits, the\nconfirmation period resets. For example, if the confirmation period is 20 minutes and a referendum\nenters it just for 5 min, the next time it enters, it must stay for 20 minutes (not 15 minutes)."),(0,r.kt)("li",{parentName:"ul"},"During the decision period, if a referendum fails to meet the approval and support thresholds for\nthe duration of the track-specific confirmation period, it fails and does not go to the enactment\nperiod (it may have to be resubmitted, see below)."),(0,r.kt)("li",{parentName:"ul"},"The current approval must be above 50% for a referendum to pass, and the approval curve never goes\nbelow 50%.")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"opengov-curves-pass",src:n(55745).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"Note that support may not increase monotonically as shown in the figure, as people might switch\nvotes."),(0,r.kt)("p",null,"Different Origins' tracks have different Confirmation Periods and requirements for approval and\nsupport. For additional details on the various origins and tracks, check out\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-origins#origins-and-tracks-info"},"this table"),". Configuring the amount of\nsupport and overall approval required for it to pass is now possible. With proposals that use less\nprivileged origins, it is far more reasonable to drop the required support to a more realistic\namount earlier than those which use highly privileged classes such as ",(0,r.kt)("inlineCode",{parentName:"p"},"Root"),". Classes with more\nsignificance can be made to require higher approval early on, to avoid controversy."),(0,r.kt)("h3",{id:"enactment"},"Enactment"),(0,r.kt)("admonition",{title:"Enactment in Governance v1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#enactment"},"this page")," for more information about enactment in Governance\nv1.")),(0,r.kt)("p",null,"In Polkadot OpenGov, the proposer suggests the enactment period, but there are also minimums set for\neach Origin Track. For example, root Origin approvals require a more extended period because of the\nimportance of the changes they bring to the network."),(0,r.kt)("h2",{id:"voting-on-a-referendum"},"Voting on a Referendum"),(0,r.kt)("p",null,"In Governance V1, voters could cast only an ",(0,r.kt)("em",{parentName:"p"},"aye")," or ",(0,r.kt)("em",{parentName:"p"},"nay")," vote. In Polkadot OpenGov, voters can\nadditionally cast a ",(0,r.kt)("em",{parentName:"p"},"abstain")," and ",(0,r.kt)("em",{parentName:"p"},"split")," votes.\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#voting-on-referenda"},"Vote splitting")," allows voters to allocate\ndifferent votes for ",(0,r.kt)("em",{parentName:"p"},"aye"),", ",(0,r.kt)("em",{parentName:"p"},"nay"),", and ",(0,r.kt)("em",{parentName:"p"},"abstain"),"."),(0,r.kt)("admonition",{title:"Only the last vote counts",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Voting a second time replaces your original vote, e.g. voting with 10\nDOT, then a second extrinsic to vote with 5\nDOT, means that you are voting with 5\nDOT, not 10\nDOT.")),(0,r.kt)("p",null,"Note that to successfully cast votes you need to have the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts#existential-deposit-and-reaping"},"existential deposit")," and some additional funds\nto pay for transaction fees."),(0,r.kt)("h3",{id:"voluntary-locking"},"Voluntary Locking"),(0,r.kt)("p",null,"Polkadot utilizes an idea called voluntary\nlocking that allows token holders to increase their voting power by declaring how long they are\nwilling to lock up their tokens; hence, the number of votes for each token holder will be calculated\nby the following formula:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"votes = tokens * conviction_multiplier\n")),(0,r.kt)("p",null,"The conviction multiplier increases the vote multiplier by one every time the number of lock periods\ndouble."),(0,r.kt)(m,{mdxType:"VLTable"}),(0,r.kt)("p",null,'The maximum number of "doublings" of the lock period is set to 6 (and thus 32 lock periods in\ntotal), and one lock period equals\n',(0,r.kt)(l.Z,{network:"kusama",path:"consts.convictionVoting.voteLockingPeriod",defaultValue:100800,filter:"blocksToDays",mdxType:"RPC"}),"\n","\ndays. For additional information regarding the timeline of governance events, check out the\ngovernance section on the\n",(0,r.kt)("a",{parentName:"p",href:"maintain-polkadot-parameters/#governance"},"Polkadot Parameters page"),"","."),(0,r.kt)("admonition",{title:"do votes stack?",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"You can use the same number of tokens to vote on different referenda. Votes with conviction do not\nstack. If you voted with 5 DOT on Referenda A, B\nand C with 2x conviction you would have 10 votes on all those referenda and 5\nDOT locked up only for the 2x conviction period\n(i.e. two weeks), with the unlocking\ncountdown starting when the last referendum you voted on ends (assuming you are on the winning\nside). If you voted with conviction on referendum and then a week later voted on another one with\nthe same conviction, the lock on your DOT will be\nextended by a week (always assuming you are on the winning side).")),(0,r.kt)("admonition",{title:"Staked tokens can be used in governance",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"While a token is locked, you can still use it for voting and ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking"),". You are\nonly prohibited from transferring these tokens to another account.")),(0,r.kt)("p",null,'Votes are always "counted" at the same time (at the end of the voting period), no matter for how\nlong the tokens are locked.'),(0,r.kt)("p",null,"See below an example that shows how voluntary locking works."),(0,r.kt)("p",null,"Peter: Votes ",(0,r.kt)("inlineCode",{parentName:"p"},"No")," with\n10 DOT for a 32-week lock period\n=> 10 x 6 = 60 Votes"),(0,r.kt)("p",null,"Logan: Votes ",(0,r.kt)("inlineCode",{parentName:"p"},"Yes")," with\n20 DOT for one week lock period =>\n20 x 1 = 20 Votes"),(0,r.kt)("p",null,"Kevin: Votes ",(0,r.kt)("inlineCode",{parentName:"p"},"Yes")," with\n15 DOT for a 2-week lock period\n=> 15 x 2 = 30 Votes"),(0,r.kt)("p",null,"Even though combined both Logan and Kevin vote with more\nDOT than Peter, the lock period for both of them\nis less than Peter, leading to their voting power counting as less."),(0,r.kt)("admonition",{title:"Conviction Voting Locks created during Gov 1",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Conviction voting locks in Governance v1 will not be carried over to OpenGov. Voting with conviction\nin OpenGov will create a new lock (as this will use the ",(0,r.kt)("inlineCode",{parentName:"p"},"convictionVoting")," pallet), while any\nexisting lock under Governance v1 (using the deprecated ",(0,r.kt)("inlineCode",{parentName:"p"},"democracy")," pallet) will be left to expire.\nDelegations under Governance v1 will need to be re-issued under OpenGov.")),(0,r.kt)("h3",{id:"multirole-delegation"},"Multirole Delegation"),(0,r.kt)("p",null,"Polkadot OpenGov builds on the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#delegations"},"vote delegation feature from Governance v1")," where a voter can\ndelegate their voting power to another voter. It does so by introducing a feature known as\n",(0,r.kt)("strong",{parentName:"p"},"multirole delegation"),", where voters can specify a different delegate for every class of\nreferendum in the system. Delegation can be done per track, and accounts can choose to select\ndifferent delegates (or no delegation) for each track."),(0,r.kt)("p",null,"For example, a voter could delegate one entity for managing a less potent referenda class, choose a\ndifferent delegate for another class with more powerful consequences and still retain full voting\npower over any remaining classes."),(0,r.kt)("admonition",{title:"Delegate your votes",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"In Polkadot OpenGov you can delegate your votes to different entities, who will vote on your behalf.\nYou can delegate your votes using the\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},(0,r.kt)("strong",{parentName:"a"},"Polkadot Delegation Dashboard")),". See\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},"this video tutorial")," to learn about the features of\nthe dashboard."),(0,r.kt)("p",{parentName:"admonition"},"If you are staking directly and not through a nomination pool, you can use bonded tokens for voting.\nNote that if you are voting with conviction, your tokens will have a democracy lock in addition to\nthe staking lock. For more information about locks, see\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts/#unlocking-locks"},"this page"),"."),(0,r.kt)("p",{parentName:"admonition"},"Democracy locks created through ",(0,r.kt)("a",{parentName:"p",href:"#voluntary-locking"},"conviction voting")," start the unlocking period\nafter a referendum ends, provided you voted with the winning side. In the case of delegations, the\nunlocking period countdown begins after the account undelegates. There can be different scenarios:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"if the account delegated votes to one delegate, then after undelegating, there will be one\nunlocking period with length dependent on the conviction multiplier."),(0,r.kt)("li",{parentName:"ul"},"if the account delegated votes to different delegates using different convictions, then after\nundelegating those delegates, there will be different unlocking periods with lengths dependent on\nthe conviction multipliers."))),(0,r.kt)("p",null,"It is worth noting that a user delegating their voting power does not imply that the delegate will\nhave control over the funds of the delegating user's account. That delegate's account can vote with\na user's voting power but won't be able to transfer balances, nominate a different set of\nvalidators, or execute any call other than voting on the tracks defined by the user."),(0,r.kt)("p",null,"The goal of delegations is to ensure the required support for proposals to be enacted is reached\nwhile keeping the overall design censorship-free. Also, voters might not have the technical\nknowledge to judge some referenda or might not have the time to read all referenda. Delegations\nallow voters to participate in OpenGov hands-free by delegating their voting power to trusted\nentities."),(0,r.kt)("p",null,"For a step-by-step outline of how to delegate voting power in Polkadot OpenGov, check out the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#delegations"},"Delegating Voting Power")," section on the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"Polkadot OpenGov Guides"),"."),(0,r.kt)("h2",{id:"the-polkadot-technical-fellowship"},"The Polkadot Technical Fellowship"),(0,r.kt)("admonition",{title:"From Technical Committee to the Technical Fellowship",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Technical Fellowship is a collection of Substrate experts. This fellowship was\nestablished in 2022. In Polkadot OpenGov, this fellowship replaces the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-governance#technical-committee"},"Technical Committee")," in Governance v1, and will serve\nboth the Polkadot and Kusama networks."),(0,r.kt)("p",{parentName:"admonition"},"For more information about the Fellowship see the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/manifesto/blob/0c3df46d76625980b8b48742cb86f4d8fa6dda8d/manifesto.pdf"},"Fellowship Manifesto"),".")),(0,r.kt)("p",null,"The Technical Fellowship is a mostly self-governing expert body with a primary goal of representing\nhumans who embody and contain the technical knowledge base of the Kusama and/or Polkadot networks\nand protocols. This is accomplished by associating a rank with members to categorize the degree to\nwhich the system expects their opinion to be well-informed, of a sound technical basis, and in line\nwith the interests of Polkadot and/or Kusama."),(0,r.kt)("p",null,"Unlike the Technical Committee in Governance V1, the Fellowship is designed to be far broader in\nmembership (i.e. to work well with even tens of thousands of members) and with far lower barriers to\nentry (both in terms of administrative process flow and expectations of expertise)."),(0,r.kt)("p",null,"The mechanism by which the Fellowship votes is the same as what is used for Polkadot and Kusama\nstakeholder voting for a proposed referendum. Members of the Fellowship can vote on any given\nFellowship proposal and the aggregated opinion of the members (weighted by their rank) constitutes\nthe Fellowship's considered opinion."),(0,r.kt)("p",null,"The Polkadot Technical Fellowship resides on the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fpolkadot-collectives-rpc.polkadot.io#/fellowship/referenda"},"Collectives"),"\nparachain and maintains the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows"},"Polkadot Fellows")," repository. The\nfellowship also has its own governance model with multiple tracks with approval and support\nparameters, where the votes are weighted by the rank of the member.",(0,r.kt)("br",{parentName:"p"}),"\n","The fellowship governance is primarily used for its membership management,\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/RFCs"},"approving RFCs")," and whitelisting Polkadot OpenGov\nproposals."),(0,r.kt)("p",null,"",""),(0,r.kt)("h3",{id:"ranking-system"},"Ranking System"),(0,r.kt)("p",null,"To prevent a small group of participants from gaining effective control over the network, this\nsystem will adhere to three main principles:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The Fellowship must never have hard power over the network: it cannot change the parameters,\nconduct rescues or move assets. Their only power in governance is reducing the effective timeline\non which a referendum takes place through ",(0,r.kt)("a",{parentName:"li",href:"#whitelisting"},"whitelisting"),"."),(0,r.kt)("li",{parentName:"ul"},"The Fellowship weights those with a higher rank more in the aggregate opinion. However, the weight\nshould not be so high as to make a small number of higher members\u2019 opinions be insurmountable\ncompared to a coherent opinion from lower-ranked membership."),(0,r.kt)("li",{parentName:"ul"},"The Fellowship should be designed to grow and develop its membership, aggregate levels of\nexpertise and ensure that its overall decision-making capacity strengthens over time.")),(0,r.kt)("p",null,"To support these conditions, the Fellowship has a\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/manifesto"},"manifesto")," that outlines the requirements and\nexpectations for individuals to attain and retain any given rank. Higher ranks can vote and promote\nlower ranks based on this ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/polkadot-fellows/manifesto"},"manifesto"),"."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Demotion")," occurs automatically after a given period has elapsed, and the member is unable to\ndefend their position to their peers."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"Suspension")," can happen only through a referendum, which ensures that the Fellowship's bias alone\ndoes not necessarily result in expulsion."),(0,r.kt)("p",null,"To prevent the Fellowship from becoming a cabal (popularity with Fellowship peers alone should not\nbe enough to gain access to a top rank), gaining access to the top tiers of the ranks will require a\nreferendum."),(0,r.kt)("h3",{id:"whitelisting"},"Whitelisting"),(0,r.kt)("p",null,'Polkadot OpenGov allows the Fellowship to authorize a new origin (known as "Whitelisted-Caller") to\nexecute with Root-level privileges for calls that have been approved by the Fellowship (currently\nonly level-three fellows and above can vote for whitelist calls).'),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/substrate/master/pallet_whitelist/"},"Whitelist")," pallet allows one\nOrigin to escalate the privilege level of another Origin for a certain operation. The pallet\nverifies two things:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The origin of the escalation is the Whitelisted-Root (i.e. that the referendum passed on this\ntrack), and"),(0,r.kt)("li",{parentName:"ul"},"The whitelist contains the given proposal (in the configuration of Polkadot OpenGov, it gets there\nvia a separate Fellowship referendum).")),(0,r.kt)("p",null,"If both conditions are true, the operation executes with Root-level privileges."),(0,r.kt)("p",null,"This system enables a new parallel Track (Whitelisted-Caller), whose parameters have less\nrestrictive passing parameters than Root in the short term. Through an open and transparent process,\na body of global experts on the Polkadot\nprotocol have determined that the action is both safe and time-critical."),(0,r.kt)("admonition",{title:"Submitting Whitelisted Proposals",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For more information about how to submit a whitelisted proposal see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov#submitting-a-referendum-on-the-whitelisted-caller-track"},"dedicated advanced how-to guides"),".")),(0,r.kt)("h3",{id:"becoming-a-polkadot-technical-fellowship-member"},"Becoming a Polkadot Technical Fellowship Member"),(0,r.kt)("p",null,'Currently, the only way to become a fellowship member is through a referenda. To get added as a\nmember of "Rank 1", an existing member of the fellowship needs to submit a referendum with the\npreimage of a batch call that has ',(0,r.kt)("inlineCode",{parentName:"p"},"fellowshipCollective.addMember")," and\n",(0,r.kt)("inlineCode",{parentName:"p"},"fellowshipCollective.promoteMember"),' on "2/Proficients" track. On Polkadot-JS UI for Polkadot\nCollectives, navigate to Governance > Fellowship > Referenda and click on "Add Preimage". This\npreimage can be submitted by anyone.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"fellowship-add-promote-member-preimage",src:n(68937).Z,width:"2156",height:"1746"})),(0,r.kt)("p",null,'After the preimage is successfully noted, navigate to Governance > Fellowship > Referenda and click\non "Submit Proposal" (This button is active on the UI only if you have an account that belongs to\nthe Fellowship). Choose the appropriate track and the origin, and enter the preimage hash of the\nbatch call that adds and promotes the member.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"fellowship-add-promote-member-proposal",src:n(16046).Z,width:"2150",height:"1492"})),(0,r.kt)("p",null,'After the referendum is successfully executed, the member is added to the fellowship with "rank 1".\nFor example, check the ',(0,r.kt)("a",{parentName:"p",href:"https://collectives.subsquare.io/fellowship/referenda/23"},"Referenda 23")," on\nthe Collectives parachain. If a member has to be added and promoted to \u201crank 5\u201d, the proposal has to\nbe submitted through track \u201c6/Senior Experts\u201d (Always a track with a rank higher). For example,\ncheck the ",(0,r.kt)("a",{parentName:"p",href:"https://collectives.subsquare.io/fellowship/referenda/25"},"Referenda 25")," on the\nCollectives parachain."),(0,r.kt)("p",null,"Future plans include that public members can apply to become a Fellowship candidate by placing a\nsmall deposit (which will be returned once they become members). Their candidacy will go through a\nreferendum to be approved to become a member."),(0,r.kt)("h2",{id:"resources"},"Resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/paritytech/substrate/tree/master/frame/democracy/src"},"Democracy Pallet")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/gov2-polkadots-next-generation-of-decentralised-governance-4d9ef657d11b"},"Governance v2")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://matrix.to/#/#Kusama-Direction:parity.io"},"Kusama Direction")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.polkassembly.io/"},"PolkAssembly"))),(0,r.kt)("hr",null),(0,r.kt)("admonition",{title:"Polkadot-JS Guides",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you are an advanced user, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-polkadot-opengov"},"Polkadot-JS guides about OpenGov"),".")))}N.isMDXComponent=!0},68937:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/fellowship-add-member-preimage-90d52688c691ac21a26fd067a3ba6524.png"},16046:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/fellowship-add-member-proposal-5d832ecf298a03c8de37b001d43be34c.png"},55745:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-curves-nopass-27f6968907aeb88e87069d29ca062568.png"},65993:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-curves-pass-73b6c7d1849e26082880cd7d629a633e.png"},40176:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-overview-a56ef29a3a173f9dc2b60a9008dcfc1b.png"},1671:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-timeline-26e5a1fae159676ab5052a4fd7416be5.png"},67506:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/opengov-track-capacity-a1e00e5bd7961ea13d38f79cf6fa4b9c.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/32e8da05.2e6779d0.js b/assets/js/32e8da05.2e6779d0.js deleted file mode 100644 index a541570cfec0..000000000000 --- a/assets/js/32e8da05.2e6779d0.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[6140],{47940:(a,e,t)=>{"use strict";t.d(e,{Z:()=>u});var n=t(74165),o=t(15861),i=t(67294),r=t(87152),s=t(30967),l=t(67425);function c(a,e,t){return d.apply(this,arguments)}function d(){return(d=(0,o.Z)((0,n.Z)().mark((function a(e,t,o){var i,l,c,d,p;return(0,n.Z)().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:i=void 0,l=void 0,a.t0=e,a.next="polkadot"===a.t0?5:"kusama"===a.t0?7:"statemine"===a.t0?9:"statemint"===a.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",a.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",a.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",a.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",a.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){a.next=18;break}return a.abrupt("return");case 18:return c=new r.U(i),a.next=21,s.G.create({provider:c});case 21:d=a.sent,(p=t.split(".")).forEach((function(a){a in d&&(d=d[a])})),a.t1=p[0],a.next="consts"===a.t1?27:"query"===a.t1?29:34;break;case 27:return l=d.toString(),a.abrupt("break",35);case 29:return a.next=31,d();case 31:return l=(l=a.sent).toString(),a.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+t);case 35:return a.abrupt("return",l);case 36:case"end":return a.stop()}}),a)})))).apply(this,arguments)}function p(a,e,t,n){switch(e){case"humanReadable":(0,l.HumanReadable)(a,t,n);break;case"precise":(0,l.Precise)(a,t,n);break;case"blocksToDays":(0,l.BlocksToDays)(a,n);break;case"erasToDays":(0,l.ErasToDays)(a,n,t);break;case"percentage":(0,l.Percentage)(a,n);break;case"permillToPercent":(0,l.PermillToPercent)(a,n);break;case"arrayLength":(0,l.ArrayLength)(a,n);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(a){var e=a.network,t=a.path,r=a.defaultValue,s=a.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),u=d[0],h=d[1];return e=e.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?p(r.toString(),l,e,h):h(r.toString());var a=void 0;switch(e){case"polkadot":a="wss://rpc.polkadot.io";break;case"kusama":a="wss://kusama-rpc.polkadot.io/";break;case"statemine":a="wss://statemine-rpc.polkadot.io/";break;case"statemint":a="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===a)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var a=(0,o.Z)((0,n.Z)().mark((function a(){var o;return(0,n.Z)().wrap((function(a){for(;;)switch(a.prev=a.next){case 0:return a.next=2,c(e,t,h);case 2:if(void 0!==(o=a.sent)){a.next=7;break}return a.abrupt("return");case 7:void 0!==l?p(o,l,e,h):h(o);case 8:case"end":return a.stop()}}),a)})));return function(){return a.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),u}},67425:a=>{var e="polkadot",t="kusama",n="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};a.exports={HumanReadable:function(a,r,s){var l=void 0;if(r===e||r===o)l=3;else{if(r!==t&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}a=parseFloat(a),s((a=Number.isInteger(a/i[r].precision)?a/i[r].precision+" "+i[r].symbol:(a/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(a,e,t){t(a=(a=parseFloat(a))/i[e].precision+" "+i[e].symbol)},BlocksToDays:function(a,e){e((a=6*a/86400).toString())},ErasToDays:function(a,i,r){var s=void 0;if(r===e||r===o)s=1;else{if(r!==t&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((a/=s).toString())},Percentage:function(a,e){e((a/=1e7).toString())},PermillToPercent:function(a,e){e((a/=1e4).toString())},ArrayLength:function(a,e){e((a=a.split(",").length).toString())}}},65779:(a,e,t)=>{"use strict";t.r(e),t.d(e,{assets:()=>p,contentTitle:()=>c,default:()=>w,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var n=t(87462),o=t(63366),i=(t(67294),t(3905)),r=t(47940),s=["components"],l={id:"learn-crowdloans",title:"Parachain Crowdloans",sidebar_label:"Parachain Crowdloans",description:"Polkadot's Crowdloans and How to Participate.",keywords:["crowdloans","parachains","lending","auction"],slug:"../learn-crowdloans"},c=void 0,d={unversionedId:"learn/learn-crowdloans",id:"learn/learn-crowdloans",title:"Parachain Crowdloans",description:"Polkadot's Crowdloans and How to Participate.",source:"@site/../docs/learn/learn-crowdloans.md",sourceDirName:"learn",slug:"/learn-crowdloans",permalink:"/docs/learn-crowdloans",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-crowdloans.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1695728743,formattedLastUpdatedAt:"Sep 26, 2023",frontMatter:{id:"learn-crowdloans",title:"Parachain Crowdloans",sidebar_label:"Parachain Crowdloans",description:"Polkadot's Crowdloans and How to Participate.",keywords:["crowdloans","parachains","lending","auction"],slug:"../learn-crowdloans"},sidebar:"docs",previous:{title:"Parachain Slot Auctions",permalink:"/docs/learn-auction"},next:{title:"Parachains FAQ",permalink:"/docs/learn-parachains-faq"}},p={},u=[{value:"Crowdloan Campaigns vs Parachain Auctions",id:"crowdloan-campaigns-vs-parachain-auctions",level:2},{value:"Starting a Crowdloan Campaign",id:"starting-a-crowdloan-campaign",level:2},{value:"Supporting a Crowdloan Campaign",id:"supporting-a-crowdloan-campaign",level:2},{value:"Contributing to Crowdloans",id:"contributing-to-crowdloans",level:3},{value:"Withdraw Crowdloaned Tokens",id:"withdraw-crowdloaned-tokens",level:3}],h={toc:u},m="wrapper";function w(a){var e=a.components,l=(0,o.Z)(a,s);return(0,i.kt)(m,(0,n.Z)({},h,l,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Polkadot allows parachains to source tokens\nfor their parachain bids in a decentralized crowdloan."),(0,i.kt)("admonition",{title:"Contributing to a crowdloan",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"If you are here for guidance on how to contribute to a crowdloan, watch the video below or read this\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177341-how-to-participate-in-crowdloans-on-polkadot-or-kusama"},"support article on crowdloans"),".")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://youtu.be/AA9mPANmzmU"},(0,i.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/AA9mPANmzmU/0.jpg",alt:"Crowdloans on Polkadot JS"}))),(0,i.kt)("admonition",{title:"Testing on Rococo",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"For information on how to participate in the crowdloan and parachain auction testing on Rococo,\nplease see the ",(0,i.kt)("a",{parentName:"p",href:"/docs/build-pdk##testing-a-parachains:-rococo-testnet"},"Rococo content"))),(0,i.kt)("h2",{id:"crowdloan-campaigns-vs-parachain-auctions"},"Crowdloan Campaigns vs Parachain Auctions"),(0,i.kt)("p",null,"It is important to recognize that starting a crowdloan campaign is ",(0,i.kt)("strong",{parentName:"p"},"optional")," for participating in\na parachain slot auction. The parachain slot auction can also be won directly through self-funding\nwithout community involvement. To reiterate, crowdloan campaigns are just one of the means to win\nauctions, which allow the community to participate in a trustless and permissionless way."),(0,i.kt)("p",null,"Let's look at a scenario where Project A is hoping to gain a parachain slot on\nPolkadot, but they don't have enough tokens to\nbid directly to win the parachain auction. Project A could benefit from starting a new crowdloan\ncampaign to help secure a parachain slot. Crowdloans are trustless and are supported natively on\nPolkadot, allowing the community to bond their\ntokens on Project A's behalf for the entire parachain lease duration. This will allow Project A to\ncompete with projects that may have access to greater capital, given the project has sufficient\ncommunity support. In return, the community contributors are rewarded by the projects that win the\nparachain slot, which would compensate for the opportunity cost of bonding their tokens for the\nlease duration."),(0,i.kt)("p",null,"On the other hand, let's say Project B, which is more established and has access to capital, is\nhoping to secure a parachain slot through self-funding. Project B is not relying on community\nfunding (at least via the crowdloan mechanism), so they must determine how much funding they can\nallocate towards winning a slot."),(0,i.kt)("p",null,"Project B fully controls how much they are willing to contribute to gaining a parachain slot.\nProject B need not work on creating a reward model for community contributors like Project A. In\ncontrast, crowdloan campaigns benefit projects with access to limited capital but have strong\ncommunity support. They are also beneficial for projects that can successfully bid to win the\nauction with self-funding but are looking for a mechanism to bootstrap their community and get\nnoticed by the key actors in the ecosystem."),(0,i.kt)("p",null,"It is publicly visible on-chain whether or not a project is bidding directly or through a crowdloan\ncampaign. More details regarding creating and executing a crowdloan campaign are provided below."),(0,i.kt)("h2",{id:"starting-a-crowdloan-campaign"},"Starting a Crowdloan Campaign"),(0,i.kt)("p",null,"Anyone who has registered a parachain can create a new crowdloan campaign for a slot by depositing a\nspecified number of tokens. A campaign is configured as a range of slots (i.e. the duration of the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachain")," will bid for), a cap, and a duration. The duration can last over\nseveral auctions as long as the range of slots matches those of the auction (i.e. the first lease\nperiod of the crowdloan is the same or bigger than that of the auction). This means a team will not\nneed to restart the campaign just because they do not secure a slot on their first attempt."),(0,i.kt)("admonition",{title:"Crowdloan Submission Deposit Required",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"To create a new crowdloan campaign, your account must have\n500 DOT transferrable which will be reserved\nfor the duration of the crowdloan.")),(0,i.kt)("p",null,"When setting the parameters of a crowdloan campaign, consider the following:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"A crowdloan campaign can start well before the auction slot is opened.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The campaign creation form requires setting a crowdloan cap ","\u2014"," the maximum amount a campaign\ncan collect. A team can still win an ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"auction")," if the cap is not reached.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'Set the desired end of the crowdloan in the "Ending block" field. This helps ensure that the\ncrowdloan is live during the entire auction. For example, if an auction starts in three days and\nlasts five days, you should set your crowdloan to end in 10 days or a similar timescale.')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"One way of calculating the ending block number is adding: ",(0,i.kt)("inlineCode",{parentName:"p"},"(10 * 60 * 24 * 7) * (x * 6) + y")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"x")," is the number of auction periods you want the crowdloan to continue for")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"y")," is the current block number")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"(Blocks/Min * Min/Hour * Hour/Day * Day/Week) * (x[Period] * Week/Period) + y[BlockNumber]"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'"First period" field refers to the first period you want to bid for. If the current auction\nencompasses periods ',(0,i.kt)("inlineCode",{parentName:"p"},"(3, 4, 5, 6)"),", your first period can be at least ",(0,i.kt)("inlineCode",{parentName:"p"},"3"),". The last slot must\nalso be within that range.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"You can only cancel an ongoing crowdloan if no contributions have been made. Your deposit will\nbe returned to you."))))),(0,i.kt)("p",null,"Before the start of the crowdloan campaign, the owner will upload the parachain data. Once the\ncrowdloan is live, ",(0,i.kt)("strong",{parentName:"p"},"the parachain configuration will be locked")," and will be deployed as the\nparachain's runtime. Of course, once the parachain is running, it can always change via runtime\nupgrades (as determined through its local governance)."),(0,i.kt)("h2",{id:"supporting-a-crowdloan-campaign"},"Supporting a Crowdloan Campaign"),(0,i.kt)("h3",{id:"contributing-to-crowdloans"},"Contributing to Crowdloans"),(0,i.kt)("admonition",{title:"Minimum Crowdloan Contribution",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The minimum balance for contributions for a crowdloan campaign is currently set to\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.crowdloan.minContribution",defaultValue:5e10,filter:"humanReadable",mdxType:"RPC"}),".\n","\nThis is to make crowdloans as accessible as possible while maintaining a balance to justify using\nthe network's resources.")),(0,i.kt)("p",null,"Each created campaign will have an index. Once a crowdloan campaign is open, anyone can participate\nby sending a transaction referencing the campaign's index. Tokens used to participate must be\ntransferable ","\u2014"," that is, not locked for any reason, including staking, vesting, and governance\n","\u2014"," because they will be moved into a module-controlled account that was generated uniquely for\nthis campaign. See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-account-advanced#system-accounts"},"system accounts")," for more\ninformation."),(0,i.kt)("admonition",{title:"Do not send Crowdloan contributions directly to the Parachain address",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"All crowdloan contributions are handled by the Crowdloan module\u2019s logic, where a campaign is\nidentified by an index, not by address. ",(0,i.kt)("strong",{parentName:"p"},"Never transfer tokens to an address in support of a\ncampaign"),".")),(0,i.kt)("p",null,"It is up to individual parachain teams to decide if and how they want to reward participants who\nforgo staking and choose to lock their tokens in support of the parachain\u2019s campaign. As one can\nimagine, rewards will take many forms and may vary widely among projects."),(0,i.kt)("p",null,"If a crowdloan campaign is successful, that parachain will be on-boarded to the Relay Chain. The\ncollective tokens will be locked in that parachain's account for the entire duration that it is\nactive."),(0,i.kt)("h3",{id:"withdraw-crowdloaned-tokens"},"Withdraw Crowdloaned Tokens"),(0,i.kt)("p",null,"Participants will be able to reclaim their tokens in one of two ways:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"If the campaign succeeds, the parachain will enter a retirement phase at the end of its lease.\nDuring this phase, participants can withdraw the tokens with which they participated."),(0,i.kt)("li",{parentName:"ul"},"If the campaign is unsuccessful, this retirement phase will begin at its configured end, and\nparticipants can likewise withdraw their tokens.")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,i.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"crowdloan.contribute")," extrinsic is trustless"),(0,i.kt)("p",{parentName:"admonition"},"Contributing to a crowdloan through Polkadot JS Apps (which uses ",(0,i.kt)("inlineCode",{parentName:"p"},"crowdloan.contribute")," extrinsic)\nguarantees that you receive your tokens after the campaign ends. If you intend to contribute through\nother websites and custodial service providers like central exchanges, review their terms and\nconditions thoroughly and assess the associated risks.")),(0,i.kt)("p",null,"Note: When the lease periods won by the crowdloan have finished, or the crowdloan has ended without\nwinning a slot, anyone can trigger the refund of crowdloan contributions back to their original\nowners. This can be done through the permissionless ",(0,i.kt)("inlineCode",{parentName:"p"},"crowdloan.refund")," extrinsic available on\nPolkadot JS Apps > Developer > Extrinsics page, by specifying the parachain ID. This extrinsic may\nneed to be issued multiple times if the list of contributors is too long. All contributions must be\nreturned before the crowdloan is entirely deleted."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Crowdloan refund",src:t(72239).Z,width:"1440",height:"552"})),(0,i.kt)("p",null,"Many projects will have dashboards that allow users to participate in their crowdloans. PolkadotJS\napps also offer a breakdown of ongoing crowdloans on the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains/crowdloan"},"Apps page"),"."),(0,i.kt)("p",null,"Here is an example of the crowdloans in play during the very first Kusama auction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"crowdloan dashboard",src:t(30931).Z,width:"2328",height:"1540"})),(0,i.kt)("p",null,"Furthermore, check out this video on\n",(0,i.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=YrTxDufrcQM"},"How to Participate in Crowdloans")," for steps on how to\naccess available crowdloans on PolkadotJS apps."))}w.isMDXComponent=!0},72239:(a,e,t)=>{"use strict";t.d(e,{Z:()=>n});const n=t.p+"assets/images/crowdloan-refund-a452b6b303e27c25b3e87c42577a9265.png"},30931:(a,e,t)=>{"use strict";t.d(e,{Z:()=>n});const n=t.p+"assets/images/kusama-crowdloans-0237f5d573dee5e221b51678b2ed25f1.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/32e8da05.93e20266.js b/assets/js/32e8da05.93e20266.js new file mode 100644 index 000000000000..9025cf204a06 --- /dev/null +++ b/assets/js/32e8da05.93e20266.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[6140],{47940:(e,a,t)=>{"use strict";t.d(a,{Z:()=>u});var n=t(74165),o=t(15861),i=t(67294),r=t(87152),s=t(30967),l=t(67425);function c(e,a,t){return d.apply(this,arguments)}function d(){return(d=(0,o.Z)((0,n.Z)().mark((function e(a,t,o){var i,l,c,d,p;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:i=void 0,l=void 0,e.t0=a,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return i="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return i="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return i="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return i="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==i){e.next=18;break}return e.abrupt("return");case 18:return c=new r.U(i),e.next=21,s.G.create({provider:c});case 21:d=e.sent,(p=t.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+t);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,a,t,n){switch(a){case"humanReadable":(0,l.HumanReadable)(e,t,n);break;case"precise":(0,l.Precise)(e,t,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,t);break;case"percentage":(0,l.Percentage)(e,n);break;case"permillToPercent":(0,l.PermillToPercent)(e,n);break;case"arrayLength":(0,l.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var a=e.network,t=e.path,r=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,d=(0,i.useState)(""),u=d[0],h=d[1];return a=a.toLowerCase(),(0,i.useEffect)((function(){void 0!==l?p(r.toString(),l,a,h):h(r.toString());var e=void 0;switch(a){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+a)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var i=function(){var e=(0,o.Z)((0,n.Z)().mark((function e(){var o;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(a,t,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?p(o,l,a,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{i()}catch(s){console.log(s)}}}),[]),u}},67425:e=>{var a="polkadot",t="kusama",n="statemine",o="statemint",i={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,r,s){var l=void 0;if(r===a||r===o)l=3;else{if(r!==t&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/i[r].precision)?e/i[r].precision+" "+i[r].symbol:(e/i[r].precision).toFixed(l)+" "+i[r].symbol).toString())},Precise:function(e,a,t){t(e=(e=parseFloat(e))/i[a].precision+" "+i[a].symbol)},BlocksToDays:function(e,a){a((e=6*e/86400).toString())},ErasToDays:function(e,i,r){var s=void 0;if(r===a||r===o)s=1;else{if(r!==t&&r!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}i((e/=s).toString())},Percentage:function(e,a){a((e/=1e7).toString())},PermillToPercent:function(e,a){a((e/=1e4).toString())},ArrayLength:function(e,a){a((e=e.split(",").length).toString())}}},65779:(e,a,t)=>{"use strict";t.r(a),t.d(a,{assets:()=>p,contentTitle:()=>c,default:()=>w,frontMatter:()=>l,metadata:()=>d,toc:()=>u});var n=t(87462),o=t(63366),i=(t(67294),t(3905)),r=t(47940),s=["components"],l={id:"learn-crowdloans",title:"Parachain Crowdloans",sidebar_label:"Parachain Crowdloans",description:"Polkadot's Crowdloans and How to Participate.",keywords:["crowdloans","parachains","lending","auction"],slug:"../learn-crowdloans"},c=void 0,d={unversionedId:"learn/learn-crowdloans",id:"learn/learn-crowdloans",title:"Parachain Crowdloans",description:"Polkadot's Crowdloans and How to Participate.",source:"@site/../docs/learn/learn-crowdloans.md",sourceDirName:"learn",slug:"/learn-crowdloans",permalink:"/docs/learn-crowdloans",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-crowdloans.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-crowdloans",title:"Parachain Crowdloans",sidebar_label:"Parachain Crowdloans",description:"Polkadot's Crowdloans and How to Participate.",keywords:["crowdloans","parachains","lending","auction"],slug:"../learn-crowdloans"},sidebar:"docs",previous:{title:"Parachain Slot Auctions",permalink:"/docs/learn-auction"},next:{title:"Parachains FAQ",permalink:"/docs/learn-parachains-faq"}},p={},u=[{value:"Crowdloan Campaigns vs Parachain Auctions",id:"crowdloan-campaigns-vs-parachain-auctions",level:2},{value:"Starting a Crowdloan Campaign",id:"starting-a-crowdloan-campaign",level:2},{value:"Supporting a Crowdloan Campaign",id:"supporting-a-crowdloan-campaign",level:2},{value:"Contributing to Crowdloans",id:"contributing-to-crowdloans",level:3},{value:"Withdraw Crowdloaned Tokens",id:"withdraw-crowdloaned-tokens",level:3}],h={toc:u},m="wrapper";function w(e){var a=e.components,l=(0,o.Z)(e,s);return(0,i.kt)(m,(0,n.Z)({},h,l,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("p",null,"Polkadot allows parachains to source tokens\nfor their parachain bids in a decentralized crowdloan."),(0,i.kt)("admonition",{title:"Contributing to a crowdloan",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"If you are here for guidance on how to contribute to a crowdloan, watch the video below or read this\n",(0,i.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177341-how-to-participate-in-crowdloans-on-polkadot-or-kusama"},"support article on crowdloans"),".")),(0,i.kt)("div",{className:"row"},(0,i.kt)("div",{className:"col text--center"},(0,i.kt)("a",{href:"https://youtu.be/AA9mPANmzmU"},(0,i.kt)("img",{src:"https://img.youtube.com/vi/AA9mPANmzmU/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,i.kt)("p",null,(0,i.kt)("a",{href:"https://youtu.be/AA9mPANmzmU"},"Crowdloans on Polkadot-JS")))),(0,i.kt)("admonition",{title:"Testing on Rococo",type:"note"},(0,i.kt)("p",{parentName:"admonition"},"For information on how to participate in the crowdloan and parachain auction testing on Rococo,\nplease see the ",(0,i.kt)("a",{parentName:"p",href:"/docs/build-pdk##testing-a-parachains:-rococo-testnet"},"Rococo content"))),(0,i.kt)("h2",{id:"crowdloan-campaigns-vs-parachain-auctions"},"Crowdloan Campaigns vs Parachain Auctions"),(0,i.kt)("p",null,"It is important to recognize that starting a crowdloan campaign is ",(0,i.kt)("strong",{parentName:"p"},"optional")," for participating in\na parachain slot auction. The parachain slot auction can also be won directly through self-funding\nwithout community involvement. To reiterate, crowdloan campaigns are just one of the means to win\nauctions, which allow the community to participate in a trustless and permissionless way."),(0,i.kt)("p",null,"Let's look at a scenario where Project A is hoping to gain a parachain slot on\nPolkadot, but they don't have enough tokens to\nbid directly to win the parachain auction. Project A could benefit from starting a new crowdloan\ncampaign to help secure a parachain slot. Crowdloans are trustless and are supported natively on\nPolkadot, allowing the community to bond their\ntokens on Project A's behalf for the entire parachain lease duration. This will allow Project A to\ncompete with projects that may have access to greater capital, given the project has sufficient\ncommunity support. In return, the community contributors are rewarded by the projects that win the\nparachain slot, which would compensate for the opportunity cost of bonding their tokens for the\nlease duration."),(0,i.kt)("p",null,"On the other hand, let's say Project B, which is more established and has access to capital, is\nhoping to secure a parachain slot through self-funding. Project B is not relying on community\nfunding (at least via the crowdloan mechanism), so they must determine how much funding they can\nallocate towards winning a slot."),(0,i.kt)("p",null,"Project B fully controls how much they are willing to contribute to gaining a parachain slot.\nProject B need not work on creating a reward model for community contributors like Project A. In\ncontrast, crowdloan campaigns benefit projects with access to limited capital but have strong\ncommunity support. They are also beneficial for projects that can successfully bid to win the\nauction with self-funding but are looking for a mechanism to bootstrap their community and get\nnoticed by the key actors in the ecosystem."),(0,i.kt)("p",null,"It is publicly visible on-chain whether or not a project is bidding directly or through a crowdloan\ncampaign. More details regarding creating and executing a crowdloan campaign are provided below."),(0,i.kt)("h2",{id:"starting-a-crowdloan-campaign"},"Starting a Crowdloan Campaign"),(0,i.kt)("p",null,"Anyone who has registered a parachain can create a new crowdloan campaign for a slot by depositing a\nspecified number of tokens. A campaign is configured as a range of slots (i.e. the duration of the\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachain")," will bid for), a cap, and a duration. The duration can last over\nseveral auctions as long as the range of slots matches those of the auction (i.e. the first lease\nperiod of the crowdloan is the same or bigger than that of the auction). This means a team will not\nneed to restart the campaign just because they do not secure a slot on their first attempt."),(0,i.kt)("admonition",{title:"Crowdloan Submission Deposit Required",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"To create a new crowdloan campaign, your account must have\n500 DOT transferrable which will be reserved\nfor the duration of the crowdloan.")),(0,i.kt)("p",null,"When setting the parameters of a crowdloan campaign, consider the following:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"A crowdloan campaign can start well before the auction slot is opened.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"The campaign creation form requires setting a crowdloan cap ","\u2014"," the maximum amount a campaign\ncan collect. A team can still win an ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"auction")," if the cap is not reached.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'Set the desired end of the crowdloan in the "Ending block" field. This helps ensure that the\ncrowdloan is live during the entire auction. For example, if an auction starts in three days and\nlasts five days, you should set your crowdloan to end in 10 days or a similar timescale.')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"One way of calculating the ending block number is adding: ",(0,i.kt)("inlineCode",{parentName:"p"},"(10 * 60 * 24 * 7) * (x * 6) + y")),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"x")," is the number of auction periods you want the crowdloan to continue for")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"y")," is the current block number")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"(Blocks/Min * Min/Hour * Hour/Day * Day/Week) * (x[Period] * Week/Period) + y[BlockNumber]"))),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},'"First period" field refers to the first period you want to bid for. If the current auction\nencompasses periods ',(0,i.kt)("inlineCode",{parentName:"p"},"(3, 4, 5, 6)"),", your first period can be at least ",(0,i.kt)("inlineCode",{parentName:"p"},"3"),". The last slot must\nalso be within that range.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},"You can only cancel an ongoing crowdloan if no contributions have been made. Your deposit will\nbe returned to you."))))),(0,i.kt)("p",null,"Before the start of the crowdloan campaign, the owner will upload the parachain data. Once the\ncrowdloan is live, ",(0,i.kt)("strong",{parentName:"p"},"the parachain configuration will be locked")," and will be deployed as the\nparachain's runtime. Of course, once the parachain is running, it can always change via runtime\nupgrades (as determined through its local governance)."),(0,i.kt)("h2",{id:"supporting-a-crowdloan-campaign"},"Supporting a Crowdloan Campaign"),(0,i.kt)("h3",{id:"contributing-to-crowdloans"},"Contributing to Crowdloans"),(0,i.kt)("admonition",{title:"Minimum Crowdloan Contribution",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"The minimum balance for contributions for a crowdloan campaign is currently set to\n",(0,i.kt)(r.Z,{network:"polkadot",path:"consts.crowdloan.minContribution",defaultValue:5e10,filter:"humanReadable",mdxType:"RPC"}),".\n","\nThis is to make crowdloans as accessible as possible while maintaining a balance to justify using\nthe network's resources.")),(0,i.kt)("p",null,"Each created campaign will have an index. Once a crowdloan campaign is open, anyone can participate\nby sending a transaction referencing the campaign's index. Tokens used to participate must be\ntransferable ","\u2014"," that is, not locked for any reason, including staking, vesting, and governance\n","\u2014"," because they will be moved into a module-controlled account that was generated uniquely for\nthis campaign. See ",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-account-advanced#system-accounts"},"system accounts")," for more\ninformation."),(0,i.kt)("admonition",{title:"Do not send Crowdloan contributions directly to the Parachain address",type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"All crowdloan contributions are handled by the Crowdloan module\u2019s logic, where a campaign is\nidentified by an index, not by address. ",(0,i.kt)("strong",{parentName:"p"},"Never transfer tokens to an address in support of a\ncampaign"),".")),(0,i.kt)("p",null,"It is up to individual parachain teams to decide if and how they want to reward participants who\nforgo staking and choose to lock their tokens in support of the parachain\u2019s campaign. As one can\nimagine, rewards will take many forms and may vary widely among projects."),(0,i.kt)("p",null,"If a crowdloan campaign is successful, that parachain will be on-boarded to the Relay Chain. The\ncollective tokens will be locked in that parachain's account for the entire duration that it is\nactive."),(0,i.kt)("h3",{id:"withdraw-crowdloaned-tokens"},"Withdraw Crowdloaned Tokens"),(0,i.kt)("p",null,"Participants will be able to reclaim their tokens in one of two ways:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"If the campaign succeeds, the parachain will enter a retirement phase at the end of its lease.\nDuring this phase, participants can withdraw the tokens with which they participated."),(0,i.kt)("li",{parentName:"ul"},"If the campaign is unsuccessful, this retirement phase will begin at its configured end, and\nparticipants can likewise withdraw their tokens.")),(0,i.kt)("admonition",{type:"tip"},(0,i.kt)("mdxAdmonitionTitle",{parentName:"admonition"},(0,i.kt)("inlineCode",{parentName:"mdxAdmonitionTitle"},"crowdloan.contribute")," extrinsic is trustless"),(0,i.kt)("p",{parentName:"admonition"},"Contributing to a crowdloan through Polkadot JS Apps (which uses ",(0,i.kt)("inlineCode",{parentName:"p"},"crowdloan.contribute")," extrinsic)\nguarantees that you receive your tokens after the campaign ends. If you intend to contribute through\nother websites and custodial service providers like central exchanges, review their terms and\nconditions thoroughly and assess the associated risks.")),(0,i.kt)("p",null,"Note: When the lease periods won by the crowdloan have finished, or the crowdloan has ended without\nwinning a slot, anyone can trigger the refund of crowdloan contributions back to their original\nowners. This can be done through the permissionless ",(0,i.kt)("inlineCode",{parentName:"p"},"crowdloan.refund")," extrinsic available on\nPolkadot JS Apps > Developer > Extrinsics page, by specifying the parachain ID. This extrinsic may\nneed to be issued multiple times if the list of contributors is too long. All contributions must be\nreturned before the crowdloan is entirely deleted."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Crowdloan refund",src:t(72239).Z,width:"1440",height:"552"})),(0,i.kt)("p",null,"Many projects will have dashboards that allow users to participate in their crowdloans. PolkadotJS\napps also offer a breakdown of ongoing crowdloans on the\n",(0,i.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Fkusama-rpc.polkadot.io#/parachains/crowdloan"},"Apps page"),"."),(0,i.kt)("p",null,"Here is an example of the crowdloans in play during the very first Kusama auction."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"crowdloan dashboard",src:t(30931).Z,width:"2328",height:"1540"})),(0,i.kt)("p",null,"Furthermore, check out this video on\n",(0,i.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=YrTxDufrcQM"},"How to Participate in Crowdloans")," for steps on how to\naccess available crowdloans on PolkadotJS apps."))}w.isMDXComponent=!0},72239:(e,a,t)=>{"use strict";t.d(a,{Z:()=>n});const n=t.p+"assets/images/crowdloan-refund-a452b6b303e27c25b3e87c42577a9265.png"},30931:(e,a,t)=>{"use strict";t.d(a,{Z:()=>n});const n=t.p+"assets/images/kusama-crowdloans-0237f5d573dee5e221b51678b2ed25f1.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/6d5c9a28.68b7dfbe.js b/assets/js/6d5c9a28.68b7dfbe.js deleted file mode 100644 index d3f4fb5da922..000000000000 --- a/assets/js/6d5c9a28.68b7dfbe.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2119],{3905:(t,a,e)=>{e.d(a,{Zo:()=>d,kt:()=>h});var n=e(67294);function o(t,a,e){return a in t?Object.defineProperty(t,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[a]=e,t}function s(t,a){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable}))),e.push.apply(e,n)}return e}function i(t){for(var a=1;a=0||(o[e]=t[e]);return o}(t,a);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var l=n.createContext({}),p=function(t){var a=n.useContext(l),e=a;return t&&(e="function"==typeof t?t(a):i(i({},a),t)),e},d=function(t){var a=p(t.components);return n.createElement(l.Provider,{value:a},t.children)},c="mdxType",u={inlineCode:"code",wrapper:function(t){var a=t.children;return n.createElement(n.Fragment,{},a)}},k=n.forwardRef((function(t,a){var e=t.components,o=t.mdxType,s=t.originalType,l=t.parentName,d=r(t,["components","mdxType","originalType","parentName"]),c=p(e),k=o,h=c["".concat(l,".").concat(k)]||c[k]||u[k]||s;return e?n.createElement(h,i(i({ref:a},d),{},{components:e})):n.createElement(h,i({ref:a},d))}));function h(t,a){var e=arguments,o=a&&a.mdxType;if("string"==typeof t||o){var s=e.length,i=new Array(s);i[0]=k;var r={};for(var l in a)hasOwnProperty.call(a,l)&&(r[l]=a[l]);r.originalType=t,r[c]="string"==typeof t?t:o,i[1]=r;for(var p=2;p{e.r(a),e.d(a,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>r,metadata:()=>p,toc:()=>c});var n=e(87462),o=e(63366),s=(e(67294),e(3905)),i=["components"],r={id:"staking-apps",title:"Polkadot Staking Apps",sidebar_label:"Staking Apps",description:"Staking Apps in the Polkadot Ecosystem.",keywords:["staking","stake","nominate","nominating","NPoS","staking dashboard"],slug:"../staking-apps"},l=void 0,p={unversionedId:"general/staking-apps",id:"general/staking-apps",title:"Polkadot Staking Apps",description:"Staking Apps in the Polkadot Ecosystem.",source:"@site/../docs/general/staking-apps.md",sourceDirName:"general",slug:"/staking-apps",permalink:"/docs/staking-apps",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/staking-apps.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1702280956,formattedLastUpdatedAt:"Dec 11, 2023",frontMatter:{id:"staking-apps",title:"Polkadot Staking Apps",sidebar_label:"Staking Apps",description:"Staking Apps in the Polkadot Ecosystem.",keywords:["staking","stake","nominate","nominating","NPoS","staking dashboard"],slug:"../staking-apps"},sidebar:"docs",previous:{title:"Apps",permalink:"/docs/apps-index"},next:{title:"Governance Apps",permalink:"/docs/governance-apps"}},d={},c=[{value:"Polkadot Staking Dashboard",id:"polkadot-staking-dashboard",level:2},{value:"Sub.ID",id:"subid",level:2},{value:"NOMI",id:"nomi",level:2},{value:"SubWallet Earning",id:"subwallet-earning",level:2}],u={toc:c},k="wrapper";function h(t){var a=t.components,e=(0,o.Z)(t,i);return(0,s.kt)(k,(0,n.Z)({},u,e,{components:a,mdxType:"MDXLayout"}),(0,s.kt)("admonition",{title:"Community Page",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"This page is open to contributions from the community. Please follow the\n",(0,s.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation"},"Wiki contribution guidelines"),"\nand add your protocol native, permissionless, non-custodial NPoS Staking app to this page.")),(0,s.kt)("ul",null,(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"#polkadot-staking-dashboard"},"Polkadot Staking Dashboard")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"#subid"},"Sub.ID")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"#nomi"},"NOMI")),(0,s.kt)("li",{parentName:"ul"},(0,s.kt)("a",{parentName:"li",href:"#subwallet-earning"},"SubWallet Earning"))),(0,s.kt)("h2",{id:"polkadot-staking-dashboard"},"Polkadot Staking Dashboard"),(0,s.kt)("p",null,"The ",(0,s.kt)("a",{parentName:"p",href:"https://staking.polkadot.network/#/overview"},"Polkadot Staking Dashboard")," is a web3 application\ndedicated to native non-custodial ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking")," on the\nPolkadot relay chain. The dashboard allows to\nstake as a solo nominator or as a ",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pool")," member.\nUsers can also create their nomination pools. The dashboard supports ",(0,s.kt)("a",{parentName:"p",href:"/docs/ledger"},"Ledger"),",\n",(0,s.kt)("a",{parentName:"p",href:"/docs/polkadot-vault"},"Polkadot Vault"),",\n",(0,s.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions#subwallet"},"SubWallet"),",\n",(0,s.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions#talisman"},"Talisman"),", WalletConnect, Fearless Wallet,\nPolkaGate, and Enkrypt. The dashboard also supports\n",(0,s.kt)("a",{parentName:"p",href:"/docs/learn-proxies#staking-proxy"},"staking proxies"),"."),(0,s.kt)("p",null,"You can find more information about the Polkadot staking dashboard on the dedicated\n",(0,s.kt)("a",{parentName:"p",href:"/docs/staking-dashboard"},"wiki page")," and\n",(0,s.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/folders/65000157523"},"support articles"),"."),(0,s.kt)("p",null,"Below a list of video tutorial about the Polkadot Staking Dashboard."),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtu.be/F59N3YKYCRs?feature=shared"},(0,s.kt)("img",{class:"guide-image",src:"https://img.youtube.com/vi/F59N3YKYCRs/0.jpg",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Nominate")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtu.be/dDIG7QAApig?feature=shared"},(0,s.kt)("img",{class:"guide-image",src:"https://img.youtube.com/vi/dDIG7QAApig/0.jpg",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Join a Nomination Pool")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtu.be/hvXLc4H7rA4?feature=shared"},(0,s.kt)("img",{class:"guide-image",src:"https://img.youtube.com/vi/hvXLc4H7rA4/0.jpg",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Staking Dashboard Walkthrough"))))),(0,s.kt)("br",null),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtu.be/58pIe8tt2o4?feature=shared"},(0,s.kt)("img",{class:"guide-image",src:"https://img.youtube.com/vi/58pIe8tt2o4/0.jpg",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"After Staking")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtu.be/aTFWhwy_Mxg?feature=shared"},(0,s.kt)("img",{class:"guide-image",src:"https://img.youtube.com/vi/aTFWhwy_Mxg/0.jpg",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Create, Manage & Destroy Pools"))))),(0,s.kt)("h2",{id:"subid"},"Sub.ID"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://sub.id/"},"Sub.ID")," is a one-stop-shop for managing your Polkadot accounts, viewing your\naddresses and balances, and looking at other accounts."),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://sub.id/"},(0,s.kt)("img",{parentName:"a",src:"https://cdn.discordapp.com/attachments/893485384154095640/1166807359411204228/image.png?ex=654bd508&is=65396008&hm=ddf3dc26f525d0021df4d8879f19973b81040514bfb10423e748d397c7a66329&",alt:null}))),(0,s.kt)("p",null,"It features a Polkadot ",(0,s.kt)("a",{parentName:"p",href:"https://sub.id/validator/polkadot"},"staking page"),", where you can easily start\nstaking DOT. Stakers can choose their preferred\nvalidators or stake with the recommended validator set."),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://sub.id/validator/polkadot"},(0,s.kt)("img",{parentName:"a",src:"https://cdn.discordapp.com/attachments/893485384154095640/1166807508837474394/image.png?ex=654bd52c&is=6539602c&hm=f78e346cfd364529b1b03d5207a8ad0cd100fc5093ee832eece397e788200cf0&",alt:null}))),(0,s.kt)("h2",{id:"nomi"},"NOMI"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://apps.turboflakes.io/?app=nomi"},"NOMI")," is designed to actively involve Nominators in Native\nStaking within the Polkadot networks. It aims\nto offer a unique and enhanced nomination experience, using\n",(0,s.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Multiple-criteria_decision_analysis"},"Multiple-Criteria Decision Analysis"),"\n(MCDA) as a base for the analytical research. MCDA is an open and transparent approach for\nevaluating numerous conflicting traits in the decision-making process. For the analysis, validator\ndata is collected at the last block of every session."),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://turboflakes.io/"},(0,s.kt)("img",{parentName:"a",src:"https://github.com/turboflakes/apps/blob/main/src/assets/nomi_dashboard.webp?raw=true",alt:null}))),(0,s.kt)("p",null,"source: ",(0,s.kt)("a",{parentName:"p",href:"https://github.com/turboflakes/apps"},"https://github.com/turboflakes/apps")),(0,s.kt)("h2",{id:"subwallet-earning"},"SubWallet Earning"),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://web.subwallet.app/"},"SubWallet Web Dashboard")," is the all-in-one solution to manage assets\nand stake on multiple networks in the Polkadot, Kusama and Polkadot SDK (Substrate) ecosystems."),(0,s.kt)("p",null,"The Web Dashboard features an Earning tab which allows users to stake DOT easily via native\nnomination pools, as well as in liquid staking and lending protocols, without having to manage\nmultiple applications with different interfaces and experiences."),(0,s.kt)("p",null,(0,s.kt)("a",{parentName:"p",href:"https://web.subwallet.app/"},(0,s.kt)("img",{parentName:"a",src:"https://cdn.discordapp.com/attachments/865823369092661279/1181493922166493214/earning_tab.gif?ex=658142f6&is=656ecdf6&hm=b02716903c18d046896c59eb1c5935518f75cf9f52845c1636609ccaf43c57cd&",alt:null}))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/6d5c9a28.783b1699.js b/assets/js/6d5c9a28.783b1699.js new file mode 100644 index 000000000000..e7992db47194 --- /dev/null +++ b/assets/js/6d5c9a28.783b1699.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2119],{3905:(t,e,a)=>{a.d(e,{Zo:()=>d,kt:()=>h});var n=a(67294);function o(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function r(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 s(t){for(var e=1;e=0||(o[a]=t[a]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(o[a]=t[a])}return o}var l=n.createContext({}),p=function(t){var e=n.useContext(l),a=e;return t&&(a="function"==typeof t?t(e):s(s({},e),t)),a},d=function(t){var e=p(t.components);return n.createElement(l.Provider,{value:e},t.children)},u="mdxType",c={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,o=t.mdxType,r=t.originalType,l=t.parentName,d=i(t,["components","mdxType","originalType","parentName"]),u=p(a),k=o,h=u["".concat(l,".").concat(k)]||u[k]||c[k]||r;return a?n.createElement(h,s(s({ref:e},d),{},{components:a})):n.createElement(h,s({ref:e},d))}));function h(t,e){var a=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var r=a.length,s=new Array(r);s[0]=k;var i={};for(var l in e)hasOwnProperty.call(e,l)&&(i[l]=e[l]);i.originalType=t,i[u]="string"==typeof t?t:o,s[1]=i;for(var p=2;p{a.r(e),a.d(e,{assets:()=>d,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>p,toc:()=>u});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),s=["components"],i={id:"staking-apps",title:"Polkadot Staking Apps",sidebar_label:"Staking Apps",description:"Staking Apps in the Polkadot Ecosystem.",keywords:["staking","stake","nominate","nominating","NPoS","staking dashboard"],slug:"../staking-apps"},l=void 0,p={unversionedId:"general/staking-apps",id:"general/staking-apps",title:"Polkadot Staking Apps",description:"Staking Apps in the Polkadot Ecosystem.",source:"@site/../docs/general/staking-apps.md",sourceDirName:"general",slug:"/staking-apps",permalink:"/docs/staking-apps",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/staking-apps.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"staking-apps",title:"Polkadot Staking Apps",sidebar_label:"Staking Apps",description:"Staking Apps in the Polkadot Ecosystem.",keywords:["staking","stake","nominate","nominating","NPoS","staking dashboard"],slug:"../staking-apps"},sidebar:"docs",previous:{title:"Apps",permalink:"/docs/apps-index"},next:{title:"Governance Apps",permalink:"/docs/governance-apps"}},d={},u=[{value:"Polkadot Staking Dashboard",id:"polkadot-staking-dashboard",level:2},{value:"Sub.ID",id:"subid",level:2},{value:"NOMI",id:"nomi",level:2},{value:"SubWallet Earning",id:"subwallet-earning",level:2}],c={toc:u},k="wrapper";function h(t){var e=t.components,a=(0,o.Z)(t,s);return(0,r.kt)(k,(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Community Page",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This page is open to contributions from the community. Please follow the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation"},"Wiki contribution guidelines"),"\nand add your protocol native, permissionless, non-custodial NPoS Staking app to this page.")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#polkadot-staking-dashboard"},"Polkadot Staking Dashboard")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#subid"},"Sub.ID")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#nomi"},"NOMI")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#subwallet-earning"},"SubWallet Earning"))),(0,r.kt)("h2",{id:"polkadot-staking-dashboard"},"Polkadot Staking Dashboard"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://staking.polkadot.network/#/overview"},"Polkadot Staking Dashboard")," is a web3 application\ndedicated to native non-custodial ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking")," on the\nPolkadot relay chain. The dashboard allows to\nstake as a solo nominator or as a ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pool")," member.\nUsers can also create their nomination pools. The dashboard supports ",(0,r.kt)("a",{parentName:"p",href:"/docs/ledger"},"Ledger"),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadot-vault"},"Polkadot Vault"),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions#subwallet"},"SubWallet"),",\n",(0,r.kt)("a",{parentName:"p",href:"/docs/wallets-and-extensions#talisman"},"Talisman"),", WalletConnect, Fearless Wallet,\nPolkaGate, and Enkrypt. The dashboard also supports\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies#staking-proxy"},"staking proxies"),"."),(0,r.kt)("p",null,"You can find more information about the Polkadot staking dashboard on the dedicated\n",(0,r.kt)("a",{parentName:"p",href:"/docs/staking-dashboard"},"wiki page")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/folders/65000157523"},"support articles"),"."),(0,r.kt)("p",null,"Below a list of video tutorial about the Polkadot Staking Dashboard."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtu.be/F59N3YKYCRs?feature=shared"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/F59N3YKYCRs/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtu.be/F59N3YKYCRs?feature=shared"},"Stake your DOT"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtu.be/dDIG7QAApig?feature=shared"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/dDIG7QAApig/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtu.be/dDIG7QAApig?feature=shared"},"Join a Nomination Pool"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtu.be/hvXLc4H7rA4?feature=shared"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/hvXLc4H7rA4/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtu.be/hvXLc4H7rA4?feature=shared"},"Staking Dashboard Walkthrough")))),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtu.be/58pIe8tt2o4?feature=shared"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/58pIe8tt2o4/0.jpg",width:"300",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtu.be/58pIe8tt2o4?feature=shared"},"After Staking"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtu.be/aTFWhwy_Mxg?feature=shared"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/aTFWhwy_Mxg/0.jpg",width:"300",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtu.be/aTFWhwy_Mxg?feature=shared"},"Create, Manage & Destroy Pools")))),(0,r.kt)("h2",{id:"subid"},"Sub.ID"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://sub.id/"},"Sub.ID")," is a one-stop-shop for managing your Polkadot accounts, viewing your\naddresses and balances, and looking at other accounts."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://sub.id/"},(0,r.kt)("img",{parentName:"a",src:"https://cdn.discordapp.com/attachments/893485384154095640/1166807359411204228/image.png?ex=654bd508&is=65396008&hm=ddf3dc26f525d0021df4d8879f19973b81040514bfb10423e748d397c7a66329&",alt:null}))),(0,r.kt)("p",null,"It features a Polkadot ",(0,r.kt)("a",{parentName:"p",href:"https://sub.id/validator/polkadot"},"staking page"),", where you can easily start\nstaking DOT. Stakers can choose their preferred\nvalidators or stake with the recommended validator set."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://sub.id/validator/polkadot"},(0,r.kt)("img",{parentName:"a",src:"https://cdn.discordapp.com/attachments/893485384154095640/1166807508837474394/image.png?ex=654bd52c&is=6539602c&hm=f78e346cfd364529b1b03d5207a8ad0cd100fc5093ee832eece397e788200cf0&",alt:null}))),(0,r.kt)("h2",{id:"nomi"},"NOMI"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://apps.turboflakes.io/?app=nomi"},"NOMI")," is designed to actively involve Nominators in Native\nStaking within the Polkadot networks. It aims\nto offer a unique and enhanced nomination experience, using\n",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Multiple-criteria_decision_analysis"},"Multiple-Criteria Decision Analysis"),"\n(MCDA) as a base for the analytical research. MCDA is an open and transparent approach for\nevaluating numerous conflicting traits in the decision-making process. For the analysis, validator\ndata is collected at the last block of every session."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://turboflakes.io/"},(0,r.kt)("img",{parentName:"a",src:"https://github.com/turboflakes/apps/blob/main/src/assets/nomi_dashboard.webp?raw=true",alt:null}))),(0,r.kt)("p",null,"source: ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/turboflakes/apps"},"https://github.com/turboflakes/apps")),(0,r.kt)("h2",{id:"subwallet-earning"},"SubWallet Earning"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://web.subwallet.app/"},"SubWallet Web Dashboard")," is the all-in-one solution to manage assets\nand stake on multiple networks in the Polkadot, Kusama and Polkadot SDK (Substrate) ecosystems."),(0,r.kt)("p",null,"The Web Dashboard features an Earning tab which allows users to stake DOT easily via native\nnomination pools, as well as in liquid staking and lending protocols, without having to manage\nmultiple applications with different interfaces and experiences."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://web.subwallet.app/"},(0,r.kt)("img",{parentName:"a",src:"https://cdn.discordapp.com/attachments/865823369092661279/1181493922166493214/earning_tab.gif?ex=658142f6&is=656ecdf6&hm=b02716903c18d046896c59eb1c5935518f75cf9f52845c1636609ccaf43c57cd&",alt:null}))))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9528ac88.1fbe91c6.js b/assets/js/9528ac88.1fbe91c6.js new file mode 100644 index 000000000000..9cf705ee7716 --- /dev/null +++ b/assets/js/9528ac88.1fbe91c6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[315],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>u});var n=t(67294);function s(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(s[t]=e[t]);return s}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}var l=n.createContext({}),p=function(e){var a=n.useContext(l),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},c=function(e){var a=p(e.components);return n.createElement(l.Provider,{value:a},e.children)},m="mdxType",d={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},h=n.forwardRef((function(e,a){var t=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=p(t),h=s,u=m["".concat(l,".").concat(h)]||m[h]||d[h]||i;return t?n.createElement(u,r(r({ref:a},c),{},{components:t})):n.createElement(u,r({ref:a},c))}));function u(e,a){var t=arguments,s=a&&a.mdxType;if("string"==typeof e||s){var i=t.length,r=new Array(i);r[0]=h;var o={};for(var l in a)hasOwnProperty.call(a,l)&&(o[l]=a[l]);o.originalType=e,o[m]="string"==typeof e?e:s,r[1]=o;for(var p=2;p{t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>p,toc:()=>m});var n=t(87462),s=t(63366),i=(t(67294),t(3905)),r=["components"],o={id:"learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",sidebar_label:"XCM Transport",description:"Methods to send XCM Messages across Networks.",keywords:["cross-consensus","XCM","XCMP","interoperability","communication"],slug:"../learn-xcm-transport"},l=void 0,p={unversionedId:"learn/learn-xcm-transport",id:"learn/learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",description:"Methods to send XCM Messages across Networks.",source:"@site/../docs/learn/learn-xcm-transport.md",sourceDirName:"learn",slug:"/learn-xcm-transport",permalink:"/docs/learn-xcm-transport",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-xcm-transport.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",sidebar_label:"XCM Transport",description:"Methods to send XCM Messages across Networks.",keywords:["cross-consensus","XCM","XCMP","interoperability","communication"],slug:"../learn-xcm-transport"},sidebar:"docs",previous:{title:"XCM Use-cases",permalink:"/docs/learn-xcm-usecases"},next:{title:"XCM Virtual Machine (XCVM)",permalink:"/docs/learn-xcvm"}},c={},m=[{value:"XCMP (Cross-Chain Message Passing)",id:"xcmp-cross-chain-message-passing",level:3},{value:"VMP (Vertical Message Passing)",id:"vmp-vertical-message-passing",level:3},{value:"HRMP (XCMP-Lite)",id:"hrmp-xcmp-lite",level:3},{value:"XCMP (Cross Consensus Message Passing) Design Summary",id:"xcmp-cross-consensus-message-passing-design-summary",level:3},{value:"The Anatomy of an XCMP Interaction",id:"the-anatomy-of-an-xcmp-interaction",level:4}],d={toc:m},h="wrapper";function u(e){var a=e.components,o=(0,s.Z)(e,r);return(0,i.kt)(h,(0,n.Z)({},d,o,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{title:"XCM Documentation",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"For a more practical approach to utilizing XCM, refer to the ",(0,i.kt)("a",{parentName:"p",href:"./learn/xcm"},"XCM Docs"),". Please keep in\nmind that XCM is under active development.")),(0,i.kt)("p",null,"With the XCM format established, common patterns for protocols of these messages are needed.\nPolkadot implements two message passing\nprotocols for acting on XCM messages between its constituent parachains."),(0,i.kt)("p",null,"There are three primary methods for message passing, one of which is under development:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"XCMP (Cross-Consensus Message Passing)"),(0,i.kt)("li",{parentName:"ol"},"Horizontal Relay-routed Message Passing (HRMP/XCMP-lite)"),(0,i.kt)("li",{parentName:"ol"},"VMP (Vertical Message Passing)")),(0,i.kt)("h3",{id:"xcmp-cross-chain-message-passing"},"XCMP (Cross-Chain Message Passing)"),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"XCMP is currently under development, and most of the cross-chain messages pass through HRMP channels\nfor the time being.")),(0,i.kt)("p",null,"XCM is related to XCMP in the same way that REST is related to RESTful."),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"Cross-Consensus Message Passing")," secure message passing between parachains. There are two variants:\n",(0,i.kt)("em",{parentName:"p"},"Direct")," and ",(0,i.kt)("em",{parentName:"p"},"Relayed"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"With ",(0,i.kt)("em",{parentName:"li"},"Direct"),", message data goes direct between parachains and is O(1) on the side of the\nRelay-chain and is very scalable."),(0,i.kt)("li",{parentName:"ul"},"With ",(0,i.kt)("em",{parentName:"li"},"Relayed"),", message data is passed via the Relay-chain, and piggy-backs over VMP. It is much\nless scalable, and parathreads in particular may not receive messages due to excessive queue\ngrowth.")),(0,i.kt)("p",null,"Cross-chain transactions are resolved using a simple queuing mechanism based around a Merkle tree to\nensure fidelity. It is the task of the Relay Chain validators to move transactions on the output\nqueue of one parachain into the input queue of the destination parachain. However, only the\nassociated metadata is stored as a hash in the Relay Chain storage."),(0,i.kt)("p",null,"The input and output queue are sometimes referred to in the\nPolkadot codebase and associated documentation\nas ",(0,i.kt)("inlineCode",{parentName:"p"},"ingress")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"egress")," messages, respectively."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"For detailed information about VMP see dedicated section in\n",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot/book/messaging.html#horizontal-message-passing"},"The Polkadot Parachain Host Implementers' Guide"),".")),(0,i.kt)("h3",{id:"vmp-vertical-message-passing"},"VMP (Vertical Message Passing)"),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"Vertical Message Passing")," message passing between the Relay-chain itself and a parachain. Message\ndata in both cases exists on the Relay-chain and are interpreted by the relay chain according to\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-xcm/#cross-consensus-message-format-xcm"},"XCM")," standards. This includes:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("h4",{parentName:"li",id:"ump-upward-message-passing"},"UMP (Upward Message Passing)"),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("em",{parentName:"p"},"Upward Message Passing")," message passing from a parachain to the Relay-chain.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("h4",{parentName:"li",id:"dmp-downward-message-passing"},"DMP (Downward Message Passing)"),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("em",{parentName:"p"},"Downward Message Passing")," message passing from the Relay-chain to a parachain."))),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"For detailed information about VMP see dedicated section in\n",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot/book/messaging.html#vertical-message-passing"},"The Polkadot Parachain Host Implementers' Guide"),".")),(0,i.kt)("h3",{id:"hrmp-xcmp-lite"},"HRMP (XCMP-Lite)"),(0,i.kt)("p",null,"While XCMP is still being implemented, a stop-gap protocol (see definition below) known as\n",(0,i.kt)("strong",{parentName:"p"},"Horizontal Relay-routed Message Passing (HRMP)")," exists in its place. HRMP has the same interface\nand functionality as XCMP but is much more demanding on resources since it stores all messages in\nthe Relay Chain storage. When XCMP has been implemented, HRMP is planned to be deprecated and phased\nout in favor of it."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"xcm",src:t(20267).Z,width:"2664",height:"1754"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"A stop-gap protocol is a temporary substitute for the functionality that is not fully complete.\nWhile XCMP proper is still in development, HRMP is a working replacement.")),(0,i.kt)("p",null,"A tutorial on how to open an HRMP channel on a parachain can be found\n",(0,i.kt)("a",{parentName:"p",href:"/docs/build-hrmp-channels"},"here"),"."),(0,i.kt)("h3",{id:"xcmp-cross-consensus-message-passing-design-summary"},"XCMP (Cross Consensus Message Passing) Design Summary"),(0,i.kt)("div",{className:"row"},(0,i.kt)("div",{className:"col text--center"},(0,i.kt)("a",{href:"https://www.youtube.com/watch?v=tOnzk4AROUY"},(0,i.kt)("img",{src:"https://img.youtube.com/vi/tOnzk4AROUY/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,i.kt)("p",null,(0,i.kt)("a",{href:"https://www.youtube.com/watch?v=tOnzk4AROUY"},"XCMP Explained")))),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"XCMP is not yet implemented. The following illustrates the overall design goals and expectations for\nXCMP.")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Cross-chain messages will ",(0,i.kt)("em",{parentName:"li"},"not")," be delivered to the Relay Chain."),(0,i.kt)("li",{parentName:"ul"},"Cross-chain messages will be constrained to a maximum size specified in bytes."),(0,i.kt)("li",{parentName:"ul"},"Parachains are allowed to block messages from other parachains, in which case the dispatching\nparachain would be aware of this block."),(0,i.kt)("li",{parentName:"ul"},"Collator nodes are responsible for routing messages between chains."),(0,i.kt)("li",{parentName:"ul"},"Collators produce a list of ",(0,i.kt)("inlineCode",{parentName:"li"},"egress")," messages and will receive the ",(0,i.kt)("inlineCode",{parentName:"li"},"ingress")," messages from other\nparachains."),(0,i.kt)("li",{parentName:"ul"},"On each block, parachains are expected to route messages from some subset of all other parachains."),(0,i.kt)("li",{parentName:"ul"},"When a collator produces a new block to hand off to a validator, it will collect the latest\ningress queue information and process it."),(0,i.kt)("li",{parentName:"ul"},"Validators will check the proof that the new candidate for the next parachain block includes the\nprocessing of the expected ingress messages to that parachain.")),(0,i.kt)("p",null,"XCMP queues must be initiated by first opening a channel between two parachains. The channel is\nidentified by both the sender and recipient parachains, meaning that it's a one-way channel. A pair\nof parachains can have at most establish two channels between them, one for sending messages to the\nother chain and another for receiving messages. The channel will require a deposit in DOT to be\nopened, which will get returned when the channel is closed."),(0,i.kt)("h4",{id:"the-anatomy-of-an-xcmp-interaction"},"The Anatomy of an XCMP Interaction"),(0,i.kt)("p",null,"A smart contract that exists on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," will route a message to parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," in which another\nsmart contract is called that makes a transfer of some assets within that chain."),(0,i.kt)("p",null,"Charlie executes the smart contract on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A"),", which initiates a new cross-chain message for\nthe destination of a smart contract on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B"),"."),(0,i.kt)("p",null,"The collator node of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," will place this new cross-chain message into its outbound\nmessages queue, along with a ",(0,i.kt)("inlineCode",{parentName:"p"},"destination")," and a ",(0,i.kt)("inlineCode",{parentName:"p"},"timestamp"),"."),(0,i.kt)("p",null,"The collator node of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," routinely pings all other collator nodes asking for new messages\n(filtering by the ",(0,i.kt)("inlineCode",{parentName:"p"},"destination")," field). When the collator of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," makes its next ping, it\nwill see this new message on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," and add it into its own inbound queue for processing into\nthe next block."),(0,i.kt)("p",null,"Validators for parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," will also read the outbound queue and know the message. Validators for\nparachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," will do the same. This is so that they will be able to verify the message transmission\nhappened."),(0,i.kt)("p",null,"When the collator of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," is building the next block in its chain, it will process the new\nmessage in its inbound queue as well as any other messages it may have found/received."),(0,i.kt)("p",null,"During processing, the message will execute the smart contract on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," and complete the\nasset transfer as intended."),(0,i.kt)("p",null,"The collator now hands this block to the validator, which itself will verify that this message was\nprocessed. If the message was processed and all other aspects of the block are valid, the validator\nwill include this block for parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," into the Relay Chain."))}u.isMDXComponent=!0},20267:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/hrmp-ex-d985c82747b653714ff4cde293e1eccc.png"}}]); \ No newline at end of file diff --git a/assets/js/9528ac88.5a1a76c0.js b/assets/js/9528ac88.5a1a76c0.js deleted file mode 100644 index 69bfe9302c9f..000000000000 --- a/assets/js/9528ac88.5a1a76c0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[315],{3905:(e,a,t)=>{t.d(a,{Zo:()=>c,kt:()=>u});var n=t(67294);function s(e,a,t){return a in e?Object.defineProperty(e,a,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[a]=t,e}function i(e,a){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);a&&(n=n.filter((function(a){return Object.getOwnPropertyDescriptor(e,a).enumerable}))),t.push.apply(t,n)}return t}function r(e){for(var a=1;a=0||(s[t]=e[t]);return s}(e,a);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(s[t]=e[t])}return s}var l=n.createContext({}),p=function(e){var a=n.useContext(l),t=a;return e&&(t="function"==typeof e?e(a):r(r({},a),e)),t},c=function(e){var a=p(e.components);return n.createElement(l.Provider,{value:a},e.children)},m="mdxType",h={inlineCode:"code",wrapper:function(e){var a=e.children;return n.createElement(n.Fragment,{},a)}},d=n.forwardRef((function(e,a){var t=e.components,s=e.mdxType,i=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=p(t),d=s,u=m["".concat(l,".").concat(d)]||m[d]||h[d]||i;return t?n.createElement(u,r(r({ref:a},c),{},{components:t})):n.createElement(u,r({ref:a},c))}));function u(e,a){var t=arguments,s=a&&a.mdxType;if("string"==typeof e||s){var i=t.length,r=new Array(i);r[0]=d;var o={};for(var l in a)hasOwnProperty.call(a,l)&&(o[l]=a[l]);o.originalType=e,o[m]="string"==typeof e?e:s,r[1]=o;for(var p=2;p{t.r(a),t.d(a,{assets:()=>c,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>p,toc:()=>m});var n=t(87462),s=t(63366),i=(t(67294),t(3905)),r=["components"],o={id:"learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",sidebar_label:"XCM Transport",description:"Methods to send XCM Messages across Networks.",keywords:["cross-consensus","XCM","XCMP","interoperability","communication"],slug:"../learn-xcm-transport"},l=void 0,p={unversionedId:"learn/learn-xcm-transport",id:"learn/learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",description:"Methods to send XCM Messages across Networks.",source:"@site/../docs/learn/learn-xcm-transport.md",sourceDirName:"learn",slug:"/learn-xcm-transport",permalink:"/docs/learn-xcm-transport",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-xcm-transport.md",tags:[],version:"current",lastUpdatedBy:"Radha",lastUpdatedAt:1695304296,formattedLastUpdatedAt:"Sep 21, 2023",frontMatter:{id:"learn-xcm-transport",title:"XCM Transport Methods (XCMP, HRMP, VMP)",sidebar_label:"XCM Transport",description:"Methods to send XCM Messages across Networks.",keywords:["cross-consensus","XCM","XCMP","interoperability","communication"],slug:"../learn-xcm-transport"},sidebar:"docs",previous:{title:"XCM Use-cases",permalink:"/docs/learn-xcm-usecases"},next:{title:"XCM Virtual Machine (XCVM)",permalink:"/docs/learn-xcvm"}},c={},m=[{value:"XCMP (Cross-Chain Message Passing)",id:"xcmp-cross-chain-message-passing",level:3},{value:"VMP (Vertical Message Passing)",id:"vmp-vertical-message-passing",level:3},{value:"HRMP (XCMP-Lite)",id:"hrmp-xcmp-lite",level:3},{value:"XCMP (Cross Consensus Message Passing) Design Summary",id:"xcmp-cross-consensus-message-passing-design-summary",level:3},{value:"The Anatomy of an XCMP Interaction",id:"the-anatomy-of-an-xcmp-interaction",level:4}],h={toc:m},d="wrapper";function u(e){var a=e.components,o=(0,s.Z)(e,r);return(0,i.kt)(d,(0,n.Z)({},h,o,{components:a,mdxType:"MDXLayout"}),(0,i.kt)("admonition",{title:"XCM Documentation",type:"info"},(0,i.kt)("p",{parentName:"admonition"},"For a more practical approach to utilizing XCM, refer to the ",(0,i.kt)("a",{parentName:"p",href:"./learn/xcm"},"XCM Docs"),". Please keep in\nmind that XCM is under active development.")),(0,i.kt)("p",null,"With the XCM format established, common patterns for protocols of these messages are needed.\nPolkadot implements two message passing\nprotocols for acting on XCM messages between its constituent parachains."),(0,i.kt)("p",null,"There are three primary methods for message passing, one of which is under development:"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"XCMP (Cross-Consensus Message Passing)"),(0,i.kt)("li",{parentName:"ol"},"Horizontal Relay-routed Message Passing (HRMP/XCMP-lite)"),(0,i.kt)("li",{parentName:"ol"},"VMP (Vertical Message Passing)")),(0,i.kt)("h3",{id:"xcmp-cross-chain-message-passing"},"XCMP (Cross-Chain Message Passing)"),(0,i.kt)("admonition",{type:"caution"},(0,i.kt)("p",{parentName:"admonition"},"XCMP is currently under development, and most of the cross-chain messages pass through HRMP channels\nfor the time being.")),(0,i.kt)("p",null,"XCM is related to XCMP in the same way that REST is related to RESTful."),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"Cross-Consensus Message Passing")," secure message passing between parachains. There are two variants:\n",(0,i.kt)("em",{parentName:"p"},"Direct")," and ",(0,i.kt)("em",{parentName:"p"},"Relayed"),"."),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"With ",(0,i.kt)("em",{parentName:"li"},"Direct"),", message data goes direct between parachains and is O(1) on the side of the\nRelay-chain and is very scalable."),(0,i.kt)("li",{parentName:"ul"},"With ",(0,i.kt)("em",{parentName:"li"},"Relayed"),", message data is passed via the Relay-chain, and piggy-backs over VMP. It is much\nless scalable, and parathreads in particular may not receive messages due to excessive queue\ngrowth.")),(0,i.kt)("p",null,"Cross-chain transactions are resolved using a simple queuing mechanism based around a Merkle tree to\nensure fidelity. It is the task of the Relay Chain validators to move transactions on the output\nqueue of one parachain into the input queue of the destination parachain. However, only the\nassociated metadata is stored as a hash in the Relay Chain storage."),(0,i.kt)("p",null,"The input and output queue are sometimes referred to in the\nPolkadot codebase and associated documentation\nas ",(0,i.kt)("inlineCode",{parentName:"p"},"ingress")," and ",(0,i.kt)("inlineCode",{parentName:"p"},"egress")," messages, respectively."),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"For detailed information about VMP see dedicated section in\n",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot/book/messaging.html#horizontal-message-passing"},"The Polkadot Parachain Host Implementers' Guide"),".")),(0,i.kt)("h3",{id:"vmp-vertical-message-passing"},"VMP (Vertical Message Passing)"),(0,i.kt)("p",null,(0,i.kt)("em",{parentName:"p"},"Vertical Message Passing")," message passing between the Relay-chain itself and a parachain. Message\ndata in both cases exists on the Relay-chain and are interpreted by the relay chain according to\n",(0,i.kt)("a",{parentName:"p",href:"/docs/learn-xcm/#cross-consensus-message-format-xcm"},"XCM")," standards. This includes:"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("h4",{parentName:"li",id:"ump-upward-message-passing"},"UMP (Upward Message Passing)"),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("em",{parentName:"p"},"Upward Message Passing")," message passing from a parachain to the Relay-chain.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("h4",{parentName:"li",id:"dmp-downward-message-passing"},"DMP (Downward Message Passing)"),(0,i.kt)("p",{parentName:"li"},(0,i.kt)("em",{parentName:"p"},"Downward Message Passing")," message passing from the Relay-chain to a parachain."))),(0,i.kt)("admonition",{type:"info"},(0,i.kt)("p",{parentName:"admonition"},"For detailed information about VMP see dedicated section in\n",(0,i.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot/book/messaging.html#vertical-message-passing"},"The Polkadot Parachain Host Implementers' Guide"),".")),(0,i.kt)("h3",{id:"hrmp-xcmp-lite"},"HRMP (XCMP-Lite)"),(0,i.kt)("p",null,"While XCMP is still being implemented, a stop-gap protocol (see definition below) known as\n",(0,i.kt)("strong",{parentName:"p"},"Horizontal Relay-routed Message Passing (HRMP)")," exists in its place. HRMP has the same interface\nand functionality as XCMP but is much more demanding on resources since it stores all messages in\nthe Relay Chain storage. When XCMP has been implemented, HRMP is planned to be deprecated and phased\nout in favor of it."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"xcm",src:t(20267).Z,width:"2664",height:"1754"})),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"A stop-gap protocol is a temporary substitute for the functionality that is not fully complete.\nWhile XCMP proper is still in development, HRMP is a working replacement.")),(0,i.kt)("p",null,"A tutorial on how to open an HRMP channel on a parachain can be found\n",(0,i.kt)("a",{parentName:"p",href:"/docs/build-hrmp-channels"},"here"),"."),(0,i.kt)("h3",{id:"xcmp-cross-consensus-message-passing-design-summary"},"XCMP (Cross Consensus Message Passing) Design Summary"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=tOnzk4AROUY"},(0,i.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/tOnzk4AROUY/0.jpg",alt:"XCMP explained"}))),(0,i.kt)("admonition",{type:"note"},(0,i.kt)("p",{parentName:"admonition"},"XCMP is not yet implemented. The following illustrates the overall design goals and expectations for\nXCMP.")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"Cross-chain messages will ",(0,i.kt)("em",{parentName:"li"},"not")," be delivered to the Relay Chain."),(0,i.kt)("li",{parentName:"ul"},"Cross-chain messages will be constrained to a maximum size specified in bytes."),(0,i.kt)("li",{parentName:"ul"},"Parachains are allowed to block messages from other parachains, in which case the dispatching\nparachain would be aware of this block."),(0,i.kt)("li",{parentName:"ul"},"Collator nodes are responsible for routing messages between chains."),(0,i.kt)("li",{parentName:"ul"},"Collators produce a list of ",(0,i.kt)("inlineCode",{parentName:"li"},"egress")," messages and will receive the ",(0,i.kt)("inlineCode",{parentName:"li"},"ingress")," messages from other\nparachains."),(0,i.kt)("li",{parentName:"ul"},"On each block, parachains are expected to route messages from some subset of all other parachains."),(0,i.kt)("li",{parentName:"ul"},"When a collator produces a new block to hand off to a validator, it will collect the latest\ningress queue information and process it."),(0,i.kt)("li",{parentName:"ul"},"Validators will check the proof that the new candidate for the next parachain block includes the\nprocessing of the expected ingress messages to that parachain.")),(0,i.kt)("p",null,"XCMP queues must be initiated by first opening a channel between two parachains. The channel is\nidentified by both the sender and recipient parachains, meaning that it's a one-way channel. A pair\nof parachains can have at most establish two channels between them, one for sending messages to the\nother chain and another for receiving messages. The channel will require a deposit in DOT to be\nopened, which will get returned when the channel is closed."),(0,i.kt)("h4",{id:"the-anatomy-of-an-xcmp-interaction"},"The Anatomy of an XCMP Interaction"),(0,i.kt)("p",null,"A smart contract that exists on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," will route a message to parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," in which another\nsmart contract is called that makes a transfer of some assets within that chain."),(0,i.kt)("p",null,"Charlie executes the smart contract on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A"),", which initiates a new cross-chain message for\nthe destination of a smart contract on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B"),"."),(0,i.kt)("p",null,"The collator node of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," will place this new cross-chain message into its outbound\nmessages queue, along with a ",(0,i.kt)("inlineCode",{parentName:"p"},"destination")," and a ",(0,i.kt)("inlineCode",{parentName:"p"},"timestamp"),"."),(0,i.kt)("p",null,"The collator node of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," routinely pings all other collator nodes asking for new messages\n(filtering by the ",(0,i.kt)("inlineCode",{parentName:"p"},"destination")," field). When the collator of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," makes its next ping, it\nwill see this new message on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," and add it into its own inbound queue for processing into\nthe next block."),(0,i.kt)("p",null,"Validators for parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"A")," will also read the outbound queue and know the message. Validators for\nparachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," will do the same. This is so that they will be able to verify the message transmission\nhappened."),(0,i.kt)("p",null,"When the collator of parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," is building the next block in its chain, it will process the new\nmessage in its inbound queue as well as any other messages it may have found/received."),(0,i.kt)("p",null,"During processing, the message will execute the smart contract on parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," and complete the\nasset transfer as intended."),(0,i.kt)("p",null,"The collator now hands this block to the validator, which itself will verify that this message was\nprocessed. If the message was processed and all other aspects of the block are valid, the validator\nwill include this block for parachain ",(0,i.kt)("inlineCode",{parentName:"p"},"B")," into the Relay Chain."))}u.isMDXComponent=!0},20267:(e,a,t)=>{t.d(a,{Z:()=>n});const n=t.p+"assets/images/hrmp-ex-d985c82747b653714ff4cde293e1eccc.png"}}]); \ No newline at end of file diff --git a/assets/js/9f804621.b9cd4b75.js b/assets/js/9f804621.b9cd4b75.js deleted file mode 100644 index 90e6258ed9f6..000000000000 --- a/assets/js/9f804621.b9cd4b75.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[4143],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(74165),o=n(15861),r=n(67294),s=n(87152),i=n(30967),l=n(67425);function c(e,t,n){return u.apply(this,arguments)}function u(){return(u=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var r,l,c,u,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new s.U(r),e.next=21,i.G.create({provider:c});case 21:u=e.sent,(d=n.split(".")).forEach((function(e){e in u&&(u=u[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=u.toString(),e.abrupt("break",35);case 29:return e.next=31,u();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+n);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,n,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,n,a);break;case"precise":(0,l.Precise)(e,n,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,n);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,n=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,u=(0,r.useState)(""),p=u[0],h=u[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(s.toString(),l,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===o)l=3;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(l)+" "+r[s].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===o)i=1;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},52991:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(67294),o=n(86010),r=n(53438),s=n(39960),i=n(13919),l=n(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){var t=e.href,n=e.children;return a.createElement(s.Z,{href:t,className:(0,o.Z)("card padding--lg",c.cardContainer)},n)}function d(e){var t=e.href,n=e.icon,r=e.title,s=e.description;return a.createElement(u,{href:t},a.createElement("h2",{className:(0,o.Z)("text--truncate",c.cardTitle),title:r},n," ",r),s&&a.createElement("p",{className:(0,o.Z)("text--truncate",c.cardDescription),title:s},s))}function p(e){var t,n=e.item,o=(0,r.Wl)(n);return o?a.createElement(d,{href:o,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n.items.length})}):null}function h(e){var t,n,o=e.item,s=(0,i.Z)(o.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,r.xz)(null!=(t=o.docId)?t:void 0);return a.createElement(d,{href:o.href,icon:s,title:o.label,description:null!=(n=o.description)?n:null==l?void 0:l.description})}function m(e){var t=e.item;switch(t.type){case"link":return a.createElement(h,{item:t});case"category":return a.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function k(e){var t=e.className,n=(0,r.jA)();return a.createElement(f,{items:n.items,className:t})}function f(e){var t=e.items,n=e.className;if(!t)return a.createElement(k,e);var s=(0,r.MN)(t);return a.createElement("section",{className:(0,o.Z)("row",n)},s.map((function(e,t){return a.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},a.createElement(m,{item:e}))})))}},85162:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(67294),o=n(86010);const r={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,n=e.hidden,s=e.className;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,s),hidden:n},t)}},74866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var a=n(87462),o=n(67294),r=n(86010),s=n(12466),i=n(16550),l=n(91980),c=n(67392),u=n(50012);function d(e){return function(e){var t,n;return null!=(t=null==(n=o.Children.map(e,(function(e){if(!e||(0,o.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:n.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,n=e.children;return(0,o.useMemo)((function(){var e=null!=t?t:d(n);return function(e){var t=(0,c.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,n])}function h(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function m(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId,r=(0,i.k6)(),s=function(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=a?a:null}({queryString:n,groupId:a});return[(0,l._X)(s),(0,o.useCallback)((function(e){if(s){var t=new URLSearchParams(r.location.search);t.set(s,e),r.replace(Object.assign({},r.location,{search:t.toString()}))}}),[s,r])]}function k(e){var t,n,a,r,s=e.defaultValue,i=e.queryString,l=void 0!==i&&i,c=e.groupId,d=p(e),k=(0,o.useState)((function(){return function(e){var t,n=e.defaultValue,a=e.tabValues;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:a}))throw new Error('Docusaurus error: The has a defaultValue "'+n+'" but none of its children has the corresponding value. Available values are: '+a.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return n}var o=null!=(t=a.find((function(e){return e.default})))?t:a[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:s,tabValues:d})})),f=k[0],b=k[1],g=m({queryString:l,groupId:c}),w=g[0],y=g[1],v=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:c}.groupId),n=(0,u.Nk)(t),a=n[0],r=n[1],[a,(0,o.useCallback)((function(e){t&&r.set(e)}),[t,r])]),N=v[0],S=v[1],P=function(){var e=null!=w?w:N;return h({value:e,tabValues:d})?e:null}();return(0,o.useLayoutEffect)((function(){P&&b(P)}),[P]),{selectedValue:f,selectValue:(0,o.useCallback)((function(e){if(!h({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);b(e),y(e),S(e)}),[y,S,d]),tabValues:d}}var f=n(72389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){var t=e.className,n=e.block,i=e.selectedValue,l=e.selectValue,c=e.tabValues,u=[],d=(0,s.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,n=u.indexOf(t),a=c[n].value;a!==i&&(d(t),l(a))},h=function(e){var t,n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var a,o=u.indexOf(e.currentTarget)+1;n=null!=(a=u[o])?a:u[0];break;case"ArrowLeft":var r,s=u.indexOf(e.currentTarget)-1;n=null!=(r=u[s])?r:u[u.length-1]}null==(t=n)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},c.map((function(e){var t=e.value,n=e.label,s=e.attributes;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:function(e){return u.push(e)},onKeyDown:h,onClick:p},s,{className:(0,r.Z)("tabs__item",b.tabItem,null==s?void 0:s.className,{"tabs__item--active":i===t})}),null!=n?n:t)})))}function w(e){var t=e.lazy,n=e.children,a=e.selectedValue,r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){var s=r.find((function(e){return e.props.value===a}));return s?(0,o.cloneElement)(s,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map((function(e,t){return(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a})})))}function y(e){var t=k(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",b.tabList)},o.createElement(g,(0,a.Z)({},e,t)),o.createElement(w,(0,a.Z)({},e,t)))}function v(e){var t=(0,f.Z)();return o.createElement(y,(0,a.Z)({key:String(t)},e))}},35426:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>k,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),s=(n(47940),n(74866),n(85162),n(52991)),i=["components"],l={id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Accounts",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},c=void 0,u={unversionedId:"learn/learn-guides-accounts",id:"learn/learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",description:"Polkadot-JS Guides about Accounts",source:"@site/../docs/learn/learn-guides-accounts.md",sourceDirName:"learn",slug:"/learn-guides-accounts",permalink:"/docs/learn-guides-accounts",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1704367237,formattedLastUpdatedAt:"Jan 4, 2024",frontMatter:{id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Accounts",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},sidebar:"docs",previous:{title:"Polkadot-JS Guides",permalink:"/docs/learn-polkadot-js-guides"},next:{title:"Multisig",permalink:"/docs/learn-guides-accounts-multisig"}},d={},p=[{value:"Account Address Format",id:"account-address-format",level:2},{value:"Polkadot-JS Browser Extension",id:"polkadot-js-browser-extension",level:2},{value:"Account Backup using the Polkadot-JS Browser Extension",id:"account-backup-using-the-polkadot-js-browser-extension",level:3},{value:"Reset Password using the Polkadot-JS Browser Extension",id:"reset-password-using-the-polkadot-js-browser-extension",level:3},{value:"Restore Account on the Polkadot-JS Browser Extension",id:"restore-account-on-the-polkadot-js-browser-extension",level:3},{value:"Polkadot-JS UI",id:"polkadot-js-ui",level:2},{value:"Account Backup using the Polkadot-JS UI",id:"account-backup-using-the-polkadot-js-ui",level:3},{value:"Reset password using the Polkadot-JS UI",id:"reset-password-using-the-polkadot-js-ui",level:3},{value:"Restore Account on the Polkadot-JS UI",id:"restore-account-on-the-polkadot-js-ui",level:3},{value:"Unlocking Locks",id:"unlocking-locks",level:3},{value:"Query Account Data in Polkadot-JS",id:"query-account-data-in-polkadot-js",level:2},{value:"Vanity Generator",id:"vanity-generator",level:2},{value:"Encryption Enhancement",id:"encryption-enhancement",level:2}],h={toc:p},m="wrapper";function k(e){var t=e.components,l=(0,o.Z)(e,i);return(0,r.kt)(m,(0,a.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(s.Z,{mdxType:"DocCardList"}),(0,r.kt)("h2",{id:"account-address-format"},"Account Address Format"),(0,r.kt)("p",null,"An account created for Polkadot can also be\nused on multiple chains in the Polkadot\necosystem. More specifically, the account of a chain that uses the ",(0,r.kt)("inlineCode",{parentName:"p"},"*25519")," account address format\n(the latest list can be accessed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json"},"ss58 registry repository"),"\nis cross-compatible with all the chains that use the similar format. To switch between the accounts\non different chains, you can follow the guidelines in\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000103707-can-i-use-the-same-account-on-polkadot-kusama-and-parachains-"},"this support article"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/tools/format_transform"},"Subscan has a tool")," you can use to convert your\naddress between the different chain formats."),(0,r.kt)("admonition",{title:"Using the same account on multiple chains - Pros and Cons",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The address format differs from chain to chain, but that difference is only visual. The same private\nkey can be used to sign transactions on behalf of the respective accounts on multiple chains. Using\na single account on multiple chains is convenient, as you do not have to deal with multiple mnemonic\nphrases or private keys. But, if your account gets compromised on one chain, the attacker can gain\nfull access to the accounts on all other chains. This also has implications for the account holder's\nprivacy, as knowing the identity of an account on one chain can expose the account holder's identity\non all the chains. In the Accounts tab, the Polkadot-JS UI displays a warning message next to each\nAccount you are using on multiple chains and recommends using different Accounts on different chains\n(see below)."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("img",{alt:"warning multiple chains",src:n(2245).Z,width:"1103",height:"343"}))),(0,r.kt)("p",null,'On Polkadot-JS Extension, you can copy your address by clicking the account\'s icon while the desired\nchain format is active. E.g. selecting "Substrate" as the format will change your address, and\nclicking the colorful icon of your account will copy it in that format. While in\nPolkadot mode, that address format will be\ncopied, and so on.'),(0,r.kt)("h2",{id:"polkadot-js-browser-extension"},"Polkadot-JS Browser Extension"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/DNU0p5G0Gqc/0.jpg",alt:"Polkadot-JS Browser Extension Tutorial"}))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using the Polkadot Extension, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000098878-how-to-create-a-dot-account"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("p",null,"The Polkadot-JS Browser Extension (the Polkadot Extension) provides a reasonable balance of security\nand usability. It provides a separate local mechanism to generate your address and interact with\nPolkadot."),(0,r.kt)("p",null,'This method involves installing the Polkadot Extension and using it as a \u201cvirtual vault," separate\nfrom your browser, to store your private keys. It also allows the signing of transactions and\nsimilar functionality.'),(0,r.kt)("p",null,"It is still running on the same computer you use to connect to the internet and thus is less secure\nthan using Parity Signer or other air-gapped approaches."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-browser-extension"},"Account Backup using the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account."),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-browser-extension"},"Reset Password using the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc&t=280s"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to\nchange the password for an account that has been created on the Polkadot-JS browser extension (i.e.\nan injected account).")),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Before following the instructions below, make sure you have your mnemonic phrase stored in a safe\nplace accessible to you.")),(0,r.kt)("p",null,"Let's say you created ",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," protected by password ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),". To reset the password of your\n",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," using the browser extension, you must follow the following steps:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Go to ",(0,r.kt)("inlineCode",{parentName:"li"},"ACCOUNT 1"),' on the browser extension and click "Forget account". This action will delete the\naccess to your account. Note that your tokens are still in your account on the\nPolkadot blockchain network.'),(0,r.kt)("li",{parentName:"ul"},'On the browser extension click the "+" button in the top right corner and select the option\n"Import account from pre-existing seed". After entering the mnemonic phrase, you can choose a new\npassword, ',(0,r.kt)("inlineCode",{parentName:"li"},"PSW 2"),".")),(0,r.kt)("admonition",{title:"JSON files do not allow changing account passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If you add the account to the extension using the option "Restore account from backup JSON file",\nthis will allow you to restore access to your account using a JSON file protected by the password\n',(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),", but does not let you set a new password. Thus, ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1")," will become the account password by\ndefault.")),(0,r.kt)("admonition",{title:"Accounts on Cold wallets do not need passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For hardware wallets such as ",(0,r.kt)("a",{parentName:"p",href:"https://www.ledger.com/"},"Ledger"),", you may have to set a PIN for\naccessing the accounts on the device, but you do not need to set a password for every individual\naccount. When you need to make transactions with your account, you are required to sign using your\nLedger device. Also, Ledger wallets let you generate multiple accounts for multiple blockchain\nnetworks without setting different passwords to access such accounts.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-browser-extension"},"Restore Account on the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/9ohp8k4Hz8c"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169952-how-to-restore-your-account-in-the-polkadot-extension"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI.")),(0,r.kt)("h2",{id:"polkadot-js-ui"},"Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using Polkadot-JS UI, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180529"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"If you use this method to create your account and clear your cookies in your browser, your account\nwill be lost forever if you do not ",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"back it up"),". Make sure\nyou store your seed phrase in a safe place or download the account's JSON file if using the\nPolkadot{.js} browser extension. Learn more about account backup and restoration\n",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"here"),".")),(0,r.kt)("p",null,"Local in-browser account storage is disabled by default on the Polkadot-JS UI. To create an account\nusing the Polkadot-JS UI, navigate to settings > account options and click on allow local in-browser\naccount storage in the drop-down menu. Using the Polkadot-JS user interface without a browser\nextension is ",(0,r.kt)("strong",{parentName:"p"},"not recommended"),". It is the least secure way of generating an account. It should\nonly be used if all other methods are not feasible."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-ui"},"Account Backup using the Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account.")),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-ui"},"Reset password using the Polkadot-JS UI"),(0,r.kt)("p",null,'To reset the password of an account created with Polkadot-JS Apps UI, you need to go to the\n"Accounts" tab, click the icon with three vertical dots on your account and select "Change this\naccount\'s password".'),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc?t=261"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to change the\npassword for an account created on the Polkadot-JS UI (i.e. a non-injected account)."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"If you create an account first using Polkadot-JS Apps UI and then add it to the browser extension,\nyou need to follow the\n",(0,r.kt)("a",{parentName:"p",href:"#reset-password-using-the-browser-extension"},"guidelines for the browser extension")," to change the\npassword of such an account.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-ui"},"Restore Account on the Polkadot-JS UI"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/cBsZqFpBANY"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180110-how-to-restore-your-account-in-polkadot-js-ui"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI."),(0,r.kt)("h3",{id:"unlocking-locks"},"Unlocking Locks"),(0,r.kt)("admonition",{title:"Locks do not stack!",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The biggest lock decides the total amount of locked funds. See\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/LHgY7ds_bZ0"},(0,r.kt)("strong",{parentName:"a"},"this walk-through video tutorial"))," that will guide you in the\nprocess of unlocking funds in the example above.")),(0,r.kt)("p",null,"In the example, the locked balance is 0.55 KSM because the biggest lock is on democracy and is 0.55\nKSM. As soon as the democracy lock is removed the next biggest lock is on staking 0.5 KSM (bonded\n0.4 KSM + redeemable 0.1 KSM). This means that the locked balance will be 0.5 KSM, and 0.05 KSM will\nbe added to the transferrable balance. After redeeming the unbonded 0.1 KSM, the locked balance will\nbe 0.4 KSM, and an additional 0.1 KSM will be added to the transferrable balance. Now the biggest\nlock is still the bonded one. This means that even if we remove the vested lock, the locked balance\nwill still be 0.4 KSM and no tokens will be added to the transferrable balance. To free those bonded\ntokens we will need to unbond them and wait for the unbonding period to make them redeemable. If we\nremove the proxy the reserved funds will be automatically added to the transferrable balance."),(0,r.kt)("h2",{id:"query-account-data-in-polkadot-js"},"Query Account Data in Polkadot-JS"),(0,r.kt)("p",null,"In the Polkadot-JS UI, you can also query account data under\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Developer > Chain state"),". Under ",(0,r.kt)("inlineCode",{parentName:"p"},"selected state query"),"\nchoose the system pallet followed by ",(0,r.kt)("inlineCode",{parentName:"p"},"account(AccountId32): FrameSystemAccountInfo"),", under ",(0,r.kt)("inlineCode",{parentName:"p"},"Option"),'\nchoose an account, and then click on the "+" button on the right.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"account_balance_types",src:n(9853).Z,width:"1636",height:"343"})),(0,r.kt)("p",null,"Account information include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"nonce"),", the number of transactions the account sent."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"consumers"),", the number of other modules that currently depend on this account's existence. The\naccount cannot be reaped until this is zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"providers"),", the number of other modules that allow this account to exist. The account may not be\nreaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"sufficients")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sufficients"),", the number of modules that allow this account to exist for their own purposes. The\naccount may not be reaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"providers")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"data"),", the additional data that belongs to this account. Used to store the balance(s) in a lot of\nchains.")),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/system/src/lib.rs#LL767C1-L781C24"},"substrate code base"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"AccountData")," structure defines the balance types in Substrate. The three types of balances\ninclude ",(0,r.kt)("inlineCode",{parentName:"p"},"free"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"reserved"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"frozen"),". The ",(0,r.kt)("strong",{parentName:"p"},"usable")," balance of the account is the amount that\nis ",(0,r.kt)("inlineCode",{parentName:"p"},"free")," minus any funds considered ",(0,r.kt)("inlineCode",{parentName:"p"},"frozen"),", while the ",(0,r.kt)("strong",{parentName:"p"},"total")," balance of the account is the sum\nof ",(0,r.kt)("inlineCode",{parentName:"p"},"free")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"reserved")," funds. The ",(0,r.kt)("inlineCode",{parentName:"p"},"flags")," describe extra information about the account."),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/balances/src/types.rs#LL95-L114"},"balances pallet in the Substrate code base"),"."),(0,r.kt)("h2",{id:"vanity-generator"},"Vanity Generator"),(0,r.kt)("p",null,"The vanity generator is a tool on ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts/vanity"},"Polkadot-JS UI"),"\nthat lets you generate addresses that contain a specific substring. For the tutorial on how to\ncreate an account using Vanity Generator, visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000171416"},"this support article"),"."),(0,r.kt)("h2",{id:"encryption-enhancement"},"Encryption Enhancement"),(0,r.kt)("p",null,"Some newly generated ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," account files cannot be imported (restored) into older wallet software.\nThis is due to an enhanced encryption method, noticeable in a slight delay when\nencrypting/decrypting your wallet. If you cannot load a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," file, please use the latest version\nof the wallet software. If you cannot load it, ensure that the wallet software uses the newest\nversion of the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/api/"},"Polkadot API"),"."))}k.isMDXComponent=!0},9853:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/AccountData-struct-118d0bf533806084460cba05bef62b9c.png"},2245:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/warning-multichain-account-0719ff59691f3ff48562d92ef2295e84.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/9f804621.c3bc51cc.js b/assets/js/9f804621.c3bc51cc.js new file mode 100644 index 000000000000..3b7a0cde25ee --- /dev/null +++ b/assets/js/9f804621.c3bc51cc.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[4143],{47940:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(74165),o=n(15861),r=n(67294),s=n(87152),i=n(30967),l=n(67425);function c(e,t,n){return u.apply(this,arguments)}function u(){return(u=(0,o.Z)((0,a.Z)().mark((function e(t,n,o){var r,l,c,u,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new s.U(r),e.next=21,i.G.create({provider:c});case 21:u=e.sent,(d=n.split(".")).forEach((function(e){e in u&&(u=u[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=u.toString(),e.abrupt("break",35);case 29:return e.next=31,u();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+n);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,n,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,n,a);break;case"precise":(0,l.Precise)(e,n,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,n);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(e){var t=e.network,n=e.path,s=e.defaultValue,i=e.filter,l=void 0===i?void 0:i,u=(0,r.useState)(""),p=u[0],h=u[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(s.toString(),l,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,o.Z)((0,a.Z)().mark((function e(){var o;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,n,h);case 2:if(void 0!==(o=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(o,l,t,h):h(o);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:e=>{var t="polkadot",n="kusama",a="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var l=void 0;if(s===t||s===o)l=3;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(l)+" "+r[s].symbol).toString())},Precise:function(e,t,n){n(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===o)i=1;else{if(s!==n&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},52991:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(67294),o=n(86010),r=n(53438),s=n(39960),i=n(13919),l=n(95999);const c={cardContainer:"cardContainer_fWXF",cardTitle:"cardTitle_rnsV",cardDescription:"cardDescription_PWke"};function u(e){var t=e.href,n=e.children;return a.createElement(s.Z,{href:t,className:(0,o.Z)("card padding--lg",c.cardContainer)},n)}function d(e){var t=e.href,n=e.icon,r=e.title,s=e.description;return a.createElement(u,{href:t},a.createElement("h2",{className:(0,o.Z)("text--truncate",c.cardTitle),title:r},n," ",r),s&&a.createElement("p",{className:(0,o.Z)("text--truncate",c.cardDescription),title:s},s))}function p(e){var t,n=e.item,o=(0,r.Wl)(n);return o?a.createElement(d,{href:o,icon:"\ud83d\uddc3\ufe0f",title:n.label,description:null!=(t=n.description)?t:(0,l.I)({message:"{count} items",id:"theme.docs.DocCard.categoryDescription",description:"The default description for a category card in the generated index about how many items this category includes"},{count:n.items.length})}):null}function h(e){var t,n,o=e.item,s=(0,i.Z)(o.href)?"\ud83d\udcc4\ufe0f":"\ud83d\udd17",l=(0,r.xz)(null!=(t=o.docId)?t:void 0);return a.createElement(d,{href:o.href,icon:s,title:o.label,description:null!=(n=o.description)?n:null==l?void 0:l.description})}function k(e){var t=e.item;switch(t.type){case"link":return a.createElement(h,{item:t});case"category":return a.createElement(p,{item:t});default:throw new Error("unknown item type "+JSON.stringify(t))}}function m(e){var t=e.className,n=(0,r.jA)();return a.createElement(f,{items:n.items,className:t})}function f(e){var t=e.items,n=e.className;if(!t)return a.createElement(m,e);var s=(0,r.MN)(t);return a.createElement("section",{className:(0,o.Z)("row",n)},s.map((function(e,t){return a.createElement("article",{key:t,className:"col col--6 margin-bottom--lg"},a.createElement(k,{item:e}))})))}},85162:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(67294),o=n(86010);const r={tabItem:"tabItem_Ymn6"};function s(e){var t=e.children,n=e.hidden,s=e.className;return a.createElement("div",{role:"tabpanel",className:(0,o.Z)(r.tabItem,s),hidden:n},t)}},74866:(e,t,n)=>{"use strict";n.d(t,{Z:()=>v});var a=n(87462),o=n(67294),r=n(86010),s=n(12466),i=n(16550),l=n(91980),c=n(67392),u=n(50012);function d(e){return function(e){var t,n;return null!=(t=null==(n=o.Children.map(e,(function(e){if(!e||(0,o.isValidElement)(e)&&(t=e.props)&&"object"==typeof t&&"value"in t)return e;var t;throw new Error("Docusaurus error: Bad child <"+("string"==typeof e.type?e.type:e.type.name)+'>: all children of the component should be , and every should have a unique "value" prop.')})))?void 0:n.filter(Boolean))?t:[]}(e).map((function(e){var t=e.props;return{value:t.value,label:t.label,attributes:t.attributes,default:t.default}}))}function p(e){var t=e.values,n=e.children;return(0,o.useMemo)((function(){var e=null!=t?t:d(n);return function(e){var t=(0,c.l)(e,(function(e,t){return e.value===t.value}));if(t.length>0)throw new Error('Docusaurus error: Duplicate values "'+t.map((function(e){return e.value})).join(", ")+'" found in . Every value needs to be unique.')}(e),e}),[t,n])}function h(e){var t=e.value;return e.tabValues.some((function(e){return e.value===t}))}function k(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId,r=(0,i.k6)(),s=function(e){var t=e.queryString,n=void 0!==t&&t,a=e.groupId;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return null!=a?a:null}({queryString:n,groupId:a});return[(0,l._X)(s),(0,o.useCallback)((function(e){if(s){var t=new URLSearchParams(r.location.search);t.set(s,e),r.replace(Object.assign({},r.location,{search:t.toString()}))}}),[s,r])]}function m(e){var t,n,a,r,s=e.defaultValue,i=e.queryString,l=void 0!==i&&i,c=e.groupId,d=p(e),m=(0,o.useState)((function(){return function(e){var t,n=e.defaultValue,a=e.tabValues;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!h({value:n,tabValues:a}))throw new Error('Docusaurus error: The has a defaultValue "'+n+'" but none of its children has the corresponding value. Available values are: '+a.map((function(e){return e.value})).join(", ")+". If you intend to show no default tab, use defaultValue={null} instead.");return n}var o=null!=(t=a.find((function(e){return e.default})))?t:a[0];if(!o)throw new Error("Unexpected error: 0 tabValues");return o.value}({defaultValue:s,tabValues:d})})),f=m[0],b=m[1],g=k({queryString:l,groupId:c}),w=g[0],y=g[1],v=(t=function(e){return e?"docusaurus.tab."+e:null}({groupId:c}.groupId),n=(0,u.Nk)(t),a=n[0],r=n[1],[a,(0,o.useCallback)((function(e){t&&r.set(e)}),[t,r])]),N=v[0],S=v[1],x=function(){var e=null!=w?w:N;return h({value:e,tabValues:d})?e:null}();return(0,o.useLayoutEffect)((function(){x&&b(x)}),[x]),{selectedValue:f,selectValue:(0,o.useCallback)((function(e){if(!h({value:e,tabValues:d}))throw new Error("Can't select invalid tab value="+e);b(e),y(e),S(e)}),[y,S,d]),tabValues:d}}var f=n(72389);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};function g(e){var t=e.className,n=e.block,i=e.selectedValue,l=e.selectValue,c=e.tabValues,u=[],d=(0,s.o5)().blockElementScrollPositionUntilNextRender,p=function(e){var t=e.currentTarget,n=u.indexOf(t),a=c[n].value;a!==i&&(d(t),l(a))},h=function(e){var t,n=null;switch(e.key){case"Enter":p(e);break;case"ArrowRight":var a,o=u.indexOf(e.currentTarget)+1;n=null!=(a=u[o])?a:u[0];break;case"ArrowLeft":var r,s=u.indexOf(e.currentTarget)-1;n=null!=(r=u[s])?r:u[u.length-1]}null==(t=n)||t.focus()};return o.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":n},t)},c.map((function(e){var t=e.value,n=e.label,s=e.attributes;return o.createElement("li",(0,a.Z)({role:"tab",tabIndex:i===t?0:-1,"aria-selected":i===t,key:t,ref:function(e){return u.push(e)},onKeyDown:h,onClick:p},s,{className:(0,r.Z)("tabs__item",b.tabItem,null==s?void 0:s.className,{"tabs__item--active":i===t})}),null!=n?n:t)})))}function w(e){var t=e.lazy,n=e.children,a=e.selectedValue,r=(Array.isArray(n)?n:[n]).filter(Boolean);if(t){var s=r.find((function(e){return e.props.value===a}));return s?(0,o.cloneElement)(s,{className:"margin-top--md"}):null}return o.createElement("div",{className:"margin-top--md"},r.map((function(e,t){return(0,o.cloneElement)(e,{key:t,hidden:e.props.value!==a})})))}function y(e){var t=m(e);return o.createElement("div",{className:(0,r.Z)("tabs-container",b.tabList)},o.createElement(g,(0,a.Z)({},e,t)),o.createElement(w,(0,a.Z)({},e,t)))}function v(e){var t=(0,f.Z)();return o.createElement(y,(0,a.Z)({key:String(t)},e))}},35426:(e,t,n)=>{"use strict";n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>c,default:()=>m,frontMatter:()=>l,metadata:()=>u,toc:()=>p});var a=n(87462),o=n(63366),r=(n(67294),n(3905)),s=(n(47940),n(74866),n(85162),n(52991)),i=["components"],l={id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Accounts",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},c=void 0,u={unversionedId:"learn/learn-guides-accounts",id:"learn/learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",description:"Polkadot-JS Guides about Accounts",source:"@site/../docs/learn/learn-guides-accounts.md",sourceDirName:"learn",slug:"/learn-guides-accounts",permalink:"/docs/learn-guides-accounts",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-guides-accounts",title:"Polkadot-JS Guides about Accounts",sidebar_label:"Accounts",description:"Polkadot-JS Guides about Accounts",keyword:["guides","polkadot-js","accounts"],slug:"../learn-guides-accounts"},sidebar:"docs",previous:{title:"Polkadot-JS Guides",permalink:"/docs/learn-polkadot-js-guides"},next:{title:"Multisig",permalink:"/docs/learn-guides-accounts-multisig"}},d={},p=[{value:"Account Address Format",id:"account-address-format",level:2},{value:"Polkadot-JS Browser Extension",id:"polkadot-js-browser-extension",level:2},{value:"Account Backup using the Polkadot-JS Browser Extension",id:"account-backup-using-the-polkadot-js-browser-extension",level:3},{value:"Reset Password using the Polkadot-JS Browser Extension",id:"reset-password-using-the-polkadot-js-browser-extension",level:3},{value:"Restore Account on the Polkadot-JS Browser Extension",id:"restore-account-on-the-polkadot-js-browser-extension",level:3},{value:"Polkadot-JS UI",id:"polkadot-js-ui",level:2},{value:"Account Backup using the Polkadot-JS UI",id:"account-backup-using-the-polkadot-js-ui",level:3},{value:"Reset password using the Polkadot-JS UI",id:"reset-password-using-the-polkadot-js-ui",level:3},{value:"Restore Account on the Polkadot-JS UI",id:"restore-account-on-the-polkadot-js-ui",level:3},{value:"Unlocking Locks",id:"unlocking-locks",level:3},{value:"Query Account Data in Polkadot-JS",id:"query-account-data-in-polkadot-js",level:2},{value:"Vanity Generator",id:"vanity-generator",level:2},{value:"Encryption Enhancement",id:"encryption-enhancement",level:2}],h={toc:p},k="wrapper";function m(e){var t=e.components,l=(0,o.Z)(e,i);return(0,r.kt)(k,(0,a.Z)({},h,l,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(s.Z,{mdxType:"DocCardList"}),(0,r.kt)("h2",{id:"account-address-format"},"Account Address Format"),(0,r.kt)("p",null,"An account created for Polkadot can also be\nused on multiple chains in the Polkadot\necosystem. More specifically, the account of a chain that uses the ",(0,r.kt)("inlineCode",{parentName:"p"},"*25519")," account address format\n(the latest list can be accessed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/ss58-registry/blob/main/ss58-registry.json"},"ss58 registry repository"),"\nis cross-compatible with all the chains that use the similar format. To switch between the accounts\non different chains, you can follow the guidelines in\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000103707-can-i-use-the-same-account-on-polkadot-kusama-and-parachains-"},"this support article"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subscan.io/tools/format_transform"},"Subscan has a tool")," you can use to convert your\naddress between the different chain formats."),(0,r.kt)("admonition",{title:"Using the same account on multiple chains - Pros and Cons",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The address format differs from chain to chain, but that difference is only visual. The same private\nkey can be used to sign transactions on behalf of the respective accounts on multiple chains. Using\na single account on multiple chains is convenient, as you do not have to deal with multiple mnemonic\nphrases or private keys. But, if your account gets compromised on one chain, the attacker can gain\nfull access to the accounts on all other chains. This also has implications for the account holder's\nprivacy, as knowing the identity of an account on one chain can expose the account holder's identity\non all the chains. In the Accounts tab, the Polkadot-JS UI displays a warning message next to each\nAccount you are using on multiple chains and recommends using different Accounts on different chains\n(see below)."),(0,r.kt)("p",{parentName:"admonition"},(0,r.kt)("img",{alt:"warning multiple chains",src:n(2245).Z,width:"1103",height:"343"}))),(0,r.kt)("p",null,'On Polkadot-JS Extension, you can copy your address by clicking the account\'s icon while the desired\nchain format is active. E.g. selecting "Substrate" as the format will change your address, and\nclicking the colorful icon of your account will copy it in that format. While in\nPolkadot mode, that address format will be\ncopied, and so on.'),(0,r.kt)("h2",{id:"polkadot-js-browser-extension"},"Polkadot-JS Browser Extension"),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/DNU0p5G0Gqc/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc"},"Polkadot-JS Browser Extension Tutorial")))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using the Polkadot Extension, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000098878-how-to-create-a-dot-account"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("p",null,"The Polkadot-JS Browser Extension (the Polkadot Extension) provides a reasonable balance of security\nand usability. It provides a separate local mechanism to generate your address and interact with\nPolkadot."),(0,r.kt)("p",null,'This method involves installing the Polkadot Extension and using it as a \u201cvirtual vault," separate\nfrom your browser, to store your private keys. It also allows the signing of transactions and\nsimilar functionality.'),(0,r.kt)("p",null,"It is still running on the same computer you use to connect to the internet and thus is less secure\nthan using Parity Signer or other air-gapped approaches."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-browser-extension"},"Account Backup using the Polkadot-JS Browser Extension"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account."),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-browser-extension"},"Reset Password using the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=DNU0p5G0Gqc&t=280s"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to\nchange the password for an account that has been created on the Polkadot-JS browser extension (i.e.\nan injected account).")),(0,r.kt)("admonition",{type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Before following the instructions below, make sure you have your mnemonic phrase stored in a safe\nplace accessible to you.")),(0,r.kt)("p",null,"Let's say you created ",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," protected by password ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),". To reset the password of your\n",(0,r.kt)("inlineCode",{parentName:"p"},"ACCOUNT 1")," using the browser extension, you must follow the following steps:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Go to ",(0,r.kt)("inlineCode",{parentName:"li"},"ACCOUNT 1"),' on the browser extension and click "Forget account". This action will delete the\naccess to your account. Note that your tokens are still in your account on the\nPolkadot blockchain network.'),(0,r.kt)("li",{parentName:"ul"},'On the browser extension click the "+" button in the top right corner and select the option\n"Import account from pre-existing seed". After entering the mnemonic phrase, you can choose a new\npassword, ',(0,r.kt)("inlineCode",{parentName:"li"},"PSW 2"),".")),(0,r.kt)("admonition",{title:"JSON files do not allow changing account passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},'If you add the account to the extension using the option "Restore account from backup JSON file",\nthis will allow you to restore access to your account using a JSON file protected by the password\n',(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1"),", but does not let you set a new password. Thus, ",(0,r.kt)("inlineCode",{parentName:"p"},"PSW 1")," will become the account password by\ndefault.")),(0,r.kt)("admonition",{title:"Accounts on Cold wallets do not need passwords",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For hardware wallets such as ",(0,r.kt)("a",{parentName:"p",href:"https://www.ledger.com/"},"Ledger"),", you may have to set a PIN for\naccessing the accounts on the device, but you do not need to set a password for every individual\naccount. When you need to make transactions with your account, you are required to sign using your\nLedger device. Also, Ledger wallets let you generate multiple accounts for multiple blockchain\nnetworks without setting different passwords to access such accounts.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-browser-extension"},"Restore Account on the Polkadot-JS Browser Extension"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/9ohp8k4Hz8c"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000169952-how-to-restore-your-account-in-the-polkadot-extension"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI.")),(0,r.kt)("h2",{id:"polkadot-js-ui"},"Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For guidelines about how to create an account using Polkadot-JS UI, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180529"},(0,r.kt)("strong",{parentName:"a"},"this support article")),".")),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"If you use this method to create your account and clear your cookies in your browser, your account\nwill be lost forever if you do not ",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"back it up"),". Make sure\nyou store your seed phrase in a safe place or download the account's JSON file if using the\nPolkadot{.js} browser extension. Learn more about account backup and restoration\n",(0,r.kt)("a",{parentName:"p",href:"#restore-account-on-the-polkadot-js-ui"},"here"),".")),(0,r.kt)("p",null,"Local in-browser account storage is disabled by default on the Polkadot-JS UI. To create an account\nusing the Polkadot-JS UI, navigate to settings > account options and click on allow local in-browser\naccount storage in the drop-down menu. Using the Polkadot-JS user interface without a browser\nextension is ",(0,r.kt)("strong",{parentName:"p"},"not recommended"),". It is the least secure way of generating an account. It should\nonly be used if all other methods are not feasible."),(0,r.kt)("h3",{id:"account-backup-using-the-polkadot-js-ui"},"Account Backup using the Polkadot-JS UI"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000177677-how-to-export-your-json-backup-file"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto know how to back up your account.")),(0,r.kt)("h3",{id:"reset-password-using-the-polkadot-js-ui"},"Reset password using the Polkadot-JS UI"),(0,r.kt)("p",null,'To reset the password of an account created with Polkadot-JS Apps UI, you need to go to the\n"Accounts" tab, click the icon with three vertical dots on your account and select "Change this\naccount\'s password".'),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/DNU0p5G0Gqc?t=261"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," to learn how to change the\npassword for an account created on the Polkadot-JS UI (i.e. a non-injected account)."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"If you create an account first using Polkadot-JS Apps UI and then add it to the browser extension,\nyou need to follow the\n",(0,r.kt)("a",{parentName:"p",href:"#reset-password-using-the-browser-extension"},"guidelines for the browser extension")," to change the\npassword of such an account.")),(0,r.kt)("h3",{id:"restore-account-on-the-polkadot-js-ui"},"Restore Account on the Polkadot-JS UI"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/cBsZqFpBANY"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180110-how-to-restore-your-account-in-polkadot-js-ui"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot-JS UI."),(0,r.kt)("h3",{id:"unlocking-locks"},"Unlocking Locks"),(0,r.kt)("admonition",{title:"Locks do not stack!",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The biggest lock decides the total amount of locked funds. See\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/LHgY7ds_bZ0"},(0,r.kt)("strong",{parentName:"a"},"this walk-through video tutorial"))," that will guide you in the\nprocess of unlocking funds in the example above.")),(0,r.kt)("p",null,"In the example, the locked balance is 0.55 KSM because the biggest lock is on democracy and is 0.55\nKSM. As soon as the democracy lock is removed the next biggest lock is on staking 0.5 KSM (bonded\n0.4 KSM + redeemable 0.1 KSM). This means that the locked balance will be 0.5 KSM, and 0.05 KSM will\nbe added to the transferrable balance. After redeeming the unbonded 0.1 KSM, the locked balance will\nbe 0.4 KSM, and an additional 0.1 KSM will be added to the transferrable balance. Now the biggest\nlock is still the bonded one. This means that even if we remove the vested lock, the locked balance\nwill still be 0.4 KSM and no tokens will be added to the transferrable balance. To free those bonded\ntokens we will need to unbond them and wait for the unbonding period to make them redeemable. If we\nremove the proxy the reserved funds will be automatically added to the transferrable balance."),(0,r.kt)("h2",{id:"query-account-data-in-polkadot-js"},"Query Account Data in Polkadot-JS"),(0,r.kt)("p",null,"In the Polkadot-JS UI, you can also query account data under\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/chainstate"},"Developer > Chain state"),". Under ",(0,r.kt)("inlineCode",{parentName:"p"},"selected state query"),"\nchoose the system pallet followed by ",(0,r.kt)("inlineCode",{parentName:"p"},"account(AccountId32): FrameSystemAccountInfo"),", under ",(0,r.kt)("inlineCode",{parentName:"p"},"Option"),'\nchoose an account, and then click on the "+" button on the right.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"account_balance_types",src:n(9853).Z,width:"1636",height:"343"})),(0,r.kt)("p",null,"Account information include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"nonce"),", the number of transactions the account sent."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"consumers"),", the number of other modules that currently depend on this account's existence. The\naccount cannot be reaped until this is zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"providers"),", the number of other modules that allow this account to exist. The account may not be\nreaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"sufficients")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sufficients"),", the number of modules that allow this account to exist for their own purposes. The\naccount may not be reaped until this and ",(0,r.kt)("inlineCode",{parentName:"li"},"providers")," are both zero."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"data"),", the additional data that belongs to this account. Used to store the balance(s) in a lot of\nchains.")),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/system/src/lib.rs#LL767C1-L781C24"},"substrate code base"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"AccountData")," structure defines the balance types in Substrate. The three types of balances\ninclude ",(0,r.kt)("inlineCode",{parentName:"p"},"free"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"reserved"),", and ",(0,r.kt)("inlineCode",{parentName:"p"},"frozen"),". The ",(0,r.kt)("strong",{parentName:"p"},"usable")," balance of the account is the amount that\nis ",(0,r.kt)("inlineCode",{parentName:"p"},"free")," minus any funds considered ",(0,r.kt)("inlineCode",{parentName:"p"},"frozen"),", while the ",(0,r.kt)("strong",{parentName:"p"},"total")," balance of the account is the sum\nof ",(0,r.kt)("inlineCode",{parentName:"p"},"free")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"reserved")," funds. The ",(0,r.kt)("inlineCode",{parentName:"p"},"flags")," describe extra information about the account."),(0,r.kt)("p",null,"More in-depth information about the above data can be found in the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/blob/2e7fde832b77b242269b136f1c3b6fffef86f9b6/frame/balances/src/types.rs#LL95-L114"},"balances pallet in the Substrate code base"),"."),(0,r.kt)("h2",{id:"vanity-generator"},"Vanity Generator"),(0,r.kt)("p",null,"The vanity generator is a tool on ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/accounts/vanity"},"Polkadot-JS UI"),"\nthat lets you generate addresses that contain a specific substring. For the tutorial on how to\ncreate an account using Vanity Generator, visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000171416"},"this support article"),"."),(0,r.kt)("h2",{id:"encryption-enhancement"},"Encryption Enhancement"),(0,r.kt)("p",null,"Some newly generated ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," account files cannot be imported (restored) into older wallet software.\nThis is due to an enhanced encryption method, noticeable in a slight delay when\nencrypting/decrypting your wallet. If you cannot load a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," file, please use the latest version\nof the wallet software. If you cannot load it, ensure that the wallet software uses the newest\nversion of the ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/api/"},"Polkadot API"),"."))}m.isMDXComponent=!0},9853:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/AccountData-struct-118d0bf533806084460cba05bef62b9c.png"},2245:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const a=n.p+"assets/images/warning-multichain-account-0719ff59691f3ff48562d92ef2295e84.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/a7b37b86.25264040.js b/assets/js/a7b37b86.25264040.js deleted file mode 100644 index 42fff60cd27f..000000000000 --- a/assets/js/a7b37b86.25264040.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4507],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var o=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=o.createContext({}),c=function(e){var t=o.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(a),d=n,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||r;return a?o.createElement(h,s(s({ref:t},u),{},{components:a})):o.createElement(h,s({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,s=new Array(r);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:n,s[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),s=["components"],i={id:"scams",title:"How to Protect Yourself from Scams",sidebar_label:"Scam Protection",description:"How to Protect yourself against Scams.",keywords:["scams","protect","official"],slug:"../learn-scams"},l=void 0,c={unversionedId:"general/scams",id:"general/scams",title:"How to Protect Yourself from Scams",description:"How to Protect yourself against Scams.",source:"@site/../docs/general/scams.md",sourceDirName:"general",slug:"/learn-scams",permalink:"/docs/learn-scams",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/scams.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1701187212,formattedLastUpdatedAt:"Nov 28, 2023",frontMatter:{id:"scams",title:"How to Protect Yourself from Scams",sidebar_label:"Scam Protection",description:"How to Protect yourself against Scams.",keywords:["scams","protect","official"],slug:"../learn-scams"},sidebar:"docs",previous:{title:"Do Your Own Research",permalink:"/docs/how-to-dyor"},next:{title:"Transaction Verification",permalink:"/docs/transaction-attacks"}},u={},p=[{value:"DISCLAIMER: Key Security",id:"disclaimer-key-security",level:2},{value:"Essential Rules",id:"essential-rules",level:2},{value:"Some Common Types of Scams",id:"some-common-types-of-scams",level:3},{value:"Admins will never contact you directly",id:"admins-will-never-contact-you-directly",level:3},{value:"Keep your data secure",id:"keep-your-data-secure",level:3},{value:"Always check the source",id:"always-check-the-source",level:3},{value:"Check twice before sending DOT/KSM",id:"check-twice-before-sending-dotksm",level:3},{value:"Install the Polkadot{.js} extension",id:"install-the-polkadotjs-extension",level:3},{value:"Our official sites",id:"our-official-sites",level:3},{value:"I Got Scammed - What Can I Do?",id:"i-got-scammed---what-can-i-do",level:2}],m={toc:p},d="wrapper";function h(e){var t=e.components,a=(0,n.Z)(e,s);return(0,r.kt)(d,(0,o.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Scams are an unfortuante reality of the crypto industry. It's important to stay alert and protect\nyourself and your non-refundable crypto assets from scammers. If you ever feel you are being\nscammed, please get in contact with ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot Support"),"."),(0,r.kt)("h2",{id:"disclaimer-key-security"},"DISCLAIMER: Key Security"),(0,r.kt)("p",null,"The ",(0,r.kt)("em",{parentName:"p"},"only")," ways to access your account are via your secret seed or your account's JSON file in\ncombination with a password. Keep them offline in a secure and private location. If you share these\nwith anyone, they can access your account, including your funds. This information is always a target\nfor hackers and malicious actors. Check out the wiki doc on\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-scams"},"how to recognize scams"),"."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=ARsdXZycJAg"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/ARsdXZycJAg/0.jpg",alt:"Account Creation Tutorial"}))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181874-how-to-store-your-mnemonic-phrase-and-backup-file-safely"},"this support article"),"\nfor more information about key security.")),(0,r.kt)("h2",{id:"essential-rules"},"Essential Rules"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Never, ever, ever share your seed phrase or account password.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Do not trust anyone online. It is trivial for them to lie and change their identities.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"#i-got-scammed---what-can-i-do"},"If you are scammed"),", there is ",(0,r.kt)("strong",{parentName:"p"},"likely nothing")," that can be\ndone to recover your funds. If a scammer gets a hold of your seed phrase, they can transfer all\nof your funds to their account in seconds. It is better to be safe than to risk all of your\ntokens.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"If it sounds too good to be true, it probably is. People, especially celebrities, do not give\naway crypto for free. Even if they wanted to, they could just ask for your address as opposed to\nhaving you send them tokens.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Scams are absolutely rife in this space. It is easy and cheap to set a scam up, and hard to shut\none down. Therefore, the onus is on the user to be as diligent as possible in avoiding them.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"If you can, try to always verify new information that you see with an official source, such as\n",(0,r.kt)("a",{parentName:"p",href:"/docs/community"},"Polkadot network's official blog")," or\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot's Official Support"),". Often scammers will fake a\nwebsite or a blog post, but if you check it against a secondary source you will reduce the\nchances of being scammed."),(0,r.kt)("admonition",{parentName:"li",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"With crowdloans active on the network, it is very important to know how to safely participate.\nFake crowdloan campaigns may present an attractive target for scammers. If you are participating\nin a network-native crowdloan, ",(0,r.kt)("strong",{parentName:"p"},"never send your tokens to an address.")," Native crowdloan\ncontributions are made with a special transaction using a campaign index, where the contributed\nassets remain locked until the end of the lease period. Legitimate teams will not ask you to send\nyour assets to an address to participate in a network-native crowdloan.")))),(0,r.kt)("h3",{id:"some-common-types-of-scams"},"Some Common Types of Scams"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Private messages sent to you over Telegram, Twitter, and other social media - admins or employees\nwill never contact you."),(0,r.kt)("li",{parentName:"ul"},'"Giveaways" advertising that you "send us some DOT/KSM, we\'ll send you double back".'),(0,r.kt)("li",{parentName:"ul"},'Sites where you need to enter your seed phrase in order to "sync" your account, claim tokens,\nunblock transactions etc.'),(0,r.kt)("li",{parentName:"ul"},"Emails asking for DOT/KSM private keys/seeds/etc., posing as a member of any of our teams."),(0,r.kt)("li",{parentName:"ul"},'Scammers will take official videos, add "giveaway" text around it so that it looks like the\ngiveaway is supported by Polkadot, Kusama, Web3 Foundation, Parity, or another well-known entity.'),(0,r.kt)("li",{parentName:"ul"},"Many scammers will create nearly perfect imitations of sites - always triple-check the URL."),(0,r.kt)("li",{parentName:"ul"},"People offering to help you stake or get rewards."),(0,r.kt)("li",{parentName:"ul"},"People responding to questions that you asked publicly in a private chat."),(0,r.kt)("li",{parentName:"ul"},"Advertisements pointing to imitations of sites asking you to enter your seed words.")),(0,r.kt)("p",null,'These are just some of the types of scams. Scammers are inventing new ones all the time. In general,\ndo not trust anyone messaging you that you did not message yourself, and be wary of anyone\nattempting to help you or offer you a "deal".'),(0,r.kt)("p",null,"Scammers will often imitate usernames, profile pictures, etc. of well-known members of the\ncommunity. Often the differences in these accounts will be very minor, such as ",(0,r.kt)("inlineCode",{parentName:"p"},"joe_sm1th")," or\n",(0,r.kt)("inlineCode",{parentName:"p"},"jo_smith")," instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"joe_smith"),"."),(0,r.kt)("p",null,'Scammers will often make it seem like the "deal" is only available for a limited time. Do not be\ntricked by this, it is always better to confirm than to risk losing everything.'),(0,r.kt)("h3",{id:"admins-will-never-contact-you-directly"},"Admins will never contact you directly"),(0,r.kt)("p",null,'If you\'ve received a message from an admin over Telegram, ignore it. Our team members will never\npersonally message you. Our social media accounts are posted on our website and any new social media\naccounts will be announced by our team. We will never offer to sell you DOT at a discount, air-drop\n"rewards", or message you privately to help with a problem you posted publicly. Our social media can\nbe found below:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://twitter.com/Polkadot"},"Twitter")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/polkadot"},"Reddit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://dot.li/discord"},"Discord")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/channel/UCB7PbjuZLEba_znc7mEGNgw"},"Polkadot YouTube")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network"},"Polkadot Medium")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/community"},"Our Community Page")," also lists more social media accounts that Web3\nFoundation, Polkadot, and Kusama have.")),(0,r.kt)("h3",{id:"keep-your-data-secure"},"Keep your data secure"),(0,r.kt)("p",null,"You should ",(0,r.kt)("em",{parentName:"p"},"never")," share your seed phrase, password, private keys, or any other personal data with\nanyone. If you are concerned a wallet could be fake, please check out our list of well-known\n",(0,r.kt)("a",{parentName:"p",href:"./wallets"},"wallets"),"."),(0,r.kt)("p",null,"Some simple things that you can do to keep your assets and information secure from hackers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Keep your seed phrase only on paper, in a secret and secure location."),(0,r.kt)("li",{parentName:"ul"},"DO NOT keep your seed phrase on any electronic medium, like the cloud, on your computer, on a USB\ndrive, etc."),(0,r.kt)("li",{parentName:"ul"},"Never enter your seed or mnemonic phrase directly into a website."),(0,r.kt)("li",{parentName:"ul"},"Your seed phrase is meant as a backup in case you lose access to your wallet. Use it only for that\npurpose and only in wallets you've used before and trust."),(0,r.kt)("li",{parentName:"ul"},"Your passwords should be strong and unique. It is recommended that you use a\n",(0,r.kt)("a",{parentName:"li",href:"https://www.howtogeek.com/141500/why-you-should-use-a-password-manager-and-how-to-get-started/"},"password manager app"),"\nto create and store your passwords."),(0,r.kt)("li",{parentName:"ul"},"Keep your computer free of malware. Although an antivirus can be of great help, it's not a\npanacea. Safe browsing and downloading is the only way to be sure your computer is clean."),(0,r.kt)("li",{parentName:"ul"},"Avoid installing browser extensions from sources you don't trust explicitly."),(0,r.kt)("li",{parentName:"ul"},"Store your assets in cold storage, like a hardware wallet or\n",(0,r.kt)("a",{parentName:"li",href:"https://www.parity.io/signer/"},"Parity Signer"),".")),(0,r.kt)("h3",{id:"always-check-the-source"},"Always check the source"),(0,r.kt)("p",null,"For any potential scam, always be sure to do a background check on the source, i.e, look at any\nusername, email, YouTube channel name, URL, etc. If something seems fishy, that's because it likely\nis. Never enter any personal data if you feel the source could be a scam. Feel free to check with\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot's official support"),".."),(0,r.kt)("h3",{id:"check-twice-before-sending-dotksm"},"Check twice before sending DOT/KSM"),(0,r.kt)("p",null,"A good practice to take into consideration is to verify the address you are sending crypto to. If\nyou don't know that account, you probably shouldn't be sending your assets there. It's your\nresponsibility to make sure that you understand where you are sending your funds. Crypto is a\ndecentralized space and your only recourse if a mistake is made is by appealing to the council (who\nusually will not get involved in matters of mistaken transfers - see below)."),(0,r.kt)("h3",{id:"install-the-polkadotjs-extension"},"Install the Polkadot{.js} extension"),(0,r.kt)("p",null,"The extension uses crowd-sourced ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/phishing/"},"anti-phishing measures")," to\nautomatically prevent your browser from displaying known phishing or scam sites. They will be\nblocked upon loading, helping to prevent you from visiting these sites and thus falling for them."),(0,r.kt)("h3",{id:"our-official-sites"},"Our official sites"),(0,r.kt)("p",null,"You can use the following list of our official domains to make sure that you're visiting an official\nsite:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network"},"https://polkadot.network")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.io"},"https://polkadot.io")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://kusama.network"},"https://kusama.network")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://web3.foundation"},"https://web3.foundation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://parity.io"},"https://parity.io")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://substrate.io"},"https://substrate.io"))),(0,r.kt)("p",null,"Of course, many projects building on Polkadot and Kusama that use similar names. If, however, a site\nposes as Polkadot, Kusama, Web3 Foundation, or Parity on a domain not listed above, then it's most\nlikely a scam."),(0,r.kt)("p",null,"Besides those, there are also ",(0,r.kt)("inlineCode",{parentName:"p"},"polkadot.js.org")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"dotapps.io")," that host our web wallet and other\ntools."),(0,r.kt)("h2",{id:"i-got-scammed---what-can-i-do"},"I Got Scammed - What Can I Do?"),(0,r.kt)("p",null,"In the unfortunate case of having fallen for a scam, there is likely nothing that can be done to\nrecover your funds. However, there is still help and support that you can receive. The Polkadot\nSupport team stands ready to help you in this difficult situation. Please check this\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182668-what-to-do-if-you-fell-victim-to-scam-or-hack"},"Support article"),"\nfor steps you should take to ",(0,r.kt)("strong",{parentName:"p"},"prevent further loss")," and contact Polkadot Support from the same\npage. Finally, make sure to read the present article carefully to learn how to avoid falling victim\nin the future."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a7b37b86.f1de04f5.js b/assets/js/a7b37b86.f1de04f5.js new file mode 100644 index 000000000000..fa987dfb4785 --- /dev/null +++ b/assets/js/a7b37b86.f1de04f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[4507],{3905:(e,t,a)=>{a.d(t,{Zo:()=>u,kt:()=>h});var o=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=o.createContext({}),c=function(e){var t=o.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},u=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},d=o.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,l=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),p=c(a),d=n,h=p["".concat(l,".").concat(d)]||p[d]||m[d]||r;return a?o.createElement(h,s(s({ref:t},u),{},{components:a})):o.createElement(h,s({ref:t},u))}));function h(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,s=new Array(r);s[0]=d;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[p]="string"==typeof e?e:n,s[1]=i;for(var c=2;c{a.r(t),a.d(t,{assets:()=>u,contentTitle:()=>l,default:()=>h,frontMatter:()=>i,metadata:()=>c,toc:()=>p});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),s=["components"],i={id:"scams",title:"How to Protect Yourself from Scams",sidebar_label:"Scam Protection",description:"How to Protect yourself against Scams.",keywords:["scams","protect","official"],slug:"../learn-scams"},l=void 0,c={unversionedId:"general/scams",id:"general/scams",title:"How to Protect Yourself from Scams",description:"How to Protect yourself against Scams.",source:"@site/../docs/general/scams.md",sourceDirName:"general",slug:"/learn-scams",permalink:"/docs/learn-scams",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/scams.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"scams",title:"How to Protect Yourself from Scams",sidebar_label:"Scam Protection",description:"How to Protect yourself against Scams.",keywords:["scams","protect","official"],slug:"../learn-scams"},sidebar:"docs",previous:{title:"Do Your Own Research",permalink:"/docs/how-to-dyor"},next:{title:"Transaction Verification",permalink:"/docs/transaction-attacks"}},u={},p=[{value:"DISCLAIMER: Key Security",id:"disclaimer-key-security",level:2},{value:"Essential Rules",id:"essential-rules",level:2},{value:"Some Common Types of Scams",id:"some-common-types-of-scams",level:3},{value:"Admins will never contact you directly",id:"admins-will-never-contact-you-directly",level:3},{value:"Keep your data secure",id:"keep-your-data-secure",level:3},{value:"Always check the source",id:"always-check-the-source",level:3},{value:"Check twice before sending DOT/KSM",id:"check-twice-before-sending-dotksm",level:3},{value:"Install the Polkadot{.js} extension",id:"install-the-polkadotjs-extension",level:3},{value:"Our official sites",id:"our-official-sites",level:3},{value:"I Got Scammed - What Can I Do?",id:"i-got-scammed---what-can-i-do",level:2}],m={toc:p},d="wrapper";function h(e){var t=e.components,a=(0,n.Z)(e,s);return(0,r.kt)(d,(0,o.Z)({},m,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Scams are an unfortuante reality of the crypto industry. It's important to stay alert and protect\nyourself and your non-refundable crypto assets from scammers. If you ever feel you are being\nscammed, please get in contact with ",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot Support"),"."),(0,r.kt)("h2",{id:"disclaimer-key-security"},"DISCLAIMER: Key Security"),(0,r.kt)("p",null,"The ",(0,r.kt)("em",{parentName:"p"},"only")," ways to access your account are via your secret seed or your account's JSON file in\ncombination with a password. Keep them offline in a secure and private location. If you share these\nwith anyone, they can access your account, including your funds. This information is always a target\nfor hackers and malicious actors. Check out the wiki doc on\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-scams"},"how to recognize scams"),"."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=ARsdXZycJAg"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/ARsdXZycJAg/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=ARsdXZycJAg"},"Stay Safe in Polkadot")))),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000181874-how-to-store-your-mnemonic-phrase-and-backup-file-safely"},"this support article"),"\nfor more information about key security.")),(0,r.kt)("h2",{id:"essential-rules"},"Essential Rules"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Never, ever, ever share your seed phrase or account password.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Do not trust anyone online. It is trivial for them to lie and change their identities.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("a",{parentName:"p",href:"#i-got-scammed---what-can-i-do"},"If you are scammed"),", there is ",(0,r.kt)("strong",{parentName:"p"},"likely nothing")," that can be\ndone to recover your funds. If a scammer gets a hold of your seed phrase, they can transfer all\nof your funds to their account in seconds. It is better to be safe than to risk all of your\ntokens.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"If it sounds too good to be true, it probably is. People, especially celebrities, do not give\naway crypto for free. Even if they wanted to, they could just ask for your address as opposed to\nhaving you send them tokens.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"Scams are absolutely rife in this space. It is easy and cheap to set a scam up, and hard to shut\none down. Therefore, the onus is on the user to be as diligent as possible in avoiding them.")),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("p",{parentName:"li"},"If you can, try to always verify new information that you see with an official source, such as\n",(0,r.kt)("a",{parentName:"p",href:"/docs/community"},"Polkadot network's official blog")," or\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot's Official Support"),". Often scammers will fake a\nwebsite or a blog post, but if you check it against a secondary source you will reduce the\nchances of being scammed."),(0,r.kt)("admonition",{parentName:"li",type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"With crowdloans active on the network, it is very important to know how to safely participate.\nFake crowdloan campaigns may present an attractive target for scammers. If you are participating\nin a network-native crowdloan, ",(0,r.kt)("strong",{parentName:"p"},"never send your tokens to an address.")," Native crowdloan\ncontributions are made with a special transaction using a campaign index, where the contributed\nassets remain locked until the end of the lease period. Legitimate teams will not ask you to send\nyour assets to an address to participate in a network-native crowdloan.")))),(0,r.kt)("h3",{id:"some-common-types-of-scams"},"Some Common Types of Scams"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Private messages sent to you over Telegram, Twitter, and other social media - admins or employees\nwill never contact you."),(0,r.kt)("li",{parentName:"ul"},'"Giveaways" advertising that you "send us some DOT/KSM, we\'ll send you double back".'),(0,r.kt)("li",{parentName:"ul"},'Sites where you need to enter your seed phrase in order to "sync" your account, claim tokens,\nunblock transactions etc.'),(0,r.kt)("li",{parentName:"ul"},"Emails asking for DOT/KSM private keys/seeds/etc., posing as a member of any of our teams."),(0,r.kt)("li",{parentName:"ul"},'Scammers will take official videos, add "giveaway" text around it so that it looks like the\ngiveaway is supported by Polkadot, Kusama, Web3 Foundation, Parity, or another well-known entity.'),(0,r.kt)("li",{parentName:"ul"},"Many scammers will create nearly perfect imitations of sites - always triple-check the URL."),(0,r.kt)("li",{parentName:"ul"},"People offering to help you stake or get rewards."),(0,r.kt)("li",{parentName:"ul"},"People responding to questions that you asked publicly in a private chat."),(0,r.kt)("li",{parentName:"ul"},"Advertisements pointing to imitations of sites asking you to enter your seed words.")),(0,r.kt)("p",null,'These are just some of the types of scams. Scammers are inventing new ones all the time. In general,\ndo not trust anyone messaging you that you did not message yourself, and be wary of anyone\nattempting to help you or offer you a "deal".'),(0,r.kt)("p",null,"Scammers will often imitate usernames, profile pictures, etc. of well-known members of the\ncommunity. Often the differences in these accounts will be very minor, such as ",(0,r.kt)("inlineCode",{parentName:"p"},"joe_sm1th")," or\n",(0,r.kt)("inlineCode",{parentName:"p"},"jo_smith")," instead of ",(0,r.kt)("inlineCode",{parentName:"p"},"joe_smith"),"."),(0,r.kt)("p",null,'Scammers will often make it seem like the "deal" is only available for a limited time. Do not be\ntricked by this, it is always better to confirm than to risk losing everything.'),(0,r.kt)("h3",{id:"admins-will-never-contact-you-directly"},"Admins will never contact you directly"),(0,r.kt)("p",null,'If you\'ve received a message from an admin over Telegram, ignore it. Our team members will never\npersonally message you. Our social media accounts are posted on our website and any new social media\naccounts will be announced by our team. We will never offer to sell you DOT at a discount, air-drop\n"rewards", or message you privately to help with a problem you posted publicly. Our social media can\nbe found below:'),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://twitter.com/Polkadot"},"Twitter")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.reddit.com/r/polkadot"},"Reddit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://dot.li/discord"},"Discord")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/channel/UCB7PbjuZLEba_znc7mEGNgw"},"Polkadot YouTube")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network"},"Polkadot Medium")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/community"},"Our Community Page")," also lists more social media accounts that Web3\nFoundation, Polkadot, and Kusama have.")),(0,r.kt)("h3",{id:"keep-your-data-secure"},"Keep your data secure"),(0,r.kt)("p",null,"You should ",(0,r.kt)("em",{parentName:"p"},"never")," share your seed phrase, password, private keys, or any other personal data with\nanyone. If you are concerned a wallet could be fake, please check out our list of well-known\n",(0,r.kt)("a",{parentName:"p",href:"./wallets"},"wallets"),"."),(0,r.kt)("p",null,"Some simple things that you can do to keep your assets and information secure from hackers:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Keep your seed phrase only on paper, in a secret and secure location."),(0,r.kt)("li",{parentName:"ul"},"DO NOT keep your seed phrase on any electronic medium, like the cloud, on your computer, on a USB\ndrive, etc."),(0,r.kt)("li",{parentName:"ul"},"Never enter your seed or mnemonic phrase directly into a website."),(0,r.kt)("li",{parentName:"ul"},"Your seed phrase is meant as a backup in case you lose access to your wallet. Use it only for that\npurpose and only in wallets you've used before and trust."),(0,r.kt)("li",{parentName:"ul"},"Your passwords should be strong and unique. It is recommended that you use a\n",(0,r.kt)("a",{parentName:"li",href:"https://www.howtogeek.com/141500/why-you-should-use-a-password-manager-and-how-to-get-started/"},"password manager app"),"\nto create and store your passwords."),(0,r.kt)("li",{parentName:"ul"},"Keep your computer free of malware. Although an antivirus can be of great help, it's not a\npanacea. Safe browsing and downloading is the only way to be sure your computer is clean."),(0,r.kt)("li",{parentName:"ul"},"Avoid installing browser extensions from sources you don't trust explicitly."),(0,r.kt)("li",{parentName:"ul"},"Store your assets in cold storage, like a hardware wallet or\n",(0,r.kt)("a",{parentName:"li",href:"https://www.parity.io/signer/"},"Parity Signer"),".")),(0,r.kt)("h3",{id:"always-check-the-source"},"Always check the source"),(0,r.kt)("p",null,"For any potential scam, always be sure to do a background check on the source, i.e, look at any\nusername, email, YouTube channel name, URL, etc. If something seems fishy, that's because it likely\nis. Never enter any personal data if you feel the source could be a scam. Feel free to check with\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network"},"Polkadot's official support"),".."),(0,r.kt)("h3",{id:"check-twice-before-sending-dotksm"},"Check twice before sending DOT/KSM"),(0,r.kt)("p",null,"A good practice to take into consideration is to verify the address you are sending crypto to. If\nyou don't know that account, you probably shouldn't be sending your assets there. It's your\nresponsibility to make sure that you understand where you are sending your funds. Crypto is a\ndecentralized space and your only recourse if a mistake is made is by appealing to the council (who\nusually will not get involved in matters of mistaken transfers - see below)."),(0,r.kt)("h3",{id:"install-the-polkadotjs-extension"},"Install the Polkadot{.js} extension"),(0,r.kt)("p",null,"The extension uses crowd-sourced ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/phishing/"},"anti-phishing measures")," to\nautomatically prevent your browser from displaying known phishing or scam sites. They will be\nblocked upon loading, helping to prevent you from visiting these sites and thus falling for them."),(0,r.kt)("h3",{id:"our-official-sites"},"Our official sites"),(0,r.kt)("p",null,"You can use the following list of our official domains to make sure that you're visiting an official\nsite:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network"},"https://polkadot.network")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.io"},"https://polkadot.io")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://kusama.network"},"https://kusama.network")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://web3.foundation"},"https://web3.foundation")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://parity.io"},"https://parity.io")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://substrate.io"},"https://substrate.io"))),(0,r.kt)("p",null,"Of course, many projects building on Polkadot and Kusama that use similar names. If, however, a site\nposes as Polkadot, Kusama, Web3 Foundation, or Parity on a domain not listed above, then it's most\nlikely a scam."),(0,r.kt)("p",null,"Besides those, there are also ",(0,r.kt)("inlineCode",{parentName:"p"},"polkadot.js.org")," and ",(0,r.kt)("inlineCode",{parentName:"p"},"dotapps.io")," that host our web wallet and other\ntools."),(0,r.kt)("h2",{id:"i-got-scammed---what-can-i-do"},"I Got Scammed - What Can I Do?"),(0,r.kt)("p",null,"In the unfortunate case of having fallen for a scam, there is likely nothing that can be done to\nrecover your funds. However, there is still help and support that you can receive. The Polkadot\nSupport team stands ready to help you in this difficult situation. Please check this\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182668-what-to-do-if-you-fell-victim-to-scam-or-hack"},"Support article"),"\nfor steps you should take to ",(0,r.kt)("strong",{parentName:"p"},"prevent further loss")," and contact Polkadot Support from the same\npage. Finally, make sure to read the present article carefully to learn how to avoid falling victim\nin the future."))}h.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/c2c6a3a6.cbbda940.js b/assets/js/c2c6a3a6.cbbda940.js deleted file mode 100644 index 8dce35390012..000000000000 --- a/assets/js/c2c6a3a6.cbbda940.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2712],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>u});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),c=p(a),d=o,u=c["".concat(l,".").concat(d)]||c[d]||m[d]||r;return a?n.createElement(u,i(i({ref:t},h),{},{components:a})):n.createElement(u,i({ref:t},h))}));function u(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,i=new Array(r);i[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>h,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>p,toc:()=>c});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=["components"],s={id:"learn-nft-projects",title:"NFT projects on Polkadot and Kusama",sidebar_label:"NFT Projects",description:"NFT Projects in the Polkadot Ecosystem.",keywords:["NFT","non-fungible token","NFT 2.0"],slug:"../learn-nft-projects"},l=void 0,p={unversionedId:"learn/learn-nft-projects",id:"learn/learn-nft-projects",title:"NFT projects on Polkadot and Kusama",description:"NFT Projects in the Polkadot Ecosystem.",source:"@site/../docs/learn/learn-nft-projects.md",sourceDirName:"learn",slug:"/learn-nft-projects",permalink:"/docs/learn-nft-projects",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-nft-projects.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1698652395,formattedLastUpdatedAt:"Oct 30, 2023",frontMatter:{id:"learn-nft-projects",title:"NFT projects on Polkadot and Kusama",sidebar_label:"NFT Projects",description:"NFT Projects in the Polkadot Ecosystem.",keywords:["NFT","non-fungible token","NFT 2.0"],slug:"../learn-nft-projects"},sidebar:"docs",previous:{title:"Multisig Apps",permalink:"/docs/multisig-apps"},next:{title:"Parachain Apps",permalink:"/docs/parachains-apps"}},h={},c=[{value:"List of NFT Projects",id:"list-of-nft-projects",level:2},{value:"Astar",id:"astar",level:2},{value:"Basilisk",id:"basilisk",level:2},{value:"Efinity",id:"efinity",level:2},{value:"KodaDot",id:"kodadot",level:2},{value:"The Team Behind KodaDot",id:"the-team-behind-kodadot",level:3},{value:"Ecosystem Tools by KodaDot",id:"ecosystem-tools-by-kodadot",level:3},{value:"Moonbeam",id:"moonbeam",level:2},{value:"RMRK",id:"rmrk",level:2},{value:"NFT Legos",id:"nft-legos",level:3},{value:"NFT from Kanaria",id:"nft-from-kanaria",level:3},{value:"Asset Hub",id:"asset-hub",level:2},{value:"Unique Network",id:"unique-network",level:2}],m={toc:c},d="wrapper";function u(e){var t=e.components,s=(0,o.Z)(e,i);return(0,r.kt)(d,(0,n.Z)({},m,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Community Page",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This page is open to contributions from the community. Please follow the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation"},"Wiki contribution guidelines"),"\nand add your NFT app to this page.")),(0,r.kt)("h2",{id:"list-of-nft-projects"},"List of NFT Projects"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#Astar"},"Astar")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#basilisk"},"Basilisk")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#efinity"},"Efinity")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#kodadot"},"Kodadot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#moonbeam"},"Moonbeam")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#rmrk"},"RMRK")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#asset-hub"},"Asset Hub")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#unique-network"},"Unique"))),(0,r.kt)("h2",{id:"astar"},"Astar"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://astar.network"},"Astar Network")," and its sister network\n",(0,r.kt)("a",{parentName:"p",href:"https://shiden.astar.network"},"Shiden Network"),' are the smart contract infrastructure in the Polkadot\nEcosystem. Astar Ecosystem ("Astar") supports NFTs developed with EVM smart contracts and WASM smart\ncontracts.'),(0,r.kt)("p",null,"Astar has all toolings available that every EVM NFT developer knows. The availability of those\ntoolings makes the onboarding to Astar networks very attractive to any developer looking to explore\nthe Polkadot Ecosystem. Astar has an active community of artists and NFT enthusiasts. Besides\nsupporting all EVM toolings, Astar also bootstrapped the WASM smart contract environment for NFT\ndevelopers writing smart contracts with ",(0,r.kt)("a",{parentName:"p",href:"https://use.ink"},"ink!")," based on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md"},"PSP34")," (Polkadot Standards Proposals)."),(0,r.kt)("p",null,"The main advantage of having a multi-virtual machine environment for NFT developers is that it will\ngive more possibilities to the builders for the use case they are developing. With the support of\nWASM smart contracts, developers can develop solutions like ",(0,r.kt)("a",{parentName:"p",href:"./learn-nft#rmrk"},"RMRK")," with smart\ncontracts."),(0,r.kt)("h2",{id:"basilisk"},"Basilisk"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://bsx.fi/"},"Basilisk")," is a Kusama parachain that provides liquidity for the ecosystem. It also\nhas a full-featured NFT platform based on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/tree/master/frame/uniques"},"Uniques pallet"),". One of the key\nfeatures of Basilisk is that it allows minting NFTs with a royalty fee. This royalty fee is\ndistributed to the original creator of the NFT via the runtime pallet. Additionally\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/galacticcouncil/Basilisk-node/tree/master/pallets/marketplace"},"Basilisk offers a feature"),"\nthat allows creating a buy order for a specific NFT."),(0,r.kt)("p",null,"These NFTs can be viewed and interacted instantly on ",(0,r.kt)("a",{parentName:"p",href:"https://kodadot.xyz"},"KodaDot"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"nft-basilisk",src:a(70964).Z,width:"3358",height:"1564"})),(0,r.kt)("h2",{id:"efinity"},"Efinity"),(0,r.kt)("p",null,"Spearheaded by ",(0,r.kt)("a",{parentName:"p",href:"https://enjin.io"},"Enjin"),", the authors of Ethereum's ERC1155 standard and makers of\nthe Enjin wallet and Unity plugin, which allows easy implementation of NFTs into 3D games, Efinity\nis an NFT bridging chain coming to Kusama and Polkadot in 2022."),(0,r.kt)("p",null,"They plan to build a ",(0,r.kt)("em",{parentName:"p"},"paratoken")," which would be a standard for token migration across different\nparachains in the Polkadot ecosystem, but also into and out of Ethereum and other EVM systems."),(0,r.kt)("h2",{id:"kodadot"},(0,r.kt)("a",{parentName:"h2",href:"https://kodadot.xyz"},"KodaDot")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://kodadot.xyz"},"KodaDot")," is an open-source NFT marketplace that operates on the Dotsama\n(Kusama/Polkadot) network, striving to aggregate various NFT standards (Kusama, RMRK, Asset Hub,\nBasilisk, etc.) in the Dotsama ecosystem, enhancing user experience by abstracting these standards."),(0,r.kt)("p",null,"KodaDot's strength lies in its commitment to open-source collaboration. It has transformed into a\ncollaborative hub where creators, developers, and community members work collectively for decision\nmaking, amassing an extensive network of over\n",(0,r.kt)("a",{parentName:"p",href:"https://hello.kodadot.xyz/about-us/who-are-we/achievements"},"90 open-source contributors"),". This\nrobust collaboration has earned KodaDot the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/topics/polkadot"},"number one rank as a dapp in the Polkadot ecosystem on Github"),"."),(0,r.kt)("p",null,"See below a video tutorial about how to mint your NFT on ",(0,r.kt)("a",{parentName:"p",href:"#asset-hub"},"the Polkadot Asset Hub")," using\nKodaDot."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=SKdx4pTgL04"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/SKdx4pTgL04/0.jpg",alt:"KodaDot Tutorial on Minting NFTs"}))),(0,r.kt)("p",null,"For more information about minting using KodaDot see\n",(0,r.kt)("a",{parentName:"p",href:"https://hello.kodadot.xyz/tutorial/minting/how-to-mint-nfts-on-polkadot-asset-hub-using-kodadot"},"this step-by-step tutorial"),"."),(0,r.kt)("h3",{id:"the-team-behind-kodadot"},"The Team Behind KodaDot"),(0,r.kt)("p",null,"KodaDot began as the first\n",(0,r.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/motion/256"},"unofficial explorer for RMRKv0.0.1"),"\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/rmrk-team/rmrk-spec/issues/10"},"contributing to RMRK protocol"),". It later\n",(0,r.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/motion/349"},"received Kusama Treasury funding"),", which propelled the\nteam to create the\n",(0,r.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/motion/349"},"best end-user experience on the Asset hub"),"."),(0,r.kt)("p",null,"In the summer of 2022, KodaDot won the first prize at the\n",(0,r.kt)("a",{parentName:"p",href:"https://devpost.com/software/kodadot-moonsama"},"Polkadot North American event")," for implementing\nMoonBeam and MoonRiver NFT EVM smart contracts and enabling read-only access to existing components\nfor seamless end-user interaction."),(0,r.kt)("p",null,"The team successfully\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/kodadot/nft-gallery/issues/660"},"launched with Basilisk NFT Marketplace pallet in Fall 2022"),",\nwhere an increasing number of artist collections are emerging, providing artists the opportunity to\nreceive offers on unlisted NFTs and earn on-chain royalties."),(0,r.kt)("p",null,"KodaDot's upcoming integrations are based on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md"},"PSP-34"),", leveraging\n",(0,r.kt)("a",{parentName:"p",href:"https://use.ink/"},"smart contracts written with ink!"),"."),(0,r.kt)("h3",{id:"ecosystem-tools-by-kodadot"},"Ecosystem Tools by KodaDot"),(0,r.kt)("p",null,"KodaDot has enriched the Polkadot ecosystem by\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/kodadot/uniquery"},"offering a comprehensive API interface for builders"),", based on\nthe SubSquid indexer. This platform also presents searchable items and collections, translating\non-chain transactions into deep insights about collection ownership dynamics for end-users. For more\ninfo about KodaDot check out ",(0,r.kt)("a",{parentName:"p",href:"https://hello.kodadot.xyz/"},"link"),"."),(0,r.kt)("h2",{id:"moonbeam"},"Moonbeam"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://moonbeam.network"},"Moonbeam")," and its Kusama counterpart Moonriver are full EVM deployments\nwith Ethereum RPC endpoints."),(0,r.kt)("p",null,"This means that the entire toolkit offered to other EVM chains (stacks like Hardhat, Remix, Truffle,\nMetamask, etc.) are available to Moonriver / Moonbeam users and developers, giving it a noticeable\nhead start in attracting existing userbases."),(0,r.kt)("p",null,"Several dozen high profile teams are launching their products (or re-launching) on Moonriver /\nMoonbeam, however, it is essential to note that Moonbeam is an EVM chain and will therefore suffer\nfrom the same limitations as any other EVM chain in regards to customization and feature-richness of\nNFTs."),(0,r.kt)("p",null,"A notable advantage, however, is that Moonriver / Moonbeam is still a Substrate chain, meaning\nintegration of custom pallets into the runtime is still possible, making NFT specific optimizations\nat the chain runtime level a reliable way to keep EVM compatibility of tools while at the same time\noptimizing storage and interactions for rich NFTs."),(0,r.kt)("h2",{id:"rmrk"},"RMRK"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://rmrk.app"},"RMRK")," is a set of NFT 2.0 standards developed in three distinct code flavors:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"https://en.bitcoin.it/wiki/Colored_Coins"},'"Colored coins"'),' approach, as on Bitcoin, originally\ndeveloped as a "hack" on the Kusama chain. This is now deprecated, and it is recommended\nimplementers use any of the other options.'),(0,r.kt)("li",{parentName:"ol"},"Solidity contracts, compatible with any EVM blockchain in and outside the Polkadot ecosystem.\nDocumented ",(0,r.kt)("a",{parentName:"li",href:"https://evm.rmrk.app"},"here")),(0,r.kt)("li",{parentName:"ol"},"Rust code (Substrate pallets), compatible with any Substrate chain. Code is available\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/rmrk-team/rmrk-substrate"},"here"),".")),(0,r.kt)("p",null,"Additionally, two more flavors are in development:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"https://astar.network/"},"Astar")," are developing the ink! version of RMRK:\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/rmrk-team/rmrk-ink"},"code here"),"."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"https://www.gear-tech.io/"},"Gear Technologies")," are developing the Gear implementation:\n",(0,r.kt)("a",{parentName:"li",href:"https://wiki.gear-tech.io/docs/examples/rmrk/"},"code and docs here"),".")),(0,r.kt)("p",null,'The RMRK NFT 2.0 standards are a set of "NFT legos", primitives that, when put together, allow a\nbuilder to compose an NFT system of arbitrary complexity without smart contracts.'),(0,r.kt)("h3",{id:"nft-legos"},"NFT Legos"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"NFTs can own other NFTs, NFTs can equip other NFTs for visual change"),(0,r.kt)("li",{parentName:"ol"},"NFTs can have multiple resources (different outputs based on context and resource priority)"),(0,r.kt)("li",{parentName:"ol"},"NFTs can have on-chain emotes (reactions) for price discovery and social mechanics"),(0,r.kt)("li",{parentName:"ol"},"NFTs have conditional rendering (e.g. show Mona Lisa as blushing if she got 50 kissy \ud83d\ude18 emoji)"),(0,r.kt)("li",{parentName:"ol"},"NFTs can be governed by the community via fungible shareholder-tokens (fractionalization of NFTs)")),(0,r.kt)("h3",{id:"nft-from-kanaria"},"NFT from ",(0,r.kt)("a",{parentName:"h3",href:"https://kanaria.rmrk.app"},"Kanaria")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"kanaria.png",src:a(19379).Z,width:"1891",height:"799"})),(0,r.kt)("admonition",{title:"Multi-resource NFTs",type:"note"},(0,r.kt)("p",{parentName:"admonition"},'A multi-resource NFT (gif of statue, and SVG-composable dynamic NFT in one) that can also equip\nother NFTs from within its "inventory".')),(0,r.kt)("p",null,"Two marketplaces for RMRK-based NFTs exist with hundreds of projects already launched:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://singular.rmrk.app"},"Singular"),", the official marketplace")),(0,r.kt)("p",null,"For a complete introduction into RMRK, see ",(0,r.kt)("a",{parentName:"p",href:"https://url.rmrk.app/wasmconf"},"this presentation")," or\nread ",(0,r.kt)("a",{parentName:"p",href:"https://docs.rmrk.app"},"the non-technical docs"),"."),(0,r.kt)("h2",{id:"asset-hub"},"Asset Hub"),(0,r.kt)("p",null,"The Asset Hub is a generic assets parachain which provides functionality for deploying and\ntransferring assets \u2014 both Fungible and Non-Fungible Tokens (NFTs). The Asset Hub currently hosts\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nft-pallets/#uniques-pallet"},"Uniques pallet")," and the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nft-pallets#nfts-pallet"},"NFTs pallet")," with NFT 2.0 functionalities."),(0,r.kt)("h2",{id:"unique-network"},"Unique Network"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://unique.network/"},"Unique network"),", an NFT-specific blockchain offering innovations such as\nsponsored transactions, bundling fungible tokens with non-fungibles, and splitting NFTs into\nfungible tokens for partial ownership."),(0,r.kt)("p",null,"Unique Network have launched two NFT projects to date: Substrapunks as part of\n",(0,r.kt)("a",{parentName:"p",href:"https://hackusama.devpost.com/"},"Hackusama"),", and Chelobricks as a promotion during\n",(0,r.kt)("a",{parentName:"p",href:"https://decoded.polkadot.network/"},"Polkadot Decoded"),"."),(0,r.kt)("p",null,"Unique Network focuses on B2B use cases, aiming to be an infrastructure provider for others to build\non, rather than entering the NFT space themselves as an end-product."),(0,r.kt)("p",null,"Unique Network aims to make their marketplace technology open-source and whitelabel-friendly. In\ntheory, it should be trivial to set up a new marketplace for your project using Unique's technology.\nUnique network aims to be a parachain on Polkadot, and Quartz is their Kusama counterpart."))}u.isMDXComponent=!0},19379:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/kanaria-55b0060679c6303db0fc91f5c402ba02.png"},70964:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/nft-basilisk-654977e2e97885e796857fc2e2add909.png"}}]); \ No newline at end of file diff --git a/assets/js/c2c6a3a6.d084caff.js b/assets/js/c2c6a3a6.d084caff.js new file mode 100644 index 000000000000..7e473fc1544e --- /dev/null +++ b/assets/js/c2c6a3a6.d084caff.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2712],{3905:(e,t,a)=>{a.d(t,{Zo:()=>h,kt:()=>u});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},h=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),c=p(a),m=o,u=c["".concat(l,".").concat(m)]||c[m]||d[m]||r;return a?n.createElement(u,i(i({ref:t},h),{},{components:a})):n.createElement(u,i({ref:t},h))}));function u(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,i=new Array(r);i[0]=m;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>h,contentTitle:()=>l,default:()=>u,frontMatter:()=>s,metadata:()=>p,toc:()=>c});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=["components"],s={id:"learn-nft-projects",title:"NFT projects on Polkadot and Kusama",sidebar_label:"NFT Projects",description:"NFT Projects in the Polkadot Ecosystem.",keywords:["NFT","non-fungible token","NFT 2.0"],slug:"../learn-nft-projects"},l=void 0,p={unversionedId:"learn/learn-nft-projects",id:"learn/learn-nft-projects",title:"NFT projects on Polkadot and Kusama",description:"NFT Projects in the Polkadot Ecosystem.",source:"@site/../docs/learn/learn-nft-projects.md",sourceDirName:"learn",slug:"/learn-nft-projects",permalink:"/docs/learn-nft-projects",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-nft-projects.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-nft-projects",title:"NFT projects on Polkadot and Kusama",sidebar_label:"NFT Projects",description:"NFT Projects in the Polkadot Ecosystem.",keywords:["NFT","non-fungible token","NFT 2.0"],slug:"../learn-nft-projects"},sidebar:"docs",previous:{title:"Multisig Apps",permalink:"/docs/multisig-apps"},next:{title:"Parachain Apps",permalink:"/docs/parachains-apps"}},h={},c=[{value:"List of NFT Projects",id:"list-of-nft-projects",level:2},{value:"Astar",id:"astar",level:2},{value:"Basilisk",id:"basilisk",level:2},{value:"Efinity",id:"efinity",level:2},{value:"KodaDot",id:"kodadot",level:2},{value:"The Team Behind KodaDot",id:"the-team-behind-kodadot",level:3},{value:"Ecosystem Tools by KodaDot",id:"ecosystem-tools-by-kodadot",level:3},{value:"Moonbeam",id:"moonbeam",level:2},{value:"RMRK",id:"rmrk",level:2},{value:"NFT Legos",id:"nft-legos",level:3},{value:"NFT from Kanaria",id:"nft-from-kanaria",level:3},{value:"Asset Hub",id:"asset-hub",level:2},{value:"Unique Network",id:"unique-network",level:2}],d={toc:c},m="wrapper";function u(e){var t=e.components,s=(0,o.Z)(e,i);return(0,r.kt)(m,(0,n.Z)({},d,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Community Page",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This page is open to contributions from the community. Please follow the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation"},"Wiki contribution guidelines"),"\nand add your NFT app to this page.")),(0,r.kt)("h2",{id:"list-of-nft-projects"},"List of NFT Projects"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#Astar"},"Astar")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#basilisk"},"Basilisk")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#efinity"},"Efinity")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#kodadot"},"Kodadot")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#moonbeam"},"Moonbeam")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#rmrk"},"RMRK")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#asset-hub"},"Asset Hub")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#unique-network"},"Unique"))),(0,r.kt)("h2",{id:"astar"},"Astar"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://astar.network"},"Astar Network")," and its sister network\n",(0,r.kt)("a",{parentName:"p",href:"https://shiden.astar.network"},"Shiden Network"),' are the smart contract infrastructure in the Polkadot\nEcosystem. Astar Ecosystem ("Astar") supports NFTs developed with EVM smart contracts and WASM smart\ncontracts.'),(0,r.kt)("p",null,"Astar has all toolings available that every EVM NFT developer knows. The availability of those\ntoolings makes the onboarding to Astar networks very attractive to any developer looking to explore\nthe Polkadot Ecosystem. Astar has an active community of artists and NFT enthusiasts. Besides\nsupporting all EVM toolings, Astar also bootstrapped the WASM smart contract environment for NFT\ndevelopers writing smart contracts with ",(0,r.kt)("a",{parentName:"p",href:"https://use.ink"},"ink!")," based on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md"},"PSP34")," (Polkadot Standards Proposals)."),(0,r.kt)("p",null,"The main advantage of having a multi-virtual machine environment for NFT developers is that it will\ngive more possibilities to the builders for the use case they are developing. With the support of\nWASM smart contracts, developers can develop solutions like ",(0,r.kt)("a",{parentName:"p",href:"./learn-nft#rmrk"},"RMRK")," with smart\ncontracts."),(0,r.kt)("h2",{id:"basilisk"},"Basilisk"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://bsx.fi/"},"Basilisk")," is a Kusama parachain that provides liquidity for the ecosystem. It also\nhas a full-featured NFT platform based on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/substrate/tree/master/frame/uniques"},"Uniques pallet"),". One of the key\nfeatures of Basilisk is that it allows minting NFTs with a royalty fee. This royalty fee is\ndistributed to the original creator of the NFT via the runtime pallet. Additionally\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/galacticcouncil/Basilisk-node/tree/master/pallets/marketplace"},"Basilisk offers a feature"),"\nthat allows creating a buy order for a specific NFT."),(0,r.kt)("p",null,"These NFTs can be viewed and interacted instantly on ",(0,r.kt)("a",{parentName:"p",href:"https://kodadot.xyz"},"KodaDot"),"."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"nft-basilisk",src:a(70964).Z,width:"3358",height:"1564"})),(0,r.kt)("h2",{id:"efinity"},"Efinity"),(0,r.kt)("p",null,"Spearheaded by ",(0,r.kt)("a",{parentName:"p",href:"https://enjin.io"},"Enjin"),", the authors of Ethereum's ERC1155 standard and makers of\nthe Enjin wallet and Unity plugin, which allows easy implementation of NFTs into 3D games, Efinity\nis an NFT bridging chain coming to Kusama and Polkadot in 2022."),(0,r.kt)("p",null,"They plan to build a ",(0,r.kt)("em",{parentName:"p"},"paratoken")," which would be a standard for token migration across different\nparachains in the Polkadot ecosystem, but also into and out of Ethereum and other EVM systems."),(0,r.kt)("h2",{id:"kodadot"},(0,r.kt)("a",{parentName:"h2",href:"https://kodadot.xyz"},"KodaDot")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://kodadot.xyz"},"KodaDot")," is an open-source NFT marketplace that operates on the Dotsama\n(Kusama/Polkadot) network, striving to aggregate various NFT standards (Kusama, RMRK, Asset Hub,\nBasilisk, etc.) in the Dotsama ecosystem, enhancing user experience by abstracting these standards."),(0,r.kt)("p",null,"KodaDot's strength lies in its commitment to open-source collaboration. It has transformed into a\ncollaborative hub where creators, developers, and community members work collectively for decision\nmaking, amassing an extensive network of over\n",(0,r.kt)("a",{parentName:"p",href:"https://hello.kodadot.xyz/about-us/who-are-we/achievements"},"90 open-source contributors"),". This\nrobust collaboration has earned KodaDot the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/topics/polkadot"},"number one rank as a dapp in the Polkadot ecosystem on Github"),"."),(0,r.kt)("p",null,"See below a video tutorial about how to mint your NFT on ",(0,r.kt)("a",{parentName:"p",href:"#asset-hub"},"the Polkadot Asset Hub")," using\nKodaDot."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=SKdx4pTgL04"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/SKdx4pTgL04/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=SKdx4pTgL04"},"KodaDot Tutorial on Minting NFTs")))),(0,r.kt)("p",null,"For more information about minting using KodaDot see\n",(0,r.kt)("a",{parentName:"p",href:"https://hello.kodadot.xyz/tutorial/minting/how-to-mint-nfts-on-polkadot-asset-hub-using-kodadot"},"this step-by-step tutorial"),"."),(0,r.kt)("h3",{id:"the-team-behind-kodadot"},"The Team Behind KodaDot"),(0,r.kt)("p",null,"KodaDot began as the first\n",(0,r.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/motion/256"},"unofficial explorer for RMRKv0.0.1"),"\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/rmrk-team/rmrk-spec/issues/10"},"contributing to RMRK protocol"),". It later\n",(0,r.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/motion/349"},"received Kusama Treasury funding"),", which propelled the\nteam to create the\n",(0,r.kt)("a",{parentName:"p",href:"https://kusama.polkassembly.io/motion/349"},"best end-user experience on the Asset hub"),"."),(0,r.kt)("p",null,"In the summer of 2022, KodaDot won the first prize at the\n",(0,r.kt)("a",{parentName:"p",href:"https://devpost.com/software/kodadot-moonsama"},"Polkadot North American event")," for implementing\nMoonBeam and MoonRiver NFT EVM smart contracts and enabling read-only access to existing components\nfor seamless end-user interaction."),(0,r.kt)("p",null,"The team successfully\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/kodadot/nft-gallery/issues/660"},"launched with Basilisk NFT Marketplace pallet in Fall 2022"),",\nwhere an increasing number of artist collections are emerging, providing artists the opportunity to\nreceive offers on unlisted NFTs and earn on-chain royalties."),(0,r.kt)("p",null,"KodaDot's upcoming integrations are based on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/PSPs/blob/master/PSPs/psp-34.md"},"PSP-34"),", leveraging\n",(0,r.kt)("a",{parentName:"p",href:"https://use.ink/"},"smart contracts written with ink!"),"."),(0,r.kt)("h3",{id:"ecosystem-tools-by-kodadot"},"Ecosystem Tools by KodaDot"),(0,r.kt)("p",null,"KodaDot has enriched the Polkadot ecosystem by\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/kodadot/uniquery"},"offering a comprehensive API interface for builders"),", based on\nthe SubSquid indexer. This platform also presents searchable items and collections, translating\non-chain transactions into deep insights about collection ownership dynamics for end-users. For more\ninfo about KodaDot check out ",(0,r.kt)("a",{parentName:"p",href:"https://hello.kodadot.xyz/"},"link"),"."),(0,r.kt)("h2",{id:"moonbeam"},"Moonbeam"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://moonbeam.network"},"Moonbeam")," and its Kusama counterpart Moonriver are full EVM deployments\nwith Ethereum RPC endpoints."),(0,r.kt)("p",null,"This means that the entire toolkit offered to other EVM chains (stacks like Hardhat, Remix, Truffle,\nMetamask, etc.) are available to Moonriver / Moonbeam users and developers, giving it a noticeable\nhead start in attracting existing userbases."),(0,r.kt)("p",null,"Several dozen high profile teams are launching their products (or re-launching) on Moonriver /\nMoonbeam, however, it is essential to note that Moonbeam is an EVM chain and will therefore suffer\nfrom the same limitations as any other EVM chain in regards to customization and feature-richness of\nNFTs."),(0,r.kt)("p",null,"A notable advantage, however, is that Moonriver / Moonbeam is still a Substrate chain, meaning\nintegration of custom pallets into the runtime is still possible, making NFT specific optimizations\nat the chain runtime level a reliable way to keep EVM compatibility of tools while at the same time\noptimizing storage and interactions for rich NFTs."),(0,r.kt)("h2",{id:"rmrk"},"RMRK"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://rmrk.app"},"RMRK")," is a set of NFT 2.0 standards developed in three distinct code flavors:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"https://en.bitcoin.it/wiki/Colored_Coins"},'"Colored coins"'),' approach, as on Bitcoin, originally\ndeveloped as a "hack" on the Kusama chain. This is now deprecated, and it is recommended\nimplementers use any of the other options.'),(0,r.kt)("li",{parentName:"ol"},"Solidity contracts, compatible with any EVM blockchain in and outside the Polkadot ecosystem.\nDocumented ",(0,r.kt)("a",{parentName:"li",href:"https://evm.rmrk.app"},"here")),(0,r.kt)("li",{parentName:"ol"},"Rust code (Substrate pallets), compatible with any Substrate chain. Code is available\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/rmrk-team/rmrk-substrate"},"here"),".")),(0,r.kt)("p",null,"Additionally, two more flavors are in development:"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"https://astar.network/"},"Astar")," are developing the ink! version of RMRK:\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/rmrk-team/rmrk-ink"},"code here"),"."),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("a",{parentName:"li",href:"https://www.gear-tech.io/"},"Gear Technologies")," are developing the Gear implementation:\n",(0,r.kt)("a",{parentName:"li",href:"https://wiki.gear-tech.io/docs/examples/rmrk/"},"code and docs here"),".")),(0,r.kt)("p",null,'The RMRK NFT 2.0 standards are a set of "NFT legos", primitives that, when put together, allow a\nbuilder to compose an NFT system of arbitrary complexity without smart contracts.'),(0,r.kt)("h3",{id:"nft-legos"},"NFT Legos"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"NFTs can own other NFTs, NFTs can equip other NFTs for visual change"),(0,r.kt)("li",{parentName:"ol"},"NFTs can have multiple resources (different outputs based on context and resource priority)"),(0,r.kt)("li",{parentName:"ol"},"NFTs can have on-chain emotes (reactions) for price discovery and social mechanics"),(0,r.kt)("li",{parentName:"ol"},"NFTs have conditional rendering (e.g. show Mona Lisa as blushing if she got 50 kissy \ud83d\ude18 emoji)"),(0,r.kt)("li",{parentName:"ol"},"NFTs can be governed by the community via fungible shareholder-tokens (fractionalization of NFTs)")),(0,r.kt)("h3",{id:"nft-from-kanaria"},"NFT from ",(0,r.kt)("a",{parentName:"h3",href:"https://kanaria.rmrk.app"},"Kanaria")),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"kanaria.png",src:a(19379).Z,width:"1891",height:"799"})),(0,r.kt)("admonition",{title:"Multi-resource NFTs",type:"note"},(0,r.kt)("p",{parentName:"admonition"},'A multi-resource NFT (gif of statue, and SVG-composable dynamic NFT in one) that can also equip\nother NFTs from within its "inventory".')),(0,r.kt)("p",null,"Two marketplaces for RMRK-based NFTs exist with hundreds of projects already launched:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://singular.rmrk.app"},"Singular"),", the official marketplace")),(0,r.kt)("p",null,"For a complete introduction into RMRK, see ",(0,r.kt)("a",{parentName:"p",href:"https://url.rmrk.app/wasmconf"},"this presentation")," or\nread ",(0,r.kt)("a",{parentName:"p",href:"https://docs.rmrk.app"},"the non-technical docs"),"."),(0,r.kt)("h2",{id:"asset-hub"},"Asset Hub"),(0,r.kt)("p",null,"The Asset Hub is a generic assets parachain which provides functionality for deploying and\ntransferring assets \u2014 both Fungible and Non-Fungible Tokens (NFTs). The Asset Hub currently hosts\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nft-pallets/#uniques-pallet"},"Uniques pallet")," and the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nft-pallets#nfts-pallet"},"NFTs pallet")," with NFT 2.0 functionalities."),(0,r.kt)("h2",{id:"unique-network"},"Unique Network"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://unique.network/"},"Unique network"),", an NFT-specific blockchain offering innovations such as\nsponsored transactions, bundling fungible tokens with non-fungibles, and splitting NFTs into\nfungible tokens for partial ownership."),(0,r.kt)("p",null,"Unique Network have launched two NFT projects to date: Substrapunks as part of\n",(0,r.kt)("a",{parentName:"p",href:"https://hackusama.devpost.com/"},"Hackusama"),", and Chelobricks as a promotion during\n",(0,r.kt)("a",{parentName:"p",href:"https://decoded.polkadot.network/"},"Polkadot Decoded"),"."),(0,r.kt)("p",null,"Unique Network focuses on B2B use cases, aiming to be an infrastructure provider for others to build\non, rather than entering the NFT space themselves as an end-product."),(0,r.kt)("p",null,"Unique Network aims to make their marketplace technology open-source and whitelabel-friendly. In\ntheory, it should be trivial to set up a new marketplace for your project using Unique's technology.\nUnique network aims to be a parachain on Polkadot, and Quartz is their Kusama counterpart."))}u.isMDXComponent=!0},19379:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/kanaria-55b0060679c6303db0fc91f5c402ba02.png"},70964:(e,t,a)=>{a.d(t,{Z:()=>n});const n=a.p+"assets/images/nft-basilisk-654977e2e97885e796857fc2e2add909.png"}}]); \ No newline at end of file diff --git a/assets/js/d27ae88d.899f2267.js b/assets/js/d27ae88d.899f2267.js deleted file mode 100644 index ffb472467091..000000000000 --- a/assets/js/d27ae88d.899f2267.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5157],{3905:(t,e,a)=>{a.d(e,{Zo:()=>c,kt:()=>g});var i=a(67294);function l(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function s(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,i)}return a}function r(t){for(var e=1;e=0||(l[a]=t[a]);return l}(t,e);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(l[a]=t[a])}return l}var n=i.createContext({}),d=function(t){var e=i.useContext(n),a=e;return t&&(a="function"==typeof t?t(e):r(r({},e),t)),a},c=function(t){var e=d(t.components);return i.createElement(n.Provider,{value:e},t.children)},u="mdxType",p={inlineCode:"code",wrapper:function(t){var e=t.children;return i.createElement(i.Fragment,{},e)}},k=i.forwardRef((function(t,e){var a=t.components,l=t.mdxType,s=t.originalType,n=t.parentName,c=o(t,["components","mdxType","originalType","parentName"]),u=d(a),k=l,g=u["".concat(n,".").concat(k)]||u[k]||p[k]||s;return a?i.createElement(g,r(r({ref:e},c),{},{components:a})):i.createElement(g,r({ref:e},c))}));function g(t,e){var a=arguments,l=e&&e.mdxType;if("string"==typeof t||l){var s=a.length,r=new Array(s);r[0]=k;var o={};for(var n in e)hasOwnProperty.call(e,n)&&(o[n]=e[n]);o.originalType=t,o[u]="string"==typeof t?t:l,r[1]=o;for(var d=2;d{a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>n,default:()=>g,frontMatter:()=>o,metadata:()=>d,toc:()=>u});var i=a(87462),l=a(63366),s=(a(67294),a(3905)),r=["components"],o={id:"learn-video-tutorials",title:"Videos about Polkadot",sidebar_label:"Videos",description:"Videos about Polkadot and Related Topics.",keywords:["learn","video","tutorials","explainers"],slug:"../learn-video-tutorials"},n=void 0,d={unversionedId:"learn/learn-video-tutorials",id:"learn/learn-video-tutorials",title:"Videos about Polkadot",description:"Videos about Polkadot and Related Topics.",source:"@site/../docs/learn/learn-video-tutorials.md",sourceDirName:"learn",slug:"/learn-video-tutorials",permalink:"/docs/learn-video-tutorials",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-video-tutorials.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1688135081,formattedLastUpdatedAt:"Jun 30, 2023",frontMatter:{id:"learn-video-tutorials",title:"Videos about Polkadot",sidebar_label:"Videos",description:"Videos about Polkadot and Related Topics.",keywords:["learn","video","tutorials","explainers"],slug:"../learn-video-tutorials"},sidebar:"docs",previous:{title:"Layer Two and Rollups",permalink:"/docs/learn-comparisons-rollups"},next:{title:"Future Implementations",permalink:"/docs/learn-future-implementations-index"}},c={},u=[{value:"Ongoing Series",id:"ongoing-series",level:2},{value:"Past Events",id:"past-events",level:2}],p={toc:u},k="wrapper";function g(t){var e=t.components,a=(0,l.Z)(t,r);return(0,s.kt)(k,(0,i.Z)({},p,a,{components:e,mdxType:"MDXLayout"}),(0,s.kt)("admonition",{title:"Visit the Polkadot YouTube Channel",type:"info"},(0,s.kt)("p",{parentName:"admonition"},"For more videos see all playlists on the\n",(0,s.kt)("a",{parentName:"p",href:"https://www.youtube.com/@PolkadotNetwork/playlists"},"Polkadot YouTube channel"),".")),(0,s.kt)("h2",{id:"ongoing-series"},"Ongoing Series"),(0,s.kt)("p",null,"Learn about Polkadot and Substrate at a deeper level with these ongoing deep dives, technical\nseminars, and initiatives within the ecosystem."),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8"},(0,s.kt)("img",{src:"/img/polkadot-guide/tech-explainers.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Technical Explainers")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsfgxkwTdMOwnbRW4nx_T-i"},(0,s.kt)("img",{src:"/img/polkadot-guide/substrate-seminars.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Substrate Seminars")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsfnlpkk0KWX3uS4yg6ZztG"},(0,s.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/deep-dives.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot Deep Dives"))))),(0,s.kt)("br",null),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvJuOchUyo6eFB_RA76mv3h"},(0,s.kt)("img",{src:"/img/polkadot-guide/community-calls.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot Community Calls")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGtxijJor37g5GmUqVgUvGDt"},(0,s.kt)("img",{src:"/img/polkadot-guide/decoded-23.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot Decoded 2023")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGthz-1qCz9RozF9N2ywyb4V"},(0,s.kt)("img",{src:"/img/polkadot-guide/PBA-23.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot Blockchain Academy"))))),(0,s.kt)("h2",{id:"past-events"},"Past Events"),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsnACsCmWH7PO-0paz9zlQ8"},(0,s.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/beginners.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot for Beginners")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsbca2vOnkS3l6j53G6ZS_E"},(0,s.kt)("img",{src:"/img/polkadot-guide/eth-denver-23.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"ETH Denver 2023")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvgdDcF-dW4RVEoeFZiZmQc"},(0,s.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/encode-club.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Encode Polkadot Club"))))),(0,s.kt)("br",null),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvywLqJDsMIYdCn8QEa2ShQ"},(0,s.kt)("img",{src:"/img/polkadot-guide/sub0.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Sub0 2022")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvcE0HKKnORiFqWNv5onxCf"},(0,s.kt)("img",{src:"/img/polkadot-guide/decoded-22.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot Decoded 2022")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGuA9BWEP4_zRiLwHzXb1zE9"},(0,s.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/davos-22.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot in Davos 2022"))))),(0,s.kt)("br",null),(0,s.kt)("tr",{class:"cards-container"},(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsLEJq0sRyvUD-pWuVwA5yg"},(0,s.kt)("img",{src:"/img/polkadot-guide/webinars.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Polkadot Webinars")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsFyiLL4AOn24obxfZzXTFO"},(0,s.kt)("img",{src:"/img/polkadot-guide/polkadot-NA.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Hackathon North America")))),(0,s.kt)("td",null,(0,s.kt)("a",{class:"guide-link",href:"https://youtube.com/playlist?list=PLOyWqupZ-WGve3__mfw7wX4tY1pWj8ExG"},(0,s.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/global-series.png",alt:"Drawing",width:"250",height:"150"}),(0,s.kt)("div",{class:"cards-body"},(0,s.kt)("h5",{class:"cards-title"},"Hackathon Global Series"))))))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/d27ae88d.a57342ae.js b/assets/js/d27ae88d.a57342ae.js new file mode 100644 index 000000000000..60539b3e716f --- /dev/null +++ b/assets/js/d27ae88d.a57342ae.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[5157],{3905:(t,e,o)=>{o.d(e,{Zo:()=>p,kt:()=>m});var l=o(67294);function s(t,e,o){return e in t?Object.defineProperty(t,e,{value:o,enumerable:!0,configurable:!0,writable:!0}):t[e]=o,t}function r(t,e){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);e&&(l=l.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.push.apply(o,l)}return o}function a(t){for(var e=1;e=0||(s[o]=t[o]);return s}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(l=0;l=0||Object.prototype.propertyIsEnumerable.call(t,o)&&(s[o]=t[o])}return s}var n=l.createContext({}),d=function(t){var e=l.useContext(n),o=e;return t&&(o="function"==typeof t?t(e):a(a({},e),t)),o},p=function(t){var e=d(t.components);return l.createElement(n.Provider,{value:e},t.children)},u="mdxType",c={inlineCode:"code",wrapper:function(t){var e=t.children;return l.createElement(l.Fragment,{},e)}},y=l.forwardRef((function(t,e){var o=t.components,s=t.mdxType,r=t.originalType,n=t.parentName,p=i(t,["components","mdxType","originalType","parentName"]),u=d(o),y=s,m=u["".concat(n,".").concat(y)]||u[y]||c[y]||r;return o?l.createElement(m,a(a({ref:e},p),{},{components:o})):l.createElement(m,a({ref:e},p))}));function m(t,e){var o=arguments,s=e&&e.mdxType;if("string"==typeof t||s){var r=o.length,a=new Array(r);a[0]=y;var i={};for(var n in e)hasOwnProperty.call(e,n)&&(i[n]=e[n]);i.originalType=t,i[u]="string"==typeof t?t:s,a[1]=i;for(var d=2;d{o.r(e),o.d(e,{assets:()=>p,contentTitle:()=>n,default:()=>m,frontMatter:()=>i,metadata:()=>d,toc:()=>u});var l=o(87462),s=o(63366),r=(o(67294),o(3905)),a=["components"],i={id:"learn-video-tutorials",title:"Videos about Polkadot",sidebar_label:"Videos",description:"Videos about Polkadot and Related Topics.",keywords:["learn","video","tutorials","explainers"],slug:"../learn-video-tutorials"},n=void 0,d={unversionedId:"learn/learn-video-tutorials",id:"learn/learn-video-tutorials",title:"Videos about Polkadot",description:"Videos about Polkadot and Related Topics.",source:"@site/../docs/learn/learn-video-tutorials.md",sourceDirName:"learn",slug:"/learn-video-tutorials",permalink:"/docs/learn-video-tutorials",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-video-tutorials.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-video-tutorials",title:"Videos about Polkadot",sidebar_label:"Videos",description:"Videos about Polkadot and Related Topics.",keywords:["learn","video","tutorials","explainers"],slug:"../learn-video-tutorials"},sidebar:"docs",previous:{title:"Layer Two and Rollups",permalink:"/docs/learn-comparisons-rollups"},next:{title:"Future Implementations",permalink:"/docs/learn-future-implementations-index"}},p={},u=[{value:"Ongoing Series",id:"ongoing-series",level:2},{value:"Past Events",id:"past-events",level:2}],c={toc:u},y="wrapper";function m(t){var e=t.components,o=(0,s.Z)(t,a);return(0,r.kt)(y,(0,l.Z)({},c,o,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Visit the Polkadot YouTube Channel",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"For more videos see all playlists on the\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/@PolkadotNetwork/playlists"},"Polkadot YouTube channel"),".")),(0,r.kt)("h2",{id:"ongoing-series"},"Ongoing Series"),(0,r.kt)("p",null,"Learn about Polkadot and Substrate at a deeper level with these ongoing deep dives, technical\nseminars, and initiatives within the ecosystem."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8"},(0,r.kt)("img",{src:"/img/polkadot-guide/tech-explainers.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8"},"Technical Explainers"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsfgxkwTdMOwnbRW4nx_T-i"},(0,r.kt)("img",{src:"/img/polkadot-guide/substrate-seminars.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsfgxkwTdMOwnbRW4nx_T-i"},"Substrate Seminars"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsfnlpkk0KWX3uS4yg6ZztG"},(0,r.kt)("img",{src:"/img/polkadot-guide/deep-dives.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsfnlpkk0KWX3uS4yg6ZztG"},"Polkadot Deep Dives")))),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvJuOchUyo6eFB_RA76mv3h"},(0,r.kt)("img",{src:"/img/polkadot-guide/community-calls.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvJuOchUyo6eFB_RA76mv3h"},"Polkadot Community Calls"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGtxijJor37g5GmUqVgUvGDt"},(0,r.kt)("img",{src:"/img/polkadot-guide/decoded-23.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGtxijJor37g5GmUqVgUvGDt"},"Polkadot Decoded 2023"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGthz-1qCz9RozF9N2ywyb4V"},(0,r.kt)("img",{src:"/img/polkadot-guide/PBA-23.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGthz-1qCz9RozF9N2ywyb4V"},"Polkadot Blockchain Academy")))),(0,r.kt)("h2",{id:"past-events"},"Past Events"),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsnACsCmWH7PO-0paz9zlQ8"},(0,r.kt)("img",{src:"/img/polkadot-guide/beginners.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsnACsCmWH7PO-0paz9zlQ8"},"Polkadot for Beginners"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsbca2vOnkS3l6j53G6ZS_E"},(0,r.kt)("img",{src:"/img/polkadot-guide/eth-denver-23.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsbca2vOnkS3l6j53G6ZS_E"},"ETH Denver 2023"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvgdDcF-dW4RVEoeFZiZmQc"},(0,r.kt)("img",{src:"/img/polkadot-guide/encode-club.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvgdDcF-dW4RVEoeFZiZmQc"},"Encode Polkadot Club")))),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvywLqJDsMIYdCn8QEa2ShQ"},(0,r.kt)("img",{src:"/img/polkadot-guide/sub0.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvywLqJDsMIYdCn8QEa2ShQ"},"Sub0 2022"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvcE0HKKnORiFqWNv5onxCf"},(0,r.kt)("img",{src:"/img/polkadot-guide/decoded-22.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGvcE0HKKnORiFqWNv5onxCf"},"Polkadot Decoded 2022"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGuA9BWEP4_zRiLwHzXb1zE9"},(0,r.kt)("img",{src:"/img/polkadot-guide/davos-22.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGuA9BWEP4_zRiLwHzXb1zE9"},"Polkadot in Davos 2022")))),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsLEJq0sRyvUD-pWuVwA5yg"},(0,r.kt)("img",{src:"/img/polkadot-guide/webinars.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsLEJq0sRyvUD-pWuVwA5yg"},"Polkadot Webminars"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsFyiLL4AOn24obxfZzXTFO"},(0,r.kt)("img",{src:"/img/polkadot-guide/polkadot-NA.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGsFyiLL4AOn24obxfZzXTFO"},"Hackathon North America"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGve3__mfw7wX4tY1pWj8ExG"},(0,r.kt)("img",{src:"/img/polkadot-guide/global-series.png",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://youtube.com/playlist?list=PLOyWqupZ-WGve3__mfw7wX4tY1pWj8ExG"},"Hackathon Global Series")))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dd32e389.2483fb69.js b/assets/js/dd32e389.2483fb69.js new file mode 100644 index 000000000000..889aa8d96b2a --- /dev/null +++ b/assets/js/dd32e389.2483fb69.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2042],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),c=p(a),h=o,m=c["".concat(l,".").concat(h)]||c[h]||u[h]||r;return a?n.createElement(m,i(i({ref:t},d),{},{components:a})):n.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>p,toc:()=>c});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=["components"],s={id:"polkadot-vault",title:"Polkadot Vault (formerly Parity Signer)",sidebar_label:"Polkadot Vault",description:"Your old Smartphone as an Air-gapped Wallet.",keywords:["parity signer","signer","polkadot vault"],slug:"../polkadot-vault"},l=void 0,p={unversionedId:"general/polkadot-vault",id:"general/polkadot-vault",title:"Polkadot Vault (formerly Parity Signer)",description:"Your old Smartphone as an Air-gapped Wallet.",source:"@site/../docs/general/polkadot-vault.md",sourceDirName:"general",slug:"/polkadot-vault",permalink:"/docs/polkadot-vault",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadot-vault.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"polkadot-vault",title:"Polkadot Vault (formerly Parity Signer)",sidebar_label:"Polkadot Vault",description:"Your old Smartphone as an Air-gapped Wallet.",keywords:["parity signer","signer","polkadot vault"],slug:"../polkadot-vault"},sidebar:"docs",previous:{title:"Ledger",permalink:"/docs/ledger"},next:{title:"Apps",permalink:"/docs/apps-index"}},d={},c=[{value:"Vault vs. Ledger",id:"vault-vs-ledger",level:2},{value:"Create and Import Accounts",id:"create-and-import-accounts",level:2},{value:"Restore Account on Polkadot Vault",id:"restore-account-on-polkadot-vault",level:2},{value:"Signing Extrinsics",id:"signing-extrinsics",level:2},{value:"Update the Vault App",id:"update-the-vault-app",level:2},{value:"Security Notes",id:"security-notes",level:2},{value:"Add Chains",id:"add-chains",level:2}],u={toc:c},h="wrapper";function m(e){var t=e.components,a=(0,o.Z)(e,i);return(0,r.kt)(h,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Rebranding of Parity Signer to Polkadot Vault",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Vault app rebranding is live on\n",(0,r.kt)("a",{parentName:"p",href:"https://apps.apple.com/us/app/parity-signer/id1218174838"},"iOS")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://play.google.com/store/apps/details?id=io.parity.signer"},"Android")," devices. The source code\nof all versions can be downloaded on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/parity-signer/releases"},"the GitHub repo"),"."),(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Vault app is an air-gapped cold storage solution for all users, including developers\nand power users. See ",(0,r.kt)("a",{parentName:"p",href:"/docs/ledger"},"Ledger")," devices for other cold storage solutions.")),(0,r.kt)("admonition",{title:"Smartphone compatibility with Polkadot Vault",type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Note that although the Vault app is available for old smartphones, different versions will be\ninstalled according to the phone's hardware. For example, smartphones like iPhone 6 will install\nParity Signer (the old brand name of the Vault app) with limited capabilities. There will be no log\nor warning if the phone was connected to the internet while not using the app. Also, no metadata\nupdates are possible, and no option to add new networks. This would not be as secure as the latest\nversion of the app. We would recommend that you use smartphones compatible with the latest Polkadot\nVault app.")),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=IG_RGLsb2g0"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/IG_RGLsb2g0/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=IG_RGLsb2g0"},"How to Use Polkadot Vault")))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.parity.io/technologies/signer"},"Polkadot Vault")," (formerly Parity Signer) is a cold\nstorage solution that allows you to use a phone in airplane mode as an air-gapped wallet. The Vault\napp is not technically a wallet, as it does not allow to transfer funds. It is more of a key-chain\ntool that will enable you the create, manage, and restore accounts."),(0,r.kt)("p",null,"By default, the Vault app contains chain specifications for Polkadot, Kusama, and Westend. Metadata\nupdates are possible via a ",(0,r.kt)("a",{parentName:"p",href:"https://metadata.parity.io/#/polkadot"},"QR code fountain"),". It is also\npossible to ",(0,r.kt)("a",{parentName:"p",href:"#add-chains"},"add other Substrate-based chains and do metadata updates")," for those. The\napp allows you to securely sign ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-transactions"},"extrinsics")," via QR codes without\nexposing your private keys to the internet."),(0,r.kt)("h2",{id:"vault-vs-ledger"},"Vault vs. Ledger"),(0,r.kt)("p",null,"The Polkadot Vault and ",(0,r.kt)("a",{parentName:"p",href:"/docs/ledger"},"Ledger")," are cold storage solutions because private keys of\naccounts created on the Vault app or Ledger device are not stored on your computer or, more in\ngeneral, on a device that has an internet connection. However, the two solutions differ, and you\nshould consider one or the other depending on your user type."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"Ledger"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Polkadot Vault"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Hardware designed to stay offline and be secure. Certified by French cybersecurity agency ",(0,r.kt)("a",{parentName:"td",href:"https://www.ssi.gouv.fr/en/cybersecurity-in-france/the-national-cybersecurity-agency-of-france/"},"ANSSI"),"."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Hardware not designed to stay offline. The user must switch off all inbound and outbound connections (network, wifi, Bluetooth, NFC).")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Hardware is resistant to side-channel attacks via ",(0,r.kt)("a",{parentName:"td",href:"https://www.ledger.com/academy/security/the-secure-element-whistanding-security-attacks/"},"Secure Element"),". The secure element will destroy itself if opened."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Although there is no wired connection, side-channel attacks are possible. Without a secure element, the phone can be opened, and the keys will be accessible in its storage unit.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Accounts derived from one mnemonic seed phrase."),(0,r.kt)("td",{parentName:"tr",align:"center"},"One mnemonic for each account or one mnemonic for multiple accounts via ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-account-advanced#derivation-paths"},"account derivation")," or default ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-account-advanced#address-format"},"Substrate address format"),". See ",(0,r.kt)("a",{parentName:"td",href:"https://support.polkadot.network/support/solutions/articles/65000103707-can-i-use-the-same-account-on-polkadot-kusama-and-parachains-#Should-I-use-the-same-account-across-different-chains?"},"this support article")," for information on whether to use the same account or different accounts on different chains based on your needs.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Easy firmware and application upgrades through the Ledger Live application."),(0,r.kt)("td",{parentName:"tr",align:"center"},"The app should never be connected to the internet after installation, so the version installed on the phone should not be updated directly. For ",(0,r.kt)("a",{parentName:"td",href:"#update-the-vault-app"},"app upgrades"),", users must factory reset the phone and recover all accounts through seed phrases. Metadata updates for each chain must be done via the QR code fountain.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Currently, not all parachains are supported."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Users can add all parachains either through a third-party provider or if they have the wss endpoint and know ",(0,r.kt)("a",{parentName:"td",href:"#add-chains"},"how to extract the chain specifications and metadata"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Ledger app updates on Ledger Live sometimes lag behind chain updates resulting in users only being able to transact if they ",(0,r.kt)("a",{parentName:"td",href:"/docs/ledger#install-the-developer-release"},"install developer versions")," (only for advanced users)."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Metadata updates are always available to install once released, either through the third-party provider or manually. In this case, the installation process requires familiarity with working on the command prompt.")))),(0,r.kt)("h2",{id:"create-and-import-accounts"},"Create and Import Accounts"),(0,r.kt)("p",null,"You can create a new account directly within the Vault app (Add Key Set > Add new Key Set). This\nwill generate a new mnemonic seed phrase on the app. Alternatively, you can import a new account in\nthe app using a seed phrase generated elsewhere with a compatible account generation scheme. For\nexample, you can have an air-gapped laptop with the Subkey tool installed and generate a new account\nthere. The seed phrase of that account can be imported into the Vault App (Add Key Set > Recover Key\nSet)."),(0,r.kt)("p",null,"For guidelines about how to create an account using Polkadot Vault, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/hgv1R9mPEXw?t=120"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180512-how-to-create-an-account-in-parity-signer"},(0,r.kt)("strong",{parentName:"a"},"this support article")),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Importing an account into an extension will not import its private key. Only the public key will be\nimported and you must sign using your air-gapped phone which holds the private key.")),(0,r.kt)("h2",{id:"restore-account-on-polkadot-vault"},"Restore Account on Polkadot Vault"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/hgv1R9mPEXw?t=407"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000167901-how-to-restore-an-account-in-parity-signer"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot Vault app."),(0,r.kt)("h2",{id:"signing-extrinsics"},"Signing Extrinsics"),(0,r.kt)("admonition",{title:"Always check for Metadata Updates",type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Before signing extrinsics with the Polkadot Vault app, always check for metadata updates.\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=328"},(0,r.kt)("strong",{parentName:"a"},"This video tutorial"))," will explain how to do it.")),(0,r.kt)("p",null,"Remember to always check for metadata updates before signing transactions. See\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki/pull/4600/files#diff-5d4d0a286cdc7b1d016ee155f9694dbcddc13f5264490fc1a960c38000baca4d"},"this article"),"\nto learn how to sign transactions and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184128-polkadot-vault-how-to-add-a-new-chain-and-update-the-metadata"},"this article"),"\non how to easily add new chains and do metadata updates using the Vault app."),(0,r.kt)("p",null,"The procedure to sign transactions with the Vault app is as follows:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The wallet or browser extension will show a QR code encoding the information about what you are\ngoing to sign."),(0,r.kt)("li",{parentName:"ul"},"After scanning the QR code with the Vault app, you will be presented with decoded information\nabout what you will sign. Make sure the information matches what you intended to sign in the first\nplace. If something does not feel right, do not sign. Check\n",(0,r.kt)("a",{parentName:"li",href:"/docs/transaction-attacks#corrupted-qr-code-parity-signer"},"this page")," for more information and\ncontact ",(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/home"},"the Polkadot Support Team"),"."),(0,r.kt)("li",{parentName:"ul"},"If the information shown by the Vault app is correct, you can present the QR code (signature) to\nthe camera on your laptop to sign for the transaction.")),(0,r.kt)("admonition",{title:"QR codes are signature-specific",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Note that QR codes are signature-specific. If someone by chance has access to the QR code signature\nfor one of your transactions, future transactions cannot be signed with that same QR code, and it is\nimpossible to find out the private key of your account only with that QR code.")),(0,r.kt)("h2",{id:"update-the-vault-app"},"Update the Vault App"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Ensure you always have your mnemonic seed phrase secure and available.")),(0,r.kt)("p",null,"To securely update the Polkadot Vault app follow the instructions\n",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/parity-signer/tutorials/Upgrading.html"},"here"),". Briefly,"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"backup your accounts (Backup key Set > write down the mnemonic seed phrase),"),(0,r.kt)("li",{parentName:"ul"},"factory reset your Vault app (Settings > Wipe all Data),"),(0,r.kt)("li",{parentName:"ul"},"factory reset your phone,"),(0,r.kt)("li",{parentName:"ul"},"re-install the Vault app,"),(0,r.kt)("li",{parentName:"ul"},"go offline (airplane mode, no wifi),"),(0,r.kt)("li",{parentName:"ul"},"recover your accounts (Add Key Set > Recover Key Set).")),(0,r.kt)("h2",{id:"security-notes"},"Security Notes"),(0,r.kt)("admonition",{title:"Remove SIM cards and Forget Networks",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To avoid unintended connection of your phone to the Internet, remove SIM cards, reset eSIM settings,\nand forget any added WiFi networks. In this way, the only possibility of having an unintended\ninternet connection is either through the cellular network or through WiFi connection.")),(0,r.kt)("p",null,"The Vault app has a Log that will tell you all activities performed with it. It is important to mark\ndown the last action, you did so that you can do a security check the next time you use the app.\nAlso, the Vault app will always tell you if the phone has been (even briefly) connected to the\nInternet. In case of an unrecognized connection, it is recommended to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Backup your accounts (i.e. make sure you have the mnemonic seed phrases)"),(0,r.kt)("li",{parentName:"ul"},"Follow the steps in ",(0,r.kt)("a",{parentName:"li",href:"#update-the-vault-app"},"Update the Vault app")),(0,r.kt)("li",{parentName:"ul"},"Once offline, create a new account on the Vault app"),(0,r.kt)("li",{parentName:"ul"},"Import the compromised accounts and transfer the funds to the new non-compromised account.")),(0,r.kt)("admonition",{title:"The Vault App has the option to export private keys",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},'If an account\'s private key has been exported from the Vault app, the public key will be marked as\n"hot" and the following message will be displayed ',(0,r.kt)("em",{parentName:"p"},"This key is marked hot because its root private\nkey has been exported"),".")),(0,r.kt)("p",null,"You might consider exporting the private key if you are switching air-gapped phone. If you choose to\nexport your private key, avoid the following:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Do not export your private key to a device that is connected to the internet, as your key will not\nbe "cold" anymore.'),(0,r.kt)("li",{parentName:"ul"},"Do not print private keys QR codes over an internet connection.")),(0,r.kt)("h2",{id:"add-chains"},"Add Chains"),(0,r.kt)("p",null,"The Vault app contains default chain specs for Polkadot, Kusama, and Westend. It is possible to add\nmore chains via QR-code, and update their metadata by generating your own QR-code fountain in a\nmetadata portal similar to that ",(0,r.kt)("a",{parentName:"p",href:"https://metadata.parity.io/#/polkadot"},"signed by Parity"),".\nAlternatively, you can use a third-party provider to add chains and their metadata. Check\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184128-polkadot-vault-how-to-add-a-new-chain-and-update-the-metadata"},"this article"),"\nfor detailed instructions. If you choose this approach, you should trust the provider you choose."),(0,r.kt)("hr",null),(0,r.kt)("admonition",{title:"Polkadot-JS Guides",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you are an advanced user, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-vault"},"Polkadot-JS guides about Polkadot Vault"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/dd32e389.ff9cf19a.js b/assets/js/dd32e389.ff9cf19a.js deleted file mode 100644 index 5b2e81810dd9..000000000000 --- a/assets/js/dd32e389.ff9cf19a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[2042],{3905:(e,t,a)=>{a.d(t,{Zo:()=>d,kt:()=>m});var n=a(67294);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function i(e){for(var t=1;t=0||(o[a]=e[a]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(o[a]=e[a])}return o}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):i(i({},t),e)),a},d=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},c="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},h=n.forwardRef((function(e,t){var a=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),c=p(a),h=o,m=c["".concat(l,".").concat(h)]||c[h]||u[h]||r;return a?n.createElement(m,i(i({ref:t},d),{},{components:a})):n.createElement(m,i({ref:t},d))}));function m(e,t){var a=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=a.length,i=new Array(r);i[0]=h;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s[c]="string"==typeof e?e:o,i[1]=s;for(var p=2;p{a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>m,frontMatter:()=>s,metadata:()=>p,toc:()=>c});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),i=["components"],s={id:"polkadot-vault",title:"Polkadot Vault (formerly Parity Signer)",sidebar_label:"Polkadot Vault",description:"Your old Smartphone as an Air-gapped Wallet.",keywords:["parity signer","signer","polkadot vault"],slug:"../polkadot-vault"},l=void 0,p={unversionedId:"general/polkadot-vault",id:"general/polkadot-vault",title:"Polkadot Vault (formerly Parity Signer)",description:"Your old Smartphone as an Air-gapped Wallet.",source:"@site/../docs/general/polkadot-vault.md",sourceDirName:"general",slug:"/polkadot-vault",permalink:"/docs/polkadot-vault",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/polkadot-vault.md",tags:[],version:"current",lastUpdatedBy:"github-actions[bot]",lastUpdatedAt:1704703338,formattedLastUpdatedAt:"Jan 8, 2024",frontMatter:{id:"polkadot-vault",title:"Polkadot Vault (formerly Parity Signer)",sidebar_label:"Polkadot Vault",description:"Your old Smartphone as an Air-gapped Wallet.",keywords:["parity signer","signer","polkadot vault"],slug:"../polkadot-vault"},sidebar:"docs",previous:{title:"Ledger",permalink:"/docs/ledger"},next:{title:"Apps",permalink:"/docs/apps-index"}},d={},c=[{value:"Vault vs. Ledger",id:"vault-vs-ledger",level:2},{value:"Create and Import Accounts",id:"create-and-import-accounts",level:2},{value:"Restore Account on Polkadot Vault",id:"restore-account-on-polkadot-vault",level:2},{value:"Signing Extrinsics",id:"signing-extrinsics",level:2},{value:"Update the Vault App",id:"update-the-vault-app",level:2},{value:"Security Notes",id:"security-notes",level:2},{value:"Add Chains",id:"add-chains",level:2}],u={toc:c},h="wrapper";function m(e){var t=e.components,a=(0,o.Z)(e,i);return(0,r.kt)(h,(0,n.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Rebranding of Parity Signer to Polkadot Vault",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Vault app rebranding is live on\n",(0,r.kt)("a",{parentName:"p",href:"https://apps.apple.com/us/app/parity-signer/id1218174838"},"iOS")," and\n",(0,r.kt)("a",{parentName:"p",href:"https://play.google.com/store/apps/details?id=io.parity.signer"},"Android")," devices. The source code\nof all versions can be downloaded on\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/parity-signer/releases"},"the GitHub repo"),"."),(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Vault app is an air-gapped cold storage solution for all users, including developers\nand power users. See ",(0,r.kt)("a",{parentName:"p",href:"/docs/ledger"},"Ledger")," devices for other cold storage solutions.")),(0,r.kt)("admonition",{title:"Smartphone compatibility with Polkadot Vault",type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Note that although the Vault app is available for old smartphones, different versions will be\ninstalled according to the phone's hardware. For example, smartphones like iPhone 6 will install\nParity Signer (the old brand name of the Vault app) with limited capabilities. There will be no log\nor warning if the phone was connected to the internet while not using the app. Also, no metadata\nupdates are possible, and no option to add new networks. This would not be as secure as the latest\nversion of the app. We would recommend that you use smartphones compatible with the latest Polkadot\nVault app.")),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=IG_RGLsb2g0"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/IG_RGLsb2g0/0.jpg",alt:"Polkadot Vault Tutorial"}))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.parity.io/technologies/signer"},"Polkadot Vault")," (formerly Parity Signer) is a cold\nstorage solution that allows you to use a phone in airplane mode as an air-gapped wallet. The Vault\napp is not technically a wallet, as it does not allow to transfer funds. It is more of a key-chain\ntool that will enable you the create, manage, and restore accounts."),(0,r.kt)("p",null,"By default, the Vault app contains chain specifications for Polkadot, Kusama, and Westend. Metadata\nupdates are possible via a ",(0,r.kt)("a",{parentName:"p",href:"https://metadata.parity.io/#/polkadot"},"QR code fountain"),". It is also\npossible to ",(0,r.kt)("a",{parentName:"p",href:"#add-chains"},"add other Substrate-based chains and do metadata updates")," for those. The\napp allows you to securely sign ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-transactions"},"extrinsics")," via QR codes without\nexposing your private keys to the internet."),(0,r.kt)("h2",{id:"vault-vs-ledger"},"Vault vs. Ledger"),(0,r.kt)("p",null,"The Polkadot Vault and ",(0,r.kt)("a",{parentName:"p",href:"/docs/ledger"},"Ledger")," are cold storage solutions because private keys of\naccounts created on the Vault app or Ledger device are not stored on your computer or, more in\ngeneral, on a device that has an internet connection. However, the two solutions differ, and you\nshould consider one or the other depending on your user type."),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"center"},"Ledger"),(0,r.kt)("th",{parentName:"tr",align:"center"},"Polkadot Vault"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Hardware designed to stay offline and be secure. Certified by French cybersecurity agency ",(0,r.kt)("a",{parentName:"td",href:"https://www.ssi.gouv.fr/en/cybersecurity-in-france/the-national-cybersecurity-agency-of-france/"},"ANSSI"),"."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Hardware not designed to stay offline. The user must switch off all inbound and outbound connections (network, wifi, Bluetooth, NFC).")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Hardware is resistant to side-channel attacks via ",(0,r.kt)("a",{parentName:"td",href:"https://www.ledger.com/academy/security/the-secure-element-whistanding-security-attacks/"},"Secure Element"),". The secure element will destroy itself if opened."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Although there is no wired connection, side-channel attacks are possible. Without a secure element, the phone can be opened, and the keys will be accessible in its storage unit.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Accounts derived from one mnemonic seed phrase."),(0,r.kt)("td",{parentName:"tr",align:"center"},"One mnemonic for each account or one mnemonic for multiple accounts via ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-account-advanced#derivation-paths"},"account derivation")," or default ",(0,r.kt)("a",{parentName:"td",href:"/docs/learn-account-advanced#address-format"},"Substrate address format"),". See ",(0,r.kt)("a",{parentName:"td",href:"https://support.polkadot.network/support/solutions/articles/65000103707-can-i-use-the-same-account-on-polkadot-kusama-and-parachains-#Should-I-use-the-same-account-across-different-chains?"},"this support article")," for information on whether to use the same account or different accounts on different chains based on your needs.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Easy firmware and application upgrades through the Ledger Live application."),(0,r.kt)("td",{parentName:"tr",align:"center"},"The app should never be connected to the internet after installation, so the version installed on the phone should not be updated directly. For ",(0,r.kt)("a",{parentName:"td",href:"#update-the-vault-app"},"app upgrades"),", users must factory reset the phone and recover all accounts through seed phrases. Metadata updates for each chain must be done via the QR code fountain.")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Currently, not all parachains are supported."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Users can add all parachains either through a third-party provider or if they have the wss endpoint and know ",(0,r.kt)("a",{parentName:"td",href:"#add-chains"},"how to extract the chain specifications and metadata"),".")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"center"},"Ledger app updates on Ledger Live sometimes lag behind chain updates resulting in users only being able to transact if they ",(0,r.kt)("a",{parentName:"td",href:"/docs/ledger#install-the-developer-release"},"install developer versions")," (only for advanced users)."),(0,r.kt)("td",{parentName:"tr",align:"center"},"Metadata updates are always available to install once released, either through the third-party provider or manually. In this case, the installation process requires familiarity with working on the command prompt.")))),(0,r.kt)("h2",{id:"create-and-import-accounts"},"Create and Import Accounts"),(0,r.kt)("p",null,"You can create a new account directly within the Vault app (Add Key Set > Add new Key Set). This\nwill generate a new mnemonic seed phrase on the app. Alternatively, you can import a new account in\nthe app using a seed phrase generated elsewhere with a compatible account generation scheme. For\nexample, you can have an air-gapped laptop with the Subkey tool installed and generate a new account\nthere. The seed phrase of that account can be imported into the Vault App (Add Key Set > Recover Key\nSet)."),(0,r.kt)("p",null,"For guidelines about how to create an account using Polkadot Vault, see\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/hgv1R9mPEXw?t=120"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and visit\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000180512-how-to-create-an-account-in-parity-signer"},(0,r.kt)("strong",{parentName:"a"},"this support article")),"."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Importing an account into an extension will not import its private key. Only the public key will be\nimported and you must sign using your air-gapped phone which holds the private key.")),(0,r.kt)("h2",{id:"restore-account-on-polkadot-vault"},"Restore Account on Polkadot Vault"),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/hgv1R9mPEXw?t=407"},(0,r.kt)("strong",{parentName:"a"},"this video tutorial"))," and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000167901-how-to-restore-an-account-in-parity-signer"},(0,r.kt)("strong",{parentName:"a"},"this support page")),"\nto learn how to restore your account on the Polkadot Vault app."),(0,r.kt)("h2",{id:"signing-extrinsics"},"Signing Extrinsics"),(0,r.kt)("admonition",{title:"Always check for Metadata Updates",type:"warning"},(0,r.kt)("p",{parentName:"admonition"},"Before signing extrinsics with the Polkadot Vault app, always check for metadata updates.\n",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/gbvrHzr4EDY?t=328"},(0,r.kt)("strong",{parentName:"a"},"This video tutorial"))," will explain how to do it.")),(0,r.kt)("p",null,"Remember to always check for metadata updates before signing transactions. See\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki/pull/4600/files#diff-5d4d0a286cdc7b1d016ee155f9694dbcddc13f5264490fc1a960c38000baca4d"},"this article"),"\nto learn how to sign transactions and\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184128-polkadot-vault-how-to-add-a-new-chain-and-update-the-metadata"},"this article"),"\non how to easily add new chains and do metadata updates using the Vault app."),(0,r.kt)("p",null,"The procedure to sign transactions with the Vault app is as follows:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"The wallet or browser extension will show a QR code encoding the information about what you are\ngoing to sign."),(0,r.kt)("li",{parentName:"ul"},"After scanning the QR code with the Vault app, you will be presented with decoded information\nabout what you will sign. Make sure the information matches what you intended to sign in the first\nplace. If something does not feel right, do not sign. Check\n",(0,r.kt)("a",{parentName:"li",href:"/docs/transaction-attacks#corrupted-qr-code-parity-signer"},"this page")," for more information and\ncontact ",(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/support/home"},"the Polkadot Support Team"),"."),(0,r.kt)("li",{parentName:"ul"},"If the information shown by the Vault app is correct, you can present the QR code (signature) to\nthe camera on your laptop to sign for the transaction.")),(0,r.kt)("admonition",{title:"QR codes are signature-specific",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Note that QR codes are signature-specific. If someone by chance has access to the QR code signature\nfor one of your transactions, future transactions cannot be signed with that same QR code, and it is\nimpossible to find out the private key of your account only with that QR code.")),(0,r.kt)("h2",{id:"update-the-vault-app"},"Update the Vault App"),(0,r.kt)("admonition",{type:"danger"},(0,r.kt)("p",{parentName:"admonition"},"Ensure you always have your mnemonic seed phrase secure and available.")),(0,r.kt)("p",null,"To securely update the Polkadot Vault app follow the instructions\n",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/parity-signer/tutorials/Upgrading.html"},"here"),". Briefly,"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"backup your accounts (Backup key Set > write down the mnemonic seed phrase),"),(0,r.kt)("li",{parentName:"ul"},"factory reset your Vault app (Settings > Wipe all Data),"),(0,r.kt)("li",{parentName:"ul"},"factory reset your phone,"),(0,r.kt)("li",{parentName:"ul"},"re-install the Vault app,"),(0,r.kt)("li",{parentName:"ul"},"go offline (airplane mode, no wifi),"),(0,r.kt)("li",{parentName:"ul"},"recover your accounts (Add Key Set > Recover Key Set).")),(0,r.kt)("h2",{id:"security-notes"},"Security Notes"),(0,r.kt)("admonition",{title:"Remove SIM cards and Forget Networks",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"To avoid unintended connection of your phone to the Internet, remove SIM cards, reset eSIM settings,\nand forget any added WiFi networks. In this way, the only possibility of having an unintended\ninternet connection is either through the cellular network or through WiFi connection.")),(0,r.kt)("p",null,"The Vault app has a Log that will tell you all activities performed with it. It is important to mark\ndown the last action, you did so that you can do a security check the next time you use the app.\nAlso, the Vault app will always tell you if the phone has been (even briefly) connected to the\nInternet. In case of an unrecognized connection, it is recommended to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Backup your accounts (i.e. make sure you have the mnemonic seed phrases)"),(0,r.kt)("li",{parentName:"ul"},"Follow the steps in ",(0,r.kt)("a",{parentName:"li",href:"#update-the-vault-app"},"Update the Vault app")),(0,r.kt)("li",{parentName:"ul"},"Once offline, create a new account on the Vault app"),(0,r.kt)("li",{parentName:"ul"},"Import the compromised accounts and transfer the funds to the new non-compromised account.")),(0,r.kt)("admonition",{title:"The Vault App has the option to export private keys",type:"danger"},(0,r.kt)("p",{parentName:"admonition"},'If an account\'s private key has been exported from the Vault app, the public key will be marked as\n"hot" and the following message will be displayed ',(0,r.kt)("em",{parentName:"p"},"This key is marked hot because its root private\nkey has been exported"),".")),(0,r.kt)("p",null,"You might consider exporting the private key if you are switching air-gapped phone. If you choose to\nexport your private key, avoid the following:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},'Do not export your private key to a device that is connected to the internet, as your key will not\nbe "cold" anymore.'),(0,r.kt)("li",{parentName:"ul"},"Do not print private keys QR codes over an internet connection.")),(0,r.kt)("h2",{id:"add-chains"},"Add Chains"),(0,r.kt)("p",null,"The Vault app contains default chain specs for Polkadot, Kusama, and Westend. It is possible to add\nmore chains via QR-code, and update their metadata by generating your own QR-code fountain in a\nmetadata portal similar to that ",(0,r.kt)("a",{parentName:"p",href:"https://metadata.parity.io/#/polkadot"},"signed by Parity"),".\nAlternatively, you can use a third-party provider to add chains and their metadata. Check\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184128-polkadot-vault-how-to-add-a-new-chain-and-update-the-metadata"},"this article"),"\nfor detailed instructions. If you choose this approach, you should trust the provider you choose."),(0,r.kt)("hr",null),(0,r.kt)("admonition",{title:"Polkadot-JS Guides",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you are an advanced user, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-guides-vault"},"Polkadot-JS guides about Polkadot Vault"),".")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ed3409b3.39674500.js b/assets/js/ed3409b3.39674500.js deleted file mode 100644 index eb7ea7477f4e..000000000000 --- a/assets/js/ed3409b3.39674500.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[8609],{47940:(e,t,a)=>{"use strict";a.d(t,{Z:()=>c});var o=a(74165),n=a(15861),r=a(67294),i=a(87152),s=a(30967),u=a(67425);function l(e,t,a){return p.apply(this,arguments)}function p(){return(p=(0,n.Z)((0,o.Z)().mark((function e(t,a,n){var r,u,l,p,d;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,u=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return l=new i.U(r),e.next=21,s.G.create({provider:l});case 21:p=e.sent,(d=a.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return u=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();case 31:return u=(u=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+a);case 35:return e.abrupt("return",u);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,a,o){switch(t){case"humanReadable":(0,u.HumanReadable)(e,a,o);break;case"precise":(0,u.Precise)(e,a,o);break;case"blocksToDays":(0,u.BlocksToDays)(e,o);break;case"erasToDays":(0,u.ErasToDays)(e,o,a);break;case"percentage":(0,u.Percentage)(e,o);break;case"permillToPercent":(0,u.PermillToPercent)(e,o);break;case"arrayLength":(0,u.ArrayLength)(e,o);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,a=e.path,i=e.defaultValue,s=e.filter,u=void 0===s?void 0:s,p=(0,r.useState)(""),c=p[0],h=p[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==u?d(i.toString(),u,t,h):h(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,o.Z)().mark((function e(){var n;return(0,o.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l(t,a,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==u?d(n,u,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),c}},67425:e=>{var t="polkadot",a="kusama",o="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var u=void 0;if(i===t||i===n)u=3;else{if(i!==a&&i!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");u=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(u)+" "+r[i].symbol).toString())},Precise:function(e,t,a){a(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===n)s=1;else{if(i!==a&&i!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},64539:(e,t,a)=>{"use strict";a.r(t),a.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>b,frontMatter:()=>u,metadata:()=>p,toc:()=>c});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),i=a(47940),s=["components"],u={id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounties",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},l=void 0,p={unversionedId:"learn/learn-guides-bounties",id:"learn/learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",description:"Polkadot-JS Guides for Bounties",source:"@site/../docs/learn/learn-guides-bounties.md",sourceDirName:"learn",slug:"/learn-guides-bounties",permalink:"/docs/learn-guides-bounties",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bounties.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1699519944,formattedLastUpdatedAt:"Nov 9, 2023",frontMatter:{id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounties",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},sidebar:"docs",previous:{title:"Treasury",permalink:"/docs/learn-guides-treasury"},next:{title:"Identity",permalink:"/docs/learn-guides-identity"}},d={},c=[{value:"Submit a Bounty Proposal",id:"submit-a-bounty-proposal",level:2},{value:"Assign a Curator to a Bounty",id:"assign-a-curator-to-a-bounty",level:2},{value:"Create and Award Child Bounties",id:"create-and-award-child-bounties",level:2},{value:"Claim a Child Bounty Reward",id:"claim-a-child-bounty-reward",level:2}],h={toc:c},m="wrapper";function b(e){var t=e.components,u=(0,n.Z)(e,s);return(0,r.kt)(m,(0,o.Z)({},h,u,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury#bounties"},"this page")," to learn about Bounties."),(0,r.kt)("admonition",{title:"Notify the Polkadot Direction Channel",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Remember always to notify the\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction Element Channel")," about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#referenda"},"OpenGov referenda")," so that the community can start reviewing\nthem and voting on them.")),(0,r.kt)("h2",{id:"submit-a-bounty-proposal"},"Submit a Bounty Proposal"),(0,r.kt)("p",null,"See the video tutorial below to learn how you can create a bounty and submit it for approval through\nan OpenGov referendum."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/8Cft1-8RWmk/0.jpg",alt:"Submit a Bounty"}))),(0,r.kt)("p",null,'When you add a bounty, this will show as "proposed" in the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Once the community approves your bounty\nproposal as an OpenGov referendum, the bounty will show as "funded" at the end of the\n',(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period")," on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),". You can then proceed with assigning\ncurators to the bounty."),(0,r.kt)("p",null,"To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will need to find an off-chain\nmedium to explain the proposal, for example a bounty proposal document on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"Polkassembly")," or\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing"},"This template"),"\ncan be used to submit all the information needed by OpenGov voters to make an informed decision."),(0,r.kt)("p",null,"Submitting a bounty proposal will reserve\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.bounties.bountyDepositBase",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"","."),(0,r.kt)("h2",{id:"assign-a-curator-to-a-bounty"},"Assign a Curator to a Bounty"),(0,r.kt)("p",null,'Once your bounty is shown as "funded" on the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),", you can propose a bounty curator. See the\nvideo tutorial below to learn how you can add a curator to a bounty and submit it for approval\nthrough an OpenGov referendum."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/TM7vk3oP9IA/0.jpg",alt:"Assign Curator to a Bounty"}))),(0,r.kt)("p",null,"Once your OpenGov referendum has been approved by the community and served the required\n",(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period"),', the bounty will still show as "funded" on\nthe main ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page")," and await the curator's\nacceptance. The curator must formally accept the curator role by signing a ",(0,r.kt)("inlineCode",{parentName:"p"},"bounties.acceptCurator"),"\nextrinsic. More information about when to do this can be found on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Only after the curators claim their\ncandidacy the bounty will show as "active" on the main Bounty page.'),(0,r.kt)("h2",{id:"create-and-award-child-bounties"},"Create and Award Child Bounties"),(0,r.kt)("admonition",{title:"Remember to add contextual information about child bounties",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When you add child bounties, please add contextual information on the governance forums\n",(0,r.kt)("a",{parentName:"p",href:"https://polkassembly.io/"},"Polkassembly")," or ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".")),(0,r.kt)("p",null,"See the video tutorial below to learn how to create a child bounty, assign a curator, and award a\nchild bounty."),(0,r.kt)("p",null,"The video will show how to create and award a child bounty using a batch call. We will also include\nproposing and approving curator candidacy for the child bounty. The calls can be executed\nseparately, depending on the process curators consider appropriate for their bounty."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/mLpvx0OQoyM/0.jpg",alt:"Create and Award Child Bounties"}))),(0,r.kt)("p",null,"Note that once a child bounty is awarded, awardees need to wait for the\n8-day delay to be complete before claiming the\nchild bounty."),(0,r.kt)("h2",{id:"claim-a-child-bounty-reward"},"Claim a Child Bounty Reward"),(0,r.kt)("p",null,"The status of child bounties can be viewed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/bounties"},"Polkassembly Bounty page"),' under the specific parent\nbounty. A child bounty status can be "Added", "Awarded", or "Claimed". For example, the parent\nbounty 17 refers to the Community Events Bounty, which has 183 child bounties.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkassembly-child-bounties",src:a(83001).Z,width:"2408",height:"1053"})),(0,r.kt)("p",null,"After a child bounty has been awarded and the\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.bounties.bountyDepositPayoutDelay",defaultValue:115200,filter:"blocksToDays",mdxType:"RPC"}),"","-day\ndelay elapsed, follow the guidelines in the video tutorial below to learn how to claim a child\nbounty reward. Note that the extrinsic to claim the child bounty reward is permissionless, and\nanyone can initiate the claim on behalf of the beneficiary."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=db82aHgy23c"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/db82aHgy23c/0.jpg",alt:"Claim Child Bounty Reward"}))))}b.isMDXComponent=!0},83001:(e,t,a)=>{"use strict";a.d(t,{Z:()=>o});const o=a.p+"assets/images/polkassembly-child-bounties-fde994e770f3e109a07752068aa417b1.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/ed3409b3.e1aa35a1.js b/assets/js/ed3409b3.e1aa35a1.js new file mode 100644 index 000000000000..b9c68396063a --- /dev/null +++ b/assets/js/ed3409b3.e1aa35a1.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[8609],{47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>c});var a=o(74165),n=o(15861),r=o(67294),s=o(87152),i=o(30967),u=o(67425);function l(e,t,o){return d.apply(this,arguments)}function d(){return(d=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var r,u,l,d,p;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,u=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return l=new s.U(r),e.next=21,i.G.create({provider:l});case 21:d=e.sent,(p=o.split(".")).forEach((function(e){e in d&&(d=d[e])})),e.t1=p[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return u=d.toString(),e.abrupt("break",35);case 29:return e.next=31,d();case 31:return u=(u=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+p[0]+") in "+o);case 35:return e.abrupt("return",u);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function p(e,t,o,a){switch(t){case"humanReadable":(0,u.HumanReadable)(e,o,a);break;case"precise":(0,u.Precise)(e,o,a);break;case"blocksToDays":(0,u.BlocksToDays)(e,a);break;case"erasToDays":(0,u.ErasToDays)(e,a,o);break;case"percentage":(0,u.Percentage)(e,a);break;case"permillToPercent":(0,u.PermillToPercent)(e,a);break;case"arrayLength":(0,u.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const c=function(e){var t=e.network,o=e.path,s=e.defaultValue,i=e.filter,u=void 0===i?void 0:i,d=(0,r.useState)(""),c=d[0],h=d[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==u?p(s.toString(),u,t,h):h(s.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,l(t,o,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==u?p(n,u,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),c}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,s,i){var u=void 0;if(s===t||s===n)u=3;else{if(s!==o&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");u=6}e=parseFloat(e),i((e=Number.isInteger(e/r[s].precision)?e/r[s].precision+" "+r[s].symbol:(e/r[s].precision).toFixed(u)+" "+r[s].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,s){var i=void 0;if(s===t||s===n)i=1;else{if(s!==o&&s!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((e/=i).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},64539:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>u,metadata:()=>d,toc:()=>c});var a=o(87462),n=o(63366),r=(o(67294),o(3905)),s=o(47940),i=["components"],u={id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounties",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},l=void 0,d={unversionedId:"learn/learn-guides-bounties",id:"learn/learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",description:"Polkadot-JS Guides for Bounties",source:"@site/../docs/learn/learn-guides-bounties.md",sourceDirName:"learn",slug:"/learn-guides-bounties",permalink:"/docs/learn-guides-bounties",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-bounties.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-guides-bounties",title:"Polkadot-JS Guides about Bounties",sidebar_label:"Bounties",description:"Polkadot-JS Guides for Bounties",keyword:["treasury","bounties","guides","child bounty","polkadot-js"],slug:"../learn-guides-bounties"},sidebar:"docs",previous:{title:"Treasury",permalink:"/docs/learn-guides-treasury"},next:{title:"Identity",permalink:"/docs/learn-guides-identity"}},p={},c=[{value:"Submit a Bounty Proposal",id:"submit-a-bounty-proposal",level:2},{value:"Assign a Curator to a Bounty",id:"assign-a-curator-to-a-bounty",level:2},{value:"Create and Award Child Bounties",id:"create-and-award-child-bounties",level:2},{value:"Claim a Child Bounty Reward",id:"claim-a-child-bounty-reward",level:2}],h={toc:c},b="wrapper";function m(e){var t=e.components,u=(0,n.Z)(e,i);return(0,r.kt)(b,(0,a.Z)({},h,u,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury#bounties"},"this page")," to learn about Bounties."),(0,r.kt)("admonition",{title:"Notify the Polkadot Direction Channel",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Remember always to notify the\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#Polkadot-Direction:parity.io"},"Polkadot Direction Element Channel")," about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov#referenda"},"OpenGov referenda")," so that the community can start reviewing\nthem and voting on them.")),(0,r.kt)("h2",{id:"submit-a-bounty-proposal"},"Submit a Bounty Proposal"),(0,r.kt)("p",null,"See the video tutorial below to learn how you can create a bounty and submit it for approval through\nan OpenGov referendum."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/8Cft1-8RWmk/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=8Cft1-8RWmk"},"Submit a Bounty")))),(0,r.kt)("p",null,'When you add a bounty, this will show as "proposed" in the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Once the community approves your bounty\nproposal as an OpenGov referendum, the bounty will show as "funded" at the end of the\n',(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period")," on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),". You can then proceed with assigning\ncurators to the bounty."),(0,r.kt)("p",null,"To minimize storage on chain in the same way as any proposal, bounties don't contain contextual\ninformation. When a user submits a bounty spending proposal, they will need to find an off-chain\nmedium to explain the proposal, for example a bounty proposal document on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"Polkassembly")," or\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.google.com/document/d/1-IBz_owspV5OcvezWXpksWDQReWowschD0TFuaVKKcU/edit?usp=sharing"},"This template"),"\ncan be used to submit all the information needed by OpenGov voters to make an informed decision."),(0,r.kt)("p",null,"Submitting a bounty proposal will reserve\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.bounties.bountyDepositBase",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),"","."),(0,r.kt)("h2",{id:"assign-a-curator-to-a-bounty"},"Assign a Curator to a Bounty"),(0,r.kt)("p",null,'Once your bounty is shown as "funded" on the main\n',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),", you can propose a bounty curator. See the\nvideo tutorial below to learn how you can add a curator to a bounty and submit it for approval\nthrough an OpenGov referendum."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/TM7vk3oP9IA/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=TM7vk3oP9IA"},"Assign Curator to a Bounty")))),(0,r.kt)("p",null,"Once your OpenGov referendum has been approved by the community and served the required\n",(0,r.kt)("a",{parentName:"p",href:"/docs/glossary#spend-period"},"spending period"),', the bounty will still show as "funded" on\nthe main ',(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page")," and await the curator's\nacceptance. The curator must formally accept the curator role by signing a ",(0,r.kt)("inlineCode",{parentName:"p"},"bounties.acceptCurator"),"\nextrinsic. More information about when to do this can be found on the main\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/#/bounties"},"Bounties page"),'. Only after the curators claim their\ncandidacy the bounty will show as "active" on the main Bounty page.'),(0,r.kt)("h2",{id:"create-and-award-child-bounties"},"Create and Award Child Bounties"),(0,r.kt)("admonition",{title:"Remember to add contextual information about child bounties",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"When you add child bounties, please add contextual information on the governance forums\n",(0,r.kt)("a",{parentName:"p",href:"https://polkassembly.io/"},"Polkassembly")," or ",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.subsquare.io/"},"Subsquare"),".")),(0,r.kt)("p",null,"See the video tutorial below to learn how to create a child bounty, assign a curator, and award a\nchild bounty."),(0,r.kt)("p",null,"The video will show how to create and award a child bounty using a batch call. We will also include\nproposing and approving curator candidacy for the child bounty. The calls can be executed\nseparately, depending on the process curators consider appropriate for their bounty."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/mLpvx0OQoyM/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=mLpvx0OQoyM"},"Create and Award Child Bounties")))),(0,r.kt)("p",null,"Note that once a child bounty is awarded, awardees need to wait for the\n8-day delay to be complete before claiming the\nchild bounty."),(0,r.kt)("h2",{id:"claim-a-child-bounty-reward"},"Claim a Child Bounty Reward"),(0,r.kt)("p",null,"The status of child bounties can be viewed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/bounties"},"Polkassembly Bounty page"),' under the specific parent\nbounty. A child bounty status can be "Added", "Awarded", or "Claimed". For example, the parent\nbounty 17 refers to the Community Events Bounty, which has 183 child bounties.'),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkassembly-child-bounties",src:o(83001).Z,width:"2408",height:"1053"})),(0,r.kt)("p",null,"After a child bounty has been awarded and the\n",(0,r.kt)(s.Z,{network:"polkadot",path:"consts.bounties.bountyDepositPayoutDelay",defaultValue:115200,filter:"blocksToDays",mdxType:"RPC"}),"","-day\ndelay elapsed, follow the guidelines in the video tutorial below to learn how to claim a child\nbounty reward. Note that the extrinsic to claim the child bounty reward is permissionless, and\nanyone can initiate the claim on behalf of the beneficiary."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/db82aHgy23c/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=db82aHgy23c"},"Claim Child Bounty Reward")))))}m.isMDXComponent=!0},83001:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkassembly-child-bounties-fde994e770f3e109a07752068aa417b1.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f0ff685a.6ed11001.js b/assets/js/f0ff685a.6ed11001.js deleted file mode 100644 index 3f2341a5a2ae..000000000000 --- a/assets/js/f0ff685a.6ed11001.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[8191],{47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>u});var n=o(74165),a=o(15861),r=o(67294),i=o(87152),s=o(30967),l=o(67425);function c(e,t,o){return p.apply(this,arguments)}function p(){return(p=(0,a.Z)((0,n.Z)().mark((function e(t,o,a){var r,l,c,p,d;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new i.U(r),e.next=21,s.G.create({provider:c});case 21:p=e.sent,(d=o.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+o);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,o,n){switch(t){case"humanReadable":(0,l.HumanReadable)(e,o,n);break;case"precise":(0,l.Precise)(e,o,n);break;case"blocksToDays":(0,l.BlocksToDays)(e,n);break;case"erasToDays":(0,l.ErasToDays)(e,n,o);break;case"percentage":(0,l.Percentage)(e,n);break;case"permillToPercent":(0,l.PermillToPercent)(e,n);break;case"arrayLength":(0,l.ArrayLength)(e,n);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,i=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,p=(0,r.useState)(""),u=p[0],h=p[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(i.toString(),l,t,h):h(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,a.Z)((0,n.Z)().mark((function e(){var a;return(0,n.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,o,h);case 2:if(void 0!==(a=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(a,l,t,h):h(a);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),u}},67425:e=>{var t="polkadot",o="kusama",n="statemine",a="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var l=void 0;if(i===t||i===a)l=3;else{if(i!==o&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(l)+" "+r[i].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===a)s=1;else{if(i!==o&&i!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},56870:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var n=o(87462),a=o(63366),r=(o(67294),o(3905)),i=(o(47940),["components"]),s={id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},l=void 0,c={unversionedId:"learn/learn-guides-accounts-proxy",id:"learn/learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",description:"Polkadot-JS Guides about Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy",permalink:"/docs/learn-guides-accounts-proxy",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1701187212,formattedLastUpdatedAt:"Nov 28, 2023",frontMatter:{id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},sidebar:"docs",previous:{title:"Multisig",permalink:"/docs/learn-guides-accounts-multisig"},next:{title:"Pure Proxy",permalink:"/docs/learn-guides-accounts-proxy-pure"}},p={},d=[{value:"Creating Proxy with Polkadot-JS",id:"creating-proxy-with-polkadot-js",level:2},{value:"Removing Proxy with Polkadot-JS",id:"removing-proxy-with-polkadot-js",level:2},{value:"View your Proxy on Polkadot-JS",id:"view-your-proxy-on-polkadot-js",level:2},{value:"Set-up and Use of Time-delayed Proxies with Polkadot-JS",id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",level:2},{value:"Proxy calls",id:"proxy-calls",level:2},{value:"Nested Proxy Calls",id:"nested-proxy-calls",level:3}],u={toc:d},h="wrapper";function y(e){var t=e.components,s=(0,a.Z)(e,i);return(0,r.kt)(h,(0,n.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Proxies allow users to use an account (it can be in cold storage or a hot wallet) less frequently\nbut actively participate in the network with the weight of the tokens in that account. Proxies are\nallowed to perform a limited amount of actions related to specific\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/frame-pallets/"},"substrate pallets")," on behalf of another\naccount. The video below contains more information about using proxies."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=1tcygkq52tU"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/1tcygkq52tU/0.jpg",alt:"Proxy Accounts"}))),(0,r.kt)("admonition",{title:"Know how to check the calls and pallets accessible by proxies",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For the latest information on the calls and pallets that can be fully accessed by proxies, check the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/153543b0c8c582e73f520e5c08cbe33bddfb5f69/runtime/polkadot/src/lib.rs#L1158"},"source code in the runtime folder"),"\non the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot repository"))),(0,r.kt)("h2",{id:"creating-proxy-with-polkadot-js"},"Creating Proxy with Polkadot-JS"),(0,r.kt)("p",null,"To create a proxy account with Polkadot-JS read\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support article"),"."),(0,r.kt)("h2",{id:"removing-proxy-with-polkadot-js"},"Removing Proxy with Polkadot-JS"),(0,r.kt)("p",null,'Read the section "Removing Proxies" on\n',(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support page"),"\nto learn how to remove proxies."),(0,r.kt)("h2",{id:"view-your-proxy-on-polkadot-js"},"View your Proxy on Polkadot-JS"),(0,r.kt)("p",null,"To view your proxy, just go on the ",(0,r.kt)("em",{parentName:"p"},"Accounts")," menu in the Polkadot-JS UI, next to the proxied\naccount you will notice a blue icon. Hover on it, and you will see ",(0,r.kt)("em",{parentName:"p"},"Proxy overview"),". Click on it and\nyou will be presented with a list of all proxies for that account."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies",src:o(42273).Z,width:"1842",height:"120"})),(0,r.kt)("p",null,"Additionally, you can head over to the ",(0,r.kt)("em",{parentName:"p"},"Chain State")," tab (underneath the ",(0,r.kt)("em",{parentName:"p"},"Developer")," menu) on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate"},"Polkadot-JS Apps"),". If\nyou've created your proxy on a Polkadot\naccount, it is required to change your network accordingly using the top left navigation button. On\nthis page, the proxy pallet should be selected, returning the announcements and proxies functions.\nThe proxies function will allow you to see your created proxies for either one account or for all\naccounts (using the toggle will enable this). Proxy announcements are what time lock proxies do to\nannounce they are going to conduct an action."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies_dev",src:o(28902).Z,width:"1871",height:"820"})),(0,r.kt)("h2",{id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js"},"Set-up and Use of Time-delayed Proxies with Polkadot-JS"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/3L7Vu2SX0PE"},"this video tutorial")," to learn how you can setup and use\ntime-delayed proxies. The video goes through the example below.")),(0,r.kt)("p",null,"Initially the time time-delayed proxy announces its intended action using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.announce"),"\nextrinsic and will wait for the number of blocks defined in the delay time before executing it. The\nproxy will include the hash of the intended function call in the announcement. Within this time\nwindow, the intended action may be canceled by accounts that control the proxy. This can be done by\nthe proxy itself using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.removeAnnouncement")," extrinsic or by the proxied account using the\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.rejectAnnouncement")," extrinsic. Now we can use proxies knowing that any malicious actions\ncan be noticed and reverted within a delay period. After the time-delay, the proxy can use the\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced")," extrinsic to execute the announced call."),(0,r.kt)("p",null,"Let's take for example the stash account Eleanor setting Bob as a time-delayed staking proxy. In\nthis way, if Bob submits an extrinsic to change the reward destination, such extrinsic can be\nrejected by Eleanor. This implies that Eleanor monitors Bob, and that within the time-delay she can\nspot the announced extrinsic. Eleanor can check all the proxy call announcements made by her\naccount's proxies on-chain. On Polkadot-JS UI, go to Developer > Storage > Proxy > Announcements to\ncheck the hashes for the calls made by the proxy accounts and the block height at which they are\nenabled for execution."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"time-delayed proxies",src:o(54481).Z,width:"1920",height:"800"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you try to use ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced"),' to execute the call within the time-delay window you will\nget an error "Proxy unannounced" since the announcement will be done after the time delay. Also note\nthat regular ',(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," calls do not work with time-delayed proxies, you need to announce the\ncall first and then execute the announced call on a separate transaction.")),(0,r.kt)("h2",{id:"proxy-calls"},"Proxy calls"),(0,r.kt)("p",null,"Proxy calls are used by proxies to call proxied accounts. These calls are important for example in\nthe case of ",(0,r.kt)("em",{parentName:"p"},"pure")," proxies, as any attempt to sign transactions with a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy will fail. For\nmore details see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure"},"dedicated section about pure proxies"),"."),(0,r.kt)("h3",{id:"nested-proxy-calls"},"Nested Proxy Calls"),(0,r.kt)("p",null,"As the term suggests, nested proxy calls are proxy calls within proxy calls. Such calls are needed\nif there are proxied accounts that are proxies themselves. In the example diagram below, Alice has a\nstash account that has a ",(0,r.kt)("em",{parentName:"p"},"staking")," proxy account, P-C. P-C is a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, a proxied account\noriginally spawned by Charly that is now an ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C and signs everything on its behalf."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"nested proxy calls",src:o(51050).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"For example, to bond more funds, Charly needs to submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"prox.proxy")," extrinsic to P-C, which in\nturn submits a ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to Alice including for example a ",(0,r.kt)("inlineCode",{parentName:"p"},"staking.bondExtra"),"\nextrinsic, specifying the number of extra tokens that need to be bounded. If Charly wants to leave,\na new account can take his place as any proxy (before Charly leaves!). There is no need to change\nthe staking proxy account. Also, Alice is the only one who can remove P-C as a staking proxy, and\nP-C can only perform staking-related tasks. For example, P-C cannot send funds out from Alice's\naccount."),(0,r.kt)("p",null,"Proxy calls can be done using the Extrinsic Tab in the Polkadot-JS UI. Nested proxy calls can be\ndone by calling each ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic separately, or in some cases by just calling the last\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will\nautomatically ask for Charly's signature. Thus one proxy call will trigger the second one because\nCharly's is the only ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's\naccount we will need to submit all three proxy calls."))}y.isMDXComponent=!0},51050:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});const n=o.p+"assets/images/nested-proxy-calls-65bdc70624a0b21a087da639743c710d.png"},42273:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});const n=o.p+"assets/images/polkadot_view_proxies-5c65a3f24dc6902f1734de8887dd5696.png"},28902:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});const n=o.p+"assets/images/polkadot_view_proxies_dev-c7f33e592f2c37cade0cc3d37e356aef.png"},54481:(e,t,o)=>{"use strict";o.d(t,{Z:()=>n});const n=o.p+"assets/images/time-delayed-proxies-8b85523c3caac25b32d1d884af71c048.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f0ff685a.c60044c4.js b/assets/js/f0ff685a.c60044c4.js new file mode 100644 index 000000000000..fafdc9edae4c --- /dev/null +++ b/assets/js/f0ff685a.c60044c4.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[8191],{47940:(e,t,o)=>{"use strict";o.d(t,{Z:()=>u});var a=o(74165),n=o(15861),r=o(67294),i=o(87152),s=o(30967),l=o(67425);function c(e,t,o){return p.apply(this,arguments)}function p(){return(p=(0,n.Z)((0,a.Z)().mark((function e(t,o,n){var r,l,c,p,d;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:r=void 0,l=void 0,e.t0=t,e.next="polkadot"===e.t0?5:"kusama"===e.t0?7:"statemine"===e.t0?9:"statemint"===e.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",e.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",e.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",e.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",e.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){e.next=18;break}return e.abrupt("return");case 18:return c=new i.U(r),e.next=21,s.G.create({provider:c});case 21:p=e.sent,(d=o.split(".")).forEach((function(e){e in p&&(p=p[e])})),e.t1=d[0],e.next="consts"===e.t1?27:"query"===e.t1?29:34;break;case 27:return l=p.toString(),e.abrupt("break",35);case 29:return e.next=31,p();case 31:return l=(l=e.sent).toString(),e.abrupt("break",35);case 34:console.log("Unknown path prefix ("+d[0]+") in "+o);case 35:return e.abrupt("return",l);case 36:case"end":return e.stop()}}),e)})))).apply(this,arguments)}function d(e,t,o,a){switch(t){case"humanReadable":(0,l.HumanReadable)(e,o,a);break;case"precise":(0,l.Precise)(e,o,a);break;case"blocksToDays":(0,l.BlocksToDays)(e,a);break;case"erasToDays":(0,l.ErasToDays)(e,a,o);break;case"percentage":(0,l.Percentage)(e,a);break;case"permillToPercent":(0,l.PermillToPercent)(e,a);break;case"arrayLength":(0,l.ArrayLength)(e,a);break;default:return void console.log("Ignoring unknown filter type")}}const u=function(e){var t=e.network,o=e.path,i=e.defaultValue,s=e.filter,l=void 0===s?void 0:s,p=(0,r.useState)(""),u=p[0],h=p[1];return t=t.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?d(i.toString(),l,t,h):h(i.toString());var e=void 0;switch(t){case"polkadot":e="wss://rpc.polkadot.io";break;case"kusama":e="wss://kusama-rpc.polkadot.io/";break;case"statemine":e="wss://statemine-rpc.polkadot.io/";break;case"statemint":e="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+t)}if(void 0===e)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var e=(0,n.Z)((0,a.Z)().mark((function e(){var n;return(0,a.Z)().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,c(t,o,h);case 2:if(void 0!==(n=e.sent)){e.next=7;break}return e.abrupt("return");case 7:void 0!==l?d(n,l,t,h):h(n);case 8:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),u}},67425:e=>{var t="polkadot",o="kusama",a="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};e.exports={HumanReadable:function(e,i,s){var l=void 0;if(i===t||i===n)l=3;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}e=parseFloat(e),s((e=Number.isInteger(e/r[i].precision)?e/r[i].precision+" "+r[i].symbol:(e/r[i].precision).toFixed(l)+" "+r[i].symbol).toString())},Precise:function(e,t,o){o(e=(e=parseFloat(e))/r[t].precision+" "+r[t].symbol)},BlocksToDays:function(e,t){t((e=6*e/86400).toString())},ErasToDays:function(e,r,i){var s=void 0;if(i===t||i===n)s=1;else{if(i!==o&&i!==a)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((e/=s).toString())},Percentage:function(e,t){t((e/=1e7).toString())},PermillToPercent:function(e,t){t((e/=1e4).toString())},ArrayLength:function(e,t){t((e=e.split(",").length).toString())}}},56870:(e,t,o)=>{"use strict";o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>y,frontMatter:()=>s,metadata:()=>c,toc:()=>d});var a=o(87462),n=o(63366),r=(o(67294),o(3905)),i=(o(47940),["components"]),s={id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},l=void 0,c={unversionedId:"learn/learn-guides-accounts-proxy",id:"learn/learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",description:"Polkadot-JS Guides about Proxy Accounts",source:"@site/../docs/learn/learn-guides-accounts-proxy.md",sourceDirName:"learn",slug:"/learn-guides-accounts-proxy",permalink:"/docs/learn-guides-accounts-proxy",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-guides-accounts-proxy.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-guides-accounts-proxy",title:"Polkadot-JS Guides about Proxy Accounts",sidebar_label:"Proxy",description:"Polkadot-JS Guides about Proxy Accounts",keyword:["guides","polkadot-js","accounts","proxy"],slug:"../learn-guides-accounts-proxy"},sidebar:"docs",previous:{title:"Multisig",permalink:"/docs/learn-guides-accounts-multisig"},next:{title:"Pure Proxy",permalink:"/docs/learn-guides-accounts-proxy-pure"}},p={},d=[{value:"Creating Proxy with Polkadot-JS",id:"creating-proxy-with-polkadot-js",level:2},{value:"Removing Proxy with Polkadot-JS",id:"removing-proxy-with-polkadot-js",level:2},{value:"View your Proxy on Polkadot-JS",id:"view-your-proxy-on-polkadot-js",level:2},{value:"Set-up and Use of Time-delayed Proxies with Polkadot-JS",id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js",level:2},{value:"Proxy calls",id:"proxy-calls",level:2},{value:"Nested Proxy Calls",id:"nested-proxy-calls",level:3}],u={toc:d},h="wrapper";function y(e){var t=e.components,s=(0,n.Z)(e,i);return(0,r.kt)(h,(0,a.Z)({},u,s,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"Proxies allow users to use an account (it can be in cold storage or a hot wallet) less frequently\nbut actively participate in the network with the weight of the tokens in that account. Proxies are\nallowed to perform a limited amount of actions related to specific\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.substrate.io/reference/frame-pallets/"},"substrate pallets")," on behalf of another\naccount. The video below contains more information about using proxies."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/1tcygkq52tU/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=1tcygkq52tU"},"Proxy Accounts Tutorial")))),(0,r.kt)("admonition",{title:"Know how to check the calls and pallets accessible by proxies",type:"tip"},(0,r.kt)("p",{parentName:"admonition"},"For the latest information on the calls and pallets that can be fully accessed by proxies, check the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk/blob/153543b0c8c582e73f520e5c08cbe33bddfb5f69/runtime/polkadot/src/lib.rs#L1158"},"source code in the runtime folder"),"\non the ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-sdk"},"Polkadot repository"))),(0,r.kt)("h2",{id:"creating-proxy-with-polkadot-js"},"Creating Proxy with Polkadot-JS"),(0,r.kt)("p",null,"To create a proxy account with Polkadot-JS read\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support article"),"."),(0,r.kt)("h2",{id:"removing-proxy-with-polkadot-js"},"Removing Proxy with Polkadot-JS"),(0,r.kt)("p",null,'Read the section "Removing Proxies" on\n',(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000182179-how-to-create-a-proxy-account"},"this support page"),"\nto learn how to remove proxies."),(0,r.kt)("h2",{id:"view-your-proxy-on-polkadot-js"},"View your Proxy on Polkadot-JS"),(0,r.kt)("p",null,"To view your proxy, just go on the ",(0,r.kt)("em",{parentName:"p"},"Accounts")," menu in the Polkadot-JS UI, next to the proxied\naccount you will notice a blue icon. Hover on it, and you will see ",(0,r.kt)("em",{parentName:"p"},"Proxy overview"),". Click on it and\nyou will be presented with a list of all proxies for that account."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies",src:o(42273).Z,width:"1842",height:"120"})),(0,r.kt)("p",null,"Additionally, you can head over to the ",(0,r.kt)("em",{parentName:"p"},"Chain State")," tab (underneath the ",(0,r.kt)("em",{parentName:"p"},"Developer")," menu) on\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.js.org/apps/?rpc=wss%3A%2F%2Frpc.polkadot.io#/chainstate"},"Polkadot-JS Apps"),". If\nyou've created your proxy on a Polkadot\naccount, it is required to change your network accordingly using the top left navigation button. On\nthis page, the proxy pallet should be selected, returning the announcements and proxies functions.\nThe proxies function will allow you to see your created proxies for either one account or for all\naccounts (using the toggle will enable this). Proxy announcements are what time lock proxies do to\nannounce they are going to conduct an action."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"polkadot_view_proxies_dev",src:o(28902).Z,width:"1871",height:"820"})),(0,r.kt)("h2",{id:"set-up-and-use-of-time-delayed-proxies-with-polkadot-js"},"Set-up and Use of Time-delayed Proxies with Polkadot-JS"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"https://youtu.be/3L7Vu2SX0PE"},"this video tutorial")," to learn how you can setup and use\ntime-delayed proxies. The video goes through the example below.")),(0,r.kt)("p",null,"Initially the time time-delayed proxy announces its intended action using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.announce"),"\nextrinsic and will wait for the number of blocks defined in the delay time before executing it. The\nproxy will include the hash of the intended function call in the announcement. Within this time\nwindow, the intended action may be canceled by accounts that control the proxy. This can be done by\nthe proxy itself using the ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.removeAnnouncement")," extrinsic or by the proxied account using the\nthe ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.rejectAnnouncement")," extrinsic. Now we can use proxies knowing that any malicious actions\ncan be noticed and reverted within a delay period. After the time-delay, the proxy can use the\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced")," extrinsic to execute the announced call."),(0,r.kt)("p",null,"Let's take for example the stash account Eleanor setting Bob as a time-delayed staking proxy. In\nthis way, if Bob submits an extrinsic to change the reward destination, such extrinsic can be\nrejected by Eleanor. This implies that Eleanor monitors Bob, and that within the time-delay she can\nspot the announced extrinsic. Eleanor can check all the proxy call announcements made by her\naccount's proxies on-chain. On Polkadot-JS UI, go to Developer > Storage > Proxy > Announcements to\ncheck the hashes for the calls made by the proxy accounts and the block height at which they are\nenabled for execution."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"time-delayed proxies",src:o(54481).Z,width:"1920",height:"800"})),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"If you try to use ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxyAnnounced"),' to execute the call within the time-delay window you will\nget an error "Proxy unannounced" since the announcement will be done after the time delay. Also note\nthat regular ',(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," calls do not work with time-delayed proxies, you need to announce the\ncall first and then execute the announced call on a separate transaction.")),(0,r.kt)("h2",{id:"proxy-calls"},"Proxy calls"),(0,r.kt)("p",null,"Proxy calls are used by proxies to call proxied accounts. These calls are important for example in\nthe case of ",(0,r.kt)("em",{parentName:"p"},"pure")," proxies, as any attempt to sign transactions with a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy will fail. For\nmore details see the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-proxies-pure"},"dedicated section about pure proxies"),"."),(0,r.kt)("h3",{id:"nested-proxy-calls"},"Nested Proxy Calls"),(0,r.kt)("p",null,"As the term suggests, nested proxy calls are proxy calls within proxy calls. Such calls are needed\nif there are proxied accounts that are proxies themselves. In the example diagram below, Alice has a\nstash account that has a ",(0,r.kt)("em",{parentName:"p"},"staking")," proxy account, P-C. P-C is a ",(0,r.kt)("em",{parentName:"p"},"pure")," proxy, a proxied account\noriginally spawned by Charly that is now an ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C and signs everything on its behalf."),(0,r.kt)("p",null,(0,r.kt)("img",{alt:"nested proxy calls",src:o(51050).Z,width:"1920",height:"800"})),(0,r.kt)("p",null,"For example, to bond more funds, Charly needs to submit a ",(0,r.kt)("inlineCode",{parentName:"p"},"prox.proxy")," extrinsic to P-C, which in\nturn submits a ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic to Alice including for example a ",(0,r.kt)("inlineCode",{parentName:"p"},"staking.bondExtra"),"\nextrinsic, specifying the number of extra tokens that need to be bounded. If Charly wants to leave,\na new account can take his place as any proxy (before Charly leaves!). There is no need to change\nthe staking proxy account. Also, Alice is the only one who can remove P-C as a staking proxy, and\nP-C can only perform staking-related tasks. For example, P-C cannot send funds out from Alice's\naccount."),(0,r.kt)("p",null,"Proxy calls can be done using the Extrinsic Tab in the Polkadot-JS UI. Nested proxy calls can be\ndone by calling each ",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic separately, or in some cases by just calling the last\n",(0,r.kt)("inlineCode",{parentName:"p"},"proxy.proxy")," extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will\nautomatically ask for Charly's signature. Thus one proxy call will trigger the second one because\nCharly's is the only ",(0,r.kt)("em",{parentName:"p"},"any")," proxy of P-C, and P-C cannot sign anything. While if we want to use Bob's\naccount we will need to submit all three proxy calls."))}y.isMDXComponent=!0},51050:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/nested-proxy-calls-65bdc70624a0b21a087da639743c710d.png"},42273:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkadot_view_proxies-5c65a3f24dc6902f1734de8887dd5696.png"},28902:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/polkadot_view_proxies_dev-c7f33e592f2c37cade0cc3d37e356aef.png"},54481:(e,t,o)=>{"use strict";o.d(t,{Z:()=>a});const a=o.p+"assets/images/time-delayed-proxies-8b85523c3caac25b32d1d884af71c048.png"},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f2521980.20204449.js b/assets/js/f2521980.20204449.js new file mode 100644 index 000000000000..ed9459c78755 --- /dev/null +++ b/assets/js/f2521980.20204449.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[6689],{47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>k});var o=a(74165),n=a(15861),r=a(67294),i=a(87152),s=a(30967),l=a(67425);function d(t,e,a){return p.apply(this,arguments)}function p(){return(p=(0,n.Z)((0,o.Z)().mark((function t(e,a,n){var r,l,d,p,c;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=void 0,l=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){t.next=18;break}return t.abrupt("return");case 18:return d=new i.U(r),t.next=21,s.G.create({provider:d});case 21:p=t.sent,(c=a.split(".")).forEach((function(t){t in p&&(p=p[t])})),t.t1=c[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return l=p.toString(),t.abrupt("break",35);case 29:return t.next=31,p();case 31:return l=(l=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return t.abrupt("return",l);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function c(t,e,a,o){switch(e){case"humanReadable":(0,l.HumanReadable)(t,a,o);break;case"precise":(0,l.Precise)(t,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(t,o);break;case"erasToDays":(0,l.ErasToDays)(t,o,a);break;case"percentage":(0,l.Percentage)(t,o);break;case"permillToPercent":(0,l.PermillToPercent)(t,o);break;case"arrayLength":(0,l.ArrayLength)(t,o);break;default:return void console.log("Ignoring unknown filter type")}}const k=function(t){var e=t.network,a=t.path,i=t.defaultValue,s=t.filter,l=void 0===s?void 0:s,p=(0,r.useState)(""),k=p[0],u=p[1];return e=e.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?c(i.toString(),l,e,u):u(i.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://statemine-rpc.polkadot.io/";break;case"statemint":t="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var t=(0,n.Z)((0,o.Z)().mark((function t(){var n;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d(e,a,u);case 2:if(void 0!==(n=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==l?c(n,l,e,u):u(n);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),k}},67425:t=>{var e="polkadot",a="kusama",o="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,i,s){var l=void 0;if(i===e||i===n)l=3;else{if(i!==a&&i!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}t=parseFloat(t),s((t=Number.isInteger(t/r[i].precision)?t/r[i].precision+" "+r[i].symbol:(t/r[i].precision).toFixed(l)+" "+r[i].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/r[e].precision+" "+r[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,r,i){var s=void 0;if(i===e||i===n)s=1;else{if(i!==a&&i!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((t/=s).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},24595:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>p,toc:()=>k});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),i=a(47940),s=["components"],l={id:"getting-started",title:"Getting Started",sidebar_label:"Getting Started",description:"Get started with Polkadot and Web3.",keywords:["introduction","getting started","what is polkadot","why polkadot"],slug:"../getting-started"},d=void 0,p={unversionedId:"general/getting-started",id:"general/getting-started",title:"Getting Started",description:"Get started with Polkadot and Web3.",source:"@site/../docs/general/getting-started.md",sourceDirName:"general",slug:"/getting-started",permalink:"/docs/getting-started",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/getting-started.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"getting-started",title:"Getting Started",sidebar_label:"Getting Started",description:"Get started with Polkadot and Web3.",keywords:["introduction","getting started","what is polkadot","why polkadot"],slug:"../getting-started"},sidebar:"docs",previous:{title:"Explore",permalink:"/docs/explore-index"},next:{title:"Wallets",permalink:"/docs/wallets-index"}},c={},k=[{value:"Interact with Polkadot",id:"interact-with-polkadot",level:2},{value:"What is Polkadot?",id:"what-is-polkadot",level:2},{value:"What can I do with my DOT?",id:"what-can-i-do-with-my-dot",level:2},{value:"Polkadot Gifts",id:"polkadot-gifts",level:2},{value:"Why should you use Polkadot?",id:"why-should-you-use-polkadot",level:2},{value:"Where to start learning?",id:"where-to-start-learning",level:2},{value:"Brand-New Polkadot learners",id:"brand-new-polkadot-learners",level:3},{value:"Resources",id:"resources",level:2}],u={toc:k},h="wrapper";function m(t){var e=t.components,a=(0,n.Z)(t,s);return(0,r.kt)(h,(0,o.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Welcome to the Polkadot Wiki",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Wiki serves as the central source of truth for Polkadot. It is a community-focused\ninitiative led by Web3 Foundation to keep an up-to-date resource on the best information for\nlearning, building, and maintaining on Polkadot."),(0,r.kt)("p",{parentName:"admonition"},"The Wiki has three main sections:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./learn-index"},(0,r.kt)("strong",{parentName:"a"},"Learn"))," (for people who want to learn about Polkadot)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/build-index"},(0,r.kt)("strong",{parentName:"a"},"Build"))," (for people who want to build on Polkadot)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/maintain-index"},(0,r.kt)("strong",{parentName:"a"},"Maintain"))," (for people who want to maintain the Polkadot\nnetwork)."))),(0,r.kt)("h2",{id:"interact-with-polkadot"},"Interact with Polkadot"),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-accounts"},(0,r.kt)("img",{src:"/img/polkadot-guide/Account.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-accounts"},"Accounts"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-transactions"},(0,r.kt)("img",{src:"/img/polkadot-guide/Transfer.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-transactions"},"Transactions"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-staking"},(0,r.kt)("img",{src:"/img/polkadot-guide/Stake.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-staking"},"Staking")))),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-polkadot-opengov"},(0,r.kt)("img",{src:"/img/polkadot-guide/Council.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-polkadot-opengov"},"Polkadot OpenGov"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-proxies"},(0,r.kt)("img",{src:"/img/polkadot-guide/Proxy.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-proxies"},"Proxy Accounts"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-identity"},(0,r.kt)("img",{src:"/img/polkadot-guide/Identity.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-identity"},"Account Identity")))),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-parachains"},(0,r.kt)("img",{src:"/img/polkadot-guide/Parachain.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-parachains"},"Parachains"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/learn-bridges"},(0,r.kt)("img",{src:"/img/polkadot-guide/Bridges.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/learn-bridges"},"Bridges"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"../docs/ambassadors"},(0,r.kt)("img",{src:"/img/polkadot-guide/Ambassadors.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"../docs/ambassadors"},"Become an Ambassador")))),(0,r.kt)("h2",{id:"what-is-polkadot"},"What is Polkadot?"),(0,r.kt)("p",null,"Polkadot is the first layer-0 (L0) blockchain that provides shared security and secure\ninteroperability to layer-1 (L1) blockchains. Those L1 blockchain attached to Polkadot are also\ncalled ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachains")," as their transactions are processed in parallel by\nPolkadot. For more information about Polkadot see the dedicated page about the state of\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadot-v1"},"Polkadot 1.0")," released in mid 2023."),(0,r.kt)("p",null,"Polkadot has an on-chain ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"open governance")," (also called Polkadot\nOpenGov) to orchestrate decisions, including accessing funds from the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury"},"treasury"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"DOT token")," gives you the power to participate in Polkadot OpenGov,\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking"),", and ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans"},"parachains' crowdloans"),"."),(0,r.kt)("p",null,"The level of abstraction and generalization of Polkadot allows to build applications that are\nspecific to their use cases, and for those applications to communicate securely leveraging each\nother value proposition. The trustless cooperation between applications is what makes Polkadot an\nideal ecosystem to build a ",(0,r.kt)("a",{parentName:"p",href:"/docs/web3-and-polkadot"},"web3 future"),"."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=_-k0xkooSlA"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/_-k0xkooSlA/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=_-k0xkooSlA"},"Polkadot: Are You Ready to Start Building?"))),(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=BQ60bTU1bPg"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/BQ60bTU1bPg/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=BQ60bTU1bPg"},"What is Polkadot?")))),(0,r.kt)("h2",{id:"what-can-i-do-with-my-dot"},"What can I do with my DOT?"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"DOT")," is the native token of the Polkadot Network. DOT can be used for\ntransaction fees, staking, governance, acquisition of a parachain slot and for enabling several key\nfunctionalities on Polkadot."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Explore Polkadot with a secure and user-friendly wallets listed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://www.polkadot.network/ecosystem/wallets/"},"Polkadot website"),".")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum balance required to have an active account on Polkadot Network. If your account\nbalance drops below the minimum, your account will be reaped. Learn more about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts"},"Accounts")," and the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/build-protocol-info#existential-deposit"},"Existential Deposit")," requirement.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.nominationPools.minJoinBond",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum contribution required to join a ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pool"),"\nand earn staking rewards for contributing to the security of the network. Learn more about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pools"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.crowdloan.minContribution",defaultValue:5e10,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum contribution required to participate in ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans"},"crowdloans")," for\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"parachain slot auctions"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Around 20 DOT"),":"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.identity.basicDeposit",defaultValue:20258e7,filter:"humanReadable",mdxType:"RPC"}),":"),"\nregister an ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-identity"},"on-chain identity")),(0,r.kt)("li",{parentName:"ul"},"",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.proxy.proxyDepositBase",defaultValue:20008e7,filter:"humanReadable",mdxType:"RPC"}),":"),"\ncreate a ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-proxies"},"proxy account"),"."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.staking.minNominatorBond",defaultValue:25e11,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum stake required to submit your intent to directly nominate validators.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.staking.minimumActiveStake",defaultValue:2937e9,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum amount of DOT required to become an active nominator and earn rewards, i.e. the\nminimum active bond. To increase the chance of earning staking rewards, your stake should not be\nless than the minimum stake among the active nominators, which is a dynamic threshold. If you have\nlesser DOT than the minimum active nomination, please consider contributing to\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pools"),". Learn more about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nominator"},"becoming a nominator"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.nominationPools.minCreateBond",defaultValue:5e12,filter:"humanReadable",mdxType:"RPC"}),":"),"\nyou can create your own ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pool"),"."))),(0,r.kt)("p",null,"DOT has utility in ",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-guides-democracy"},"Polkadot's democracy"),". Bonding DOT is\na requirement to create proposals, to endorse them and to vote on them when they become referendums.\nBonding\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.treasury.proposalBondMinimum",defaultValue:1e12,filter:"humanReadable",mdxType:"RPC"}),"\nor 5% of requested funding is a requirement to make a\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-treasury#creating-a-treasury-proposal"},"treasury proposal"),". DOT can also enable\nyou to participate in programs like the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/thousand-validators#polkadot"},"Thousand Validators Program"),"."),(0,r.kt)("h2",{id:"polkadot-gifts"},"Polkadot Gifts"),(0,r.kt)("img",{align:"right",src:"/img/polkadot-gift.png",width:"210",height:"200"}),(0,r.kt)("p",null,"Polkadot Gifts provide an easy way to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Onboard friends or family who are curious about blockchain but haven\u2019t made the leap yet."),(0,r.kt)("li",{parentName:"ul"},"Share your love of Polkadot and send any amount of DOT."),(0,r.kt)("li",{parentName:"ul"},"Say \u2018thank you\u2019 or send someone tokens when you don\u2019t know their address."),(0,r.kt)("li",{parentName:"ul"},"Get friends and family set up to participate in crowdloans.")),(0,r.kt)("p",null,"Learn more about how you can create and send Polkadot Gifts\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/blog/introducing-polkadot-kusama-gifts/"},"here"),"."),(0,r.kt)("h2",{id:"why-should-you-use-polkadot"},"Why should you use Polkadot?"),(0,r.kt)("p",null,"Whether you're a blockchain developer or if you're interested in taking part of\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/polkadot-ambassador-program/"},"Polkadot's community"),", Polkadot offers a\nplatform for everyone. This wiki offers a place for builders and maintainers to utilize\n",(0,r.kt)("a",{parentName:"p",href:"/docs/build-tools-index"},"tools")," and for brand-new learners to dive into educational material."),(0,r.kt)("h2",{id:"where-to-start-learning"},"Where to start learning?"),(0,r.kt)("p",null,"The\n",(0,r.kt)("a",{parentName:"p",href:"https://mooc.web3.foundation/course/blockchain-fundamentals/"},"Blockchain Fundamentals MOOC course"),"\nis a great introduction to start familiarizing yourself with blockchain concepts such as\ncryptography and networks, and how these play into things like decentralization and cryptocurrency."),(0,r.kt)("p",null,"This is recommended for users with backgrounds of all levels, and the course is free!"),(0,r.kt)("h3",{id:"brand-new-polkadot-learners"},"Brand-New Polkadot learners"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network/PolkaDotPaper.pdf"},"Polkadot's original white paper")," is a technical\nsummary around one possible direction of implementing the Polkadot network. This paper uses\nrationale and technical details to support why this direction is beneficial. This original white\npaper also explains how Polkadot's core components work together to build this decentralized\nnetwork."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/w3f/research/blob/master/docs/papers/OverviewPaper-V1.pdf"},"Polkadot's overview paper"),"\nis an updated version of the white paper that describes the protocol in more technical terms. We\nwould recommend reading this overview paper if you are interested in digging more into the\nprotocol itself."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network/Polkadot-lightpaper.pdf"},"Polkadot's light paper")," is a visual, easy to\nread, and less technical introduction into its blockchain technology. This paper dives into the\ncomponents of Polkadot but is understandable for both a non-technical and technical reader."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://linktr.ee/polkadotbook"},"Polkadot for Beginners: A non-technical guide to decentralization, blockchains & Polkadot")," -\na book funded by the Polkadot Treasury"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/w3f/polkadot-spec"},"Polkadot's specification")," is a GitHub repository that holds\nthe latest Polkadot Host protocol specification, Polkadot's specification tests of the many\ncomponents of the network, and the Polkadot Runtime specification. This repo holds algorithms and\nexplores how various processes function in the Polkadot network. The Polkadot specification takes\nPolkadot's ideas and concepts from the light and the white paper but focuses on the technical\nspecs of the technology."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=mNStMPZjiHM&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8"},"Watching the Technical Explainer Videos"),":\nThese are great introductory videos that explain and demonstrate how to use Polkadot and its\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/"},"User Interface"),"."),(0,r.kt)("li",{parentName:"ul"},"Reading\n",(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/what-is-polkadot-a-brief-introduction-ca3eac9ddca5"},"What is Polkadot? A Brief Introduction"),"\non Medium. There are also other great articles to read on\n",(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network"},"Polkadot's Medium")," or\n",(0,r.kt)("a",{parentName:"li",href:"https://medium.com/web3foundation"},"Web3 Foundation's Medium"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.study/"},"Polkadot Study")," is a platform where developers can write tutorials for\nthe Polkadot ecosystem. Part of the development of the platform was funded by the\n",(0,r.kt)("a",{parentName:"li",href:"https://kusama.subsquare.io/referenda/102"},"Kusama treasury"),". The platform also hosts\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.study/tutorials/substrate-in-bits/"},"Substrate in Bits"),", a technical content\nseries aimed at solving the pain points of developers building with\n",(0,r.kt)("a",{parentName:"li",href:"https://substrate.io/"},"Substrate")," and ",(0,r.kt)("a",{parentName:"li",href:"https://www.rust-lang.org/"},"Rust"),".")),(0,r.kt)("p",null,"For brand-new learners of Kusama, Polkadot's canary cousin network: To learn more about how to build\nand maintain on the Kusama network, please head over to our\n",(0,r.kt)("a",{parentName:"p",href:"https://guide.kusama.network/"},"Kusama Guide"),"."),(0,r.kt)("h2",{id:"resources"},"Resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.crowdcast.io/polkadot"},"Polkadot Crowdcast")," - List of all Crowdcast webinars that the\nWeb3 Foundation has done."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot Explorer")," - Browser for the Polkadot network;\ncan be used for Polkadot, Kusama, or any Substrate-based chain."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"http://polkascan.io/"},"Polkascan")," ","-"," Real-time multi-chain data for Polkadot Relay Chain and\nParity Substrate chains."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://subscan.io"},"Subscan.io")," - Explorer for Substrate based chains."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://youtu.be/lIghiCmHz0U"},"Polkadot Overview")," - Dr. Gavin Wood presents an overview of\nPolkadot. (Video)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://techcrunch.com/video/fireside-chat-with-jutta-steiner-parity-technologies/"},"Polkadot Overview")," -\nDr. Jutta Steiner presents Polkadot. (Video)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=0IoUZdDi5Is&feature=youtu.be"},"Polkadot & Substrate Overview")," -\nDr. Gavin Wood presents Substrate (blockchain in-a-box + VM) and Polkadot, and builds a blockchain\non-stage in 30 minutes using Substrate. (Video)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/community"},"Community / Ecosystem")," - List of community rooms and channels to talk to others\nabout Polkadot."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#"},"Sample Applications")," - Sample applications that are built on or currently being built for\nPolkadot."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/contributing"},"Contributing Guide")," - Rules for contributing to the wiki."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/"},"Polkadot Knowledge Base")," - Troubleshooting resources for\nspecific errors and problems.")))}m.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f2521980.59e9d181.js b/assets/js/f2521980.59e9d181.js deleted file mode 100644 index 44432a4fd0c5..000000000000 --- a/assets/js/f2521980.59e9d181.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[6689],{47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>k});var o=a(74165),n=a(15861),r=a(67294),i=a(87152),s=a(30967),l=a(67425);function d(t,e,a){return p.apply(this,arguments)}function p(){return(p=(0,n.Z)((0,o.Z)().mark((function t(e,a,n){var r,l,d,p,c;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=void 0,l=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){t.next=18;break}return t.abrupt("return");case 18:return d=new i.U(r),t.next=21,s.G.create({provider:d});case 21:p=t.sent,(c=a.split(".")).forEach((function(t){t in p&&(p=p[t])})),t.t1=c[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return l=p.toString(),t.abrupt("break",35);case 29:return t.next=31,p();case 31:return l=(l=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return t.abrupt("return",l);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function c(t,e,a,o){switch(e){case"humanReadable":(0,l.HumanReadable)(t,a,o);break;case"precise":(0,l.Precise)(t,a,o);break;case"blocksToDays":(0,l.BlocksToDays)(t,o);break;case"erasToDays":(0,l.ErasToDays)(t,o,a);break;case"percentage":(0,l.Percentage)(t,o);break;case"permillToPercent":(0,l.PermillToPercent)(t,o);break;case"arrayLength":(0,l.ArrayLength)(t,o);break;default:return void console.log("Ignoring unknown filter type")}}const k=function(t){var e=t.network,a=t.path,i=t.defaultValue,s=t.filter,l=void 0===s?void 0:s,p=(0,r.useState)(""),k=p[0],u=p[1];return e=e.toLowerCase(),(0,r.useEffect)((function(){void 0!==l?c(i.toString(),l,e,u):u(i.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://statemine-rpc.polkadot.io/";break;case"statemint":t="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var t=(0,n.Z)((0,o.Z)().mark((function t(){var n;return(0,o.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,d(e,a,u);case 2:if(void 0!==(n=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==l?c(n,l,e,u):u(n);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{r()}catch(s){console.log(s)}}}),[]),k}},67425:t=>{var e="polkadot",a="kusama",o="statemine",n="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,i,s){var l=void 0;if(i===e||i===n)l=3;else{if(i!==a&&i!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");l=6}t=parseFloat(t),s((t=Number.isInteger(t/r[i].precision)?t/r[i].precision+" "+r[i].symbol:(t/r[i].precision).toFixed(l)+" "+r[i].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/r[e].precision+" "+r[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,r,i){var s=void 0;if(i===e||i===n)s=1;else{if(i!==a&&i!==o)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=4}r((t/=s).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},24595:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>d,default:()=>m,frontMatter:()=>l,metadata:()=>p,toc:()=>k});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),i=a(47940),s=["components"],l={id:"getting-started",title:"Getting Started",sidebar_label:"Getting Started",description:"Get started with Polkadot and Web3.",keywords:["introduction","getting started","what is polkadot","why polkadot"],slug:"../getting-started"},d=void 0,p={unversionedId:"general/getting-started",id:"general/getting-started",title:"Getting Started",description:"Get started with Polkadot and Web3.",source:"@site/../docs/general/getting-started.md",sourceDirName:"general",slug:"/getting-started",permalink:"/docs/getting-started",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/getting-started.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1704787313,formattedLastUpdatedAt:"Jan 9, 2024",frontMatter:{id:"getting-started",title:"Getting Started",sidebar_label:"Getting Started",description:"Get started with Polkadot and Web3.",keywords:["introduction","getting started","what is polkadot","why polkadot"],slug:"../getting-started"},sidebar:"docs",previous:{title:"Explore",permalink:"/docs/explore-index"},next:{title:"Wallets",permalink:"/docs/wallets-index"}},c={},k=[{value:"Interact with Polkadot",id:"interact-with-polkadot",level:2},{value:"What is Polkadot?",id:"what-is-polkadot",level:2},{value:"What can I do with my DOT?",id:"what-can-i-do-with-my-dot",level:2},{value:"Polkadot Gifts",id:"polkadot-gifts",level:2},{value:"Why should you use Polkadot?",id:"why-should-you-use-polkadot",level:2},{value:"Where to start learning?",id:"where-to-start-learning",level:2},{value:"Brand-New Polkadot learners",id:"brand-new-polkadot-learners",level:3},{value:"Resources",id:"resources",level:2}],u={toc:k},h="wrapper";function m(t){var e=t.components,a=(0,n.Z)(t,s);return(0,r.kt)(h,(0,o.Z)({},u,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Welcome to the Polkadot Wiki",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The Polkadot Wiki serves as the central source of truth for Polkadot. It is a community-focused\ninitiative led by Web3 Foundation to keep an up-to-date resource on the best information for\nlearning, building, and maintaining on Polkadot."),(0,r.kt)("p",{parentName:"admonition"},"The Wiki has three main sections:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./learn-index"},(0,r.kt)("strong",{parentName:"a"},"Learn"))," (for people who want to learn about Polkadot)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/build-index"},(0,r.kt)("strong",{parentName:"a"},"Build"))," (for people who want to build on Polkadot)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/maintain-index"},(0,r.kt)("strong",{parentName:"a"},"Maintain"))," (for people who want to maintain the Polkadot\nnetwork)."))),(0,r.kt)("h2",{id:"interact-with-polkadot"},"Interact with Polkadot"),(0,r.kt)("tr",{class:"cards-container"},(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-accounts"},(0,r.kt)("img",{src:"/img/polkadot-guide/Account.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Accounts")))),(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-transactions"},(0,r.kt)("img",{src:"/img/polkadot-guide/Transfer.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Transactions")))),(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-staking"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Stake.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Staking"))))),(0,r.kt)("br",null),(0,r.kt)("tr",{class:"cards-container"},(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-polkadot-opengov"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Council.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Polkadot OpenGov")))),(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-proxies"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Proxy.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Proxy Accounts")))),(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-identity"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Identity.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Account Identity"))))),(0,r.kt)("br",null),(0,r.kt)("tr",{class:"cards-container"},(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-parachains"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Parachain.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Parachains")))),(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/learn-bridges"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Bridges.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Bridges")))),(0,r.kt)("td",null,(0,r.kt)("a",{class:"guide-link",href:"../docs/ambassadors"},(0,r.kt)("img",{class:"guide-image",src:"/img/polkadot-guide/Ambassadors.jpg",alt:"Drawing",width:"250",height:"150"}),(0,r.kt)("div",{class:"cards-body"},(0,r.kt)("h5",{class:"cards-title"},"Become an Ambassador"))))),(0,r.kt)("br",null),(0,r.kt)("h2",{id:"what-is-polkadot"},"What is Polkadot?"),(0,r.kt)("p",null,"Polkadot is the first layer-0 (L0) blockchain that provides shared security and secure\ninteroperability to layer-1 (L1) blockchains. Those L1 blockchain attached to Polkadot are also\ncalled ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-parachains"},"parachains")," as their transactions are processed in parallel by\nPolkadot. For more information about Polkadot see the dedicated page about the state of\n",(0,r.kt)("a",{parentName:"p",href:"/docs/polkadot-v1"},"Polkadot 1.0")," released in mid 2023."),(0,r.kt)("p",null,"Polkadot has an on-chain ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"open governance")," (also called Polkadot\nOpenGov) to orchestrate decisions, including accessing funds from the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov-treasury"},"treasury"),"."),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"DOT token")," gives you the power to participate in Polkadot OpenGov,\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"staking"),", and ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans"},"parachains' crowdloans"),"."),(0,r.kt)("p",null,"The level of abstraction and generalization of Polkadot allows to build applications that are\nspecific to their use cases, and for those applications to communicate securely leveraging each\nother value proposition. The trustless cooperation between applications is what makes Polkadot an\nideal ecosystem to build a ",(0,r.kt)("a",{parentName:"p",href:"/docs/web3-and-polkadot"},"web3 future"),"."),(0,r.kt)("p",null,"See the videos below to know more about Polkadot."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=_-k0xkooSlA"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/_-k0xkooSlA/0.jpg",alt:"Polkadot"}))),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=BQ60bTU1bPg"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/BQ60bTU1bPg/0.jpg",alt:"Introduction to Polkadot"}))),(0,r.kt)("h2",{id:"what-can-i-do-with-my-dot"},"What can I do with my DOT?"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"/docs/learn-DOT"},"DOT")," is the native token of the Polkadot Network. DOT can be used for\ntransaction fees, staking, governance, acquisition of a parachain slot and for enabling several key\nfunctionalities on Polkadot."),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Explore Polkadot with a secure and user-friendly wallets listed on the\n",(0,r.kt)("a",{parentName:"p",href:"https://www.polkadot.network/ecosystem/wallets/"},"Polkadot website"),".")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.balances.existentialDeposit",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum balance required to have an active account on Polkadot Network. If your account\nbalance drops below the minimum, your account will be reaped. Learn more about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-accounts"},"Accounts")," and the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/build-protocol-info#existential-deposit"},"Existential Deposit")," requirement.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.nominationPools.minJoinBond",defaultValue:1e10,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum contribution required to join a ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pool"),"\nand earn staking rewards for contributing to the security of the network. Learn more about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pools"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.crowdloan.minContribution",defaultValue:5e10,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum contribution required to participate in ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-crowdloans"},"crowdloans")," for\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"parachain slot auctions"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"Around 20 DOT"),":"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.identity.basicDeposit",defaultValue:20258e7,filter:"humanReadable",mdxType:"RPC"}),":"),"\nregister an ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-identity"},"on-chain identity")),(0,r.kt)("li",{parentName:"ul"},"",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)(i.Z,{network:"polkadot",path:"consts.proxy.proxyDepositBase",defaultValue:20008e7,filter:"humanReadable",mdxType:"RPC"}),":"),"\ncreate a ",(0,r.kt)("a",{parentName:"li",href:"/docs/learn-proxies"},"proxy account"),"."))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.staking.minNominatorBond",defaultValue:25e11,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum stake required to submit your intent to directly nominate validators.")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.staking.minimumActiveStake",defaultValue:2937e9,filter:"humanReadable",mdxType:"RPC"}),":"),"\nthe minimum amount of DOT required to become an active nominator and earn rewards, i.e. the\nminimum active bond. To increase the chance of earning staking rewards, your stake should not be\nless than the minimum stake among the active nominators, which is a dynamic threshold. If you have\nlesser DOT than the minimum active nomination, please consider contributing to\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pools"),". Learn more about\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nominator"},"becoming a nominator"),".")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)(i.Z,{network:"polkadot",path:"query.nominationPools.minCreateBond",defaultValue:5e12,filter:"humanReadable",mdxType:"RPC"}),":"),"\nyou can create your own ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-nomination-pools"},"nomination pool"),"."))),(0,r.kt)("p",null,"DOT has utility in ",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-guides-democracy"},"Polkadot's democracy"),". Bonding DOT is\na requirement to create proposals, to endorse them and to vote on them when they become referendums.\nBonding\n",(0,r.kt)(i.Z,{network:"polkadot",path:"consts.treasury.proposalBondMinimum",defaultValue:1e12,filter:"humanReadable",mdxType:"RPC"}),"\nor 5% of requested funding is a requirement to make a\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-treasury#creating-a-treasury-proposal"},"treasury proposal"),". DOT can also enable\nyou to participate in programs like the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/thousand-validators#polkadot"},"Thousand Validators Program"),"."),(0,r.kt)("h2",{id:"polkadot-gifts"},"Polkadot Gifts"),(0,r.kt)("img",{align:"right",src:"/img/polkadot-gift.png",width:"210",height:"200"}),(0,r.kt)("p",null,"Polkadot Gifts provide an easy way to:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Onboard friends or family who are curious about blockchain but haven\u2019t made the leap yet."),(0,r.kt)("li",{parentName:"ul"},"Share your love of Polkadot and send any amount of DOT."),(0,r.kt)("li",{parentName:"ul"},"Say \u2018thank you\u2019 or send someone tokens when you don\u2019t know their address."),(0,r.kt)("li",{parentName:"ul"},"Get friends and family set up to participate in crowdloans.")),(0,r.kt)("p",null,"Learn more about how you can create and send Polkadot Gifts\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/blog/introducing-polkadot-kusama-gifts/"},"here"),"."),(0,r.kt)("h2",{id:"why-should-you-use-polkadot"},"Why should you use Polkadot?"),(0,r.kt)("p",null,"Whether you're a blockchain developer or if you're interested in taking part of\n",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.network/polkadot-ambassador-program/"},"Polkadot's community"),", Polkadot offers a\nplatform for everyone. This wiki offers a place for builders and maintainers to utilize\n",(0,r.kt)("a",{parentName:"p",href:"/docs/build-tools-index"},"tools")," and for brand-new learners to dive into educational material."),(0,r.kt)("h2",{id:"where-to-start-learning"},"Where to start learning?"),(0,r.kt)("p",null,"The\n",(0,r.kt)("a",{parentName:"p",href:"https://mooc.web3.foundation/course/blockchain-fundamentals/"},"Blockchain Fundamentals MOOC course"),"\nis a great introduction to start familiarizing yourself with blockchain concepts such as\ncryptography and networks, and how these play into things like decentralization and cryptocurrency."),(0,r.kt)("p",null,"This is recommended for users with backgrounds of all levels, and the course is free!"),(0,r.kt)("h3",{id:"brand-new-polkadot-learners"},"Brand-New Polkadot learners"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network/PolkaDotPaper.pdf"},"Polkadot's original white paper")," is a technical\nsummary around one possible direction of implementing the Polkadot network. This paper uses\nrationale and technical details to support why this direction is beneficial. This original white\npaper also explains how Polkadot's core components work together to build this decentralized\nnetwork."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/w3f/research/blob/master/docs/papers/OverviewPaper-V1.pdf"},"Polkadot's overview paper"),"\nis an updated version of the white paper that describes the protocol in more technical terms. We\nwould recommend reading this overview paper if you are interested in digging more into the\nprotocol itself."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.network/Polkadot-lightpaper.pdf"},"Polkadot's light paper")," is a visual, easy to\nread, and less technical introduction into its blockchain technology. This paper dives into the\ncomponents of Polkadot but is understandable for both a non-technical and technical reader."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://linktr.ee/polkadotbook"},"Polkadot for Beginners: A non-technical guide to decentralization, blockchains & Polkadot")," -\na book funded by the Polkadot Treasury"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://github.com/w3f/polkadot-spec"},"Polkadot's specification")," is a GitHub repository that holds\nthe latest Polkadot Host protocol specification, Polkadot's specification tests of the many\ncomponents of the network, and the Polkadot Runtime specification. This repo holds algorithms and\nexplores how various processes function in the Polkadot network. The Polkadot specification takes\nPolkadot's ideas and concepts from the light and the white paper but focuses on the technical\nspecs of the technology."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=mNStMPZjiHM&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8"},"Watching the Technical Explainer Videos"),":\nThese are great introductory videos that explain and demonstrate how to use Polkadot and its\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/"},"User Interface"),"."),(0,r.kt)("li",{parentName:"ul"},"Reading\n",(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network/what-is-polkadot-a-brief-introduction-ca3eac9ddca5"},"What is Polkadot? A Brief Introduction"),"\non Medium. There are also other great articles to read on\n",(0,r.kt)("a",{parentName:"li",href:"https://medium.com/polkadot-network"},"Polkadot's Medium")," or\n",(0,r.kt)("a",{parentName:"li",href:"https://medium.com/web3foundation"},"Web3 Foundation's Medium"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.study/"},"Polkadot Study")," is a platform where developers can write tutorials for\nthe Polkadot ecosystem. Part of the development of the platform was funded by the\n",(0,r.kt)("a",{parentName:"li",href:"https://kusama.subsquare.io/referenda/102"},"Kusama treasury"),". The platform also hosts\n",(0,r.kt)("a",{parentName:"li",href:"https://polkadot.study/tutorials/substrate-in-bits/"},"Substrate in Bits"),", a technical content\nseries aimed at solving the pain points of developers building with\n",(0,r.kt)("a",{parentName:"li",href:"https://substrate.io/"},"Substrate")," and ",(0,r.kt)("a",{parentName:"li",href:"https://www.rust-lang.org/"},"Rust"),".")),(0,r.kt)("p",null,"For brand-new learners of Kusama, Polkadot's canary cousin network: To learn more about how to build\nand maintain on the Kusama network, please head over to our\n",(0,r.kt)("a",{parentName:"p",href:"https://guide.kusama.network/"},"Kusama Guide"),"."),(0,r.kt)("h2",{id:"resources"},"Resources"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.crowdcast.io/polkadot"},"Polkadot Crowdcast")," - List of all Crowdcast webinars that the\nWeb3 Foundation has done."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://polkadot.js.org/apps/#/explorer"},"Polkadot Explorer")," - Browser for the Polkadot network;\ncan be used for Polkadot, Kusama, or any Substrate-based chain."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"http://polkascan.io/"},"Polkascan")," ","-"," Real-time multi-chain data for Polkadot Relay Chain and\nParity Substrate chains."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://subscan.io"},"Subscan.io")," - Explorer for Substrate based chains."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://youtu.be/lIghiCmHz0U"},"Polkadot Overview")," - Dr. Gavin Wood presents an overview of\nPolkadot. (Video)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://techcrunch.com/video/fireside-chat-with-jutta-steiner-parity-technologies/"},"Polkadot Overview")," -\nDr. Jutta Steiner presents Polkadot. (Video)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://www.youtube.com/watch?v=0IoUZdDi5Is&feature=youtu.be"},"Polkadot & Substrate Overview")," -\nDr. Gavin Wood presents Substrate (blockchain in-a-box + VM) and Polkadot, and builds a blockchain\non-stage in 30 minutes using Substrate. (Video)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/community"},"Community / Ecosystem")," - List of community rooms and channels to talk to others\nabout Polkadot."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"#"},"Sample Applications")," - Sample applications that are built on or currently being built for\nPolkadot."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"/docs/contributing"},"Contributing Guide")," - Rules for contributing to the wiki."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://support.polkadot.network/"},"Polkadot Knowledge Base")," - Troubleshooting resources for\nspecific errors and problems.")))}m.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/f44679e7.168bea6c.js b/assets/js/f44679e7.168bea6c.js new file mode 100644 index 000000000000..3eb1d70f3e06 --- /dev/null +++ b/assets/js/f44679e7.168bea6c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1451],{3905:(e,t,o)=>{o.d(t,{Zo:()=>c,kt:()=>k});var a=o(67294);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function r(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,a)}return o}function s(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var l=a.createContext({}),p=function(e){var t=a.useContext(l),o=t;return e&&(o="function"==typeof e?e(t):s(s({},t),e)),o},c=function(e){var t=p(e.components);return a.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var o=e.components,n=e.mdxType,r=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(o),m=n,k=d["".concat(l,".").concat(m)]||d[m]||u[m]||r;return o?a.createElement(k,s(s({ref:t},c),{},{components:o})):a.createElement(k,s({ref:t},c))}));function k(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=o.length,s=new Array(r);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:n,s[1]=i;for(var p=2;p{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>k,frontMatter:()=>i,metadata:()=>p,toc:()=>d});var a=o(87462),n=o(63366),r=(o(67294),o(3905)),s=["components"],i={id:"governance-apps",title:"Polkadot Governance Apps",sidebar_label:"Governance Apps",description:"Governance Apps in the Polkadot Ecosystem.",keywords:["voting","vote","delegate","conviction","OpenGov","delegation dashboard"],slug:"../governance-apps"},l=void 0,p={unversionedId:"general/governance-apps",id:"general/governance-apps",title:"Polkadot Governance Apps",description:"Governance Apps in the Polkadot Ecosystem.",source:"@site/../docs/general/governance-apps.md",sourceDirName:"general",slug:"/governance-apps",permalink:"/docs/governance-apps",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/governance-apps.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"governance-apps",title:"Polkadot Governance Apps",sidebar_label:"Governance Apps",description:"Governance Apps in the Polkadot Ecosystem.",keywords:["voting","vote","delegate","conviction","OpenGov","delegation dashboard"],slug:"../governance-apps"},sidebar:"docs",previous:{title:"Staking Apps",permalink:"/docs/staking-apps"},next:{title:"Multisig Apps",permalink:"/docs/multisig-apps"}},c={},d=[{value:"Delegation Dashboard",id:"delegation-dashboard",level:2},{value:"Polkassembly",id:"polkassembly",level:2}],u={toc:d},m="wrapper";function k(e){var t=e.components,o=(0,n.Z)(e,s);return(0,r.kt)(m,(0,a.Z)({},u,o,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Community Page",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This page is open to contributions from the community. Please follow the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation"},"Wiki contribution guidelines"),"\nand add your Governance app to this page.")),(0,r.kt)("h2",{id:"delegation-dashboard"},"Delegation Dashboard"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Polkadot Delegation Dashboard")," is a web3 application that\nallows you to delegate your voting power on ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov"),"."),(0,r.kt)("admonition",{title:"How to get added as a Delegate on the Dashboard?",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Anyone interested in being listed as a delegate can add their details on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/governance-ui/blob/main/assets/data/polkadot/delegates.json"},"Governance-UI repository"),".")),(0,r.kt)("p",null,"To make OpenGov multi-role delegation easy and intuitive,\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Delegation Dashboard")," provides an interactive interface that\ndisplays the list of delegates and their details. The video tutorial below walks through the\nfeatures of the Delegation Dashboard and shows how to perform multi-role delegation."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/RapBYZc5ZPo/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},"Delegation Dashboard Tutorial")))),(0,r.kt)("p",null,"For detailed instructions on how to delegate your voting power using dashboard, check\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184123-polkadot-opengov-how-to-delegate-your-voting-power"},"this support guide."),"."),(0,r.kt)("h2",{id:"polkassembly"},"Polkassembly"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://github.com/w3f/polkadot-wiki/assets/874046/f2fc1032-ba81-465a-896c-51bd35efd435",alt:"Polkassembly"})),(0,r.kt)("p",null,"Polkassembly is a platform specifically designed to foster open, transparent discussions around\nPolkadot and Kusama governance proposals. By bridging on-chain decisions with off-chain discussions,\nPolkassembly ensures that the community remains at the heart of the decision-making process."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"1. Getting Started with Polkassembly")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/"},"https://polkadot.polkassembly.io/"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Registration: Begin by registering on Polkassembly. Choose between email/password sign-up or use\nweb3 enabled wallets."),(0,r.kt)("li",{parentName:"ul"},"Authentication: To provide maximum security, Polkassembly enables a two-factor authentication\nprocess."),(0,r.kt)("li",{parentName:"ul"},"Linking Your Polkadot or Kusama Account:",(0,r.kt)("ol",{parentName:"li"},(0,r.kt)("li",{parentName:"ol"},"Connect your Polkadot or Kusama account from Subwallet, Talisman, Nova, Polkadot.JS for\nseamless proposal tracking and voting."),(0,r.kt)("li",{parentName:"ol"},"Polkasafe (for multisigs) - vote and create proposals with Multisigs by logging in with\n",(0,r.kt)("a",{parentName:"li",href:"https://polkasafe.xyz/"},"Polkasafe"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"2. Navigating the Polkassembly Interface")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"https://polkadot.polkassembly.io/opengov"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Dashboard: Provides a snapshot of active proposals, treasury motions, referenda, and public\ndiscussions."),(0,r.kt)("li",{parentName:"ul"},"User Profile: Customize your profile settings, manage notifications, and view your activity.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"3. Proposals, Motions, and Referenda")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/big-spender"},"https://polkadot.polkassembly.io/big-spender"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Viewing Details: Access comprehensive details of each proposal, including current status, voting\ntally, and associated discussions."),(0,r.kt)("li",{parentName:"ul"},"Participating in Discussions: Engage with the community, share insights, ask questions, and\ncontribute to a transparent decision-making process.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"4. Delegating on Polkassembly")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/delegation"},"https://polkadot.polkassembly.io/delegation"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Understanding Delegation: Delegate your voting power to community members you trust, enhancing the\ndemocratic process."),(0,r.kt)("li",{parentName:"ul"},"How to Delegate: Navigate to the Delegation section, choose a delegate, specify the amount, and\nconfirm the delegation.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"5. Notifications and Alerts")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/settings"},"https://polkadot.polkassembly.io/settings"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Custom Notifications: Receive real-time updates on topics of interest, proposal status changes,\nand more."),(0,r.kt)("li",{parentName:"ul"},"Setting Alerts: Customize alert preferences to receive notifications tailored to your interests.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"6. Frequently Asked Questions (FAQs)")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Integration with Polkadot: Polkassembly fetches on-chain data directly from the Polkadot/Substrate\nnode, ensuring real-time accuracy.")),(0,r.kt)("p",null,"Dive into the world of Polkadot governance with Polkassembly and be an active part of the future!\nFor deeper insights or specific tutorials, please refer to the official documentation at\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.polkassembly.io"},"https://docs.polkassembly.io"),"."))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/f44679e7.22c866a1.js b/assets/js/f44679e7.22c866a1.js deleted file mode 100644 index e365f71208b0..000000000000 --- a/assets/js/f44679e7.22c866a1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[1451],{3905:(e,t,a)=>{a.d(t,{Zo:()=>c,kt:()=>k});var o=a(67294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,o)}return a}function s(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var l=o.createContext({}),p=function(e){var t=o.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):s(s({},t),e)),a},c=function(e){var t=p(e.components);return o.createElement(l.Provider,{value:t},e.children)},d="mdxType",u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,l=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),d=p(a),m=n,k=d["".concat(l,".").concat(m)]||d[m]||u[m]||r;return a?o.createElement(k,s(s({ref:t},c),{},{components:a})):o.createElement(k,s({ref:t},c))}));function k(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,s=new Array(r);s[0]=m;var i={};for(var l in t)hasOwnProperty.call(t,l)&&(i[l]=t[l]);i.originalType=e,i[d]="string"==typeof e?e:n,s[1]=i;for(var p=2;p{a.r(t),a.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>k,frontMatter:()=>i,metadata:()=>p,toc:()=>d});var o=a(87462),n=a(63366),r=(a(67294),a(3905)),s=["components"],i={id:"governance-apps",title:"Polkadot Governance Apps",sidebar_label:"Governance Apps",description:"Governance Apps in the Polkadot Ecosystem.",keywords:["voting","vote","delegate","conviction","OpenGov","delegation dashboard"],slug:"../governance-apps"},l=void 0,p={unversionedId:"general/governance-apps",id:"general/governance-apps",title:"Polkadot Governance Apps",description:"Governance Apps in the Polkadot Ecosystem.",source:"@site/../docs/general/governance-apps.md",sourceDirName:"general",slug:"/governance-apps",permalink:"/docs/governance-apps",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/general/governance-apps.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1699519944,formattedLastUpdatedAt:"Nov 9, 2023",frontMatter:{id:"governance-apps",title:"Polkadot Governance Apps",sidebar_label:"Governance Apps",description:"Governance Apps in the Polkadot Ecosystem.",keywords:["voting","vote","delegate","conviction","OpenGov","delegation dashboard"],slug:"../governance-apps"},sidebar:"docs",previous:{title:"Staking Apps",permalink:"/docs/staking-apps"},next:{title:"Multisig Apps",permalink:"/docs/multisig-apps"}},c={},d=[{value:"Delegation Dashboard",id:"delegation-dashboard",level:2},{value:"Polkassembly",id:"polkassembly",level:2}],u={toc:d},m="wrapper";function k(e){var t=e.components,a=(0,n.Z)(e,s);return(0,r.kt)(m,(0,o.Z)({},u,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("admonition",{title:"Community Page",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"This page is open to contributions from the community. Please follow the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/w3f/polkadot-wiki#contributing-to-documentation"},"Wiki contribution guidelines"),"\nand add your Governance app to this page.")),(0,r.kt)("h2",{id:"delegation-dashboard"},"Delegation Dashboard"),(0,r.kt)("p",null,"The ",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Polkadot Delegation Dashboard")," is a web3 application that\nallows you to delegate your voting power on ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"Polkadot OpenGov"),"."),(0,r.kt)("admonition",{title:"How to get added as a Delegate on the Dashboard?",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"Anyone interested in being listed as a delegate can add their details on the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/governance-ui/blob/main/assets/data/polkadot/delegates.json"},"Governance-UI repository"),".")),(0,r.kt)("p",null,"To make OpenGov multi-role delegation easy and intuitive,\n",(0,r.kt)("a",{parentName:"p",href:"https://delegation.polkadot.network/"},"Delegation Dashboard")," provides an interactive interface that\ndisplays the list of delegates and their details. The video tutorial below walks through the\nfeatures of the Delegation Dashboard and shows how to perform multi-role delegation."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=RapBYZc5ZPo"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/RapBYZc5ZPo/0.jpg",alt:"Delegation Dashboard Tutorial"}))),(0,r.kt)("p",null,"For detailed instructions on how to delegate your voting power using dashboard, check\n",(0,r.kt)("a",{parentName:"p",href:"https://support.polkadot.network/support/solutions/articles/65000184123-polkadot-opengov-how-to-delegate-your-voting-power"},"this support guide."),"."),(0,r.kt)("h2",{id:"polkassembly"},"Polkassembly"),(0,r.kt)("p",null,(0,r.kt)("img",{parentName:"p",src:"https://github.com/w3f/polkadot-wiki/assets/874046/f2fc1032-ba81-465a-896c-51bd35efd435",alt:"Polkassembly"})),(0,r.kt)("p",null,"Polkassembly is a platform specifically designed to foster open, transparent discussions around\nPolkadot and Kusama governance proposals. By bridging on-chain decisions with off-chain discussions,\nPolkassembly ensures that the community remains at the heart of the decision-making process."),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"1. Getting Started with Polkassembly")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/"},"https://polkadot.polkassembly.io/"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Registration: Begin by registering on Polkassembly. Choose between email/password sign-up or use\nweb3 enabled wallets."),(0,r.kt)("li",{parentName:"ul"},"Authentication: To provide maximum security, Polkassembly enables a two-factor authentication\nprocess."),(0,r.kt)("li",{parentName:"ul"},"Linking Your Polkadot or Kusama Account:",(0,r.kt)("ol",{parentName:"li"},(0,r.kt)("li",{parentName:"ol"},"Connect your Polkadot or Kusama account from Subwallet, Talisman, Nova, Polkadot.JS for\nseamless proposal tracking and voting."),(0,r.kt)("li",{parentName:"ol"},"Polkasafe (for multisigs) - vote and create proposals with Multisigs by logging in with\n",(0,r.kt)("a",{parentName:"li",href:"https://polkasafe.xyz/"},"Polkasafe"))))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"2. Navigating the Polkassembly Interface")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/opengov"},"https://polkadot.polkassembly.io/opengov"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Dashboard: Provides a snapshot of active proposals, treasury motions, referenda, and public\ndiscussions."),(0,r.kt)("li",{parentName:"ul"},"User Profile: Customize your profile settings, manage notifications, and view your activity.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"3. Proposals, Motions, and Referenda")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/big-spender"},"https://polkadot.polkassembly.io/big-spender"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Viewing Details: Access comprehensive details of each proposal, including current status, voting\ntally, and associated discussions."),(0,r.kt)("li",{parentName:"ul"},"Participating in Discussions: Engage with the community, share insights, ask questions, and\ncontribute to a transparent decision-making process.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"4. Delegating on Polkassembly")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/delegation"},"https://polkadot.polkassembly.io/delegation"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Understanding Delegation: Delegate your voting power to community members you trust, enhancing the\ndemocratic process."),(0,r.kt)("li",{parentName:"ul"},"How to Delegate: Navigate to the Delegation section, choose a delegate, specify the amount, and\nconfirm the delegation.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"5. Notifications and Alerts")," (",(0,r.kt)("a",{parentName:"p",href:"https://polkadot.polkassembly.io/settings"},"https://polkadot.polkassembly.io/settings"),")"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Custom Notifications: Receive real-time updates on topics of interest, proposal status changes,\nand more."),(0,r.kt)("li",{parentName:"ul"},"Setting Alerts: Customize alert preferences to receive notifications tailored to your interests.")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"6. Frequently Asked Questions (FAQs)")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Integration with Polkadot: Polkassembly fetches on-chain data directly from the Polkadot/Substrate\nnode, ensuring real-time accuracy.")),(0,r.kt)("p",null,"Dive into the world of Polkadot governance with Polkassembly and be an active part of the future!\nFor deeper insights or specific tutorials, please refer to the official documentation at\n",(0,r.kt)("a",{parentName:"p",href:"https://docs.polkassembly.io"},"https://docs.polkassembly.io"),"."))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ffe9c3c9.4e348b64.js b/assets/js/ffe9c3c9.4e348b64.js deleted file mode 100644 index 50f0c3473fc9..000000000000 --- a/assets/js/ffe9c3c9.4e348b64.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk=self.webpackChunk||[]).push([[1529],{47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>p});var n=a(74165),o=a(15861),r=a(67294),l=a(87152),i=a(30967),s=a(67425);function u(t,e,a){return k.apply(this,arguments)}function k(){return(k=(0,o.Z)((0,n.Z)().mark((function t(e,a,o){var r,s,u,k,c;return(0,n.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=void 0,s=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){t.next=18;break}return t.abrupt("return");case 18:return u=new l.U(r),t.next=21,i.G.create({provider:u});case 21:k=t.sent,(c=a.split(".")).forEach((function(t){t in k&&(k=k[t])})),t.t1=c[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return s=k.toString(),t.abrupt("break",35);case 29:return t.next=31,k();case 31:return s=(s=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return t.abrupt("return",s);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function c(t,e,a,n){switch(e){case"humanReadable":(0,s.HumanReadable)(t,a,n);break;case"precise":(0,s.Precise)(t,a,n);break;case"blocksToDays":(0,s.BlocksToDays)(t,n);break;case"erasToDays":(0,s.ErasToDays)(t,n,a);break;case"percentage":(0,s.Percentage)(t,n);break;case"permillToPercent":(0,s.PermillToPercent)(t,n);break;case"arrayLength":(0,s.ArrayLength)(t,n);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(t){var e=t.network,a=t.path,l=t.defaultValue,i=t.filter,s=void 0===i?void 0:i,k=(0,r.useState)(""),p=k[0],d=k[1];return e=e.toLowerCase(),(0,r.useEffect)((function(){void 0!==s?c(l.toString(),s,e,d):d(l.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://statemine-rpc.polkadot.io/";break;case"statemint":t="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var t=(0,o.Z)((0,n.Z)().mark((function t(){var o;return(0,n.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u(e,a,d);case 2:if(void 0!==(o=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==s?c(o,s,e,d):d(o);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:t=>{var e="polkadot",a="kusama",n="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,l,i){var s=void 0;if(l===e||l===o)s=3;else{if(l!==a&&l!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=6}t=parseFloat(t),i((t=Number.isInteger(t/r[l].precision)?t/r[l].precision+" "+r[l].symbol:(t/r[l].precision).toFixed(s)+" "+r[l].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/r[e].precision+" "+r[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,r,l){var i=void 0;if(l===e||l===o)i=1;else{if(l!==a&&l!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((t/=i).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},64204:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>u,default:()=>m,frontMatter:()=>s,metadata:()=>k,toc:()=>p});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),l=a(47940),i=["components"],s={id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},u=void 0,k={unversionedId:"learn/learn-DOT",id:"learn/learn-DOT",title:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",source:"@site/../docs/learn/learn-DOT.md",sourceDirName:"learn",slug:"/learn-DOT",permalink:"/docs/learn-DOT",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-DOT.md",tags:[],version:"current",lastUpdatedBy:"Radha",lastUpdatedAt:1704997477,formattedLastUpdatedAt:"Jan 11, 2024",frontMatter:{id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},sidebar:"docs",previous:{title:"Asset Hub",permalink:"/docs/learn-assets"},next:{title:"Token Inflation",permalink:"/docs/learn-inflation"}},c={},p=[{value:"What is DOT?",id:"what-is-dot",level:2},{value:"The Planck Unit",id:"the-planck-unit",level:3},{value:"Polkadot",id:"polkadot",level:3},{value:"Kusama",id:"kusama",level:3},{value:"What are the uses of DOT?",id:"what-are-the-uses-of-dot",level:2},{value:"DOT for Governance",id:"dot-for-governance",level:3},{value:"DOT for Consensus",id:"dot-for-consensus",level:3},{value:"DOT for Parachain Slot Acquisition",id:"dot-for-parachain-slot-acquisition",level:3},{value:"Token Issuance",id:"token-issuance",level:3},{value:"Total Issuance",id:"total-issuance",level:4},{value:"Inactive Issuance",id:"inactive-issuance",level:4},{value:"Active Issuance",id:"active-issuance",level:4},{value:"Obtaining Testnet Tokens",id:"obtaining-testnet-tokens",level:2},{value:"Getting Tokens on the Westend Testnet",id:"getting-tokens-on-the-westend-testnet",level:3},{value:"Getting Tokens on the Rococo Testnet",id:"getting-tokens-on-the-rococo-testnet",level:3},{value:"Faucets support",id:"faucets-support",level:3},{value:"Kusama Tokens",id:"kusama-tokens",level:2},{value:"Polkadot Mainnet DOT",id:"polkadot-mainnet-dot",level:2}],d={toc:p},h="wrapper";function m(t){var e=t.components,a=(0,o.Z)(t,i);return(0,r.kt)(h,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"what-is-dot"},"What is DOT?"),(0,r.kt)("p",null,"DOT is the native token of the Polkadot network in a similar way that BTC is the native token of\nBitcoin or Ether is the native token of the Ethereum blockchain."),(0,r.kt)("h3",{id:"the-planck-unit"},"The Planck Unit"),(0,r.kt)("p",null,"The smallest unit for the account balance on Substrate based blockchains (Polkadot, Kusama, etc.) is\nPlanck (a reference to ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Planck_length"},"Planck Length"),", the smallest\npossible distance in the physical Universe). You can compare DOT's Planck to BTC's Satoshi or ETH's\nWei. Polkadot's native token DOT equals to 10",(0,r.kt)("sup",null,"10")," Planck and Kusama's native token KSM\nequals to 10",(0,r.kt)("sup",null,"12")," Planck."),(0,r.kt)("h3",{id:"polkadot"},"Polkadot"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Unit"),(0,r.kt)("th",{parentName:"tr",align:null},"Decimal Places"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to Planck"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to DOT"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0"),(0,r.kt)("td",{parentName:"tr",align:null},"1 Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.0000000001 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Microdot (uDOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"4"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"4")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.0000010000 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Millidot (mDOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"7"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"7")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.0010000000 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Dot (DOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"10"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"10")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1.0000000000 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Million (MDOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"16"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"16")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1,000,000.00 DOT")))),(0,r.kt)("admonition",{title:"DOT was redenominated at block #1_248_328",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"DOT was originally equal to 10",(0,r.kt)("sup",null,"12"),' Planck just like Kusama (which is referred to as "DOT\n(old)"), but went through a process of ',(0,r.kt)("a",{parentName:"p",href:"/docs/learn-redenomination"},"redenomination")," which increased\nDOT's supply by 100x. As a consequence, 1 DOT now equals to 10",(0,r.kt)("sup",null,"10")," Planck.")),(0,r.kt)("h3",{id:"kusama"},"Kusama"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Unit"),(0,r.kt)("th",{parentName:"tr",align:null},"Decimal Places"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to Planck"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to KSM"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0"),(0,r.kt)("td",{parentName:"tr",align:null},"1 Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000000001 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Point"),(0,r.kt)("td",{parentName:"tr",align:null},"3"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"3")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000001000 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MicroKSM (uKSM)"),(0,r.kt)("td",{parentName:"tr",align:null},"6"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"6")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000001000000 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MilliKSM (mKSM)"),(0,r.kt)("td",{parentName:"tr",align:null},"9"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"9")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.001000000000 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"KSM"),(0,r.kt)("td",{parentName:"tr",align:null},"12"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"12")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1.000000000000 KSM")))),(0,r.kt)("h2",{id:"what-are-the-uses-of-dot"},"What are the uses of DOT?"),(0,r.kt)("p",null,"DOT serves three key functions in Polkadot:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"to be used for governance of the network,"),(0,r.kt)("li",{parentName:"ul"},"to be staked for the operation of the network,"),(0,r.kt)("li",{parentName:"ul"},"to be bonded to connect a chain to Polkadot as a parachain.")),(0,r.kt)("p",null,"DOT can also serve ancillary functions by being a transferrable token. For example, DOT stored in\nthe Treasury can be sent to teams working on relevant projects for the Polkadot network."),(0,r.kt)("admonition",{title:"Explainer video on token utility",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"These concepts have been further explained in the video\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=POfFgrMfkTo&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=7"},"Usage of DOT and KSM on Polkadot and Kusama"),".")),(0,r.kt)("h3",{id:"dot-for-governance"},"DOT for Governance"),(0,r.kt)("p",null,"The first function of DOT is to entitle holders to control the governance of the platform. Some\nfunctions that are included under the governance mechanism include determining the fees of the\nnetwork, the addition or removal of parachains, and exceptional events such as upgrades and fixes to\nthe Polkadot platform."),(0,r.kt)("p",null,"Polkadot will enable any holder of DOT to participate in governance. For details on how holders can\nparticipate in governance, as well as their rights and responsibilities, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"governance page"),"."),(0,r.kt)("h3",{id:"dot-for-consensus"},"DOT for Consensus"),(0,r.kt)("p",null,"DOT will be used to facilitate the consensus mechanism that underpins Polkadot. For the platform to\nfunction and allow for valid transactions to be carried out across parachains, Polkadot will rely on\nholders of DOT to play active roles. Participants will put their DOT at risk (via staking) to\nperform these functions. The staking of DOT acts as a disincentive for malicious participants who\nwill be punished by the network by getting their DOT slashed. The DOT required to participate in the\nnetwork will vary depending on the activity that is being performed, the duration the DOT will be\nstaked for, and the total number of DOT staked. For more information about staking on Polkadot visit\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"the dedicated staking page"),"."),(0,r.kt)("h3",{id:"dot-for-parachain-slot-acquisition"},"DOT for Parachain Slot Acquisition"),(0,r.kt)("p",null,"DOT will have the ability to be locked for a duration in order to secure a parachain slot in the\nnetwork. The DOT will be reserved during the slot lease and will be released back to the account\nthat reserved them after the duration of the lease has elapsed and the parachain is removed. You can\nlearn more about this aspect by reading about the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"auctions")," that govern parachain\nslots."),(0,r.kt)("h3",{id:"token-issuance"},"Token Issuance"),(0,r.kt)("h4",{id:"total-issuance"},"Total Issuance"),(0,r.kt)("p",null,"It is the total number of token units in existence on the network."),(0,r.kt)("admonition",{title:"On-chain data for reference",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The total issuance is\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.balances.totalIssuance",defaultValue:"13557639805348170350",filter:"humanReadable",mdxType:"RPC"}),"\n","\nin the era\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.staking.currentEra",defaultValue:"1200",mdxType:"RPC"}),".\n","")),(0,r.kt)("h4",{id:"inactive-issuance"},"Inactive Issuance"),(0,r.kt)("p",null,"It is the total units of outstanding deactivated balance on the network that cannot be used for\nparticipation in governance. This comprises tokens locked away in crowdloans and nomination pools."),(0,r.kt)("admonition",{title:"On-chain data for reference",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The inactive issuance is\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.balances.inactiveIssuance",defaultValue:"1784854324418488473",filter:"humanReadable",mdxType:"RPC"}),"\n","\nin the era\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.staking.currentEra",defaultValue:"1200",mdxType:"RPC"}),".\n","")),(0,r.kt)("h4",{id:"active-issuance"},"Active Issuance"),(0,r.kt)("p",null,"Active issuance = Total issuance - Inactive issuance"),(0,r.kt)("p",null,"All the tokens under active issuance are can be used to participate in the governance on-chain."),(0,r.kt)("h2",{id:"obtaining-testnet-tokens"},"Obtaining Testnet Tokens"),(0,r.kt)("p",null,"DOT are required to make transactions on the Polkadot network. Tokens on Polkadot's Testnets like\nWestend and Rococo do not have any value besides allowing you to experiment with the features on the\nnetwork."),(0,r.kt)("h3",{id:"getting-tokens-on-the-westend-testnet"},"Getting Tokens on the Westend Testnet"),(0,r.kt)("p",null,"Polkadot's testnet is called ",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-networks#westend-test-network"},"Westend")," and\nyou can obtain its native tokens (called Westies!) by posting ",(0,r.kt)("inlineCode",{parentName:"p"},"!drip ")," in the\nMatrix chatroom ",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#westend_faucet:matrix.org"},"#westend_faucet:matrix.org"),". Your\naccount will be credited with 1 WND by default. You can also specify to get more tokens by\n",(0,r.kt)("inlineCode",{parentName:"p"},"!drip X"),", where X is the number of tokens."),(0,r.kt)("p",null,"Another way is to use our web-based\n",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot-testnet-faucet/westend"},"Westend faucet"),"."),(0,r.kt)("p",null,"You can also earn WNDs as rewards by ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-validator"},"becoming a validator")," on Westend network.\nWatch the video below on how to get started on Westend."),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=0ji0ccZyb3k"},(0,r.kt)("img",{parentName:"a",src:"https://img.youtube.com/vi/0ji0ccZyb3k/0.jpg",alt:"Testing Polkadot features on Westend"}))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Unit"),(0,r.kt)("th",{parentName:"tr",align:null},"Decimal Places"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to Planck"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to WND"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0"),(0,r.kt)("td",{parentName:"tr",align:null},"1 Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000000001 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Point"),(0,r.kt)("td",{parentName:"tr",align:null},"3"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"3")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000001000 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MicroWND (uWND)"),(0,r.kt)("td",{parentName:"tr",align:null},"6"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"6")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000001000000 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MilliWND (mWND)"),(0,r.kt)("td",{parentName:"tr",align:null},"9"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"9")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.001000000000 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"WND"),(0,r.kt)("td",{parentName:"tr",align:null},"12"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"12")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1.000000000000 WND")))),(0,r.kt)("h3",{id:"getting-tokens-on-the-rococo-testnet"},"Getting Tokens on the Rococo Testnet"),(0,r.kt)("p",null,"Rococo is a parachain testnet. Tokens are given directly to teams working on parachains or exploring\nthe ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-xcm"},"cross consensus")," message-passing aspects of this testnet. General users can\nobtain ROC by posting ",(0,r.kt)("inlineCode",{parentName:"p"},"!drip ")," in the Matrix chatroom\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#rococo-faucet:matrix.org"},"#rococo-faucet:matrix.org")," or through the web-based\n",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot-testnet-faucet/"},"Rococo faucet"),". Learn more about Rococo on\nits ",(0,r.kt)("a",{parentName:"p",href:"/docs/build-pdk##testing-a-parachains:-rococo-testnet"},"dedicated wiki section"),"."),(0,r.kt)("h3",{id:"faucets-support"},"Faucets support"),(0,r.kt)("p",null,"If you require help with using faucets, or wish to report an issue, there is a support chat\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#faucets-support:matrix.org"},"#faucets-support:matrix.org"),", or you can\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-testnet-faucet/issues/new/choose"},"create an issue")," directly\nin the faucets repo"),(0,r.kt)("h2",{id:"kusama-tokens"},"Kusama Tokens"),(0,r.kt)("p",null,"Unlike testnet DOT, Kusama tokens are not freely given away. Kusama tokens are available via the\n",(0,r.kt)("a",{parentName:"p",href:"https://claim.kusama.network/"},"claims process")," (if you had DOT at the time of Kusama genesis) or\nthrough the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-treasury"},"Treasury"),". Alternatively, they can be obtained on the open market."),(0,r.kt)("h2",{id:"polkadot-mainnet-dot"},"Polkadot Mainnet DOT"),(0,r.kt)("p",null,"Polkadot Mainnet DOT are not freely given away. If you purchased DOT in the original 2017 offering,\nyou may claim them via the ",(0,r.kt)("a",{parentName:"p",href:"https://claims.polkadot.network/"},"Polkadot claims process"),".\nAlternatively, they are available on the open market."))}m.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/ffe9c3c9.72c67a2d.js b/assets/js/ffe9c3c9.72c67a2d.js new file mode 100644 index 000000000000..194d64881847 --- /dev/null +++ b/assets/js/ffe9c3c9.72c67a2d.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[1529],{47940:(t,e,a)=>{"use strict";a.d(e,{Z:()=>p});var n=a(74165),o=a(15861),r=a(67294),l=a(87152),i=a(30967),s=a(67425);function u(t,e,a){return k.apply(this,arguments)}function k(){return(k=(0,o.Z)((0,n.Z)().mark((function t(e,a,o){var r,s,u,k,c;return(0,n.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:r=void 0,s=void 0,t.t0=e,t.next="polkadot"===t.t0?5:"kusama"===t.t0?7:"statemine"===t.t0?9:"statemint"===t.t0?11:13;break;case 5:return r="wss://rpc.polkadot.io",t.abrupt("break",14);case 7:return r="wss://kusama-rpc.polkadot.io/",t.abrupt("break",14);case 9:return r="wss://statemine-rpc.polkadot.io/",t.abrupt("break",14);case 11:return r="wss://statemint-rpc.polkadot.io/",t.abrupt("break",14);case 13:console.log("Unknown socket url provided, no connection made.");case 14:if(void 0!==r){t.next=18;break}return t.abrupt("return");case 18:return u=new l.U(r),t.next=21,i.G.create({provider:u});case 21:k=t.sent,(c=a.split(".")).forEach((function(t){t in k&&(k=k[t])})),t.t1=c[0],t.next="consts"===t.t1?27:"query"===t.t1?29:34;break;case 27:return s=k.toString(),t.abrupt("break",35);case 29:return t.next=31,k();case 31:return s=(s=t.sent).toString(),t.abrupt("break",35);case 34:console.log("Unknown path prefix ("+c[0]+") in "+a);case 35:return t.abrupt("return",s);case 36:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function c(t,e,a,n){switch(e){case"humanReadable":(0,s.HumanReadable)(t,a,n);break;case"precise":(0,s.Precise)(t,a,n);break;case"blocksToDays":(0,s.BlocksToDays)(t,n);break;case"erasToDays":(0,s.ErasToDays)(t,n,a);break;case"percentage":(0,s.Percentage)(t,n);break;case"permillToPercent":(0,s.PermillToPercent)(t,n);break;case"arrayLength":(0,s.ArrayLength)(t,n);break;default:return void console.log("Ignoring unknown filter type")}}const p=function(t){var e=t.network,a=t.path,l=t.defaultValue,i=t.filter,s=void 0===i?void 0:i,k=(0,r.useState)(""),p=k[0],d=k[1];return e=e.toLowerCase(),(0,r.useEffect)((function(){void 0!==s?c(l.toString(),s,e,d):d(l.toString());var t=void 0;switch(e){case"polkadot":t="wss://rpc.polkadot.io";break;case"kusama":t="wss://kusama-rpc.polkadot.io/";break;case"statemine":t="wss://statemine-rpc.polkadot.io/";break;case"statemint":t="wss://statemint-rpc.polkadot.io/";break;default:console.log("Unknown network provided, "+e)}if(void 0===t)console.log("Failed to connect to a valid websocket, applying default");else{var r=function(){var t=(0,o.Z)((0,n.Z)().mark((function t(){var o;return(0,n.Z)().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,u(e,a,d);case 2:if(void 0!==(o=t.sent)){t.next=7;break}return t.abrupt("return");case 7:void 0!==s?c(o,s,e,d):d(o);case 8:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}();try{r()}catch(i){console.log(i)}}}),[]),p}},67425:t=>{var e="polkadot",a="kusama",n="statemine",o="statemint",r={polkadot:{precision:1e10,symbol:"DOT"},kusama:{precision:1e12,symbol:"KSM"},statemint:{precision:1e10,symbol:"DOT"},statemine:{precision:1e12,symbol:"KSM"}};t.exports={HumanReadable:function(t,l,i){var s=void 0;if(l===e||l===o)s=3;else{if(l!==a&&l!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");s=6}t=parseFloat(t),i((t=Number.isInteger(t/r[l].precision)?t/r[l].precision+" "+r[l].symbol:(t/r[l].precision).toFixed(s)+" "+r[l].symbol).toString())},Precise:function(t,e,a){a(t=(t=parseFloat(t))/r[e].precision+" "+r[e].symbol)},BlocksToDays:function(t,e){e((t=6*t/86400).toString())},ErasToDays:function(t,r,l){var i=void 0;if(l===e||l===o)i=1;else{if(l!==a&&l!==n)return void console.log("Unknown network type found when attempting to apply 'Human Readable' filter");i=4}r((t/=i).toString())},Percentage:function(t,e){e((t/=1e7).toString())},PermillToPercent:function(t,e){e((t/=1e4).toString())},ArrayLength:function(t,e){e((t=t.split(",").length).toString())}}},64204:(t,e,a)=>{"use strict";a.r(e),a.d(e,{assets:()=>c,contentTitle:()=>u,default:()=>m,frontMatter:()=>s,metadata:()=>k,toc:()=>p});var n=a(87462),o=a(63366),r=(a(67294),a(3905)),l=a(47940),i=["components"],s={id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},u=void 0,k={unversionedId:"learn/learn-DOT",id:"learn/learn-DOT",title:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",source:"@site/../docs/learn/learn-DOT.md",sourceDirName:"learn",slug:"/learn-DOT",permalink:"/docs/learn-DOT",draft:!1,editUrl:"https://github.com/w3f/polkadot-wiki/edit/master/docs/learn/learn-DOT.md",tags:[],version:"current",lastUpdatedBy:"Filippo",lastUpdatedAt:1705420507,formattedLastUpdatedAt:"Jan 16, 2024",frontMatter:{id:"learn-DOT",title:"DOT",sidebar_label:"DOT",description:"Tokenomics of Polkadot's Native Token DOT.",keywords:["token","DOT","what are the uses of DOT","KSM","faucet"],slug:"../learn-DOT"},sidebar:"docs",previous:{title:"Asset Hub",permalink:"/docs/learn-assets"},next:{title:"Token Inflation",permalink:"/docs/learn-inflation"}},c={},p=[{value:"What is DOT?",id:"what-is-dot",level:2},{value:"The Planck Unit",id:"the-planck-unit",level:3},{value:"Polkadot",id:"polkadot",level:3},{value:"Kusama",id:"kusama",level:3},{value:"What are the uses of DOT?",id:"what-are-the-uses-of-dot",level:2},{value:"DOT for Governance",id:"dot-for-governance",level:3},{value:"DOT for Consensus",id:"dot-for-consensus",level:3},{value:"DOT for Parachain Slot Acquisition",id:"dot-for-parachain-slot-acquisition",level:3},{value:"Token Issuance",id:"token-issuance",level:3},{value:"Total Issuance",id:"total-issuance",level:4},{value:"Inactive Issuance",id:"inactive-issuance",level:4},{value:"Active Issuance",id:"active-issuance",level:4},{value:"Obtaining Testnet Tokens",id:"obtaining-testnet-tokens",level:2},{value:"Getting Tokens on the Westend Testnet",id:"getting-tokens-on-the-westend-testnet",level:3},{value:"Getting Tokens on the Rococo Testnet",id:"getting-tokens-on-the-rococo-testnet",level:3},{value:"Faucets support",id:"faucets-support",level:3},{value:"Kusama Tokens",id:"kusama-tokens",level:2},{value:"Polkadot Mainnet DOT",id:"polkadot-mainnet-dot",level:2}],d={toc:p},h="wrapper";function m(t){var e=t.components,a=(0,o.Z)(t,i);return(0,r.kt)(h,(0,n.Z)({},d,a,{components:e,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"what-is-dot"},"What is DOT?"),(0,r.kt)("p",null,"DOT is the native token of the Polkadot network in a similar way that BTC is the native token of\nBitcoin or Ether is the native token of the Ethereum blockchain."),(0,r.kt)("h3",{id:"the-planck-unit"},"The Planck Unit"),(0,r.kt)("p",null,"The smallest unit for the account balance on Substrate based blockchains (Polkadot, Kusama, etc.) is\nPlanck (a reference to ",(0,r.kt)("a",{parentName:"p",href:"https://en.wikipedia.org/wiki/Planck_length"},"Planck Length"),", the smallest\npossible distance in the physical Universe). You can compare DOT's Planck to BTC's Satoshi or ETH's\nWei. Polkadot's native token DOT equals to 10",(0,r.kt)("sup",null,"10")," Planck and Kusama's native token KSM\nequals to 10",(0,r.kt)("sup",null,"12")," Planck."),(0,r.kt)("h3",{id:"polkadot"},"Polkadot"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Unit"),(0,r.kt)("th",{parentName:"tr",align:null},"Decimal Places"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to Planck"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to DOT"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0"),(0,r.kt)("td",{parentName:"tr",align:null},"1 Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.0000000001 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Microdot (uDOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"4"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"4")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.0000010000 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Millidot (mDOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"7"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"7")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.0010000000 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Dot (DOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"10"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"10")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1.0000000000 DOT")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Million (MDOT)"),(0,r.kt)("td",{parentName:"tr",align:null},"16"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"16")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1,000,000.00 DOT")))),(0,r.kt)("admonition",{title:"DOT was redenominated at block #1_248_328",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"DOT was originally equal to 10",(0,r.kt)("sup",null,"12"),' Planck just like Kusama (which is referred to as "DOT\n(old)"), but went through a process of ',(0,r.kt)("a",{parentName:"p",href:"/docs/learn-redenomination"},"redenomination")," which increased\nDOT's supply by 100x. As a consequence, 1 DOT now equals to 10",(0,r.kt)("sup",null,"10")," Planck.")),(0,r.kt)("h3",{id:"kusama"},"Kusama"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Unit"),(0,r.kt)("th",{parentName:"tr",align:null},"Decimal Places"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to Planck"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to KSM"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0"),(0,r.kt)("td",{parentName:"tr",align:null},"1 Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000000001 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Point"),(0,r.kt)("td",{parentName:"tr",align:null},"3"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"3")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000001000 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MicroKSM (uKSM)"),(0,r.kt)("td",{parentName:"tr",align:null},"6"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"6")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000001000000 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MilliKSM (mKSM)"),(0,r.kt)("td",{parentName:"tr",align:null},"9"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"9")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.001000000000 KSM")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"KSM"),(0,r.kt)("td",{parentName:"tr",align:null},"12"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"12")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1.000000000000 KSM")))),(0,r.kt)("h2",{id:"what-are-the-uses-of-dot"},"What are the uses of DOT?"),(0,r.kt)("p",null,"DOT serves three key functions in Polkadot:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"to be used for governance of the network,"),(0,r.kt)("li",{parentName:"ul"},"to be staked for the operation of the network,"),(0,r.kt)("li",{parentName:"ul"},"to be bonded to connect a chain to Polkadot as a parachain.")),(0,r.kt)("p",null,"DOT can also serve ancillary functions by being a transferrable token. For example, DOT stored in\nthe Treasury can be sent to teams working on relevant projects for the Polkadot network."),(0,r.kt)("admonition",{title:"Explainer video on token utility",type:"note"},(0,r.kt)("p",{parentName:"admonition"},"These concepts have been further explained in the video\n",(0,r.kt)("a",{parentName:"p",href:"https://www.youtube.com/watch?v=POfFgrMfkTo&list=PLOyWqupZ-WGuAuS00rK-pebTMAOxW41W8&index=7"},"Usage of DOT and KSM on Polkadot and Kusama"),".")),(0,r.kt)("h3",{id:"dot-for-governance"},"DOT for Governance"),(0,r.kt)("p",null,"The first function of DOT is to entitle holders to control the governance of the platform. Some\nfunctions that are included under the governance mechanism include determining the fees of the\nnetwork, the addition or removal of parachains, and exceptional events such as upgrades and fixes to\nthe Polkadot platform."),(0,r.kt)("p",null,"Polkadot will enable any holder of DOT to participate in governance. For details on how holders can\nparticipate in governance, as well as their rights and responsibilities, see the\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-polkadot-opengov"},"governance page"),"."),(0,r.kt)("h3",{id:"dot-for-consensus"},"DOT for Consensus"),(0,r.kt)("p",null,"DOT will be used to facilitate the consensus mechanism that underpins Polkadot. For the platform to\nfunction and allow for valid transactions to be carried out across parachains, Polkadot will rely on\nholders of DOT to play active roles. Participants will put their DOT at risk (via staking) to\nperform these functions. The staking of DOT acts as a disincentive for malicious participants who\nwill be punished by the network by getting their DOT slashed. The DOT required to participate in the\nnetwork will vary depending on the activity that is being performed, the duration the DOT will be\nstaked for, and the total number of DOT staked. For more information about staking on Polkadot visit\n",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-staking"},"the dedicated staking page"),"."),(0,r.kt)("h3",{id:"dot-for-parachain-slot-acquisition"},"DOT for Parachain Slot Acquisition"),(0,r.kt)("p",null,"DOT will have the ability to be locked for a duration in order to secure a parachain slot in the\nnetwork. The DOT will be reserved during the slot lease and will be released back to the account\nthat reserved them after the duration of the lease has elapsed and the parachain is removed. You can\nlearn more about this aspect by reading about the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-auction"},"auctions")," that govern parachain\nslots."),(0,r.kt)("h3",{id:"token-issuance"},"Token Issuance"),(0,r.kt)("h4",{id:"total-issuance"},"Total Issuance"),(0,r.kt)("p",null,"It is the total number of token units in existence on the network."),(0,r.kt)("admonition",{title:"On-chain data for reference",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The total issuance is\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.balances.totalIssuance",defaultValue:"13557639805348170350",filter:"humanReadable",mdxType:"RPC"}),"\n","\nin the era\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.staking.currentEra",defaultValue:"1200",mdxType:"RPC"}),".\n","")),(0,r.kt)("h4",{id:"inactive-issuance"},"Inactive Issuance"),(0,r.kt)("p",null,"It is the total units of outstanding deactivated balance on the network that cannot be used for\nparticipation in governance. This comprises tokens locked away in crowdloans and nomination pools."),(0,r.kt)("admonition",{title:"On-chain data for reference",type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The inactive issuance is\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.balances.inactiveIssuance",defaultValue:"1784854324418488473",filter:"humanReadable",mdxType:"RPC"}),"\n","\nin the era\n",(0,r.kt)(l.Z,{network:"polkadot",path:"query.staking.currentEra",defaultValue:"1200",mdxType:"RPC"}),".\n","")),(0,r.kt)("h4",{id:"active-issuance"},"Active Issuance"),(0,r.kt)("p",null,"Active issuance = Total issuance - Inactive issuance"),(0,r.kt)("p",null,"All the tokens under active issuance are can be used to participate in the governance on-chain."),(0,r.kt)("h2",{id:"obtaining-testnet-tokens"},"Obtaining Testnet Tokens"),(0,r.kt)("p",null,"DOT are required to make transactions on the Polkadot network. Tokens on Polkadot's Testnets like\nWestend and Rococo do not have any value besides allowing you to experiment with the features on the\nnetwork."),(0,r.kt)("h3",{id:"getting-tokens-on-the-westend-testnet"},"Getting Tokens on the Westend Testnet"),(0,r.kt)("p",null,"Polkadot's testnet is called ",(0,r.kt)("a",{parentName:"p",href:"/docs/maintain-networks#westend-test-network"},"Westend")," and\nyou can obtain its native tokens (called Westies!) by posting ",(0,r.kt)("inlineCode",{parentName:"p"},"!drip ")," in the\nMatrix chatroom ",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#westend_faucet:matrix.org"},"#westend_faucet:matrix.org"),". Your\naccount will be credited with 1 WND by default. You can also specify to get more tokens by\n",(0,r.kt)("inlineCode",{parentName:"p"},"!drip X"),", where X is the number of tokens."),(0,r.kt)("p",null,"Another way is to use our web-based\n",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot-testnet-faucet/westend"},"Westend faucet"),"."),(0,r.kt)("p",null,"You can also earn WNDs as rewards by ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-validator"},"becoming a validator")," on Westend network.\nWatch the video below on how to get started on Westend."),(0,r.kt)("div",{className:"row"},(0,r.kt)("div",{className:"col text--center"},(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=0ji0ccZyb3k"},(0,r.kt)("img",{src:"https://img.youtube.com/vi/0ji0ccZyb3k/0.jpg",width:"350",style:{borderRadius:10,border:"1px solid slategrey"}})),(0,r.kt)("p",null,(0,r.kt)("a",{href:"https://www.youtube.com/watch?v=0ji0ccZyb3k"},"Testing Polkadot features on Westend")))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"Unit"),(0,r.kt)("th",{parentName:"tr",align:null},"Decimal Places"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to Planck"),(0,r.kt)("th",{parentName:"tr",align:null},"Conversion to WND"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0"),(0,r.kt)("td",{parentName:"tr",align:null},"1 Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000000001 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"Point"),(0,r.kt)("td",{parentName:"tr",align:null},"3"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"3")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000000001000 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MicroWND (uWND)"),(0,r.kt)("td",{parentName:"tr",align:null},"6"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"6")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.000001000000 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"MilliWND (mWND)"),(0,r.kt)("td",{parentName:"tr",align:null},"9"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"9")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"0.001000000000 WND")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"WND"),(0,r.kt)("td",{parentName:"tr",align:null},"12"),(0,r.kt)("td",{parentName:"tr",align:null},"10",(0,r.kt)("sup",null,"12")," Planck"),(0,r.kt)("td",{parentName:"tr",align:null},"1.000000000000 WND")))),(0,r.kt)("h3",{id:"getting-tokens-on-the-rococo-testnet"},"Getting Tokens on the Rococo Testnet"),(0,r.kt)("p",null,"Rococo is a parachain testnet. Tokens are given directly to teams working on parachains or exploring\nthe ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-xcm"},"cross consensus")," message-passing aspects of this testnet. General users can\nobtain ROC by posting ",(0,r.kt)("inlineCode",{parentName:"p"},"!drip ")," in the Matrix chatroom\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#rococo-faucet:matrix.org"},"#rococo-faucet:matrix.org")," or through the web-based\n",(0,r.kt)("a",{parentName:"p",href:"https://paritytech.github.io/polkadot-testnet-faucet/"},"Rococo faucet"),". Learn more about Rococo on\nits ",(0,r.kt)("a",{parentName:"p",href:"/docs/build-pdk##testing-a-parachains:-rococo-testnet"},"dedicated wiki section"),"."),(0,r.kt)("h3",{id:"faucets-support"},"Faucets support"),(0,r.kt)("p",null,"If you require help with using faucets, or wish to report an issue, there is a support chat\n",(0,r.kt)("a",{parentName:"p",href:"https://matrix.to/#/#faucets-support:matrix.org"},"#faucets-support:matrix.org"),", or you can\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/paritytech/polkadot-testnet-faucet/issues/new/choose"},"create an issue")," directly\nin the faucets repo"),(0,r.kt)("h2",{id:"kusama-tokens"},"Kusama Tokens"),(0,r.kt)("p",null,"Unlike testnet DOT, Kusama tokens are not freely given away. Kusama tokens are available via the\n",(0,r.kt)("a",{parentName:"p",href:"https://claim.kusama.network/"},"claims process")," (if you had DOT at the time of Kusama genesis) or\nthrough the ",(0,r.kt)("a",{parentName:"p",href:"/docs/learn-treasury"},"Treasury"),". Alternatively, they can be obtained on the open market."),(0,r.kt)("h2",{id:"polkadot-mainnet-dot"},"Polkadot Mainnet DOT"),(0,r.kt)("p",null,"Polkadot Mainnet DOT are not freely given away. If you purchased DOT in the original 2017 offering,\nyou may claim them via the ",(0,r.kt)("a",{parentName:"p",href:"https://claims.polkadot.network/"},"Polkadot claims process"),".\nAlternatively, they are available on the open market."))}m.isMDXComponent=!0},46601:()=>{}}]); \ No newline at end of file diff --git a/assets/js/runtime~main.35f21b20.js b/assets/js/runtime~main.ad96e35f.js similarity index 92% rename from assets/js/runtime~main.35f21b20.js rename to assets/js/runtime~main.ad96e35f.js index e2802e5ed53b..db012520aecd 100644 --- a/assets/js/runtime~main.35f21b20.js +++ b/assets/js/runtime~main.ad96e35f.js @@ -1 +1 @@ -(()=>{"use strict";var e,d,f,a,b={},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 b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,e=[],r.O=(d,f,a,b)=>{if(!f){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,a,b]},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,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};d=d||[null,f({}),f([]),f(f)];for(var t=2&a&&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(b,c),b},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",150:"77c23c97",192:"f189ca9f",217:"c7a044bb",250:"f2717f8e",315:"9528ac88",356:"797239df",502:"2d429218",537:"3829cf1d",576:"f52abf29",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",3643:"cb9afd28",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",4338:"84ede15a",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",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",7584:"98a431f4",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",8115:"8247eba8",8138:"694672cd",8139:"386099fc",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",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",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:"54b24b97",12:"9f327517",43:"c0a56a28",53:"389f5ac0",63:"4e5acc1b",150:"6cd9bdbf",192:"2ac0e4f9",217:"0102c432",250:"11cfd82d",315:"5a1a76c0",356:"220d0258",502:"3789530f",537:"2aa85719",576:"6b344346",601:"6806af70",609:"7ea29085",657:"f5513d14",691:"74ddc873",810:"f27faee3",1062:"e04ac837",1083:"ac5baa92",1090:"26932415",1211:"84a813cb",1213:"fee6731f",1239:"5f1e8cea",1288:"3482a532",1299:"7dda7011",1372:"44b4d9b2",1415:"68f49da4",1419:"7ba32ca0",1426:"ad86846c",1446:"2265d608",1451:"22c866a1",1486:"1ebf6ec0",1494:"b887110e",1506:"c56070c7",1529:"4e348b64",1585:"e1ec66d3",1598:"c2253902",1678:"b3589c09",1686:"ce7ae0b6",1703:"62855a55",1723:"86de2f74",1748:"61758801",1774:"1c405b46",1786:"6a2d15ec",1825:"c534a999",1872:"342366ba",1953:"e4392cf0",1957:"d99c9092",1966:"70e3ff3a",1979:"6d282955",2008:"32bb0efa",2042:"ff9cf19a",2078:"17164550",2117:"0678ac75",2119:"68b7dfbe",2136:"dbf5ae7f",2169:"1a16bf38",2194:"8cc30adb",2242:"f254b300",2248:"51e116c1",2354:"25f75ea0",2399:"97692e37",2483:"47c545c2",2507:"1df35914",2508:"b4c49d3b",2552:"6484aed3",2581:"5db8f1b8",2609:"c959d9e0",2633:"52d5c353",2635:"830edb6d",2665:"c197c6c2",2677:"0f328283",2704:"c83746c5",2712:"cbbda940",2749:"9a8b4034",2754:"82d7eade",2758:"7a12fb0f",2791:"19a933a8",2884:"3b223315",2909:"5449596f",2914:"ace15b40",2949:"7738f0eb",3066:"2d6ba895",3091:"49ed30e6",3132:"85a16703",3262:"9288e4b5",3330:"f8f9d28c",3332:"59059207",3347:"bc5aa7bf",3348:"32c50c47",3356:"6ee81354",3452:"daca79b0",3484:"e60b3258",3513:"ed690a14",3554:"6dc12371",3599:"3cf04fd0",3620:"289ad75c",3643:"74198f90",3665:"fb1d42b5",3667:"48d84111",3668:"b34aa74c",3669:"1aa1629f",3757:"636d9b7e",3837:"7aa1b869",3842:"e6053c41",3933:"074bfdbb",3945:"2cb20b84",3978:"156c7716",4004:"03a19c6b",4097:"e39eee97",4105:"5e24a8e9",4126:"13497fc3",4143:"b9cd4b75",4174:"d074f050",4195:"e4766880",4325:"2eb61da6",4338:"92d49f53",4355:"2d9fa8b7",4363:"3d90cfe3",4379:"2d13fe17",4428:"60163a9e",4445:"75e079a4",4476:"c64cea00",4507:"25264040",4537:"b4b375dd",4541:"978ae83c",4566:"ab0d60ad",4620:"1fa1d4bf",4634:"19df48c8",4666:"abf3d2b4",4672:"1f4a5801",4825:"36571112",4885:"68afaf38",4909:"3ae4713d",4916:"4b3a7688",4972:"2c004fcc",5005:"20bc3398",5011:"98b0975e",5013:"00541302",5103:"3f268ad3",5157:"899f2267",5281:"6761b31b",5422:"30e3a253",5483:"eedb7554",5492:"7b10a32b",5526:"ad82cb49",5548:"e68f018e",5651:"701df6e6",5704:"70bd0ba6",5989:"0b1cb12b",6104:"3442ab79",6110:"0933da80",6140:"2e6779d0",6220:"8b344451",6253:"fe535738",6255:"8509f60e",6277:"0a2828ba",6286:"2d39bee6",6294:"b077023f",6312:"6138d82c",6316:"24db8bc9",6325:"9fcf1b01",6357:"de0a02d5",6373:"b8a24443",6482:"502a0b67",6495:"66df9496",6585:"eac6bda7",6598:"5f760aa9",6673:"4c461033",6687:"65686742",6689:"59e9d181",6730:"f8bc8fb3",6776:"0a7bd7c5",6779:"78c472da",6827:"9584a1c6",6862:"1ab7f2a1",6918:"61dac2e1",6920:"1253370e",6945:"96d36007",6946:"62348511",7022:"fea426f7",7061:"89e327b0",7202:"df3bbe8c",7211:"ea4c7021",7280:"47e41d56",7288:"995d5f1d",7313:"196896d2",7368:"809981c2",7388:"53d48c10",7466:"6c38d255",7485:"54197f47",7584:"4ed84727",7633:"b6985db0",7654:"3c0e212d",7683:"d3462a4d",7714:"f83eb498",7724:"2906ce0b",7778:"8da5b4da",7799:"88bce1a8",7823:"6c8a30f2",7830:"a2703576",7837:"e772d597",7858:"f9862ed2",7908:"0da511b2",7918:"916bc4d8",7920:"16d7152d",7940:"f7aae43c",7961:"05b141e2",8034:"dca0d1af",8047:"ce7a90ea",8067:"af36ecc3",8115:"2ebb714e",8138:"408bfd7d",8139:"3f5fcf2e",8178:"62f5ed0b",8191:"6ed11001",8215:"775d309b",8236:"63fecdb9",8270:"37d9cdce",8355:"c718131d",8361:"7e27723e",8444:"d1bb4e6e",8609:"39674500",8648:"fd581bf9",8702:"bd9f5fa0",8757:"4f1ee155",8791:"9640365f",8831:"ec7cac70",8855:"9d00af7a",8860:"48171767",8866:"4bdda915",8876:"a30609d2",8894:"ba661129",8901:"cc3ae736",9062:"b5c6d62c",9071:"c0edb4c9",9112:"38b794db",9126:"f0242db8",9217:"697f935c",9226:"f438bce2",9247:"3b67c817",9276:"5fcd6da7",9315:"d5006aa3",9323:"faa9a3ec",9447:"7fe27ee6",9478:"44736e74",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),a={},r.l=(e,d,f,b)=>{if(a[e])a[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 b=a[e];if(delete a[e],c.parentNode&&c.parentNode.removeChild(c),b&&b.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","77c23c97":"150",f189ca9f:"192",c7a044bb:"217",f2717f8e:"250","9528ac88":"315","797239df":"356","2d429218":"502","3829cf1d":"537",f52abf29:"576","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",cb9afd28:"3643",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","84ede15a":"4338","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","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","98a431f4":"7584",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","8247eba8":"8115","694672cd":"8138","386099fc":"8139","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609","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",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 a=r.o(e,d)?e[d]:void 0;if(0!==a)if(a)f.push(a[2]);else if(/^(1303|532)$/.test(d))e[d]=0;else{var b=new Promise(((f,b)=>a=e[d]=[f,b]));f.push(a[2]=b);var c=r.p+r.u(d),t=new Error;r.l(c,(f=>{if(r.o(e,d)&&(0!==(a=e[d])&&(e[d]=void 0),a)){var b=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+d+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,a[1](t)}}),"chunk-"+d,d)}},r.O.j=d=>0===e[d];var d=(d,f)=>{var a,b,[c,t,o]=f,n=0;if(c.some((d=>0!==e[d]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);if(o)var i=o(r)}for(d&&d(f);n{"use strict";var e,d,f,a,b={},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 b[e].call(f.exports,f,f.exports,r),f.loaded=!0,f.exports}r.m=b,e=[],r.O=(d,f,a,b)=>{if(!f){var c=1/0;for(i=0;i=b)&&Object.keys(r.O).every((e=>r.O[e](f[o])))?f.splice(o--,1):(t=!1,b0&&e[i-1][2]>b;i--)e[i]=e[i-1];e[i]=[f,a,b]},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,a){if(1&a&&(e=this(e)),8&a)return e;if("object"==typeof e&&e){if(4&a&&e.__esModule)return e;if(16&a&&"function"==typeof e.then)return e}var b=Object.create(null);r.r(b);var c={};d=d||[null,f({}),f([]),f(f)];for(var t=2&a&&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(b,c),b},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",150:"77c23c97",192:"f189ca9f",217:"c7a044bb",250:"f2717f8e",315:"9528ac88",356:"797239df",502:"2d429218",537:"3829cf1d",576:"f52abf29",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",3643:"cb9afd28",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",4338:"84ede15a",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",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",7584:"98a431f4",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",8115:"8247eba8",8138:"694672cd",8139:"386099fc",8178:"9a679a70",8191:"f0ff685a",8215:"30d868e8",8236:"ffd76171",8270:"12331e8b",8355:"c91a9c06",8361:"824749c6",8444:"28b84bbb",8609:"ed3409b3",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",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:"54b24b97",12:"9f327517",43:"c0a56a28",53:"389f5ac0",63:"4e5acc1b",150:"6cd9bdbf",192:"2ac0e4f9",217:"0102c432",250:"11cfd82d",315:"1fbe91c6",356:"220d0258",502:"3789530f",537:"2aa85719",576:"6b344346",601:"6806af70",609:"7ea29085",657:"f5513d14",691:"74ddc873",810:"f27faee3",1062:"e04ac837",1083:"ac5baa92",1090:"26932415",1211:"84a813cb",1213:"fee6731f",1239:"5f1e8cea",1288:"3482a532",1299:"7dda7011",1372:"44b4d9b2",1415:"68f49da4",1419:"7ba32ca0",1426:"ad86846c",1446:"2265d608",1451:"168bea6c",1486:"1ebf6ec0",1494:"b887110e",1506:"c56070c7",1529:"72c67a2d",1585:"e1ec66d3",1598:"c2253902",1678:"b3589c09",1686:"ce7ae0b6",1703:"62855a55",1723:"86de2f74",1748:"61758801",1774:"1c405b46",1786:"6a2d15ec",1825:"c534a999",1872:"342366ba",1953:"e4392cf0",1957:"d99c9092",1966:"70e3ff3a",1979:"6d282955",2008:"32bb0efa",2042:"2483fb69",2078:"17164550",2117:"0678ac75",2119:"783b1699",2136:"dbf5ae7f",2169:"1a16bf38",2194:"8cc30adb",2242:"f254b300",2248:"51e116c1",2354:"25f75ea0",2399:"97692e37",2483:"47c545c2",2507:"1df35914",2508:"b4c49d3b",2552:"6484aed3",2581:"5db8f1b8",2609:"c959d9e0",2633:"52d5c353",2635:"830edb6d",2665:"c197c6c2",2677:"0f328283",2704:"c83746c5",2712:"d084caff",2749:"9a8b4034",2754:"82d7eade",2758:"7a12fb0f",2791:"19a933a8",2884:"3b223315",2909:"5449596f",2914:"ace15b40",2949:"7738f0eb",3066:"2d6ba895",3091:"49ed30e6",3132:"85a16703",3262:"9288e4b5",3330:"f8f9d28c",3332:"59059207",3347:"bc5aa7bf",3348:"32c50c47",3356:"6ee81354",3452:"daca79b0",3484:"e60b3258",3513:"ed690a14",3554:"6dc12371",3599:"3cf04fd0",3620:"289ad75c",3643:"74198f90",3665:"fb1d42b5",3667:"48d84111",3668:"b34aa74c",3669:"1aa1629f",3757:"636d9b7e",3837:"7aa1b869",3842:"e6053c41",3933:"074bfdbb",3945:"2cb20b84",3978:"156c7716",4004:"03a19c6b",4097:"e39eee97",4105:"5e24a8e9",4126:"13497fc3",4143:"c3bc51cc",4174:"d074f050",4195:"e4766880",4325:"2eb61da6",4338:"92d49f53",4355:"2d9fa8b7",4363:"3d90cfe3",4379:"2d13fe17",4428:"60163a9e",4445:"75e079a4",4476:"c64cea00",4507:"f1de04f5",4537:"b4b375dd",4541:"978ae83c",4566:"ab0d60ad",4620:"1fa1d4bf",4634:"19df48c8",4666:"abf3d2b4",4672:"1f4a5801",4825:"36571112",4885:"68afaf38",4909:"3ae4713d",4916:"4b3a7688",4972:"2c004fcc",5005:"20bc3398",5011:"98b0975e",5013:"00541302",5103:"3f268ad3",5157:"a57342ae",5281:"6761b31b",5422:"30e3a253",5483:"eedb7554",5492:"7b10a32b",5526:"ad82cb49",5548:"e68f018e",5651:"701df6e6",5704:"70bd0ba6",5989:"0b1cb12b",6104:"3442ab79",6110:"0933da80",6140:"93e20266",6220:"8b344451",6253:"fe535738",6255:"8509f60e",6277:"0a2828ba",6286:"2d39bee6",6294:"b077023f",6312:"6138d82c",6316:"24db8bc9",6325:"9fcf1b01",6357:"de0a02d5",6373:"b8a24443",6482:"502a0b67",6495:"66df9496",6585:"eb7aa9cb",6598:"5f760aa9",6673:"4c461033",6687:"65686742",6689:"20204449",6730:"f8bc8fb3",6776:"0a7bd7c5",6779:"78c472da",6827:"9584a1c6",6862:"1ab7f2a1",6918:"61dac2e1",6920:"1253370e",6945:"96d36007",6946:"62348511",7022:"fea426f7",7061:"89e327b0",7202:"df3bbe8c",7211:"ea4c7021",7280:"47e41d56",7288:"995d5f1d",7313:"196896d2",7368:"809981c2",7388:"53d48c10",7466:"6c38d255",7485:"54197f47",7584:"4ed84727",7633:"b6985db0",7654:"3c0e212d",7683:"d3462a4d",7714:"f83eb498",7724:"2906ce0b",7778:"8da5b4da",7799:"88bce1a8",7823:"6c8a30f2",7830:"a2703576",7837:"e772d597",7858:"f9862ed2",7908:"0da511b2",7918:"916bc4d8",7920:"16d7152d",7940:"f7aae43c",7961:"05b141e2",8034:"dca0d1af",8047:"ce7a90ea",8067:"af36ecc3",8115:"2ebb714e",8138:"408bfd7d",8139:"3f5fcf2e",8178:"62f5ed0b",8191:"c60044c4",8215:"775d309b",8236:"63fecdb9",8270:"37d9cdce",8355:"c718131d",8361:"7e27723e",8444:"d1bb4e6e",8609:"e1aa35a1",8648:"fd581bf9",8702:"bd9f5fa0",8757:"4f1ee155",8791:"9640365f",8831:"ec7cac70",8855:"9d00af7a",8860:"48171767",8866:"4bdda915",8876:"a30609d2",8894:"ba661129",8901:"cc3ae736",9062:"b5c6d62c",9071:"c0edb4c9",9112:"38b794db",9126:"f0242db8",9217:"697f935c",9226:"368b5916",9247:"3b67c817",9276:"5fcd6da7",9315:"d5006aa3",9323:"1d8405cd",9447:"7fe27ee6",9478:"44736e74",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),a={},r.l=(e,d,f,b)=>{if(a[e])a[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 b=a[e];if(delete a[e],c.parentNode&&c.parentNode.removeChild(c),b&&b.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","77c23c97":"150",f189ca9f:"192",c7a044bb:"217",f2717f8e:"250","9528ac88":"315","797239df":"356","2d429218":"502","3829cf1d":"537",f52abf29:"576","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",cb9afd28:"3643",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","84ede15a":"4338","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","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","98a431f4":"7584",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","8247eba8":"8115","694672cd":"8138","386099fc":"8139","9a679a70":"8178",f0ff685a:"8191","30d868e8":"8215",ffd76171:"8236","12331e8b":"8270",c91a9c06:"8355","824749c6":"8361","28b84bbb":"8444",ed3409b3:"8609","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",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 a=r.o(e,d)?e[d]:void 0;if(0!==a)if(a)f.push(a[2]);else if(/^(1303|532)$/.test(d))e[d]=0;else{var b=new Promise(((f,b)=>a=e[d]=[f,b]));f.push(a[2]=b);var c=r.p+r.u(d),t=new Error;r.l(c,(f=>{if(r.o(e,d)&&(0!==(a=e[d])&&(e[d]=void 0),a)){var b=f&&("load"===f.type?"missing":f.type),c=f&&f.target&&f.target.src;t.message="Loading chunk "+d+" failed.\n("+b+": "+c+")",t.name="ChunkLoadError",t.type=b,t.request=c,a[1](t)}}),"chunk-"+d,d)}},r.O.j=d=>0===e[d];var d=(d,f)=>{var a,b,[c,t,o]=f,n=0;if(c.some((d=>0!==e[d]))){for(a in t)r.o(t,a)&&(r.m[a]=t[a]);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 971f54d15f9d..1b8e715d4077 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 f4048844a6b7..3dc3a006b10a 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 069634ee9b03..6271e9b4ce42 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 7e5a5ee7e139..f7fbe1226ce2 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 2dcda79a1308..9f111d6160fd 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.

Block 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 1f5340a7c822..a2603927d242 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 7bd3190b9aac..1e9363786862 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 60806b4fb8dd..6a4586e8927b 100644 --- a/docs/build-hrmp-channels.html +++ b/docs/build-hrmp-channels.html @@ -19,7 +19,7 @@ - + @@ -50,7 +50,7 @@ forceOpenHrmpChannel calls.

Opening HRMP Channels Between Two System Parachains

As of Polkadot and Kusama runtimes 1,001,000, anyone can call an establishSystemChannel extrinsic with two system parachains as arguments in order to establish a channel from the given sender to receiver.

- + \ No newline at end of file diff --git a/docs/build-index.html b/docs/build-index.html index 1754abca361b..0cd35ebca190 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 d7bbf0002786..0808674f299d 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 99da6559aa42..1d36c087f876 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 66a60b42a63e..e6666079d852 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 8766cf23e5eb..be0e442c4f35 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 aa5e55dd86d2..154839ddb748 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 8502fd87b3d6..ccf5118a1cf6 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 42fb6bb4cd0b..a698fe602f42 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 99f9c0ab4e0d..546808b501bb 100644 --- a/docs/build-open-source.html +++ b/docs/build-open-source.html @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ 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.

- + \ No newline at end of file diff --git a/docs/build-oracle.html b/docs/build-oracle.html index 67f6475d6ecb..8ab557267ca4 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 c39dcdb15363..5d2b4f04c07b 100644 --- a/docs/build-pdk.html +++ b/docs/build-pdk.html @@ -19,7 +19,7 @@ - + @@ -191,7 +191,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 dd51cb0cdd4b..23c005801e9a 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 dcc428c8d0dc..23e47bc06e41 100644 --- a/docs/build-protocol-info.html +++ b/docs/build-protocol-info.html @@ -19,7 +19,7 @@ - + @@ -160,7 +160,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 4a37fe044a9a..88dc89a73411 100644 --- a/docs/build-smart-contracts.html +++ b/docs/build-smart-contracts.html @@ -19,7 +19,7 @@ - + @@ -146,7 +146,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 752bf7ad4f62..9963901d426c 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 fca951597270..affce8950683 100644 --- a/docs/build-tools-index.html +++ b/docs/build-tools-index.html @@ -19,7 +19,7 @@ - + @@ -111,7 +111,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 ac8e9dd8d0b9..d3e19eef89d0 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 6dc42296ce4a..92528c03e45b 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 904fb277701f..d2851d366332 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 17bf6c994978..ddf21f5200fc 100644 --- a/docs/community.html +++ b/docs/community.html @@ -19,7 +19,7 @@ - + @@ -62,7 +62,7 @@ unofficial).
  • Jobs in Polkadot Ecosystem - Join the Polkadot Talent Network.
  • Polkadot Blockchain Academy - a classroom-based educational program covering the conceptual underpinnings and the hands-on application of blockchain technology, using Polkadot and Substrate as its foundations..
  • - + \ No newline at end of file diff --git a/docs/contributing.html b/docs/contributing.html index a7f3897ac928..edac006e1110 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 47a504f08734..20fc45d25efd 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 f7edb307dd50..711eb2a53064 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/decentralized-futures.html b/docs/decentralized-futures.html index d945630f3d97..b1adb10ece9a 100644 --- a/docs/decentralized-futures.html +++ b/docs/decentralized-futures.html @@ -19,7 +19,7 @@ - + @@ -49,7 +49,7 @@ utilized, with granularity increasing proportionally with the amount sought. This meticulous approach ensures transparency and accountability in the allocation of resources.
  • A demonstrated willingness to receive a more significant portion of the value in long-term DOT rather than immediate FIAT, aligning with the broader ecosystem's goals.
  • - + \ No newline at end of file diff --git a/docs/dev-heroes.html b/docs/dev-heroes.html index e206da23080b..1f278b994805 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 1c13c6594f94..91930504fbfb 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 95fcf8ec3eb5..29417c3ec14e 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 b0ce270bbd40..6e2b1b0f94f8 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 efb5d3d73d2d..a0fe008abf52 100644 --- a/docs/getting-started.html +++ b/docs/getting-started.html @@ -19,7 +19,7 @@ - + @@ -27,7 +27,7 @@

    Getting Started

    Welcome to the Polkadot Wiki

    The Polkadot Wiki serves as the central source of truth for Polkadot. It is a community-focused initiative led by Web3 Foundation to keep an up-to-date resource on the best information for learning, building, and maintaining on Polkadot.

    The Wiki has three main sections:

    • Learn (for people who want to learn about Polkadot)
    • Build (for people who want to build on Polkadot)
    • Maintain (for people who want to maintain the Polkadot -network).

    Interact with Polkadot

    Drawing
    Accounts
    Drawing
    Transactions
    Drawing
    Staking

    Drawing
    Polkadot OpenGov
    Drawing
    Proxy Accounts
    Drawing
    Account Identity

    Drawing
    Parachains
    Drawing
    Bridges
    Drawing
    Become an Ambassador

    What is Polkadot?

    Polkadot is the first layer-0 (L0) blockchain that provides shared security and secure +network).

    Interact with Polkadot

    What is Polkadot?

    Polkadot is the first layer-0 (L0) blockchain that provides shared security and secure interoperability to layer-1 (L1) blockchains. Those L1 blockchain attached to Polkadot are also called parachains as their transactions are processed in parallel by Polkadot. For more information about Polkadot see the dedicated page about the state of @@ -37,7 +37,7 @@ staking, and parachains' crowdloans.

    The level of abstraction and generalization of Polkadot allows to build applications that are specific to their use cases, and for those applications to communicate securely leveraging each other value proposition. The trustless cooperation between applications is what makes Polkadot an -ideal ecosystem to build a web3 future.

    See the videos below to know more about Polkadot.

    Polkadot

    Introduction to Polkadot

    What can I do with my DOT?

    DOT is the native token of the Polkadot Network. DOT can be used for +ideal ecosystem to build a web3 future.

    What can I do with my DOT?

    DOT is the native token of the Polkadot Network. DOT can be used for transaction fees, staking, governance, acquisition of a parachain slot and for enabling several key functionalities on Polkadot.

    info

    Explore Polkadot with a secure and user-friendly wallets listed on the Polkadot website.

    - +specific errors and problems. + \ No newline at end of file diff --git a/docs/glossary.html b/docs/glossary.html index 64f2171a28da..6626e371f568 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 a55aa0e73db3..4cb29a019bc9 100644 --- a/docs/governance-apps.html +++ b/docs/governance-apps.html @@ -19,7 +19,7 @@ - + @@ -31,7 +31,7 @@ Governance-UI repository.

    To make OpenGov multi-role delegation easy and intuitive, Delegation Dashboard provides an interactive interface that displays the list of delegates and their details. The video tutorial below walks through the -features of the Delegation Dashboard and shows how to perform multi-role delegation.

    Delegation Dashboard Tutorial

    For detailed instructions on how to delegate your voting power using dashboard, check +features of the Delegation Dashboard and shows how to perform multi-role delegation.

    For detailed instructions on how to delegate your voting power using dashboard, check this support guide..

    Polkassembly

    Polkassembly

    Polkassembly is a platform specifically designed to foster open, transparent discussions around Polkadot and Kusama governance proposals. By bridging on-chain decisions with off-chain discussions, Polkassembly ensures that the community remains at the heart of the decision-making process.

    1. Getting Started with Polkassembly (https://polkadot.polkassembly.io/)

    • Registration: Begin by registering on Polkassembly. Choose between email/password sign-up or use @@ -47,8 +47,8 @@ and more.
    • Setting Alerts: Customize alert preferences to receive notifications tailored to your interests.

    6. Frequently Asked Questions (FAQs)

    • Integration with Polkadot: Polkassembly fetches on-chain data directly from the Polkadot/Substrate 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.

    - +https://docs.polkassembly.io.

    + \ No newline at end of file diff --git a/docs/grants.html b/docs/grants.html index 943df0c56df5..5f17ee242bf8 100644 --- a/docs/grants.html +++ b/docs/grants.html @@ -19,7 +19,7 @@ - + @@ -42,7 +42,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 d234c933a361..0cae034240ca 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 ac77f8616d47..c5736ab616ba 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 123d134cd707..e14b3e76fed4 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 e9dce5aca106..59543e6dbe2d 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 a0c9604af23c..4fd26683578e 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 c71262088fe9..ffb6daaa2d01 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 2a8c3de418ed..40a0d897f3b9 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 4c4bc326dc31..c5ad5823b27d 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 f3ac0d7ade2f..9dccfd1b7269 100644 --- a/docs/kusama-parameters.html +++ b/docs/kusama-parameters.html @@ -19,7 +19,7 @@ - + @@ -38,7 +38,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 c8b9cf0d7fac..54dce199e28b 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 4a82cacf239d..78af0711aa03 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 db90b3ba6a06..dd63419997d1 100644 --- a/docs/learn-DOT.html +++ b/docs/learn-DOT.html @@ -19,7 +19,7 @@ - + @@ -68,7 +68,7 @@ account will be credited with 1 WND by default. You can also specify to get more tokens by !drip <WESTEND_ADDRESS> X, where X is the number of tokens.

    Another way is to use our web-based Westend faucet.

    You can also earn WNDs as rewards by becoming a validator on Westend network. -Watch the video below on how to get started on Westend.

    Testing Polkadot features on Westend

    UnitDecimal PlacesConversion to PlanckConversion to WND
    Planck01 Planck0.000000000001 WND
    Point3103 Planck0.000000001000 WND
    MicroWND (uWND)6106 Planck0.000001000000 WND
    MilliWND (mWND)9109 Planck0.001000000000 WND
    WND121012 Planck1.000000000000 WND

    Getting Tokens on the Rococo Testnet

    Rococo is a parachain testnet. Tokens are given directly to teams working on parachains or exploring +Watch the video below on how to get started on Westend.

    UnitDecimal PlacesConversion to PlanckConversion to WND
    Planck01 Planck0.000000000001 WND
    Point3103 Planck0.000000001000 WND
    MicroWND (uWND)6106 Planck0.000001000000 WND
    MilliWND (mWND)9109 Planck0.001000000000 WND
    WND121012 Planck1.000000000000 WND

    Getting Tokens on the Rococo Testnet

    Rococo is a parachain testnet. Tokens are given directly to teams working on parachains or exploring the cross consensus message-passing aspects of this testnet. General users can obtain ROC by posting !drip <ROCOCO_ADDRESS> in the Matrix chatroom #rococo-faucet:matrix.org or through the web-based @@ -80,8 +80,8 @@ claims process (if you had DOT at the time of Kusama genesis) or 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.

    - +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 b93145725c6f..ed4e6d8dd852 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 f5b9d190b415..02ba4ad18fd9 100644 --- a/docs/learn-account-advanced.html +++ b/docs/learn-account-advanced.html @@ -19,7 +19,7 @@ - + @@ -204,7 +204,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 1da3286a8ab5..fb3e88ad0945 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 50028dde346b..6dc79b2bada7 100644 --- a/docs/learn-accounts.html +++ b/docs/learn-accounts.html @@ -19,7 +19,7 @@ - + @@ -118,7 +118,7 @@ The same applies to proxies. The idea is that those actions require some network memory usage that 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 b9caf894b0bc..db648510d001 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 bc38aee8cfac..ae34a06e522e 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 78f0a93b8424..d8b66cbc62c5 100644 --- a/docs/learn-architecture.html +++ b/docs/learn-architecture.html @@ -19,7 +19,7 @@ - + @@ -85,8 +85,8 @@ Relay Chain. They can also send and receive messages from other parachains using XCMP.

    Parachain blocks themselves are produced by collators, whereas the relay chain validators only 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

    - +whiteboard interview with W3F researcher Alistair Stewart:

    + \ No newline at end of file diff --git a/docs/learn-archive-index.html b/docs/learn-archive-index.html index 67b4eba0149e..32325c4097fe 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 595ff7e9ba96..a04d63ded65c 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 6a927550d6c6..057b3ab31ca9 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 9203108bc633..681850b26c1b 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 6914a946fc9f..b42c4e13fcfd 100644 --- a/docs/learn-auction.html +++ b/docs/learn-auction.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ referred to as parathreads) is in progress.

    The parachain slots will be leased according to an unpermissioned candle auction, with several alterations related to improving security while operating on a blockchain. See Rationale for additional -details.

    A Beginner's guide to Parachain Slot Auctions

    Auction Schedule

    Loading Auctions... +details.

    Auction Schedule

    Loading Auctions...

    Mechanics of a Candle Auction

    Candle auctions are a variant of open auctions where bidders submit bids that are increasingly higher. The highest bidder at the conclusion of the auction is considered the winner.

    Candle auctions were originally employed in the 16th century for the sale of ships. The name is derived from the system by which the auction length was determined. The phrase "inch of a candle" @@ -141,8 +141,8 @@ until it wins a new slot.

    Resources

    - +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-basics-index.html b/docs/learn-basics-index.html index ec82948e76ea..491126d7bee8 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 5e669ee163e6..23929d237563 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 c7dcffbd939f..3eae29433fa7 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 482aac82569c..e2efe39a3be4 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 f30afe3e5d80..06ea579e4ca9 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 a811b9707c27..fc56f65f8620 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 2e602cb64ea4..5b008d6af981 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 e1d27ad6f9b6..8568dc44ac9f 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 82641bf999c3..7918034733b5 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 62b76cb7275c..f62f2e6fd9ea 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 e9354df70af9..93f9f5aec2c6 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 e3d34eefd07a..86d18378ad3a 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 16c3265c0624..ff8b510a4432 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 e716cd393440..692b58bb4321 100644 --- a/docs/learn-crowdloans.html +++ b/docs/learn-crowdloans.html @@ -19,14 +19,14 @@ - +

    Parachain Crowdloans

    Polkadot allows parachains to source tokens for their parachain bids in a decentralized crowdloan.

    Contributing to a crowdloan

    If you are here for guidance on how to contribute to a crowdloan, watch the video below or read this -support article on crowdloans.

    Crowdloans on Polkadot JS

    Testing on Rococo

    For information on how to participate in the crowdloan and parachain auction testing on Rococo, +support article on crowdloans.

    Testing on Rococo

    For information on how to participate in the crowdloan and parachain auction testing on Rococo, please see the Rococo content

    Crowdloan Campaigns vs Parachain Auctions

    It is important to recognize that starting a crowdloan campaign is optional for participating in a parachain slot auction. The parachain slot auction can also be won directly through self-funding without community involvement. To reiterate, crowdloan campaigns are just one of the means to win @@ -93,8 +93,8 @@ apps also offer a breakdown of ongoing crowdloans on the 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.

    - +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 c77c2ea9e304..f9093cc6587c 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-future-implementations-index.html b/docs/learn-future-implementations-index.html index 8eadd61b3718..7c209a0b21a9 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 96e8ae2aa80e..aff18dfba81c 100644 --- a/docs/learn-governance.html +++ b/docs/learn-governance.html @@ -19,7 +19,7 @@ - + @@ -234,7 +234,7 @@ case for why the change should be made.

    Resources

    - + \ No newline at end of file diff --git a/docs/learn-guides-accounts-multisig.html b/docs/learn-guides-accounts-multisig.html index 5c8cf4b7781f..7b300474a716 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 0ce7592775f4..40bc533ee097 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 0fc9f9db383d..42fab42f5ee6 100644 --- a/docs/learn-guides-accounts-proxy.html +++ b/docs/learn-guides-accounts-proxy.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ but actively participate in the network with the weight of the tokens in that account. Proxies are allowed to perform a limited amount of actions related to specific substrate pallets on behalf of another -account. The video below contains more information about using proxies.

    Proxy Accounts

    Know how to check the calls and pallets accessible by proxies

    For the latest information on the calls and pallets that can be fully accessed by proxies, check the +account. The video below contains more information about using proxies.

    Know how to check the calls and pallets accessible by proxies

    For the latest information on the calls and pallets that can be fully accessed by proxies, check the source code in the runtime folder on the Polkadot repository

    Creating Proxy with Polkadot-JS

    To create a proxy account with Polkadot-JS read this support article.

    Removing Proxy with Polkadot-JS

    Read the section "Removing Proxies" on @@ -75,8 +75,8 @@ proxy.proxy extrinsic. In the diagram above, submitting the proxy call from P-C to Alice will 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.

    - +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 a17bf744340a..797018f73709 100644 --- a/docs/learn-guides-accounts.html +++ b/docs/learn-guides-accounts.html @@ -19,7 +19,7 @@ - + @@ -45,7 +45,7 @@ chain format is active. E.g. selecting "Substrate" as the format will change your address, and clicking the colorful icon of your account will copy it in that format. While in Polkadot mode, that address format will be -copied, and so on.

    Polkadot-JS Browser Extension

    Polkadot-JS Browser Extension Tutorial

    info

    For guidelines about how to create an account using the Polkadot Extension, see +copied, and so on.

    Polkadot-JS Browser Extension

    info

    For guidelines about how to create an account using the Polkadot Extension, see this video tutorial and visit this support article.

    The Polkadot-JS Browser Extension (the Polkadot Extension) provides a reasonable balance of security and usability. It provides a separate local mechanism to generate your address and interact with @@ -120,8 +120,8 @@ This is due to an enhanced encryption method, noticeable in a slight delay when 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.

    - +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 e7efb430bf04..b6d33714934d 100644 --- a/docs/learn-guides-assets-create.html +++ b/docs/learn-guides-assets-create.html @@ -19,7 +19,7 @@ - + @@ -61,7 +61,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 ba2aff980cbb..ee4f0dc18dd5 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 ae4aa7438f7e..7da5431e7905 100644 --- a/docs/learn-guides-assets-ledger.html +++ b/docs/learn-guides-assets-ledger.html @@ -19,7 +19,7 @@ - + @@ -95,7 +95,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 3157aee68578..8bd98d005447 100644 --- a/docs/learn-guides-bounties.html +++ b/docs/learn-guides-bounties.html @@ -19,7 +19,7 @@ - + @@ -28,7 +28,7 @@ Polkadot Direction Element Channel about OpenGov referenda so that the community can start reviewing them and voting on them.

    Submit a Bounty Proposal

    See the video tutorial below to learn how you can create a bounty and submit it for approval through -an OpenGov referendum.

    Submit a Bounty

    When you add a bounty, this will show as "proposed" in the main +an OpenGov referendum.

    When you add a bounty, this will show as "proposed" in the main Bounties page. Once the community approves your bounty proposal as an OpenGov referendum, the bounty will show as "funded" at the end of the spending period on the main @@ -43,7 +43,7 @@ .

    Assign a Curator to a Bounty

    Once your bounty is shown as "funded" on the main Bounties page, you can propose a bounty curator. See the video tutorial below to learn how you can add a curator to a bounty and submit it for approval -through an OpenGov referendum.

    Assign Curator to a Bounty

    Once your OpenGov referendum has been approved by the community and served the required +through an OpenGov referendum.

    Once your OpenGov referendum has been approved by the community and served the required spending period, the bounty will still show as "funded" on the main Bounties page and await the curator's acceptance. The curator must formally accept the curator role by signing a bounties.acceptCurator @@ -53,7 +53,7 @@ Polkassembly or Subsquare.

    See the video tutorial below to learn how to create a child bounty, assign a curator, and award a child bounty.

    The video will show how to create and award a child bounty using a batch call. We will also include proposing and approving curator candidacy for the child bounty. The calls can be executed -separately, depending on the process curators consider appropriate for their bounty.

    Create and Award Child Bounties

    Note that once a child bounty is awarded, awardees need to wait for the +separately, depending on the process curators consider appropriate for their bounty.

    Note that once a child bounty is awarded, awardees need to wait for the 8-day delay to be complete before claiming the child bounty.

    Claim a Child Bounty Reward

    The status of child bounties can be viewed on the Polkassembly Bounty page under the specific parent @@ -62,8 +62,8 @@ -day 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

    - +anyone can initiate the claim on behalf of the beneficiary.

    + \ No newline at end of file diff --git a/docs/learn-guides-identity.html b/docs/learn-guides-identity.html index d0090d3ab630..4fd9cf0a8e8c 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-ledger.html b/docs/learn-guides-ledger.html index e702eb121ac8..5af788745795 100644 --- a/docs/learn-guides-ledger.html +++ b/docs/learn-guides-ledger.html @@ -19,7 +19,7 @@ - + @@ -80,7 +80,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 fbf3d2dd464f..89a42cafb40c 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 e4cba0ef7f58..60c391f9077b 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 4edc36165bc4..ded1065f2100 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 842c3a1c773f..358daf512825 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-transfers.html b/docs/learn-guides-transfers.html index 1f1f28996bd5..9df825378469 100644 --- a/docs/learn-guides-transfers.html +++ b/docs/learn-guides-transfers.html @@ -19,7 +19,7 @@ - + @@ -123,7 +123,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-guides-treasury.html b/docs/learn-guides-treasury.html index da954af0ed2b..736a96fff6bb 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 d1dcf57b9563..f853399cb8ed 100644 --- a/docs/learn-guides-vault.html +++ b/docs/learn-guides-vault.html @@ -19,7 +19,7 @@ - + @@ -83,7 +83,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 33422caee106..00d75acf7520 100644 --- a/docs/learn-identity.html +++ b/docs/learn-identity.html @@ -19,7 +19,7 @@ - + @@ -70,7 +70,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 572cf7520026..de1433665540 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 5525c23afc63..44608afb308d 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 147ff623ca9f..7cec544c7675 100644 --- a/docs/learn-inflation.html +++ b/docs/learn-inflation.html @@ -19,7 +19,7 @@ - + @@ -77,7 +77,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 549571fb9c9f..72a0485ce133 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 47553a2fcd4d..0b820a7072ee 100644 --- a/docs/learn-nft-pallets.html +++ b/docs/learn-nft-pallets.html @@ -19,7 +19,7 @@ - + @@ -112,7 +112,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 07a567570593..88a2b1f67a84 100644 --- a/docs/learn-nft-projects.html +++ b/docs/learn-nft-projects.html @@ -19,7 +19,7 @@ - + @@ -54,7 +54,7 @@ 90 open-source contributors. This robust collaboration has earned KodaDot the number one rank as a dapp in the Polkadot ecosystem on Github.

    See below a video tutorial about how to mint your NFT on the Polkadot Asset Hub using -KodaDot.

    KodaDot Tutorial on Minting NFTs

    For more information about minting using KodaDot see +KodaDot.

    For more information about minting using KodaDot see this step-by-step tutorial.

    The Team Behind KodaDot

    KodaDot began as the first unofficial explorer for RMRKv0.0.1 contributing to RMRK protocol. It later @@ -100,8 +100,8 @@ Polkadot Decoded.

    Unique Network focuses on B2B use cases, aiming to be an infrastructure provider for others to build 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.

    - +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 96690d29201e..4a2adb930e42 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 3300e52e5393..38c477da7da4 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).A pool member can self claim the rewards or can grant permission to any other account to claim and compound rewards on your behalf. See Claim Permissions.
    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 12afff69cf75..fb4672c0ee39 100644 --- a/docs/learn-nominator.html +++ b/docs/learn-nominator.html @@ -19,7 +19,7 @@ - + @@ -266,7 +266,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 48d95d8fbac6..8bb9eb5a4296 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 24dcddac9dfe..80b3e0b22329 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 6b931a303bfa..cbd5df86a5da 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 d6604346f64f..2cb80cdc93c8 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 5a86e1ecec99..6e692d425448 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 1a62d379f3fd..fd6a0c24f0c5 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 4a156de86172..07f01f25b2c0 100644 --- a/docs/learn-phragmen.html +++ b/docs/learn-phragmen.html @@ -19,7 +19,7 @@ - + @@ -270,7 +270,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 80643fbbd892..0fa9cf0d5667 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-js-guides.html b/docs/learn-polkadot-js-guides.html index 0e0fa4e69571..f7f2c7f1e0fe 100644 --- a/docs/learn-polkadot-js-guides.html +++ b/docs/learn-polkadot-js-guides.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ Ledger and Polkadot Vault for signing transactions. We do not provide support for third party applications.

    - + \ No newline at end of file diff --git a/docs/learn-polkadot-opengov-index.html b/docs/learn-polkadot-opengov-index.html index 160e8a3fd5c5..07ad9d20c33b 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 9308e9012741..925802819219 100644 --- a/docs/learn-polkadot-opengov-origins.html +++ b/docs/learn-polkadot-opengov-origins.html @@ -19,7 +19,7 @@ - + @@ -85,7 +85,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 77da240da1ed..3bed93e0b498 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 ffd16261c006..04481458a87b 100644 --- a/docs/learn-polkadot-opengov.html +++ b/docs/learn-polkadot-opengov.html @@ -19,7 +19,7 @@ - + @@ -29,7 +29,7 @@ in its lifecycle.

    For technical information about Polkadot OpenGov and how to interact with it, please refer to this dedicated Wiki page.

    For additional support about Polkadot OpenGov see the dedicated support pages.

    Polkadot Delegation Dashboard

    See the video tutorial below to easily delegate your votes to somebody else using the -Polkadot Delegation Dashboard.

    Delegation Dashboard Tutorial

    If you become a nomination pool member or a pool admin, you cannot participate in Governance with +Polkadot Delegation Dashboard.

    If you become a nomination pool member or a pool admin, you cannot participate in Governance with the bonded tokens in the pool, as they are held in a system account.

    Polkadot uses a sophisticated governance mechanism that allows it to evolve gracefully overtime at the ultimate behest of its assembled @@ -311,8 +311,8 @@ Collectives parachain.

    Future plans include that public members can apply to become a Fellowship candidate by placing a 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.

    - +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 e27fd6f91e24..09fd46447186 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 2ff3c66455cf..84ba042416a5 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 709c2b6ad017..b37cf2303afc 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 d2a01087983d..7152447252c2 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 591af11ea37d..d422e805a91b 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 d20d5c1bb1c0..975b9888e248 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 f09aae3afb91..3d32bf664c4f 100644 --- a/docs/learn-scams.html +++ b/docs/learn-scams.html @@ -19,7 +19,7 @@ - + @@ -30,7 +30,7 @@ combination with a password. Keep them offline in a secure and private location. If you share these with anyone, they can access your account, including your funds. This information is always a target for hackers and malicious actors. Check out the wiki doc on -how to recognize scams.

    Account Creation Tutorial

    info

    Visit +how to recognize scams.

    info

    Visit this support article for more information about key security.

    Essential Rules

    1. Never, ever, ever share your seed phrase or account password.

    2. Do not trust anyone online. It is trivial for them to lie and change their identities.

    3. If you are scammed, there is likely nothing that can be done to recover your funds. If a scammer gets a hold of your seed phrase, they can transfer all @@ -87,8 +87,8 @@ Support article 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.

    - +in the future.

    + \ No newline at end of file diff --git a/docs/learn-spree.html b/docs/learn-spree.html index 4256ed982b92..1c545f66a181 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 7c0bff712015..9308153aea6e 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 600a5e3b4c5a..554ed69fec56 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 8df7ebefddd6..79b34ba071f6 100644 --- a/docs/learn-staking.html +++ b/docs/learn-staking.html @@ -19,7 +19,7 @@ - + @@ -370,7 +370,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 68e9b42d1656..dfc91382a27f 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 2be434c32208..8e4d13bd0255 100644 --- a/docs/learn-teleport.html +++ b/docs/learn-teleport.html @@ -19,7 +19,7 @@ - + @@ -48,7 +48,7 @@ teleportation should result in the same circulating supply of the asset, and failing to uphold this 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.

    - + \ No newline at end of file diff --git a/docs/learn-transaction-fees.html b/docs/learn-transaction-fees.html index a9b9771baf1b..71c9623260fe 100644 --- a/docs/learn-transaction-fees.html +++ b/docs/learn-transaction-fees.html @@ -19,7 +19,7 @@ - + @@ -99,7 +99,7 @@ to free storage (e.g. clear their IDE).
  • Burns: A transaction may burn funds internally based on its logic. For example, a transaction may burn funds from the sender if it creates new storage entries, thus increasing the state size.
  • Limits: Some limits are part of the protocol. For example, nominators can only nominate 16 validators. This limits the complexity of Phragmén.
  • Learn More

    - + \ No newline at end of file diff --git a/docs/learn-transactions.html b/docs/learn-transactions.html index 7d7307c2798c..95dcbe053e4e 100644 --- a/docs/learn-transactions.html +++ b/docs/learn-transactions.html @@ -19,7 +19,7 @@ - + @@ -101,7 +101,7 @@ the fee will go to the block producer, producers will include the transactions with the highest fees to maximize their reward.

    Transaction Fees


    Polkadot-JS Guides

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

    - + \ No newline at end of file diff --git a/docs/learn-treasury.html b/docs/learn-treasury.html index 1b03f3bc9b2f..a0b7f569b887 100644 --- a/docs/learn-treasury.html +++ b/docs/learn-treasury.html @@ -19,7 +19,7 @@ - + @@ -164,7 +164,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 dc0de1f9564a..bb6995f2df11 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 f184a196ce11..8bc7ef074014 100644 --- a/docs/learn-video-tutorials.html +++ b/docs/learn-video-tutorials.html @@ -19,15 +19,15 @@ - + - +seminars, and initiatives within the ecosystem.

    Past Events

    + \ No newline at end of file diff --git a/docs/learn-wasm.html b/docs/learn-wasm.html index 1a191a439500..a5e85e410466 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 946c1437e09c..1224a9cfcd99 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 9a4a8a9d464e..2bab5144c195 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 2165914b67b8..5a380058d46a 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 b0dd133db4d2..c0a7dd2cc1fb 100644 --- a/docs/learn-xcm-transport.html +++ b/docs/learn-xcm-transport.html @@ -19,7 +19,7 @@ - + @@ -47,7 +47,7 @@ the Relay Chain storage. When XCMP has been implemented, HRMP is planned to be deprecated and phased out in favor of it.

    xcm

    note

    A stop-gap protocol is a temporary substitute for the functionality that is not fully complete. While XCMP proper is still in development, HRMP is a working replacement.

    A tutorial on how to open an HRMP channel on a parachain can be found -here.

    XCMP (Cross Consensus Message Passing) Design Summary

    XCMP explained

    note

    XCMP is not yet implemented. The following illustrates the overall design goals and expectations for +here.

    XCMP (Cross Consensus Message Passing) Design Summary

    note

    XCMP is not yet implemented. The following illustrates the overall design goals and expectations for XCMP.

    • Cross-chain messages will not be delivered to the Relay Chain.
    • Cross-chain messages will be constrained to a maximum size specified in bytes.
    • Parachains are allowed to block messages from other parachains, in which case the dispatching parachain would be aware of this block.
    • Collator nodes are responsible for routing messages between chains.
    • Collators produce a list of egress messages and will receive the ingress messages from other parachains.
    • On each block, parachains are expected to route messages from some subset of all other parachains.
    • When a collator produces a new block to hand off to a validator, it will collect the latest @@ -68,8 +68,8 @@ message in its inbound queue as well as any other messages it may have found/received.

      During processing, the message will execute the smart contract on parachain B and complete the 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.

    - +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 9cb0e4e4ec35..9b2622dd4254 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 01a322ee5704..4a667156e336 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 506c791d4f62..e8143f913e14 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 bc97da393ced..9c28d37765f2 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 6129f85ffac4..c80fb9714dbb 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 9dda44b1847a..bba3526f4ab9 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 9950a972c70e..6cc7c58b5c2d 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 1e5dcdc55d2b..e0b361c0308f 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 c8ee3ad9cbf4..4fcf03af0291 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 66c0cc7f83c5..97e5e6859ef3 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 782ae2e9cda3..88db8dcef5c4 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 189ef153171e..e99077369c37 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 83400edf0302..2d7d85185771 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 4d030c39ce1b..aacc4bb12775 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 8095f04497a8..5125401657b9 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 40c5eb5bbed0..ae064437d277 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 57a691018c16..a25398076239 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 1a906346935f..b46f1b8ec70b 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 878e2014e3d5..35dc34eb6e6e 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 277d6e6ea882..cf97598bd842 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 e230183cdf7c..6d153bb0a9e7 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 3821fc856863..010a4e4be3b0 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 db685a2a1910..393276515a72 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 49443b5ad69d..ac807f6759a4 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 e0926b85eb7c..9ec00fbb6f15 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 1d97ce67b301..d575e76ee8c9 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 85c3866bc5ed..f8ec36cca947 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 aa70a8be8032..2caab8c9b078 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 2b62a5623b09..8298b32fb736 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 191a484b2ca0..dd2a0c076945 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 bf20b5675522..4c70a3eb8cb9 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 fe6002b656f1..d60fa0312fcd 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 91252453bbd6..ecd850691af3 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 77fb6603860a..431d197f6f29 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 6f995dde05e4..cf7852ad4d51 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 35cd00735afa..45c07aa02a43 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 d731a1d648cd..c1c616aa9c84 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 254ecc7502b9..d42489a991cf 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 1f512a8fc030..101670f50c19 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 de3743339580..0f473ccaad27 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 b96a5b4538b4..bf22baa49d4e 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 70357a4f9e64..3f6d1dc0bb09 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 5405d0fe3603..5c797b22b907 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 7be68b9c103b..332216b12ee3 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 ef85cdd57208..5f0f2b300354 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 e7bcabd96afc..967abff8522a 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 97eb888d6e50..07622e214d8c 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 745f05aa9293..9c8cf8e007ef 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 56302c2873f6..ffe05e28a6db 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 554631f3c88b..57682882bb34 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 84620212c238..a3ce4ea2d905 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 3c09cdfb23c1..fb37f2a3b772 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 2b09cbfad21a..b9f2d07af902 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 e0a77d8c1ff1..620e274b6941 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 64e0c30fa0c4..82feb0b3f198 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 f903a4f44844..d3ca80e2e752 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 ebf1f76372bc..8976103788f1 100644 --- a/docs/maintain-guides-how-to-nominate-kusama.html +++ b/docs/maintain-guides-how-to-nominate-kusama.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,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 9ca4e4be2568..114105a3b4d2 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 80da18258376..b0e51d071b9c 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 f947f7cdacea..b91db2ee826d 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 6d2f324855b9..4608d259c943 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 03860571897f..8fe0cfbfdf5d 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 303c47556885..915bda775697 100644 --- a/docs/maintain-guides-how-to-validate-polkadot.html +++ b/docs/maintain-guides-how-to-validate-polkadot.html @@ -19,7 +19,7 @@ - + @@ -270,7 +270,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 73aa8628956e..77712e2f4d26 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 975dc84e2f66..49cee55dd44a 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 f7dba643c81a..661b127a7ca4 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 73ebe93d2edb..f8925b02b3a7 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 f4c66dbce227..56c61be2c0ca 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 43f9d6ce3a20..a434eefcb30b 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 adbcabd6fd78..a6b0b85162b7 100644 --- a/docs/maintain-networks.html +++ b/docs/maintain-networks.html @@ -19,7 +19,7 @@ - + @@ -54,7 +54,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 7bdb0fc5b4e4..307137c23548 100644 --- a/docs/maintain-polkadot-parameters.html +++ b/docs/maintain-polkadot-parameters.html @@ -19,7 +19,7 @@ - + @@ -38,7 +38,7 @@ 16.

    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 24abf5876120..a0c8a56b1e5d 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 6dd7eeb69873..013f6a5adcce 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 604070bbbe25..88bb2b701dbe 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 fc0557e4c463..5133d87f2201 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 f0e4dd7ca0d4..5157c3371434 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 5ba874f2005f..145cd88432b8 100644 --- a/docs/parachains-apps.html +++ b/docs/parachains-apps.html @@ -19,7 +19,7 @@ - + @@ -98,7 +98,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 279d8e2b07be..016391094be7 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 1e1f86830f5b..892c42cd9bfb 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 a347bb973171..e7d5f98ebba1 100644 --- a/docs/polkadot-vault.html +++ b/docs/polkadot-vault.html @@ -19,7 +19,7 @@ - + @@ -35,7 +35,7 @@ or warning if the phone was connected to the internet while not using the app. Also, no metadata updates are possible, and no option to add new networks. This would not be as secure as the latest version of the app. We would recommend that you use smartphones compatible with the latest Polkadot -Vault app.

    Polkadot Vault Tutorial

    Polkadot Vault (formerly Parity Signer) is a cold +Vault app.

    Polkadot Vault (formerly Parity Signer) is a cold storage solution that allows you to use a phone in airplane mode as an air-gapped wallet. The Vault app is not technically a wallet, as it does not allow to transfer funds. It is more of a key-chain tool that will enable you the create, manage, and restore accounts.

    By default, the Vault app contains chain specifications for Polkadot, Kusama, and Westend. Metadata @@ -84,8 +84,8 @@ Alternatively, you can use a third-party provider to add chains and their metadata. Check 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.

    - +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 0347d114b44d..b2a4a3ef4439 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 d4a7e0a96949..70a086343d0f 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 3cab147e70ad..7920d634f16e 100644 --- a/docs/polkadotjs.html +++ b/docs/polkadotjs.html @@ -19,7 +19,7 @@ - + @@ -94,7 +94,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 1bae70022f2d..7812054079ea 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 7336fdd114f6..c7cb6f6dd48b 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 17d564b88ba6..e25c8242d74a 100644 --- a/docs/staking-apps.html +++ b/docs/staking-apps.html @@ -19,7 +19,7 @@ - + @@ -37,7 +37,7 @@ PolkaGate, and Enkrypt. The dashboard also supports staking proxies.

    You can find more information about the Polkadot staking dashboard on the dedicated wiki page and -support articles.

    Below a list of video tutorial about the Polkadot Staking Dashboard.

    Drawing
    Nominate
    Drawing
    Join a Nomination Pool
    Drawing
    Staking Dashboard Walkthrough

    Drawing
    After Staking
    Drawing
    Create, Manage & Destroy Pools

    Sub.ID

    Sub.ID is a one-stop-shop for managing your Polkadot accounts, viewing your +support articles.

    Below a list of video tutorial about the Polkadot Staking Dashboard.

    Sub.ID

    Sub.ID is a one-stop-shop for managing your Polkadot accounts, viewing your addresses and balances, and looking at other accounts.

    It features a Polkadot staking page, where you can easily start staking DOT. Stakers can choose their preferred validators or stake with the recommended validator set.

    NOMI

    NOMI is designed to actively involve Nominators in Native @@ -49,8 +49,8 @@ data is collected at the last block of every session.

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

    SubWallet Earning

    SubWallet Web Dashboard is the all-in-one solution to manage assets and stake on multiple networks in the Polkadot, Kusama and Polkadot SDK (Substrate) ecosystems.

    The Web Dashboard features an Earning tab which allows users to stake DOT easily via native nomination pools, as well as in liquid staking and lending protocols, without having to manage -multiple applications with different interfaces and experiences.

    - +multiple applications with different interfaces and experiences.

    + \ No newline at end of file diff --git a/docs/staking-dashboard.html b/docs/staking-dashboard.html index 0a898096c95f..281513d7a79f 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 b99ff5f6716b..6d97fee04502 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 fa9c906a89f7..ca8979af50ad 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 d4d19da5172d..e7ffb62f8e89 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 7af4e09ab091..a17b8d4989a5 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/transaction-attacks.html b/docs/transaction-attacks.html index 6c06dcd6f175..63d010453583 100644 --- a/docs/transaction-attacks.html +++ b/docs/transaction-attacks.html @@ -19,7 +19,7 @@ - + @@ -52,7 +52,7 @@ transaction without the possibility of verifying it.

    Defense against Attacks

    danger

    If you can't verify the transaction 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/wallets-and-extensions.html b/docs/wallets-and-extensions.html index 0e95ab63f8e6..fca983c30130 100644 --- a/docs/wallets-and-extensions.html +++ b/docs/wallets-and-extensions.html @@ -19,7 +19,7 @@ - + @@ -93,7 +93,7 @@ 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].

    - + \ No newline at end of file diff --git a/docs/wallets-index.html b/docs/wallets-index.html index 46eb517694cd..2995936adde8 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 781cf5a9e8bd..e616b8fcc21c 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 b9f48cf2024e..2110fa15ccae 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 b702e018deb4..219f5da88045 100644 --- a/search.html +++ b/search.html @@ -19,13 +19,13 @@ - + - + \ No newline at end of file